using MES.Service.DB; using MES.Service.Dto.webApi.SRM; using MES.Service.Modes.SRM; using SqlSugar; public class MesDeliveryNoteManager : Repository{ 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) { 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 delivery) { var result = delivery.Select(DeleteDelivery).ToList(); return result.All(b => b); } // 删除数据的方法 private bool DeleteData(SqlSugarScope db, ErpDelivery delivery) { var update = db.Deleteable().Where(s => s.DeliveryNo == delivery.DeliveryNo).ExecuteCommand()>0; var insertOrUpdate = db.Deleteable().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) { if (mesDeliveryNote.Id != null) { base.DeleteById(mesDeliveryNote.Id); } if (mesDeliveryNoteDetails.Count > 0) { db.Deleteable().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 GetMesDeliveryNoteDetails(List 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(); } }