using MES.Service.DB; using MES.Service.Dto.webApi; using MES.Service.Modes; using MES.Service.util; using SqlSugar; namespace MES.Service.service.BasicData; public class MesRohInManager : Repository { //当前类已经继承了 Repository 增、删、查、改的方法 private readonly MesRohInDataManager rohInDataManager = new(); //这里面写的代码不会给覆盖,如果要重新生成请删除 MesRohInManager.cs public bool Save(RohIn rohIn) { var rohInErpRohIn = rohIn.ErpRohIn; var mesRohIn = GetMesRohIn(rohInErpRohIn); var mesRohInDatas = GetMesRohInDatas(rohIn.ErpRohinDatas, rohInErpRohIn.Type); switch (rohInErpRohIn.Type) { case "1": var insert = base.Insert(mesRohIn); var insertRange = rohInDataManager.InsertRange(mesRohInDatas); if (insert && insertRange) return true; throw new NotImplementedException("插入失败"); case "2": var update = base.Update(mesRohIn); var insertOrUpdate = rohInDataManager.InsertOrUpdate(mesRohInDatas); if (update && insertOrUpdate) return true; throw new NotImplementedException("更新失败"); case "4": var orUpdate = SaveOrUpdate(mesRohIn); var baOrUpdate = rohInDataManager.InsertOrUpdate(mesRohInDatas); if (orUpdate && baOrUpdate) return true; throw new NotImplementedException("插入失败"); default: throw new NotImplementedException("type没有" + rohInErpRohIn.Type + "这个类型"); } } private bool SaveOrUpdate(MesRohIn mesRohIn) { var mesRohIns = base.GetList(it => it.EbelnK3id == mesRohIn.EbelnK3id); if (CollectionUtil.IsNullOrEmpty(mesRohIns)) { return base.Insert(mesRohIn); } return base.Update(mesRohIn); } public bool SaveList(List rohIns) { var result = new List(); rohIns.ForEach(s => { var save = Save(s); result.Add(save); }); return result.All(b => b); } public MesRohIn GetMesRohIn(ErpRohIn rohIn) { var eid = Convert.ToDecimal(rohIn.id); var mesRohIn = new MesRohIn(); if (!"1".Equals(rohIn.Type)) { var single = base.GetSingle(it => it.EbelnK3id == eid); if (single != null) mesRohIn.Id = single.Id; } mesRohIn.EbelnK3id = eid; mesRohIn.BillNo = rohIn.FBillNo; mesRohIn.DocumentStatus = rohIn.FDocumentStatus; mesRohIn.DocumentType = rohIn.FBillTypeID; mesRohIn.BusinessType = rohIn.FBusinessType; if (rohIn.FDate != null) mesRohIn.PurchaseDate = DateTime.ParseExact( rohIn.FDate, "yyyy-MM-dd HH:mm:ss", null); mesRohIn.Supplier = rohIn.FSupplierId; mesRohIn.CloseStatus = rohIn.FCloseStatus; mesRohIn.PurchaseOrg = rohIn.FPurchaseOrgId; mesRohIn.PurchaseDept = rohIn.FPurchaseDeptId; mesRohIn.PurchaseGroup = rohIn.FPurchaserGroupId; mesRohIn.QtyAcceptance = rohIn.Facctype; mesRohIn.Purchaser = rohIn.FPurchaserId; mesRohIn.QualityReq = rohIn.F_UNW_Remarks_zlyq; // mesRohIn.SupplierContact = rohIn.F_UNW_GYSLXR; // mesRohIn.ContactPhone = rohIn.F_UNW_LXRDH; // mesRohIn.Position = rohIn.FProviderJob; // mesRohIn.OfficePhone = rohIn.FProviderPhone; // mesRohIn.SupplierAddress = rohIn.FProviderAddress; mesRohIn.SettlementParty = rohIn.FSettleId; mesRohIn.PaymentParty = rohIn.FChargeId; mesRohIn.Email = rohIn.FProviderEMail; mesRohIn.TransportMethod = rohIn.F_UNW_Text_ysfs; mesRohIn.Remarks = rohIn.F_UNW_BZ; mesRohIn.FixtureMoldProcurement = rohIn.F_UNW_Combo_zjmj; mesRohIn.CancellationStatus = rohIn.FCancelStatus; mesRohIn.CancellationPerson = rohIn.FCancellerId; if (rohIn.FCancelDate != null) mesRohIn.CancellationDate = DateTime.ParseExact( rohIn.FCancelDate, "yyyy-MM-dd HH:mm:ss", null); mesRohIn.CreateBy = rohIn.FCreatorId; if (rohIn.FCreateDate != null) mesRohIn.CreateDate = DateTime.ParseExact( rohIn.FCreateDate, "yyyy-MM-dd HH:mm:ss", null); mesRohIn.LastupdateBy = rohIn.FModifierId; if (rohIn.FModifyDate != null) mesRohIn.LastupdateDate = DateTime.ParseExact( rohIn.FModifyDate, "yyyy-MM-dd HH:mm:ss", null); mesRohIn.ErpCheckBy = rohIn.FApproverId; mesRohIn.ErpCheckDate = rohIn.FApproveDate; return mesRohIn; } public List GetMesRohInDatas(List ErpRohinDatas, string type) { var list = new List(); ErpRohinDatas.ForEach(s => { var entity = new MesRohInData(); var eid = Convert.ToDecimal(s.id); if (!"1".Equals(type)) { var single = rohInDataManager.GetSingle(it => it.EbelnK3id == eid); if (single != null) entity.Id = single.Id; } entity.EbelnK3id = Convert.ToDecimal(s.id); entity.ErpId = Convert.ToDecimal(s.Eid); entity.BillNo = s.FBillNo; entity.SalesOrderId = s.F_UNW_Text_xsddh; entity.ItemId = s.FMaterialId; entity.PurchaseUnit = s.FUnitId; entity.PurchaseQty = Convert.ToDecimal(s.FQty); entity.InventoryUnit = s.FStockUnitID; entity.PricingUnit = s.FPriceUnitId; entity.PricingQty = Convert.ToDecimal(s.FPriceUnitQty); if (s.FDeliveryDate != null) entity.DeliveryDate = DateTime.ParseExact( s.FDeliveryDate, "yyyy-MM-dd HH:mm:ss", null); if (s.FDeliveryEarlyDate != null) entity.EarliestDeliveryDate = DateTime.ParseExact( s.FDeliveryEarlyDate, "yyyy-MM-dd HH:mm:ss", null); if (s.FDeliveryLastDate != null) entity.LatestDeliveryDate = DateTime.ParseExact( s.FDeliveryLastDate, "yyyy-MM-dd HH:mm:ss", null); entity.IsGift = s.FGiveAway; entity.Remarks = s.FEntryNote; entity.SupplierItemCode = s.FSupMatId; entity.SupplierItemName = s.FSupMatName; entity.OutsourcingOrderId = s.FSUBREQBILLNO; entity.BatchNumber = s.FLot; entity.BusinessClose = s.FMRPCloseStatus; entity.BusinessFreeze = s.FMRPFreezeStatus; entity.Freezer = s.FFreezerId; if (s.FFreezeDate != null) entity.FreezeTime = DateTime.ParseExact( s.FFreezeDate, "yyyy-MM-dd HH:mm:ss", null); entity.BusinessTerminate = s.FMRPTerminateStatus; entity.Terminator = s.FTerminaterId; if (s.FTerminateDate != null) entity.TerminateTime = DateTime.ParseExact( s.FTerminateDate, "yyyy-MM-dd HH:mm:ss", null); entity.TotalReceivedQty = Convert.ToDecimal(s.FReceiveQty); entity.RemainingReceivedQty = Convert.ToDecimal(s.FRemainReceiveQty); entity.TotalStoredQty = Convert.ToDecimal(s.FStockInQty); entity.RemainingStoredQty = Convert.ToDecimal(s.FRemainStockINQty); entity.TotalReturnedQty = Convert.ToDecimal(s.FMrbQty); entity.ReturnableReceivedQty = Convert.ToDecimal(s.FCHECKRETQTY); entity.ReturnableStoredQty = Convert.ToDecimal(s.FSTOCKRETQTY); entity.SourceDocumentType = s.FSrcBillTypeId; entity.SourceDocumentId = s.FSrcBillNo; entity.DemandTrackingId = s.FReqTraceNo; entity.PlanTrackingId = s.FMtoNo; entity.ChangeFlag = s.FChangeFlag; entity.DemandSource = s.FDEMANDTYPE; entity.DemandDocumentId = s.FDEMANDBILLNO; entity.DemandDocumentLineId = s.FDEMANDBILLENTRYSEQ; entity.PurchaseOrderLineNumber = s.PurchaseOrderLineNumber; entity.Demand = s.Demand; entity.Receiving = s.Receiving; entity.Settlement = s.Settlement; list.Add(entity); }); return list; } #region 教学方法 /// /// 仓储方法满足不了复杂业务需求,业务代码请在这里面定义方法 /// public void Study() { /*********查询*********/ var data1 = base.GetById(1); //根据ID查询 var data2 = base.GetList(); //查询所有 var data3 = base.GetList(it => 1 == 1); //根据条件查询 //var data4 = base.GetSingle(it => 1 == 1);//根据条件查询一条,如果超过一条会报错 var p = new PageModel { PageIndex = 1, PageSize = 2 }; // 分页查询 var data5 = base.GetPageList(it => 1 == 1, p); Console.Write(p.TotalCount); //返回总数 var data6 = base.GetPageList(it => 1 == 1, p, it => SqlFunc.GetRandom()); // 分页查询加排序 Console.Write(p.TotalCount); //返回总数 var conModels = new List(); //组装条件查询作为条件实现 分页查询加排序 conModels.Add(new ConditionalModel { FieldName = typeof(MesRohIn).GetProperties()[0].Name, ConditionalType = ConditionalType.Equal, FieldValue = "1" }); //id=1 var data7 = base.GetPageList(conModels, p, it => SqlFunc.GetRandom()); AsQueryable().Where(x => 1 == 1) .ToList(); //支持了转换成queryable,我们可以用queryable实现复杂功能 /*********插入*********/ var insertData = new MesRohIn(); //测试参数 var insertArray = new[] { insertData }; base.Insert(insertData); //插入 base.InsertRange(insertArray); //批量插入 var id = base.InsertReturnIdentity(insertData); //插入返回自增列 AsInsertable(insertData).ExecuteCommand(); //我们可以转成 Insertable实现复杂插入 /*********更新*********/ var updateData = new MesRohIn(); //测试参数 var updateArray = new[] { updateData }; //测试参数 base.Update(updateData); //根据实体更新 base.UpdateRange(updateArray); //批量更新 //base.Update(it => new MesRohIn() { ClassName = "a", CreateTime = DateTime.Now }, it => it.id==1);// 只更新ClassName列和CreateTime列,其它列不更新,条件id=1 AsUpdateable(updateData).ExecuteCommand(); //转成Updateable可以实现复杂的插入 /*********删除*********/ var deldata = new MesRohIn(); //测试参数 base.Delete(deldata); //根据实体删除 base.DeleteById(1); //根据主键删除 base.DeleteById(new[] { 1, 2 }); //根据主键数组删除 base.Delete(it => 1 == 2); //根据条件删除 AsDeleteable().Where(it => 1 == 2) .ExecuteCommand(); //转成Deleteable实现复杂的操作 } #endregion }