From 3a3c5f5711a57439f34e772313fcbb18ba7885bc Mon Sep 17 00:00:00 2001 From: hudong <Administrator@PC-20250329JZUF> Date: 星期一, 14 七月 2025 10:31:15 +0800 Subject: [PATCH] 优化 --- api/WmsSpaHelper.cs | 1015 +++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 837 insertions(+), 178 deletions(-) diff --git a/api/WmsSpaHelper.cs b/api/WmsSpaHelper.cs index 5087be3..636d30b 100644 --- a/api/WmsSpaHelper.cs +++ b/api/WmsSpaHelper.cs @@ -43,6 +43,7 @@ using HH.WCS.Mobox3.pinggao.core; using static HH.WCS.Mobox3.pinggao.api.OtherModel.Putaway_Order_In; using System.Web.Http.Results; +using System.Runtime.Caching; namespace HH.WCS.Mobox3.pinggao.api { @@ -1750,15 +1751,21 @@ using (var db = new SqlHelper<object>().GetInstance()) { Location endloc = new Location(); - var hwbd = db.Queryable<TN_Container_Code>().Where(a => a.S_CNTR_CODE == model.start).First(); + var hwbd = db.Queryable<TN_Container_Code>().Where(a => a.S_CNTR_CODE.Trim() == model.cntr_code).First(); if (hwbd!=null) { - endloc = db.Queryable<Location>().Where(a => a.S_CODE == hwbd.S_LOC_CODE).First(); + endloc = db.Queryable<Location>().Where(a => a.S_CODE == hwbd.S_LOC_CODE.Trim()).First(); + if (endloc?.N_LOCK_STATE != 0) + { + result.resultCode = 3; + result.resultMsg = $"缁堢偣搴撲綅宸查攣/涓嶅瓨鍦�; + return result; + } } else { result.resultCode = 3; - result.resultMsg = $"鎵樼洏鎵句笉鍒拌揣浣�; + result.resultMsg = $"{model.cntr_code}鎵樼洏鎵句笉鍒拌揣浣�; return result; } @@ -1923,7 +1930,7 @@ if (khsta != null) { - LogHelper.Info($"starts{khsta}"); + LogHelper.Info($"starts{khsta?.S_CNTR_CODE}"); var starts12 = db.Queryable<LocCntrRel>().Where(lcr => lcr.S_CNTR_CODE == khsta.S_CNTR_CODE).First(); if (starts12==null) { @@ -1935,9 +1942,9 @@ else { - LogHelper.Info($"starts1{starts12}"); + LogHelper.Info($"starts1{starts12.S_LOC_CODE}"); start = db.Queryable<Location>().Where(loc => loc.S_AREA_CODE == "HJQ" && loc.S_CODE == starts12.S_LOC_CODE).ToList().FirstOrDefault(); - LogHelper.Info($"starts2{start}"); + LogHelper.Info($"starts2{start?.S_CODE}"); model.cntr_code = starts12?.S_CNTR_CODE; } @@ -1998,7 +2005,7 @@ S_END_LOC = endinfo.S_CODE, S_END_AREA = endinfo.S_AREA_CODE, S_END_WH = endinfo.S_WH_CODE, - + N_PRIORITY=1, N_TYPE = 2, // S_TYPE = WMSTask.GetTypeStr(1), S_TYPE = "鍑哄簱绌烘墭鐩�, @@ -2019,26 +2026,42 @@ if (!string.IsNullOrEmpty(model.cntr_code)) { - #region MyRegion - //var list = db.Queryable<CntrItemRel>().Select(s => s.S_CNTR_CODE).ToArray(); - //var S_LOC_CODElist = db.Queryable<LocCntrRel>().Where(s=>!list.Contains(s.S_CNTR_CODE)).Select(s=>s.S_LOC_CODE).ToArray(); - //start = db.Queryable<Location>().Where(it => S_LOC_CODElist.Contains(it.S_CODE)).First(); + var hwbd = db.Queryable<TN_Container_Code>().Where(a => a.S_CNTR_CODE.Trim() == model.cntr_code).First(); + if (hwbd!=null) + { + end = db.Queryable<Location>().Where(s => s.S_CODE == hwbd.S_LOC_CODE.Trim()).First(); + } + else + { - //// 鑾峰彇鎵�湁琚崰鐢ㄧ殑瀹瑰櫒缂栫爜 - //var usedContainerCodes = db.Queryable<CntrItemRel>().Select(s => s.S_CNTR_CODE).ToList(); + #region MyRegion + //var list = db.Queryable<CntrItemRel>().Select(s => s.S_CNTR_CODE).ToArray(); + //var S_LOC_CODElist = db.Queryable<LocCntrRel>().Where(s=>!list.Contains(s.S_CNTR_CODE)).Select(s=>s.S_LOC_CODE).ToArray(); + //start = db.Queryable<Location>().Where(it => S_LOC_CODElist.Contains(it.S_CODE)).First(); - // 鑾峰彇鏈鍗犵敤鐨勫鍣ㄥ搴旂殑璐т綅缂栫爜 - var availableLocationCodes = db.Queryable<LocCntrRel>() - .Select(s => s.S_LOC_CODE) - .ToList(); + //// 鑾峰彇鎵�湁琚崰鐢ㄧ殑瀹瑰櫒缂栫爜 + //var usedContainerCodes = db.Queryable<CntrItemRel>().Select(s => s.S_CNTR_CODE).ToList(); + #endregion + // 鑾峰彇鏈鍗犵敤鐨勫鍣ㄥ搴旂殑璐т綅缂栫爜 + var availableLocationCodes = db.Queryable<LocCntrRel>() + .Select(s => s.S_LOC_CODE) + .ToList(); // 鑾峰彇绗竴涓彲鐢ㄨ揣浣嶏紙濡傛灉娌℃湁鍒欒繑鍥瀗ull锛� end = db.Queryable<Location>() .Where(it => !availableLocationCodes.Contains(it.S_CODE) && it.S_AREA_CODE == "HJQ") .ToList().FirstOrDefault(); + if (end!=null) + { + TN_Container_Code tN_Container_Code = new TN_Container_Code(); + tN_Container_Code.S_CNTR_CODE= model.cntr_code; + tN_Container_Code.S_LOC_CODE = end.S_CODE; + var sss = db.Insertable<TN_Container_Code>(tN_Container_Code).ExecuteCommand(); + } - #endregion + } + } else { @@ -2096,24 +2119,232 @@ } } + private static readonly ObjectCache Cache = MemoryCache.Default; + private const string CachePrefix = "ClickProtection_"; + private const int CacheDurationInSeconds = 5; + + public static bool IsClickAllowed(string parameter) + { + string cacheKey = CachePrefix + parameter; + + // 妫�煡缂撳瓨涓槸鍚﹀凡瀛樺湪璇ュ弬鏁�+ if (Cache.Contains(cacheKey)) + { + // 缂撳瓨涓瓨鍦紝璇存槑5绉掑唴宸茬偣鍑昏繃 + return false; + } + else + { + // 缂撳瓨涓笉瀛樺湪锛屾坊鍔犲埌缂撳瓨骞惰缃�绉掑悗杩囨湡 + CacheItemPolicy policy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(CacheDurationInSeconds) }; + Cache.Set(cacheKey, parameter, policy); + return true; + } + } + public static async Task<SimpleResult> AllTYAddOutboundOrder(SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start, string S_OUT_TYPE, string cntr_type) + { + // var db = new SqlHelper<object>().GetInstance(); + //using (var db = new SqlHelper<object>().GetInstance()) + //{ + var result = new SimpleResult(); + + try + { + //搴撲綅淇℃伅 + var startinfo = db.Queryable<Location>().Where(it => it.S_CODE == start).First(); + //鍑哄簱鍗曡鎯�+ var po = db.Queryable<TN_Outbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == arrival_no).First(); + //鍒嗘嫞鍗�+ //var popp = db.Queryable<TN_Distribution_CNTR>().Where(a => a.S_BS_NO == arrival_no&&a.S_SORT_TYPE=="鏈垎绫� && a.N_B_STATE == 2).First(); + + //鍥炲弬鐗╂枡淇℃伅 + List<OutboundRecord> records = new List<OutboundRecord>(); + var pzlist = db.Queryable<MaterialVoucher>().Where(a => a.S_NO == arrival_no).ToList(); + foreach (var item in MaterList) + { + var pz = pzlist.Where(s => s.S_WLBM == item.item_code).FirstOrDefault(); + // 鎻掑叆鍒版墭鐩樻槑缁嗚〃 + var cntr = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr_code).ToList(); + if (cntr.Count() > 0) + { + db.BeginTran(); + //1.鏌ョ湅鏄惁鏈夌浉鍚岀墿鏂欐壒娆$殑淇℃伅锛屽鏋滄湁瑕佺疮鍑忓皯锛屼笉鍚屾壒娆$殑鍙互鍒嗗紑&& a.N_BS_ROW_NO == item.N_ROW_NO + var cir = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr_code && a.S_ITEM_CODE == item.item_code).First();//&& a.S_BATCH_NO == item.S_BATCH_NO + if (cir != null) + { + cir.F_QTY -= item.qty; + cir.S_CNTR_TYPE = cntr_type; + cir.F_ALLOC_QTY -= item.qty; + cir.T_MODIFY = DateTime.Now; + if (cir.F_QTY == 0) + { + db.Deleteable(cir).ExecuteCommand(); + } + else + { + db.Updateable(cir).UpdateColumns(it => new { it.F_QTY, it.S_CNTR_TYPE, it.F_ALLOC_QTY, it.T_MODIFY }).ExecuteCommand(); + + } + } + else + { + db.RollbackTran(); + result.resultCode = 1; + result.resultMsg = $"鐗╂枡涓嶅瓨鍦▄item.item_code}"; + LogHelper.Info($"鐗╂枡涓嶅瓨鍦▄item.item_code}"); + return result; + } + + OutboundRecord outboundRecord = new OutboundRecord(); + outboundRecord.S_WLPZBH = pz?.S_WLPZBH; + outboundRecord.S_WLPZND = pz?.S_WLPZND; + outboundRecord.S_TYPE = S_OUT_TYPE; + + outboundRecord.S_NO = arrival_no; + outboundRecord.S_WLBM = item.item_code; + outboundRecord.S_SL = item.qty; + outboundRecord.S_CNTR_CODE = cntr_code; + records.Add(outboundRecord); + } + else + { + result.resultCode = 1; + result.resultMsg = $"鑾峰彇鎵樼洏淇℃伅澶辫触{cntr_code}"; + LogHelper.Info($"鑾峰彇鎵樼洏淇℃伅澶辫触{cntr_code}"); + return result; + } + } + //if (isHK) + //{ + var locs = db.Queryable<WCSTask>().Where(a => a.S_TYPE.Contains("鍑哄簱") && a.S_CNTR_CODE == cntr_code && a.N_B_STATE == 3).OrderByDescending(s => s.T_END_TIME).First(); + if (locs != null) + { + var cntr = db.Queryable<TN_Distribution_CNTR>().Where(a => a.S_DC_NO == locs.S_BS_NO).First(); + if (cntr != null) + { + cntr.S_SORT_TYPE = "宸插垎鎷�; + db.Updateable(cntr).UpdateColumns(it => new { it.S_SORT_TYPE }).ExecuteCommand(); + } + else + { + result.resultCode = 1; + result.resultMsg += $"浠诲姟{locs.S_CODE}鏉ユ簮鍙穥locs.S_BS_NO}鎵句笉鍒伴厤鐩樹俊鎭�; + return result; + } + Location endloc = new Location(); + + LogHelper.Info($"鑾峰彇鎵樼洏淇℃伅{cntr_code}瀹瑰櫒"); + var hwbd = db.Queryable<TN_Container_Code>().Where(a => a.S_CNTR_CODE.Trim() == cntr_code).First(); + if (hwbd != null) + { + endloc = db.Queryable<Location>().Where(a => a.S_CODE == hwbd.S_LOC_CODE.Trim()).First(); + if (endloc?.N_LOCK_STATE != 0) + { + result.resultCode = 3; + result.resultMsg = $"缁堢偣搴撲綅宸查攣/涓嶅瓨鍦�; + return result; + } + + } + else + { + result.resultCode = 3; + result.resultMsg = $"{cntr_code}鎵樼洏鎵句笉鍒拌揣浣�; + return result; + } + + //var location = db.Queryable<Location>().Where(a => a.S_CODE == locs.S_LOC_CODE).First(); + var wmsTask = new WMSTask + { + S_CNTR_CODE = cntr_code, + S_CODE = WMSHelper.GenerateTaskNo(), + S_START_LOC = start, + S_START_AREA = startinfo.S_AREA_CODE, + S_START_WH = startinfo.S_WH_CODE, + + //S_END_LOC = start, + //S_END_AREA = startinfo.S_AREA_CODE, + //S_END_WH = startinfo.S_AREA_CODE, + S_END_LOC = endloc?.S_CODE, + S_END_AREA = endloc?.S_AREA_CODE, + S_END_WH = endloc?.S_WH_CODE, + + N_TYPE = 1, + // S_TYPE = WMSTask.GetTypeStr(1), + S_TYPE = "鍥炲簱", + S_OP_DEF_CODE = "", + S_OP_DEF_NAME = "pda鍏ュ簱" + }; + if (WMSHelper.CreateWmsTask(wmsTask)) + { + LocationHelper.LockLoc(start, 2); + result.resultMsg = $"鍒涘缓浣滀笟鎴愬姛锛屼綔涓氬彿{wmsTask.S_CODE}"; + } + } + else + { + result.resultCode = 1; + result.resultMsg += $"鎵句笉鍒板鍣ㄥ搴斾换鍔′俊鎭瘂cntr_code}"; + return result; + } + + //} + var sss = db.Insertable<OutboundRecord>(records).ExecuteCommand(); + + //db.CommitTran(); + } + catch (Exception ex) + { + //db.RollbackTran(); + LogHelper.Info("鐗╂枡淇℃伅缁戝畾鍒版弧瀹瑰櫒涓� + ex.Message); + result.resultCode = 1; + result.resultMsg += ex.Message; + Console.WriteLine(ex.Message); + + throw; + } + return result; + } + /// <summary> /// 鍒嗘嫞 /// </summary> /// <param name="model"></param> /// <returns></returns> - internal static async Task<SimpleResult> OutboundOrderSorting(FJSorting model) + internal static async Task<SimpleResult> ALLOutboundOrderSorting(FJSorting model) { + var result = new SimpleResult(); + if (!IsClickAllowed("1")) + { + // 鎻愮ず鐢ㄦ埛5绉掑唴宸茬偣鍑昏繃 + result.resultMsg = "鎮ㄥ凡鐐瑰嚮杩囷紝璇�绉掑悗鍐嶈瘯銆�; + result.resultCode = 1; + return result; + } + else + { + } // var db = new SqlHelper<object>().GetInstance(); using (var db = new SqlHelper<object>().GetInstance()) { try { - - + var start = ""; + var startloc = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE == model.cntr_code).First(); + if (startloc != null) + { + start = startloc.S_LOC_CODE; + } + else + { + result.resultMsg = $"{model.cntr_code}瀹瑰櫒鏈壘鍒拌揣浣嶄俊鎭�; + result.resultCode = 1; + return result; + } result.resultMsg = "鎴愬姛"; result.resultCode = 0; if (string.IsNullOrEmpty(model.arrival_no)) @@ -2134,28 +2365,37 @@ } LogHelper.Info($"S_OUT_TYPE{po.S_OUT_TYPE}"); + var gzra = db.Queryable<TN_GZ_SZ>().Where(a => a.C_ENABLE == "Y").First(); + var GZRQ = DateTime.Now.ToString("yyyyMMdd"); + if (gzra != null) + { + GZRQ = gzra.S_GZRQ.ToString("yyyyMMdd"); + } //鏍规嵁涓嶅悓鍑哄簱绫诲瀷 鍥炶皟sap if (po.S_OUT_TYPE == "鍐查攢鍑哄簱") { - result = await CXAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, model.start); + result = await CXAddOutboundOrder(GZRQ, db, model.MaterList, model.arrival_no, model.cntr_code, start); } else if (po.S_OUT_TYPE == "鍑哄簱")//鏅�鍑哄簱 { LogHelper.Info($"S_OUT_TYPE{po.S_OUT_TYPE}"); - result = await AddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, model.start); + result = await AddOutboundOrder(GZRQ, db, model.MaterList, model.arrival_no, model.cntr_code, start); } else if (po.S_OUT_TYPE == "璁″垝澶栧彂鏂欏嚭搴�) { - result = await jhwtlAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, model.start); + result = await jhwtlAddOutboundOrder(GZRQ, db, model.MaterList, model.arrival_no, model.cntr_code, start); } else if (po.S_OUT_TYPE == "鎴愭湰涓績鍑哄簱") { - result = await CBAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, model.start); + result = await CBAddOutboundOrder(GZRQ, db, model.MaterList, model.arrival_no, model.cntr_code, start); } - + //if (result.resultCode == 1) + //{ + // return result; + //} //閫氱敤鎺ュ彛 瀵瑰鍣ㄨ揣鍝佺殑鍒犲噺 鍜岀敓鎴愬洖搴撳崟 閮借鐢ㄧ殑鎺ュ彛 - result = await TYAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, model.IsHK, model.start, po.S_OUT_TYPE, model.cntr_type); + result = await AllTYAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, start, po.S_OUT_TYPE, model.cntr_type); if (result.resultCode == 1) { return result; @@ -2276,7 +2516,221 @@ } } - public static async Task<SimpleResult> TYAddOutboundOrder(SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, bool isHK, string start, string S_OUT_TYPE, string cntr_type) + /// <summary> + /// 鍒嗘嫞 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + internal static async Task<SimpleResult> OutboundOrderSorting(FJSorting model) + { + + var result = new SimpleResult(); + if (!IsClickAllowed("1")) + { + // 鎻愮ず鐢ㄦ埛5绉掑唴宸茬偣鍑昏繃 + result.resultMsg = "鎮ㄥ凡鐐瑰嚮杩囷紝璇�绉掑悗鍐嶈瘯銆�; + result.resultCode = 1; + return result; + } + else + { + + } + // var db = new SqlHelper<object>().GetInstance(); + + using (var db = new SqlHelper<object>().GetInstance()) + { + try + { + var start = ""; + var startloc = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE == model.cntr_code).First(); + if (startloc!=null) + { + start = startloc.S_LOC_CODE; + } + else + { + result.resultMsg = $"{model.cntr_code}瀹瑰櫒鏈壘鍒拌揣浣嶄俊鎭�; + result.resultCode = 1; + return result; + } + result.resultMsg = "鎴愬姛"; + result.resultCode = 0; + if (string.IsNullOrEmpty(model.arrival_no)) + { + result.resultMsg = "鍑哄簱鍗曞彿涓嶈兘涓虹┖"; + result.resultCode = 1; + return result; + } + + //浜哄伐鍒嗘嫞 瀹瑰櫒璐у搧琛ㄦ暟閲忋�鍒嗛厤閲忓崌闄�+ //鍑哄簱鍗曡鎯�+ var po = db.Queryable<TN_Outbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == model.arrival_no).First(); + if (po == null) + { + result.resultMsg = "鏈壘鍒版鍑哄簱鍗�; + result.resultCode = 1; + return result; + + } + LogHelper.Info($"S_OUT_TYPE{po.S_OUT_TYPE}"); + var gzra = db.Queryable<TN_GZ_SZ>().Where(a => a.C_ENABLE == "Y").First(); + var GZRQ = DateTime.Now.ToString("yyyyMMdd"); + if (gzra != null) + { + GZRQ = gzra.S_GZRQ.ToString("yyyyMMdd"); + } + #region 娉ㄩ噴sap 鍥犳晥鐜囪繃鎱�浜哄伐鍥炲埌 + //鏍规嵁涓嶅悓鍑哄簱绫诲瀷 鍥炶皟sap + if (po.S_OUT_TYPE == "鍐查攢鍑哄簱") + { + result = await CXAddOutboundOrder(GZRQ, db, model.MaterList, model.arrival_no, model.cntr_code, start); + } + else + if (po.S_OUT_TYPE == "鍑哄簱")//鏅�鍑哄簱 + { + LogHelper.Info($"S_OUT_TYPE{po.S_OUT_TYPE}"); + result = await AddOutboundOrder(GZRQ, db, model.MaterList, model.arrival_no, model.cntr_code, start); + } + else if (po.S_OUT_TYPE == "璁″垝澶栧彂鏂欏嚭搴�) + { + result = await jhwtlAddOutboundOrder(GZRQ, db, model.MaterList, model.arrival_no, model.cntr_code, start); + } + else if (po.S_OUT_TYPE == "鎴愭湰涓績鍑哄簱") + { + result = await CBAddOutboundOrder(GZRQ, db, model.MaterList, model.arrival_no, model.cntr_code, start); + } + #endregion + + + + //if (result.resultCode == 1) + //{ + // return result; + //} + //閫氱敤鎺ュ彛 瀵瑰鍣ㄨ揣鍝佺殑鍒犲噺 鍜岀敓鎴愬洖搴撳崟 閮借鐢ㄧ殑鎺ュ彛 + result = await TYAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, start, po.S_OUT_TYPE, model.cntr_type); + if (result.resultCode == 1) + { + return result; + } + #region 鍗囬檷閲�+ + bool adds = true; + + //var itemlist = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == model.cntr_code).ToList(); + if (model.MaterList.Count > 0) + { + var url = Settings.MoboxSeverUrl + "inventory/AddChange"; + //浠撳簱閲忚〃鍗囬噺 + var req = new AddChangeModel { op_type = 4 }; + //搴撳尯閲忚〃鍗囬噺 + var req2 = new AddChangeModel { op_type = 7 }; + var S_WH_CODE = ""; + var S_AREA_CODE = ""; + if (string.IsNullOrEmpty(po.S_WH_CODE)) + { + S_WH_CODE = util.Settings.WHCode; + } + else + { + S_WH_CODE = po.S_WH_CODE; + } + if (string.IsNullOrEmpty(po.S_AREA_CODE)) + { + S_AREA_CODE = util.Settings.AREACode; + } + else + { + S_AREA_CODE = po.S_AREA_CODE; + } + model.MaterList.ForEach(a => + { + LogHelper.Info($"濉厖鏁版嵁{util.Settings.WHCode}"); + LogHelper.Info($"鍑忎粨搴撻噺{util.Settings.AREACode}琛ㄦ暟鎹�浠撳簱{po.S_WH_CODE} 鐗╂枡缂栫爜{a.item_code} 鐗╂枡鍚嶇О 鏁伴噺{a.qty}"); + req.item_info.Add(new AddChangeModel.itemModel + { + wh_code = S_WH_CODE, + item_code = a.item_code, + item_name = "", + qty = a.qty + }); + LogHelper.Info($"鍑忓簱鍖洪噺琛ㄦ暟鎹�搴撳尯{po.S_AREA_CODE} 鐗╂枡缂栫爜{a.item_code} 鐗╂枡鍚嶇О 鏁伴噺{a.qty}"); + req2.item_info.Add(new AddChangeModel.itemModel + { + wh_code = S_WH_CODE, + area_code = S_AREA_CODE, + item_code = a.item_code, + item_name = "", + qty = a.qty + }); + }); + var reqData = JsonConvert.SerializeObject(req); + var AppKey = Settings.AppKey; + var AppSecret = Settings.AppSecret; + var ReqTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString(); + //var ReqTime = GetTimeStamp(DateTime.Now.AddHours(-8), 1, 2); + LogHelper.Info($"鍔犲瘑鍓�AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime}"); + var ReqVerify = GetMd5FromString(AppKey + AppSecret + ReqTime); + LogHelper.Info($"鍔犲瘑鍚�AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime} ReqVerify={ReqVerify} url={url} req={reqData}"); + var res = new HttpHelper().WebPost(url, reqData, "application/json", AppKey, ReqTime, ReqVerify); + if (!string.IsNullOrEmpty(res)) + { + LogHelper.Info($"mobox 浠撳簱闄嶉噺鎺ュ彛杩斿洖 {res}"); + var moboxres = JsonConvert.DeserializeObject<moboxres>(res); + if (moboxres.err_code != 0) + { + adds = false; + } + } + else + { + LogHelper.Info($"mobox 浠撳簱闄嶉噺鎺ュ彛杩斿洖涓虹┖"); + + } + var reqData2 = JsonConvert.SerializeObject(req2); + var ReqTime2 = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString(); + //var ReqTime2 = GetTimeStamp(DateTime.Now.AddHours(-8), 1, 2); + LogHelper.Info($"鍔犲瘑鍓�AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime2}"); + var ReqVerify2 = GetMd5FromString(AppKey + AppSecret + ReqTime2); + LogHelper.Info($"鍔犲瘑鍚�AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime2} ReqVerify={ReqVerify2} url={url} req={reqData2}"); + var res2 = new HttpHelper().WebPost(url, reqData2, "application/json", AppKey, ReqTime2, ReqVerify2); + if (!string.IsNullOrEmpty(res2)) + { + LogHelper.Info($"mobox 搴撳尯闄嶉噺鎺ュ彛杩斿洖 {res2}"); + var moboxres = JsonConvert.DeserializeObject<moboxres>(res); + if (moboxres.err_code != 0) + + { + adds = false; + } + } + else + { + LogHelper.Info($"mobox 搴撳尯闄嶉噺鎺ュ彛杩斿洖涓虹┖"); + + } + //if (adds) addOnShelves(po, model.cntr_code, 2); + + } + else LogHelper.Info($"鎵樼洏{model.cntr_code}鏃犻渶瑕佸崌闄嶉噺鐨勭墿鏂�); + db.CommitTran(); + #endregion + return result; + + } + catch (Exception e) + { + LogHelper.Info($"鎶ラ敊{e.Message}"); + result.resultMsg = e.Message; + db.RollbackTran(); + return result; + throw; + } + } + + } + public static async Task<SimpleResult> TYAddOutboundOrder(SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start, string S_OUT_TYPE, string cntr_type) { // var db = new SqlHelper<object>().GetInstance(); //using (var db = new SqlHelper<object>().GetInstance()) @@ -2294,9 +2748,10 @@ //鍥炲弬鐗╂枡淇℃伅 List<OutboundRecord> records = new List<OutboundRecord>(); - var pz = db.Queryable<MaterialVoucher>().Where(a => a.S_NO == arrival_no).First(); + var pzlist = db.Queryable<MaterialVoucher>().Where(a => a.S_NO == arrival_no).ToList(); foreach (var item in MaterList) { + var pz=pzlist.Where(s=>s.S_WLBM== item.item_code).FirstOrDefault(); // 鎻掑叆鍒版墭鐩樻槑缁嗚〃 var cntr = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr_code).ToList(); if (cntr.Count() > 0) @@ -2317,7 +2772,7 @@ else { db.Updateable(cir).UpdateColumns(it => new { it.F_QTY, it.S_CNTR_TYPE, it.F_ALLOC_QTY, it.T_MODIFY }).ExecuteCommand(); - //娣诲姞鍥炲簱浣滀笟 + } } else @@ -2348,73 +2803,28 @@ return result; } } - if (isHK) + LogHelper.Info($"鍒嗘嫞鎺ュ彛{cntr_code}"); + //if (isHK) + //{ + var locs = db.Queryable<WCSTask>().Where(a => a.S_TYPE.Contains("鍑哄簱") && a.S_CNTR_CODE == cntr_code && a.N_B_STATE == 3).OrderByDescending(s => s.T_END_TIME).First(); + if (locs != null) { - var locs = db.Queryable<WCSTask>().Where(a => a.S_TYPE.Contains("鍑哄簱") && a.S_CNTR_CODE == cntr_code && a.N_B_STATE == 3).OrderByDescending(s => s.T_END_TIME).First(); - if (locs != null) + LogHelper.Info($"鍒嗘嫞鎺ュ彛 杩涙潵浜唟cntr_code}"); + var cntr = db.Queryable<TN_Distribution_CNTR>().Where(a => a.S_DC_NO == locs.S_BS_NO).First(); + if (cntr != null) { - var cntr = db.Queryable<TN_Distribution_CNTR>().Where(a => a.S_DC_NO == locs.S_BS_NO).First(); - if (cntr != null) - { - cntr.S_SORT_TYPE = "宸插垎鎷�; - db.Updateable(cntr).UpdateColumns(it => new { it.S_SORT_TYPE }).ExecuteCommand(); - } - else - { - result.resultCode = 1; - result.resultMsg += $"浠诲姟{locs.S_CODE}鏉ユ簮鍙穥locs.S_BS_NO}鎵句笉鍒伴厤鐩樹俊鎭�; - return result; - } - Location endloc = new Location(); - var hwbd = db.Queryable<TN_Container_Code>().Where(a => a.S_CNTR_CODE == cntr_code).First(); - if (hwbd != null) - { - endloc = db.Queryable<Location>().Where(a => a.S_CODE == hwbd.S_LOC_CODE).First(); - } - else - { - result.resultCode = 3; - result.resultMsg = $"鎵樼洏鎵句笉鍒拌揣浣�; - return result; - } - - //var location = db.Queryable<Location>().Where(a => a.S_CODE == locs.S_LOC_CODE).First(); - var wmsTask = new WMSTask - { - S_CNTR_CODE = cntr_code, - S_CODE = WMSHelper.GenerateTaskNo(), - S_START_LOC = start, - S_START_AREA = startinfo.S_AREA_CODE, - S_START_WH = startinfo.S_WH_CODE, - - S_END_LOC = start, - S_END_AREA = startinfo.S_AREA_CODE, - S_END_WH = startinfo.S_AREA_CODE, - //S_END_LOC = locs?.S_START_LOC, - //S_END_AREA = locs?.S_START_AREA, - //S_END_WH = locs?.S_START_WH, - - N_TYPE = 1, - // S_TYPE = WMSTask.GetTypeStr(1), - S_TYPE = "鍥炲簱", - S_OP_DEF_CODE = "", - S_OP_DEF_NAME = "pda鍏ュ簱" - }; - if (WMSHelper.CreateWmsTask(wmsTask)) - { - LocationHelper.LockLoc(start, 1); - result.resultMsg = $"鍒涘缓浣滀笟鎴愬姛锛屼綔涓氬彿{wmsTask.S_CODE}"; - } + cntr.S_SORT_TYPE = "宸插垎鎷�; + db.Updateable(cntr).UpdateColumns(it => new { it.S_SORT_TYPE }).ExecuteCommand(); } else { result.resultCode = 1; - result.resultMsg += $"鎵句笉鍒板鍣ㄥ搴斾换鍔′俊鎭瘂cntr_code}"; + result.resultMsg += $"浠诲姟{locs.S_CODE}鏉ユ簮鍙穥locs.S_BS_NO}鎵句笉鍒伴厤鐩樹俊鎭�; return result; } - } - var sss = db.Insertable<OutboundRecord>(records).ExecuteCommand(); + + var sss = db.Insertable<OutboundRecord>(records).ExecuteCommand(); //db.CommitTran(); } @@ -2432,7 +2842,97 @@ } //} + public static async Task<SimpleResult> HkGets(HuiK model) { + var db = new SqlHelper<object>().GetInstance(); + + SimpleResult result = new SimpleResult(); + //var locs = db.Queryable<WCSTask>().Where(a => a.S_TYPE.Contains("鍑哄簱") && a.S_CNTR_CODE == model.cntr_code && a.N_B_STATE == 3).OrderByDescending(s => s.T_END_TIME).First(); + //if (locs != null) + //{ + //var cntr = db.Queryable<TN_Distribution_CNTR>().Where(a => a.S_DC_NO == locs.S_BS_NO).First(); + //if (cntr != null) + //{ + // cntr.S_SORT_TYPE = "宸插垎鎷�; + // db.Updateable(cntr).UpdateColumns(it => new { it.S_SORT_TYPE }).ExecuteCommand(); + //} + //else + //{ + // result.resultCode = 1; + // result.resultMsg += $"浠诲姟{locs.S_CODE}鏉ユ簮鍙穥locs.S_BS_NO}鎵句笉鍒伴厤鐩樹俊鎭�; + // return result; + //} + Location endloc = new Location(); + + LogHelper.Info($"鑾峰彇鎵樼洏淇℃伅{model.cntr_code}瀹瑰櫒"); + var hwbd = db.Queryable<TN_Container_Code>().Where(a => a.S_CNTR_CODE.Trim() == model.cntr_code).First(); + if (hwbd != null) + { + endloc = db.Queryable<Location>().Where(a => a.S_CODE == hwbd.S_LOC_CODE.Trim()).First(); + if (endloc?.N_LOCK_STATE != 0) + { + result.resultCode = 3; + result.resultMsg = $"缁堢偣搴撲綅宸查攣/涓嶅瓨鍦�; + return result; + } + + } + else + { + result.resultCode = 3; + result.resultMsg = $"{model.cntr_code}鎵樼洏鎵句笉鍒拌揣浣�; + return result; + } + var start = ""; + var startloc1 = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE == model.cntr_code).First(); + if (startloc1 != null) + { + start = startloc1.S_LOC_CODE; + } + else + { + result.resultMsg = $"{model.cntr_code}瀹瑰櫒鏈壘鍒拌揣浣嶄俊鎭�; + result.resultCode = 1; + return result; + } + var startloc = db.Queryable<Location>().Where(a => a.S_CODE ==start).First(); + //var location = db.Queryable<Location>().Where(a => a.S_CODE == locs.S_LOC_CODE).First(); + var wmsTask = new WMSTask + { + S_CNTR_CODE = model.cntr_code, + S_CODE = WMSHelper.GenerateTaskNo(), + S_START_LOC = startloc.S_CODE, + S_START_AREA = startloc.S_AREA_CODE, + S_START_WH = startloc.S_WH_CODE, + + //S_END_LOC = start, + //S_END_AREA = startinfo.S_AREA_CODE, + //S_END_WH = startinfo.S_AREA_CODE, + S_END_LOC = endloc?.S_CODE, + S_END_AREA = endloc?.S_AREA_CODE, + S_END_WH = endloc?.S_WH_CODE, + + N_TYPE = 1, + // S_TYPE = WMSTask.GetTypeStr(1), + S_TYPE = "鍥炲簱", + S_OP_DEF_CODE = "", + S_OP_DEF_NAME = "pda鍏ュ簱" + }; + if (WMSHelper.CreateWmsTask(wmsTask)) + { + LocationHelper.LockLoc(startloc.S_CODE, 2); + result.resultMsg = $"鍒涘缓浣滀笟鎴愬姛锛屼綔涓氬彿{wmsTask.S_CODE}"; + } + //} + //else + //{ + // result.resultCode = 1; + // result.resultMsg += $"鎵句笉鍒板鍣ㄥ搴斾换鍔′俊鎭瘂model.cntr_code}"; + // return result; + //} + return result; + + } /// <summary> @@ -2443,7 +2943,7 @@ /// <param name="cntr_code"></param> /// <param name="start"></param> /// <returns></returns> - public static async Task<SimpleResult> CBAddOutboundOrder(SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) + public static async Task<SimpleResult> CBAddOutboundOrder(string GZRQ,SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) { //using (var db = new SqlHelper<object>().GetInstance()) //{ @@ -2471,12 +2971,12 @@ //鍥炲弬鐗╂枡淇℃伅 List<CBcenterBackDto.HEADItem> iTEMs = new List<CBcenterBackDto.HEADItem>(); List<OutboundRecord> records = new List<OutboundRecord>(); - string GZRQ = ""; + //string GZRQ = ""; string PZZDRQ = ""; - if (po.BUDAT != null) - { - GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); - } + //if (po.BUDAT != null) + //{ + // GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); + //} if (po.BLDAT != null) { PZZDRQ = DateTime.Parse(po.BLDAT.ToString()).ToString("yyyyMMdd"); @@ -2491,7 +2991,7 @@ ckbitem.CBZX = po.S_CBZX; ckbitem.WLBH = item.item_code; ckbitem.SL = item.qty; - ckbitem.KCDD = podetail?.S_KCDD; + ckbitem.KCDD = podetail?.S_ERP_WH_CODE; ckbitem.LRZX = po.S_LRZX; ckbitem.ZZKM = po.S_ZZKM; ckbitem.GC = po.S_FACTORY; @@ -2531,17 +3031,7 @@ string xml = JsonConvert.DeserializeXmlNode(json, "ROOT").OuterXml; LogHelper.Info($"鎴愭湰涓績鍑哄簱xml鏁版嵁{xml}"); - //// 鍒涘缓 StringContent 骞舵寚瀹氬獟浣撶被鍨嬩负 "text/xml" - //HttpContent content = new StringContent(xml, Encoding.UTF8, "application/xml"); - //string url = Settings.WCSSeverUrl + "/api/WmsSap/cesReceiveXmlData"; - //string responseXml = ""; - //using (HttpClient client = new HttpClient()) - //{ - // // 鍙戦� POST 璇锋眰骞舵帴鏀跺搷搴�- // HttpResponseMessage responsess = await client.PostAsync(url, content); - // responseXml = await responsess.Content.ReadAsStringAsync(); - - //} + #region sap鍥炶皟 // 鍒涘缓Web Service浠g悊绫诲疄渚�@@ -2565,12 +3055,13 @@ XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(responses.Output.ToString()); JObject jsonObject = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeXmlNode(xmlDoc)); - var data = JsonConvert.DeserializeObject<ReturnWcBcak.Root>(jsonObject.ToString()); + EnsureArrayFormat(jsonObject, "ITEM", ""); + var data = JsonConvert.DeserializeObject<CbbReturnWcBcak.Root>(jsonObject.ToString()); //娣诲姞鍑瘉璁板綍琛�- result.resultMsg = data.ROOT.ITEM.MSGDESP; - result.resultCode = data.ROOT.ITEM.MSGCODE; - if (data.ROOT.ITEM.MSGCODE == 0) + result.resultMsg = data.ROOT.ITEM[0].MSGDESP; + result.resultCode = data.ROOT.ITEM[0].MSGCODE; + if (data.ROOT.ITEM[0].MSGCODE == 0) { foreach (var item in MaterList) @@ -2580,8 +3071,8 @@ materialVoucher.S_TYPE = po.S_OUT_TYPE; materialVoucher.S_WLBM = item.item_code; materialVoucher.S_WLH = item.N_ROW_NO; - materialVoucher.S_WLPZBH = data.ROOT.ITEM?.WLPZH; - materialVoucher.S_WLPZND = data.ROOT.ITEM?.WLPZND; + materialVoucher.S_WLPZBH = data.ROOT.ITEM?[0].WLPZBH; + //materialVoucher.S_WLPZND = data.ROOT.ITEM?.WLPZND; materialVoucher.S_WH_CODE = po.S_WH_CODE; materialVoucher.S_AREA_CODE = po.S_AREA_CODE; materialVoucher.F_QTY = item.qty; @@ -2590,13 +3081,6 @@ materialVoucher.UNAME = po.UNAME; db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand(); } - //MaterialVoucher materialVoucher = new MaterialVoucher(); - //materialVoucher.S_NO = po.S_NO; - //materialVoucher.S_TYPE = po.S_OUT_TYPE; - //materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZBH; - //materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND; - //materialVoucher.STATUS = 0; - //db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand(); } #endregion @@ -2622,7 +3106,7 @@ /// <param name="cntr_code"></param> /// <param name="start"></param> /// <returns></returns> - public static async Task<SimpleResult> jhwtlAddOutboundOrder(SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) + public static async Task<SimpleResult> jhwtlAddOutboundOrder(string GZRQ,SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) { //using (var db = new SqlHelper<object>().GetInstance()) //{ @@ -2640,12 +3124,12 @@ DateTime dateTime; DateTime dateTime1; - string GZRQ = ""; + //string GZRQ = ""; string PZZDRQ = ""; - if (po.BUDAT != null) - { - GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); - } + //if (po.BUDAT != null) + //{ + // GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); + //} if (po.BLDAT != null) { PZZDRQ = DateTime.Parse(po.BLDAT.ToString()).ToString("yyyyMMdd"); @@ -2690,7 +3174,7 @@ ckbitem.DDH = podetail?.S_DDH; //ckbitem.DDHXM = (podetail?.N_ROW_NO); ckbitem.WBS = podetail?.S_WBS; - ckbitem.KCDD = podetail?.S_KCDD; + ckbitem.KCDD = podetail?.S_ERP_WH_CODE; ckbitem.PC = podetail?.S_BATCH_NO; JHWBackDto.ITEM1 listitem1 = new JHWBackDto.ITEM1(); //string[] xlhValues = item.S_SERIAL_NO.Split(','); @@ -2814,7 +3298,7 @@ /// <param name="cntr_code"></param> /// <param name="start"></param> /// <returns></returns> - public static async Task<SimpleResult> CXAddOutboundOrder(SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) + public static async Task<SimpleResult> CXAddOutboundOrder(string GZRQ,SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) { // var db = new SqlHelper<object>().GetInstance(); @@ -2824,15 +3308,15 @@ try { //搴撲綅淇℃伅 - var startinfo = db.Queryable<Location>().Where(it => it.S_CODE == start).First(); + //var startinfo = db.Queryable<Location>().Where(it => it.S_CODE == start).First(); //鍑哄簱鍗曡鎯� var po = db.Queryable<TN_Outbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == arrival_no).First(); - string GZRQ = ""; - if (po.BUDAT != null) - { - GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); - } + //string GZRQ = ""; + //if (po.BUDAT != null) + //{ + // GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); + //} //鏉ユ簮鍐查攢鍑瘉瀵瑰簲鐨勭墿鏂欏嚟璇佷俊鎭� //var poIn = db.Queryable<TN_Inbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == po.S_BS_NO).First(); @@ -2865,11 +3349,6 @@ hEAD.GZRQ = GZRQ; hEAD.SRSJ = DateTime.Now.ToString("yyyyMMdd"); - //hEAD.WLPZ = porecord.Where(s => s.S_WLBM == item.item_code && s.S_WLH == item.N_ROW_NO).First()?.S_WLPZBH; - //hEAD.WLPZNF = porecord.Where(s=>s.S_WLBM==item.item_code&&s.S_WLH==item.N_ROW_NO).First()?.S_WLPZND; - - //hEAD.WLPZ = porecord.First()?.S_WLPZBH; - //hEAD.WLPZNF = porecord.First()?.S_WLPZND; hEAD.WLPZ = porecord.FirstOrDefault()?.S_WLPZBH; hEAD.WLPZNF = porecord.FirstOrDefault()?.S_WLPZND; @@ -2990,7 +3469,7 @@ /// <param name="cntr_code"></param> /// <param name="start"></param> /// <returns></returns> - public static async Task<SimpleResult> AddOutboundOrder(SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) + public static async Task<SimpleResult> AddOutboundOrder(string GZRQ,SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) { //using (var db = new SqlHelper<object>().GetInstance()) //{ @@ -3003,7 +3482,7 @@ var startinfo = db.Queryable<Location>().Where(it => it.S_CODE == start).First(); //鍑哄簱鍗曡鎯� var po = db.Queryable<TN_Outbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == arrival_no).First(); - string GZRQ = ""; + //string GZRQ = ""; string PZZDRQ = ""; //if (po.Details[0].S_CJRQ != null) //{ @@ -3023,7 +3502,7 @@ KEY = po.S_NO, ZYWLX = "2", PZRQ = DateTime.Now.ToString("yyyyMMdd"), - GZRQ = DateTime.Now.ToString("yyyyMMdd"), // 鍋囪鏃ユ湡鏍煎紡涓�骞�鏈�鏃� + GZRQ = GZRQ, // 鍋囪鏃ユ湡鏍煎紡涓�骞�鏈�鏃� GZRY = po.S_CREATOR_NAME, ITEM = new List<CkBcakDto.ITEM> { @@ -3050,7 +3529,7 @@ ckbitem.YLBH = podetail?.S_YLBH; ckbitem.YLXMH = podetail?.S_YLXMH; ckbitem.GC = po.S_FACTORY; - ckbitem.KCDD = podetail?.S_KCDD; + ckbitem.KCDD = podetail?.S_ERP_WH_CODE; CkBcakDto.ITEM1 listitem1 = new CkBcakDto.ITEM1(); //var CntrItemRels = db.Queryable<CntrItemRel>().Where(a => a.S_ITEM_CODE == item.item_code&&a.N_ROW_NO==item.N_ROW_NO).ToList(); @@ -3229,7 +3708,7 @@ #region 1.鏌ョ湅鏄惁鏈夌浉鍚岀墿鏂欐壒娆$殑淇℃伅锛屽鏋滄湁瑕佺疮鍔狅紝涓嶅悓鎵规鐨勫彲浠ュ垎寮�- var cir = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr.S_CODE && a.S_ITEM_CODE == item.item_code && a.S_BATCH_NO == item.S_BATCH_NO && a.N_BS_ROW_NO == item.N_ROW_NO && a.S_BS_NO == item.arrival_no).First(); + var cir = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr.S_CODE && a.S_ITEM_CODE == item.item_code && a.N_BS_ROW_NO == item.N_ROW_NO && a.S_BS_NO == item.arrival_no).First(); if (cir != null) { cir.F_QTY += item.qty; @@ -3239,7 +3718,7 @@ else { //2.鎻掑叆鏂扮殑瀹瑰櫒鐗╂枡淇℃伅锛堝鍣ㄥ彿涓嶅彉S_SERIAL_NO = item.S_SERIAL_NO,锛�- cir = new CntrItemRel { S_CNTR_TYPE = S_CNTR_TYPE, S_CNTR_CODE = cntr.S_CODE.Trim(), S_UOM = info.S_UOM, S_BATCH_NO = item.S_BATCH_NO, N_BS_ROW_NO = item.N_ROW_NO, F_QTY = item.qty, S_ITEM_CODE = item.item_code, S_BS_NO = item.arrival_no }; + cir = new CntrItemRel { S_CNTR_TYPE = S_CNTR_TYPE, S_CNTR_CODE = cntr.S_CODE.Trim(), S_UOM = info.S_UOM, N_BS_ROW_NO = item.N_ROW_NO, F_QTY = item.qty, S_ITEM_CODE = item.item_code, S_BS_NO = item.arrival_no }; db.Insertable<CntrItemRel>(cir).ExecuteCommand(); } var count = db.Queryable<CntrItemRel>().Count(a => a.S_CNTR_CODE == cntr.S_CODE); @@ -3486,6 +3965,7 @@ S_YLXMH = a.YLHXM, S_BATCH_NO = "", S_ERP_WH_CODE = a.KCDD, + S_ZJWLTH = a.ZJWLTH, S_ZJWLMS = a.ZJWLMS, S_ZHFHBS = a.ZHFHBS, @@ -3767,7 +4247,7 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - internal static WeiLiResult Out_Order_Inss(string S_NO) + internal static WeiLiResult Out_Order_Inss(string S_NO,int N_PRIORITY) { var result = new WeiLiResult(); // var db = new SqlHelper<object>().GetInstance(); @@ -3793,7 +4273,7 @@ else { //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 }; + var po1 = new TN_Outbound_Order { S_NO = WMSHelper.GenerateShippNo(), N_PRIORITY=N_PRIORITY, 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>(); var list = po.Details.Where(s => s.F_QTY > s.F_ACC_D_QTY&&s.S_ERP_WH_CODE=="4004").Select(s => s.S_ITEM_CODE).Distinct().ToArray(); @@ -4248,7 +4728,150 @@ } + public static async Task<SimpleResult> AddCenter( SqlSugarClient db, List<TN_Inbound_Detail> MaterList) + { + //using (var db = new SqlHelper<object>().GetInstance()) + //{ + // var db = new SqlHelper<object>().GetInstance(); + var result = new SimpleResult(); + try + { + #region MyRegion + + List<TN_Center_Inbound_Detail> tN_Center_Inbound_Details = new List<TN_Center_Inbound_Detail>(); + foreach (var item in MaterList) + { + bool idadd = true; + // var cir2 = db.Queryable<CGRels>().Where(a => a.S_ITEM_CODE == item.S_ITEM_CODE && a.S_CNTR_TYPE == "鍗婃墭").Select(s => s.S_CNTR_CODE).Distinct().ToArray(); + var S_CNTR_CODE = ""; + + + + var lcr = db.Queryable<LocCntrRel>() + .InnerJoin<CGRels>((l, c) => l.S_CNTR_CODE == c.S_CNTR_CODE) + .Where((l, c) => c.S_ITEM_CODE == item.S_ITEM_CODE && c.S_CNTR_TYPE == "鍗婃墭") + .OrderByDescending((l, c) => l.T_CREATE) + .Select((l, c) => l).ToList() + .FirstOrDefault(); + + S_CNTR_CODE = lcr.S_CNTR_CODE; + if (lcr != null) + { + //璧峰搴撲綅 + var startloc = db.Queryable<Location>().Where(it => it.S_CODE == lcr.S_LOC_CODE).First(); + var wsc = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == S_CNTR_CODE && it.S_TYPE.Contains("鍑哄簱") && it.N_B_STATE < 3).First(); + if (wsc != null) + { + item.N_B_STATE = 2; + db.Updateable(item).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); + } + else + { + if (startloc != null)//&& + { + //缁堢偣璐т綅 + var endloc = db.Queryable<Location>().Where(it => it.S_AREA_CODE == "QYQXHQ" && it.N_LOCK_STATE == 0 && it.N_CURRENT_NUM == 0).First(); + + // var endloc = db.Queryable<Location>().Where(it => it.S_CODE == item.S_END_LOC).First(); + if (endloc != null) + { + var optask = new WMSTask + { + S_CODE = WMSHelper.GenerateTaskNo(), + S_START_LOC = startloc.S_CODE, + S_START_AREA = startloc.S_AREA_CODE, + S_START_WH = startloc.S_WH_CODE, + S_END_LOC = endloc.S_CODE, + S_END_AREA = endloc.S_AREA_CODE, + S_END_WH = endloc.S_WH_CODE, + N_PRIORITY = 1, + S_TYPE = "鍗婃墭鍑哄簱", + N_TYPE = 2, + N_B_STATE = 0, + S_BS_NO = "", + S_CNTR_CODE = S_CNTR_CODE, + S_OP_DEF_NAME = item.S_BS_TYPE + }; + var res = db.Insertable(optask).ExecuteCommand() > 0; + if (res) + { + startloc.N_LOCK_STATE = 2; + startloc.S_LOCK_STATE = "鍑哄簱閿�; + db.Updateable(startloc).UpdateColumns(it => new { it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand(); + var models = db.Queryable<Location>().Where(a => a.S_CODE == endloc.S_CODE).First(); + // if (model != null && model.S_LOCK_STATE.Trim() == "鏃�) + if (models != null && models.N_LOCK_STATE == 0) + { + models.N_LOCK_STATE = 1; + models.S_LOCK_STATE = Location.GetLockStateStr(1); + res = db.Updateable(models).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand() > 0; + } + item.N_B_STATE = 2; + db.Updateable(item).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); + + + } + } + else + { + idadd = false; + LogHelper.Info($" 搴撳尯AGVXHQ鏃犵┖璐т綅"); + + } + } + else + { + idadd = false; + LogHelper.Info($" 搴撳尯鏃犺揣浣�); + } + } + + } + else + { + idadd = false; + LogHelper.Info($"鐗╂枡{item.S_ITEM_CODE}鏈壘鍒板鍣ㄥ搴旂殑璐т綅淇℃伅锛岃鑱旂郴浜哄伐缁戝畾鍏崇郴"); + } + if (!idadd) + { + TN_Center_Inbound_Detail tN_Center_Inbound_Detail = new TN_Center_Inbound_Detail(); + tN_Center_Inbound_Detail.S_IO_NO = item.S_IO_NO; + tN_Center_Inbound_Detail.N_ROW_NO = item.N_ROW_NO; + tN_Center_Inbound_Detail.S_ITEM_CODE = item.S_ITEM_CODE; + tN_Center_Inbound_Detail.F_QTY = item.F_QTY; + tN_Center_Inbound_Detail.S_ITEM_STATE = item.S_ITEM_STATE; + tN_Center_Inbound_Detail.S_ITEM_NAME = item.S_ITEM_NAME; + tN_Center_Inbound_Detail.F_ACC_B_QTY = item.F_ACC_B_QTY; + tN_Center_Inbound_Detail.S_KCDD = item.S_KCDD; + tN_Center_Inbound_Detail.S_UOM = item.S_UOM;//璁¢噺鍗曚綅 + tN_Center_Inbound_Detail.S_BATCH_NO = item.S_BATCH_NO; + tN_Center_Inbound_Detail.S_CGPZH = item.S_CGPZH; + tN_Center_Inbound_Detail.S_CGPZXMBH = item.S_CGPZXMBH; + tN_Center_Inbound_Detail.S_CKPZKJND = item.S_CKPZKJND; + tN_Center_Inbound_Detail.S_CKPZXM = item.S_CKPZXM; + tN_Center_Inbound_Detail.S_CXWLPZBH = item.S_CXWLPZBH; + tN_Center_Inbound_Detail.S_HWSJJYZT = item.S_HWSJJYZT; + tN_Center_Inbound_Detail.S_JYPBH = item.S_JYPBH; + tN_Center_Inbound_Detail.S_KJPZSSRQ = item.S_KJPZSSRQ; + tN_Center_Inbound_Detail.S_KJPZSRSJ = item.S_KJPZSRSJ; + tN_Center_Inbound_Details.Add(tN_Center_Inbound_Detail); + + } + + } + db.Insertable(tN_Center_Inbound_Details).ExecuteCommand(); + #endregion + } + catch (Exception e) + { + + throw ; + } + + return result; + + } /// <summary> /// 鍐呴噰鍏ュ簱鍥炶皟 @@ -4269,6 +4892,11 @@ db.BeginTran(); var po = db.Queryable<TN_Inbound_Order>().Includes(p => p.Details).Where(a => a.S_NO == model.S_NO).First(); + + + + + LogHelper.Info($"杩涙潵浜�"); #region MyRegion if (po.Details.Count > 0) @@ -4358,6 +4986,18 @@ w.S_ITEM_CODE == d.S_ITEM_CODE && w.N_ROW_NO == d.N_ROW_NO)).OrderBy(s => s.N_ROW_NO) .ToList(); + + + + var gzra = db.Queryable<TN_GZ_SZ>().Where(a => a.C_ENABLE == "Y").First(); + var GZRQ = DateTime.Now.ToString("yyyyMMdd"); + if (gzra != null) + { + GZRQ = gzra.S_GZRQ.ToString("yyyyMMdd"); + } + #region MyRegion + + if (po.S_IN_TYPE == "鍐呴噰鍏ュ簱") { List<NcRkDto.ITEM> listitem = new List<NcRkDto.ITEM>(); @@ -4396,10 +5036,10 @@ tN_Inbound_Details.Add(item); } - string combinedIds= string.Join(",", po.Details.Select(x => x.N_ROW_NO)); + string combinedIds = string.Join(",", po.Details.Select(x => x.N_ROW_NO)); var KEY = WCSHelper.Generate13DigitIds(); - var s_key= db.Queryable<TN_InBounder_Sh>().Where(a => a.S_NO == model.S_NO&&a.N_ROW_NO == combinedIds).First(); - if (s_key!=null) + var s_key = db.Queryable<TN_InBounder_Sh>().Where(a => a.S_NO == model.S_NO && a.N_ROW_NO == combinedIds).First(); + if (s_key != null) { KEY = s_key.S_KEY; } @@ -4413,7 +5053,7 @@ { KEY = KEY, - GZRQ = DateTime.Now.ToString("yyyyMMdd"), + GZRQ = GZRQ, GZRY = model.GZRY,//GenerateTaskNo WLPZBH = po.S_NO, WLPZND = po.S_WLPZND @@ -4429,7 +5069,7 @@ var json = JsonConvert.SerializeObject(roots.ROOT); string xml = JsonConvert.DeserializeXmlNode(json, "ROOT").OuterXml; - + LogHelper.Info($"鍐呴噰鏀惰揣xml鏁版嵁{xml}"); #region MyRegion @@ -4454,9 +5094,6 @@ // 灏�XmlDocument 杞崲涓�JSON 瀛楃涓� //JObject jsonObject = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeXmlNode(xmlDoc)); #endregion - - - #region sap鍥炶皟 @@ -4489,6 +5126,11 @@ result.resultCode = data.ROOT.ITEM.MSGCODE; if (data.ROOT.ITEM.MSGCODE == 0) { + if (tN_Inbound_Details.Count() > 0) + { + db.Updateable(tN_Inbound_Details).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); + } + await AddCenter(db, po.Details); List<MaterialVoucher> materials = new List<MaterialVoucher>(); foreach (var item in model.Wlist) @@ -4527,12 +5169,12 @@ { DateTime dateTime; DateTime dateTime1; - string GZRQ = ""; + //string GZRQ = ""; string PZZDRQ = ""; - if (po.BUDAT != null) - { - GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); - } + //if (po.BUDAT != null) + //{ + // GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); + //} if (po.BLDAT != null) { PZZDRQ = DateTime.Parse(po.BLDAT.ToString()).ToString("yyyyMMdd"); @@ -4540,7 +5182,7 @@ } string combinedIds = string.Join(",", po.Details.Select(x => x.N_ROW_NO)); var KEY = WCSHelper.Generate13DigitIds(); - var s_key = db.Queryable<TN_InBounder_Sh>().Where(a => a.S_NO == model.S_NO && a.N_ROW_NO == combinedIds).First(); + var s_key = db.Queryable<TN_InBounder_Sh>().Where(a => a.S_NO == model.S_NO && a.N_ROW_NO == combinedIds).ToList().FirstOrDefault(); if (s_key != null) { KEY = s_key.S_KEY; @@ -4566,12 +5208,12 @@ } }; - + //鍥炲弬鐗╂枡淇℃伅 List<JHWBackDto.ITEM> iTEMs = new List<JHWBackDto.ITEM>(); foreach (var item in po.Details) { - // var podetail = po.Details.Where(s => s.S_ITEM_CODE == item.S_ITEM_CODE).FirstOrDefault(); + // var podetail = po.Details.Where(s => s.S_ITEM_CODE == item.S_ITEM_CODE).FirstOrDefault(); JHWBackDto.ITEM ckbitem = new JHWBackDto.ITEM(); ckbitem.WLBH = item.S_ITEM_CODE; ckbitem.GC = po.S_FACTORY; @@ -4657,6 +5299,11 @@ result.resultCode = data.ROOT.ITEM.MSGCODE; if (data.ROOT.ITEM.MSGCODE == 0) { + if (tN_Inbound_Details.Count() > 0) + { + db.Updateable(tN_Inbound_Details).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); + } + await AddCenter(db, po.Details); List<MaterialVoucher> materials = new List<MaterialVoucher>(); foreach (var item in model.Wlist) { @@ -4745,7 +5392,7 @@ HEAD = new WcRkBc.HEAD { KEY = KEY, - GZRQ = DateTime.Now.ToString("yyyyMMdd"), + GZRQ = GZRQ, GZRY = model.GZRY, GC = po.S_FACTORY }, @@ -4820,6 +5467,11 @@ result.resultCode = data.ROOT.ITEM.MSGCODE; if (data.ROOT.ITEM.MSGCODE == 0) { + if (tN_Inbound_Details.Count() > 0) + { + db.Updateable(tN_Inbound_Details).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); + } + await AddCenter(db, po.Details); ; List<MaterialVoucher> materials = new List<MaterialVoucher>(); foreach (var item in model.Wlist) @@ -4858,12 +5510,12 @@ { var materpz = db.Queryable<TN_Inbound_Order>().Where(s => s.S_NO == po.S_NO).First(); - string GZRQ = ""; + //string GZRQ = ""; LogHelper.Info($"鍐查攢鍏ュ簱鍏ュ簱{po.BUDAT}"); - if (po.BUDAT != null) - { - GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); - } + //if (po.BUDAT != null) + //{ + // GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); + //} //鍑哄簱鍥炶皟鍏ュ弬 CXCkBackDto.Root roots = new CXCkBackDto.Root @@ -4950,14 +5602,15 @@ //娣诲姞鍑瘉璁板綍琛� if (data != null) { + List<TN_Inbound_Detail> tN_Inbound_Detailcx = new List<TN_Inbound_Detail>(); List<MaterialVoucher> materiallist = new List<MaterialVoucher>(); foreach (var item in data.ROOT.ITEM) { if (item.MSGCODE == 0) { - var onr = po.Details.Where(s => s.N_ROW_NO == item.WLPZHXM).FirstOrDefault(); - + onr.N_B_STATE = 1; + tN_Inbound_Detailcx.Add(onr); MaterialVoucher materialVoucher = new MaterialVoucher(); materialVoucher.S_NO = po.S_NO; materialVoucher.S_TYPE = po.S_IN_TYPE; @@ -4983,6 +5636,11 @@ } + } + if (tN_Inbound_Detailcx.Count() > 0) + { + db.Updateable(tN_Inbound_Detailcx).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); + await AddCenter(db, tN_Inbound_Detailcx); } if (materiallist.Count() > 0) { @@ -5020,12 +5678,8 @@ //} //db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand(); } - - if (tN_Inbound_Details.Count() > 0) - { - db.Updateable(tN_Inbound_Details).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); - } - var newpodetai= db.Queryable<TN_Inbound_Detail>().Where(a => a.S_IO_NO == model.S_NO).ToList(); + #endregion + var newpodetai = db.Queryable<TN_Inbound_Detail>().Where(a => a.S_IO_NO == model.S_NO).ToList(); int cout = newpodetai.Where(s => s.N_B_STATE != 1).Count(); if (cout==0) { @@ -5073,11 +5727,16 @@ List<OutboundRecord> records = new List<OutboundRecord>(); foreach (var item in po) { + var pz = pzs.Where(s => s.S_WLBM == item.S_ITEM_CODE && s.S_WLH == item.N_BS_ROW_NO).ToList().FirstOrDefault(); - + var S_TYPE = "鍥炲簱"; + if (pz!=null) + { + S_TYPE = pz.S_TYPE; + } OutboundRecord outboundRecord = new OutboundRecord(); outboundRecord.S_NO = item.S_BS_NO; - outboundRecord.S_TYPE = pz?.S_TYPE; + outboundRecord.S_TYPE = S_TYPE; outboundRecord.S_WLPZBH = pz?.S_WLBM; outboundRecord.S_WLPZND = pz?.S_WLPZND; outboundRecord.S_WLBM = item.S_ITEM_CODE; -- Gitblit v1.9.1