From f68218d98591c1238d6f299152545b018cc31257 Mon Sep 17 00:00:00 2001 From: hudong <Administrator@PC-20250329JZUF> Date: 星期五, 06 六月 2025 13:54:45 +0800 Subject: [PATCH] 代码超时优化 --- models/TN_In_Detail.cs | 107 +++++++++++++++++++++ api/WmsSpaHelper.cs | 99 +++++++++++++------ models/TN_In_Order.cs | 41 ++++++++ api/WmsSapController.cs | 8 + models/TN_Inbound_Order.cs | 8 HH.WCS.Mobox3.pinggao.csproj | 2 6 files changed, 230 insertions(+), 35 deletions(-) diff --git a/HH.WCS.Mobox3.pinggao.csproj b/HH.WCS.Mobox3.pinggao.csproj index 207420b..9a0ef8c 100644 --- a/HH.WCS.Mobox3.pinggao.csproj +++ b/HH.WCS.Mobox3.pinggao.csproj @@ -196,6 +196,8 @@ <Compile Include="models\SapRoot.cs" /> <Compile Include="models\TN_DPRECORD.cs" /> <Compile Include="models\TN_GENERATE_ORDER.cs" /> + <Compile Include="models\TN_In_Detail.cs" /> + <Compile Include="models\TN_In_Order.cs" /> <Compile Include="models\TN_Location_Ext.cs" /> <Compile Include="models\TN_Ll_detail.cs" /> <Compile Include="models\TN_Ll_Order.cs" /> diff --git a/api/WmsSapController.cs b/api/WmsSapController.cs index b2cd950..cdc1ded 100644 --- a/api/WmsSapController.cs +++ b/api/WmsSapController.cs @@ -20,6 +20,7 @@ using static HH.WCS.Mobox3.pinggao.models.DAPING; using HH.WCS.Mobox3.pinggao.util; using SqlSugar; +using System.Diagnostics; namespace HH.WCS.Mobox3.pinggao.api { @@ -612,6 +613,8 @@ [HttpPost] public LLDReturnRoot.Root LLDReceiveXmlData([FromBody] CKDdto.Root xmlData) { + Stopwatch sw = new Stopwatch(); + sw.Start(); #region xml鏁版嵁鎺ユ敹杞暟缁� LogHelper.Info("鐢熶骇璁㈠崟棰嗘枡鍗�鐢熸垚棰嗘枡鍗�鎺ュ彛锛� + JsonConvert.SerializeObject(xmlData)); @@ -632,11 +635,14 @@ #region 鍑哄簱涓氬姟娴佺▼ LLDReturnRoot.Root json = WmsSpaHelper.Out_Order_Ins(xmlData); + + //鎺ユ敹杩斿洖鍙傛暟 鐢熸垚sap瀵规帴鏂囨。杩斿洖鏍煎紡 //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg); //鎺ユ敹杩斿洖鍙傛暟 鐢熸垚sap瀵规帴鏂囨。杩斿洖鏍煎紡 List<WcReturnRoot.ITEM> wcReturnRoots = new List<WcReturnRoot.ITEM>(); - + sw.Stop(); + long elapsedMilliseconds = sw.ElapsedMilliseconds; return json; #endregion //#region 杩斿洖xml diff --git a/api/WmsSpaHelper.cs b/api/WmsSpaHelper.cs index ca8958c..1c2fdad 100644 --- a/api/WmsSpaHelper.cs +++ b/api/WmsSpaHelper.cs @@ -798,10 +798,10 @@ try { db.BeginTran(); + List<TN_GENERATE_ORDER> tN_GENERATE_ORDERs = new List<TN_GENERATE_ORDER>(); foreach (var item in model.ROOT.SCDD) { Orderback.ITEM iTEM = new Orderback.ITEM(); - var materlist = db.Queryable<TN_GENERATE_ORDER>().Where(it => it.S_SCDDH == item.SCDDH).First(); if (materlist == null) { @@ -821,8 +821,9 @@ tnorder.S_WBS = item.WBS; tnorder.S_SHF = item.SHF; tnorder.GZLH = item.GZLH; + tN_GENERATE_ORDERs.Add(tnorder); //tnorder.S_XLH = string.Join(",", item.ITEM.Select(items => items.XLH)); - db.Insertable<TN_GENERATE_ORDER>(tnorder).ExecuteCommand(); + } else { @@ -838,6 +839,7 @@ iTEM.MSGDESP = $"鎴愬姛"; tEMs.Add(iTEM); } + db.Insertable<TN_GENERATE_ORDER>(tN_GENERATE_ORDERs).ExecuteCommand(); orderResponse.ROOT.ITEM = tEMs; db.CommitTran(); } @@ -1334,6 +1336,9 @@ try { + var itemlist = db.Queryable<TN_Material>().ToList(); + List<TN_Inbound_Detail> tN_Inbound_Details = new List<TN_Inbound_Detail>(); + List<TN_Ll_detail> tN_Ll_Details = new List<TN_Ll_detail>(); foreach (var itemwlpz in model.ROOT.WLPZ) { @@ -1435,8 +1440,8 @@ { var poq = po.Details.Where(s => s.S_ITEM_CODE == a.WLBH).FirstOrDefault(); poq.F_QTY = a.SL; - - db.Updateable(poq).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); + tN_Inbound_Details.Add(poq); + // db.Updateable(poq).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); } else { @@ -1559,7 +1564,7 @@ po.S_FACTORY = itemwlpz.ITEM[0].GC; foreach (var a in itemwlpz.ITEM) { - var item = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == a.WLBH).First(); + var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBH).FirstOrDefault(); if (item == null) { var result12 = new SimpleResult(); @@ -1610,7 +1615,7 @@ var po1 = po.Details.Where(s => a.WLBH == s.S_ITEM_CODE).ToList(); if (po1.Count() == 0) //鏃犲垯鏂板鐗╂枡鏄庣粏 { - var item = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == a.WLBH).First(); + var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBH).FirstOrDefault(); if (item == null) { var result12 = new SimpleResult(); @@ -1642,7 +1647,8 @@ if (po1.Where(s => s.F_ACC_D_QTY < a.SL).Count() > 0)//鏇存柊鏁伴噺澶т簬褰撳墠鐗╂枡 鏁伴噺 鏇存柊鍑哄簱鍗� { po1.First().F_QTY = a.SL; - db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); + tN_Ll_Details.Add(po1.First()); + //db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); } else //杩斿洖澶辫触 { @@ -1683,7 +1689,7 @@ var po1 = po.Details.Where(s => a.WLBH == s.S_ITEM_CODE).ToList(); if (po1.Count() == 0) //鏃犲垯鏂板鐗╂枡鏄庣粏 { - var item = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == a.WLBH).First(); + var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBH).FirstOrDefault(); if (item == null) { var result12 = new SimpleResult(); @@ -1713,7 +1719,8 @@ else {//鏇存柊鏁伴噺 鏈墽琛屾椂 鐩存帴鏇存柊鏁伴噺 po1.First().F_QTY = a.SL; - db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); + tN_Ll_Details.Add(po1.First()); + //db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); } //} } @@ -1734,8 +1741,15 @@ result.resultCode = 0; simples.Add(result); } + if (tN_Ll_Details.Count()>0) + { - + db.Updateable(tN_Ll_Details).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); + } + if (tN_Inbound_Details.Count()>0) + { + db.Updateable(tN_Inbound_Details).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); + } db.CommitTran(); } @@ -3252,7 +3266,7 @@ } }; List<LLDReturnRoot.ITEM> iTEMs = new List<LLDReturnRoot.ITEM>(); - + var result = new WeiLiResult(); using (var db = new SqlHelper<object>().GetInstance()) @@ -3261,15 +3275,25 @@ //鍒涘缓棰嗘枡鍗� try { + var itemlist = db.Queryable<TN_Material>().ToList(); + + //鍒犻櫎鐨勯泦鍚�+ List<TN_Ll_detail> tN_Ll_Details = new List<TN_Ll_detail>(); + List<TN_Ll_detail> iuptN_Ll_Details = new List<TN_Ll_detail>(); foreach (var itemscddll in model.ROOT.SCDDLL) { LLDReturnRoot.ITEM lLDReturnRoots = new LLDReturnRoot.ITEM(); db.BeginTran(); - + // 棰勫厛缂撳瓨鐗╂枡鏁版嵁锛堜紭鍖栫偣1锛氭壒閲忔煡璇㈠噺灏戞暟鎹簱璁块棶锛�+ + var materialCache = new Dictionary<string, TN_Material>(); #region 鍒涘缓棰嗘枡鍗�- var po = db.Queryable<TN_Ll_Order>().Includes(a => a.Details).Where(s => s.S_NO == itemscddll.LLDH).First(); - + //var po = db.Queryable<TN_Ll_Order>().Includes(a => a.Details).Where(s => s.S_NO == itemscddll.LLDH).First(); + var po = db.Queryable<TN_Ll_Order>() + .Includes(a => a.Details) + .Where(s => s.S_NO == itemscddll.LLDH) + .First(); #endregion //var po = WMSHelper.GetOutboundOrder(model.ROOT.SCDDLL.LLDH); if (po == null) @@ -3280,12 +3304,9 @@ { foreach (var a in itemscddll.ITEM) { - var item = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == a.WLBM).First(); + var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBM).FirstOrDefault(); if (item == null) { - //result.code = 1; - //result.msg = $"鐗╂枡{a.WLBM}鐗╂枡涓绘暟鎹笉瀛樺湪璇ョ墿鏂�; - //throw new Exception($"鐗╂枡{a.WLBM}鐗╂枡涓绘暟鎹笉瀛樺湪璇ョ墿鏂�); lLDReturnRoots.GC = itemscddll.GC; lLDReturnRoots.LLDH = itemscddll.LLDH; lLDReturnRoots.MSGCODE = 1; @@ -3318,7 +3339,7 @@ N_ITEM_STATE = 1 }); } - if (po.Details.Count()>0) + if (po.Details.Count() > 0) { LLDReturnRoot.ITEM lLDReturnRoot1 = new LLDReturnRoot.ITEM(); lLDReturnRoot1.GC = itemscddll.GC; @@ -3364,7 +3385,7 @@ var po1 = po.Details.Where(s => a.WLBM == s.S_ITEM_CODE).ToList(); if (po1.Count() == 0) //鏃犲垯鏂板鐗╂枡鏄庣粏 { - var item = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == a.WLBM).First(); + var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBM).FirstOrDefault(); if (item == null) { //result.code = 1; @@ -3407,7 +3428,8 @@ if (po1.Where(s => s.F_ACC_D_QTY < a.XQSL).Count() > 0)//鏇存柊鏁伴噺澶т簬褰撳墠鐗╂枡 鏁伴噺 鏇存柊鍑哄簱鍗� { po1.First().F_QTY = a.XQSL; - db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); + iuptN_Ll_Details.Add(po1.First()); + //db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); } else //杩斿洖澶辫触 { @@ -3434,7 +3456,8 @@ var po1 = po.Details.Where(s => a.WLBM == s.S_ITEM_CODE).ToList(); if (po1.Count() > 0) //鏃犲垯鏂板鐗╂枡鏄庣粏 { - db.Deleteable<TN_Ll_detail>().Where(it => it.S_ITEM_CODE == a.WLBM && it.S_DO_NO == po1.First().S_DO_NO).ExecuteCommand(); + tN_Ll_Details.AddRange(po1); + // db.Deleteable<TN_Ll_detail>().Where(it => it.S_ITEM_CODE == a.WLBM && it.S_DO_NO == po1.First().S_DO_NO).ExecuteCommand(); } else { @@ -3444,9 +3467,9 @@ lLDReturnRoots.GC = itemscddll.GC; lLDReturnRoots.LLDH = itemscddll.LLDH; lLDReturnRoots.MSGCODE = 1; - lLDReturnRoots.MSGDESP = $"鐗╂枡{a.WLBM}鐗╂枡鏁版嵁涓嶅瓨鍦�鏃犳硶鍒犻櫎"; + lLDReturnRoots.MSGDESP = $"鍒犻櫎鐨勭墿鏂檣a.WLBM}鐗╂枡鏁版嵁涓嶅瓨鍦�鏃犳硶鍒犻櫎"; iTEMs.Add(lLDReturnRoots); - break; + continue; } } else @@ -3454,7 +3477,7 @@ var po1 = po.Details.Where(s => a.WLBM == s.S_ITEM_CODE).ToList(); if (po1.Count() == 0) //鏃犲垯鏂板鐗╂枡鏄庣粏 { - var item = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == a.WLBM).First(); + var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBM).FirstOrDefault(); if (item == null) { //result.code = 1; @@ -3465,7 +3488,7 @@ lLDReturnRoots.MSGCODE = 1; lLDReturnRoots.MSGDESP = $"鐗╂枡{a.WLBM}鐗╂枡涓绘暟鎹笉瀛樺湪璇ョ墿鏂�; iTEMs.Add(lLDReturnRoots); - break; + continue; } TN_Ll_detail tN_Outbound_Detail = new TN_Ll_detail { @@ -3495,10 +3518,22 @@ else {//鏇存柊鏁伴噺 鏈墽琛屾椂 鐩存帴鏇存柊鏁伴噺 po1.First().F_QTY = a.XQSL; - db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); + iuptN_Ll_Details.Add(po1.First()); + //db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); } } } + if (tN_Ll_Details.Count()>0) + { + db.Deleteable<TN_Ll_detail>(tN_Ll_Details).ExecuteCommand(); + + } + if (iuptN_Ll_Details.Count() > 0) + { + db.Updateable(iuptN_Ll_Details).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); + + } + ; } //娣诲姞鏁版嵁 @@ -3590,7 +3625,7 @@ { //var az = db.Queryable<AZInventory>().ToList(); var po1 = new TN_Outbound_Order { S_NO = WMSHelper.GenerateShippNo(), UNAME = po.UNAME, S_FACTORY = po.S_FACTORY, S_CBZX = po.S_CBZX, S_ZZKM = po.S_ZZKM, S_LRZX = po.S_LRZX, BLDAT = po.BLDAT, BUDAT = po.BUDAT, S_OUT_TYPE = po.S_OUT_TYPE, S_BS_TYPE = po.S_BS_TYPE, S_AREA_CODE = po.S_AREA_CODE, S_BS_NO = po.S_NO }; - + List<TN_Ll_detail> tN_Ll_Details= new List<TN_Ll_detail>(); po1.Details = new List<TN_Outbound_Detail>(); if (po.Details.Count() > 0) { @@ -3626,8 +3661,9 @@ S_ERP_WH_CODE = a.S_ERP_WH_CODE, N_ITEM_STATE = a.N_ITEM_STATE }); - a.F_ACC_D_QTY += a.F_QTY - a.F_ACC_D_QTY; - db.Updateable(a).UpdateColumns(it => new { it.F_ACC_D_QTY }).ExecuteCommand(); + double difference = a.F_QTY - a.F_ACC_D_QTY; + a.F_ACC_D_QTY += difference; + tN_Ll_Details.Add(a); } else { @@ -3637,6 +3673,9 @@ } } + + + db.Updateable(tN_Ll_Details).UpdateColumns(it => new { it.F_ACC_D_QTY }).ExecuteCommand(); if (po1.Details.Count() > 0) { var result1 = db.Insertable<TN_Outbound_Order>(po1).ExecuteCommand() > 0; diff --git a/models/TN_In_Detail.cs b/models/TN_In_Detail.cs new file mode 100644 index 0000000..b69af65 --- /dev/null +++ b/models/TN_In_Detail.cs @@ -0,0 +1,107 @@ + +using HH.WCS.Mobox3.pinggao.models; +using SqlSugar; +using System; + +namespace HH.WCS.Mobox3.pinggao +{ + [SugarTable("TN_InOrderDetail")] + + public class TN_InOrder_Detail : BaseModel + { + public string S_IO_NO { get; set; } + public string N_ROW_NO { get; set; } + public string S_ITEM_CODE { get; set; } + public int N_ITEM_STATE { get; set; } + public string S_ITEM_NAME { get; set; } + public string S_ITEM_STATE { get; set; } + public string S_BATCH_NO { get; set; } = ""; + public string S_ITEM_SPEC { get; set; } + public string S_SERIAL_NO { get; set; } = ""; + public string D_PRD_DATE { get; set; } + public string D_EXP_DATE { get; set; } + public string S_NOTE { get; set; } + public double F_QTY { get; set; } + public string S_UOM { get; set; } = "kg"; + public double F_ACC_C_QTY { get; set; } + public double F_ACC_B_QTY { get; set; } + public int N_B_STATE { get; set; } + public string S_BS_NO { get; set; } + public string S_BS_TYPE { get; set; } + //public double F_NET_WEIGHT { get; set; } + //public double F_GROSS_WEIGHT { get; set; } + public string S_SUPPLIER_NO { get; set; } + //public string S_WU { get; set; } + ///// <summary> + ///// 来源单行号 + ///// </summary> + //public string N_BS_ROW_NO { get; set; } + /// <summary> + /// 货主 + /// </summary> + public string S_OWNER { get; set; } + /// <summary> + /// ERP仓库 + /// </summary> + public string S_ERP_WH_CODE { get; set; } + + + // 库存地点 + + public string S_KCDD { get; set; } + + // 检验批编号 + + public string S_JYPBH { get; set; } + public string S_KJPZSSRQ { get; set; } + + // 输入时间 + + public DateTime T_SRSJ { get; set; } + + // 会计凭证日期 + + public string S_KJPZSRRQ { get; set; } + + // 采购凭证号 + + public string S_CGPZH { get; set; } + + // 采购凭证的项目编号 + + public string S_CGPZXMBH { get; set; } + + // 借方/贷方标识 + + public string S_JDBS { get; set; } + + // 参考凭证的凭证号 + + public string S_CKPZH { get; set; } + + // 参考凭证会计年度 + + public string S_CKPZKJND { get; set; } + public string S_KJPZSRSJ { get; set; } + + // 参考凭证项目 + + public string S_CKPZXM { get; set; } + + // 冲销物料凭证编号 + + public string S_CXWLPZBH { get; set; } + public string S_CXPZNF { get; set; } + public string S_CXWLPZHXM { get; set; } + public string S_HWSJJYZT { get; set; } + public string S_GYSZHH { get; set; } + + public string S_PH { get; set; } + public string S_TSKCBS { get; set; } + public string S_XSDDXMBH { get; set; } + public string S_DDH { get; set; } + public string S_WBS { get; set; } + public string S_XSDD { get; set; } + + } +} diff --git a/models/TN_In_Order.cs b/models/TN_In_Order.cs new file mode 100644 index 0000000..69eb43e --- /dev/null +++ b/models/TN_In_Order.cs @@ -0,0 +1,41 @@ +using HH.WCS.Mobox3.pinggao.models; +using SqlSugar; +using System; +using System.Collections.Generic; + +namespace HH.WCS.Mobox3.pinggao +{ + [SugarTable("TN_Inbound_Order")] + public class TN_Inbound_Order : BaseModel + { + public string S_NO { get; set; } + public string BUDAT { get; set; } + public string BLDAT { get; set; } + public string UNAME { get; set; } + public string BKTXT { get; set; } + public string SOBKZ { get; set; } + //public string S_RECEIPT_NO { get; set; } + public string S_SUPPLIER_NO { get; set; } + public string S_WLPZNF { get; set; } + public string S_SUPPLIER_NAME { get; set; } + public string S_FACTORY { get; set; } + public string S_WH_CODE { get; set; } + public string S_NOTE { get; set; } + public string S_AREA_CODE { get; set; } + public string S_BS_TYPE { get; set; } + public string S_IN_TYPE { get; set; } + public string S_BS_NO { get; set; } + public int N_B_STATE { get; set; } + public string S_WLPZ { get; set; } + + /// <summary> + /// 物料凭证年度 + /// </summary> + public string S_WLPZND { get; set; }/// <summary> + /// 编号 + /// </summary> + [SugarColumn(IsIgnore = true)] + [Navigate(NavigateType.OneToMany, nameof(TN_Inbound_Detail.S_IO_NO), nameof(S_NO))] + public List<TN_Inbound_Detail> Details { get; set; } + } +} diff --git a/models/TN_Inbound_Order.cs b/models/TN_Inbound_Order.cs index 69eb43e..5aa0352 100644 --- a/models/TN_Inbound_Order.cs +++ b/models/TN_Inbound_Order.cs @@ -5,8 +5,8 @@ namespace HH.WCS.Mobox3.pinggao { - [SugarTable("TN_Inbound_Order")] - public class TN_Inbound_Order : BaseModel + [SugarTable("TN_In_Order")] + public class TN_In_Order : BaseModel { public string S_NO { get; set; } public string BUDAT { get; set; } @@ -35,7 +35,7 @@ /// 编号 /// </summary> [SugarColumn(IsIgnore = true)] - [Navigate(NavigateType.OneToMany, nameof(TN_Inbound_Detail.S_IO_NO), nameof(S_NO))] - public List<TN_Inbound_Detail> Details { get; set; } + [Navigate(NavigateType.OneToMany, nameof(TN_InOrder_Detail.S_IO_NO), nameof(S_NO))] + public List<TN_InOrder_Detail> Details { get; set; } } } -- Gitblit v1.9.1