From 0e829f4a5321c10900e1f4130a80f2e8c804a08e Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期四, 19 六月 2025 17:30:47 +0800 Subject: [PATCH] 修复取消订单和更改终点货区流程与国自AGV交互的部分细节问题 --- api/ApiHelper.cs | 785 +++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 502 insertions(+), 283 deletions(-) diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs index 317676f..a5e3514 100644 --- a/api/ApiHelper.cs +++ b/api/ApiHelper.cs @@ -3,6 +3,8 @@ using System.Linq; using System.Text; using System.Threading.Tasks; + +using HH.WCS.Mobox3.AnGang.dispatch; using HH.WCS.Mobox3.AnGang.models; using HH.WCS.Mobox3.AnGang.util; using HH.WCS.Mobox3.AnGang.wms; @@ -27,24 +29,27 @@ .Where(a => a.S_CODE == model.StartLoc) .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") .Where(a => a.N_CURRENT_NUM == 0) - .Where(a => a.S_AREA_CODE == "SFQ") + .Where(a => Settings.Areas[0].Contains(a.S_AREA_CODE)) // 鏀跺彂鍖� .First(); if (startLoc == null) { - return NewSimpleResult(1, $"璧风偣浣嶇疆{model.StartLoc}涓嶅瓨鍦紒"); + return BuildSimpleResult(1, $"璧风偣浣嶇疆{model.StartLoc}涓嶅瓨鍦ㄦ垨涓嶆弧瓒宠姹傦細闇�锛�锛夋病鏈夐攣鐘舵�锛�锛夊綋鍓嶆棤瀹瑰櫒锛�锛夊睘浜庡彇鏀捐揣鍖�); } // 瀹瑰櫒 ID 鍜�鐗╂枡 ID 鏈寚瀹氾紝鐢辩郴缁熺洿鎺ョ敓鎴�- var cntId = Guid.NewGuid().ToString("D"); - var CgId = Guid.NewGuid().ToString("D"); + //var cntId = Guid.NewGuid().ToString("D"); + //var CgId = Guid.NewGuid().ToString("D"); + var cntId = GenerateNo("瀹瑰櫒鍙�, "CN"); + var cgId = GenerateNo("鐗╂枡鍙�, "CG"); // 鍒濆鏄病鏈夌粦瀹氫俊鎭殑锛屽厛灏嗚捣鐐逛綅缃笌瀹瑰櫒缁戝畾锛屽鍣ㄤ笌鐗╂枡缁戝畾 var locCntrRel = new TN_Loc_Container() { S_LOC_CODE = startLoc.S_CODE, S_CNTR_CODE = cntId, }; + var cgDetail = new TN_CG_Detail() { - S_ITEM_CODE = CgId, + S_ITEM_CODE = cgId, S_CNTR_CODE = cntId, }; @@ -54,52 +59,58 @@ if (model.Row != null && model.Row.Trim() != "") { endLocCode = model.Row; // 鐢ㄦ帓鍙峰瓧绗︿覆褰撳仛鍋囧湴鍧� if (!int.TryParse(model.Row.Trim(), out int row)) { - return NewSimpleResult(2, $"{model.Row} 涓嶅悎娉曪細鏃犳硶杞垚鏁存暟绫诲瀷"); + return BuildSimpleResult(2, $"{model.Row} 涓嶅悎娉曪細鏃犳硶杞垚鏁存暟绫诲瀷"); } // 璐ф灦鎺掑彿鍙兘鏄�0 - 8 if (row <= 0 || row > 8) { - return NewSimpleResult(2, $"璐ф灦鍙�{model.Row} 蹇呴』鏄�-8涔嬮棿鐨勬暣鏁�); + return BuildSimpleResult(2, $"璐ф灦鍙�{model.Row} 蹇呴』鏄�-8涔嬮棿鐨勬暣鏁�); } } var task = WCSHelper.BuildInboundTask(startLoc, endLocCode, cntId); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿� // 鏃犺鏄惁閫夋嫨缁堢偣璐ф灦锛岄兘绛夊埌绉伴噸涔嬪悗鍐嶈绠楃粓鐐硅揣浣� using (var tran = db.Ado.UseTran()) { if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, + return BuildSimpleResult(500, $"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐ワ細璐т綅{locCntrRel.S_LOC_CODE}锛屽鍣▄locCntrRel.S_CNTR_CODE}"); } if (db.Insertable<TN_CG_Detail>(cgDetail).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, + return BuildSimpleResult(500, $"鎻掑叆瀹瑰櫒璐у搧鏄庣粏琛ㄥけ璐ワ細瀹瑰櫒{cgDetail.S_CNTR_CODE}锛岀墿鏂檣cgDetail.S_ITEM_CODE}"); } 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 NewSimpleResult(500, + return BuildSimpleResult(500, $"鏇存柊璧风偣璐т綅閿佺姸鎬佸け璐ワ細璧风偣璐т綅{startLoc.S_CODE}"); } if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, + return BuildSimpleResult(500, $"鐢熸垚浠诲姟 {taskName} 澶辫触锛氬鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLocCode} 锛岀粓鐐硅揣浣嶆湭鎸囧畾"); } tran.CommitTran(); - return NewSimpleResult(0, + return BuildSimpleResult(0, $"鐢熸垚浠诲姟 {taskName} 鎴愬姛锛氬鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLocCode} 锛岀粓鐐硅揣浣嶆湭鎸囧畾"); } } catch (Exception ex) { - return NewSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); + return BuildSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); } + } + + internal static string GenerateNo(string snType, string prefix) { + var id = SYSHelper.GetSerialNumber(snType, prefix); + var date = DateTime.Now.ToString("yyMMdd"); + return $"{prefix}{date}-{id.ToString().PadLeft(5, '0')}"; // 褰㈠锛欳N250525-00011 } /// <summary> @@ -114,51 +125,57 @@ try { // 浠诲姟鍙峰瓨鍦細缁堢偣璐ф灦鍜岀粓鐐逛綅缃负绌猴紝涓斾换鍔′负浜у搧鍏ュ簱(PDA) var task = db.Queryable<TN_Task>() + .Where(a => a.S_CODE == model.TaskNo) .Where(a => a.S_B_STATE == "鍙栬揣瀹屾垚" && a.S_TYPE == TaskName.浜у搧鍏ュ簱) .OrderBy(a => a.T_CREATE, SqlSugar.OrderByType.Desc).First(); if (task == null) { - return NewSimpleResult(2, $"褰撳墠涓嶅瓨鍦ㄧ姸鎬佷负 鍙栬揣瀹屾垚 鐨�浜у搧鍏ュ簱 浠诲姟"); + return BuildSimpleResult(2, $"褰撳墠涓嶅瓨鍦ㄧ姸鎬佷负 鍙栬揣瀹屾垚 鐨�浜у搧鍏ュ簱 浠诲姟"); } if (task.S_END_LOC != null && task.S_END_LOC != "0") { - return NewSimpleResult(3, $"璇ヤ换鍔″凡鏈夌粓鐐�); + return BuildSimpleResult(3, $"璇ヤ换鍔″凡鏈夌粓鐐�); } var cgDetail = db.Queryable<TN_CG_Detail>() .Where(a => a.S_CNTR_CODE == task.S_CNTR_CODE).First(); if (cgDetail == null) { - return NewSimpleResult(4, $"鎵樼洏鐗╂枡涓嶅瓨鍦�); + return BuildSimpleResult(4, $"鎵樼洏鐗╂枡涓嶅瓨鍦�); } var endLoc = new TN_Location(); - if (cgDetail.F_QTY > 1500) { - // 閲嶉噺瓒呰繃1.5t锛岄渶瑕侀�鎷�-3灞傝揣鏋�+ if (cgDetail.F_QTY > 2000) { + // 閲嶉噺瓒呰繃2t锛屾姤閿�+ return BuildSimpleResult(8, $"鐗╂枡閲嶉噺{cgDetail.F_QTY}瓒呰繃2t"); + } + else if (cgDetail.F_QTY > 1500) { + // 閲嶉噺瓒呰繃1.5t锛岄渶瑕侀�鎷�-2灞傝揣鏋� endLoc = db.Queryable<TN_Location>() - .Where(a => a.S_CODE == model.endLoc) + .Where(a => a.S_CODE == model.EndLoc) .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") .Where(a => a.N_CURRENT_NUM == 0) - .Where(a => a.S_AREA_CODE == "HJQ") - .Where(a => a.N_LAYER <= 3) + .Where(a => Settings.Areas[1].Contains(a.S_AREA_CODE)) + .Where(a => a.N_LAYER <= 2) .First(); } else if (cgDetail.F_QTY > 0) { endLoc = db.Queryable<TN_Location>() - .Where(a => a.S_CODE == model.endLoc) + .Where(a => a.S_CODE == model.EndLoc) .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") .Where(a => a.N_CURRENT_NUM == 0) - .Where(a => a.S_AREA_CODE == "HJQ") + .Where(a => Settings.Areas[1].Contains(a.S_AREA_CODE)) + .OrderBy(a => a.N_LAYER > 2 ? 0 : 1) // 浼樺厛鍙栧ぇ浜�鐨� //.Where(a => a.N_LAYER <= 3) .First(); } else { - return NewSimpleResult(5, $"鐗╂枡閲嶉噺淇℃伅涓嶅悎娉曪細{cgDetail.F_QTY}"); + return BuildSimpleResult(5, $"鐗╂枡閲嶉噺淇℃伅涓嶅悎娉曪細{cgDetail.F_QTY}"); } // 娌℃湁绗﹀悎鏉′欢鐨勮揣浣� if (endLoc == null) { - return NewSimpleResult(6, $"璐т綅{model.endLoc}涓嶅瓨鍦紝鎴栦笉婊¤冻绉伴噸鏀剧疆瑕佹眰"); + return BuildSimpleResult(6, $"璐т綅{model.EndLoc}涓嶅瓨鍦紝鎴栦笉婊¤冻绉伴噸鏀剧疆瑕佹眰"); } // 淇敼浠诲姟缁堢偣涓篜DA鎸囧畾缁堢偣 @@ -168,21 +185,21 @@ using (var tran = db.Ado.UseTran()) { if (db.Updateable<TN_Task>(task).UpdateColumns(a => a.S_END_LOC).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(7, $"浠诲姟{task.S_CODE}淇敼澶辫触锛屼慨鏀圭粓鐐逛綅缃负{endLoc.S_CODE}"); + return BuildSimpleResult(500, $"浠诲姟{task.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 NewSimpleResult(7, $"浠诲姟{task.S_CODE}淇敼澶辫触锛屼慨鏀圭粓鐐逛綅缃负{endLoc.S_CODE}"); + return BuildSimpleResult(500, $"浠诲姟{task.S_CODE}淇敼澶辫触锛屼慨鏀圭粓鐐逛綅缃负{endLoc.S_CODE}"); } tran.CommitTran(); - return NewSimpleResult(0, $"浠诲姟{task.S_CODE}淇敼鎴愬姛锛屼慨鏀圭粓鐐逛綅缃负{endLoc.S_CODE}"); + return BuildSimpleResult(0, $"浠诲姟{task.S_CODE}淇敼鎴愬姛锛屼慨鏀圭粓鐐逛綅缃负{endLoc.S_CODE}"); } } catch (Exception ex) { - return NewSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); + return BuildSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); } } @@ -204,32 +221,34 @@ .First(); if (startLoc == null) { - return NewSimpleResult(2, $"璧风偣浣嶇疆 {model.startLoc} 涓嶅瓨鍦ㄦ垨涓嶅叿澶囧彇璐ц姹�); + return BuildSimpleResult(2, $"璧风偣浣嶇疆 {model.startLoc} 涓嶅瓨鍦ㄦ垨涓嶅叿澶囧彇璐ц姹�); } var locCntrRel = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.startLoc); if (locCntrRel == null) { - return NewSimpleResult(3, $"璧风偣浣嶇疆 {model.startLoc} 娌℃湁缁戝畾瀹瑰櫒锛屾棤鍙嚭搴撶殑鐗╂枡"); + return BuildSimpleResult(3, $"璧风偣浣嶇疆 {model.startLoc} 娌℃湁缁戝畾瀹瑰櫒锛屾棤鍙嚭搴撶殑鐗╂枡"); } - 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" && a.S_AREA_CODE == "SFQ"); + 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" && Settings.Areas[0].Contains(a.S_AREA_CODE)); if (endLoc == null) { - return NewSimpleResult(4, $"缁堢偣浣嶇疆 {model.endLoc} 涓嶅叿澶囨斁璐ф潯浠�); + return BuildSimpleResult(4, $"缁堢偣浣嶇疆 {model.endLoc} 涓嶅叿澶囨斁璐ф潯浠�); } var cntId = locCntrRel.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 2); // 缁堢偣鍏ュ簱閿�+ LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+ + var res = GZRobot.QueryInteractInfo(3); 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 NewSimpleResult(500, + return BuildSimpleResult(500, $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"); } @@ -237,23 +256,23 @@ it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY }).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, + return BuildSimpleResult(500, $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); } if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, + return BuildSimpleResult(500, $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); } tran.CommitTran(); - return NewSimpleResult(0, + return BuildSimpleResult(0, $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); } } catch (Exception ex) { - return NewSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); + return BuildSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); } } @@ -268,345 +287,545 @@ 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" && a.S_AREA_CODE == "SFQ"); + 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" && Settings.Areas[0].Contains(a.S_AREA_CODE)); if (startLoc == null) { - return NewSimpleResult(2, $"璧风偣浣嶇疆 {model.startLoc} 涓嶇鍚堝洖搴撴潯浠�); + return BuildSimpleResult(2, $"璧风偣浣嶇疆 {model.startLoc} 涓嶇鍚堝洖搴撴潯浠�); } var locCntrRel = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.startLoc); if (locCntrRel == null) { - return NewSimpleResult(3, $"璧风偣浣嶇疆 {model.startLoc} 娌℃湁缁戝畾瀹瑰櫒锛屾棤鍙洖搴撶殑鐗╂枡"); + return BuildSimpleResult(3, $"璧风偣浣嶇疆 {model.startLoc} 娌℃湁缁戝畾瀹瑰櫒锛屾棤鍙洖搴撶殑鐗╂枡"); } // 缁堢偣浣嶇疆锛氳揣鏋讹紙娌℃湁璐х墿锛屾病鏈夐攣锛� 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"); if (endLoc == null) { - return NewSimpleResult(4, $"缁堢偣浣嶇疆 {model.endLoc} 涓嶅叿澶囨斁璐ф潯浠�); + return BuildSimpleResult(4, $"缁堢偣浣嶇疆 {model.endLoc} 涓嶅叿澶囨斁璐ф潯浠�); } var cntId = locCntrRel.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 2); // 缁堢偣鍏ュ簱閿�+ 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 NewSimpleResult(500, + 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 NewSimpleResult(500, + return BuildSimpleResult(500, $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); } if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, + return BuildSimpleResult(500, $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); } tran.CommitTran(); - return NewSimpleResult(0, + return BuildSimpleResult(0, $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); } } catch (Exception ex) { - return NewSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); + return BuildSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); } } - public static SimpleResult CreateCountPlan(CreateCountPlanInfo model) { - var db = new SqlHelper<object>().GetInstance(); - try { - - var countPlan = new TN_Count_Plan() { - S_CP_NO = GenerateNo("鐩樼偣璁″垝", "CP"), - S_TYPE = model.countType, - }; - - if (model.countType == "璐т綅") { - countPlan.S_LOC_CODE = model.targetId; - } - else if (model.countType == "鐗╂枡") { - countPlan.S_ITEM_CODE = model.targetId; - } - else { - return NewSimpleResult(2, $"鍒涘缓鐩樼偣璁″垝澶辫触锛氫笉鍚堟硶鐨勭洏鐐圭被鍨�'{model.countType}'"); - } - - if (db.Insertable<TN_Count_Plan>(countPlan).ExecuteCommand() <= 0) { - return NewSimpleResult(2, "鍒涘缓鐩樼偣璁″垝澶辫触"); - } - - return NewSimpleResult(0, "鍒涘缓鐩樼偣璁″垝鎴愬姛"); - - } - catch (Exception ex) { - - return NewSimpleResult(1, ex.Message); - } - } - - public static SimpleResult CreateCountOrder(CreateCountOrderInfo model) { + public static SimpleResult CancelTask(CancelTaskInfo model) { var db = new SqlHelper<object>().GetInstance(); var info = ""; try { - var countPlan = db.Queryable<TN_Count_Plan>() - .Where(a => a.S_CP_NO == model.planId).First(); + var task = db.Queryable<TN_Task>() + .Where(a => a.S_CODE == model.TaskNo) + .First(); - if (countPlan == null) { - return NewSimpleResult(2, $"鐩樼偣璁″垝鍗曞彿 '{model.planId}' 涓嶅瓨鍦�); + if (task == null) { + return BuildSimpleResult(2, $"浠诲姟鍙穥model.TaskNo}涓嶅瓨鍦�); } - var countOrder = new TN_Count_Order() { - S_CP_NO = model.planId, - S_COUNT_NO = GenerateNo("鐩樼偣鍗�, "CN"), - }; + if (task.N_B_STATE == 0 && task.S_B_STATE == TN_Task.GetStateStr(0) + || task.N_B_STATE == 1 && task.S_B_STATE == TN_Task.GetStateStr(1)) { - var countDetailList = new List<TN_Count_CG_Detail>(); - if (countPlan.S_TYPE == "璐т綅") { - var cgDetail = db.Queryable<TN_Location, TN_Loc_Container, TN_CG_Detail> - ((l, c, d) => l.S_CODE == c.S_LOC_CODE && c.S_CNTR_CODE == d.S_CNTR_CODE) - .Where(l => l.S_CODE == countPlan.S_LOC_CODE) - .Select((l, c, d) => d).First(); + task.N_B_STATE = 4; + task.S_B_STATE = "鍙栨秷"; - var countDetail = new TN_Count_CG_Detail { - S_COUNT_NO = countOrder.S_COUNT_NO, - S_CNTR_CODE = cgDetail.S_CNTR_CODE, - S_ITEM_CODE = cgDetail.S_ITEM_CODE, - }; + var startloc = db.Queryable<TN_Location>().First(a => a.S_CODE == task.S_START_LOC); + var endloc = db.Queryable<TN_Location>().First(a => a.S_CODE == task.S_END_LOC); + //var locCnt = db.Queryable<TN_Loc_Container>().First(a => a.S_CNTR_CODE == task.S_CNTR_CODE); + //var cg = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == task.S_CNTR_CODE); - countDetailList.Add(countDetail); - } - else if (countPlan.S_TYPE == "鐗╂枡") { - var cgDetailList = db.Queryable<TN_CG_Detail>() - .Where(d => d.S_ITEM_CODE == countPlan.S_ITEM_CODE).ToList(); - - foreach (var cgDetail in cgDetailList) { - var countDetail = new TN_Count_CG_Detail { - S_COUNT_NO = countOrder.S_COUNT_NO, - S_CNTR_CODE = cgDetail.S_CNTR_CODE, - S_ITEM_CODE = cgDetail.S_ITEM_CODE, - }; - - countDetailList.Add(countDetail); + if (startloc != null) { + startloc.N_LOCK_STATE = 0; + startloc.S_LOCK_STATE = "鏃�; + //starloc.N_CURRENT_NUM = 0; + startloc.T_MODIFY = System.DateTime.Now; } + + if (endloc != null) { + endloc.N_LOCK_STATE = 0; + endloc.S_LOCK_STATE = "鏃�; + //endloc.N_CURRENT_NUM = 0; + endloc.T_MODIFY = System.DateTime.Now; + } + + if (!int.TryParse(task.S_EQ_TASK_CODE, out var code)) { + return BuildSimpleResult(1, $"褰撳墠浠诲姟{task.S_CODE}娌℃湁鎵惧埌瀵瑰簲鐨勫浗鑷狝GV orderId锛�); + } + var res = GZRobot.CancelGZOrder(code); + if (!res) { + return BuildSimpleResult(2, $"鍥借嚜AGV鍙栨秷浠诲姟澶辫触锛�); + } + + using (var tran = db.Ado.UseTran()) { + if (db.Updateable<TN_Location>(startloc).ExecuteCommand() <= 0) { + tran.RollbackTran(); + info = $"浠诲姟{task.S_CODE}鍙栨秷澶辫触锛氫慨鏀硅捣鐐硅揣浣嶉攣鐘舵�澶辫触"; + return BuildSimpleResult(500, info); + } + + if (endloc != null) { + if (db.Updateable<TN_Location>(endloc).ExecuteCommand() <= 0) { + tran.RollbackTran(); + info = $"浠诲姟{task.S_CODE}鍙栨秷澶辫触锛氫慨鏀圭粓鐐硅揣浣嶉攣鐘舵�澶辫触"; + return BuildSimpleResult(500, info); + } + } + + if (db.Updateable<TN_Task>(task).ExecuteCommand() <= 0) { + tran.RollbackTran(); + info = $"浠诲姟{task.S_CODE}鍙栨秷澶辫触"; + return BuildSimpleResult(500, info); + } + + tran.CommitTran(); + info = $"浠诲姟{task.S_CODE}鍙栨秷鎴愬姛"; + return BuildSimpleResult(0, info); + } + } else { - return NewSimpleResult(3, $"璁″垝鍗�{model.planId}'鐨勭被鍨媨countPlan.S_TYPE}涓嶅悎娉�); + return BuildSimpleResult(3, $"鍙湁浠诲姟鍙风姸鎬佷负 绛夊緟 鎴�宸叉帹閫�鐨勪换鍔℃墠鑳藉彇娑�); + + // return CancelTaskIfForced(model, task); // 澶囩敤鍑芥暟锛屽鏋滅敳鏂硅姹備换鍔℃墽琛屼腑涔熷彇娑堬紝鍐嶈皟鐢� } - - using (var tran = db.Ado.UseTran()) { - if (db.Insertable<TN_Count_Order>(countOrder).ExecuteCommand() <= 0) { - tran.RollbackTran(); - info = "鍒涘缓鐩樼偣鍗曞け璐�; - return NewSimpleResult(2, info); - } - - if (db.Insertable<TN_Count_CG_Detail>(countDetailList).ExecuteCommand() <= 0) { - tran.RollbackTran(); - info = "鍒涘缓鐩樼偣鍗曟槑缁嗗け璐�; - return NewSimpleResult(3, info); - } - - tran.CommitTran(); - } - - return NewSimpleResult(0, "鍒涘缓鐩樼偣鍗曟垚鍔�); - } - catch (Exception ex) { - - return NewSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); - } - } - - public static SimpleResult CountProduct(CountProductInfo model) { - var db = new SqlHelper<object>().GetInstance(); - try { - var cgDetail = db.Queryable<TN_CG_Detail>() - .Where(d => d.S_CNTR_CODE == model.cntrCode).First(); - - if (cgDetail == null) { - return NewSimpleResult(2, $"鎵句笉鍒板鍣ㄥ彿'{model.cntrCode}'瀵瑰簲鐨勭墿鏂�); - } - - var countDiff = new TN_Count_Diff { - S_CNTR_CODE = cgDetail.S_CNTR_CODE, - F_ACTUAL_QTY = model.qty - }; - - if (db.Insertable<TN_Count_Diff>(countDiff).ExecuteCommand() <= 0) { - return NewSimpleResult(3, $"鎻掑叆鐩樼偣宸紓琛ㄥけ璐�); - } - - return NewSimpleResult(0, "鐩樼偣宸紓瀹屾垚"); } catch (Exception ex) { - return NewSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); + return BuildSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); } } - internal static string GenerateNo(string snType, string prefix) { - var id = SYSHelper.GetSerialNumber(snType, prefix); - var date = DateTime.Now.ToString("yyMMdd"); - return $"TN{date}{id.ToString().PadLeft(4, '0')}"; + public static SimpleResult CancelTaskIfForced(CancleTaskInfo model, TN_Task task) { + return BuildSimpleResult(3, $"鍙湁浠诲姟鍙风姸鎬佷负 绛夊緟 鎴�宸叉帹閫�鐨勪换鍔℃墠鑳藉彇娑�); } - /// <summary> - /// 鐩樼偣鐞嗚揣鍑哄簱(WMS) - /// </summary> - /// <param name="model"></param> - /// <returns></returns> - internal static SimpleResult CheckOutbound(CheckOutboundInfo model) { - var taskName = TaskName.鐩樼偣鐞嗚揣鍑哄簱; - var db = new SqlHelper<object>().GetInstance(); + //public static SimpleResult CreateCountPlan(CreateCountPlanInfo model) { + // var db = new SqlHelper<object>().GetInstance(); + // try { - 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" && a.S_AREA_CODE == "SFQ"); - if (startLoc == null) { - return NewSimpleResult(2, $"璧风偣浣嶇疆 {model.startLoc} 涓嶇鍚堝嚭搴撴潯浠�); - } + // var countPlan = new TN_Count_Plan() { + // S_CP_NO = GenerateNo("鐩樼偣璁″垝", "CP"), + // S_TYPE = model.countType, + // }; - var locCntrRel = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.startLoc); - if (locCntrRel == null) { - return NewSimpleResult(3, $"璧风偣浣嶇疆 {model.startLoc} 娌℃湁缁戝畾瀹瑰櫒锛屾棤鍙洖搴撶殑鐗╂枡"); - } + // if (model.countType == "璐т綅") { + // countPlan.S_LOC_CODE = model.targetId; + // } + // else if (model.countType == "鐗╂枡") { + // countPlan.S_ITEM_CODE = model.targetId; + // } + // else { + // return BuildSimpleResult(2, $"鍒涘缓鐩樼偣璁″垝澶辫触锛氫笉鍚堟硶鐨勭洏鐐圭被鍨�'{model.countType}'"); + // } - // 缁堢偣浣嶇疆锛氳揣鏋讹紙娌℃湁璐х墿锛屾病鏈夐攣锛�- 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"); - if (endLoc == null) { - return NewSimpleResult(4, $"缁堢偣浣嶇疆 {model.endLoc} 涓嶅叿澶囨斁璐ф潯浠�); - } + // if (db.Insertable<TN_Count_Plan>(countPlan).ExecuteCommand() <= 0) { + // return BuildSimpleResult(2, "鍒涘缓鐩樼偣璁″垝澶辫触"); + // } - var cntID = locCntrRel.S_CNTR_CODE; - var task = WCSHelper.BuildTask(startLoc, endLoc, cntID, taskName); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 2); // 缁堢偣鍏ュ簱閿�+ // return BuildSimpleResult(0, "鍒涘缓鐩樼偣璁″垝鎴愬姛"); - 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 NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"); - } + // } + // catch (Exception ex) { - 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 NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); - } + // return BuildSimpleResult(1, ex.Message); + // } + //} - if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); - } + //public static SimpleResult CreateCountOrder(CreateCountOrderInfo model) { + // var db = new SqlHelper<object>().GetInstance(); + // var info = ""; + // try { + // var countPlan = db.Queryable<TN_Count_Plan>() + // .Where(a => a.S_CP_NO == model.planId).First(); - tran.CommitTran(); - return NewSimpleResult(0, - $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); - } - } - catch (Exception ex) { - return NewSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); - } - } + // if (countPlan == null) { + // return BuildSimpleResult(2, $"鐩樼偣璁″垝鍗曞彿 '{model.planId}' 涓嶅瓨鍦�); + // } - /// <summary> - /// 鐩樼偣鐞嗚揣鍥炲簱(WMS) - /// </summary> - /// <param name="model"></param> - /// <returns></returns> - internal static SimpleResult CheckInbound(CheckInboundInfo model) { - var taskName = TaskName.鐩樼偣鐞嗚揣鍥炲簱; - var db = new SqlHelper<object>().GetInstance(); + // var countOrder = new TN_Count_Order() { + // S_CP_NO = model.planId, + // S_COUNT_NO = GenerateNo("鐩樼偣鍗�, "CN"), + // }; - 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" && a.S_AREA_CODE == "SFQ"); - if (startLoc == null) { - return NewSimpleResult(2, $"璧风偣浣嶇疆 {model.startLoc} 涓嶇鍚堝洖搴撴潯浠�); - } + // var countDetailList = new List<TN_Count_CG_Detail>(); + // if (countPlan.S_TYPE == "璐т綅") { + // var cgDetail = db.Queryable<TN_Location, TN_Loc_Container, TN_CG_Detail> + // ((l, c, d) => l.S_CODE == c.S_LOC_CODE && c.S_CNTR_CODE == d.S_CNTR_CODE) + // .Where(l => l.S_CODE == countPlan.S_LOC_CODE) + // .Select((l, c, d) => d).First(); - var locCntrRel = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.startLoc); - if (locCntrRel == null) { - return NewSimpleResult(3, $"璧风偣浣嶇疆 {model.startLoc} 娌℃湁缁戝畾瀹瑰櫒锛屾棤鍙洖搴撶殑鐗╂枡"); - } + // var countDetail = new TN_Count_CG_Detail { + // S_COUNT_NO = countOrder.S_COUNT_NO, + // S_CNTR_CODE = cgDetail.S_CNTR_CODE, + // S_ITEM_CODE = cgDetail.S_ITEM_CODE, + // }; - // 缁堢偣浣嶇疆锛氳揣鏋讹紙娌℃湁璐х墿锛屾病鏈夐攣锛�- 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"); - if (endLoc == null) { - return NewSimpleResult(4, $"缁堢偣浣嶇疆 {model.endLoc} 涓嶅叿澶囨斁璐ф潯浠�); - } + // countDetailList.Add(countDetail); + // } + // else if (countPlan.S_TYPE == "鐗╂枡") { + // var cgDetailList = db.Queryable<TN_CG_Detail>() + // .Where(d => d.S_ITEM_CODE == countPlan.S_ITEM_CODE).ToList(); - var cntID = locCntrRel.S_CNTR_CODE; - var task = WCSHelper.BuildTask(startLoc, endLoc, cntID, taskName); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 2); // 缁堢偣鍏ュ簱閿�+ // foreach (var cgDetail in cgDetailList) { + // var countDetail = new TN_Count_CG_Detail { + // S_COUNT_NO = countOrder.S_COUNT_NO, + // S_CNTR_CODE = cgDetail.S_CNTR_CODE, + // S_ITEM_CODE = cgDetail.S_ITEM_CODE, + // }; - 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 NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"); - } + // countDetailList.Add(countDetail); + // } + // } + // else { + // return BuildSimpleResult(3, $"璁″垝鍗�{model.planId}'鐨勭被鍨媨countPlan.S_TYPE}涓嶅悎娉�); + // } - 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 NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); - } + // using (var tran = db.Ado.UseTran()) { + // if (db.Insertable<TN_Count_Order>(countOrder).ExecuteCommand() <= 0) { + // tran.RollbackTran(); + // info = "鍒涘缓鐩樼偣鍗曞け璐�; + // return BuildSimpleResult(2, info); + // } - if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); - } + // if (db.Insertable<TN_Count_CG_Detail>(countDetailList).ExecuteCommand() <= 0) { + // tran.RollbackTran(); + // info = "鍒涘缓鐩樼偣鍗曟槑缁嗗け璐�; + // return BuildSimpleResult(3, info); + // } - tran.CommitTran(); - return NewSimpleResult(0, - $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); - } - } - catch (Exception ex) { - return NewSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); - } - } + // tran.CommitTran(); + // } + + // return BuildSimpleResult(0, "鍒涘缓鐩樼偣鍗曟垚鍔�); + // } + // catch (Exception ex) { + + // return BuildSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); + // } + //} + + //public static SimpleResult CountProduct(CountProductInfo model) { + // var db = new SqlHelper<object>().GetInstance(); + // try { + // var cgDetail = db.Queryable<TN_CG_Detail>() + // .Where(d => d.S_CNTR_CODE == model.cntrCode).First(); + + // if (cgDetail == null) { + // return BuildSimpleResult(2, $"鎵句笉鍒板鍣ㄥ彿'{model.cntrCode}'瀵瑰簲鐨勭墿鏂�); + // } + + // var countDiff = new TN_Count_Diff { + // S_CNTR_CODE = cgDetail.S_CNTR_CODE, + // F_QTY = cgDetail.F_QTY, + // F_ACTUAL_QTY = model.qty + // }; + + // if (db.Insertable<TN_Count_Diff>(countDiff).ExecuteCommand() <= 0) { + // return BuildSimpleResult(3, $"鎻掑叆鐩樼偣宸紓琛ㄥけ璐�); + // } + + // return BuildSimpleResult(0, "鐩樼偣宸紓瀹屾垚"); + + // } + // catch (Exception ex) { + // return BuildSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); + // } + //} + + ///// <summary> + ///// 鐩樼偣鐞嗚揣鍑哄簱(WMS) + ///// </summary> + ///// <param name="model"></param> + ///// <returns></returns> + //internal static SimpleResult CheckOutbound(CheckOutboundInfo model) { + // var taskName = TaskName.鐩樼偣鐞嗚揣鍑哄簱; + // var db = new SqlHelper<object>().GetInstance(); + + // 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" && Settings.Areas[0].Contains(a.S_AREA_CODE)); + // if (startLoc == null) { + // return BuildSimpleResult(2, $"璧风偣浣嶇疆 {model.startLoc} 涓嶇鍚堝嚭搴撴潯浠�); + // } + + // var locCntrRel = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.startLoc); + // if (locCntrRel == null) { + // return BuildSimpleResult(3, $"璧风偣浣嶇疆 {model.startLoc} 娌℃湁缁戝畾瀹瑰櫒锛屾棤鍙洖搴撶殑鐗╂枡"); + // } + + // // 缁堢偣浣嶇疆锛氳揣鏋讹紙娌℃湁璐х墿锛屾病鏈夐攣锛�+ // 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"); + // 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> + ///// 鐩樼偣鐞嗚揣鍥炲簱(WMS) + ///// </summary> + ///// <param name="model"></param> + ///// <returns></returns> + //internal static SimpleResult CheckInbound(CheckInboundInfo model) { + // var taskName = TaskName.鐩樼偣鐞嗚揣鍥炲簱; + // var db = new SqlHelper<object>().GetInstance(); + + // 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" && Settings.Areas[0].Contains(a.S_AREA_CODE)); + // if (startLoc == null) { + // return BuildSimpleResult(2, $"璧风偣浣嶇疆 {model.startLoc} 涓嶇鍚堝洖搴撴潯浠�); + // } + + // var locCntrRel = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.startLoc); + // if (locCntrRel == null) { + // return BuildSimpleResult(3, $"璧风偣浣嶇疆 {model.startLoc} 娌℃湁缁戝畾瀹瑰櫒锛屾棤鍙洖搴撶殑鐗╂枡"); + // } + + // // 缁堢偣浣嶇疆锛氳揣鏋讹紙娌℃湁璐х墿锛屾病鏈夐攣锛�+ // 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"); + // 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}"); + // } + //} public static ErpResult InboundDataSync(InboundDataSyncInfo model) { - var db = new SqlHelper<object>().GetInstance(); + //return BuildErpResult(1, "娴嬭瘯"); + var db = new SqlHelper<object>().GetInstance(); try { + var err = ""; + var cgDetailList = new List<TN_CG_Detail>(); + var recordList = new List<TN_Inbound_DataRecord>(); + + foreach (var transaction in model.stockTransactions) { + // 鍐欏叆璁板綍琛�+ var record = new TN_Inbound_DataRecord { + S_LOCATION_CODE = transaction.locationCode, + S_STOCK_TRANS = transaction.stockTransactionId, + S_ITEM_CODE = transaction.itemCode, + S_ITEM_NAME = transaction.itemName, + S_ITEM_SHORT_DESC = transaction.itemShortDesc, + S_STOCK_QUANTITY = transaction.stockQuantity, + S_IN_QUANTITY = transaction.inQuantity, + S_TOTAL_PRICE = transaction.totalPrice, + S_STOCK_IN_TIME = transaction.stockInTime, + S_STORE_KEEPER = transaction.storeKeeper, + S_LINE_CODE = transaction.lineCode, + S_DELIVERY_ITEM_NO = transaction.deliveryItemNo, + S_SUPPLIER_NAME = transaction.supplierName, + S_INVENTORY_MAN = transaction.inventoryManager + }; + recordList.Add(record); + + // 鏌ヨ瀵瑰簲鐗╂枡 + var cgDetail = db.Queryable<TN_Location, TN_Loc_Container, TN_CG_Detail> + ((l, c, d) => l.S_CODE == c.S_LOC_CODE && c.S_CNTR_CODE == d.S_CNTR_CODE) + .Where(l => l.S_CODE == transaction.locationCode) + .Select((l, c, d) => d) + .First(); + + if (cgDetail == null) { + err += $"鍌ㄤ綅鐮亄transaction.locationCode}瀵瑰簲鐨勮揣浣嶇墿鏂欎笉瀛樺湪锛�; + continue; + } + cgDetail.S_ITEM_CODE = transaction.itemCode; + cgDetail.S_ITEM_NAME = transaction.itemName; + + cgDetailList.Add(cgDetail); + } + + using (var tran = db.Ado.UseTran()) { + if (db.Insertable<TN_Inbound_DataRecord>(recordList).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildErpResult(500, $"鍐欏叆鍏ュ簱璁板綍琛ㄥけ璐�); + } + + if (db.Updateable<TN_CG_Detail>(cgDetailList).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildErpResult(500, $"鏇存敼鐗╂枡淇℃伅澶辫触"); + } + + tran.CommitTran(); + } + + if (err != "") { + return BuildErpResult(2, err + "鍏朵粬淇℃伅姝e父宸插啓鍏�); + } + return BuildErpResult(0, $"鏇存敼鐗╂枡淇℃伅鎴愬姛"); } catch (Exception ex) { - return BuildErpResult(1, ex.Message); + return BuildErpResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); } - return BuildErpResult(0, null); } public static ErpResult OutboundDataSync(OutboundDataSyncInfo model) { + //return BuildErpResult(1, "娴嬭瘯"); + var db = new SqlHelper<object>().GetInstance(); - try { + var err = ""; + var cgDetailList = new List<TN_CG_Detail>(); + var recordList = new List<TN_Outbound_DataRecord>(); + foreach (var issue in model.materialIssues) { + // 鍐欏叆璁板綍琛�+ var record = new TN_Outbound_DataRecord { + S_LOCATION_CODE = issue.locationCode, + S_ORDER_NO = issue.withdrawalOrderNo, + S_ITEM_CODE = issue.itemCode, + S_ITEM_NAME = issue.itemName, + S_SHORT_DESC = issue.itemShortDesc, + S_ACTUAL_QTY = issue.actualIssuedQty, + S_ISSUED_AMOUNT = issue.issuedAmount, + S_SUPPLIER_NAME = issue.supplierName, + S_ISSUER = issue.issuer, + S_ISSUE_DATE = issue.issueDate, + S_STORE_KEEPER = issue.storeKeeper, + S_LINE_CODE = issue.lineCode, + S_BATCH_NO = issue.batchNo + }; + recordList.Add(record); + + // 鏌ヨ瀵瑰簲鐗╂枡 + var cgDetail = db.Queryable<TN_Location, TN_Loc_Container, TN_CG_Detail> + ((l, c, d) => l.S_CODE == c.S_LOC_CODE && c.S_CNTR_CODE == d.S_CNTR_CODE) + .Where(l => l.S_CODE == issue.locationCode) + .Select((l, c, d) => d) + .First(); + + if (cgDetail == null) { + err += $"鍌ㄤ綅鐮亄issue.locationCode}瀵瑰簲鐨勮揣浣嶇墿鏂欎笉瀛樺湪锛�; + continue; + } + + cgDetail.S_ITEM_CODE = issue.itemCode; + cgDetail.S_ITEM_NAME = issue.itemName; + + cgDetailList.Add(cgDetail); + } + + using (var tran = db.Ado.UseTran()) { + if (db.Insertable<TN_Outbound_DataRecord>(recordList).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildErpResult(500, $"鍐欏叆鍑哄簱璁板綍琛ㄥけ璐�); + } + + if (db.Updateable<TN_CG_Detail>(cgDetailList).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildErpResult(500, $"鏇存敼鐗╂枡淇℃伅澶辫触"); + } + + tran.CommitTran(); + } + + if (err != "") { + return BuildErpResult(2, err + "鍏朵粬淇℃伅姝e父宸插啓鍏�); + } + return BuildErpResult(0, $"鏇存敼鐗╂枡淇℃伅鎴愬姛"); } catch (Exception ex) { - return BuildErpResult(1, ex.Message); + return BuildErpResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); } - return BuildErpResult(1, null); } } } -- Gitblit v1.9.1