From d93440432c13c75f798427be327cde02cfe7f301 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期日, 20 七月 2025 17:00:29 +0800 Subject: [PATCH] 增加无称重的指定货位入库流程,添加指定卸货位解绑接口备用 --- api/ApiHelper.cs | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 150 insertions(+), 2 deletions(-) diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs index 1d27797..6a07a60 100644 --- a/api/ApiHelper.cs +++ b/api/ApiHelper.cs @@ -39,7 +39,7 @@ .First(); if (startLoc == null) { - return BuildSimpleResult(1, $"璧风偣浣嶇疆{model.StartLoc}涓嶅瓨鍦ㄦ垨涓嶆弧瓒宠姹傦細(1)娌℃湁閿佺姸鎬�(2)灞炰簬鍙栨斁璐у尯"); + return BuildSimpleResult(1, $"璧风偣浣嶇疆{model.StartLoc}涓嶅瓨鍦ㄦ垨涓嶆弧瓒宠姹傦細(1)娌℃湁閿佺姸鎬�(2)灞炰簬鍙栬揣鍖�); } //var locCntrRelOld = db.Queryable<TN_Loc_Container>() @@ -612,7 +612,7 @@ try { // 璧风偣浣嶇疆锛氬彇鏀捐揣鍖猴紙鏈夎揣鐗┿�娌℃湁閿併�宸插惎鐢級 - var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 1 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && startAreas.Contains(a.S_AREA_CODE)); + var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && startAreas.Contains(a.S_AREA_CODE)); if (startLoc == null) { return BuildSimpleResult(2, $"璧风偣浣嶇疆 {model.startLoc} 涓嶇鍚堝洖搴撴潯浠�); } @@ -665,6 +665,154 @@ } /// <summary> + /// 鎸囧畾璐т綅鍏ュ簱 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + internal static SimpleResult InboundLoc(InboundLocInfo model) { + var taskName = TaskName.鎸囧畾璐т綅鍏ュ簱; + var db = new SqlHelper<object>().GetInstance(); + + var startAreas = Settings.Areas[AreaIndex.Q鍙栬揣鍖篯; + var endAreas = Settings.Areas[AreaIndex.H璐ф灦鍖篯; + + try { + // 璧风偣浣嶇疆锛氬彇鏀捐揣鍖猴紙鏈夎揣鐗┿�娌℃湁閿併�宸插惎鐢級 + var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && startAreas.Contains(a.S_AREA_CODE)); + if (startLoc == null) { + return BuildSimpleResult(1, $"璧风偣浣嶇疆{model.startLoc}涓嶅瓨鍦ㄦ垨涓嶆弧瓒宠姹傦細(1)娌℃湁閿佺姸鎬�(2)灞炰簬鍙栨斁璐у尯"); + } + + //var locCntrRel = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.startLoc); + //if (locCntrRel == null) { + // return BuildSimpleResult(3, $"璧风偣浣嶇疆 {model.startLoc} 娌℃湁缁戝畾瀹瑰櫒锛屾棤鍙洖搴撶殑鐗╂枡"); + //} + + var cntId = GenerateNo("瀹瑰櫒鍙�, "CN"); + //var cgId = GenerateNo("鐗╂枡鍙�, "CG"); + var cgId = string.IsNullOrEmpty(model.ItemCode) ? GenerateNo("鐗╂枡鍙�, "CG") : model.ItemCode; + + // 棣栨鍏ュ簱锛氱粦瀹氫俊鎭紝鍏堝皢璧风偣浣嶇疆涓庡鍣ㄧ粦瀹氾紝瀹瑰櫒涓庣墿鏂欑粦瀹�+ var locCntrRel = new TN_Loc_Container() { + S_LOC_CODE = startLoc.S_CODE, + S_CNTR_CODE = cntId, + N_LOCK_STATE = string.IsNullOrEmpty(model.ItemCode) ? 0 : 1, + }; + + var cgDetail = new TN_CG_Detail() { + S_ITEM_CODE = cgId, + S_CNTR_CODE = cntId, + //S_ITEM_NAME = model.ItemName, + S_LOC_CODE = startLoc.S_CODE, // ADD锛氳ˉ鍏呴拡瀵筆DA鍒嗘嫞 + N_LOCK_STATE = locCntrRel.N_LOCK_STATE, + }; + + startLoc.N_CURRENT_NUM = 1; + + // 缁堢偣浣嶇疆锛氳揣鏋讹紙娌℃湁璐х墿锛屾病鏈夐攣锛�+ var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.endLoc && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && endAreas.Contains(a.S_AREA_CODE)); + if (endLoc == null) { + return BuildSimpleResult(4, $"缁堢偣浣嶇疆 {model.endLoc} 涓嶅叿澶囨斁璐ф潯浠�); + } + + //var cntId = locCntrRel.S_CNTR_CODE; + var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); + LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+ + using (var tran = db.Ado.UseTran()) { + if (db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { + it.N_LOCK_STATE, + it.S_LOCK_STATE, + it.S_LOCK_OP, + it.T_MODIFY + }).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildSimpleResult(500, + $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"); + } + + if (db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { + it.N_LOCK_STATE, + it.S_LOCK_STATE, + it.S_LOCK_OP, + it.T_MODIFY + }).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildSimpleResult(500, + $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + } + + if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildSimpleResult(500, + $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + } + + tran.CommitTran(); + return BuildSimpleResult(0, + $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + } + } + catch (Exception ex) { + return BuildSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); + } + } + + /// <summary> + /// 鎸囧畾璐т綅鍏ュ簱 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + internal static SimpleResult UnbindLoc(UnbindLocInfo model) { + var db = new SqlHelper<object>().GetInstance(); + + var startAreas = Settings.Areas[AreaIndex.X鍗歌揣鍖篯; + //var endAreas = Settings.Areas[AreaIndex.H璐ф灦鍖篯; + + try { + // 璧风偣浣嶇疆锛氬彇鏀捐揣鍖猴紙鏈夎揣鐗┿�娌℃湁閿併�宸插惎鐢級 + var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 1 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && startAreas.Contains(a.S_AREA_CODE)); + if (startLoc == null) { + return BuildSimpleResult(1, $"璧风偣浣嶇疆{model.startLoc}涓嶅瓨鍦ㄦ垨涓嶆弧瓒宠姹傦細(1)娌℃湁閿佺姸鎬�(2)灞炰簬鍙栬揣鍖�); + } + + var locCntrRel = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.startLoc); + if (locCntrRel == null) { + return BuildSimpleResult(2, $"褰撳墠璐т綅{model.startLoc}娌℃湁璐т綅瀹瑰櫒缁戝畾鍏崇郴锛屾棤闇�В缁戯紒"); + } + + var cgDetail = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == locCntrRel.S_CNTR_CODE); + if (cgDetail != null) { + return BuildSimpleResult(3, $"褰撳墠璐т綅{model.startLoc}瀹瑰櫒瀛樻斁鐨勭墿鏂欐暟閲忎笉涓�锛屾棤娉曡В缁戯紒"); + } + + startLoc.N_CURRENT_NUM = 0; + startLoc.T_MODIFY = DateTime.Now; + + using (var tran = db.Ado.UseTran()) { + if (db.Deleteable(locCntrRel).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildSimpleResult(500, + $"鍒犻櫎璐т綅瀹瑰櫒缁戝畾鍏崇郴澶辫触!" + JsonConvert.SerializeObject(locCntrRel)); + } + + if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_CURRENT_NUM, it.T_MODIFY }).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildSimpleResult(500, + $"鍒犻櫎璐т綅瀹瑰櫒缁戝畾鍏崇郴澶辫触!" + JsonConvert.SerializeObject(locCntrRel)); + } + + tran.CommitTran(); + return BuildSimpleResult(0, "瑙g粦瀹瑰櫒璐у搧鍏崇郴鎴愬姛"); + } + } + catch (Exception ex) { + return BuildSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); + } + } + + /// <summary> /// 浜у搧閮ㄥ垎鍥炲簱锛堜笉鎸囧畾缁堢偣锛屽鐢級 /// </summary> /// <param name="model"></param> -- Gitblit v1.9.1