From 59dc2aa6e3fe7f699c4f2d03b774763142c5698d Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期六, 05 七月 2025 17:31:54 +0800 Subject: [PATCH] 添加货位容器关系表锁、调整货架行号和记录表同步逻辑 --- models/TN_Loc_Container.cs | 7 + Program.cs | 3 wms/LocationHelper.cs | 16 -- core/Monitor.cs | 120 +++++++++++++++++++ /dev/null | 0 api/AgvController.cs | 1 .vs/HH.WCS.Mobox3.AnGang/FileContentIndex/34ca764b-7d34-4fbf-b885-47b92ae831ee.vsidx | 0 api/ApiHelper.cs | 165 +++++++++++++++++--------- .vs/HH.WCS.Mobox3.AnGang/FileContentIndex/1b7f29d3-94a7-4eab-a19b-3b99fefb9d52.vsidx | 0 api/ApiModel.cs | 10 + .vs/HH.WCS.Mobox3.AnGang/FileContentIndex/ccea7477-49f1-46b2-a1d0-45ffab1fc2c9.vsidx | 0 core/WCSCore.cs | 2 12 files changed, 247 insertions(+), 77 deletions(-) diff --git a/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/040fc824-81e8-4390-903b-5e7d705a18ce.vsidx b/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/040fc824-81e8-4390-903b-5e7d705a18ce.vsidx deleted file mode 100644 index c8c3172..0000000 --- a/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/040fc824-81e8-4390-903b-5e7d705a18ce.vsidx +++ /dev/null Binary files differ diff --git a/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/1b7f29d3-94a7-4eab-a19b-3b99fefb9d52.vsidx b/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/1b7f29d3-94a7-4eab-a19b-3b99fefb9d52.vsidx new file mode 100644 index 0000000..7c60500 --- /dev/null +++ b/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/1b7f29d3-94a7-4eab-a19b-3b99fefb9d52.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/34ca764b-7d34-4fbf-b885-47b92ae831ee.vsidx b/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/34ca764b-7d34-4fbf-b885-47b92ae831ee.vsidx new file mode 100644 index 0000000..7f4c111 --- /dev/null +++ b/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/34ca764b-7d34-4fbf-b885-47b92ae831ee.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/5ccf4a7c-ee31-4f90-9aba-eb5f05866b98.vsidx b/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/5ccf4a7c-ee31-4f90-9aba-eb5f05866b98.vsidx deleted file mode 100644 index 410db45..0000000 --- a/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/5ccf4a7c-ee31-4f90-9aba-eb5f05866b98.vsidx +++ /dev/null Binary files differ diff --git a/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/67c4855d-af0b-4d46-837b-fbaab232d736.vsidx b/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/67c4855d-af0b-4d46-837b-fbaab232d736.vsidx deleted file mode 100644 index bb3f97f..0000000 --- a/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/67c4855d-af0b-4d46-837b-fbaab232d736.vsidx +++ /dev/null Binary files differ diff --git a/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/ccea7477-49f1-46b2-a1d0-45ffab1fc2c9.vsidx b/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/ccea7477-49f1-46b2-a1d0-45ffab1fc2c9.vsidx new file mode 100644 index 0000000..d34272f --- /dev/null +++ b/.vs/HH.WCS.Mobox3.AnGang/FileContentIndex/ccea7477-49f1-46b2-a1d0-45ffab1fc2c9.vsidx Binary files differ diff --git a/Program.cs b/Program.cs index af3c7cb..84cf1fb 100644 --- a/Program.cs +++ b/Program.cs @@ -129,6 +129,9 @@ tasks.Add(GetTask(WCSCore.Dispatch)); //tasks.Add(GetTask(Monitor.CheckCountOrder)); + tasks.Add(GetTask(Monitor.InboundDataSync)); + tasks.Add(GetTask(Monitor.OutboundDataSync)); + Task.WaitAll(tasks.ToArray()); } public void Stop() { Console.WriteLine("work stopped"); } diff --git a/api/AgvController.cs b/api/AgvController.cs index b807d60..617a9ab 100644 --- a/api/AgvController.cs +++ b/api/AgvController.cs @@ -17,7 +17,6 @@ /// <summary> /// 璁惧淇℃伅涓婃姤锛坔osttoagv涓婃姤銆佹澀濂ュ爢鍨涙満銆佸浗鑷猘gv锛� /// </summary> - [RoutePrefix("agv")] public class AgvController : ApiController { /// <summary> diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs index 9b0fc26..3fe27af 100644 --- a/api/ApiHelper.cs +++ b/api/ApiHelper.cs @@ -9,6 +9,8 @@ using HH.WCS.Mobox3.AnGang.util; using HH.WCS.Mobox3.AnGang.wms; +using Newtonsoft.Json; + using static HH.WCS.Mobox3.AnGang.api.ApiModel; using static HH.WCS.Mobox3.AnGang.api.OtherModel; @@ -30,7 +32,7 @@ var startLoc = db.Queryable<TN_Location>() .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.N_CURRENT_NUM == 0) .Where(a => startAreas.Contains(a.S_AREA_CODE)) .First(); @@ -76,9 +78,9 @@ if (!int.TryParse(model.Row.Trim(), out int row)) { return BuildSimpleResult(2, $"{model.Row} 涓嶅悎娉曪細鏃犳硶杞垚鏁存暟绫诲瀷"); } - // 璐ф灦鎺掑彿鍙兘鏄�0 - 8 - if (row <= 0 || row > 8) { - return BuildSimpleResult(2, $"璐ф灦鍙�{model.Row} 蹇呴』鏄�-8涔嬮棿鐨勬暣鏁�); + // 璐ф灦鎺掑彿鍙兘鏄�0 - 8锛�11-118锛�+ if (row <= 110 || row > 118) { + return BuildSimpleResult(2, $"璐ф灦鍙�{model.Row} 蹇呴』鏄�11-118涔嬮棿鐨勬暣鏁�); } } @@ -202,9 +204,9 @@ if (!int.TryParse(model.Row.Trim(), out int row)) { return BuildSimpleResult(2, $"{model.Row} 涓嶅悎娉曪細鏃犳硶杞垚鏁存暟绫诲瀷"); } - // 璐ф灦鎺掑彿鍙兘鏄�0 - 8 - if (row <= 0 || row > 8) { - return BuildSimpleResult(2, $"璐ф灦鍙�{model.Row} 蹇呴』鏄�-8涔嬮棿鐨勬暣鏁�); + // 璐ф灦鎺掑彿鍙兘鏄�0 - 8锛�11-118锛�+ if (row <= 110 || row > 118) { + return BuildSimpleResult(2, $"璐ф灦鍙�{model.Row} 蹇呴』鏄�11-118涔嬮棿鐨勬暣鏁�); } } @@ -617,11 +619,25 @@ var db = new SqlHelper<object>().GetInstance(); try { - var err = ""; - var cgDetailList = new List<TN_CG_Detail>(); - var recordList = new List<TN_Inbound_DataRecord>(); + if (model.stockTransactions.Count == 0) { + return BuildErpResult(400, "涓嶈兘浼犲叆绌虹殑鏁版嵁鍒楄〃"); + } + + //var info = ""; + //var cgDetailList = new List<TN_CG_Detail>(); + var insetRecordList = new List<TN_Inbound_DataRecord>(); + var deleteRecordOldList = new List<TN_Inbound_DataRecord> (); + //var errList = new List<TN_Inbound_DataRecord>(); foreach (var transaction in model.stockTransactions) { + var recordOld = db.Queryable<TN_Inbound_DataRecord>() + .Where(r => r.S_LOCATION_CODE == transaction.locationCode).First(); + if (recordOld != null) { + deleteRecordOldList.Add(recordOld); + //errList.Add(recordOld); + //continue; + } + // 鍐欏叆璁板綍琛� var record = new TN_Inbound_DataRecord { S_LOCATION_CODE = transaction.locationCode, @@ -639,44 +655,58 @@ S_SUPPLIER_NAME = transaction.supplierName, S_INVENTORY_MAN = transaction.inventoryManager }; - recordList.Add(record); + insetRecordList.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(); + //// 鏌ヨ瀵瑰簲鐗╂枡 + //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; + //if (cgDetail == null) { + // err += $"鍌ㄤ綅鐮亄transaction.locationCode}瀵瑰簲鐨勮揣浣嶇墿鏂欎笉瀛樺湪锛�; + // continue; + //} + //cgDetail.S_ITEM_CODE = transaction.itemCode; + //cgDetail.S_ITEM_NAME = transaction.itemName; - cgDetailList.Add(cgDetail); + //cgDetailList.Add(cgDetail); } using (var tran = db.Ado.UseTran()) { - if (db.Insertable<TN_Inbound_DataRecord>(recordList).ExecuteCommand() <= 0) { + if (deleteRecordOldList.Count != 0 && db.Deleteable<TN_Inbound_DataRecord>(deleteRecordOldList).ExecuteCommand() <= 0) { tran.RollbackTran(); - return BuildErpResult(500, $"鍐欏叆鍏ュ簱璁板綍琛ㄥけ璐�); + return BuildErpResult(500, $"鍒犻櫎鏃у叆搴撹褰曟暟鎹け璐ワ細{JsonConvert.SerializeObject(deleteRecordOldList)}"); } - if (db.Updateable<TN_CG_Detail>(cgDetailList).ExecuteCommand() <= 0) { + if (db.Insertable<TN_Inbound_DataRecord>(insetRecordList).ExecuteCommand() <= 0) { tran.RollbackTran(); - return BuildErpResult(500, $"鏇存敼鐗╂枡淇℃伅澶辫触"); + return BuildErpResult(500, $"鍐欏叆鍏ュ簱璁板綍琛ㄥけ璐�"); } + + //if (db.Updateable<TN_CG_Detail>(cgDetailList).ExecuteCommand() <= 0) { + // tran.RollbackTran(); + // return BuildErpResult(500, $"鏇存敼鐗╂枡淇℃伅澶辫触锛佸緟鏇存柊鐗╂枡淇℃伅鏁伴噺={cgDetailList.Count}"); + //} tran.CommitTran(); + return BuildErpResult(0, $"鍐欏叆鍏ュ簱璁板綍琛ㄦ垚鍔�"); } - if (err != "") { - return BuildErpResult(2, err + "鍏朵粬淇℃伅姝e父宸插啓鍏�); - } - return BuildErpResult(0, $"鏇存敼鐗╂枡淇℃伅鎴愬姛"); + //if (err != "") { + // return BuildErpResult(2, err + "鍏朵粬淇℃伅姝e父宸插啓鍏�); + //} + //return BuildErpResult(0, $"鏇存敼鐗╂枡淇℃伅鎴愬姛"); + // NOTE锛氭殏鏃朵笉妫�煡锛屼竾涓�RP鍙戦敊浜嗭紝鍙互閫夋嫨閲嶅彂 + + //if (errList.Count > 0) { + // info = "鏇存敼鐗╂枡淇℃伅閮ㄥ垎鎴愬姛锛岄儴鍒嗗け璐ワ紝鍘熷洜锛氬綋鍓嶈揣浣嶅凡缁忕粰杩囩墿鏂欎俊鎭�; + //} + //else { + // info = "鏇存敼鐗╂枡淇℃伅鎴愬姛!"; + //} } catch (Exception ex) { return BuildErpResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); @@ -688,11 +718,24 @@ var db = new SqlHelper<object>().GetInstance(); try { - var err = ""; - var cgDetailList = new List<TN_CG_Detail>(); - var recordList = new List<TN_Outbound_DataRecord>(); + if (model.materialIssues.Count == 0) { + return BuildErpResult(400, "涓嶈兘浼犲叆绌虹殑鏁版嵁鍒楄〃"); + } + //var err = ""; + //var cgDetailList = new List<TN_CG_Detail>(); + //var recordList = new List<TN_Outbound_DataRecord>(); + var insetRecordList = new List<TN_Outbound_DataRecord>(); + var deleteRecordOldList = new List<TN_Outbound_DataRecord>(); foreach (var issue in model.materialIssues) { + var recordOld = db.Queryable<TN_Outbound_DataRecord>() + .Where(r => r.S_LOCATION_CODE == issue.locationCode).First(); + if (recordOld != null) { + deleteRecordOldList.Add(recordOld); + //errList.Add(recordOld); + //continue; + } + // 鍐欏叆璁板綍琛� var record = new TN_Outbound_DataRecord { S_LOCATION_CODE = issue.locationCode, @@ -709,44 +752,50 @@ S_LINE_CODE = issue.lineCode, S_BATCH_NO = issue.batchNo }; - recordList.Add(record); + insetRecordList.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(); + //// 鏌ヨ瀵瑰簲鐗╂枡 + //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; - } + //if (cgDetail == null) { + // err += $"鍌ㄤ綅鐮亄issue.locationCode}瀵瑰簲鐨勮揣浣嶇墿鏂欎笉瀛樺湪锛�; + // continue; + //} - cgDetail.S_ITEM_CODE = issue.itemCode; - cgDetail.S_ITEM_NAME = issue.itemName; + //cgDetail.S_ITEM_CODE = issue.itemCode; + //cgDetail.S_ITEM_NAME = issue.itemName; - cgDetailList.Add(cgDetail); + //cgDetailList.Add(cgDetail); } using (var tran = db.Ado.UseTran()) { - if (db.Insertable<TN_Outbound_DataRecord>(recordList).ExecuteCommand() <= 0) { + if (deleteRecordOldList.Count != 0 && db.Deleteable<TN_Outbound_DataRecord>(deleteRecordOldList).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildErpResult(500, $"鍒犻櫎鏃у嚭搴撹褰曟暟鎹け璐ワ細{JsonConvert.SerializeObject(deleteRecordOldList)}"); + } + + if (db.Insertable<TN_Outbound_DataRecord>(insetRecordList).ExecuteCommand() <= 0) { tran.RollbackTran(); return BuildErpResult(500, $"鍐欏叆鍑哄簱璁板綍琛ㄥけ璐�); } - if (db.Updateable<TN_CG_Detail>(cgDetailList).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return BuildErpResult(500, $"鏇存敼鐗╂枡淇℃伅澶辫触"); - } + //if (db.Updateable<TN_CG_Detail>(cgDetailList).ExecuteCommand() <= 0) { + // tran.RollbackTran(); + // return BuildErpResult(500, $"鏇存敼鐗╂枡淇℃伅澶辫触"); + //} tran.CommitTran(); + return BuildErpResult(0, $"鍐欏叆鍑哄簱璁板綍琛ㄦ垚鍔�"); } - if (err != "") { - return BuildErpResult(2, err + "鍏朵粬淇℃伅姝e父宸插啓鍏�); - } - return BuildErpResult(0, $"鏇存敼鐗╂枡淇℃伅鎴愬姛"); + //if (err != "") { + // return BuildErpResult(2, err + "鍏朵粬淇℃伅姝e父宸插啓鍏�); + //} + //return BuildErpResult(0, $"鏇存敼鐗╂枡淇℃伅鎴愬姛"); } catch (Exception ex) { diff --git a/api/ApiModel.cs b/api/ApiModel.cs index 0b61204..b77c8bb 100644 --- a/api/ApiModel.cs +++ b/api/ApiModel.cs @@ -108,6 +108,16 @@ /// 棰濆淇℃伅2 /// </summary> public string extraInfo2 { get; set; } + + /// <summary> + /// 鍒涘缓鐢ㄦ埛 + /// </summary> + public string createUser { get; set; } + + /// <summary> + /// 鐘舵�鏇存敼鏃堕棿 + /// </summary> + public string statusChangeTime { get; set; } } /// <summary> diff --git a/core/Monitor.cs b/core/Monitor.cs index d7c3deb..35739ea 100644 --- a/core/Monitor.cs +++ b/core/Monitor.cs @@ -8,6 +8,7 @@ using System; using System.Collections.Generic; +using System.Linq; namespace HH.WCS.Mobox3.AnGang.core { /// <summary> @@ -15,7 +16,124 @@ /// </summary> public class Monitor { - + public static void InboundDataSync() { + var db = new SqlHelper<object>().GetInstance(); + try { + var inboundDataList = db.Queryable<TN_Inbound_DataRecord>().ToList(); + LogHelper.Info($"杞锛氬叆搴撲俊鎭悓姝ワ細褰撳墠娌℃湁寰呭悓姝ョ殑ERP鐗╂枡淇℃伅"); + + var needDeleteDataList = new List<TN_Inbound_DataRecord>(); + var needUpdateLocCntrRelList = new List<TN_Loc_Container>(); + var needUpdateCgDetailList = new List<TN_CG_Detail>(); + foreach (var inboundData in inboundDataList) { + var locCntrRel = db.Queryable<TN_Loc_Container>().Where(c => c.S_LOC_CODE == inboundData.S_LOCATION_CODE).First(); + // 鏆傛椂涓嶈�铏戝鏋滃綋鍓嶅叧绯昏〃锛岄攣鐘舵�涓�锛堝凡缁廍RP瑕嗙洊杩囷級鐨勬儏鍐碉紝榛樿鏈夊氨瑕嗙洊 + if (locCntrRel != null) { + var cgDetail = db.Queryable<TN_CG_Detail>().Where(d => d.S_CNTR_CODE == locCntrRel.S_CNTR_CODE).First(); + if (cgDetail == null) { + LogHelper.Info($"杞锛氬叆搴撲俊鎭悓姝ワ細璐т綅瀹瑰櫒琛ㄤ腑锛屽寘鍚揣浣�{locCntrRel.S_LOC_CODE}, 瀹瑰櫒={locCntrRel.S_CNTR_CODE}锛涗絾瀹瑰櫒瀵瑰簲鐨勭墿鏂欒〃锛屾病鏈夋壘鍒扮墿鏂欙紒"); + continue; + } + cgDetail.S_ITEM_CODE = inboundData.S_ITEM_CODE; + cgDetail.T_MODIFY = DateTime.Now; + locCntrRel.N_LOCK_STATE = 1; + locCntrRel.T_MODIFY = DateTime.Now; + needUpdateLocCntrRelList.Add(locCntrRel); + needUpdateCgDetailList.Add(cgDetail); + needDeleteDataList.Add(inboundData); + } + } + + using (var tran = db.Ado.UseTran()) { + if (needDeleteDataList.Count > 0 && db.Deleteable<TN_Inbound_DataRecord>(needDeleteDataList).ExecuteCommand() <= 0) { + tran.RollbackTran(); + LogHelper.Info($"杞锛氬叆搴撲俊鎭悓姝ワ細鍒犻櫎宸叉湁鐗╂枡鐨勫叆搴撲俊鎭〃澶辫触锛� + JsonConvert.SerializeObject(needDeleteDataList)); + return; + } + + if (needUpdateCgDetailList.Count > 0 && db.Updateable<TN_CG_Detail>(needUpdateCgDetailList).ExecuteCommand() <= 0) { + tran.RollbackTran(); + LogHelper.Info($"杞锛氬叆搴撲俊鎭悓姝ワ細鏍规嵁ERP淇℃伅锛屾洿鏂扮墿鏂欎俊鎭〃澶辫触锛� + JsonConvert.SerializeObject(needUpdateCgDetailList)); + return; + } + + if (needUpdateLocCntrRelList.Count > 0 && db.Updateable<TN_Loc_Container>(needUpdateLocCntrRelList).ExecuteCommand() <= 0) { + tran.RollbackTran(); + LogHelper.Info($"杞锛氬叆搴撲俊鎭悓姝ワ細鏍规嵁ERP淇℃伅锛屾洿鏂拌揣浣嶅鍣ㄥ叧绯昏〃澶辫触锛� + JsonConvert.SerializeObject(needUpdateLocCntrRelList)); + return; + } + + tran.CommitTran(); + LogHelper.Info($"杞锛氬叆搴撲俊鎭悓姝ワ細鏍规嵁ERP淇℃伅锛屾洿鏀硅揣浣嶅鍣ㄥ叧绯汇�璐у搧鏄庣粏鎴愬姛锛佸凡鏇存敼璐т綅锛� + JsonConvert.SerializeObject(needUpdateLocCntrRelList.Select(c => c.S_LOC_CODE).ToArray())); + } + + } + catch (Exception ex) { + + LogHelper.Info($"鍙戠敓浜嗗紓甯革細{ex.Message}"); + } + } + + public static void OutboundDataSync() { + var db = new SqlHelper<object>().GetInstance(); + try { + var outboundDataList = db.Queryable<TN_Outbound_DataRecord>().ToList(); + + if (outboundDataList.Count== 0 ) { + LogHelper.Info($"杞锛氬嚭搴撲俊鎭悓姝ワ細褰撳墠娌℃湁寰呭悓姝ョ殑ERP鐗╂枡淇℃伅"); + } + + var needDeleteDataList = new List<TN_Outbound_DataRecord>(); + var needUpdateLocCntrRelList = new List<TN_Loc_Container>(); + var needUpdateCgDetailList = new List<TN_CG_Detail>(); + foreach (var outboundData in outboundDataList) { + var locCntrRel = db.Queryable<TN_Loc_Container>().Where(c => c.S_LOC_CODE == outboundData.S_LOCATION_CODE).First(); + // 鏆傛椂涓嶈�铏戝鏋滃綋鍓嶅叧绯昏〃锛岄攣鐘舵�涓�锛堝凡缁廍RP瑕嗙洊杩囷級鐨勬儏鍐碉紝榛樿鏈夊氨瑕嗙洊 + if (locCntrRel != null) { + var cgDetail = db.Queryable<TN_CG_Detail>().Where(d => d.S_CNTR_CODE == locCntrRel.S_CNTR_CODE).First(); + if (cgDetail == null) { + LogHelper.Info($"杞锛氬嚭搴撲俊鎭悓姝ワ細璐т綅瀹瑰櫒琛ㄤ腑锛屽寘鍚揣浣�{locCntrRel.S_LOC_CODE}, 瀹瑰櫒={locCntrRel.S_CNTR_CODE}锛涗絾瀹瑰櫒瀵瑰簲鐨勭墿鏂欒〃锛屾病鏈夋壘鍒扮墿鏂欙紒"); + continue; + } + cgDetail.S_ITEM_CODE = outboundData.S_ITEM_CODE; + cgDetail.T_MODIFY = DateTime.Now; + locCntrRel.N_LOCK_STATE = 1; + locCntrRel.T_MODIFY = DateTime.Now; + needUpdateLocCntrRelList.Add(locCntrRel); + needUpdateCgDetailList.Add(cgDetail); + needDeleteDataList.Add(outboundData); + } + } + + using (var tran = db.Ado.UseTran()) { + if (needDeleteDataList.Count > 0 && db.Deleteable<TN_Outbound_DataRecord>(needDeleteDataList).ExecuteCommand() <= 0) { + tran.RollbackTran(); + LogHelper.Info($"杞锛氬嚭搴撲俊鎭悓姝ワ細鍒犻櫎宸叉湁鐗╂枡鐨勫嚭搴撲俊鎭〃澶辫触锛� + JsonConvert.SerializeObject(needDeleteDataList)); + return; + } + + if (needUpdateCgDetailList.Count > 0 && db.Updateable<TN_CG_Detail>(needUpdateCgDetailList).ExecuteCommand() <= 0) { + tran.RollbackTran(); + LogHelper.Info($"杞锛氬嚭搴撲俊鎭悓姝ワ細鏍规嵁ERP淇℃伅锛屾洿鏂扮墿鏂欎俊鎭〃澶辫触锛� + JsonConvert.SerializeObject(needUpdateCgDetailList)); + return; + } + + if (needUpdateLocCntrRelList.Count > 0 && db.Updateable<TN_Loc_Container>(needUpdateLocCntrRelList).ExecuteCommand() <= 0) { + tran.RollbackTran(); + LogHelper.Info($"杞锛氬嚭搴撲俊鎭悓姝ワ細鏍规嵁ERP淇℃伅锛屾洿鏂拌揣浣嶅鍣ㄥ叧绯昏〃澶辫触锛� + JsonConvert.SerializeObject(needUpdateLocCntrRelList)); + return; + } + + tran.CommitTran(); + LogHelper.Info($"杞锛氬嚭搴撲俊鎭悓姝ワ細鏍规嵁ERP淇℃伅锛屾洿鏀硅揣浣嶅鍣ㄥ叧绯汇�璐у搧鏄庣粏鎴愬姛锛佸凡鏇存敼璐т綅锛� + JsonConvert.SerializeObject(needUpdateLocCntrRelList.Select(c => c.S_LOC_CODE).ToArray())); + } + + } + catch (Exception ex) { + + LogHelper.Info($"鍙戠敓浜嗗紓甯革細{ex.Message}"); + } + } } } diff --git a/core/WCSCore.cs b/core/WCSCore.cs index 7464964..383223a 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -206,6 +206,8 @@ return; } + //row -= 100; // 118-1 + // 鍙綋涔嬪墠鎸囧畾缁堢偣璐ф灦鍚庯紝鎵嶅皾璇曡绠楃粓鐐硅揣浣� if (cgDetail.F_QTY > 2000) { // 閲嶉噺瓒呰繃 2t diff --git a/models/TN_Loc_Container.cs b/models/TN_Loc_Container.cs index 0c58e8a..27a7a04 100644 --- a/models/TN_Loc_Container.cs +++ b/models/TN_Loc_Container.cs @@ -9,7 +9,12 @@ { public string S_LOC_CODE { get; set; } public string S_CNTR_CODE { get; set; } - + + /// <summary> + /// 璐т綅瀹瑰櫒琛紝閿佺姸鎬侊紝榛樿涓�锛堥攣瀹氾細璐у搧鍏ュ簱锛屼絾娌℃湁鏇存柊ERP淇℃伅锛屼笉鑳藉嚭搴擄級<br/> + /// 褰揈RP淇℃伅瑕嗙洊鍚庯紝鏀逛负1锛岃〃绀哄彲浠ュ嚭鍏ュ簱 + /// </summary> + public int N_LOCK_STATE { get; set; } = 0; [Navigate(NavigateType.OneToMany, nameof(TN_CG_Detail.S_CNTR_CODE))] public List<TN_CG_Detail> CntrItemRels { get; set; } diff --git a/wms/LocationHelper.cs b/wms/LocationHelper.cs index 20adf2f..246ed9d 100644 --- a/wms/LocationHelper.cs +++ b/wms/LocationHelper.cs @@ -105,22 +105,6 @@ { site = Location.S_AGV_SITE; } - //if (Location.N_CURRENT_NUM == 1) - //{ - // site = Location.S_AGV_SITE2; - //} - //if (Location.N_CURRENT_NUM == 2) - //{ - // site = Location.S_AGV_SITE3; - //} - //if (Location.N_CURRENT_NUM == 3) - //{ - // site = Location.S_AGV_SITE4; - //} - //if (Location.N_CURRENT_NUM == 4) - //{ - // site = Location.S_AGV_SITE5; - //} } } } -- Gitblit v1.9.1