From 79e43ccffd15afcd99934ee43b706f6133398079 Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期一, 07 七月 2025 15:29:56 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- MES.Service/service/MesCgsqManager.cs | 219 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 219 insertions(+), 0 deletions(-) diff --git a/MES.Service/service/MesCgsqManager.cs b/MES.Service/service/MesCgsqManager.cs new file mode 100644 index 0000000..528efde --- /dev/null +++ b/MES.Service/service/MesCgsqManager.cs @@ -0,0 +1,219 @@ +锘縰sing 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.Dto.service; + +namespace MES.Service.service +{ +public class CgsqManager : Repository<Cgsq> +{ + + private readonly CgsqDetailManager CgsqDetailManager = new(); + + public bool Save(CgsqDto Cgsq) + { + // var CgsqDto = Cgsq.CgsqMain; + var mesCgsq = ConvertErpToCgsq(Cgsq); + var mesCgsqDatas = ConvertErpToCgsqDetail(Cgsq); + + return UseTransaction(db => + { + switch (Cgsq.Type) + { + // case "2": + // return InsertData(db, mesSalesReturn, mesSalesReturnDatas, + // rohInErpRohIn.FBILLTYPE) + // ? 1 + // : 0; + case "3": + return UpdateData(db, mesCgsq, mesCgsqDatas) ? 1 : 0; + case "2": + case "4": + return SaveOrUpdateData(db, mesCgsq, mesCgsqDatas, Cgsq.Type) + ? 1 + : 0; + default: + throw new NotImplementedException( + $"type娌℃湁{Cgsq.Type}杩欎釜绫诲瀷"); + } + }) > 0; + } + + private bool UpdateData(SqlSugarScope db, Cgsq mesCgsq, + List<CgsqDetail> mesCgsqDatas) + { + var decimals = mesCgsqDatas.Select(s => s.ERPID).ToArray(); + var update = base.DeleteById(mesCgsq.ERPID); + var insertOrUpdate = db + .Deleteable<CgsqDetail>().In(decimals) + .ExecuteCommand() > 0; + + if (update && insertOrUpdate) return true; + throw new NotImplementedException("鏇存柊澶辫触"); + } + + // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶 + private bool SaveOrUpdateData(SqlSugarScope db, Cgsq mesCgsq, + List<CgsqDetail> mesCgsqDatas, string type) + { + if (mesCgsq.ERPID != null) + base.DeleteById(mesCgsq.ERPID); + + if (mesCgsqDatas.Count > 0) + db.Deleteable<CgsqDetail>() + .Where(s => s.ERPHID == mesCgsq.ERPID).ExecuteCommand(); + + //var orUpdate = base.Insert(mesCgsq); + //var baOrUpdate = CgsqDetailManager.InsertRange(mesCgsqDatas); + //if (orUpdate && baOrUpdate) return true; + + var update_res = UseTransaction(db => + { + + db.Insertable(mesCgsq).ExecuteCommand(); + + for (int i = 0; i < mesCgsqDatas.Count; i++) + { + var item = mesCgsqDatas[i]; + //item.PID = id; + db.Insertable(item).IgnoreColumns(true).ExecuteCommand(); + } + + return 1; + }); + + if (update_res == 1) return true; + throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�"); + } + + // 鎵归噺淇濆瓨璁板綍鐨勬柟娉� + public bool SaveList(List<CgsqDto> CgsqOrder) + { + var result = CgsqOrder.Select(Save).ToList(); + return result.All(b => b); + } + + private Cgsq ConvertErpToCgsq( + CgsqDto erpDto) + { + DateTime parsedDate; + + // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "yyyy-MM-dd HH:mm:ss" + DateTime? ParseDateTime(string dateStr) + { + if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss", + CultureInfo.InvariantCulture, + DateTimeStyles.None, + out parsedDate)) + return parsedDate; + + return null; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull + } + var main = erpDto.CgsqMain; + var CgsqOrder = new Cgsq + { + ERPID=main.ERPID, + Fbilltypeid = main.Fbilltypeid, + Fbillno = main.Fbillno, + Fapplicationdate = main.Fapplicationdate, + Frequesttype = main.Frequesttype, + FUnwComboZjmj = main.FUnwComboZjmj, + ApplyingOrganizationId = main.ApplyingOrganizationId, + Fapplicationdeptid = main.Fapplicationdeptid, + Fapplicantid = main.Fapplicantid, + Fcurrencyid = main.Fcurrencyid, + Facctype = main.Facctype, + Fdocumentstatus = main.Fdocumentstatus, + Fnote = main.Fnote, + Fcreatorid = main.Fcreatorid, + Fcreatedate = main.Fcreatedate, + Fapproverid = main.Fapproverid, + Fapprovedate = main.Fapprovedate, + Fclosestatus = main.Fclosestatus, + Fclosedate = main.Fclosedate, + Fcloserid = main.Fcloserid, + Fclosereason = main.Fclosereason, + Fmodifierid = main.Fmodifierid, + Fmodifydate = main.Fmodifydate, + Fmanualclose = main.Fmanualclose + }; + + // var single = base.GetSingle(it => it.ERPID == main.ERPID); + // if (single != null) CgsqOrder.ERPID = single.ERPID; + + return CgsqOrder; + } + + private List<CgsqDetail> ConvertErpToCgsqDetail( + CgsqDto erpDtoList) + + { + var CgsqOrderSubList = + new List<CgsqDetail>(); + + DateTime parsedDate; + // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "yyyy-MM-dd HH:mm:ss" + DateTime? ParseDateTime(string dateStr) + { + if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss", + CultureInfo.InvariantCulture, + DateTimeStyles.None, + out parsedDate)) + return parsedDate; + + return null; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull + } + + + + foreach (var erpDto in erpDtoList.CgsqDT) + { + var CgsqOrderSub = new CgsqDetail + { + ERPID = erpDto.ERPID, + ERPHID = erpDto.ERPHID, + LineNumber = erpDto.LineNumber, + FUnwTextXsddh = erpDto.FUnwTextXsddh, + OwnerOrganizationId = erpDto.OwnerOrganizationId, + Fmaterialid = erpDto.Fmaterialid, + Fmaterialmodel = erpDto.Fmaterialmodel, + Fmaterialname = erpDto.Fmaterialname, + Funitid = erpDto.Funitid, + Freqqty = erpDto.Freqqty, + Fapproveqty = erpDto.Fapproveqty, + Farrivaldate = erpDto.Farrivaldate, + Fsuggestpurdate = erpDto.Fsuggestpurdate, + BuyerOrganizationId = erpDto.BuyerOrganizationId, + Fsuggestsupplierid = erpDto.Fsuggestsupplierid, + WarehouseId = erpDto.WarehouseId, + Freqstockunitid = erpDto.Freqstockunitid, + Freqstockqty = erpDto.Freqstockqty, + Fpriceunitid = erpDto.Fpriceunitid, + Fpriceunitqty = erpDto.Fpriceunitqty, + Fleadtime = erpDto.Fleadtime, + Fmtono = erpDto.Fmtono, + Freqtraceno = erpDto.Freqtraceno, + Fdemandbillno = erpDto.Fdemandbillno, + Fdemandbillentryseq = erpDto.Fdemandbillentryseq, + Fmrpterminatestatus = erpDto.Fmrpterminatestatus, + Fterminaterid = erpDto.Fterminaterid, + Fterminatedate = erpDto.Fterminatedate + + }; + + /*var single = CgsqDetailManager.GetSingle(it => + it.ERPID == CgsqOrderSub.ERPID); + if (single != null) CgsqOrderSub.ERPID = single.ERPID;*/ + + CgsqOrderSubList.Add(CgsqOrderSub); + } + + return CgsqOrderSubList; + } + + } +} \ No newline at end of file -- Gitblit v1.9.3