using SqlSugar; using System; using System.Collections.Generic; using MES.Service.DB; using MES.Service.Modes; using MES.Service.Dto.webApi; using System.Globalization; using MES.Service.service.BasicData; namespace MES.Service.service { public class MesOutwareManager : Repository { private readonly MesOutwareDetailsManager outwareDetailsManager = new(); //当前类已经继承了 Repository 增、删、查、改的方法 //这里面写的代码不会给覆盖,如果要重新生成请删除 MesOutwareManager.cs public bool SaveList(List OutWare) { var result = OutWare.Select(Save).ToList(); return result.All(b => b); } public bool Save(ErpOut OutWare) { var OutWares = OutWare.ErpOutWares; var mesOutWares = MapErptoMesOutware(OutWares); var ErpOutWareDetails = MapErptoMesOutwareDetails(OutWare.ErpOutWareDetailss); return UseTransaction(db => { switch (OutWares.Type) { case "3": return UpdateData(db, mesOutWares, ErpOutWareDetails) ? 1 : 0; case "2": case "4": return SaveOrUpdateData(db, mesOutWares, ErpOutWareDetails) ? 1 : 0; default: throw new NotImplementedException( $"type没有{OutWares.Type}这个类型"); } }) > 0; } private bool SaveOrUpdateData(SqlSugarScope db, MesOutware mesOutware, List mesOutwareDetails) { if (mesOutware.OutwareNo != null && mesOutware.OutwareType != null) { db.Deleteable() .Where(it => it.OutwareNo == mesOutware.OutwareNo && it.OutwareType == mesOutware.OutwareType) .ExecuteCommand(); }; if (mesOutwareDetails.Count > 0) { // var mesWomcab = mesWomcabs.Select(s => new { CAB001 = s.Cab001, CAB002 = s.Cab002, CAB003 = s.Cab003 }).ToList(); var mesOutwareDetail = mesOutwareDetails.Select(s => new { OutwareNo = s.OutwareNo, OutwareType = s.OutwareType }).ToList(); /*db.Deleteable() .Where(it => mesWomcab .Any(p => p.CAB001 == it.Cab001 && p.CAB002 == it.Cab002 && p.CAB003 == it.Cab003)) .ExecuteCommand();*/ db.Deleteable() .Where(it => mesOutwareDetail .Any(p => p.OutwareNo == it.OutwareNo && p.OutwareType == it.OutwareType)) .ExecuteCommand(); }; // var orUpdate = db.Insertable(mesOutware).ExecuteCommand(); //var baOrUpdate = db.Insertable(mesOutwareDetails).ExecuteCommand(); var orUpdate = base.Insert(mesOutware); var baOrUpdate = outwareDetailsManager.InsertRange(mesOutwareDetails); if (orUpdate && baOrUpdate) return true; throw new NotImplementedException("插入或更新失败"); } private bool UpdateData(SqlSugarScope db, MesOutware mesOutware, List mesOutwareDetails) { //根据单别和单号进行删除 var update = db.Deleteable() .Where(it => it.OutwareNo == mesOutware.OutwareNo && it.OutwareType == mesOutware.OutwareType) .ExecuteCommand() > 0; //var mesWomcab = mesWomcabs.Select(s => new { CAB001 = s.Cab001, CAB002 = s.Cab002, CAB003 = s.Cab003 }).ToList(); var mesOutwareDetail = mesOutwareDetails.Select(s => new { OutwareNo = s.OutwareNo, OutwareType = s.OutwareType }).ToList(); //var insertOrUpdate = db.Deleteable().Where(it => mesWomcab.Any(p => p.CAB001 == it.Cab001 && p.CAB002 == it.Cab002 && p.CAB003 == it.Cab003)).ExecuteCommand() > 0; var insertOrUpdate = db.Deleteable().Where(it => mesOutwareDetail.Any(p => p.OutwareNo == it.OutwareNo && p.OutwareType == it.OutwareType)).ExecuteCommand() > 0; if (update && insertOrUpdate) return true; throw new NotImplementedException("更新失败"); } private MesOutware MapErptoMesOutware(ErpOutWare dto) { var entity = new MesOutware { OutwareType = dto.OutType, OutwareNo = dto.OutNo, CustNo = dto.CustNo, BillDate = dto.BillDate, BusinessBy = dto.BusinessBy, WorkshopCenterCode = dto.WorkCode, DeliveryCust = dto.DeliveryCust, QuickNo = dto.QuickNo, CheckBy = dto.CheckBy, CheckDate = dto.CheckDate, CreateBy = dto.CreateBy, CreateDate = dto.CreateDate, Remarks = dto.Remarks, DeliveryAddress = dto.DeliveryAddress, Type = dto.Type }; return entity; } private List MapErptoMesOutwareDetails(List dtoList) { var outwareList = new List(); foreach (var dto in dtoList) { var OutwareDetails = new MesOutwareDetails { OrderType = dto.OrderType, OrderNumber = dto.OrderNumber, OrderNo = dto.OrderNo, ItemNo = dto.ItemNo, ItemName = dto.ItemName, ItemModel = dto.ItemModel, DepotCode = dto.DepotCode, Quantity = dto.Quantity, OutQuantity = dto.OutQuantity, OutwareType = dto.OutType, OutwareNo = dto.OutNo, OutwareOrder = dto.OutOrder, Type = dto.Type, Remarks = dto.Remarks, ExpectedQuantity = dto.ExpQuantity, ActualQuantity = dto.ActQuantity, CustItemNo = dto.CustItemNo, CustItemName = dto.CustItemName, CustItemModel = dto.CustItemModel, CustBillNo = dto.CustBillNo, MachineType = dto.MachineType }; outwareList.Add(OutwareDetails); } return outwareList; } public bool Delete(YFDelete data) { return UseTransaction(db => { var update = db.Deleteable() .Where(it => it.OutwareNo == data.FBillNo && it.OutwareType == data.FBillTypeID) .ExecuteCommand() > 0; var insertOrUpdate = db.Deleteable() .Where(it => it.OutwareNo == data.FBillNo && it.OutwareType == data.FBillTypeID) .ExecuteCommand() > 0; if (update && insertOrUpdate) return 1; throw new NotImplementedException("删除失败"); }) > 0; } } }