using SqlSugar; using System; using System.Collections.Generic; using MES.Service.DB; using MES.Service.Modes; using MES.Service.Dto.webApi; namespace MES.Service.service { public class MesReturnwareManager : Repository { private readonly MesReturnwareDetailsManager ReturnwareDetailsManager = new(); //当前类已经继承了 Repository 增、删、查、改的方法 //这里面写的代码不会给覆盖,如果要重新生成请删除 MesReturnwareManager.cs public bool SaveList(List ReturnWare) { var result = ReturnWare.Select(Save).ToList(); return result.All(b => b); } public bool Save(ErpReturn ReturnWare) { var ReturnWares = ReturnWare.ErpReturnWares; var mesReturnWares = MapErptoMesReturnware(ReturnWares); var ErpReturnWareDetails = MapErptoMesReturnwareDetails(ReturnWare.ErpReturnWareDetailss); return UseTransaction(db => { switch (ReturnWares.Type) { case "3": return UpdateData(db, mesReturnWares, ErpReturnWareDetails) ? 1 : 0; case "2": case "4": return SaveOrUpdateData(db, mesReturnWares, ErpReturnWareDetails) ? 1 : 0; default: throw new NotImplementedException( $"type没有{ReturnWares.Type}这个类型"); } }) > 0; } private bool SaveOrUpdateData(SqlSugarScope db, MesReturnware mesReturnware, List mesReturnwareDetails) { if (mesReturnware.ReturnNo != null && mesReturnware.ReturnType != null) { db.Deleteable() .Where(it => it.ReturnNo == mesReturnware.ReturnNo && it.ReturnType == mesReturnware.ReturnType) .ExecuteCommand(); }; if (mesReturnwareDetails.Count > 0) { // var mesWomcab = mesWomcabs.Select(s => new { CAB001 = s.Cab001, CAB002 = s.Cab002, CAB003 = s.Cab003 }).ToList(); var mesReturnwareDetail = mesReturnwareDetails.Select(s => new { ReturnwareNo = s.ReturnNo, ReturnwareType = s.ReturnType }).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 => mesReturnwareDetail .Any(p => p.ReturnwareNo == it.ReturnNo && p.ReturnwareType == it.ReturnType)) .ExecuteCommand(); }; // var orUpdate = db.Insertable(mesOutware).ExecuteCommand(); //var baOrUpdate = db.Insertable(mesOutwareDetails).ExecuteCommand(); var orUpdate = base.Insert(mesReturnware); var baOrUpdate = ReturnwareDetailsManager.InsertRange(mesReturnwareDetails); if (orUpdate && baOrUpdate) return true; throw new NotImplementedException("插入或更新失败"); } private bool UpdateData(SqlSugarScope db, MesReturnware mesReturnware, List mesReturnwareDetails) { //根据单别和单号进行删除 var update = db.Deleteable() .Where(it => it.ReturnNo == mesReturnware.ReturnNo && it.ReturnType == mesReturnware.ReturnType) .ExecuteCommand() > 0; //var mesWomcab = mesWomcabs.Select(s => new { CAB001 = s.Cab001, CAB002 = s.Cab002, CAB003 = s.Cab003 }).ToList(); var mesReturnwareDetail = mesReturnwareDetails.Select(s => new { ReturnwareNo = s.ReturnNo, ReturnwareType = s.ReturnType }).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 => mesReturnwareDetail.Any(p => p.ReturnwareNo == it.ReturnNo && p.ReturnwareType == it.ReturnType)).ExecuteCommand() > 0; if (update && insertOrUpdate) return true; throw new NotImplementedException("更新失败"); } private MesReturnware MapErptoMesReturnware(ErpReturnWare dto) { var entity = new MesReturnware { ReturnType = dto.ReturnType, ReturnNo = dto.ReturnNo, CustNo = dto.CustNo, BillDate = dto.BillDate, BusinessBy = dto.BusinessBy, WorkshopCenterCode = dto.WorkCode, Remarks = dto.Remarks, CreateBy = dto.CreateBy, CreateDate = dto.CreateDate, Type = dto.Type, Over=dto.Over ?? 0 }; return entity; } private List MapErptoMesReturnwareDetails(List dtoList) { var returnwareList = new List(); foreach (var dto in dtoList) { var ReturnwareDetails = new MesReturnwareDetails { ItemNo = dto.ItemNo, ItemName = dto.ItemName, ItemModel = dto.ItemModel, Quantity = dto.Quantity, Type = dto.Type, DepotCode = dto.DepotCode, ReturnType = dto.ReturnType, ReturnNo = dto.ReturnNo, ReturnOrder = dto.ReturnOrder, OrderType = dto.OrderType, OrderNumber = dto.OrderNumber, OrderNo = dto.OrderNo, ActualQuantity = dto.ActQuantity, CustItemNo = dto.CustItemNo, CustItemName = dto.CustItemName, CustItemModel = dto.CustItemModel, Remarks=dto.Remarks }; returnwareList.Add(ReturnwareDetails); } return returnwareList; } public bool Delete(YFDelete data) { return UseTransaction(db => { var update = db.Deleteable() .Where(it => it.ReturnNo == data.FBillNo && it.ReturnType == data.FBillTypeID) .ExecuteCommand() > 0; var insertOrUpdate = db.Deleteable() .Where(it => it.ReturnNo == data.FBillNo && it.ReturnType == data.FBillTypeID) .ExecuteCommand() > 0; if (update && insertOrUpdate) return 1; throw new NotImplementedException("删除失败"); }) > 0; } } }