| | |
| | | using MES.Service.Dto.webApi; |
| | | using MES.Service.Modes; |
| | | using SqlSugar; |
| | | using System.Security.Cryptography; |
| | | |
| | | namespace MES.Service.service.BasicData; |
| | | |
| | | public class MesDeliveryNoteManager : Repository<MesDeliveryNote> |
| | | { |
| | | private readonly MesDeliveryDetailsManager mesDeliveryNoteManager= new (); |
| | | private readonly MesDeliveryDetailsManager mesDeliveryNoteManager = new(); |
| | | |
| | | // Save 方法用于保存单个 RohIn 记录,根据类型执行不同的操作 |
| | | public bool Save(Delivery delivery) |
| | | { |
| | | var erpDelivery = delivery.ErpDelivery; |
| | | var mesDeliveryNote = GetMesDeliveryNote(erpDelivery); |
| | | var mesDeliveryNoteDetails = GetMesDeliveryNoteDetails(delivery.ErpDeliveryData, erpDelivery.DeliveryNo, mesDeliveryNote.Status); |
| | | var mesDeliveryNoteDetails = GetMesDeliveryNoteDetails( |
| | | delivery.ErpDeliveryData, erpDelivery.DeliveryNo, |
| | | mesDeliveryNote.Status); |
| | | |
| | | return UseTransaction(db => |
| | | { |
| | |
| | | case "2": |
| | | case "4": |
| | | case "5": |
| | | return SaveOrUpdateData(db, mesDeliveryNote, mesDeliveryNoteDetails) ? 1 : 0; |
| | | return SaveOrUpdateData(db, mesDeliveryNote, |
| | | mesDeliveryNoteDetails) |
| | | ? 1 |
| | | : 0; |
| | | case "3": |
| | | case "6": |
| | | return DeleteData(db, mesDeliveryNote, mesDeliveryNoteDetails) ? 1: 0; |
| | | return DeleteData(db, mesDeliveryNote, |
| | | mesDeliveryNoteDetails) |
| | | ? 1 |
| | | : 0; |
| | | default: |
| | | throw new NotImplementedException( |
| | | $"type没有{erpDelivery.Type}这个类型"); |
| | |
| | | } |
| | | |
| | | // 插入数据的方法 |
| | | private bool InsertData(SqlSugarScope db, MesDeliveryNote mesDeliveryNote,List<MesDeliveryNoteDetails> mesDeliveryNoteDetails) |
| | | private bool InsertData(SqlSugarScope db, MesDeliveryNote mesDeliveryNote, |
| | | List<MesDeliveryNoteDetails> mesDeliveryNoteDetails) |
| | | { |
| | | var decimals = mesDeliveryNoteDetails.Select(s => s.Id).ToArray(); |
| | | |
| | |
| | | db.Deleteable<MesRohInData>().In(decimals).ExecuteCommand(); |
| | | |
| | | var insert = base.Insert(mesDeliveryNote); |
| | | var insertRange = mesDeliveryNoteManager.InsertRange(mesDeliveryNoteDetails); |
| | | var insertRange = |
| | | mesDeliveryNoteManager.InsertRange(mesDeliveryNoteDetails); |
| | | |
| | | if (insert && insertRange) return true; |
| | | throw new NotImplementedException("插入失败"); |
| | | } |
| | | |
| | | // 更新数据的方法 |
| | | private bool DeleteData(SqlSugarScope db, MesDeliveryNote mesDeliveryNote,List<MesDeliveryNoteDetails> mesDeliveryNoteDetails) |
| | | private bool DeleteData(SqlSugarScope db, MesDeliveryNote mesDeliveryNote, |
| | | List<MesDeliveryNoteDetails> mesDeliveryNoteDetails) |
| | | { |
| | | var decimals = mesDeliveryNoteDetails.Select(s => s.Id).ToArray(); |
| | | var update = base.DeleteById(mesDeliveryNote.Id); |
| | | var insertOrUpdate = db.Deleteable<MesDeliveryNoteDetails>().Where(s => s.DeliveryNo == mesDeliveryNote.DeliveryNo).ExecuteCommand() > 0; |
| | | var insertOrUpdate = db.Deleteable<MesDeliveryNoteDetails>() |
| | | .Where(s => s.DeliveryNo == mesDeliveryNote.DeliveryNo) |
| | | .ExecuteCommand() > 0; |
| | | |
| | | if (update && insertOrUpdate) return true; |
| | | throw new NotImplementedException("删除失败"); |
| | | } |
| | | |
| | | // 插入或更新数据的方法 |
| | | private bool SaveOrUpdateData(SqlSugarScope db, MesDeliveryNote mesDeliveryNote,List<MesDeliveryNoteDetails> mesDeliveryNoteDetails) |
| | | 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(); |
| | | db.Deleteable<MesDeliveryNoteDetails>() |
| | | .Where(s => s.DeliveryNo == mesDeliveryNote.DeliveryNo) |
| | | .ExecuteCommand(); |
| | | |
| | | var orUpdate = base.Insert(mesDeliveryNote); |
| | | var baOrUpdate = mesDeliveryNoteManager.InsertRange(mesDeliveryNoteDetails); |
| | | var baOrUpdate = |
| | | mesDeliveryNoteManager.InsertRange(mesDeliveryNoteDetails); |
| | | if (orUpdate && baOrUpdate) return true; |
| | | throw new NotImplementedException("插入或更新失败"); |
| | | } |
| | |
| | | } |
| | | else |
| | | { |
| | | mesDeliveryNote.Status =0; |
| | | mesDeliveryNote.Status = 0; |
| | | } |
| | | |
| | | mesDeliveryNote.CreateDate = DateTime.Now; |
| | | mesDeliveryNote.DepotNo = delivery.DepotNo; |
| | | mesDeliveryNote.ErpId = delivery.ErpId; |
| | | |
| | | return mesDeliveryNote; |
| | | } |
| | | public List<MesDeliveryNoteDetails> GetMesDeliveryNoteDetails(List<ErpDeliveryData> erpDeliveryDatas, string? type,decimal? status) |
| | | |
| | | public List<MesDeliveryNoteDetails> GetMesDeliveryNoteDetails( |
| | | List<ErpDeliveryData> erpDeliveryDatas, string? type, decimal? status) |
| | | { |
| | | return erpDeliveryDatas.Select(s => |
| | | { |
| | |
| | | Fsrcbill_no = s.SalesOrderId, |
| | | RealQty = Convert.ToDecimal(s.IncludeQty) |
| | | }; |
| | | var single = mesDeliveryNoteManager.GetSingle(it =>it.LineNo == entity.LineNo); |
| | | if (single !=null && status==1) entity.RealQty = single.RealQty; |
| | | var single = |
| | | mesDeliveryNoteManager.GetSingle(it => |
| | | it.LineNo == entity.LineNo); |
| | | if (single != null && status == 1) entity.RealQty = single.RealQty; |
| | | |
| | | return entity; |
| | | }).ToList(); |