|
using MES.Service.DB;
|
using MES.Service.Dto.webApi.SRM;
|
using MES.Service.Modes.SRM;
|
using SqlSugar;
|
|
public class MesDeliveryNoteManager : Repository<MesDeliveryNote>{
|
private readonly MesDeliveryNoteDetailsManager mesDeliveryNoteManager = new();
|
public dynamic Save(Delivery delivery)
|
{
|
var DeliveryNote = delivery.DeliveryNote;
|
var mesDeliveryNote = GetMesDeliveryNote(DeliveryNote);
|
var mesDeliveryNoteDetails = GetMesDeliveryNoteDetails(delivery.DeliveryNoteDetail, DeliveryNote.DeliveryNo);
|
|
return UseTransaction(db =>
|
{
|
return SaveOrUpdateData(db, mesDeliveryNote, mesDeliveryNoteDetails) ? 1 : 0;
|
}) > 0;
|
}
|
|
public dynamic SaveList(List<Delivery> delivery)
|
{
|
var result = delivery.Select(Save).ToList();
|
return result.All(b => b);
|
}
|
|
public dynamic DeleteDelivery(ErpDelivery delivery)
|
{
|
return UseTransaction(db =>
|
{
|
return DeleteData(db, delivery) ? 1 : 0;
|
}) > 0;
|
}
|
public dynamic DeleteDeliveryList(List<ErpDelivery> delivery)
|
{
|
var result = delivery.Select(DeleteDelivery).ToList();
|
return result.All(b => b);
|
}
|
|
// 删除数据的方法
|
private bool DeleteData(SqlSugarScope db, ErpDelivery delivery)
|
{
|
var update = db.Deleteable<MesDeliveryNote>().Where(s => s.DeliveryNo == delivery.DeliveryNo).ExecuteCommand()>0;
|
var insertOrUpdate = db.Deleteable<MesDeliveryNoteDetails>().Where(s => s.DeliveryNo == delivery.DeliveryNo).ExecuteCommand() >= 0;
|
|
if (update && insertOrUpdate) return true;
|
throw new NotImplementedException("删除失败,MES中不存在此送货单");
|
}
|
|
// 插入或更新数据的方法
|
private bool SaveOrUpdateData(SqlSugarScope db, MesDeliveryNote mesDeliveryNote, List<MesDeliveryNoteDetails> mesDeliveryNoteDetails)
|
{
|
if (mesDeliveryNote.Id != null)
|
{
|
base.DeleteById(mesDeliveryNote.Id);
|
}
|
|
if (mesDeliveryNoteDetails.Count > 0)
|
{
|
db.Deleteable<MesDeliveryNoteDetails>().Where(s => s.DeliveryNo == mesDeliveryNote.DeliveryNo).ExecuteCommand();
|
}
|
|
var orUpdate = base.Insert(mesDeliveryNote);
|
var baOrUpdate = mesDeliveryNoteManager.InsertRange(mesDeliveryNoteDetails);
|
if (orUpdate && baOrUpdate) return true;
|
throw new NotImplementedException("插入或更新失败");
|
}
|
|
public MesDeliveryNote GetMesDeliveryNote(DeliveryNote delivery)
|
{
|
var mesDeliveryNote = new MesDeliveryNote();
|
var single = base.GetSingle(it => it.DeliveryNo == delivery.DeliveryNo);
|
if (single != null) mesDeliveryNote.Id = single.Id;
|
|
mesDeliveryNote.ErpId = delivery.Erpid;
|
mesDeliveryNote.DeliveryNo = delivery.DeliveryNo;
|
mesDeliveryNote.SuppNo = delivery.SupplierId;
|
mesDeliveryNote.DeliveryDate = delivery.FDate;
|
mesDeliveryNote.Remark = delivery.Remark;
|
mesDeliveryNote.Site = delivery.FReceiveOrgId;
|
mesDeliveryNote.Issrm=delivery.Is_SRM;
|
if (single != null)
|
{
|
mesDeliveryNote.Status = single.Status;
|
mesDeliveryNote.CheckUser = single.CheckUser;
|
mesDeliveryNote.CheckDate = single.CheckDate;
|
}
|
else
|
{
|
mesDeliveryNote.Status = 0;
|
}
|
mesDeliveryNote.CreateDate = DateTime.Now;
|
|
return mesDeliveryNote;
|
}
|
|
public List<MesDeliveryNoteDetails> GetMesDeliveryNoteDetails(List<DeliveryNoteDetail> erpDeliveryDatas, string? type)
|
{
|
return erpDeliveryDatas.Select(s =>
|
{
|
var entity = new MesDeliveryNoteDetails
|
{
|
DeliveryNo = type,
|
LineNo = Convert.ToDecimal(s.LineNo),
|
ErpNo = s.FBillNo,
|
PoLineNo = s.OrderlineId,
|
ProductCode = s.ProductCode,
|
SlUnit = s.PurchaseUnit,
|
KcUnit = s.InventoryUnit,
|
DeliveryQty = Convert.ToDecimal(s.DeliveryQty),
|
Remark = s.Remark,
|
CreateDate = DateTime.Now,
|
PurchaseQty = Convert.ToDecimal(s.PurchaseQty),
|
IncludeQty = Convert.ToDecimal(s.IncludeQty),
|
DepotCode = s.DepotNo,
|
IsGift = s.IsGift
|
};
|
return entity;
|
}).ToList();
|
}
|
}
|