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 | 952 +++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 785 insertions(+), 167 deletions(-) diff --git a/api/WmsSpaHelper.cs b/api/WmsSpaHelper.cs index 05cf173..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 { @@ -1929,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) { @@ -1941,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; } @@ -2004,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 = "鍑哄簱绌烘墭鐩�, @@ -2118,6 +2119,403 @@ } } + 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> 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)) + { + 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"); + } + //鏍规嵁涓嶅悓鍑哄簱绫诲瀷 鍥炶皟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); + } + //if (result.resultCode == 1) + //{ + // return result; + //} + //閫氱敤鎺ュ彛 瀵瑰鍣ㄨ揣鍝佺殑鍒犲噺 鍜岀敓鎴愬洖搴撳崟 閮借鐢ㄧ殑鎺ュ彛 + 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; + } + #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; + } + } + + } /// <summary> /// 鍒嗘嫞 /// </summary> @@ -2127,6 +2525,17 @@ { 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()) @@ -2141,7 +2550,7 @@ } else { - result.resultMsg = "鍑哄簱鍗曞彿涓嶈兘涓虹┖"; + result.resultMsg = $"{model.cntr_code}瀹瑰櫒鏈壘鍒拌揣浣嶄俊鎭�; result.resultCode = 1; return result; } @@ -2165,28 +2574,42 @@ } 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(db, model.MaterList, model.arrival_no, model.cntr_code, 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, 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, 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, start); + 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, model.IsHK, start, po.S_OUT_TYPE, model.cntr_type); + 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; @@ -2307,7 +2730,7 @@ } } - 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) + 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()) @@ -2380,82 +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(); - - 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, 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(); } @@ -2473,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> @@ -2484,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()) //{ @@ -2512,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"); @@ -2532,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; @@ -2572,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悊绫诲疄渚�@@ -2606,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) @@ -2621,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; @@ -2631,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 @@ -2663,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()) //{ @@ -2681,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"); @@ -2731,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(','); @@ -2855,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(); @@ -2865,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(); @@ -2906,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; @@ -3031,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()) //{ @@ -3044,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) //{ @@ -3064,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> { @@ -3091,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(); @@ -3270,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; @@ -3280,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); @@ -3527,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, @@ -3808,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(); @@ -3834,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(); @@ -4289,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> /// 鍐呴噰鍏ュ簱鍥炶皟 @@ -4310,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) @@ -4399,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>(); @@ -4437,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; } @@ -4454,7 +5053,7 @@ { KEY = KEY, - GZRQ = DateTime.Now.ToString("yyyyMMdd"), + GZRQ = GZRQ, GZRY = model.GZRY,//GenerateTaskNo WLPZBH = po.S_NO, WLPZND = po.S_WLPZND @@ -4470,7 +5069,7 @@ var json = JsonConvert.SerializeObject(roots.ROOT); string xml = JsonConvert.DeserializeXmlNode(json, "ROOT").OuterXml; - + LogHelper.Info($"鍐呴噰鏀惰揣xml鏁版嵁{xml}"); #region MyRegion @@ -4495,9 +5094,6 @@ // 灏�XmlDocument 杞崲涓�JSON 瀛楃涓� //JObject jsonObject = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeXmlNode(xmlDoc)); #endregion - - - #region sap鍥炶皟 @@ -4530,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) @@ -4568,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"); @@ -4607,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; @@ -4698,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) { @@ -4786,7 +5392,7 @@ HEAD = new WcRkBc.HEAD { KEY = KEY, - GZRQ = DateTime.Now.ToString("yyyyMMdd"), + GZRQ = GZRQ, GZRY = model.GZRY, GC = po.S_FACTORY }, @@ -4861,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) @@ -4899,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 @@ -4991,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; @@ -5024,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) { @@ -5061,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) { @@ -5114,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