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.Dto.service; namespace MES.Service.service { public class CgsqManager : Repository { 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 mesCgsqDatas) { var decimals = mesCgsqDatas.Select(s => s.ERPID).ToArray(); var update = base.DeleteById(mesCgsq.ERPID); var insertOrUpdate = db .Deleteable().In(decimals) .ExecuteCommand() > 0; if (update && insertOrUpdate) return true; throw new NotImplementedException("更新失败"); } // 插入或更新数据的方法 private bool SaveOrUpdateData(SqlSugarScope db, Cgsq mesCgsq, List mesCgsqDatas, string type) { if (mesCgsq.ERPID != null) base.DeleteById(mesCgsq.ERPID); if (mesCgsqDatas.Count > 0) db.Deleteable() .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 CgsqOrder) { var result = CgsqOrder.Select(Save).ToList(); return result.All(b => b); } private Cgsq ConvertErpToCgsq( CgsqDto erpDto) { DateTime parsedDate; // 时间格式转换函数,ERP时间格式为 "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; // 如果转换失败,返回null } 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 ConvertErpToCgsqDetail( CgsqDto erpDtoList) { var CgsqOrderSubList = new List(); DateTime parsedDate; // 时间格式转换函数,ERP时间格式为 "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; // 如果转换失败,返回null } 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; } } }