From de8cd5585ba690902333cf4ce9aa5dbc7eb9acf6 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期三, 28 五月 2025 17:29:33 +0800 Subject: [PATCH] 根据业务重构库区,增加记录表,开始ERP下发反馈逻辑开发 --- wms/SYSHelper.cs | 62 ++ Models/TN_Loc_Container.cs | 5 models/TN_RelocationList_Detail.cs | 6 Program.cs | 2 core/Monitor.cs | 50 ++ api/ErpController.cs | 12 /dev/null | 17 .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/f744ef35-4f64-4a61-abee-af81aa222790.vsidx | 0 config/config.json | 85 +--- .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/cb0eed0a-5128-4296-811d-7549d46790a5.vsidx | 0 models/TN_Shipping_Order.cs | 11 api/ApiModel.cs | 32 + core/WCSCore.cs | 104 +---- HH.WCS.Mobox3.DSZSH.csproj | 8 .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/71a55ff9-7db4-4aa9-9789-25ab0233a3db.vsidx | 0 api/DebugController.cs | 97 +++- models/TN_Relocation_List.cs | 6 util/Settings.cs | 87 ++-- .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/b024e27a-9190-40bd-b5fa-a582e167513a.vsidx | 0 models/TN_Record_Table.cs | 105 +++++ Models/TN_Location.cs | 23 + api/ApiHelper.cs | 318 +++------------- api/WMSController.cs | 4 api/MoboxController.cs | 92 ---- 24 files changed, 506 insertions(+), 620 deletions(-) diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/6450fb4e-6068-4bff-9055-f0bd1f177c4d.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/6450fb4e-6068-4bff-9055-f0bd1f177c4d.vsidx deleted file mode 100644 index 2fa8974..0000000 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/6450fb4e-6068-4bff-9055-f0bd1f177c4d.vsidx +++ /dev/null Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/71a55ff9-7db4-4aa9-9789-25ab0233a3db.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/71a55ff9-7db4-4aa9-9789-25ab0233a3db.vsidx new file mode 100644 index 0000000..f836484 --- /dev/null +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/71a55ff9-7db4-4aa9-9789-25ab0233a3db.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/798bf6bf-6818-456f-ab4b-aad13079f168.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/798bf6bf-6818-456f-ab4b-aad13079f168.vsidx deleted file mode 100644 index 60539af..0000000 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/798bf6bf-6818-456f-ab4b-aad13079f168.vsidx +++ /dev/null Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/870c2cc4-322b-42e1-a32f-bc410b5f82a5.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/870c2cc4-322b-42e1-a32f-bc410b5f82a5.vsidx deleted file mode 100644 index 949bf0b..0000000 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/870c2cc4-322b-42e1-a32f-bc410b5f82a5.vsidx +++ /dev/null Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/b024e27a-9190-40bd-b5fa-a582e167513a.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/b024e27a-9190-40bd-b5fa-a582e167513a.vsidx new file mode 100644 index 0000000..829ce45 --- /dev/null +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/b024e27a-9190-40bd-b5fa-a582e167513a.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/c9195d04-088d-47d3-be93-4565501364ba.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/c9195d04-088d-47d3-be93-4565501364ba.vsidx deleted file mode 100644 index 2429cb4..0000000 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/c9195d04-088d-47d3-be93-4565501364ba.vsidx +++ /dev/null Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/cb0eed0a-5128-4296-811d-7549d46790a5.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/cb0eed0a-5128-4296-811d-7549d46790a5.vsidx new file mode 100644 index 0000000..cbfe6c5 --- /dev/null +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/cb0eed0a-5128-4296-811d-7549d46790a5.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/f744ef35-4f64-4a61-abee-af81aa222790.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/f744ef35-4f64-4a61-abee-af81aa222790.vsidx new file mode 100644 index 0000000..ee879dc --- /dev/null +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/f744ef35-4f64-4a61-abee-af81aa222790.vsidx Binary files differ diff --git a/HH.WCS.Mobox3.DSZSH.csproj b/HH.WCS.Mobox3.DSZSH.csproj index 6d9ef00..93a7892 100644 --- a/HH.WCS.Mobox3.DSZSH.csproj +++ b/HH.WCS.Mobox3.DSZSH.csproj @@ -236,20 +236,17 @@ <Compile Include="core\WCSCore.cs" /> <Compile Include="core\WMSCore.cs" /> <Compile Include="device\TcpClientHelper.cs" /> + <Compile Include="models\TN_Record_Table.cs" /> <Compile Include="models\TN_RelocationList_Detail.cs" /> <Compile Include="models\TN_Relocation_List.cs" /> + <Compile Include="models\TN_Shipping_Order.cs" /> <Compile Include="models\TN_SpotCheck_Detail.cs" /> <Compile Include="models\TN_Spot_Check.cs" /> <Compile Include="process\TaskProcess.cs" /> <Compile Include="util\SqlHelper.cs" /> <Compile Include="models\TN_Container_Item.cs" /> - <Compile Include="models\TN_Check_Detail.cs" /> - <Compile Include="models\TN_Check_Order.cs" /> - <Compile Include="models\TN_Inbound_Order.cs" /> <Compile Include="models\TN_Outbound_Order.cs" /> <Compile Include="models\TN_Outbound_Detail.cs" /> - <Compile Include="models\TN_Shift_Detail.cs" /> - <Compile Include="models\TN_Shift_Order.cs" /> <Compile Include="device\ProductionLineDevice.cs" /> <Compile Include="device\ModbusHelper.cs" /> <Compile Include="device\OpcUaHelper.cs" /> @@ -267,7 +264,6 @@ <Compile Include="models\TN_Container.cs" /> <Compile Include="models\TN_Location.cs" /> <Compile Include="models\TN_Loc_Container.cs" /> - <Compile Include="models\TN_WorkOrder.cs" /> <Compile Include="models\TN_Task.cs" /> <Compile Include="models\TN_Task_Action.cs" /> <Compile Include="process\DeviceProcess.cs" /> diff --git a/Models/TN_Check_Detail.cs b/Models/TN_Check_Detail.cs deleted file mode 100644 index 5ebb61f..0000000 --- a/Models/TN_Check_Detail.cs +++ /dev/null @@ -1,30 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -using SqlSugar; - -namespace HH.WCS.Mobox3.DSZSH.models { - /// <summary> - /// 鎶芥鍗曟槑缁�- /// </summary> - [SugarTable("TN_Check_Detail")] - public class TN_Check_Detail : BaseModel { - public string S_NO { get; set; } - public string S_ITEM_CODE { get; set; } - public string S_ITEM_NAME { get; set; } - - public string S_LOC_CODE { get; set; } - - public string S_CNTR_CODE { get; set; } - - public string S_BATCH_NO { get; set; } - public string S_END_AREA { get; set; } - /// <summary> - /// 涓氬姟鐘舵�锛�绛夊緟鎵ц 1宸叉墽琛屽緟鐢熸垚浠诲姟 2浠诲姟鎵ц涓�3浠诲姟瀹屾垚 - /// </summary> - public int N_B_STATE { get; set; } = 1; // 鍒涘缓鍗虫墽琛�- } -} diff --git a/Models/TN_Check_Order.cs b/Models/TN_Check_Order.cs deleted file mode 100644 index ff0936b..0000000 --- a/Models/TN_Check_Order.cs +++ /dev/null @@ -1,26 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -using SqlSugar; - -namespace HH.WCS.Mobox3.DSZSH.models { - /// <summary> - /// 鎶芥鍗�- /// </summary> - [SugarTable("TN_Check_Order")] - public class TN_Check_Order : BaseModel { - public string S_NO { get; set; } - public string S_ITEM_CODE { get; set; } - public string S_ITEM_NAME { get; set; } - public string S_BATCH_NO { get; set; } - public int N_COUNT { get; set; } - public string S_END_AREA { get; set; } - /// <summary> - /// 涓氬姟鐘舵�锛�绛夊緟鎵ц 1宸叉墽琛屽緟鐢熸垚浠诲姟 2浠诲姟鎵ц涓�3浠诲姟瀹屾垚 - /// </summary> - public int N_B_STATE { get; set; } = 0; // 鍒涘缓鍚庨渶瑕佺‘璁ゆ墽琛�- } -} diff --git a/Models/TN_Inbound_Order.cs b/Models/TN_Inbound_Order.cs deleted file mode 100644 index a5dadaf..0000000 --- a/Models/TN_Inbound_Order.cs +++ /dev/null @@ -1,28 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace HH.WCS.Mobox3.DSZSH.models { - /// <summary> - /// 鍑哄簱鍗�- /// </summary> - public class TN_Inbound_Order { - - /// <summary> - /// 鐗╂枡鍙�- /// </summary> - public string S_CG_CODE { get; set; } - - /// <summary> - /// 瀹瑰櫒缂栫爜 - /// </summary> - public string S_CNTR_CODE { get; set; } - - /// <summary> - /// 鍏ュ簱鍗曠姸鎬侊細0鏈笅绾�1绛夊緟鎵ц 2瀹屾垚 - /// </summary> - public string S_B_STATE { get; set; } - } -} diff --git a/Models/TN_Loc_Container.cs b/Models/TN_Loc_Container.cs index 1ab382f..74ec013 100644 --- a/Models/TN_Loc_Container.cs +++ b/Models/TN_Loc_Container.cs @@ -8,8 +8,6 @@ /// </summary> [SugarTable("TN_Loc_Container")] public class TN_Loc_Container : BaseModel { - - #region 鍩烘湰灞炴�鍏崇郴 /// <summary> /// 璐т綅鍙� /// </summary> @@ -19,9 +17,6 @@ /// 瀹瑰櫒鍙� /// </summary> public string S_CNTR_CODE { get; set; } - - - #endregion /// <summary> /// 瀹瑰櫒绫诲瀷 diff --git a/Models/TN_Location.cs b/Models/TN_Location.cs index 8c42873..5db9cbf 100644 --- a/Models/TN_Location.cs +++ b/Models/TN_Location.cs @@ -9,8 +9,6 @@ [SugarTable("TN_Location")] public class TN_Location : BaseModel { - - #region 鍩虹灞炴�鍏崇郴 /// <summary> /// 璐т綅 ID /// </summary> @@ -42,9 +40,29 @@ public int N_CURRENT_NUM { get; set; } = 0; /// <summary> + /// 琛屽彿 + /// </summary> + public int N_ROW { get; set; } = 0; + + /// <summary> + /// 鍒楀彿 + /// </summary> + public int N_COL { get; set; } = 0; + + /// <summary> /// 璐т綅鐨勫眰鏁� /// </summary> public int N_LAYER { get; set; } = 1; + + // BEG 鍒濆鍖栬〃鏍间娇鐢�+ public int N_ROW_GROUP { get; set; } = 0; + public int N_POS { get; set; } = 1; + public int N_DEEP { get; set; } = 1; + public int N_ROADWAY { get; set; } = 1; + public string S_PURPOSE { get; set; } = "瀛樺偍"; + public string S_TYPE { get; set; } = "甯歌"; + public string S_WH_CODE { get; set; } = "鐙北瀛愮煶鍖�; + // END /// <summary> /// 涓婇攣鐘舵�鍙凤細0鏃�1鍏ュ簱閿�2鍑哄簱閿�3鍏跺畠閿�@@ -65,7 +83,6 @@ /// 璐т綅鏄惁鍚敤锛歒鍚敤 /// </summary> public string C_ENABLE { get; set; } = "Y"; - #endregion /// <summary> /// 璐т綅-瀹瑰櫒 鍏崇郴鏄犲皠 diff --git a/Models/TN_Shift_Detail.cs b/Models/TN_Shift_Detail.cs deleted file mode 100644 index 66c6ee2..0000000 --- a/Models/TN_Shift_Detail.cs +++ /dev/null @@ -1,28 +0,0 @@ -锘�-using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace HH.WCS.Mobox3.DSZSH.models { - /// <summary> - /// 绉诲簱鍗曟槑缁�- /// </summary> - internal class TN_Shift_Detail : BaseModel { - public string S_NO { get; set; } - public string S_ITEM_CODE { get; set; } - public string S_ITEM_NAME { get; set; } - - public string S_LOC_CODE { get; set; } - - public string S_CNTR_CODE { get; set; } - - public string S_BATCH_NO { get; set; } - public string S_END_AREA { get; set; } - /// <summary> - /// 涓氬姟鐘舵�锛�绛夊緟鎵ц 1宸叉墽琛屽緟鐢熸垚浠诲姟 2浠诲姟鎵ц涓�3浠诲姟瀹屾垚 - /// </summary> - public int N_B_STATE { get; set; } = 1; // 鍒涘缓鍗虫墽琛�- } -} diff --git a/Models/TN_Shift_Order.cs b/Models/TN_Shift_Order.cs deleted file mode 100644 index 2a80962..0000000 --- a/Models/TN_Shift_Order.cs +++ /dev/null @@ -1,23 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace HH.WCS.Mobox3.DSZSH.models { - /// <summary> - /// 绉诲簱鍗�- /// </summary> - public class TN_Shift_Order : BaseModel { - public string S_NO { get; set; } - public string S_ITEM_CODE { get; set; } - public string S_ITEM_NAME { get; set; } - public string S_BATCH_NO { get; set; } - public int N_COUNT { get; set; } - public string S_END_AREA { get; set; } - /// <summary> - /// 涓氬姟鐘舵�锛�绛夊緟鎵ц 1宸叉墽琛屽緟鐢熸垚浠诲姟 2浠诲姟鎵ц涓�3浠诲姟瀹屾垚 - /// </summary> - public int N_B_STATE { get; set; } = 0; // 鍒涘缓鍚庨渶瑕佺‘璁ゆ墽琛�- } -} diff --git a/Models/TN_WorkOrder.cs b/Models/TN_WorkOrder.cs deleted file mode 100644 index 735abd8..0000000 --- a/Models/TN_WorkOrder.cs +++ /dev/null @@ -1,17 +0,0 @@ -using SqlSugar; - -namespace HH.WCS.Mobox3.DSZSH.models { - /// <summary> - /// 鐢熶骇宸ュ崟 - /// </summary> - [SugarTable("TN_WorkOrder")] - public class TN_WorkOrder : BaseModel - { - public string S_WORK_NO { get; set; }//宸ュ崟鍙凤紝涓婚敭 - public string S_B_STATE { get; set; }//宸ュ崟鐘舵�锛屾柊寤�寮�惎-鏆傚仠-瀹屾垚 - public string S_ITEM_CODE { get; set; }//鐗╂枡缂栫爜 - public string S_BATCH_CODE { get; set; }//鎵规鍙�- public string S_ITEM_SPEC { get; set; }//瑙勬牸 - public string S_LINE_NO { get; set; }//浜х嚎锛屼笉鑳戒负null - } -} diff --git a/Program.cs b/Program.cs index d8c574e..0601b18 100644 --- a/Program.cs +++ b/Program.cs @@ -121,7 +121,7 @@ tasks.Add(GetTask(WCSCore.Dispatch)); // 娴嬭瘯锛氭墭鐩樹笅绾�- tasks.Add(GetTask(Monitor.CheckInbound)); + //tasks.Add(GetTask(Monitor.CheckInbound)); // 杞锛氬嚭搴撳崟鐘舵� tasks.Add(GetTask(Monitor.CheckOutboundOrder)); diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs index f844780..beda0c6 100644 --- a/api/ApiHelper.cs +++ b/api/ApiHelper.cs @@ -9,6 +9,8 @@ using HH.WCS.Mobox3.DSZSH.wms; using Newtonsoft.Json; +using Org.BouncyCastle.Asn1.Tsp; + using SqlSugar; using Swashbuckle.Swagger; @@ -26,7 +28,7 @@ /// <param name="model"></param> /// <returns></returns> public static SimpleResult GoodpackOffline(GoodpackOfflineInfo model) { - var taskName = TaskName.濂借繍绠盻婊$涓嬬嚎鍏ュ簱; // 鐢ㄤ簬鐢熸垚浠诲姟绫诲瀷銆佹墦鍗版棩蹇椾俊鎭�+ var taskName = TaskName.H濂借繍绠盻婊$涓嬬嚎鍏ュ簱; // 鐢ㄤ簬鐢熸垚浠诲姟绫诲瀷銆佹墦鍗版棩蹇椾俊鎭� var db = new SqlHelper<object>().GetInstance(); var info = ""; try { @@ -48,10 +50,11 @@ .Where(l => l.S_CODE == model.StartLoc) // 鎸囧畾锛氳捣鐐硅揣浣嶅彿 .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .Where(l => l.N_CURRENT_NUM == 0) // 璧风偣缁戝畾鍓嶆病鏈夊鍣�+ .Where(l => Settings.AreaMap[AreaName.M婊$鎿嶄綔鍖篯.Contains(l.S_AREA_CODE)) .First(); if (startLoc == null) { - info = $"璧风偣浣嶇疆 '{model.StartLoc}' 涓嶅瓨鍦ㄦ垨涓嶅叿澶囧彇璐ц姹�; + info = $"鍦�{AreaName.M婊$鎿嶄綔鍖簘'涓病鏈夋壘鍒拌捣鐐硅揣浣�{model.StartLoc}'锛屾垨涓嶅叿澶囧彇璐ц姹傦細鏈笂閿併�缁戝畾鍓嶆棤璐х墿"; LogHelper.Info(info); return NewSimpleResult(3, info); } @@ -65,7 +68,7 @@ // TODO 婊$鍏ュ簱绠楁硶寰呬紭鍖� var endLoc = db.Queryable<TN_Location>() - .Where(l => Settings.AreaMap[AreaName.婊℃墭瀛樻斁鍖篯.Contains(l.S_AREA_CODE)) + .Where(l => Settings.AreaMap[AreaName.M婊$璐ф灦鍖篯.Contains(l.S_AREA_CODE)) // 缁堢偣璐у尯绗﹀悎浠诲姟瑕佹眰 .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .Where(l => l.N_CURRENT_NUM == 0) // 绛涢�锛氱┖璐т綅 .OrderBy(l => l.N_LAYER) @@ -82,6 +85,21 @@ LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿� LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+ + // TODO + var record = new TN_Record_Table { + S_ITEM_CODE = cgDetail.S_ITEM_CODE, + S_BATCH_NO= cgDetail.S_BATCH_NO, + S_ITEM_NAME= cgDetail.S_ITEM_NAME, + S_START_LOC = startLoc.S_CODE, + S_END_LOC = endLoc.S_CODE, + S_CNTR_CODE = cntId, + S_ITEM_SPEC = cgDetail.S_ITEM_SPEC, + S_NET_WEIGHT= cgDetail.S_NET_WEIGHT, + S_QUALITY_GRADE= cgDetail.S_QUALITY_GRADE, + S_STANDARD = cgDetail.S_STANDARD, + S_TASK_NO = task.S_CODE, + }; using (var tran = db.Ado.UseTran()) { if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) { @@ -241,7 +259,7 @@ /// <param name="model"></param> /// <returns></returns> public static SimpleResult EmptyInboundPallet(EmptyInboundInfo model) { - var taskName = TaskName.鎵樼洏_绌烘墭鍏ュ簱; + var taskName = TaskName.T鎵樼洏_绌烘墭鍏ュ簱; var db = new SqlHelper<object>().GetInstance(); var info = ""; try { @@ -250,6 +268,7 @@ .Where(l => l.S_CODE == model.StartLoc) // 鎸囧畾锛氳捣鐐硅揣浣� .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .Where(l => l.N_CURRENT_NUM == 0) // 缁戝畾鍓嶈揣浣嶄负绌�+ .Where(l => Settings.AreaMap[AreaName.K绌烘墭鍏ュ簱鎺ラ┏鍖篯.Contains(l.S_AREA_CODE)) // 璧风偣璐у尯绗﹀悎浠诲姟瑕佹眰 .First(); if (startLoc == null) { @@ -278,7 +297,7 @@ // TODO 鏆傚畾閫夋嫨鏈�綆灞傛寜鍖轰綅椤哄簭鍏ュ簱锛屽悗闈㈠緟淇敼 var endLoc = db.Queryable<TN_Location>() - .Where(l => Settings.AreaMap[AreaName.绌烘墭瀛樻斁鍖篯.Contains(l.S_AREA_CODE)) + .Where(l => Settings.AreaMap[AreaName.K绌烘墭瀛樻斁鍖篯.Contains(l.S_AREA_CODE)) // 缁堢偣璐у尯绗﹀悎浠诲姟瑕佹眰 .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .Where(l => l.N_CURRENT_NUM == 0) .OrderBy(l => new { l.N_LAYER, row=SqlFunc.Desc(l.S_AREA_CODE) }) @@ -353,7 +372,7 @@ /// </summary> /// <returns></returns> public static SimpleResult EmptyInboundGoodpack(EmptyInboundInfo model) { - var taskName = TaskName.濂借繍绠盻绌虹鍏ュ簱; + var taskName = TaskName.H濂借繍绠盻绌虹鍏ュ簱; var db = new SqlHelper<object>().GetInstance(); var info = ""; try { @@ -361,6 +380,7 @@ .Where(l => l.S_CODE == model.StartLoc) .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") .Where(l => l.N_CURRENT_NUM == 0) // 缁戝畾鍓嶈揣浣嶄负绌�+ .Where(l => Settings.AreaMap[AreaName.K绌虹鍏ュ簱鎺ラ┏鍖篯.Contains(l.S_AREA_CODE)) // 璧风偣璐у尯绗﹀悎浠诲姟瑕佹眰 .First(); if (startLoc == null) { @@ -389,7 +409,7 @@ // TODO 鏆傚畾閫夋嫨鏈�綆灞傞『搴忓叆搴擄紝鍚庨潰寰呬慨鏀� var endLoc = db.Queryable<TN_Location>() - .Where(l => Settings.AreaMap[AreaName.绌虹瀛樻斁鍖篯.Contains(l.S_AREA_CODE)) + .Where(l => Settings.AreaMap[AreaName.K绌虹璐ф灦鍖篯.Contains(l.S_AREA_CODE)) .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") .Where(l => l.N_CURRENT_NUM == 0) .OrderBy(l => new { l.N_LAYER }) @@ -463,9 +483,8 @@ /// <param name="model"></param> /// <returns></returns> public static SimpleResult EmptyOnlinePallet(EmptyOnlinePalletInfo model) { - var taskName = TaskName.鎵樼洏_绌烘墭涓婄嚎; + var taskName = TaskName.T鎵樼洏_绌烘墭涓婄嚎; var db = new SqlHelper<object>().GetInstance(); - var taskInfo = Settings.TaskMap[taskName]; var info = ""; try { // 鎵剧鍚堢墿鏂欎俊鎭殑璐т綅 @@ -505,7 +524,7 @@ var startLoc = db.Queryable<TN_Location>() .LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE) // 鑱旇〃锛氳揣浣嶅鍣ㄥ叧绯昏〃 - .Where(l => taskInfo.StartAreas.Contains(l.S_AREA_CODE)) // 闄愬畾鍦ㄧ┖鎵樺瓨鏀惧尯涓壘瀹瑰櫒璐т綅 + .Where(l => Settings.AreaMap[AreaName.K绌烘墭瀛樻斁鍖篯.Contains(l.S_AREA_CODE)) // 闄愬畾鍦ㄧ┖鎵樺瓨鏀惧尯涓壘瀹瑰櫒璐т綅 .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭病鏈夐攣鐘舵� .Where(l => l.N_CURRENT_NUM == 1) // 绛涢�锛氭湁璐ц揣浣� .Where((l, c) => c.S_CNTR_CODE == model.CntId) // 鎵炬寚瀹氬鍣ㄥ彿 @@ -518,8 +537,7 @@ } var endLoc = db.Queryable<TN_Location>() - .Where(l => Settings.AreaMap[AreaName.鍖呰鍖篯.Contains(l.S_AREA_CODE)) - .Where(l => taskInfo.EndAreas.Contains(l.S_AREA_CODE)) + //.Where(l => Settings.AreaMap[AreaName.B鍖呰鍖篯.Contains(l.S_AREA_CODE)) .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .Where(l => l.N_CURRENT_NUM == 0) // 绛涢�锛氱┖璐т綅 .First(); @@ -587,14 +605,13 @@ /// <param name="model"></param> /// <returns></returns> public static SimpleResult EmptyOnlineGoodpack(EmptyOnlineGoodpackInfo model) { - var taskName = TaskName.濂借繍绠盻绌虹涓婄嚎; + var taskName = TaskName.H濂借繍绠盻绌虹涓婄嚎; var db = new SqlHelper<object>().GetInstance(); - var taskInfo = Settings.TaskMap[taskName]; var info = ""; try { var startLoc = db.Queryable<TN_Location>() .LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE) - .Where(l => taskInfo.StartAreas.Contains(l.S_AREA_CODE)) + .Where(l => Settings.AreaMap[AreaName.K绌虹璐ф灦鍖篯.Contains(l.S_AREA_CODE)) .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") .Where(l => l.N_CURRENT_NUM == 1) .Where((l, c) => c.S_CNTR_CODE == model.CntId) @@ -615,8 +632,7 @@ //} var endLoc = db.Queryable<TN_Location>() - .Where(l => Settings.AreaMap[AreaName.鍖呰鍖篯.Contains(l.S_AREA_CODE)) - .Where(l => taskInfo.EndAreas.Contains(l.S_AREA_CODE)) + .Where(l => Settings.AreaMap[AreaName.B鍖呰鍖篯.Contains(l.S_AREA_CODE)) .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .Where(l => l.N_CURRENT_NUM == 0) .First(); @@ -676,87 +692,14 @@ } } - /// <summary> - /// 鍒涘缓鎶芥鍗�- /// </summary> - /// <param name="model"></param> - /// <returns></returns> - public static SimpleResult CreateCheckOrder(CreateCheckOrderInfo model) { - var billName = "鎶芥鍗�; - var db = new SqlHelper<object>().GetInstance(); - var info = ""; - try { - var orderNo = GenerateOrderNo("鎶芥鍗曞彿", "CN"); - - var order = new TN_Check_Order { - S_NO = orderNo, - S_ITEM_CODE = model.ItemCode, - //S_ITEM_NAME = model.ItemName, - S_BATCH_NO = model.BatchNo, - N_COUNT = model.Qty, - S_END_AREA = model.EndArea, - }; - - var cgDetailList = SelectCgByTotalQty(model); - if (cgDetailList.Count == 0) { - return NewSimpleResult(3, "娌℃湁鍚堥�鐨勭墿鏂欏彲浠ユ娊妫�); - } - - var detailList = new List<TN_Check_Detail>(); - foreach (var cgDetail in cgDetailList) { - var detail = new TN_Check_Detail { - S_NO = orderNo, - S_ITEM_CODE = cgDetail.S_ITEM_CODE, - S_BATCH_NO = cgDetail.S_BATCH_NO, - S_CNTR_CODE = cgDetail.S_CNTR_CODE, - S_END_AREA = model.EndArea, - }; - - detailList.Add(detail); - - cgDetail.N_ITEM_STATE = 3; - cgDetail.S_ITEM_STATE = "鎶介獙涓�; - } - - using (var tran = db.Ado.UseTran()) { - if (db.Insertable<TN_Check_Order>(order).ExecuteCommand() <= 0) { - tran.RollbackTran(); - info = $"鐢熸垚{billName}澶辫触锛� + JsonConvert.SerializeObject(order); - LogHelper.Info(info); - return NewSimpleResult(2, info); - } - - if (db.Insertable<TN_Outbound_Detail>(detailList).ExecuteCommand() <= 0) { - tran.RollbackTran(); - info = $"鐢熸垚{billName}鏄庣粏澶辫触"; - LogHelper.Info(info); - return NewSimpleResult(4, info); - } - - if (db.Updateable<TN_CG_Detail>(cgDetailList).UpdateColumns(it => new { - it.N_ITEM_STATE, it.S_ITEM_STATE }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - info = $"鏇存柊鐗╂枡鐘舵�澶辫触"; - - } - - tran.CommitTran(); - } - return NewSimpleResult(0, $"鍒涘缓 鎶芥鍗�鎴愬姛"); - } - catch (Exception ex) { - info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; - LogHelper.InfoEx(ex); - return NewSimpleResult(1, info); - } - } + /// <summary> /// 鎶芥-鍚堟牸鍥炲簱(PDA) /// </summary> /// <param name="model"></param> /// <returns></returns> public static SimpleResult QualifiedBack(QualifiedBackInfo model) { - var taskName = TaskName.鎶芥_鍚堟牸鍥炲簱; + var taskName = TaskName.C鎶芥_鍚堟牸鍥炲簱; var db = new SqlHelper<object>().GetInstance(); var info = ""; try { @@ -782,6 +725,7 @@ .Where(l => l.S_CODE == locCntrRel.S_LOC_CODE) .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .Where(l => l.N_CURRENT_NUM == 1) + .Where(l => Settings.AreaMap[AreaName.C鎶芥鍖篯.Contains(l.S_AREA_CODE)) // 璧风偣璐у尯绗﹀悎浠诲姟瑕佹眰 .First(); if (startLoc == null) { @@ -793,14 +737,14 @@ var endLoc = new TN_Location(); if (locCntrRel.S_CNTR_TYPE == "鎵樼洏") { endLoc = db.Queryable<TN_Location>() - .Where(l => Settings.AreaMap[AreaName.婊℃墭瀛樻斁鍖篯.Contains(l.S_AREA_CODE)) + .Where(l => Settings.AreaMap[AreaName.M婊℃墭璐ф灦鍖篯.Contains(l.S_AREA_CODE)) .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .Where(l => l.N_CURRENT_NUM == 0) // 绛涢�锛氱┖璐т綅 .First(); } else if (locCntrRel.S_CNTR_TYPE == "濂借繍绠�) { endLoc = db.Queryable<TN_Location>() - .Where(l => Settings.AreaMap[AreaName.婊$瀛樻斁鍖篯.Contains(l.S_AREA_CODE)) + .Where(l => Settings.AreaMap[AreaName.M婊$璐ф灦鍖篯.Contains(l.S_AREA_CODE)) .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .Where(l => l.N_CURRENT_NUM == 0) .First(); @@ -876,16 +820,23 @@ } } public static SimpleResult UnqualifiedShift(UnqualifiedShiftInfo model) { - var taskName = TaskName.鎶芥_涓嶅悎鏍肩Щ搴� + var taskName = TaskName.C鎶芥_涓嶅悎鏍肩Щ搴� var db = new SqlHelper<object>().GetInstance(); var info = ""; try { + + if (!Settings.AreaMap[AreaName.C鎶芥寮傚父鍖篯.Contains(model.EndArea)) { + info = $"缁堢偣搴撳尯{model.EndArea}涓嶅睘浜巤AreaName.C鎶芥寮傚父鍖簘"; + LogHelper.Info(info); + return NewSimpleResult(1, info); + } var cgDetail = db.Queryable<TN_CG_Detail>() .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_CNTR_CODE == model.CntrCode) .First(); if (cgDetail == null) { + return NewSimpleResult(2, "娌℃湁鎵惧埌寰呭洖搴撶殑鎶芥鐗╂枡"); } @@ -903,6 +854,7 @@ .Where(l => l.S_CODE == locCntrRel.S_LOC_CODE) .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .Where(l => l.N_CURRENT_NUM == 1) + .Where(l => Settings.AreaMap[AreaName.C鎶芥鍖篯.Contains(l.S_AREA_CODE)) // 璧风偣璐у尯绗﹀悎浠诲姟瑕佹眰 .First(); if (startLoc == null) { @@ -984,7 +936,7 @@ } public static SimpleResult RestBack(RestBackInfo model) { - var taskName = TaskName.灏剧鍥炲簱; + var taskName = TaskName.W灏剧鍥炲簱; var db = new SqlHelper<object>().GetInstance(); var info = ""; try { @@ -1005,14 +957,14 @@ var endLoc = new TN_Location(); if (locCntrRel.S_CNTR_TYPE == "鎵樼洏") { endLoc = db.Queryable<TN_Location>() - .Where(l => Settings.AreaMap[AreaName.婊℃墭瀛樻斁鍖篯.Contains(l.S_AREA_CODE)) + .Where(l => Settings.AreaMap[AreaName.M婊℃墭璐ф灦鍖篯.Contains(l.S_AREA_CODE)) .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .Where(l => l.N_CURRENT_NUM == 0) // 璧风偣缁戝畾鍓嶆病鏈夊鍣� .First(); } else if (locCntrRel.S_CNTR_TYPE =="濂借繍绠�){ endLoc = db.Queryable<TN_Location>() - .Where(l => Settings.AreaMap[AreaName.婊$瀛樻斁鍖篯.Contains(l.S_AREA_CODE)) + .Where(l => Settings.AreaMap[AreaName.M婊$璐ф灦鍖篯.Contains(l.S_AREA_CODE)) .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .Where(l => l.N_CURRENT_NUM == 0) // 璧风偣缁戝畾鍓嶆病鏈夊鍣� .First(); @@ -1079,56 +1031,6 @@ info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; LogHelper.InfoEx(ex); return NewSimpleResult(1, info); - } - } - - public static List<TN_CG_Detail> SelectCgByTotalQty(CreateCheckOrderInfo model) { - var db = new SqlHelper<object>().GetInstance(); - var result = new List<TN_CG_Detail>(); - var targetNum = model.Qty; - - try { - var targetCg = db.Queryable<TN_CG_Detail>().Where(a => a.S_ITEM_CODE == model.ItemCode - && a.N_ITEM_NUM > targetNum). - OrderBy(a => a.N_ITEM_NUM, OrderByType.Asc).First(); - if (targetCg != null) //鍒氬ソ鏈変竴琛屾弧瓒虫潯浠�- { - result.Add(targetCg); - return result; - } - - var sortedMaterials = new List<TN_CG_Detail>(); - - sortedMaterials = db.Queryable<TN_CG_Detail, TN_Loc_Container>((d, c) => d.S_CNTR_CODE == c.S_CNTR_CODE) - .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo && d.N_ITEM_NUM > 0) - .Where((d, c) => c.S_CNTR_TYPE == model.CntrType) - .Where(d => d.N_ITEM_STATE == 1 && d.S_ITEM_STATE == "寰呮") - .OrderBy(d => d.N_ITEM_NUM, OrderByType.Desc) - .OrderBy(d => d.N_ITEM_STATE, OrderByType.Asc).ToList(); - - if (sortedMaterials.Count == 0) //娌℃湁婊¤冻鏉′欢鐨�- { - return result; - } - - int countNum = 0; - foreach (var mat in sortedMaterials) { - countNum += mat.N_ITEM_NUM; - result.Add(mat); - if (countNum >= targetNum) { - break; - } - } - if (result.Sum(a => a.N_ITEM_NUM) >= targetNum) { - return result; - } - else { - result.Clear(); - return result; - } - } - catch (Exception ex) { - throw ex; } } @@ -1336,106 +1238,10 @@ } } - /// <summary> - /// 绉诲簱-鍒涘缓绉诲簱浠诲姟(WMS) - /// </summary> - /// <param name="model"></param> - /// <returns></returns> - public static SimpleResult CreateShiftOrder(CreateShiftOrderInfo model) { - var billName = "鎶芥鍗�; - var db = new SqlHelper<object>().GetInstance(); - var info = ""; - try { - var orderNo = GenerateOrderNo("鎶芥鍗曞彿", "CN"); - - var order = new TN_Check_Order { - S_NO = orderNo, - S_ITEM_CODE = model.ItemCode, - //S_ITEM_NAME = model.ItemName, - S_BATCH_NO = model.BatchNo, - //N_COUNT = model.Qty, - S_END_AREA = model.EndArea, - }; - - var cgDetailList = SelectShiftItem(model); - if (cgDetailList.Count == 0) { - return NewSimpleResult(3, "娌℃湁绗﹀悎瑕佹眰鐨勭墿鏂欓渶瑕佺Щ搴�); - } - - var detailList = new List<TN_Check_Detail>(); - foreach (var cgDetail in cgDetailList) { - var detail = new TN_Check_Detail { - S_NO = orderNo, - S_ITEM_CODE = cgDetail.S_ITEM_CODE, - S_BATCH_NO = cgDetail.S_BATCH_NO, - S_CNTR_CODE = cgDetail.S_CNTR_CODE, - S_END_AREA = model.EndArea, - }; - - detailList.Add(detail); - - cgDetail.N_ITEM_STATE = 3; - cgDetail.S_ITEM_STATE = "鎶介獙涓�; - } - - using (var tran = db.Ado.UseTran()) { - if (db.Insertable<TN_Check_Order>(order).ExecuteCommand() <= 0) { - tran.RollbackTran(); - info = $"鐢熸垚{billName}澶辫触锛� + JsonConvert.SerializeObject(order); - LogHelper.Info(info); - return NewSimpleResult(2, info); - } - - if (db.Insertable<TN_Outbound_Detail>(detailList).ExecuteCommand() <= 0) { - tran.RollbackTran(); - info = $"鐢熸垚{billName}鏄庣粏澶辫触"; - LogHelper.Info(info); - return NewSimpleResult(4, info); - } - - if (db.Updateable<TN_CG_Detail>(cgDetailList).UpdateColumns(it => new { - it.N_ITEM_STATE, it.S_ITEM_STATE }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - info = $"鏇存柊鐗╂枡鐘舵�澶辫触"; - - } - - tran.CommitTran(); - } - return NewSimpleResult(0, $"鍒涘缓 鎶芥鍗�鎴愬姛"); - } - catch (Exception ex) { - info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; - LogHelper.InfoEx(ex); - return NewSimpleResult(1, info); - } - } - - public static List<TN_CG_Detail> SelectShiftItem(CreateShiftOrderInfo model) { - var db = new SqlHelper<object>().GetInstance(); - var result = new List<TN_CG_Detail>(); - var info = ""; - try { - var targetItemList = db.Queryable<TN_CG_Detail>() - .Where(a => a.S_ITEM_CODE == model.ItemCode) - .Where(a => a.S_BATCH_NO == model.BatchNo) - .Where(a => a.N_ITEM_STATE != 3 && a.S_ITEM_CODE != "鎶芥涓�) - .OrderBy(a => a.N_ITEM_NUM, OrderByType.Asc) - .ToList(); - - return targetItemList; - } - catch (Exception ex) { - info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; - LogHelper.InfoEx(ex); - return result; - } - } - private static string GenerateOrderNo(string snType, string prefix) { var id = SYSHelper.GetSerialNumber(snType, prefix); var date = DateTime.Now.ToString("yyMMdd"); - return $"ON{date}{id.ToString().PadLeft(4, '0')}"; + return $"{prefix}{date}{id.ToString().PadLeft(4, '0')}"; } /// <summary> @@ -1443,7 +1249,7 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - public static WmsResult CgInfoSync(CgInfoSyncInfo model) { + public static MesResult CgInfoSync(CgInfoSyncInfo model) { var db = new SqlHelper<object>().GetInstance(); var random = new Random(); var info = ""; @@ -1470,7 +1276,7 @@ if (db.Insertable<TN_CG_Detail>(detail).ExecuteCommand() <= 0) { tran.RollbackTran(); info = "鎻掑叆鐗╂枡淇℃伅澶辫触锛� + JsonConvert.SerializeObject(detail); - return NewWmsResult(2, info); + return NewMesResult(2, info); } //if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) { @@ -1483,12 +1289,26 @@ } info = "鎻掑叆鐗╂枡淇℃伅鎴愬姛"; - return NewWmsResult(0, info); + return NewMesResult(0, info); } catch (Exception ex) { info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; LogHelper.InfoEx(ex); - return NewWmsResult(1, info); + return NewMesResult(1, info); + } + } + + public static ErpResult ErpSendOutboundOrder(ErpSendOutboundOrderInfo model) { + var db = new SqlHelper<object>().GetInstance(); + var info = ""; + try { + // TODO + return NewErpResult(0, info); + } + catch (Exception ex) { + info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; + LogHelper.InfoEx(ex); + return NewErpResult(1, info); } } } diff --git a/api/ApiModel.cs b/api/ApiModel.cs index 5a5ac90..14b9366 100644 --- a/api/ApiModel.cs +++ b/api/ApiModel.cs @@ -530,7 +530,7 @@ /// <summary> /// MES API 鍝嶅簲缁撴灉绫� /// </summary> - public class WmsResult { + public class MesResult { /// <summary> /// 鎺ュ彛璋冪敤缁撴灉 1-鎴愬姛 0-澶辫触 /// </summary> @@ -550,12 +550,38 @@ public string Data { get; set; } } - public static WmsResult NewWmsResult(int code, string message = "", bool printLog = true) { - return new WmsResult { + public static MesResult NewMesResult(int code, string message = "", bool printLog = true) { + return new MesResult { Result = code, Success = code == 0, // 浠呭綋code=0鏃讹紝success=true Data = message, }; } + + /// <summary> + /// 鍙嶉 ERP 鐨勬暟鎹被鍨�+ /// </summary> + public class ErpResult { + [JsonProperty("code")] + public int Code { get; set; } + [JsonProperty("message")] + public string Message { get; set; } + } + + public static ErpResult NewErpResult(int code, string message) { + return new ErpResult { Code = code, Message = message }; + } + + /// <summary> + /// ERP 涓嬪彂鍑哄簱浠诲姟鐨勬暟鎹被鍨�+ /// </summary> + public class ErpSendOutboundOrderInfo { + public string ErpNo { get; set; } // ERP 鍗曞彿 + + } + + public class PickUpReturnErpInfo { + public string LocCode { get; set; } + } } } diff --git a/api/DebugController.cs b/api/DebugController.cs index 425fc6e..0a242b0 100644 --- a/api/DebugController.cs +++ b/api/DebugController.cs @@ -66,9 +66,11 @@ /// <returns></returns> [HttpPost] [Route("CreateDatabase")] - public string CreateDatabase(CoverInfo model) { - var cover = model.IsCover; + public string CreateDatabase(FalseOk model) { try { + if (model.JumpOut) { + return "璺冲嚭"; + } var db = new SqlHelper<object>().GetInstance(); var entityTypes = new Type[] { @@ -90,35 +92,84 @@ //typeof(TN_Shift_Order), //typeof(TN_Shift_Detail) - typeof(TN_Container_Item), + //typeof(TN_Container_Item), }; - using (var tran = db.Ado.UseTran()) { - if (cover) { - // 鍒犻櫎鎵�湁琛紙鎸変緷璧栧叧绯诲�搴忥級 - //var tables = db.DbMaintenance.GetTableInfoList(); - //foreach (var table in tables.OrderByDescending(t => t.Name)) { - // db.DbMaintenance.DropTable(table.Name); - //} + //var areaNameList = new List<string>(); + //foreach (var area in Settings.Areas) { + // areaNameList.AddRange(area.Codes); + //} - // 鍒涘缓鏂拌〃 - db.CodeFirst.InitTables(entityTypes); + //var locationList = new List<TN_Location>(); + //foreach (var area in areaNameList) { + // int i = 0; + // int j = 0; + // int k = 0; - //db.CodeFirst.BackupTable().InitTables(entityTypes); - } - else { - db.CodeFirst.InitTables(entityTypes); - } + // if (area == "KXHJQ" || area == "MTHJQ" || area == "MXHJQ") { + // for (i = 1; i <= 4; i++) { + // for (j = 1; j <= 5; j++) { + // for (k = 1; k <= 3; k++) { + // locationList.Add(new TN_Location() { + // N_ROW = i, + // N_COL = j, + // N_LAYER = k, + // S_AREA_CODE = area, + // S_CODE = $"{area}-{i.ToString().PadLeft(2, '0')}-{j.ToString().PadLeft(2, '0')}" + + // $"-{k.ToString().PadLeft(2, '0')}" + // }); + // } + // } + // } + // continue; + // } - tran.CommitTran(); - } + // if (area == "BZQ") { + // for (i = 1; i <= 2; i++) { + // for (j = 1; j <= 2; j++) { + // locationList.Add(new TN_Location() { + // N_ROW = i, + // N_COL = j, + // S_AREA_CODE = area, + // S_CODE = $"{area}-{i.ToString().PadLeft(2, '0')}-{j.ToString().PadLeft(2, '0')}" + // }); + // } + // } + // continue; + // } + + // i = 1; + // for (j = 1; j <= 5; j++) { + // locationList.Add(new TN_Location() { + // N_ROW = i, + // N_COL = j, + // S_AREA_CODE = area, + // S_CODE = $"{area}-{i.ToString().PadLeft(2, '0')}-{j.ToString().PadLeft(2, '0')}" + // }); + // } + + + //} + + + + //using (var tran = db.Ado.UseTran()) { + // //db.CodeFirst.InitTables(entityTypes); + // if (db.Insertable<TN_Location>(locationList).ExecuteCommand() <= 0) { + // tran.RollbackTran(); + // return "澶辫触"; + // } + + // tran.CommitTran(); + + + //} } catch (Exception ex) { LogHelper.Info($"鍙戠敓浜嗗紓甯�); return "鍒濆鍖栨暟鎹簱閿欒" + ex.Message; } - return "鎴愬姛"; } @@ -212,7 +263,7 @@ /// <returns></returns> [HttpPost] [Route("InsertContainerItemByCgDetail")] - public string InsertContainerItemByCgDetail(CoverInfo _) { + public string InsertContainerItemByCgDetail(FalseOk _) { var db = new SqlHelper<object>().GetInstance(); try { var cgDetailList = db.Queryable<TN_CG_Detail>().ToList(); @@ -287,8 +338,8 @@ public int NextState { set; get; } } - public class CoverInfo { - public bool IsCover { set; get; } = false; + public class FalseOk { + public bool JumpOut { set; get; } = true; } public class InsertCntrItemInfo { diff --git a/api/ErpController.cs b/api/ErpController.cs index 1e46eb3..48260b4 100644 --- a/api/ErpController.cs +++ b/api/ErpController.cs @@ -2,7 +2,7 @@ using Newtonsoft.Json; using System.Collections.Generic; using System.Web.Http; - +using static HH.WCS.Mobox3.DSZSH.api.OtherModel; namespace HH.WCS.Mobox3.DSZSH.api { /// <summary> @@ -11,7 +11,17 @@ [RoutePrefix("api")] public class ErpController : ApiController { + /// <summary> + /// ERP涓嬪彂鍑哄簱浠诲姟 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + public ErpResult ErpSendOutboundOrder(ErpSendOutboundOrderInfo model) { + var apiName = "ERP涓嬪彂鍑哄簱浠诲姟"; + LogHelper.InfoApi(apiName, model); + return ApiHelper.ErpSendOutboundOrder(model); + } } } \ No newline at end of file diff --git a/api/MoboxController.cs b/api/MoboxController.cs index ac5f2e8..9a097a3 100644 --- a/api/MoboxController.cs +++ b/api/MoboxController.cs @@ -27,27 +27,6 @@ return ApiHelper.GoodpackOffline(model); } - ///// <summary> - ///// 绌烘墭/绌虹鍏ュ簱缁戝畾(PDA) - ///// </summary> - ///// <param name="model"></param> - ///// <returns></returns> - //public SimpleResult EmptyBind(EmptyBindInfo model) { - // LogHelper.InfoApi("绌烘墭/绌虹缁戝畾", model); - - // if (model.CntrType == "鎵樼洏") { - // //LogHelper.Info($"瑙﹀彂API锛氱┖鎵樼粦瀹�" + JsonConvert.SerializeObject(model), "API"); - // return ApiHelper.EmptyBindPallet(model); - // } - // else if (model.CntrType == "濂借繍绠�) { - // //LogHelper.Info($"瑙﹀彂API锛氱┖绠辩粦瀹�" + JsonConvert.SerializeObject(model), "API"); - // return ApiHelper.EmptyBindGoodpack(model); - // } - // else { - // return BuildSimpleResult(-1, $"涓嶅悎娉曠殑瀹瑰櫒绫诲瀷锛�{model.CntrType}'"); - // } - //} - /// <summary> /// 绌烘墭/绌虹鍏ュ簱(PDA) /// </summary> @@ -69,38 +48,6 @@ return NewSimpleResult(-1, $"瀹瑰櫒绫诲瀷 '{model.CntrType}' 涓嶅悎娉曪細搴斾负 '绌烘墭鐩� 鎴�'绌哄ソ杩愮'"); } } - - ///// <summary> - ///// 绌烘墭/绌虹涓婄嚎(PDA) - ///// </summary> - ///// <returns> - ///// 浜哄伐浣跨敤PDA鎵爜锛屾牴鎹墿鏂欑被鍨嬪垽鏂笂绾跨┖鎵�绌虹 - ///// </returns> - //public SimpleResult EmptyOnline(EmptyOnlineInfo model) { - // var db = DbHelper.GetDbClient(); - // var locCntrRel = db.Queryable<TN_Loc_Container>() - // .LeftJoin<TN_CG_Detail>((lc, cd) => lc.S_CNTR_CODE == cd.S_CNTR_CODE) - // .Where((lc, cd) => cd.S_ITEM_CODE == model.ItemCode) - // .First(); - - // if (locCntrRel.S_CNTR_TYPE == "鎵樼洏") { - - // return ApiHelper.EmptyOnlinePallet(new EmptyOnlinePalletInfo { - // CntId = locCntrRel.S_CNTR_CODE, - // EndLoc = model.EndLoc - // }); - // } - // else if (locCntrRel.S_CNTR_TYPE == "濂借繍绠�) { - - // return ApiHelper.EmptyOnlineGoodpack(new EmptyOnlineGoodpackInfo { - // CntId = locCntrRel.S_CNTR_CODE, - // EndLoc = model.EndLoc - // }); - // } - // else { - // return BuildSimpleResult(-1, $"涓嶅悎娉曠殑瀹瑰櫒绫诲瀷锛�{locCntrRel.S_CNTR_CODE}'"); - // } - //} /// <summary> /// 鎵樼洏-绌烘墭涓婄嚎(PDA) @@ -127,24 +74,6 @@ LogHelper.InfoApi(apiName, model); return ApiHelper.EmptyOnlineGoodpack(model); } - - ///// <summary> - ///// 鍚堟牸鍥炲簱/涓嶅悎鏍肩Щ搴�- ///// </summary> - ///// <param name="model"></param> - ///// <returns></returns> - //[HttpPost] - //[Route("CheckShift")] - //public SimpleResult CheckShift(CheckShiftInfo model) { - // LogHelper.InfoApi("鍚堟牸鍥炲簱/涓嶅悎鏍肩Щ搴�, model); - - // if (model.Qualified) { - // return ApiHelper.QualifiedBack(model); - // } - // else { - // return ApiHelper.UnqualifiedShift(model); - // } - //} /// <summary> /// 鍚堟牸鍥炲簱(PDA) @@ -202,26 +131,5 @@ } } - ///// <summary> - ///// 鎶芥-鍒涘缓鎶芥鍗�WMS) - ///// </summary> - ///// <param name="model"></param> - ///// <returns></returns> - //[HttpPost] - //[Route("create-check-order")] - //public SimpleResult CreateCheckOrder(CreateCheckOrderInfo model) { - // return ApiHelper.CreateCheckOrder(model); - //} - - ///// <summary> - ///// 绉诲簱-鍒涘缓绉诲簱浠诲姟(WMS) - ///// </summary> - ///// <param name="model"></param> - ///// <returns></returns> - //[HttpPost] - //[Route("shift-storage")] - //public SimpleResult CreateShiftOrder(CreateShiftOrderInfo model) { - // return ApiHelper.CreateShiftOrder(model); - //} } } diff --git a/api/WMSController.cs b/api/WMSController.cs index 6a3ecb7..ef806ad 100644 --- a/api/WMSController.cs +++ b/api/WMSController.cs @@ -18,7 +18,9 @@ /// <returns></returns> [HttpPost] //[Route("WMS/CgInfoSync")] - public WmsResult CgInfoSync(CgInfoSyncInfo model) { + public MesResult CgInfoSync(CgInfoSyncInfo model) { + var apiName = "鍗氬疄鐗╂枡淇℃伅涓嬪彂鍚屾(MES)"; + LogHelper.InfoApi(apiName, model); return ApiHelper.CgInfoSync(model); } } diff --git a/config/config.json b/config/config.json index 4c45dee..1a177bf 100644 --- a/config/config.json +++ b/config/config.json @@ -1,6 +1,7 @@ { "WebApiUrl": "http://192.168.1.141: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, @@ -10,28 +11,28 @@ "Codes": [ "BZQ" ] }, { - "Name": "鎿嶄綔鍖�, - "Codes": [ "CZQ-KX", "CZQ-MX" ] + "Name": "绌虹鎿嶄綔鍖�, + "Codes": [ "KXCZQ" ] }, { - "Name": "璐ф灦鍖�, - "Codes": [ "HJQ-KX", "HJQ-MT", "HJQ-MT" ] + "Name": "婊$鎿嶄綔鍖�, + "Codes": [ "MXCZQ" ] }, { "Name": "绌烘墭瀛樻斁鍖�, "Codes": [ "KTCFQ" ] }, { - "Name": "绌虹瀛樻斁鍖�, - "Codes": [ "HJQ-KX" ] + "Name": "绌虹璐ф灦鍖�, + "Codes": [ "KXHJQ" ] }, { - "Name": "婊℃墭瀛樻斁鍖�, - "Codes": [ "HJQ-MT" ] + "Name": "婊℃墭璐ф灦鍖�, + "Codes": [ "MTHJQ" ] }, { - "Name": "婊$瀛樻斁鍖�, - "Codes": [ "HJQ-MX" ] + "Name": "婊$璐ф灦鍖�, + "Codes": [ "MXHJQ" ] }, { "Name": "鎶芥鍖�, @@ -42,72 +43,28 @@ "Codes": [ "CJYCQ" ] }, { - "Name": "绌虹鎿嶄綔鍖�, - "Codes": [ "CZQ-KX" ] - }, - { - "Name": "婊$鎿嶄綔鍖�, - "Codes": [ "CZQ-MX" ] - }, - { "Name": "绌烘墭鍏ュ簱鎺ラ┏鍖�, - "Codes": [ "JBQ-KT" ] + "Codes": [ "KTJBQ" ] }, { "Name": "绌虹鍏ュ簱鎺ラ┏鍖�, - "Codes": [ "JBQ-KX1", "JBQ-KX2" ] + "Codes": [ "KXJBQ1", "KXJBQ2" ] }, { - "Name": "姹借溅鍑哄簱澶囪揣鍖�, - "Codes": [ "CKQ-QC" ] + "Name": "姹借溅鍑哄簱鍖�, + "Codes": [ "QCCKQ" ] }, { - "Name": "鐏溅鍑哄簱澶囪揣鍖�, - "Codes": [ "CKQ-HC" ] - } - ], - "Tasks": [ - { - "Name": "鎵樼洏-婊℃墭涓嬬嚎鍏ュ簱", - "StartAreas": [ "BZQ" ], - "EndAreas": [ "HJQ-MT" ] + "Name": "鐏溅鍑哄簱鍖�, + "Codes": [ "HCCKQ" ] }, { - "Name": "濂借繍绠�婊$涓嬬嚎鍏ュ簱", - "StartAreas": [ "CZQ-MX" ], - "EndAreas": [ "HJQ-MX" ] + "Name": "姹借溅澶囪揣鍖�, + "Codes": [ "QCBHQ" ] }, { - "Name": "鎵樼洏-绌烘墭涓婄嚎", - "StartAreas": [ "KTCFQ" ], - "EndAreas": [ "BZQ" ] - }, - { - "Name": "濂借繍绠�绌虹涓婄嚎", - "StartAreas": [ "HJQ1" ], - "EndAreas": [ "CZQ1" ] - }, - { - "Name": "鎵樼洏-绌烘墭鍏ュ簱", - "StartAreas": [ "KTRKJBQ" ], - "EndAreas": [ "KTCFQ" ] - }, - { - "Name": "濂借繍绠�绌虹鍏ュ簱", - "StartAreas": [ "KXRKJBQ1" ], - "EndAreas": [ "HJQ1" ] - }, - { - "Name": "鎶芥-鍑哄簱" - }, - { - "Name": "鎶芥-鍚堟牸鍥炲簱" - }, - { - "Name": "鎶芥-涓嶅悎鏍肩Щ搴� - }, - { - "Name": "鎴愬搧鑳跺嚭搴� + "Name": "鐏溅澶囪揣鍖�, + "Codes": [ "HCBHQ" ] } ], "ProductionLines": [ diff --git a/core/Monitor.cs b/core/Monitor.cs index b31eb12..9c58898 100644 --- a/core/Monitor.cs +++ b/core/Monitor.cs @@ -21,7 +21,7 @@ } public static void CheckInbound() { - var taskName = TaskName.鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱; + var taskName = TaskName.T鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱; var db = new SqlHelper<object>().GetInstance(); var info = ""; try { @@ -66,7 +66,7 @@ S_CNTR_CODE = cntrCode, }; - // TODO 姣忔杞閮芥鏌ュ搴斿鍣ㄦ槸鍚﹀凡鐧昏锛岀櫥璁板垯鏇存柊锛屾湭鐧昏鍒欐彃鍏�+ // BEG 姣忔杞閮芥鏌ュ搴斿鍣ㄦ槸鍚﹀凡鐧昏锛岀櫥璁板垯鏇存柊锛屾湭鐧昏鍒欐彃鍏� var cntrItemRel = db.Queryable<TN_Container_Item>() .Where(i => i.S_CNTR_CODE == cntrCode).First(); @@ -79,7 +79,7 @@ S_CNTR_CODE = cntrCode, }; } - // END TODO + // END var startLoc = db.Queryable<TN_Location>() .Where(l => l.S_CODE == startLocCode) // 鎸囧畾锛氳捣鐐硅揣浣嶅彿 @@ -109,7 +109,7 @@ //} var endLoc = db.Queryable<TN_Location>() - .Where(a => Settings.AreaMap[AreaName.绌烘墭瀛樻斁鍖篯.Contains(a.S_AREA_CODE)) + .Where(a => Settings.AreaMap[AreaName.K绌烘墭瀛樻斁鍖篯.Contains(a.S_AREA_CODE)) .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .Where(a => a.N_CURRENT_NUM == 0) // 绛涢�锛氱┖璐т綅 .OrderBy(l => l.N_LAYER) @@ -135,7 +135,7 @@ continue; } - // TODO 鎻掑叆鎴栨洿鏂板鍣ㄤ笌鐗╂枡绫诲瀷鐨勭粦瀹氳〃 + // BEG 鎻掑叆鎴栨洿鏂板鍣ㄤ笌鐗╂枡绫诲瀷鐨勭粦瀹氳〃 if (insertTable) { if (db.Insertable<TN_Container_Item>(cntrItemRel).ExecuteCommand() <= 0) { tran.RollbackTran(); @@ -152,7 +152,7 @@ continue; } } - // END TODO + // END if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) { tran.RollbackTran(); @@ -207,7 +207,7 @@ } public static void CheckOutboundOrder() { - var taskName = TaskName.鎴愬搧鑳跺嚭搴� + var taskName = TaskName.C鎴愬搧鑳跺嚭搴� var db = new SqlHelper<object>().GetInstance(); var info = $"杞--{taskName}--"; @@ -342,6 +342,38 @@ continue; } } + + + //// BEG 鏌ユ壘6涓湀浠ュ墠鐨勪换鍔¤〃鍜屼换鍔″姩浣滆〃 + //var oldTaskList = db.Queryable<TN_Task>() + // .Where(t => t.T_MODIFY < DateTime.Now.AddMonths(-6)) + // .Where(t => t.N_B_STATE == 3 && t.S_B_STATE == "瀹屾垚") + // .ToList(); + + //var oldTaskActionList = db.Queryable<TN_Task, TN_Task_Action>((t, a) => t.S_CODE == a.S_TASK_CODE) + // .Where(t => t.T_MODIFY < DateTime.Now.AddMonths(-6)) + // .Where(t => t.N_B_STATE == 3 && t.S_B_STATE == "瀹屾垚") + // .Select((t, a) => a) + // .ToList(); + //// END + + //using (var tran = db.Ado.UseTran()) { + // // 鍦ㄥ嚭搴撹疆璇腑澶勭悊锛屾煡鎵句换鍔″崟鏄惁鏈夊崐骞村墠涓斿凡缁忓畬鎴愮殑浠诲姟锛屽鏋滄湁鍒欏垹闄�+ // // 杩欎釜鎿嶄綔涓嶅奖鍝嶆甯告祦绋嬶紝濡傛灉澶辫触涔熶笉闇�鍥炴粴 + // //if (db.Deleteable<TN_Task>() + // // .Where(t => t.T_MODIFY < DateTime.Now.AddMonths(-6)) + // // .Where(t => t.N_B_STATE == 3 && t.S_B_STATE == "瀹屾垚") + // // .ExecuteCommand() <= 0) { + // // info = $"杞{taskName}鍗曟椂灏濊瘯鍒犻櫎鍗婂勾鍓嶇殑浠诲姟澶辫触"; + // // LogHelper.Info(info); + // //} + // if (db.Deleteable<TN_Task>(oldTaskList).ExecuteCommand() <= 0 + // && db.Deleteable<TN_Task_Action>(oldTaskActionList).ExecuteCommand() <= 0) { + // info = $"杞{taskName}鍗曟椂灏濊瘯鍒犻櫎鍗婂勾鍓嶇殑浠诲姟澶辫触"; + // LogHelper.Info(info); + // } + //} + } catch (Exception ex) { info += $"鍙戠敓浜嗗紓甯革細{ex.Message}"; @@ -350,7 +382,7 @@ } public static void CheckCheckOrder() { - var taskName = TaskName.鎶芥_鍑哄簱; + var taskName = TaskName.C鎶芥_鍑哄簱; var db = new SqlHelper<object>().GetInstance(); var info = ""; @@ -473,7 +505,7 @@ } public static void CheckShiftOrder() { - var taskName = TaskName.绉诲簱; + var taskName = TaskName.Y绉诲簱; var db = new SqlHelper<object>().GetInstance(); var info = ""; try { diff --git a/core/WCSCore.cs b/core/WCSCore.cs index e5a61f9..a9985d1 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -4,6 +4,7 @@ using System.Text; using System.Threading.Tasks; +using HH.WCS.Mobox3.DSZSH.api; using HH.WCS.Mobox3.DSZSH.device; using HH.WCS.Mobox3.DSZSH.models; using HH.WCS.Mobox3.DSZSH.process; @@ -83,9 +84,12 @@ WCSHelper.UpdateStatus(TN_Task, "鍙栬揣瀹屾垚"); // 浠诲姟鐘舵�鏀规垚鍙栬揣瀹屾垚 TaskProcess.OperateStatus(TN_Task, 4); // 璧风偣瀹瑰櫒璐т綅瑙g粦,瑙i攣璧风偣 - if (TN_Task.S_TYPE == TaskName.鎴愬搧鑳跺嚭搴� { + if (TN_Task.S_TYPE == TaskName.C鎴愬搧鑳跺嚭搴� { var nextOutboundTask = Task.Run(() => { UpdateOutboundTaskState(3); + }); + var pickUpReturnErpTask = Task.Run(() => { + PickUpReturnErp(TN_Task); }); } @@ -215,13 +219,14 @@ } public static void UpdateOutboundTaskState(int spotStateCode) { + var taskName = TaskName.C鎴愬搧鑳跺嚭搴� var db = new SqlHelper<object>().GetInstance(); var detail = db.Queryable<TN_Outbound_Detail>() .First(d => d.N_B_STATE == 2); if (detail == null) { - LogHelper.Info("鍑哄簱--AGV鍙栬揣--鏌ヨDetail锛氬綋鍓嶆病鏈�鎵ц涓�鐨凞etail琛紒"); + LogHelper.Info($"{taskName}--AGV鍙栬揣--鏌ヨ鏄庣粏鍗曪細褰撳墠娌℃湁鎵ц涓殑鏄庣粏鍗�); return; } @@ -229,14 +234,14 @@ detail.N_B_STATE = spotStateCode; if (db.Updateable<TN_Outbound_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { tran.RollbackTran(); - LogHelper.Info("鍑哄簱--AGV鍙栬揣锛氫慨鏀笵etail鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�); + LogHelper.Info($"{taskName}--AGV鍙栬揣锛氫慨鏀规槑缁嗗崟鐘舵�涓�浠诲姟鎵ц瀹屾垚--澶辫触锛�); return; } var finishedCount = db.Queryable<TN_Outbound_Detail>().Count(d => d.S_OO_NO == detail.S_OO_NO && d.N_B_STATE == 3); var allCount = db.Queryable<TN_Outbound_Detail>().Count(d => d.S_OO_NO == detail.S_OO_NO); - LogHelper.Info($"鍑哄簱--AGV鍙栬揣--缁熻浠诲姟宸插畬鎴愶細{finishedCount} / {allCount}"); + LogHelper.Info($"{taskName}--AGV鍙栬揣--缁熻浠诲姟宸插畬鎴愶細{finishedCount}/{allCount}"); if (finishedCount == allCount) { // 褰撳墠鍑哄簱鍗曚笅鐨勬墍鏈夋槑缁嗗崟锛屼换鍔¢兘宸茬粡瀹屾垚 @@ -245,7 +250,7 @@ .ExecuteCommand() <= 0) { tran.RollbackTran(); - LogHelper.Info("鍑哄簱--AGV鍙栬揣--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼Order鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�); + LogHelper.Info($"{taskName}--AGV鍙栬揣--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼鍗曟嵁鐘舵�涓�浠诲姟鎵ц瀹屾垚--澶辫触锛�); return; } } @@ -254,83 +259,17 @@ } } - public static void UpdateCheckTaskState(int spotStateCode) { - var db = new SqlHelper<object>().GetInstance(); - - var detail = db.Queryable<TN_Check_Detail>() - .First(d => d.N_B_STATE == 2); - - if (detail == null) { - LogHelper.Info("鎶芥--AGV浠诲姟瀹屾垚--鏌ヨDetail锛氬綋鍓嶆病鏈�鎵ц涓�鐨凞etail琛紒"); - return; + public static void PickUpReturnErp(TN_Task task) { + var httpH = new HttpHelper(); + var model = new OtherModel.PickUpReturnErpInfo(); + model.LocCode = task.S_START_LOC; + try { + var jsonInfo = JsonConvert.SerializeObject(model); + var result = httpH.WebPost(Settings.ErpApiUrl + "PickUpReturn", jsonInfo); + // TODO } - - using (var tran = db.Ado.UseTran()) { - detail.N_B_STATE = spotStateCode; - if (db.Updateable<TN_Check_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { - tran.RollbackTran(); - LogHelper.Info("鎶芥--AGV浠诲姟瀹屾垚锛氫慨鏀笵etail鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�); - return; - } - - var finishedCount = db.Queryable<TN_Check_Detail>().Count(d => d.S_NO == detail.S_NO && d.N_B_STATE == 3); - var allCount = db.Queryable<TN_Check_Detail>().Count(d => d.S_NO == detail.S_NO); - - LogHelper.Info($"鎶芥--AGV浠诲姟瀹屾垚锛氱粺璁′换鍔″凡瀹屾垚锛歿finishedCount} / {allCount}"); - - if (finishedCount == allCount) { // 褰撳墠order涓嬬殑detail锛屼换鍔¢兘宸茬粡瀹屾垚 - - if (db.Updateable<TN_Check_Order>().SetColumns(it => it.N_B_STATE == 3) - .Where(it => it.S_NO == detail.S_NO) - .ExecuteCommand() <= 0) { - - tran.RollbackTran(); - LogHelper.Info("鎶芥--AGV浠诲姟瀹屾垚--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼Order鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�); - return; - } - } - - tran.CommitTran(); - } - } - - public static void UpdateShiftTaskState(int spotStateCode) { - var db = new SqlHelper<object>().GetInstance(); - - var detail = db.Queryable<TN_Shift_Detail>() - .First(d => d.N_B_STATE == 2); - - if (detail == null) { - LogHelper.Info("绉诲簱--AGV浠诲姟瀹屾垚--鏌ヨDetail锛氬綋鍓嶆病鏈�鎵ц涓�鐨凞etail琛紒"); - return; - } - - detail.N_B_STATE = spotStateCode; - - var finishedCount = db.Queryable<TN_Shift_Detail>().Count(d => d.S_NO == detail.S_NO && d.N_B_STATE == 3); - var allCount = db.Queryable<TN_Shift_Detail>().Count(d => d.S_NO == detail.S_NO); - - LogHelper.Info($"绉诲簱--AGV浠诲姟瀹屾垚锛氱粺璁′换鍔″凡瀹屾垚锛歿finishedCount} / {allCount}"); - - using (var tran = db.Ado.UseTran()) { - if (db.Updateable<TN_Shift_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { - tran.RollbackTran(); - LogHelper.Info("绉诲簱--AGV浠诲姟瀹屾垚锛氫慨鏀笵etail鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�); - return; - } - - if (finishedCount == allCount) { // 褰撳墠order涓嬬殑detail锛屼换鍔¢兘宸茬粡瀹屾垚 - if (db.Updateable<TN_Shift_Order>().SetColumns(it => it.N_B_STATE == 3) - .Where(it => it.S_NO == detail.S_NO) - .ExecuteCommand() <= 0) { - - tran.RollbackTran(); - LogHelper.Info("绉诲簱--AGV浠诲姟瀹屾垚--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼Order鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�); - return; - } - } - - tran.CommitTran(); + catch (Exception ex) { + LogHelper.InfoEx(ex); } } @@ -347,12 +286,13 @@ //浣跨敤鑷畾涔変换鍔℃帹閫� TaskProcess.SendTask(task);//璋冨害NDC鎴栨澀濂ユ垨鍥借嚜璁惧 //TaskProcess.SendGZTask(task);///璋冨害鍥借嚜璁惧 - }); } else { LogHelper.Info("鏆傛棤浠诲姟"); } + + } } } diff --git a/models/TN_Record_Table.cs b/models/TN_Record_Table.cs new file mode 100644 index 0000000..ce93f4f --- /dev/null +++ b/models/TN_Record_Table.cs @@ -0,0 +1,105 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using SqlSugar; + +namespace HH.WCS.Mobox3.DSZSH.models { + /// <summary> + /// 鍑哄叆璁板綍琛�+ /// </summary> + [SugarTable("TN_Record_Table")] + public class TN_Record_Table { + /// <summary> + /// 浠诲姟鍙�+ /// </summary> + public string S_TASK_NO { get; set; } + + /// <summary> + /// 瀹瑰櫒缂栫爜 + /// </summary> + public string S_CNTR_CODE { get; set; } + + /// <summary> + /// 鐗╂枡缂栫爜 + /// </summary> + public string S_ITEM_CODE { get; set; } + + /// <summary> + /// 鐗╂枡瑙勬牸 + /// </summary> + public string S_ITEM_SPEC { get; set; } + + /// <summary> + /// 鎵规鍙�+ /// </summary> + public string S_BATCH_NO { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + public string S_ITEM_NAME { get; set; } + + /// <summary> + /// 璁板綍鏃堕棿 + /// </summary> + public DateTime T_RECORD_TIME { get; set; } + + /// <summary> + /// 鏁伴噺 + /// </summary> + public int F_QTY { get; set; } = 0; + + /// <summary> + /// 璧风偣璐т綅缂栫爜 + /// </summary> + public string S_START_LOC { get; set; } + + /// <summary> + /// 缁堢偣璐т綅缂栫爜 + /// </summary> + public string S_END_LOC { get; set; } + + /// <summary> + /// 鏉ユ簮鍗曞彿 + /// </summary> + public string S_BS_CODE { get; set; } + + /// <summary> + /// 鍗曟嵁绫诲瀷 + /// </summary> + public string S_TYPE { get; set; } + + /// <summary> + /// 鎵樼洏鍒濆鏁伴噺 + /// </summary> + public float F_INITIAL_QTY { get; set; } = 0; + + /// <summary> + /// 鏈�粓鏁伴噺 + /// </summary> + public float F_ALL_QTY { get; set; } = 0; + + /// <summary> + /// 鐗╂枡浠g爜 + /// </summary> + public string S_ITEM_NO { get; set; } + + /// <summary> + /// 鎵ц鏍囧噯 + /// </summary> + public string S_STANDARD { get; set; } = string.Empty; + + /// <summary> + /// 鍑�惈閲�+ /// </summary> + public string S_NET_WEIGHT { get; set; } = string.Empty; + + /// <summary> + /// 璐ㄩ噺绛夌骇 + /// </summary> + public string S_QUALITY_GRADE { get; set; } = string.Empty; + } +} diff --git a/models/TN_RelocationList_Detail.cs b/models/TN_RelocationList_Detail.cs index 1977cb8..98d7d8d 100644 --- a/models/TN_RelocationList_Detail.cs +++ b/models/TN_RelocationList_Detail.cs @@ -4,7 +4,13 @@ using System.Text; using System.Threading.Tasks; +using SqlSugar; + namespace HH.WCS.Mobox3.DSZSH.models { + /// <summary> + /// 绉诲簱鍗曟槑缁�+ /// </summary> + [SugarTable("TN_RelocationList_Detail")] public class TN_RelocationList_Detail : BaseModel { public string S_OO_NO { get; set; } public string S_ITEM_CODE { get; set; } diff --git a/models/TN_Relocation_List.cs b/models/TN_Relocation_List.cs index ff76c85..abd4c43 100644 --- a/models/TN_Relocation_List.cs +++ b/models/TN_Relocation_List.cs @@ -4,7 +4,13 @@ using System.Text; using System.Threading.Tasks; +using SqlSugar; + namespace HH.WCS.Mobox3.DSZSH.models { + /// <summary> + /// 绉诲簱鍗�+ /// </summary> + [SugarTable("TN_Relocation_List")] public class TN_Relocation_List : BaseModel { public string S_NO { get; set; } //public string S_ITEM_CODE { get; set; } diff --git a/models/TN_Shipping_Order.cs b/models/TN_Shipping_Order.cs new file mode 100644 index 0000000..72f72d0 --- /dev/null +++ b/models/TN_Shipping_Order.cs @@ -0,0 +1,11 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HH.WCS.Mobox3.DSZSH.models { + public class TN_Shipping_Order : BaseModel { + + } +} diff --git a/util/Settings.cs b/util/Settings.cs index f5b2934..d510507 100644 --- a/util/Settings.cs +++ b/util/Settings.cs @@ -12,22 +12,17 @@ { public static string WebApiUrl { get; set; } public static string NdcApiUrl { get; set; } + public static string ErpApiUrl { get; set; } // ERP 鍙嶉鎺ュ彛 public static string SqlServer { get; set; } public static string TcpServerIp { get; set; } public static int TcpServerPort { get; set; } public static List<Config.Area> Areas { get; set; } = new List<Config.Area>(); - public static List<Config.Task> Tasks { get; set; } = new List<Config.Task>(); public static List<Config.ProductionLine> ProductionLines { get; set; } = new List<Config.ProductionLine>(); public static List<Config.ProdAgvSite> ProdAgvSites { get; set; } = new List<Config.ProdAgvSite>(); /// <summary> /// 搴撳尯瀛楀吀锛堝姞杞藉悗灏变笉鍙橈級 /// </summary> public static Dictionary<string, List<string>> AreaMap { get; set; } = new Dictionary<string, List<string>>(); - - /// <summary> - /// 浠诲姟瀛楀吀锛堝姞杞藉悗灏变笉鍙橈級 - /// </summary> - public static Dictionary<string, Config.Task> TaskMap { get; set; } = new Dictionary<string, Config.Task>(); public static Dictionary<string, int> AgvSite_ProdLineCodeMap { get; set; } = new Dictionary<string, int>(); @@ -37,9 +32,6 @@ // 閽堝 Areas 杩涜杞崲锛氬皢 Config 鐨�List 鍔犺浇鍒�Dict 涓� LoadAreas(); - - // 閽堝 Tasks 杩涜杞崲 - LoadTasks(); } private static void LoadJson() { @@ -56,11 +48,11 @@ WebApiUrl = root.WebApiUrl; NdcApiUrl = root.NdcApiUrl; + ErpApiUrl = root.ErpApiUrl; SqlServer = root.SqlServer; TcpServerIp = root.TcpServerIp; TcpServerPort = root.TcpServerPort; Areas = root.Areas; - Tasks = root.Tasks; ProductionLines = root.ProductionLines; ProdAgvSites = root.ProdAgvSite; @@ -84,12 +76,6 @@ private static void LoadAreas() { foreach (var area in Areas) { AreaMap.Add(area.Name, area.Codes); - } - } - - private static void LoadTasks() { - foreach (var task in Tasks) { - TaskMap.Add(task.Name, task); } } @@ -131,56 +117,59 @@ public class Root { public string WebApiUrl { get; set; } public string NdcApiUrl { get; set; } + public string ErpApiUrl { get; set; } public string SqlServer { get; set; } public string TcpServerIp { get; set; } public int TcpServerPort { get; set; } public List<Area> Areas { get; set; } - public List<Task> Tasks { get; set; } + public List<ProductionLine> ProductionLines { get; set; } public List<ProdAgvSite> ProdAgvSite { get; set; } } - - public class Task { - public string Name { get; set; } - public List<string> StartAreas { get; set; } - public List<string> EndAreas { get; set; } - } - - } + public class AreaName { - public const string 鍖呰鍖�= "鍖呰鍖�; - public const string 鎿嶄綔鍖�= "鎿嶄綔鍖�; + public const string B鍖呰鍖�= "鍖呰鍖�; + public const string K绌虹鎿嶄綔鍖�= "绌虹鎿嶄綔鍖�; + public const string M婊$鎿嶄綔鍖�= "婊$鎿嶄綔鍖�; - public const string 绌烘墭瀛樻斁鍖�= "绌烘墭瀛樻斁鍖�; + public const string K绌烘墭瀛樻斁鍖�= "绌烘墭瀛樻斁鍖�; + public const string K绌虹璐ф灦鍖�= "绌虹璐ф灦鍖�; + public const string M婊℃墭璐ф灦鍖�= "婊℃墭璐ф灦鍖�; + public const string M婊$璐ф灦鍖�= "婊$璐ф灦鍖�; - public const string 璐ф灦鍖�= "璐ф灦鍖�; - public const string 绌虹瀛樻斁鍖�= "绌虹瀛樻斁鍖�; - public const string 婊℃墭瀛樻斁鍖�= "婊℃墭瀛樻斁鍖�; - public const string 婊$瀛樻斁鍖�= "婊$瀛樻斁鍖�; + public const string C鎶芥鍖�= "鎶芥鍖�; + public const string C鎶芥寮傚父鍖�= "鎶芥寮傚父鍖�; - public const string 浜哄伐_AGV鎺ラ┏鍖�= "浜哄伐-AGV鎺ラ┏鍖�; - public const string 绌烘墭鐩樻帴椹冲尯 = "绌烘墭鐩樻帴椹冲尯"; - public const string 绌虹鎺ラ┏鍖�= "绌虹鎺ラ┏鍖�; + public const string K绌烘墭鍏ュ簱鎺ラ┏鍖�= "绌烘墭鍏ュ簱鎺ラ┏鍖�; + public const string K绌虹鍏ュ簱鎺ラ┏鍖�= "绌虹鍏ュ簱鎺ラ┏鍖�; + + public const string Q姹借溅鍑哄簱鍖�= "姹借溅鍑哄簱鍖�; + public const string H鐏溅鍑哄簱鍖�= "鐏溅鍑哄簱鍖�; + public const string Q姹借溅澶囪揣鍖�= "姹借溅澶囪揣鍖�; + public const string H鐏溅澶囪揣鍖�= "鐏溅澶囪揣鍖�; } public class TaskName { - public const string 濂借繍绠盻婊$涓嬬嚎鍏ュ簱 = "濂借繍绠�婊$涓嬬嚎鍏ュ簱"; - public const string 濂借繍绠盻绌虹涓婄嚎 = "濂借繍绠�绌虹涓婄嚎"; - public const string 濂借繍绠盻绌虹鍏ュ簱 = "濂借繍绠�绌虹鍏ュ簱"; - public const string 濂借繍绠盻绌虹缁戝畾 = "濂借繍绠�绌虹缁戝畾"; - public const string 鎴愬搧鑳跺嚭搴�= "鎴愬搧鑳跺嚭搴�; - public const string 鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱 = "鎵樼洏-婊℃墭涓嬬嚎鍏ュ簱"; - public const string 鎵樼洏_绌烘墭涓婄嚎 = "鎵樼洏-绌烘墭涓婄嚎"; - public const string 鎵樼洏_绌烘墭鍏ュ簱 = "鎵樼洏-绌烘墭鍏ュ簱"; - public const string 鎵樼洏_绌烘墭缁戝畾 = "鎵樼洏-绌烘墭缁戝畾"; - public const string 鎶芥_涓嶅悎鏍肩Щ搴�= "鎶芥-涓嶅悎鏍肩Щ搴�; - public const string 鎶芥_鍑哄簱 = "鎶芥-鍑哄簱"; - public const string 鎶芥_鍚堟牸鍥炲簱 = "鎶芥-鍚堟牸鍥炲簱"; - public const string 绉诲簱 = "绉诲簱"; - public const string 灏剧鍥炲簱 = "灏剧鍥炲簱"; + public const string H濂借繍绠盻婊$涓嬬嚎鍏ュ簱 = "濂借繍绠�婊$涓嬬嚎鍏ュ簱"; + public const string H濂借繍绠盻绌虹涓婄嚎 = "濂借繍绠�绌虹涓婄嚎"; + public const string H濂借繍绠盻绌虹鍏ュ簱 = "濂借繍绠�绌虹鍏ュ簱"; + public const string H濂借繍绠盻绌虹缁戝畾 = "濂借繍绠�绌虹缁戝畾"; + public const string C鎴愬搧鑳跺嚭搴�= "鎴愬搧鑳跺嚭搴�; + + public const string T鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱 = "鎵樼洏-婊℃墭涓嬬嚎鍏ュ簱"; + public const string T鎵樼洏_绌烘墭涓婄嚎 = "鎵樼洏-绌烘墭涓婄嚎"; + public const string T鎵樼洏_绌烘墭鍏ュ簱 = "鎵樼洏-绌烘墭鍏ュ簱"; + public const string T鎵樼洏_绌烘墭缁戝畾 = "鎵樼洏-绌烘墭缁戝畾"; + + public const string C鎶芥_涓嶅悎鏍肩Щ搴�= "鎶芥-涓嶅悎鏍肩Щ搴�; + public const string C鎶芥_鍑哄簱 = "鎶芥-鍑哄簱"; + public const string C鎶芥_鍚堟牸鍥炲簱 = "鎶芥-鍚堟牸鍥炲簱"; + + public const string Y绉诲簱 = "绉诲簱"; + public const string W灏剧鍥炲簱 = "灏剧鍥炲簱"; } } diff --git a/wms/SYSHelper.cs b/wms/SYSHelper.cs index b48f3fd..8044904 100644 --- a/wms/SYSHelper.cs +++ b/wms/SYSHelper.cs @@ -2,13 +2,14 @@ using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + namespace HH.WCS.Mobox3.DSZSH.wms { - /// <summary> - /// 鐢ㄤ簬鐢熸垚搴忓垪鍙凤紝骞剁鐞嗗簭鍒楀彿鍓嶇紑鐨勫伐鍏风被 - /// </summary> - internal class SYSHelper - { - //浣跨敤闈欐� locker 瀵硅薄瀹炵幇绾跨▼鍚屾 + internal class SYSHelper { private static object locker = new object(); internal static int GetSerialNumber(string snType, string prefix) { int result = 0; @@ -16,16 +17,47 @@ var db = new SqlHelper<object>().GetInstance(); var sId = db.Queryable<OI_SYS_MAXID>().Where(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix).First(); if (sId != null) { - sId.CN_N_MAX++; - //if (db.Ado.ExecuteCommand($"update OI_SYS_MAXID set CN_N_MAX={sId.CN_N_MAX} where CN_S_TYPE='{snType}' and CN_S_PRE='{prefix}' ") > 0) { + + if (sId.CN_T_LAST < DateTime.Today) { + sId.CN_N_MAX = 1; + } + else { + sId.CN_N_MAX++; + } + + sId.CN_T_LAST = DateTime.Now; + if (db.Ado.ExecuteCommand($"update OI_SYS_MAXID set CN_N_MAX={sId.CN_N_MAX}, CN_T_LAST='{sId.CN_T_LAST}' where CN_S_TYPE='{snType}' and CN_S_PRE='{prefix}' ") > 0) { + //LogHelper.Info($"set cn_n_max {sId.CN_N_MAX}"); + result = sId.CN_N_MAX; + } + + //if (db.Updateable<OI_SYS_MAXID>(sId).UpdateColumns(it => new { it.CN_N_MAX, it.CN_T_LAST}).ExecuteCommand() > 0) { // result = sId.CN_N_MAX; //} - // 鍙傛暟鍖栨煡璇紝閬垮厤SQL娉ㄥ叆 - if (db.Updateable<OI_SYS_MAXID>().SetColumns(it => it.CN_N_MAX == sId.CN_N_MAX).Where(it => it.CN_S_TYPE == snType - && it.CN_S_PRE == prefix).ExecuteCommand() > 0) { - result = sId.CN_N_MAX; - } + //if (db.Updateable<OI_SYS_MAXID>() + // .SetColumns(it => it.CN_N_MAX == sId.CN_N_MAX && it.CN_T_LAST == sId.CN_T_LAST) + // .Where(it => it.CN_S_TYPE == sId.CN_S_TYPE && it.CN_S_PRE == sId.CN_S_TYPE) + // .ExecuteCommand() > 0) { + // result = sId.CN_N_MAX; + //} + + //var parameters = new[] { + // new SugarParameter("@CN_N_MAX", sId.CN_N_MAX), + // new SugarParameter("@CN_T_LAST", sId.CN_T_LAST), + // new SugarParameter("@CN_S_TYPE", sId.CN_S_TYPE), + // new SugarParameter("@CN_S_PRE", sId.CN_S_TYPE) + //}; + + //var sql = @"UPDATE OI_SYS_MAXID + // SET CN_N_MAX = @CN_N_MAX, CN_T_LAST = @CN_T_LAST + // WHERE CN_S_TYPE = @CN_S_TYPE AND CN_S_PRE = @CN_S_PRE"; + + //if (db.Ado.ExecuteCommand(sql, parameters) > 0) { + // result = sId.CN_N_MAX; + // LogHelper.Info($"set cn_n_max {sId.CN_N_MAX}"); + //} + } else { @@ -39,11 +71,11 @@ } [SugarTable("dbo.OI_SYS_MAXID")] - public class OI_SYS_MAXID - { + public class OI_SYS_MAXID { public string CN_S_TYPE { get; set; } public string CN_S_PRE { get; set; } public int CN_N_MAX { get; set; } + public DateTime CN_T_LAST { get; set; } } } } -- Gitblit v1.9.1