From d944fda9f2fbf27d83e8fdf880e8fe5267e1f541 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期三, 04 六月 2025 17:24:13 +0800 Subject: [PATCH] 优化空托空箱入库兼容出库容器回库场景,修复货位容器绑定的类型丢失问题 --- wms/LocationHelper.cs | 30 ++ /dev/null | 0 core/Monitor.cs | 39 ++- models/TN_Container.cs | 4 .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/6f070d61-bbc8-4cf3-8d70-7244f5a6b3b6.vsidx | 0 models/TN_Container_ItemType.cs | 6 .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/62511dbf-e9d3-41f0-9ebd-1f1dfea56ad8.vsidx | 0 api/ApiModel.cs | 10 + core/WCSCore.cs | 25 +- .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/18c7ba82-96c0-49b8-853d-f97228ef5b2e.vsidx | 0 config/config.comment.json | 104 +++-------- .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/62c30b9e-0d60-4b2a-b4d8-3f249467cf7b.vsidx | 0 api/ApiHelper.cs | 272 +++++++++++++++++++++++++----- api/MoboxController.cs | 2 14 files changed, 339 insertions(+), 153 deletions(-) diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/18c7ba82-96c0-49b8-853d-f97228ef5b2e.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/18c7ba82-96c0-49b8-853d-f97228ef5b2e.vsidx new file mode 100644 index 0000000..9194961 --- /dev/null +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/18c7ba82-96c0-49b8-853d-f97228ef5b2e.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/1e814f61-56d2-4923-b635-2c4903d5fcef.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/1e814f61-56d2-4923-b635-2c4903d5fcef.vsidx deleted file mode 100644 index e680222..0000000 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/1e814f61-56d2-4923-b635-2c4903d5fcef.vsidx +++ /dev/null Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/3c46e31b-92c1-46e5-92fd-f14f17b3bb37.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/3c46e31b-92c1-46e5-92fd-f14f17b3bb37.vsidx deleted file mode 100644 index 3d22c71..0000000 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/3c46e31b-92c1-46e5-92fd-f14f17b3bb37.vsidx +++ /dev/null Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/62511dbf-e9d3-41f0-9ebd-1f1dfea56ad8.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/62511dbf-e9d3-41f0-9ebd-1f1dfea56ad8.vsidx new file mode 100644 index 0000000..10c4324 --- /dev/null +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/62511dbf-e9d3-41f0-9ebd-1f1dfea56ad8.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/62c30b9e-0d60-4b2a-b4d8-3f249467cf7b.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/62c30b9e-0d60-4b2a-b4d8-3f249467cf7b.vsidx new file mode 100644 index 0000000..892da72 --- /dev/null +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/62c30b9e-0d60-4b2a-b4d8-3f249467cf7b.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/6f070d61-bbc8-4cf3-8d70-7244f5a6b3b6.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/6f070d61-bbc8-4cf3-8d70-7244f5a6b3b6.vsidx new file mode 100644 index 0000000..1e1ce3d --- /dev/null +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/6f070d61-bbc8-4cf3-8d70-7244f5a6b3b6.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/a8b2e367-f0d3-4c52-a750-33ba036c1ad8.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/a8b2e367-f0d3-4c52-a750-33ba036c1ad8.vsidx deleted file mode 100644 index 32f094a..0000000 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/a8b2e367-f0d3-4c52-a750-33ba036c1ad8.vsidx +++ /dev/null Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/adcc1e79-4e50-42ee-ad7b-9a8e583b3401.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/adcc1e79-4e50-42ee-ad7b-9a8e583b3401.vsidx deleted file mode 100644 index 5acd7c3..0000000 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/adcc1e79-4e50-42ee-ad7b-9a8e583b3401.vsidx +++ /dev/null Binary files differ diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs index fa5a44d..50eb72a 100644 --- a/api/ApiHelper.cs +++ b/api/ApiHelper.cs @@ -18,6 +18,9 @@ /// <summary> /// 濂借繍绠�婊$涓嬬嚎鍏ュ簱(PDA) /// </summary> + /// <remarks> + /// 娴佺▼锛氫汉宸ュ皢婊$浠庝骇绾挎惉杩愬埌鎿嶄綔鍖哄悗锛屼娇鐢≒DA璋冪敤鎺ュ彛锛屽懠鍙獳GV灏嗘弧绠辨惉杩愬埌璐ф灦鍖猴紙涓嶆寚瀹氱粓鐐硅揣鍖猴級 + /// </remarks> /// <param name="model">鍖呭惈锛氱墿鏂欎俊鎭�璧风偣璐т綅</param> /// <returns></returns> public static SimpleResult GoodpackOffline(GoodpackOfflineInfo model) { @@ -34,8 +37,8 @@ var cgDetail = db.Queryable<TN_CG_Detail>() .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo) // 鎸囧畾锛氱墿鏂欑紪鐮併�鎵规鍙� .Where(d => d.N_ITEM_STATE == 1 && d.S_ITEM_STATE == "寰呮") // 鏂板鐗╂枡锛屾晠鐗╂枡鐘舵�搴旇涓�1寰呮 - // TODO model 涓�鏁伴噺銆佽鏍兼槸鍚︿篃鍙備笌姣斿 寰呭悗缁姹�- .First(); + .First(); // TODO model 涓�鏁伴噺銆佽鏍兼槸鍚︿篃鍙備笌姣斿 寰呭悗缁姹�+ // 濡傛灉鎵句笉鍒版寚瀹氱殑鐗╂枡锛岃鏄庝俊鎭笉涓�嚧锛屾姤閿� if (cgDetail == null) { info = $"PDA鎵爜鐗╂枡淇℃伅涓庤创鏍囨満浼犻�鐨勪俊鎭笉涓�嚧锛� + JsonConvert.SerializeObject(model); @@ -44,6 +47,7 @@ } // 鏌ヨ璧风偣璐т綅锛屾槸鍚︾鍚堣姹傦紙鍒濇涓嬬嚎瑕佹眰璐т綅鏃犲鍣級 + // 娉細璧风偣璐т綅缁戝畾鍓嶆病鏈夎揣鐗╋紝鏁伴噺涓�0 var startLoc = db.Queryable<TN_Location>() .Where(l => l.S_CODE == model.StartLoc) // 鎸囧畾锛氳捣鐐硅揣浣嶅彿 .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 @@ -57,12 +61,29 @@ return NewSimpleResult(3, info); } + startLoc.N_CURRENT_NUM = 1; // 缁戝畾鍚庯紝淇敼璧风偣璐т綅鏁伴噺涓�1 + // 缁戝畾璐т綅鍜屽鍣ㄥ彿锛堟弧绠变笅绾垮埌鎿嶄綔鍖猴紝姝ゆ椂灏氭湭缁戝畾锛� var locCntrRel = new TN_Loc_Container { S_LOC_CODE = model.StartLoc, S_CNTR_CODE = cgDetail.S_CNTR_CODE, S_CNTR_TYPE = "濂借繍绠�, }; + + // 姣忎釜鏂版彃鍏ュ鍣ㄧ殑閫昏緫锛岄兘闇�鏌ヨ杩欎釜琛ㄦ槸鍚﹀瓨鍦紝濡傛灉涓嶅瓨鍦ㄤ篃鍔犲叆锛屽鏋滃瓨鍦細鏆備笉鏇存柊缁撴灉锛堝緟瀹氾級 + // 鏇磋缁嗙殑锛屾槸绌虹鍏ュ簱锛屽拰婊℃枡涓嬬嚎杩欎袱涓祦绋嬬殑瀹瑰櫒鍙兘鏄柊鐨勶紝鍏朵綑瀹瑰櫒涓�畾鏄棫鐨勶紝鏃犻渶鍐嶅垽鏂�+ // 涓ユ牸鏉ヨ锛屽鍣ㄧ被鍨嬪簲璇ユ斁鍦–ontainer閲岄潰鐨勶紝Loc_Container琛ㄥ彧鏀惧叧绯伙紝涓嶈繃鏆傛椂鍏堣繖鏍锋敼鍚�+ var cntrItemRel = db.Queryable<TN_Container_ItemType>() + .Where(c => c.S_CNTR_CODE == locCntrRel.S_CNTR_CODE).First(); + var insertContainerItemType = false; + if (cntrItemRel == null) { + insertContainerItemType = true; + cntrItemRel = new TN_Container_ItemType { + S_ITEM_CODE = cgDetail.S_ITEM_CODE, // 鐗╂枡绫诲瀷瀵逛簬濂借繍绠辫�瑷�叾瀹炰笉鐢紝涓昏鏄被鍨�+ S_CNTR_TYPE = locCntrRel.S_CNTR_TYPE, + S_CNTR_CODE = locCntrRel.S_CNTR_CODE, + }; + } // TODO 婊$鍏ュ簱绠楁硶寰呬紭鍖� var endLoc = db.Queryable<TN_Location>() @@ -78,6 +99,7 @@ return NewSimpleResult(4, info); } + // 鏁版嵁搴撴搷浣滈儴鍒� var cntId = locCntrRel.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); @@ -85,6 +107,15 @@ LocationHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { + if (insertContainerItemType) { + if (db.Insertable<TN_Container_ItemType>(cntrItemRel).ExecuteCommand() <= 0) { + info = $"鎻掑叆瀹瑰櫒淇℃伅澶辫触锛� + JsonConvert.SerializeObject(cntrItemRel); + tran.RollbackTran(); + LogHelper.Info(info); + return NewSimpleResult(5, info); + } + } + if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) { info = $"鎻掑叆璐т綅瀹瑰櫒鍏崇郴澶辫触锛� + JsonConvert.SerializeObject(locCntrRel); tran.RollbackTran(); @@ -96,7 +127,8 @@ it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, - it.T_MODIFY + it.T_MODIFY, + it.N_CURRENT_NUM, // 璧风偣璐т綅缁戝畾鍚庯紝灏嗚揣浣嶇姸鎬佹洿鏂� }).ExecuteCommand() <= 0) { tran.RollbackTran(); info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�; @@ -139,6 +171,10 @@ /// <summary> /// 鎵樼洏-绌烘墭鍏ュ簱(PDA) /// </summary> + /// <remarks> + /// 浜哄伐灏嗙┖鎵樼洏閫氳繃鎺ラ┏浣嶅叆搴擄紝闇�鏂扮粦瀹氬鍣ㄨ揣浣�br/> + /// 鐢变簬绌烘墭鐩樹竴鑸槸鍑哄簱鍗歌揣鍚庤幏寰楋紝鑰屽嚭搴撴椂娌℃湁鎵嬪姩鍗歌揣鐨勯�杈戯紝鎵�互闇�鍦ㄥ叆搴撶殑鏃跺�鍐嶅垹闄ゆ棫缁戝畾淇℃伅 + /// </remarks> /// <param name="model"></param> /// <returns></returns> public static SimpleResult EmptyInboundPallet(EmptyInboundInfo model) { @@ -164,28 +200,49 @@ return NewSimpleResult(2, info); } - //// 鏌ョ湅瀹瑰櫒鏄惁宸叉湁鐗╂枡缁戝畾 - //var cgDetail = db.Queryable<TN_CG_Detail>() - // .Where(d => d.S_CNTR_CODE == model.CntrCode).First(); - //// 濡傛灉鏈夌粦瀹氱墿鏂欙紝鎶ラ敊锛屽洜涓虹┖鎵樹笉搴旇鏈夌墿鏂�- //if (cgDetail != null) { - // info = $"瀹瑰櫒{model.CntrCode}宸茬粡缁戝畾浜嗙墿鏂檣cgDetail.S_ITEM_CODE}锛屼笉鏄┖鎵樻棤娉曞叆搴�; - // LogHelper.Info(info); - // return NewSimpleResult(3, info); - //} - // 鍋囧畾浜哄伐涓嶄細灏嗘湁鐗╂枡鐨勭瀛愭斁鍦ㄧ┖绠卞叆搴撴帴椹充綅锛屾病鏈夊繀瑕佹鏌� // 濡傛灉浜哄伐灏嗗嚭搴撳悗鐨勬墭鐩樺叆搴擄紝杩欐椂鐗╂枡淇℃伅骞舵病鏈夊垹闄わ紝闇�灏嗘墭鐩樼墿鏂欑殑鍏崇郴瑙i櫎 - var cgDetail = db.Queryable<TN_CG_Detail>() + var cgDetailOld = db.Queryable<TN_CG_Detail>() .Where(d => d.S_CNTR_CODE == model.CntrCode).First(); - var needDeleteDetail = cgDetail != null; - // 缁戝畾璐т綅鍜屽鍣ㄥ彿锛圥DA鍦ㄦ帴椹充綅缁戝畾 + // 濡傛灉浜哄伐灏嗗嚭搴撳悗鐨勬墭鐩樺叆搴擄紝姝ゆ椂瀹瑰櫒浠嶇劧涓庢棫鐨勫嚭搴撹揣浣嶇粦瀹氾紝闇�妫�煡 + var locCntrRelOld = db.Queryable<TN_Loc_Container>() + .Where(c => c.S_CNTR_CODE == model.CntrCode).First(); + + //var locOld = new TN_Location(); + TN_Location locOld = null; + if (locCntrRelOld != null) { // 濡傛灉闇�瑙g粦瀹瑰櫒璐т綅锛屼篃闇�淇敼璐т綅淇℃伅 + locOld = db.Queryable<TN_Location>() + .Where(l => l.S_CODE == locCntrRelOld.S_LOC_CODE).First(); + if (locOld != null) { + locOld.N_CURRENT_NUM = 0; // 濡傛灉鏃ц揣浣嶅瓨鍦紝灏嗘棫璐т綅鐨勬暟閲忚缃负 0 + } + } + //else { + // locOld = null; + //} + + // 缁戝畾璐т綅鍜屽鍣ㄥ彿锛圥DA鍦ㄦ帴椹充綅缁戝畾锛� var locCntrRel = new TN_Loc_Container { S_LOC_CODE = model.StartLoc, S_CNTR_CODE = model.CntrCode, S_CNTR_TYPE = "鎵樼洏", }; + + // 姣忎釜鏂版彃鍏ュ鍣ㄧ殑閫昏緫锛岄兘闇�鏌ヨ杩欎釜琛ㄦ槸鍚﹀瓨鍦紝濡傛灉涓嶅瓨鍦ㄤ篃鍔犲叆锛屽鏋滃瓨鍦細鏆備笉鏇存柊缁撴灉锛堝緟瀹氾級 + // 鏇磋缁嗙殑锛屾槸绌虹鍏ュ簱锛屽拰婊℃枡涓嬬嚎杩欎袱涓祦绋嬬殑瀹瑰櫒鍙兘鏄柊鐨勶紝鍏朵綑瀹瑰櫒涓�畾鏄棫鐨勶紝鏃犻渶鍐嶅垽鏂�+ // 涓ユ牸鏉ヨ锛屽鍣ㄧ被鍨嬪簲璇ユ斁鍦–ontainer閲岄潰鐨勶紝Loc_Container琛ㄥ彧鏀惧叧绯伙紝涓嶈繃鏆傛椂鍏堣繖鏍锋敼鍚�+ var cntrItemRel = db.Queryable<TN_Container_ItemType>() + .Where(c => c.S_CNTR_CODE == locCntrRel.S_CNTR_CODE).First(); + var insertContainerItemType = false; + if (cntrItemRel == null) { + insertContainerItemType = true; + cntrItemRel = new TN_Container_ItemType { + S_ITEM_CODE = "", // 绌烘墭鐩樺垰鍏ュ簱锛屾病鏈夌墿鏂欑被鍨嬶紝灏遍粯璁ゅ厛涓虹┖ + S_CNTR_TYPE = locCntrRel.S_CNTR_TYPE, + S_CNTR_CODE = locCntrRel.S_CNTR_CODE, + }; + } // TODO 鏆傚畾閫夋嫨鏈�綆灞傛寜鍖轰綅椤哄簭鍏ュ簱锛屽悗闈㈠緟淇敼 var endLoc = db.Queryable<TN_Location>() @@ -208,13 +265,49 @@ LocationHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { + if (insertContainerItemType) { + if (db.Insertable<TN_Container_ItemType>(cntrItemRel).ExecuteCommand() <= 0) { + info = $"鎻掑叆瀹瑰櫒淇℃伅澶辫触锛� + JsonConvert.SerializeObject(cntrItemRel); + tran.RollbackTran(); + LogHelper.Info(info); + return NewSimpleResult(5, info); + } + } + + if (cgDetailOld != null) { + if (db.Deleteable<TN_CG_Detail>(cgDetailOld).ExecuteCommand() <= 0) { + info = $"鍒犻櫎鏃х墿鏂欎俊鎭け璐ワ細" + JsonConvert.SerializeObject(cgDetailOld); + tran.RollbackTran(); + LogHelper.Info(info); + return NewSimpleResult(5, info); + } + } + + if (locCntrRelOld != null) { + if (db.Deleteable<TN_Loc_Container>(locCntrRelOld).ExecuteCommand() <= 0) { + info = $"鍒犻櫎鏃ц揣浣嶅鍣ㄥ叧绯诲け璐ワ細" + JsonConvert.SerializeObject(locCntrRelOld); + tran.RollbackTran(); + LogHelper.Info(info); + return NewSimpleResult(5, info); + } + } + + if (locOld != null) { + if (db.Updateable<TN_Location>(locOld).UpdateColumns(l => l.N_CURRENT_NUM).ExecuteCommand() <= 0) { + info = $"鏇存柊鏃ц揣浣嶅鍣ㄦ暟閲忓け璐ワ細" + JsonConvert.SerializeObject(locOld); + tran.RollbackTran(); + LogHelper.Info(info); + return NewSimpleResult(5, info); + } + } + if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) { info = $"鎻掑叆璐т綅瀹瑰櫒鍏崇郴澶辫触锛� + JsonConvert.SerializeObject(locCntrRel); tran.RollbackTran(); LogHelper.Info(info); return NewSimpleResult(5, info); } - + if (db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, @@ -262,6 +355,10 @@ /// <summary> /// 濂借繍绠�绌虹鍏ュ簱(PDA) /// </summary> + /// <remarks> + /// 浜哄伐灏嗙┖绠遍�杩囨帴椹充綅鍏ュ簱锛岄渶瑕佹柊缁戝畾瀹瑰櫒璐т綅<br/> + /// 鐢变簬绌虹涓�埇鏄嚭搴撳嵏璐у悗鑾峰緱锛岃�鍑哄簱鏃舵病鏈夋墜鍔ㄥ嵏璐х殑閫昏緫锛屾墍浠ラ渶瑕佸湪鍏ュ簱鐨勬椂鍊欏啀鍒犻櫎鏃х粦瀹氫俊鎭�+ /// </remarks> /// <returns></returns> public static SimpleResult EmptyInboundGoodpack(EmptyInboundInfo model) { var db = new SqlHelper<object>().GetInstance(); @@ -285,15 +382,27 @@ return NewSimpleResult(2, info); } - // 鏌ョ湅瀹瑰櫒鏄惁宸叉湁鐗╂枡缁戝畾 - var cgDetail = db.Queryable<TN_CG_Detail>() + // 鍋囧畾浜哄伐涓嶄細灏嗘湁鐗╂枡鐨勭瀛愭斁鍦ㄧ┖绠卞叆搴撴帴椹充綅锛屾病鏈夊繀瑕佹鏌�+ // 濡傛灉浜哄伐灏嗗嚭搴撳悗鐨勬墭鐩樺叆搴擄紝杩欐椂鐗╂枡淇℃伅骞舵病鏈夊垹闄わ紝闇�灏嗘墭鐩樼墿鏂欑殑鍏崇郴瑙i櫎 + var cgDetailOld = db.Queryable<TN_CG_Detail>() .Where(d => d.S_CNTR_CODE == model.CntrCode).First(); - // 濡傛灉鏈夌粦瀹氱墿鏂欙紝鎶ラ敊锛屽洜涓虹┖绠变笉搴旇鏈夌墿鏂�- if (cgDetail != null) { - info = $"瀹瑰櫒{model.CntrCode}宸茬粡缁戝畾浜嗙墿鏂檣cgDetail.S_ITEM_CODE}锛屼笉鏄┖绠辨棤娉曞叆搴�; - LogHelper.Info(info); - return NewSimpleResult(3, info); + + // 濡傛灉浜哄伐灏嗗嚭搴撳悗鐨勬墭鐩樺叆搴擄紝姝ゆ椂瀹瑰櫒浠嶇劧涓庢棫鐨勫嚭搴撹揣浣嶇粦瀹氾紝闇�妫�煡 + var locCntrRelOld = db.Queryable<TN_Loc_Container>() + .Where(c => c.S_CNTR_CODE == model.CntrCode).First(); + + //var locOld = new TN_Location(); + TN_Location locOld = null; + if (locCntrRelOld != null) { // 濡傛灉闇�瑙g粦瀹瑰櫒璐т綅锛屼篃闇�淇敼璐т綅淇℃伅 + locOld = db.Queryable<TN_Location>() + .Where(l => l.S_CODE == locCntrRelOld.S_LOC_CODE).First(); + if (locOld != null) { + locOld.N_CURRENT_NUM = 0; // 濡傛灉鏃ц揣浣嶅瓨鍦紝灏嗘棫璐т綅鐨勬暟閲忚缃负 0 + } } + //else { + // locOld = null; + //} // 缁戝畾璐т綅鍜屽鍣ㄥ彿 var locCntrRel = new TN_Loc_Container { @@ -301,6 +410,21 @@ S_CNTR_CODE = model.CntrCode, S_CNTR_TYPE = "濂借繍绠�, }; + + // 姣忎釜鏂版彃鍏ュ鍣ㄧ殑閫昏緫锛岄兘闇�鏌ヨ杩欎釜琛ㄦ槸鍚﹀瓨鍦紝濡傛灉涓嶅瓨鍦ㄤ篃鍔犲叆锛屽鏋滃瓨鍦細鏆備笉鏇存柊缁撴灉锛堝緟瀹氾級 + // 鏇磋缁嗙殑锛屾槸绌虹鍏ュ簱锛屽拰婊℃枡涓嬬嚎杩欎袱涓祦绋嬬殑瀹瑰櫒鍙兘鏄柊鐨勶紝鍏朵綑瀹瑰櫒涓�畾鏄棫鐨勶紝鏃犻渶鍐嶅垽鏂�+ // 涓ユ牸鏉ヨ锛屽鍣ㄧ被鍨嬪簲璇ユ斁鍦–ontainer閲岄潰鐨勶紝Loc_Container琛ㄥ彧鏀惧叧绯伙紝涓嶈繃鏆傛椂鍏堣繖鏍锋敼鍚�+ var cntrItemRel = db.Queryable<TN_Container_ItemType>() + .Where(c => c.S_CNTR_CODE == locCntrRel.S_CNTR_CODE).First(); + var insertContainerItemType = false; + if (cntrItemRel == null) { + insertContainerItemType = true; + cntrItemRel = new TN_Container_ItemType { + S_ITEM_CODE = "", // 绌烘墭鐩樺垰鍏ュ簱锛屾病鏈夌墿鏂欑被鍨嬶紝灏遍粯璁ゅ厛涓虹┖ + S_CNTR_TYPE = locCntrRel.S_CNTR_TYPE, + S_CNTR_CODE = locCntrRel.S_CNTR_CODE, + }; + } // TODO 鏆傚畾閫夋嫨鏈�綆灞傞『搴忓叆搴擄紝鍚庨潰寰呬慨鏀� var endLoc = db.Queryable<TN_Location>() @@ -323,6 +447,42 @@ LocationHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { + if (insertContainerItemType) { + if (db.Insertable<TN_Container_ItemType>(cntrItemRel).ExecuteCommand() <= 0) { + info = $"鎻掑叆瀹瑰櫒淇℃伅澶辫触锛� + JsonConvert.SerializeObject(cntrItemRel); + tran.RollbackTran(); + LogHelper.Info(info); + return NewSimpleResult(5, info); + } + } + + if (cgDetailOld != null) { + if (db.Deleteable<TN_CG_Detail>(cgDetailOld).ExecuteCommand() <= 0) { + info = $"鍒犻櫎鏃х墿鏂欎俊鎭け璐ワ細" + JsonConvert.SerializeObject(cgDetailOld); + tran.RollbackTran(); + LogHelper.Info(info); + return NewSimpleResult(5, info); + } + } + + if (locCntrRelOld != null) { + if (db.Deleteable<TN_Loc_Container>(locCntrRelOld).ExecuteCommand() <= 0) { + info = $"鍒犻櫎鏃ц揣浣嶅鍣ㄥ叧绯诲け璐ワ細" + JsonConvert.SerializeObject(locCntrRelOld); + tran.RollbackTran(); + LogHelper.Info(info); + return NewSimpleResult(5, info); + } + } + + if (locOld != null) { + if (db.Updateable<TN_Location>(locOld).UpdateColumns(l => l.N_CURRENT_NUM).ExecuteCommand() <= 0) { + info = $"鏇存柊鏃ц揣浣嶅鍣ㄦ暟閲忓け璐ワ細" + JsonConvert.SerializeObject(locOld); + tran.RollbackTran(); + LogHelper.Info(info); + return NewSimpleResult(5, info); + } + } + if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) { info = $"鎻掑叆璐т綅瀹瑰櫒鍏崇郴澶辫触锛� + JsonConvert.SerializeObject(locCntrRel); tran.RollbackTran(); @@ -377,6 +537,9 @@ /// <summary> /// 鎵樼洏-绌烘墭涓婄嚎(PDA) /// </summary> + /// <remarks> + /// 浜哄伐鏍规嵁褰撳墠鐢熶骇鐗╂枡鎵�渶鐨勫鍣ㄧ被鍨嬶紝鍛煎彨AGV浠庣┖瀹瑰櫒璐ф灦涓彨涓�釜绗﹀悎瑕佹眰鐨勬墭鐩�+ /// </remarks> /// <param name="model"></param> /// <returns></returns> public static SimpleResult EmptyOnlinePallet(EmptyOnlinePalletInfo model) { @@ -693,6 +856,12 @@ return NewSimpleResult(1, info); } } + + /// <summary> + /// 鎶芥-涓嶅悎鏍肩Щ搴�PDA) + /// </summary> + /// <param name="model"></param> + /// <returns></returns> public static SimpleResult UnqualifiedShift(UnqualifiedShiftInfo model) { var db = new SqlHelper<object>().GetInstance(); var info = ""; @@ -811,6 +980,11 @@ } } + /// <summary> + /// 浣欐枡鍥炲簱/灏剧鍥炲簱(PDA) + /// </summary> + /// <param name="model"></param> + /// <returns></returns> public static SimpleResult RestBack(RestBackInfo model) { var db = new SqlHelper<object>().GetInstance(); var info = ""; @@ -824,17 +998,24 @@ .Where(l => l.N_CURRENT_NUM == 1) .First(); + if (startLoc == null) { + info = $"娌℃湁鎵惧埌璧风偣璐т綅{model.StartLoc}锛屾垨涓嶅叿澶囧彇璐ц姹傦細鏈笂閿併�鏈夎揣鐗�; + LogHelper.Info(info); + return NewSimpleResult(2, info); + } + var locCntrRel = db.Queryable<TN_Loc_Container>() .Where(c => c.S_LOC_CODE == model.StartLoc) .First(); if (locCntrRel == null) { - info = $"娌℃湁鎵惧埌璧风偣璐т綅{model.StartLoc}锛屾垨涓嶅叿澶囧彇璐ц姹傦細鏈笂閿併�鏈夎揣鐗�; + info = $"娌℃湁鎵惧埌璧风偣璐т綅{model.StartLoc}鎵�粦瀹氱殑瀹瑰櫒"; LogHelper.Info(info); return NewSimpleResult(3, info); } - var endLoc = new TN_Location(); + //var endLoc = new TN_Location(); + TN_Location endLoc = null; if (locCntrRel.S_CNTR_TYPE == "鎵樼洏") { endLoc = db.Queryable<TN_Location>() .Where(l => Settings.AreaMap[AreaName.M婊℃墭璐ф灦鍖篯.Contains(l.S_AREA_CODE)) @@ -849,15 +1030,16 @@ .Where(l => l.N_CURRENT_NUM == 0) // 璧风偣缁戝畾鍓嶆病鏈夊鍣� .First(); } - else { - endLoc = null; - } + //else { + // endLoc = null; + //} if (endLoc == null) { info = "鏌ヨ锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅"; LogHelper.Info(info); return NewSimpleResult(3, info); } + var cntId = locCntrRel.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); @@ -911,7 +1093,7 @@ } /// <summary> - /// 鎴愬搧鑳跺嚭搴�PDA) + /// 鎴愬搧鑳跺嚭搴�PDA) 寰呭畾锛屾殏鏃朵笉闇�姝ゅ姛鑳� /// </summary> /// <remarks> /// WMS鎻愪緵鍑哄簱鐨勭墿鏂欑被鍨嬩笌鏁伴噺锛岃皟鐢ㄦ帴鍙g敱WCS鐢熸垚鍏蜂綋鐨勫嚭搴撲换鍔★紝鐒跺悗WCS鍚庡彴杞澶勭悊 @@ -1130,32 +1312,38 @@ } /// <summary> - /// 鍗氬疄鐗╂枡淇℃伅涓嬪彂鍚屾 + /// 鍗氬疄鐗╂枡淇℃伅涓嬪彂鍚屾锛堝彧閽堝濂借繍绠憋級 /// </summary> /// <param name="model"></param> /// <returns></returns> public static MesResult CgInfoSync(CgInfoSyncInfo model) { var db = new SqlHelper<object>().GetInstance(); - var random = new Random(); var info = ""; try { + // 灏嗕笅鍙戠殑淇℃伅鍏堝瓨鍌ㄥ埌CG琛ㄤ腑锛堟鏃舵墭鐩樻病鏈変笌浜х嚎澶勭殑璐т綅缁戝畾锛� var detail = new TN_CG_Detail { S_ITEM_CODE = model.ItemCode, S_ITEM_NAME = model.ItemName, - S_CNTR_CODE = GenerateOrderNo("瀹瑰櫒鍙�, "CN"), // NOTE 瀹瑰櫒鍙凤細鐩墠闅忔満锛堝悗鏈熷彲鑳戒細鎸囧畾锛屾垨鑰匬DA缁戝畾鏃跺啀濉叆锛�+ S_CNTR_CODE = model.CntrCode, // 鏂欑缂栧彿锛堝緟瀹氾紝鐜板湪鏆傛椂璁惧畾涓哄崥瀹炰笅鍙戯級 S_BATCH_NO = model.BatchNo, S_STANDARD = model.Standard, S_NET_WEIGHT = model.NetWeight, S_QUALITY_GRADE = model.QualityGrade, - //N_PRODUCT_LINE = random.Next(0, 3), // NOTE 浜х嚎鍙凤細鐩墠闅忔満锛堝悗鏈熷彲鑳戒細鎸囧畾锛屾垨鑰匬DA缁戝畾鏃跺啀濉叆锛� }; - //var locCntrRel = new TN_Loc_Container { - // //S_LOC_CODE = Settings.Config.ProductionLines[detail.N_PRODUCT_LINE].OffLoc[0], // 濂借繍绠辩殑浣嶇疆鏄搷浣滃尯锛屼笉鏄骇绾�- // S_CNTR_CODE = detail.S_CNTR_CODE, - // S_CNTR_TYPE = "濂借繍绠�, // 璐存爣鏈哄彧閽堝濂借繍绠�- //}; + // 浜х嚎鍙风殑閫昏緫寰呭畾锛岀幇鍦ㄨ瀹氫负鍗氬疄涓嬪彂浜х嚎鍙凤紝鐪嬪悗缁渶姹傚彉鏇�+ // 濂借繍绠辫捣鐐逛负浜х嚎璐т綅锛屼汉宸ュ皢濂借繍绠变粠浜х嚎涓婂彇涓嬶紝鎼繍鍒版弧濂借繍绠辨搷浣滃尯 + //var startLocCode = ""; + //if (model.ProdLineId.Trim() == "3") { + // startLocCode = ""; + //} + + //if (model.ProdLineId.Trim() != "3" || model.ProdLineId.Trim() != "4") { + // info = $"涓嶅悎娉曠殑浜х嚎鍙穥model.ProdLineId}锛氬ソ杩愮浜х嚎鍙峰繀椤讳负 3 鎴�4"; + // LogHelper.Info(info); + // return NewMesResult(2, info); + //} using (var tran = db.Ado.UseTran()) { if (db.Insertable<TN_CG_Detail>(detail).ExecuteCommand() <= 0) { @@ -1163,12 +1351,6 @@ info = "鎻掑叆鐗╂枡淇℃伅澶辫触锛� + JsonConvert.SerializeObject(detail); return NewMesResult(2, info); } - - //if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) { - // tran.RollbackTran(); - // info = "鎻掑叆鐗╂枡淇℃伅澶辫触锛� + JsonConvert.SerializeObject(detail); - // return NewWmsResult(2, info); - //} tran.CommitTran(); } diff --git a/api/ApiModel.cs b/api/ApiModel.cs index 54338ca..f20f1c9 100644 --- a/api/ApiModel.cs +++ b/api/ApiModel.cs @@ -354,6 +354,16 @@ /// </summary> [JsonProperty("qualityGrade")] public string QualityGrade { get; set; } + /// <summary> + /// 鏂欑缂栧彿锛堝緟瀹氾級 + /// </summary> + [JsonProperty("cntrCode")] + public string CntrCode { get; set; } + ///// <summary> + ///// 浜х嚎鍙凤紙寰呭畾锛屽ソ杩愮鏈�鏉′骇绾匡紝瀵瑰簲2涓笅绾胯揣浣嶏紝杩欓噷鏆傚畾涓猴細3鍜�锛�+ ///// </summary> + //[JsonProperty("prodLineId")] + //public string ProdLineId { get; set; } } /// <summary> diff --git a/api/MoboxController.cs b/api/MoboxController.cs index 2e666f3..5b9ce71 100644 --- a/api/MoboxController.cs +++ b/api/MoboxController.cs @@ -44,7 +44,7 @@ else if (model.CntrType == "绌哄ソ杩愮") { return ApiHelper.EmptyInboundGoodpack(model); } - else { + else { // PDA鍓嶇涓嬫媺閫夊崟闄愬埗锛屾晠鐞嗚涓婁笉浼氳繘鍏ヨ繖涓祦绋� return NewSimpleResult(-1, $"瀹瑰櫒绫诲瀷 '{model.CntrType}' 涓嶅悎娉曪細搴斾负 '绌烘墭鐩� 鎴�'绌哄ソ杩愮'"); } } diff --git a/config/config.comment.json b/config/config.comment.json index 66d1192..5c8dc33 100644 --- a/config/config.comment.json +++ b/config/config.comment.json @@ -1,116 +1,74 @@ { - "WebApiUrl": "http://192.168.1.141:8901", //WCS鑷繁鐨勫湴鍧�- "NdcApiUrl": "http://127.0.0.1:5201/api/order/", // + //"WebApiUrl": "http://192.168.1.141:8901", + "WebApiUrl": "http://127.0.0.1:8901", + "NdcApiUrl": "http://127.0.0.1:5201/api/order/", + "ErpApiUrl": "http://127.0.0.1:8085/api/", "SqlServer": "Data Source=192.168.1.87;Initial Catalog=AMS_OIMobox;User ID=sa;Password=123456;", "TcpServerIp": "127.0.0.1", "TcpServerPort": 8085, - "Areas": [ // 璐у尯 + "Areas": [ { "Name": "鍖呰鍖�, "Codes": [ "BZQ" ] }, { - "Name": "鎿嶄綔鍖�, - "Codes": [ "CZQ1", "CZQ2" ] + "Name": "绌虹鎿嶄綔鍖�, + "Codes": [ "KXCZQ" ] }, { - "Name": "璐ф灦鍖�, - "Codes": [ "HJQ1", "HJQ2", "HJQ3", "HJQ4" ] + "Name": "婊$鎿嶄綔鍖�, + "Codes": [ "MXCZQ" ] }, { "Name": "绌烘墭瀛樻斁鍖�, "Codes": [ "KTCFQ" ] }, { - "Name": "绌虹瀛樻斁鍖�, - "Codes": [ "HJQ1" ] + "Name": "绌虹璐ф灦鍖�, + "Codes": [ "KXHJQ" ] }, { - "Name": "婊℃墭瀛樻斁鍖�, - "Codes": [ "HJQ2" ] + "Name": "婊℃墭璐ф灦鍖�, + "Codes": [ "MTHJQ" ] }, { - "Name": "婊$瀛樻斁鍖�, - "Codes": [ "HJQ3" ] + "Name": "婊$璐ф灦鍖�, + "Codes": [ "MXHJQ" ] }, { "Name": "鎶芥鍖�, - "Codes": [ "CJQ1" ] + "Codes": [ "CJQ" ] }, { "Name": "鎶芥寮傚父鍖�, "Codes": [ "CJYCQ" ] }, { - "Name": "绌虹鎿嶄綔鍖�, - "Codes": [ "CZQ1" ] - }, - { - "Name": "婊$鎿嶄綔鍖�, - "Codes": [ "CZQ2" ] - }, - { "Name": "绌烘墭鍏ュ簱鎺ラ┏鍖�, - "Codes": [ "KTRKJBQ" ] + "Codes": [ "KTJBQ" ] }, { "Name": "绌虹鍏ュ簱鎺ラ┏鍖�, - "Codes": [ "KXRKJBQ1", "KXRKJBQ2" ] + "Codes": [ "KXJBQ1", "KXJBQ2" ] }, { - "Name": "姹借溅鍑哄簱澶囪揣鍖�, // 姹借溅鍑哄簱鏈堝彴 - "Codes": [ "CKQ-QC" ] // 鎷奸煶锛氬嚭搴撳尯-姹借溅 + "Name": "姹借溅鍑哄簱鍖�, + "Codes": [ "QCCKQ" ] }, { - "Name": "鐏溅鍑哄簱澶囪揣鍖�, // 鐏溅鍑哄簱鏈堝彴 - "Codes": [ "CKQ-HC" ] // 鎷奸煶锛氬嚭搴撳尯-鐏溅 + "Name": "鐏溅鍑哄簱鍖�, + "Codes": [ "HCCKQ" ] + }, + { + "Name": "姹借溅澶囪揣鍖�, + "Codes": [ "QCBHQ" ] + }, + { + "Name": "鐏溅澶囪揣鍖�, + "Codes": [ "HCBHQ" ] } ], - "Tasks": [ - { - "Name": "鎵樼洏-婊℃墭涓嬬嚎鍏ュ簱", - "StartAreas": [ "BZQ" ], - "EndAreas": [ "HJQ2" ] - }, - { - "Name": "濂借繍绠�婊$涓嬬嚎鍏ュ簱", - "StartAreas": [ "CZQ2" ], - "EndAreas": [ "HJQ3" ] - }, - { - "Name": "鎵樼洏-绌烘墭涓婄嚎", - "StartAreas": [ "KTCFQ" ], - "EndAreas": [ "BZQ" ] - }, - { - "Name": "濂借繍绠�绌虹涓婄嚎", - "StartAreas": [ "HJQ1" ], - "EndAreas": [ "CZQ1" ] - }, - { - "Name": "鎵樼洏-绌烘墭鍏ュ簱", - "StartAreas": [ "KTRKJBQ" ], - "EndAreas": [ "KTCFQ" ] - }, - { - "Name": "濂借繍绠�绌虹鍏ュ簱", - "StartAreas": [ "KXRKJBQ1" ], - "EndAreas": [ "HJQ1" ] - }, - { - "Name": "鎶芥-鍑哄簱" - }, - { - "Name": "鎶芥-鍚堟牸鍥炲簱" - }, - { - "Name": "鎶芥-涓嶅悎鏍肩Щ搴� - }, - { - "Name": "鎴愬搧鑳跺嚭搴� - } - ], - "ProductionLines": [ // 浜х嚎鐨�+ "ProductionLines": [ { "Id": "1", "Name": "鎵樼洏浜х嚎1", diff --git a/core/Monitor.cs b/core/Monitor.cs index c1bb5de..0f935e1 100644 --- a/core/Monitor.cs +++ b/core/Monitor.cs @@ -77,6 +77,7 @@ cntrItemRel = new TN_Container_ItemType { S_ITEM_CODE = itemCode, S_CNTR_CODE = cntrCode, + S_CNTR_TYPE = "鎵樼洏", }; } // END @@ -207,9 +208,10 @@ } public static void CheckOutboundOrder() { - var taskName = TaskName.C鎴愬搧鑳跺嚭搴� var db = new SqlHelper<object>().GetInstance(); - var info = $"杞--{taskName}--"; + var info = ""; + + var taskName = TaskName.C鎴愬搧鑳跺嚭搴� try { var orderList = db.Queryable<TN_Outbound_Order>() @@ -218,7 +220,7 @@ .ToList(); if (orderList.Count == 0) { - info += $"鏆傛棤寰呮墽琛岀殑{taskName}鍗�; + info = $"杞锛歿taskName}锛氭殏鏃犲緟鎵ц鐨剓taskName}鍗�; LogHelper.Info(info); return; } @@ -229,7 +231,7 @@ .Count(d => d.S_OO_NO == order.S_NO && d.N_B_STATE >= 2); // 鎵ц涓� var allCount = db.Queryable<TN_Outbound_Detail>() .Count(d => d.S_OO_NO == order.S_NO); - info += $"缁熻{taskName}鍗�{order.S_NO}'浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}"; + info = $"杞锛歿taskName}锛氱粺璁taskName}鍗�{order.S_NO}'浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}"; LogHelper.Info(info); if (doingCount == allCount) { @@ -243,7 +245,7 @@ .First(); if (lastDetail != null) { - info += $"{taskName}鍗�{order.S_NO}'涓婁竴涓换鍔′粛鍦ㄨ繘琛屼腑锛� + JsonConvert.SerializeObject(lastDetail); + info = $"杞锛歿taskName}锛歿taskName}鍗�{order.S_NO}'涓婁竴涓换鍔′粛鍦ㄨ繘琛屼腑锛� + JsonConvert.SerializeObject(lastDetail); LogHelper.Info(info); continue; } @@ -253,7 +255,7 @@ .First(); if (outboundDetail == null) { - info += $"浠嶆湁浠诲姟鏈墽琛屽畬鎴愶紝浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�; + info = $"杞锛歿taskName}锛氫粛鏈変换鍔℃湭鎵ц瀹屾垚锛屼絾褰撳墠娌℃湁宸蹭笅鍙戠殑浠诲姟"; LogHelper.Info(info); continue; } @@ -269,13 +271,14 @@ foreach (var detail in detailList) { var startLoc = db.Queryable<TN_Location>() .LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE) - .Where((l, c) => c.S_CNTR_CODE == detail.S_CNTR_CODE) + .Where((l, c) => c.S_CNTR_CODE == detail.S_CNTR_CODE) // 鏍规嵁瀹瑰櫒鍙锋悳绱㈣捣鐐硅揣浣� .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .Where(l => l.N_CURRENT_NUM == 1) .First(); if (startLoc == null) { - LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�); + info = $"杞锛歿taskName}锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�; + LogHelper.Info(info); continue; } @@ -285,7 +288,8 @@ .Where(a => a.N_CURRENT_NUM == 0).First(); if (endLoc == null) { - LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛佸崟鍙�{detail.S_OO_NO}'瑕佹眰缁堢偣搴撳尯涓�{detail.S_END_AREA}'"); + info = $"杞锛歿taskName}锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛佸崟鍙�{detail.S_OO_NO}'瑕佹眰缁堢偣搴撳尯涓�{detail.S_END_AREA}'"; + LogHelper.Info(info); continue; } @@ -300,7 +304,7 @@ using (var tran = db.Ado.UseTran()) { if (db.Updateable<TN_Outbound_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { tran.RollbackTran(); - info += $"淇敼鏄庣粏琛ㄧ姸鎬佷负瀹屾垚--澶辫触锛�; + info = $"杞锛歿taskName}锛氫慨鏀规槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触锛�; LogHelper.Info(info); continue; } @@ -312,7 +316,7 @@ it.T_MODIFY }).ExecuteCommand() <= 0) { tran.RollbackTran(); - info += $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�; + info = $"杞锛歿taskName}锛氱敓鎴愪换鍔�{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�; LogHelper.Info(info); continue; } @@ -324,20 +328,20 @@ it.T_MODIFY }).ExecuteCommand() <= 0) { tran.RollbackTran(); - info += $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�; + info = $"杞锛歿taskName}锛氱敓鎴愪换鍔�{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�; LogHelper.Info(info); continue; } if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - info += $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; + info = $"杞锛歿taskName}锛氱敓鎴愪换鍔�{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; LogHelper.Info(info); continue; } tran.CommitTran(); - info += $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; + info = $"杞锛歿taskName}锛氱敓鎴愪换鍔�{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; LogHelper.Info(info); continue; } @@ -376,15 +380,16 @@ } catch (Exception ex) { - info += $"鍙戠敓浜嗗紓甯革細{ex.Message}"; + info = $"杞锛歿taskName}锛氬彂鐢熶簡寮傚父锛歿ex.Message}"; LogHelper.InfoEx(ex); } } public static void CheckCheckOrder() { - var taskName = TaskName.C鎶芥_鍑哄簱; var db = new SqlHelper<object>().GetInstance(); var info = ""; + + var taskName = TaskName.C鎶芥_鍑哄簱; try { var orderList = db.Queryable<TN_Spot_Check>() @@ -393,7 +398,7 @@ .ToList(); if (orderList.Count == 0) { - LogHelper.Info($"杞--{taskName}--鏆傛棤寰呮墽琛岀殑{taskName}鍗�); + LogHelper.Info($"杞锛歿taskName}锛氭殏鏃犲緟鎵ц鐨剓taskName}鍗�); return; } diff --git a/core/WCSCore.cs b/core/WCSCore.cs index b209191..77251ee 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -133,25 +133,27 @@ var info = ""; try { - var cgDetail = new TN_CG_Detail(); + var cgDetail = new TN_CG_Detail(); // 濡傛灉娌℃湁淇℃伅锛岄粯璁ゅ氨鏄┖鍊硷紝鍙互鐩存帴濉叆锛屼笉闇�鍒ゆ柇 - var emptyTask = false; + //var emptyTask = false; // 绌烘墭/绌虹浠诲姟 if (task.S_TYPE != TaskName.H濂借繍绠盻绌虹涓婄嚎 && task.S_TYPE != TaskName.H濂借繍绠盻绌虹鍏ュ簱 && task.S_TYPE != TaskName.T鎵樼洏_绌烘墭涓婄嚎 && task.S_TYPE != TaskName.T鎵樼洏_绌烘墭鍏ュ簱) { - // 闈炵┖鎵樹换鍔★紙绌烘墭浠诲姟鏃犳硶鍦–GDetail鏌ュ埌鐗╂枡淇℃伅锛�- emptyTask= true; + // 闈炵┖鎵�绌虹浠诲姟锛堢┖鎵�绌虹浠诲姟鏃犳硶鍦–GDetail鏌ュ埌鐗╂枡淇℃伅锛�+ //emptyTask= true; cgDetail = db.Queryable<TN_CG_Detail>() .Where(d => d.S_CNTR_CODE == task.S_CNTR_CODE) .First(); if (cgDetail == null) { - info = $"浠诲姟{task.S_CODE}瀹屾垚锛岃褰曞嚭鍏ュ簱澶辫触锛氭棤娉曞湪瀹瑰櫒璐у搧鏄庣粏琛ㄤ腑鎵惧埌鎵樼洏{task.S_CNTR_CODE}瀵瑰簲鐨勭墿鏂�; + info = $"浠诲姟{task.S_CODE}瀹屾垚锛岃褰曞嚭鍏ュ簱瀛樺湪闂锛氭棤娉曞湪瀹瑰櫒璐у搧鏄庣粏琛ㄤ腑鎵惧埌鎵樼洏{task.S_CNTR_CODE}瀵瑰簲鐨勭墿鏂�; LogHelper.Info(info); - return; + //return; + cgDetail = new TN_CG_Detail() ; + cgDetail.S_ITEM_CODE = "寮傚父"; } } - var isInbound = false; + var isInbound = false; // 鍏ュ簱绫诲瀷鐨勪换鍔★紙鍖呮嫭绉诲簱绫讳换鍔★級 var inboundTasks = new List<string> { TaskName.H濂借繍绠盻婊$涓嬬嚎鍏ュ簱, TaskName.H濂借繍绠盻绌虹鍏ュ簱, TaskName.T鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱, TaskName.T鎵樼洏_绌烘墭鍏ュ簱, TaskName.C鎶芥_鍚堟牸鍥炲簱, TaskName.C鎶芥_涓嶅悎鏍肩Щ搴� TaskName.Y绉诲簱 @@ -177,6 +179,8 @@ N_QTY = cgDetail.N_ITEM_NUM, }; + // 鏁版嵁搴撴搷浣�+ if (db.Insertable<TN_Record_Table>(record).ExecuteCommand() <= 0) { info = "鎻掑叆鍑哄叆搴撹褰曡〃澶辫触锛� + JsonConvert.SerializeObject(record); LogHelper.Info(info); @@ -191,6 +195,11 @@ } } + /// <summary> + /// AGV浜х嚎瀹夊叏浜や簰閫昏緫瀹炵幇 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> public static ReturnResult SafetyInteraction(SafetyInteractionInfo model) { var db = new SqlHelper<object>().GetInstance(); var info = ""; @@ -358,8 +367,6 @@ else { LogHelper.Info("鏆傛棤浠诲姟"); } - - } } } diff --git a/models/TN_Container.cs b/models/TN_Container.cs index 8805c0a..c583a63 100644 --- a/models/TN_Container.cs +++ b/models/TN_Container.cs @@ -10,6 +10,10 @@ public class TN_Container : BaseModel { public string S_CODE { get; set; } + public string S_TYPE { get; set; } + + public string S_SPEC { get; set; } + public int N_DETAIL_COUNT { get; set; } [SugarColumn(IsIgnore = true)] diff --git a/models/TN_Container_ItemType.cs b/models/TN_Container_ItemType.cs index f96c228..966e19a 100644 --- a/models/TN_Container_ItemType.cs +++ b/models/TN_Container_ItemType.cs @@ -16,8 +16,8 @@ /// </remarks> [SugarTable("TN_Container_ItemType")] public class TN_Container_ItemType : BaseModel { - public string S_CNTR_CODE { get; set; } - public string S_CNTR_TYPE { get; set; } - public string S_ITEM_CODE { get; set; } + public string S_CNTR_CODE { get; set; } = string.Empty; + public string S_CNTR_TYPE { get; set; } = string.Empty; + public string S_ITEM_CODE { get; set; } = string.Empty; } } diff --git a/wms/LocationHelper.cs b/wms/LocationHelper.cs index 9e86b9c..7be3946 100644 --- a/wms/LocationHelper.cs +++ b/wms/LocationHelper.cs @@ -127,13 +127,19 @@ } /// <summary> - /// 璧风偣鍑哄簱閿�+ /// 璧风偣鍑哄簱閿侊紙鍙兘瀵规棤閿佽揣浣嶄笂閿侊級 /// </summary> /// <param name="loc"></param> /// <param name="lockSource"></param> /// <returns></returns> public static bool LockStartLoc(ref TN_Location loc, string lockSource = "") { - if (loc == null || loc.N_LOCK_STATE != 0) { + if (loc == null) { + LogHelper.Info($"璧风偣鍑哄簱閿侊細浼犲叆鐨勮揣浣嶅弬鏁颁负null"); + return false; + } + + if (loc.N_LOCK_STATE != 0 || loc.S_LOCK_STATE != "鏃�) { + LogHelper.Info($"璧风偣鍑哄簱閿侊細璐т綅褰撳墠宸叉湁閿�{loc.N_LOCK_STATE},{loc.S_LOCK_STATE})"); return false; } @@ -148,7 +154,13 @@ } public static bool LockEndLoc(ref TN_Location loc, string lockSource = "") { - if (loc == null || loc.N_LOCK_STATE != 0) { + if (loc == null) { + LogHelper.Info($"缁堢偣鍏ュ簱閿侊細浼犲叆鐨勮揣浣嶅弬鏁颁负null"); + return false; + } + + if (loc.N_LOCK_STATE != 0 || loc.S_LOCK_STATE != "鏃�) { + LogHelper.Info($"缁堢偣鍏ュ簱閿侊細璐т綅褰撳墠宸叉湁閿�{loc.N_LOCK_STATE},{loc.S_LOCK_STATE})"); return false; } @@ -313,9 +325,17 @@ var bindLocCntList = new List<TN_Loc_Container>(); foreach (var item in cntrs) { - bindLocCntList.Add(new TN_Loc_Container() { S_LOC_CODE = loc, S_CNTR_CODE = item }); + // 閽堝瀹瑰櫒绫诲瀷娣诲姞鐨勬柊閫昏緫 + var cntrItemRel = db.Queryable<TN_Container_ItemType>() + .Where(c => c.S_CNTR_CODE == item).First(); + if (cntrItemRel == null) { + LogHelper.Info($"璐т綅瑙g粦鏃讹紝瀹瑰櫒{item}娌℃湁鍦ㄥ鍣ㄧ墿鏂欎俊鎭叧绯昏〃涓煡鍒�); + bindLocCntList.Add(new TN_Loc_Container() { S_LOC_CODE = loc, S_CNTR_CODE = item }); + } + else { + bindLocCntList.Add(new TN_Loc_Container() { S_LOC_CODE = loc, S_CNTR_CODE = item, S_CNTR_TYPE = cntrItemRel.S_CNTR_TYPE }); + } } - var log = JsonConvert.SerializeObject(bindLocCntList); -- Gitblit v1.9.1