From 2ca90a404fa1ab94eb6374f50c6ddd47a2b7f0e6 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期四, 31 七月 2025 17:23:57 +0800 Subject: [PATCH] 删除有问题的TCP旧代码, 优化事务处理和ERP数据模型 --- core/Monitor.cs | 146 -- wms/WMSHelper.cs | 83 + dispatch/HanAo.cs | 1 api/ApiModel.cs | 804 ---------------- HH.WCS.Mobox3.DSZSH.csproj | 7 wms/WCSHelper.cs | 95 + api/ErpModel.ErpSendOutboundPlanInfo.cs | 276 +++++ api/ForceController.cs | 2 device/OpcUaHelper.cs | 87 - dispatch/NDC.cs | 16 wms/LogMsg.cs | 4 App_Start/Startup.cs | 1 dispatch/NDCApi.cs | 101 - device/ModbusHelper.cs | 2 api/ErpController.cs | 159 +++ /dev/null | 24 dispatch/NDCHelper.cs | 6 core/WCSCore.cs | 14 device/ModbusFactory.cs | 1 api/DebugController.cs | 14 api/ErpModel.CreateTaskReturnErpInfo.cs | 271 +++++ dispatch/GZRobot.cs | 1 util/Settings.cs | 44 api/ApiHelper.cs | 403 ++----- App_Start/SwaggerControllerDescProvider.cs | 27 api/ErpModel.PickUpReturnErpInfo.cs | 271 +++++ api/MoboxController.cs | 1 wms/DbTran.cs | 66 + 28 files changed, 1,426 insertions(+), 1,501 deletions(-) diff --git a/App_Start/Startup.cs b/App_Start/Startup.cs index 087146b..aec19e3 100644 --- a/App_Start/Startup.cs +++ b/App_Start/Startup.cs @@ -5,7 +5,6 @@ using System.Web.Http; using Microsoft.Owin; using Newtonsoft.Json; - using Owin; using Swashbuckle.Application; diff --git a/App_Start/SwaggerControllerDescProvider.cs b/App_Start/SwaggerControllerDescProvider.cs index b7f37fc..7ec6e59 100644 --- a/App_Start/SwaggerControllerDescProvider.cs +++ b/App_Start/SwaggerControllerDescProvider.cs @@ -9,8 +9,7 @@ /// <summary> /// Swagger 鏄剧ず鎺у埗鍣ㄧ殑鎻忚堪 /// </summary> - public class SwaggerCacheProvider : ISwaggerProvider - { + public class SwaggerCacheProvider : ISwaggerProvider { private readonly ISwaggerProvider _swaggerProvider; private static ConcurrentDictionary<string, SwaggerDocument> _cache = new ConcurrentDictionary<string, SwaggerDocument>(); private readonly string _xmlPath; @@ -18,18 +17,15 @@ /// <summary></summary> /// <param name="swaggerProvider"></param> /// <param name="xmlpath">xml鏂囨。璺緞</param> - public SwaggerCacheProvider(ISwaggerProvider swaggerProvider, string xmlpath) - { + public SwaggerCacheProvider(ISwaggerProvider swaggerProvider, string xmlpath) { _swaggerProvider = swaggerProvider; _xmlPath = xmlpath; } - public SwaggerDocument GetSwagger(string rootUrl, string apiVersion) - { + public SwaggerDocument GetSwagger(string rootUrl, string apiVersion) { var cacheKey = string.Format("{0}_{1}", rootUrl, apiVersion); // 鍙鍙栦竴娆�- if (!_cache.TryGetValue(cacheKey, out SwaggerDocument srcDoc)) - { + if (!_cache.TryGetValue(cacheKey, out SwaggerDocument srcDoc)) { srcDoc = _swaggerProvider.GetSwagger(rootUrl, apiVersion); srcDoc.vendorExtensions = new Dictionary<string, object> { @@ -44,21 +40,17 @@ /// 浠嶢PI鏂囨。涓鍙栨帶鍒跺櫒鎻忚堪 /// </summary> /// <returns>鎵�湁鎺у埗鍣ㄦ弿杩�/returns> - public ConcurrentDictionary<string, string> GetControllerDesc() - { + public ConcurrentDictionary<string, string> GetControllerDesc() { ConcurrentDictionary<string, string> controllerDescDict = new ConcurrentDictionary<string, string>(); - if (File.Exists(_xmlPath)) - { + if (File.Exists(_xmlPath)) { XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(_xmlPath); string[] arrPath; int cCount = "Controller".Length; - foreach (XmlNode node in xmldoc.SelectNodes("//member")) - { + foreach (XmlNode node in xmldoc.SelectNodes("//member")) { string type = node.Attributes["name"].Value; - if (type.StartsWith("T:")) - { + if (type.StartsWith("T:")) { arrPath = type.Split('.'); string controllerName = arrPath[arrPath.Length - 1]; if (controllerName.EndsWith("Controller")) // 鎺у埗鍣�@@ -66,8 +58,7 @@ // 鑾峰彇鎺у埗鍣ㄦ敞閲� XmlNode summaryNode = node.SelectSingleNode("summary"); string key = controllerName.Remove(controllerName.Length - cCount, cCount); - if (summaryNode != null && !string.IsNullOrEmpty(summaryNode.InnerText) && !controllerDescDict.ContainsKey(key)) - { + if (summaryNode != null && !string.IsNullOrEmpty(summaryNode.InnerText) && !controllerDescDict.ContainsKey(key)) { controllerDescDict.TryAdd(key, summaryNode.InnerText.Trim()); } } diff --git a/HH.WCS.Mobox3.DSZSH.csproj b/HH.WCS.Mobox3.DSZSH.csproj index 5bc18dd..4827bd8 100644 --- a/HH.WCS.Mobox3.DSZSH.csproj +++ b/HH.WCS.Mobox3.DSZSH.csproj @@ -228,6 +228,9 @@ <Compile Include="api\ApiModel.cs" /> <Compile Include="api\DebugController.cs" /> <Compile Include="api\ErpController.cs" /> + <Compile Include="api\ErpModel.CreateTaskReturnErpInfo.cs" /> + <Compile Include="api\ErpModel.ErpSendOutboundPlanInfo.cs" /> + <Compile Include="api\ErpModel.PickUpReturnErpInfo.cs" /> <Compile Include="api\ForceController.cs" /> <Compile Include="api\MesController.cs" /> <Compile Include="api\MoboxController.cs" /> @@ -251,10 +254,7 @@ <Compile Include="device\ProductionLineDevice.cs" /> <Compile Include="device\ModbusHelper.cs" /> <Compile Include="device\OpcUaHelper.cs" /> - <Compile Include="device\PlcHelper.cs" /> <Compile Include="device\S7Helper.cs" /> - <Compile Include="device\TcpClient.cs" /> - <Compile Include="device\TcpServer.cs" /> <Compile Include="dispatch\GZRobot.cs" /> <Compile Include="dispatch\HanAo.cs" /> <Compile Include="dispatch\NDC.cs" /> @@ -267,7 +267,6 @@ <Compile Include="models\TN_Loc_Container.cs" /> <Compile Include="models\TN_Task.cs" /> <Compile Include="models\TN_Task_Action.cs" /> - <Compile Include="process\DeviceProcess.cs" /> <Compile Include="api\WMSController.cs" /> <Compile Include="dispatch\HostToAGV.cs" /> <Compile Include="util\LogHelper.cs" /> diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs index 909bdee..36225f0 100644 --- a/api/ApiHelper.cs +++ b/api/ApiHelper.cs @@ -1,19 +1,11 @@ 锘縰sing System; using System.Collections.Generic; using System.Linq; -using System.Security.Cryptography; - -using HH.WCS.Mobox3.DSZSH.core; using HH.WCS.Mobox3.DSZSH.models; using HH.WCS.Mobox3.DSZSH.util; using HH.WCS.Mobox3.DSZSH.wms; - using Newtonsoft.Json; - using SqlSugar; - -using Swashbuckle.Swagger; - using static HH.WCS.Mobox3.DSZSH.api.ApiModel; using static HH.WCS.Mobox3.DSZSH.api.OtherModel; @@ -29,7 +21,7 @@ var (ok, msg) = (false, string.Empty); var obj = new CreateTaskObj(); - var taskInfo = ETask.M婊$涓嬬嚎鍏ュ簱.Info(); + var tInfo = ETask.M婊$涓嬬嚎鍏ュ簱.Info(); const string preLog = "API:婊$涓嬬嚎鍏ュ簱:"; const string cntrType = "濂借繍绠�; @@ -39,7 +31,7 @@ } // 妫�煡璐у搧瀹瑰櫒琛�鏄惁宸茬粡瀛樺湪璐存爣鏈轰紶閫掔殑寰呭叆搴撶墿鏂欎俊鎭�- // TODO:鏁伴噺,瑙勬牸鏄惁涔熷弬涓庢瘮瀵癸紵 + // QES:鏁伴噺,瑙勬牸鏄惁涔熷弬涓庢瘮瀵� var cgDetail = db.Queryable<TN_CG_Detail>() .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo && d.N_ITEM_STATE == 1 && d.S_ITEM_STATE == "寰呮").First(); @@ -48,23 +40,28 @@ $"璇锋鏌�PDA鎵爜鐗╂枡淇℃伅涓庤创鏍囨満浼犻�鐨勪俊鎭槸鍚︿竴鑷�!"); } - var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, taskInfo.StartAreas)).First(); + // 鏌ヨ璧风偣璐т綅(缁戝畾鍓� + var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, tInfo.StartAreas)).First(); if (startLoc == null) { - return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas)); + return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, tInfo.StartAreas)); } // 鍜屾弧鎵樹笅绾垮叆搴撶殑閫昏緫涓�嚧,鐢变簬瀹瑰櫒绉诲姩涓嶄細鏇存敼缁戝畾淇℃伅,鎵�互蹇呴』鍒犻櫎鏃ф暟鎹�- WMSHelper.FindCntrOldInfo(obj, cgDetail.S_CNTR_CODE, skipCgDetail: true); + WMSHelper.FindOldCntrInfo(obj, cgDetail.S_CNTR_CODE, skipCgDetail: true); + // 缁戝畾璐т綅瀹瑰櫒 var locCntrRel = WMSHelper.BindLocCntr(obj, startLoc, cgDetail.S_CNTR_CODE, cntrType); - var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: taskInfo.EndAreas)) + // 鏌ヨ缁堢偣璐т綅 + // Order:浼樺厛閫夋嫨浣庡眰璐ф灦 + var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: tInfo.EndAreas)) .OrderBy(l => new { l.N_LAYER }).First(); if (endLoc == null) { - return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas)); + return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: tInfo.EndAreas)); } - WMSHelper.CreateTask(obj, startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName); + // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟 + WMSHelper.CreateTask(obj, startLoc, endLoc, locCntrRel.S_CNTR_CODE, tInfo.TaskName); (ok, msg) = DbTran.CreateTask(obj); return NewSimpleResult(ok ? 0 : 500, preLog + msg); } @@ -81,49 +78,42 @@ public static SimpleResult EmptyInboundPallet(EmptyInboundInfo model) { var db = new SqlHelper<object>().GetInstance(); var (ok, msg) = (false, string.Empty); + var obj = new CreateTaskObj(); - var taskInfo = ETask.K绌烘墭鍏ュ簱.Info(); + var tInfo = ETask.K绌烘墭鍏ュ簱.Info(); const string preLog = "API:绌烘墭鍏ュ簱:"; const string cntrType = "鎵樼洏"; try { - // 鏌ヨ璧风偣璐т綅:鏁伴噺=0 - var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, taskInfo.StartAreas)).First(); - if (startLoc == null) { - return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas)); - } - // 鏌ヨ瀹瑰櫒琛�瀹瑰櫒绫诲瀷瀛楁 (ok, msg) = WMSHelper.CheckCntrType(model.CntrCode, cntrType, out var cntr); if (!ok) { - return NewSimpleResult(3, preLog + msg); + return NewSimpleResult(1, preLog + msg); } - + + // 鏌ヨ璧风偣璐т綅(缁戝畾鍓� + var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, tInfo.StartAreas)).First(); + if (startLoc == null) { + return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, tInfo.StartAreas)); + } + // 绌虹鍏ュ簱鏃�濡傛灉瀛樺湪鏃х殑缁戝畾鏁版嵁,鍒犻櫎 - var old = WCSHelper.GetLocCntrCg(model.CntrCode); + WMSHelper.FindOldCntrInfo(obj, model.CntrCode); // 缁戝畾璐т綅瀹瑰櫒 - var locCntrRel = WCSHelper.BindLocCntr(startLoc, cntr.S_CODE); - locCntrRel.S_CNTR_TYPE = cntrType; + var locCntrRel = WMSHelper.BindLocCntr(obj, startLoc, cntr.S_CODE, cntrType); // 鏌ヨ缁堢偣璐т綅 // Order:灞傛暟浠庝綆鍒伴珮,琛�鍒�- var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: taskInfo.EndAreas)) + var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: tInfo.EndAreas)) .OrderBy(l => new { l.N_LAYER, l.N_ROW, l.N_COL }).First(); if (endLoc == null) { - return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas)); + return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: tInfo.EndAreas)); } // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟 - var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName); - - (ok, msg) = DbTran.CreateTask(new CreateTaskObj { - Old = old, - New = new LocCntrCg { LocCntrRel = locCntrRel }, - StartLocToUpdate = startLoc, - EndLocToUpdate = endLoc, - TaskToInsert = task, - }); + WMSHelper.CreateTask(obj, startLoc, endLoc, locCntrRel.S_CNTR_CODE, tInfo.TaskName); + (ok, msg) = DbTran.CreateTask(obj); return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { @@ -138,44 +128,39 @@ public static SimpleResult EmptyInboundGoodpack(EmptyInboundInfo model) { var db = new SqlHelper<object>().GetInstance(); var (ok, msg) = (false, string.Empty); + var obj = new CreateTaskObj(); - var taskInfo = ETask.K绌虹鍏ュ簱.Info(); + var tInfo = ETask.K绌虹鍏ュ簱.Info(); const string preLog = "API:绌虹鍏ュ簱:"; const string cntrType = "濂借繍绠�; try { - var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, taskInfo.StartAreas)).First(); + // 鏌ヨ璧风偣璐т綅(缁戝畾鍓� + var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, tInfo.StartAreas)).First(); if (startLoc == null) { - return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas)); + return NewSimpleResult(1, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, tInfo.StartAreas)); } // 鏌ヨ瀹瑰櫒琛�瀹瑰櫒绫诲瀷瀛楁 (ok, msg) = WMSHelper.CheckCntrType(model.CntrCode, cntrType, out var cntr); if (!ok) { - return NewSimpleResult(3, preLog + msg); + return NewSimpleResult(2, preLog + msg); } // 绌虹鍏ュ簱鏃�濡傛灉瀛樺湪鏃х殑缁戝畾鏁版嵁,鍒犻櫎 - var old = WCSHelper.GetLocCntrCg(model.CntrCode); + WMSHelper.FindOldCntrInfo(obj, model.CntrCode); - var locCntrRel = WCSHelper.BindLocCntr(startLoc, model.CntrCode); - locCntrRel.S_CNTR_TYPE = cntrType; + var locCntrRel = WMSHelper.BindLocCntr(obj, startLoc, model.CntrCode, cntrType); - var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: taskInfo.EndAreas)) + var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: tInfo.EndAreas)) .OrderBy(l => new { l.N_LAYER, l.N_ROW, l.N_COL }).First(); if (endLoc == null) { - return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas)); + return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: tInfo.EndAreas)); } - var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName); - - (ok, msg) = DbTran.CreateTask(new CreateTaskObj { - Old = old, - New = new LocCntrCg { LocCntrRel = locCntrRel }, - StartLocToUpdate = startLoc, - EndLocToUpdate = endLoc, - TaskToInsert = task, - }); + // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟 + WMSHelper.CreateTask(obj, startLoc, endLoc, locCntrRel.S_CNTR_CODE, tInfo.TaskName); + (ok, msg) = DbTran.CreateTask(obj); return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { @@ -191,8 +176,9 @@ public static SimpleResult EmptyOnlinePallet(EmptyOnlinePalletInfo model) { var db = new SqlHelper<object>().GetInstance(); var (ok, msg) = (false, string.Empty); + var obj = new CreateTaskObj(); - var taskInfo = ETask.K绌烘墭涓婄嚎鍑哄簱.Info(); + var tInfo = ETask.K绌烘墭涓婄嚎鍑哄簱.Info(); const string preLog = "API:绌烘墭涓婄嚎鍑哄簱:"; const string cntrType = "鎵樼洏"; @@ -203,11 +189,11 @@ return NewSimpleResult(1, preLog + msg); } + // 妫�煡瀹瑰櫒琛�瀹瑰櫒瑙勬牸(鐗╂枡缂栫爜) var needUpdateContainer = false; if (string.IsNullOrEmpty(cntr.S_SPEC)) { - // TEMP 鐩墠娴佺▼:濡傛灉瀹瑰櫒琛ㄤ腑瑙勬牸 (鐗╂枡缂栫爜) 涓虹┖,鏍规嵁娴佺▼鐨勭墿鏂欎俊鎭啓鍏�- // 寰呭畾:鍚庨潰鍙兘浼氭洿鏀规祦绋�鎴栬�鐢ㄥ叾浠栦俊鎭�(濡傜墿鏂欑被鍨�瑙勬牸) 浣滀负瀹瑰櫒鐨勮鏍�- + // 鐩墠娴佺▼:濡傛灉瀹瑰櫒琛ㄤ腑瑙勬牸 (鐗╂枡缂栫爜) 涓虹┖,鏍规嵁娴佺▼鐨勭墿鏂欎俊鎭啓鍏�+ // TEMP:鍚庨潰鍙兘浼氭洿鏀规祦绋�鎴栬�鐢ㄥ叾浠栦俊鎭�(濡傜墿鏂欑被鍨�瑙勬牸) 浣滀负瀹瑰櫒鐨勮鏍� needUpdateContainer = true; cntr.S_SPEC = model.ItemCode; LogHelper.Info($"瀹瑰櫒'{model.CntId}'鍦╗瀹瑰櫒琛╙涓璠瑙勬牸(鐗╂枡缂栫爜)]涓虹┖,灏嗙墿鏂欑紪鐮�{model.ItemCode}'鍐欏叆瀹瑰櫒鐨勮鏍�); @@ -216,30 +202,29 @@ return NewSimpleResult(3, $"瀹瑰櫒'{model.CntId}'宸茬粡涓庣墿鏂欑被鍨�{cntr.S_SPEC}'缁戝畾,鏃犳硶鐢ㄤ簬瑁呰浇鐗╂枡'{model.ItemCode}'!"); } + // 鏌ヨ璧风偣璐т綅 var startLoc = db.Queryable<TN_Location>().LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE) - .Where(DbExpr.StartLoc(areas: taskInfo.StartAreas)) + .Where(DbExpr.StartLoc(areas: tInfo.StartAreas)) .Where((l, c) => c.S_CNTR_CODE == model.CntId && c.S_CNTR_TYPE == cntrType).First(); if (startLoc == null) { - return NewSimpleResult(3, preLog + LogMsg.StartLocNotFound(areas: taskInfo.StartAreas) + + return NewSimpleResult(3, preLog + LogMsg.StartLocNotFound(areas: tInfo.StartAreas) + $"缁戝畾瀹瑰櫒缂栫爜='{model.CntId}';缁戝畾瀹瑰櫒绫诲瀷='{cntrType}';"); } - var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: taskInfo.EndAreas)).First(); + // 鏌ヨ缁堢偣璐т綅 + var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: tInfo.EndAreas)).First(); if (endLoc == null) { - return NewSimpleResult(5, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas)); + return NewSimpleResult(5, preLog + LogMsg.EndLocNotFound(areas: tInfo.EndAreas)); } - var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, model.CntId, taskInfo.TaskName); + // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟 + var task = WMSHelper.CreateTask(obj, startLoc, endLoc, model.CntId, tInfo.TaskName); cntr.S_SOURCE = task.S_CODE; // 鐢ㄤ换鍔″彿浣滀负瀹瑰櫒鏇存柊鐨勪緷鎹� cntr.T_MODIFY = DateTime.Now; + obj.ContainerToUpdate = needUpdateContainer ? cntr : null; // 濡傛灉闇�鏇存柊[瀹瑰櫒琛╙瑙勬牸,鍐欏叆obj - (ok, msg) = DbTran.CreateTask(new CreateTaskObj { - ContainerToUpdate = needUpdateContainer ? cntr : null, - StartLocToUpdate = startLoc, - EndLocToUpdate = endLoc, - TaskToInsert = task, - }); + (ok, msg) = DbTran.CreateTask(obj); return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { @@ -255,8 +240,9 @@ public static SimpleResult EmptyOnlineGoodpack(EmptyOnlineGoodpackInfo model) { var db = new SqlHelper<object>().GetInstance(); var (ok, msg) = (false, string.Empty); + var obj = new CreateTaskObj(); - var taskInfo = ETask.K绌虹涓婄嚎鍑哄簱.Info(); + var tInfo = ETask.K绌虹涓婄嚎鍑哄簱.Info(); const string preLog = "API:绌虹涓婄嚎鍑哄簱:"; const string cntrType = "濂借繍绠�; @@ -268,26 +254,21 @@ } var startLoc = db.Queryable<TN_Location>().LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE) - .Where(DbExpr.StartLoc(areas: taskInfo.StartAreas)) + .Where(DbExpr.StartLoc(areas: tInfo.StartAreas)) .Where((l, c) => c.S_CNTR_CODE == model.CntId && c.S_CNTR_TYPE == cntrType).First(); if (startLoc == null) { - return NewSimpleResult(2, preLog + preLog + LogMsg.StartLocNotFound(areas: taskInfo.StartAreas) + + return NewSimpleResult(2, preLog + preLog + LogMsg.StartLocNotFound(areas: tInfo.StartAreas) + $"缁戝畾瀹瑰櫒缂栫爜='{model.CntId}';缁戝畾瀹瑰櫒绫诲瀷='{cntrType}';"); } - var endLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") - .Where(l => taskInfo.EndAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 0).First(); + var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: tInfo.EndAreas)).First(); if (endLoc == null) { - return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas)); + return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: tInfo.EndAreas)); } - var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, model.CntId, taskInfo.TaskName); - - (ok, msg) = DbTran.CreateTask(new CreateTaskObj { - StartLocToUpdate = startLoc, - EndLocToUpdate = endLoc, - TaskToInsert = task, - }); + // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟 + WMSHelper.CreateTask(obj, startLoc, endLoc, model.CntId, tInfo.TaskName); + (ok, msg) = DbTran.CreateTask(obj); return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { @@ -303,45 +284,43 @@ public static SimpleResult QualifiedBack(QualifiedBackInfo model) { var db = new SqlHelper<object>().GetInstance(); var (ok, msg) = (false, string.Empty); + var obj = new CreateTaskObj(); - var taskInfo = ETask.C鎶芥鍚堟牸鍥炲簱.Info(); - const string preLog = "API:鎶芥鍚堟牸鍥炲簱"; + var tInfo = ETask.C鎶芥鍚堟牸鍥炲簱.Info(); + const string preLog = "API:鎶芥鍚堟牸鍥炲簱:"; try { 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, preLog + LogMsg.CgDetailNotFound(item: model.ItemCode, cntr: model.CntrCode)); + return NewSimpleResult(1, preLog + LogMsg.CgDetailNotFound(item: model.ItemCode, cntr: model.CntrCode)); } var locCntrRel = db.Queryable<TN_Loc_Container>().Where(c => c.S_CNTR_CODE == cgDetail.S_CNTR_CODE).First(); if (locCntrRel == null) { - return NewSimpleResult(3, preLog + LogMsg.LocCntrRelNotFound(cntr: cgDetail.S_CNTR_CODE)); + return NewSimpleResult(2, preLog + LogMsg.LocCntrRelNotFound(cntr: cgDetail.S_CNTR_CODE)); } - var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLoc(locCntrRel.S_LOC_CODE, taskInfo.StartAreas)).First(); + var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLoc(locCntrRel.S_LOC_CODE, tInfo.StartAreas)).First(); if (startLoc == null) { - return NewSimpleResult(4, preLog + LogMsg.StartLocNotFound(locCntrRel.S_LOC_CODE, taskInfo.StartAreas)); + return NewSimpleResult(3, preLog + LogMsg.StartLocNotFound(locCntrRel.S_LOC_CODE, tInfo.StartAreas)); } - var endAreas = locCntrRel.S_CNTR_CODE == "鎵樼洏" ? taskInfo.EndAreas_Pallet : taskInfo.EndAreas_Goodpack; + var endAreas = locCntrRel.S_CNTR_CODE == "鎵樼洏" ? tInfo.EndAreas_Pallet : tInfo.EndAreas_Goodpack; var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: endAreas)).First(); if (endLoc == null) { - return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: endAreas)); + return NewSimpleResult(4, preLog + LogMsg.EndLocNotFound(areas: endAreas)); } + //淇敼鐗╂枡鐘舵�涓篬鍚堟牸] cgDetail.N_ITEM_STATE = 0; cgDetail.S_ITEM_STATE = "鍚堟牸"; cgDetail.T_MODIFY = DateTime.Now; + obj.CgDetailToUpdate = cgDetail; - var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName); - - (ok, msg) = DbTran.CreateTask(new CreateTaskObj { - CgDetailToUpdate = cgDetail, - StartLocToUpdate = startLoc, - EndLocToUpdate = endLoc, - TaskToInsert = task, - }); + // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟 + WMSHelper.CreateTask(obj, startLoc, endLoc, locCntrRel.S_CNTR_CODE, tInfo.TaskName); + (ok, msg) = DbTran.CreateTask(obj); return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { @@ -357,13 +336,14 @@ public static SimpleResult UnqualifiedShift(UnqualifiedShiftInfo model) { var db = new SqlHelper<object>().GetInstance(); var (ok, msg) = (false, string.Empty); + var obj = new CreateTaskObj(); - var taskInfo = ETask.C鎶芥涓嶅悎鏍肩Щ搴�Info(); + var tInfo = ETask.C鎶芥涓嶅悎鏍肩Щ搴�Info(); const string preLog = "API:鎶芥涓嶅悎鏍肩Щ搴�"; try { - if (!taskInfo.EndAreas.Contains(model.EndArea)) { - return NewSimpleResult(1, preLog + $"缁堢偣搴撳尯'{model.EndArea}'涓嶆弧瓒虫潯浠�闇�:璐у尯={LogObject(taskInfo.EndAreas)}"); + if (!tInfo.EndAreas.Contains(model.EndArea)) { + return NewSimpleResult(1, preLog + $"缁堢偣搴撳尯'{model.EndArea}'涓嶆弧瓒虫潯浠�闇�:璐у尯={LogObject(tInfo.EndAreas)}"); } var cgDetail = db.Queryable<TN_CG_Detail>() @@ -377,27 +357,24 @@ return NewSimpleResult(3, preLog + LogMsg.LocCntrRelNotFound(cntr: cgDetail.S_CNTR_CODE)); } - var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLoc(locCntrRel.S_LOC_CODE, taskInfo.StartAreas)).First(); + var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLoc(locCntrRel.S_LOC_CODE, tInfo.StartAreas)).First(); if (startLoc == null) { - return NewSimpleResult(1, preLog + LogMsg.StartLocNotFound(locCntrRel.S_LOC_CODE, taskInfo.StartAreas)); + return NewSimpleResult(4, preLog + LogMsg.StartLocNotFound(locCntrRel.S_LOC_CODE, tInfo.StartAreas)); } var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: new List<string> { model.EndArea })).First(); if (endLoc == null) { - return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: new List<string> { model.EndArea })); + return NewSimpleResult(5, preLog + LogMsg.EndLocNotFound(areas: new List<string> { model.EndArea })); } cgDetail.N_ITEM_STATE = 2; cgDetail.S_ITEM_STATE = "涓嶅悎鏍�; + cgDetail.T_MODIFY = DateTime.Now; + obj.CgDetailToUpdate = cgDetail; - var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName); - - (ok, msg) = DbTran.CreateTask(new CreateTaskObj { - CgDetailToUpdate = cgDetail, - StartLocToUpdate = startLoc, - EndLocToUpdate = endLoc, - TaskToInsert = task, - }); + // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟 + WMSHelper.CreateTask(obj, startLoc, endLoc, locCntrRel.S_CNTR_CODE, tInfo.TaskName); + (ok, msg) = DbTran.CreateTask(obj); return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { @@ -413,8 +390,9 @@ public static SimpleResult RestBack(RestBackInfo model) { var db = new SqlHelper<object>().GetInstance(); var (ok, msg) = (false, string.Empty); + var obj = new CreateTaskObj(); - var taskInfo = ETask.W灏炬枡鍥炲簱.Info(); + var tInfo = ETask.W灏炬枡鍥炲簱.Info(); const string preLog = "API:灏炬枡鍥炲簱:"; try { @@ -428,19 +406,15 @@ return NewSimpleResult(3, preLog + LogMsg.LocCntrRelNotFound(loc: model.StartLoc)); } - var endAreas = locCntrRel.S_CNTR_CODE == "鎵樼洏" ? taskInfo.EndAreas_Pallet : taskInfo.EndAreas_Goodpack; + var endAreas = locCntrRel.S_CNTR_CODE == "鎵樼洏" ? tInfo.EndAreas_Pallet : tInfo.EndAreas_Goodpack; var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: endAreas)).First(); if (endLoc == null) { return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: endAreas)); } - var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName); - - (ok, msg) = DbTran.CreateTask(new CreateTaskObj { - StartLocToUpdate = startLoc, - EndLocToUpdate = endLoc, - TaskToInsert = task, - }); + // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟 + WMSHelper.CreateTask(obj, startLoc, endLoc, locCntrRel.S_CNTR_CODE, tInfo.TaskName); + (ok, msg) = DbTran.CreateTask(obj); return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { @@ -449,7 +423,20 @@ } /// <summary> - /// 鎴愬搧鑳跺嚭搴�PDA) 寰呭畾,鏆傛椂涓嶉渶瑕佹鍔熻兘 + /// 鐢熸垚鍑哄簱鍗曞彿,绉佹湁 + /// </summary> + /// <param name="snType"></param> + /// <param name="prefix"></param> + /// <returns></returns> + private static string GenerateOrderNo(string snType, string prefix) { + //var id = SYSHelper.GetSerialNumberResetByDay(snType, prefix); + //var date = DateTime.Now.ToString("yyMMdd"); + //return $"{prefix}{date}-{id.ToString().PadLeft(4, '0')}"; + return SYSHelper.GenerateSN(snType, prefix, "yyMMdd"); + } + + /// <summary> + /// 鎴愬搧鑳跺嚭搴�鎼佺疆) /// </summary> /// <param name="model"></param> /// <returns></returns> @@ -457,7 +444,7 @@ var db = new SqlHelper<object>().GetInstance(); var (ok, msg) = (false, string.Empty); - var taskInfo = ETask.C鎴愬搧鑳跺嚭搴�Info(); + var tInfo = ETask.C鎴愬搧鑳跺嚭搴�Info(); const string preLog = "API:鎴愬搧鑳跺嚭搴�"; try { @@ -555,12 +542,12 @@ using (var tran = db.Ado.UseTran()) { if (db.Insertable(order).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(2, preLog + "鐢熸垚鍑哄簱鍗曞け璐�" + LogObject(order)); + return NewSimpleResult(500, preLog + "鐢熸垚鍑哄簱鍗曞け璐�" + LogObject(order)); } if (db.Insertable(detailList).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(4, preLog + "鐢熸垚鍑哄簱鍗曟槑缁嗗け璐�" + LogObject(detailList)); + return NewSimpleResult(500, preLog + "鐢熸垚鍑哄簱鍗曟槑缁嗗け璐�" + LogObject(detailList)); } tran.CommitTran(); @@ -588,7 +575,7 @@ return result; } - // NOTE 鏍规嵁鎬婚噺閫塪etail鏃�鏄惁闇�鑰冭檻璐т綅鐨勯珮浣庯紵 + // NOTE 鏍规嵁鎬婚噺閫塪etail鏃�鏄惁闇�鑰冭檻璐т綅鐨勯珮浣� var sortedMaterials = new List<TN_CG_Detail>(); @@ -645,12 +632,7 @@ } } - private static string GenerateOrderNo(string snType, string prefix) { - //var id = SYSHelper.GetSerialNumberResetByDay(snType, prefix); - //var date = DateTime.Now.ToString("yyMMdd"); - //return $"{prefix}{date}-{id.ToString().PadLeft(4, '0')}"; - return SYSHelper.GenerateSN(snType, prefix, "yyMMdd"); - } + /// <summary> /// 鍗氬疄鐗╂枡淇℃伅涓嬪彂鍚屾 (鍙拡瀵瑰ソ杩愮) @@ -715,157 +697,6 @@ } catch (Exception ex) { return NewMesResult(-1, preLog + $"鍙戠敓浜嗗紓甯�{ex.Message}\n\n{ex.StackTrace}\n"); - } - } - - public static ErpResult ErpSendOutboundPlan(ErpSendOutboundPlanInfo model) { - var db = new SqlHelper<object>().GetInstance(); - var orderNo = GenerateOrderNo("鍑哄簱鍗曞彿", "CKD"); - const string preLog = "API:ERP涓嬪彂鍑哄簱璁″垝鍗�"; - try { - if (model.pzjs <= 0) { - return NewErpResult(400, preLog + $"鐗╂枡鏁伴噺(pzjs)'{model.pzjs}'涓嶅悎娉�瑕佹眰:鐗╂枡鏁伴噺锛�"); - } - - var outboundPlan = db.Queryable<TN_Outbound_Plan>() - .Where(p => p.JHDH == model.jhdh).First(); - if (outboundPlan != null) { - return NewErpResult(1, preLog + $"璁″垝鍗曞彿'{model.jhdh}'宸插湪[鍑哄簱璁″垝鍗昡涓瓨鍦�"); - } - - outboundPlan = new TN_Outbound_Plan { - JHDH = model.jhdh, // 璁″垝鍗曞彿 (鍞竴鏍囪瘑) - CKZT = model.ckzt, // 鍑哄簱鐘舵� (闇�杩斿洖) - JHLB = model.jhlb, // 璁″垝绫诲埆 - CKDH = model.ckdh, // 鍙傝�鍗曞彿 - CPH = model.cph, // 杞︾墝鍙�- YSFS = model.ysfs, // 杩愯緭鏂瑰紡 - CPZT = model.cpzt, // 浜у搧鐘舵� - MDDW = model.mddw, // 涔版柇鍗曚綅 - CPDM = model.cpdm, // 浜у搧浠g爜 - CPLB = model.cplb, // 浜у搧绫诲埆 - CPLBMX = model.cplbmx, // 浜у搧绫诲埆鏄庣粏 - PP = model.pp, // 鍝佺墝 - DJ = model.dj, // 绛夌骇 (闇�杩斿洖) - GH = model.gh, // 缃愬彿 - PH = model.ph, // 鎵瑰彿 (闇�杩斿洖) - BZLX = model.bzlx, // 鍖呰绫诲瀷 - PZDH = model.pzdh, // 娲捐鍗曞彿 - PZD_DW = model.pzd_dw, // 娲捐鍗曞崟浣�- PZD_DYBH = model.pzd_dybh, // 娲捐鍗曡皟杩愮紪鍙�- PZJS = model.pzjs, // 娲捐浠舵暟 - PZSL = model.pzsl, // 娲捐鏁伴噺 - PZ_RQ = model.pz_rq, // 娲捐鏃ユ湡(yyyy-mm-dd) - PZ_CZRQ = model.pz_czrq, // 娲捐鎿嶄綔鏃ユ湡 - PZ_ZFBJ = model.pz_zfbj, // 娲捐浣滃簾鏍囪 - PZ_ZFRQ = model.pz_zfrq, // 娲捐浣滃簾鏃ユ湡 - PZ_BZ = model.pz_bz, // 娲捐澶囨敞 - CKDBH = model.ckdbh, // 鍑哄簱鍗曠紪鍙�- SFJS = model.sfjs, // 瀹炲彂浠舵暟 (闇�杩斿洖) - SFSL = model.sfsl, // 瀹炲彂鏁伴噺 (闇�杩斿洖) - SFCS = model.sfcs, // 瀹炲彂杞︽暟 (闇�杩斿洖) - ZCSJ = model.zcsj, // 瑁呰溅鏃堕棿 (闇�杩斿洖) - JLDW = model.jldw, // 璁¢噺鍗曚綅 (闇�杩斿洖) - FHRQ = model.fhrq, // 鍙戣揣鏃ユ湡 (闇�杩斿洖) - CKDM = model.ckdm, // 浠撳簱浠g爜 (闇�杩斿洖) - FHR = model.fhr, // 鍙戣揣浜�(闇�杩斿洖) - CZYDM = model.czydm, // 鎿嶄綔鍛�(闇�杩斿洖) - SHR_USERNAME = model.shr_username, // 瀹℃牳浜�- SHRQ = model.shrq, // 瀹℃牳鏃ユ湡 - ZFBJ = model.zfbj, // 浣滃簾鏍囪 - ZFRQ = model.zfrq, // 浣滃簾鏃ユ湡 - JSDW = model.jsdw, // 缁撶畻鍗曚綅 - SHDW = model.shdw, // 鏀惰揣鍗曚綅 - YSDW = model.ysdw, // 杩愯緭鍗曚綅 - LXR = model.lxr, // 鑱旂郴浜�- RY_ZXG = model.ry_zxg, // 瑁呭嵏宸�(闇�杩斿洖) - RY_CCSJ = model.ry_ccsj, // 鍙夎溅鍙告満 (闇�杩斿洖) - ERPHX_JHDH = model.erphx_jhdh, // erp浜よ揣鍗曞彿 - ERPHX_WLBM = model.erphx_wlbm, // erp鐗╂枡缂栫爜 - ERPHX_WLMC = model.erphx_wlmc, // erp鐗╂枡鍚嶇О - ERPHX_CJRQ = model.erphx_cjrq, // erp鍒涘缓鏃ユ湡 - HW = model.hw, // 璐т綅 (闇�杩斿洖) - HWZT = model.hwzt // 璐т綅鐘舵� (闇�杩斿洖) - }; - - //var cgDetailList = SelectCgByTotalQty( - // qty: (int)model.pzsl, - // itemCode: model.cpdm, - // batchNo: model.ph - // ); - - //if (cgDetailList.Count == 0) { - // info = "娌℃湁鍚堥�鐨勭墿鏂欏彲浠ュ嚭搴�; - // LogHelper.Info(info); - // return NewErpResult(3, info); - //} - - var cgDetail = db.Queryable<TN_CG_Detail>().Where(d => d.S_ITEM_CODE == model.cpdm && d.N_ITEM_NUM >= model.pzjs).First(); - if (cgDetail == null ) { - return NewErpResult(2, preLog + $"鍦╗璐у搧鏄庣粏琛╙涓病鏈夋壘鍒板悎閫傜殑鐗╂枡!瑕佹眰:鐗╂枡缂栫爜='{model.cpdm}',鐗╂枡鏁伴噺>={model.pzjs}"); - } - - var order = new TN_Outbound_Order { - S_NO = orderNo, - //S_ITEM_CODE = model.cpdm, - //S_BATCH = model.ph, - //N_END_NUM = (int)model.pzsl, - S_ITEM_CODE = model.cpdm, - S_BATCH = cgDetail.S_BATCH_NO, - N_END_NUM = (int)model.pzjs, - S_END_AREA = "QCCKQ", // ERP涓嬪彂鍑哄簱浠诲姟涓烘苯杞﹀嚭搴撳尯 - S_BS_NO = model.jhdh, - S_BS_TYPE = "ERP", - }; - - var detailList = new List<TN_Outbound_Detail>(); - //foreach (var cgDetail in cgDetailList) { - // var detail = new TN_Outbound_Detail { - // S_OO_NO = orderNo, - // S_ITEM_CODE = cgDetail.S_ITEM_CODE, - // S_BATCH_NO = cgDetail.S_BATCH_NO, - // S_CNTR_CODE = cgDetail.S_CNTR_CODE, - // N_COUNT = cgDetail.N_ITEM_NUM, - // S_END_AREA = order.S_END_AREA, // order涓篸etail鐨勬瘡涓�釜璐т綅璁剧疆缁堢偣鍊�- // S_BS_NO = order.S_BS_NO, - // S_BS_TYPE= order.S_BS_TYPE, - // }; - // detailList.Add(detail); - //} - var detail = new TN_Outbound_Detail { - S_OO_NO = orderNo, - S_ITEM_CODE = cgDetail.S_ITEM_CODE, - S_BATCH_NO = cgDetail.S_BATCH_NO, - S_CNTR_CODE = cgDetail.S_CNTR_CODE, - N_COUNT = cgDetail.N_ITEM_NUM, - S_END_AREA = order.S_END_AREA, // order涓篸etail鐨勬瘡涓�釜璐т綅璁剧疆缁堢偣鍊�- S_BS_NO = order.S_BS_NO, - S_BS_TYPE = order.S_BS_TYPE, - }; - detailList.Add(detail); - - using (var tran = db.Ado.UseTran()) { - if (db.Insertable(order).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewErpResult(500, preLog + $"鐢熸垚[鍑哄簱鍗昡澶辫触!鏁版嵁:{LogObject(order)}"); - } - - if (db.Insertable(detailList).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewErpResult(500, preLog + $"鐢熸垚[鍑哄簱鍗曟槑缁哴澶辫触!鏁版嵁:{LogObject(detailList)}"); - } - - if (db.Insertable(outboundPlan).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewErpResult(500, preLog + $"鐢熸垚[鍑哄簱鍗曡鍒掕褰曡〃]澶辫触!鏁版嵁:{LogObject(outboundPlan)}"); - } - - tran.CommitTran(); - return NewErpResult(0, preLog + $"鐢熸垚[鍑哄簱鍗昡鎴愬姛!鍑哄簱鍗�{LogObject(order)}\n鍑哄簱鍗曟槑缁�{LogObject(detail)}"); - } - } - catch (Exception ex) { - return NewErpResult(1, preLog + $"鍙戠敓浜嗗紓甯�{ex.Message}\n\n{ex.StackTrace}\n"); } } diff --git a/api/ApiModel.cs b/api/ApiModel.cs index cd2647e..dba3f6a 100644 --- a/api/ApiModel.cs +++ b/api/ApiModel.cs @@ -422,809 +422,5 @@ 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, bool log = true) { - if (log) { LogHelper.Info(message); } - return new ErpResult { Code = code, Message = message }; - } - - /// <summary> - /// ERP 涓嬪彂鍑哄簱浠诲姟鐨勬暟鎹被鍨�- /// </summary> - public class ErpSendOutboundPlanInfo { - /// <summary> - /// 璁″垝鍗曞彿 (鍞竴鏍囪瘑) - /// </summary> - public string jhdh { get; set; } = string.Empty; - - /// <summary> - /// 鍑哄簱鐘舵� - /// </summary> - public string ckzt { get; set; } = string.Empty;// 闇�杩斿洖 - - /// <summary> - /// 璁″垝绫诲埆 - /// </summary> - public string jhlb { get; set; } = string.Empty; - - /// <summary> - /// 鍙傝�鍗曞彿 - /// </summary> - public string ckdh { get; set; } = string.Empty; - - /// <summary> - /// 杞︾墝鍙�- /// </summary> - public string cph { get; set; } = string.Empty; - - /// <summary> - /// 杩愯緭鏂瑰紡 - /// </summary> - public string ysfs { get; set; } = string.Empty; - - /// <summary> - /// 浜у搧鐘舵� - /// </summary> - public string cpzt { get; set; } = string.Empty; - - /// <summary> - /// 涔版柇鍗曚綅 - /// </summary> - public string mddw { get; set; } = string.Empty; - - /// <summary> - /// 浜у搧浠g爜 - /// </summary> - public string cpdm { get; set; } = string.Empty; - - /// <summary> - /// 浜у搧绫诲埆 - /// </summary> - public string cplb { get; set; } = string.Empty; - - /// <summary> - /// 浜у搧绫诲埆鏄庣粏 - /// </summary> - public string cplbmx { get; set; } = string.Empty; - - /// <summary> - /// 鍝佺墝 - /// </summary> - public string pp { get; set; } = string.Empty; - - /// <summary> - /// 绛夌骇 - /// </summary> - public string dj { get; set; } = string.Empty;// 闇�杩斿洖 - - /// <summary> - /// 缃愬彿 - /// </summary> - public string gh { get; set; } = string.Empty; - - /// <summary> - /// 鎵瑰彿 - /// </summary> - public string ph { get; set; } = string.Empty;// 闇�杩斿洖 - - /// <summary> - /// 鍖呰绫诲瀷 - /// </summary> - public string bzlx { get; set; } = string.Empty; - - /// <summary> - /// 娲捐鍗曞彿 - /// </summary> - public string pzdh { get; set; } = string.Empty; - - /// <summary> - /// 娲捐鍗曞崟浣�- /// </summary> - public string pzd_dw { get; set; } = string.Empty; - - /// <summary> - /// 娲捐鍗曡皟杩愮紪鍙�- /// </summary> - public string pzd_dybh { get; set; } = string.Empty; - - /// <summary> - /// 娲捐浠舵暟 - /// </summary> - public double pzjs { get; set; } = 0; - - /// <summary> - /// 娲捐鏁伴噺 - /// </summary> - public decimal pzsl { get; set; } = 0; - - /// <summary> - /// 娲捐鏃ユ湡(yyyy-mm-dd) - /// </summary> - public string pz_rq { get; set; } = string.Empty; - - /// <summary> - /// 娲捐鎿嶄綔鏃ユ湡 - /// </summary> - public long pz_czrq { get; set; } = 0; - - /// <summary> - /// 娲捐浣滃簾鏍囪 - /// </summary> - public int pz_zfbj { get; set; } = 0; - - /// <summary> - /// 娲捐浣滃簾鏃ユ湡 - /// </summary> - public long pz_zfrq { get; set; } = 0; - - /// <summary> - /// 娲捐澶囨敞 - /// </summary> - public string pz_bz { get; set; } = string.Empty; - - /// <summary> - /// 鍑哄簱鍗曠紪鍙�- /// </summary> - public string ckdbh { get; set; } = string.Empty; - - /// <summary> - /// 瀹炲彂浠舵暟 - /// </summary> - public double sfjs { get; set; } = 0; // 闇�杩斿洖 - - /// <summary> - /// 瀹炲彂鏁伴噺 - /// </summary> - public decimal sfsl { get; set; } = 0; // 闇�杩斿洖 - - /// <summary> - /// 瀹炲彂杞︽暟 - /// </summary> - public int sfcs { get; set; } = 0; // 闇�杩斿洖 - - /// <summary> - /// 瑁呰溅鏃堕棿 - /// </summary> - public string zcsj { get; set; } = string.Empty; // 闇�杩斿洖 - - /// <summary> - /// 璁¢噺鍗曚綅 - /// </summary> - public string jldw { get; set; } = string.Empty;// 闇�杩斿洖 - - /// <summary> - /// 鍙戣揣鏃ユ湡 - /// </summary> - public long fhrq { get; set; } = 0; // 闇�杩斿洖 - - /// <summary> - /// 浠撳簱浠g爜 - /// </summary> - public string ckdm { get; set; } = string.Empty; // 闇�杩斿洖 - - /// <summary> - /// 鍙戣揣浜�- /// </summary> - public string fhr { get; set; } = string.Empty; // 闇�杩斿洖 - - /// <summary> - /// 鎿嶄綔鍛�- /// </summary> - public string czydm { get; set; } = string.Empty; // 闇�杩斿洖 - - /// <summary> - /// 瀹℃牳浜�- /// </summary> - public string shr_username { get; set; } = string.Empty; - - /// <summary> - /// 瀹℃牳鏃ユ湡 - /// </summary> - public long shrq { get; set; } = 0; - - /// <summary> - /// 浣滃簾鏍囪 - /// </summary> - public long zfbj { get; set; } = 0; - - /// <summary> - /// 浣滃簾鏃ユ湡 - /// </summary> - public long zfrq { get; set; } = 0; - - /// <summary> - /// 缁撶畻鍗曚綅 - /// </summary> - public string jsdw { get; set; } = string.Empty; - - /// <summary> - /// 鏀惰揣鍗曚綅 - /// </summary> - public string shdw { get; set; } = string.Empty; - - /// <summary> - /// 杩愯緭鍗曚綅 - /// </summary> - public string ysdw { get; set; } = string.Empty; - - /// <summary> - /// 鑱旂郴浜�- /// </summary> - public string lxr { get; set; } = string.Empty; - - /// <summary> - /// 瑁呭嵏宸�- /// </summary> - public string ry_zxg { get; set; } = string.Empty; // 闇�杩斿洖 - - /// <summary> - /// 鍙夎溅鍙告満 - /// </summary> - public string ry_ccsj { get; set; } = string.Empty; // 闇�杩斿洖 - - /// <summary> - /// erp浜よ揣鍗曞彿 - /// </summary> - public string erphx_jhdh { get; set; } = string.Empty; - - /// <summary> - /// erp鐗╂枡缂栫爜 - /// </summary> - public string erphx_wlbm { get; set; } = string.Empty; - - /// <summary> - /// erp鐗╂枡鍚嶇О - /// </summary> - public string erphx_wlmc { get; set; } = string.Empty; - - /// <summary> - /// erp鍒涘缓鏃ユ湡 - /// </summary> - public string erphx_cjrq { get; set; } = string.Empty; - - /// <summary> - /// 璐т綅 - /// </summary> - public string hw { get; set; } = string.Empty; // 闇�杩斿洖 - - /// <summary> - /// 璐т綅鐘舵� - /// </summary> - public string hwzt { get; set; } = string.Empty; // 闇�杩斿洖 - } - - public class PickUpReturnErpInfo { - /// <summary> - /// 璁″垝鍗曞彿 (鍞竴鏍囪瘑) - /// </summary> - public string jhdh { get; set; } - - /// <summary> - /// 鍑哄簱鐘舵� - /// </summary> - public string ckzt { get; set; } // 闇�杩斿洖 - - /// <summary> - /// 璁″垝绫诲埆 - /// </summary> - public string jhlb { get; set; } - - /// <summary> - /// 鍙傝�鍗曞彿 - /// </summary> - public string ckdh { get; set; } - - /// <summary> - /// 杞︾墝鍙�- /// </summary> - public string cph { get; set; } - - /// <summary> - /// 杩愯緭鏂瑰紡 - /// </summary> - public string ysfs { get; set; } - - /// <summary> - /// 浜у搧鐘舵� - /// </summary> - public string cpzt { get; set; } - - /// <summary> - /// 涔版柇鍗曚綅 - /// </summary> - public string mddw { get; set; } - - /// <summary> - /// 浜у搧浠g爜 - /// </summary> - public string cpdm { get; set; } - - /// <summary> - /// 浜у搧绫诲埆 - /// </summary> - public string cplb { get; set; } - - /// <summary> - /// 浜у搧绫诲埆鏄庣粏 - /// </summary> - public string cplbmx { get; set; } - - /// <summary> - /// 鍝佺墝 - /// </summary> - public string pp { get; set; } - - /// <summary> - /// 绛夌骇 - /// </summary> - public string dj { get; set; } // 闇�杩斿洖 - - /// <summary> - /// 缃愬彿 - /// </summary> - public string gh { get; set; } - - /// <summary> - /// 鎵瑰彿 - /// </summary> - public string ph { get; set; } // 闇�杩斿洖 - - /// <summary> - /// 鍖呰绫诲瀷 - /// </summary> - public string bzlx { get; set; } - - /// <summary> - /// 娲捐鍗曞彿 - /// </summary> - public string pzdh { get; set; } - - /// <summary> - /// 娲捐鍗曞崟浣�- /// </summary> - public string pzd_dw { get; set; } - - /// <summary> - /// 娲捐鍗曡皟杩愮紪鍙�- /// </summary> - public string pzd_dybh { get; set; } - - /// <summary> - /// 娲捐浠舵暟 - /// </summary> - public double pzjs { get; set; } - - /// <summary> - /// 娲捐鏁伴噺 - /// </summary> - public decimal pzsl { get; set; } - - /// <summary> - /// 娲捐鏃ユ湡(yyyy-mm-dd) - /// </summary> - public string pz_rq { get; set; } - - /// <summary> - /// 娲捐鎿嶄綔鏃ユ湡 - /// </summary> - public long pz_czrq { get; set; } - - /// <summary> - /// 娲捐浣滃簾鏍囪 - /// </summary> - public int pz_zfbj { get; set; } - - /// <summary> - /// 娲捐浣滃簾鏃ユ湡 - /// </summary> - public long pz_zfrq { get; set; } - - /// <summary> - /// 娲捐澶囨敞 - /// </summary> - public string pz_bz { get; set; } - - /// <summary> - /// 鍑哄簱鍗曠紪鍙�- /// </summary> - public string ckdbh { get; set; } - - /// <summary> - /// 瀹炲彂浠舵暟 - /// </summary> - public double sfjs { get; set; } // 闇�杩斿洖 - - /// <summary> - /// 瀹炲彂鏁伴噺 - /// </summary> - public decimal sfsl { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 瀹炲彂杞︽暟 - ///// </summary> - //public int sfcs { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 瑁呰溅鏃堕棿 - ///// </summary> - //public string zcsj { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 璁¢噺鍗曚綅 - ///// </summary> - //public string jldw { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 鍙戣揣鏃ユ湡 - ///// </summary> - //public long fhrq { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 浠撳簱浠g爜 - ///// </summary> - //public string ckdm { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 鍙戣揣浜�- ///// </summary> - //public string fhr { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 鎿嶄綔鍛�- ///// </summary> - //public string czydm { get; set; } // 闇�杩斿洖 - - /// <summary> - /// 瀹℃牳浜�- /// </summary> - public string shr_username { get; set; } - - /// <summary> - /// 瀹℃牳鏃ユ湡 - /// </summary> - public long shrq { get; set; } - - /// <summary> - /// 浣滃簾鏍囪 - /// </summary> - public long zfbj { get; set; } - - /// <summary> - /// 浣滃簾鏃ユ湡 - /// </summary> - public long zfrq { get; set; } - - /// <summary> - /// 缁撶畻鍗曚綅 - /// </summary> - public string jsdw { get; set; } - - /// <summary> - /// 鏀惰揣鍗曚綅 - /// </summary> - public string shdw { get; set; } - - /// <summary> - /// 杩愯緭鍗曚綅 - /// </summary> - public string ysdw { get; set; } - - /// <summary> - /// 鑱旂郴浜�- /// </summary> - public string lxr { get; set; } - - ///// <summary> - ///// 瑁呭嵏宸�- ///// </summary> - //public string ry_zxg { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 鍙夎溅鍙告満 - ///// </summary> - //public string ry_ccsj { get; set; } // 闇�杩斿洖 - - /// <summary> - /// erp浜よ揣鍗曞彿 - /// </summary> - public string erphx_jhdh { get; set; } - - /// <summary> - /// erp鐗╂枡缂栫爜 - /// </summary> - public string erphx_wlbm { get; set; } - - /// <summary> - /// erp鐗╂枡鍚嶇О - /// </summary> - public string erphx_wlmc { get; set; } - - /// <summary> - /// erp鍒涘缓鏃ユ湡 - /// </summary> - public string erphx_cjrq { get; set; } - - /// <summary> - /// 璐т綅 - /// </summary> - public string hw { get; set; } // 闇�杩斿洖 - - /// <summary> - /// 璐т綅鐘舵� - /// </summary> - public string hwzt { get; set; } // 闇�杩斿洖 - } - - public class CreateTaskReturnErpInfo { - /// <summary> - /// 璁″垝鍗曞彿 (鍞竴鏍囪瘑) - /// </summary> - public string jhdh { get; set; } - - /// <summary> - /// 鍑哄簱鐘舵� - /// </summary> - public string ckzt { get; set; } // 闇�杩斿洖 - - /// <summary> - /// 璁″垝绫诲埆 - /// </summary> - public string jhlb { get; set; } - - /// <summary> - /// 鍙傝�鍗曞彿 - /// </summary> - public string ckdh { get; set; } - - /// <summary> - /// 杞︾墝鍙�- /// </summary> - public string cph { get; set; } - - /// <summary> - /// 杩愯緭鏂瑰紡 - /// </summary> - public string ysfs { get; set; } - - /// <summary> - /// 浜у搧鐘舵� - /// </summary> - public string cpzt { get; set; } - - /// <summary> - /// 涔版柇鍗曚綅 - /// </summary> - public string mddw { get; set; } - - /// <summary> - /// 浜у搧浠g爜 - /// </summary> - public string cpdm { get; set; } - - /// <summary> - /// 浜у搧绫诲埆 - /// </summary> - public string cplb { get; set; } - - /// <summary> - /// 浜у搧绫诲埆鏄庣粏 - /// </summary> - public string cplbmx { get; set; } - - /// <summary> - /// 鍝佺墝 - /// </summary> - public string pp { get; set; } - - /// <summary> - /// 绛夌骇 - /// </summary> - public string dj { get; set; } // 闇�杩斿洖 - - /// <summary> - /// 缃愬彿 - /// </summary> - public string gh { get; set; } - - /// <summary> - /// 鎵瑰彿 - /// </summary> - public string ph { get; set; } // 闇�杩斿洖 - - /// <summary> - /// 鍖呰绫诲瀷 - /// </summary> - public string bzlx { get; set; } - - /// <summary> - /// 娲捐鍗曞彿 - /// </summary> - public string pzdh { get; set; } - - /// <summary> - /// 娲捐鍗曞崟浣�- /// </summary> - public string pzd_dw { get; set; } - - /// <summary> - /// 娲捐鍗曡皟杩愮紪鍙�- /// </summary> - public string pzd_dybh { get; set; } - - /// <summary> - /// 娲捐浠舵暟 - /// </summary> - public double pzjs { get; set; } - - /// <summary> - /// 娲捐鏁伴噺 - /// </summary> - public decimal pzsl { get; set; } - - /// <summary> - /// 娲捐鏃ユ湡(yyyy-mm-dd) - /// </summary> - public string pz_rq { get; set; } - - /// <summary> - /// 娲捐鎿嶄綔鏃ユ湡 - /// </summary> - public long pz_czrq { get; set; } - - /// <summary> - /// 娲捐浣滃簾鏍囪 - /// </summary> - public int pz_zfbj { get; set; } - - /// <summary> - /// 娲捐浣滃簾鏃ユ湡 - /// </summary> - public long pz_zfrq { get; set; } - - /// <summary> - /// 娲捐澶囨敞 - /// </summary> - public string pz_bz { get; set; } - - /// <summary> - /// 鍑哄簱鍗曠紪鍙�- /// </summary> - public string ckdbh { get; set; } - - ///// <summary> - ///// 瀹炲彂浠舵暟 - ///// </summary> - //public double sfjs { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 瀹炲彂鏁伴噺 - ///// </summary> - //public decimal sfsl { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 瀹炲彂杞︽暟 - ///// </summary> - //public int sfcs { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 瑁呰溅鏃堕棿 - ///// </summary> - //public string zcsj { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 璁¢噺鍗曚綅 - ///// </summary> - //public string jldw { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 鍙戣揣鏃ユ湡 - ///// </summary> - //public long fhrq { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 浠撳簱浠g爜 - ///// </summary> - //public string ckdm { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 鍙戣揣浜�- ///// </summary> - //public string fhr { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 鎿嶄綔鍛�- ///// </summary> - //public string czydm { get; set; } // 闇�杩斿洖 - - /// <summary> - /// 瀹℃牳浜�- /// </summary> - public string shr_username { get; set; } - - /// <summary> - /// 瀹℃牳鏃ユ湡 - /// </summary> - public long shrq { get; set; } - - /// <summary> - /// 浣滃簾鏍囪 - /// </summary> - public long zfbj { get; set; } - - /// <summary> - /// 浣滃簾鏃ユ湡 - /// </summary> - public long zfrq { get; set; } - - /// <summary> - /// 缁撶畻鍗曚綅 - /// </summary> - public string jsdw { get; set; } - - /// <summary> - /// 鏀惰揣鍗曚綅 - /// </summary> - public string shdw { get; set; } - - /// <summary> - /// 杩愯緭鍗曚綅 - /// </summary> - public string ysdw { get; set; } - - /// <summary> - /// 鑱旂郴浜�- /// </summary> - public string lxr { get; set; } - - ///// <summary> - ///// 瑁呭嵏宸�- ///// </summary> - //public string ry_zxg { get; set; } // 闇�杩斿洖 - - ///// <summary> - ///// 鍙夎溅鍙告満 - ///// </summary> - //public string ry_ccsj { get; set; } // 闇�杩斿洖 - - /// <summary> - /// erp浜よ揣鍗曞彿 - /// </summary> - public string erphx_jhdh { get; set; } - - /// <summary> - /// erp鐗╂枡缂栫爜 - /// </summary> - public string erphx_wlbm { get; set; } - - /// <summary> - /// erp鐗╂枡鍚嶇О - /// </summary> - public string erphx_wlmc { get; set; } - - /// <summary> - /// erp鍒涘缓鏃ユ湡 - /// </summary> - public string erphx_cjrq { get; set; } - - /// <summary> - /// 璐т綅 - /// </summary> - public string hw { get; set; } // 闇�杩斿洖 - - /// <summary> - /// 璐т綅鐘舵� - /// </summary> - public string hwzt { get; set; } // 闇�杩斿洖 - } } } diff --git a/api/DebugController.cs b/api/DebugController.cs index b91bb2e..4a2455b 100644 --- a/api/DebugController.cs +++ b/api/DebugController.cs @@ -3,17 +3,13 @@ using System.IO; using System.Runtime.ConstrainedExecution; using System.Web.Http; - using HH.WCS.Mobox3.DSZSH.core; using HH.WCS.Mobox3.DSZSH.device; using HH.WCS.Mobox3.DSZSH.models; using HH.WCS.Mobox3.DSZSH.util; using HH.WCS.Mobox3.DSZSH.wms; - using Newtonsoft.Json; - using SqlSugar; - using static HH.WCS.Mobox3.DSZSH.api.ApiModel; using static HH.WCS.Mobox3.DSZSH.api.OtherModel; using static HH.WCS.Mobox3.DSZSH.core.Monitor; @@ -159,18 +155,18 @@ /// <returns></returns> [HttpPost] [Route("TestErpSendOutboundPlan")] - public ErpResult TestErpSendOutboundPlan(TestErpSendOutboundPlanInfo model) { + public ErpModel.ErpResult TestErpSendOutboundPlan(TestErpSendOutboundPlanInfo model) { var apiName = "ERP涓嬪彂鍑哄簱璁″垝鍗�; //LogHelper.InfoApi(apiName, model); - var erpModel = new ErpSendOutboundPlanInfo(); + var erpModel = new ErpModel.ErpSendOutboundPlanInfo(); erpModel.jhdh = model.PlanNo; erpModel.cpdm = model.ItemCode; erpModel.pzjs = model.ItemNum; LogHelper.InfoApi(apiName, erpModel); - return ApiHelper.ErpSendOutboundPlan(erpModel); + return ErpService.ErpSendOutboundPlan(erpModel); } /// <summary> @@ -180,7 +176,7 @@ /// <returns></returns> [HttpPost] [Route("PickUpReturn")] - public TestErpResult PickUpReturn(PickUpReturnErpInfo model) { + public TestErpResult PickUpReturn(ErpModel.PickUpReturnErpInfo model) { if (model.sfjs == 0) { return new TestErpResult { code = 1, @@ -201,7 +197,7 @@ /// <returns></returns> [HttpPost] [Route("CreateTaskReturn")] - public TestErpResult CreateTaskReturn(CreateTaskReturnErpInfo model) { + public TestErpResult CreateTaskReturn(ErpModel.CreateTaskReturnErpInfo model) { if (model.hw == "") { return new TestErpResult { code = 1, diff --git a/api/ErpController.cs b/api/ErpController.cs index d58e3fc..05cacb7 100644 --- a/api/ErpController.cs +++ b/api/ErpController.cs @@ -4,6 +4,10 @@ using System.Web.Http; using static HH.WCS.Mobox3.DSZSH.api.OtherModel; using HH.WCS.Mobox3.DSZSH.util; +using HH.WCS.Mobox3.DSZSH.models; +using HH.WCS.Mobox3.DSZSH.wms; +using static HH.WCS.Mobox3.DSZSH.api.ApiModel; +using static HH.WCS.Mobox3.DSZSH.api.ErpModel; namespace HH.WCS.Mobox3.DSZSH.api { /// <summary> @@ -18,9 +22,160 @@ /// <returns></returns> [HttpPost] [Route("ErpSendOutboundPlan")] - public ErpResult ErpSendOutboundPlan(ErpSendOutboundPlanInfo model) { + public ErpResult ErpSendOutboundPlan(ErpModel.ErpSendOutboundPlanInfo model) { LogHelper.InfoApi("ERP涓嬪彂鍑哄簱璁″垝鍗�, model); - return ApiHelper.ErpSendOutboundPlan(model); + return ErpService.ErpSendOutboundPlan(model); } } + + public class ErpService { + public static ErpResult ErpSendOutboundPlan(ErpModel.ErpSendOutboundPlanInfo model) { + var db = new SqlHelper<object>().GetInstance(); + var orderNo = SYSHelper.GenerateSN("鍑哄簱鍗曞彿", "CKD", "yyMMdd"); + const string preLog = "API:ERP涓嬪彂鍑哄簱璁″垝鍗�"; + try { + if (model.pzjs <= 0) { + return NewErpResult(400, preLog + $"鐗╂枡鏁伴噺(pzjs)'{model.pzjs}'涓嶅悎娉�!瑕佹眰:鐗╂枡鏁伴噺锛�"); + } + + var outboundPlan = db.Queryable<TN_Outbound_Plan>() + .Where(p => p.JHDH == model.jhdh).First(); + if (outboundPlan != null) { + return NewErpResult(1, preLog + $"璁″垝鍗曞彿'{model.jhdh}'宸插湪[鍑哄簱璁″垝鍗昡涓瓨鍦�!"); + } + + outboundPlan = new TN_Outbound_Plan { + JHDH = model.jhdh, // 璁″垝鍗曞彿 (鍞竴鏍囪瘑) + CKZT = model.ckzt, // 鍑哄簱鐘舵� (闇�杩斿洖) + JHLB = model.jhlb, // 璁″垝绫诲埆 + CKDH = model.ckdh, // 鍙傝�鍗曞彿 + CPH = model.cph, // 杞︾墝鍙�+ YSFS = model.ysfs, // 杩愯緭鏂瑰紡 + CPZT = model.cpzt, // 浜у搧鐘舵� + MDDW = model.mddw, // 涔版柇鍗曚綅 + CPDM = model.cpdm, // 浜у搧浠g爜 + CPLB = model.cplb, // 浜у搧绫诲埆 + CPLBMX = model.cplbmx, // 浜у搧绫诲埆鏄庣粏 + PP = model.pp, // 鍝佺墝 + DJ = model.dj, // 绛夌骇 (闇�杩斿洖) + GH = model.gh, // 缃愬彿 + PH = model.ph, // 鎵瑰彿 (闇�杩斿洖) + BZLX = model.bzlx, // 鍖呰绫诲瀷 + PZDH = model.pzdh, // 娲捐鍗曞彿 + PZD_DW = model.pzd_dw, // 娲捐鍗曞崟浣�+ PZD_DYBH = model.pzd_dybh, // 娲捐鍗曡皟杩愮紪鍙�+ PZJS = model.pzjs, // 娲捐浠舵暟 + PZSL = model.pzsl, // 娲捐鏁伴噺 + PZ_RQ = model.pz_rq, // 娲捐鏃ユ湡(yyyy-mm-dd) + PZ_CZRQ = model.pz_czrq, // 娲捐鎿嶄綔鏃ユ湡 + PZ_ZFBJ = model.pz_zfbj, // 娲捐浣滃簾鏍囪 + PZ_ZFRQ = model.pz_zfrq, // 娲捐浣滃簾鏃ユ湡 + PZ_BZ = model.pz_bz, // 娲捐澶囨敞 + CKDBH = model.ckdbh, // 鍑哄簱鍗曠紪鍙�+ SFJS = model.sfjs, // 瀹炲彂浠舵暟 (闇�杩斿洖) + SFSL = model.sfsl, // 瀹炲彂鏁伴噺 (闇�杩斿洖) + SFCS = model.sfcs, // 瀹炲彂杞︽暟 (闇�杩斿洖) + ZCSJ = model.zcsj, // 瑁呰溅鏃堕棿 (闇�杩斿洖) + JLDW = model.jldw, // 璁¢噺鍗曚綅 (闇�杩斿洖) + FHRQ = model.fhrq, // 鍙戣揣鏃ユ湡 (闇�杩斿洖) + CKDM = model.ckdm, // 浠撳簱浠g爜 (闇�杩斿洖) + FHR = model.fhr, // 鍙戣揣浜�(闇�杩斿洖) + CZYDM = model.czydm, // 鎿嶄綔鍛�(闇�杩斿洖) + SHR_USERNAME = model.shr_username, // 瀹℃牳浜�+ SHRQ = model.shrq, // 瀹℃牳鏃ユ湡 + ZFBJ = model.zfbj, // 浣滃簾鏍囪 + ZFRQ = model.zfrq, // 浣滃簾鏃ユ湡 + JSDW = model.jsdw, // 缁撶畻鍗曚綅 + SHDW = model.shdw, // 鏀惰揣鍗曚綅 + YSDW = model.ysdw, // 杩愯緭鍗曚綅 + LXR = model.lxr, // 鑱旂郴浜�+ RY_ZXG = model.ry_zxg, // 瑁呭嵏宸�(闇�杩斿洖) + RY_CCSJ = model.ry_ccsj, // 鍙夎溅鍙告満 (闇�杩斿洖) + ERPHX_JHDH = model.erphx_jhdh, // erp浜よ揣鍗曞彿 + ERPHX_WLBM = model.erphx_wlbm, // erp鐗╂枡缂栫爜 + ERPHX_WLMC = model.erphx_wlmc, // erp鐗╂枡鍚嶇О + ERPHX_CJRQ = model.erphx_cjrq, // erp鍒涘缓鏃ユ湡 + HW = model.hw, // 璐т綅 (闇�杩斿洖) + HWZT = model.hwzt // 璐т綅鐘舵� (闇�杩斿洖) + }; + + var cgDetail = db.Queryable<TN_CG_Detail>().Where(d => d.S_ITEM_CODE == model.cpdm && d.N_ITEM_NUM >= model.pzjs).First(); + if (cgDetail == null) { + return NewErpResult(2, preLog + $"鍦╗璐у搧鏄庣粏琛╙涓病鏈夋壘鍒板悎閫傜殑鐗╂枡!瑕佹眰:鐗╂枡缂栫爜='{model.cpdm}',鐗╂枡鏁伴噺>={model.pzjs}"); + } + + var order = new TN_Outbound_Order { + S_NO = orderNo, + //S_ITEM_CODE = model.cpdm, + //S_BATCH = model.ph, + //N_END_NUM = (int)model.pzsl, + S_ITEM_CODE = model.cpdm, + S_BATCH = cgDetail.S_BATCH_NO, + N_END_NUM = (int)model.pzjs, + S_END_AREA = "QCCKQ", // ERP涓嬪彂鍑哄簱浠诲姟涓烘苯杞﹀嚭搴撳尯 + S_BS_NO = model.jhdh, + S_BS_TYPE = "ERP", + }; + + var detailList = new List<TN_Outbound_Detail>(); + var detail = new TN_Outbound_Detail { + S_OO_NO = orderNo, + S_ITEM_CODE = cgDetail.S_ITEM_CODE, + S_BATCH_NO = cgDetail.S_BATCH_NO, + S_CNTR_CODE = cgDetail.S_CNTR_CODE, + N_COUNT = cgDetail.N_ITEM_NUM, + S_END_AREA = order.S_END_AREA, // order涓篸etail鐨勬瘡涓�釜璐т綅璁剧疆缁堢偣鍊�+ S_BS_NO = order.S_BS_NO, + S_BS_TYPE = order.S_BS_TYPE, + }; + detailList.Add(detail); + + using (var tran = db.Ado.UseTran()) { + if (db.Insertable(order).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return NewErpResult(500, preLog + $"鐢熸垚[鍑哄簱鍗昡澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(order)}\n"); + } + + if (db.Insertable(detailList).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return NewErpResult(500, preLog + $"鐢熸垚[鍑哄簱鍗曟槑缁哴澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(detailList)}\n"); + } + + if (db.Insertable(outboundPlan).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return NewErpResult(500, preLog + $"鎻掑叆[鍑哄簱璁″垝璁板綍琛╙澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(outboundPlan)}\n"); + } + + tran.CommitTran(); + return NewErpResult(0, preLog + $"鐢熸垚[鍑哄簱鍗昡鎴愬姛!!\n\n鍑哄簱鍗�{JsonConvert.SerializeObject(order)}\n鍑哄簱鍗曟槑缁�{JsonConvert.SerializeObject(detailList)}\n"); + } + } + catch (Exception ex) { + return NewErpResult(1, preLog + $"鍙戠敓浜嗗紓甯�{ex.Message}\n\n{ex.StackTrace}\n"); + } + } + } + + public partial class ErpModel { + /// <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, string name = "") { + LogHelper.Info(message, name); + return new ErpResult { Code = code, Message = message }; + } + + public static ErpResult NewErpResult(Exception ex, string preLog = "", int errCode = -1) { + LogHelper.InfoEx(ex, preLog); + return new ErpResult { Code = errCode, Message = $"鍙戠敓浜哰寮傚父]:{ex.Message}" }; + } + } + } \ No newline at end of file diff --git a/api/ErpModel.CreateTaskReturnErpInfo.cs b/api/ErpModel.CreateTaskReturnErpInfo.cs new file mode 100644 index 0000000..2cedf77 --- /dev/null +++ b/api/ErpModel.CreateTaskReturnErpInfo.cs @@ -0,0 +1,271 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HH.WCS.Mobox3.DSZSH.api { + public partial class ErpModel { + public class CreateTaskReturnErpInfo { + /// <summary> + /// 璁″垝鍗曞彿 (鍞竴鏍囪瘑) + /// </summary> + public string jhdh { get; set; } + + /// <summary> + /// 鍑哄簱鐘舵� + /// </summary> + public string ckzt { get; set; } // 闇�杩斿洖 + + /// <summary> + /// 璁″垝绫诲埆 + /// </summary> + public string jhlb { get; set; } + + /// <summary> + /// 鍙傝�鍗曞彿 + /// </summary> + public string ckdh { get; set; } + + /// <summary> + /// 杞︾墝鍙�+ /// </summary> + public string cph { get; set; } + + /// <summary> + /// 杩愯緭鏂瑰紡 + /// </summary> + public string ysfs { get; set; } + + /// <summary> + /// 浜у搧鐘舵� + /// </summary> + public string cpzt { get; set; } + + /// <summary> + /// 涔版柇鍗曚綅 + /// </summary> + public string mddw { get; set; } + + /// <summary> + /// 浜у搧浠g爜 + /// </summary> + public string cpdm { get; set; } + + /// <summary> + /// 浜у搧绫诲埆 + /// </summary> + public string cplb { get; set; } + + /// <summary> + /// 浜у搧绫诲埆鏄庣粏 + /// </summary> + public string cplbmx { get; set; } + + /// <summary> + /// 鍝佺墝 + /// </summary> + public string pp { get; set; } + + /// <summary> + /// 绛夌骇 + /// </summary> + public string dj { get; set; } // 闇�杩斿洖 + + /// <summary> + /// 缃愬彿 + /// </summary> + public string gh { get; set; } + + /// <summary> + /// 鎵瑰彿 + /// </summary> + public string ph { get; set; } // 闇�杩斿洖 + + /// <summary> + /// 鍖呰绫诲瀷 + /// </summary> + public string bzlx { get; set; } + + /// <summary> + /// 娲捐鍗曞彿 + /// </summary> + public string pzdh { get; set; } + + /// <summary> + /// 娲捐鍗曞崟浣�+ /// </summary> + public string pzd_dw { get; set; } + + /// <summary> + /// 娲捐鍗曡皟杩愮紪鍙�+ /// </summary> + public string pzd_dybh { get; set; } + + /// <summary> + /// 娲捐浠舵暟 + /// </summary> + public double pzjs { get; set; } + + /// <summary> + /// 娲捐鏁伴噺 + /// </summary> + public decimal pzsl { get; set; } + + /// <summary> + /// 娲捐鏃ユ湡(yyyy-mm-dd) + /// </summary> + public string pz_rq { get; set; } + + /// <summary> + /// 娲捐鎿嶄綔鏃ユ湡 + /// </summary> + public long pz_czrq { get; set; } + + /// <summary> + /// 娲捐浣滃簾鏍囪 + /// </summary> + public int pz_zfbj { get; set; } + + /// <summary> + /// 娲捐浣滃簾鏃ユ湡 + /// </summary> + public long pz_zfrq { get; set; } + + /// <summary> + /// 娲捐澶囨敞 + /// </summary> + public string pz_bz { get; set; } + + /// <summary> + /// 鍑哄簱鍗曠紪鍙�+ /// </summary> + public string ckdbh { get; set; } + + ///// <summary> + ///// 瀹炲彂浠舵暟 + ///// </summary> + //public double sfjs { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 瀹炲彂鏁伴噺 + ///// </summary> + //public decimal sfsl { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 瀹炲彂杞︽暟 + ///// </summary> + //public int sfcs { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 瑁呰溅鏃堕棿 + ///// </summary> + //public string zcsj { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 璁¢噺鍗曚綅 + ///// </summary> + //public string jldw { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 鍙戣揣鏃ユ湡 + ///// </summary> + //public long fhrq { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 浠撳簱浠g爜 + ///// </summary> + //public string ckdm { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 鍙戣揣浜�+ ///// </summary> + //public string fhr { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 鎿嶄綔鍛�+ ///// </summary> + //public string czydm { get; set; } // 闇�杩斿洖 + + /// <summary> + /// 瀹℃牳浜�+ /// </summary> + public string shr_username { get; set; } + + /// <summary> + /// 瀹℃牳鏃ユ湡 + /// </summary> + public long shrq { get; set; } + + /// <summary> + /// 浣滃簾鏍囪 + /// </summary> + public long zfbj { get; set; } + + /// <summary> + /// 浣滃簾鏃ユ湡 + /// </summary> + public long zfrq { get; set; } + + /// <summary> + /// 缁撶畻鍗曚綅 + /// </summary> + public string jsdw { get; set; } + + /// <summary> + /// 鏀惰揣鍗曚綅 + /// </summary> + public string shdw { get; set; } + + /// <summary> + /// 杩愯緭鍗曚綅 + /// </summary> + public string ysdw { get; set; } + + /// <summary> + /// 鑱旂郴浜�+ /// </summary> + public string lxr { get; set; } + + ///// <summary> + ///// 瑁呭嵏宸�+ ///// </summary> + //public string ry_zxg { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 鍙夎溅鍙告満 + ///// </summary> + //public string ry_ccsj { get; set; } // 闇�杩斿洖 + + /// <summary> + /// erp浜よ揣鍗曞彿 + /// </summary> + public string erphx_jhdh { get; set; } + + /// <summary> + /// erp鐗╂枡缂栫爜 + /// </summary> + public string erphx_wlbm { get; set; } + + /// <summary> + /// erp鐗╂枡鍚嶇О + /// </summary> + public string erphx_wlmc { get; set; } + + /// <summary> + /// erp鍒涘缓鏃ユ湡 + /// </summary> + public string erphx_cjrq { get; set; } + + /// <summary> + /// 璐т綅 + /// </summary> + public string hw { get; set; } // 闇�杩斿洖 + + /// <summary> + /// 璐т綅鐘舵� + /// </summary> + public string hwzt { get; set; } // 闇�杩斿洖 + } + } +} diff --git a/api/ErpModel.ErpSendOutboundPlanInfo.cs b/api/ErpModel.ErpSendOutboundPlanInfo.cs new file mode 100644 index 0000000..dc504f9 --- /dev/null +++ b/api/ErpModel.ErpSendOutboundPlanInfo.cs @@ -0,0 +1,276 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using HH.WCS.Mobox3.DSZSH.util; +using Newtonsoft.Json; + +namespace HH.WCS.Mobox3.DSZSH.api { + public partial class ErpModel { + /// <summary> + /// ERP 涓嬪彂鍑哄簱浠诲姟鐨勬暟鎹被鍨�+ /// </summary> + public class ErpSendOutboundPlanInfo { + /// <summary> + /// 璁″垝鍗曞彿 (鍞竴鏍囪瘑) + /// </summary> + public string jhdh { get; set; } = string.Empty; + + /// <summary> + /// 鍑哄簱鐘舵� + /// </summary> + public string ckzt { get; set; } = string.Empty;// 闇�杩斿洖 + + /// <summary> + /// 璁″垝绫诲埆 + /// </summary> + public string jhlb { get; set; } = string.Empty; + + /// <summary> + /// 鍙傝�鍗曞彿 + /// </summary> + public string ckdh { get; set; } = string.Empty; + + /// <summary> + /// 杞︾墝鍙�+ /// </summary> + public string cph { get; set; } = string.Empty; + + /// <summary> + /// 杩愯緭鏂瑰紡 + /// </summary> + public string ysfs { get; set; } = string.Empty; + + /// <summary> + /// 浜у搧鐘舵� + /// </summary> + public string cpzt { get; set; } = string.Empty; + + /// <summary> + /// 涔版柇鍗曚綅 + /// </summary> + public string mddw { get; set; } = string.Empty; + + /// <summary> + /// 浜у搧浠g爜 + /// </summary> + public string cpdm { get; set; } = string.Empty; + + /// <summary> + /// 浜у搧绫诲埆 + /// </summary> + public string cplb { get; set; } = string.Empty; + + /// <summary> + /// 浜у搧绫诲埆鏄庣粏 + /// </summary> + public string cplbmx { get; set; } = string.Empty; + + /// <summary> + /// 鍝佺墝 + /// </summary> + public string pp { get; set; } = string.Empty; + + /// <summary> + /// 绛夌骇 + /// </summary> + public string dj { get; set; } = string.Empty;// 闇�杩斿洖 + + /// <summary> + /// 缃愬彿 + /// </summary> + public string gh { get; set; } = string.Empty; + + /// <summary> + /// 鎵瑰彿 + /// </summary> + public string ph { get; set; } = string.Empty;// 闇�杩斿洖 + + /// <summary> + /// 鍖呰绫诲瀷 + /// </summary> + public string bzlx { get; set; } = string.Empty; + + /// <summary> + /// 娲捐鍗曞彿 + /// </summary> + public string pzdh { get; set; } = string.Empty; + + /// <summary> + /// 娲捐鍗曞崟浣�+ /// </summary> + public string pzd_dw { get; set; } = string.Empty; + + /// <summary> + /// 娲捐鍗曡皟杩愮紪鍙�+ /// </summary> + public string pzd_dybh { get; set; } = string.Empty; + + /// <summary> + /// 娲捐浠舵暟 + /// </summary> + public double pzjs { get; set; } = 0; + + /// <summary> + /// 娲捐鏁伴噺 + /// </summary> + public decimal pzsl { get; set; } = 0; + + /// <summary> + /// 娲捐鏃ユ湡(yyyy-mm-dd) + /// </summary> + public string pz_rq { get; set; } = string.Empty; + + /// <summary> + /// 娲捐鎿嶄綔鏃ユ湡 + /// </summary> + public long pz_czrq { get; set; } = 0; + + /// <summary> + /// 娲捐浣滃簾鏍囪 + /// </summary> + public int pz_zfbj { get; set; } = 0; + + /// <summary> + /// 娲捐浣滃簾鏃ユ湡 + /// </summary> + public long pz_zfrq { get; set; } = 0; + + /// <summary> + /// 娲捐澶囨敞 + /// </summary> + public string pz_bz { get; set; } = string.Empty; + + /// <summary> + /// 鍑哄簱鍗曠紪鍙�+ /// </summary> + public string ckdbh { get; set; } = string.Empty; + + /// <summary> + /// 瀹炲彂浠舵暟 + /// </summary> + public double sfjs { get; set; } = 0; // 闇�杩斿洖 + + /// <summary> + /// 瀹炲彂鏁伴噺 + /// </summary> + public decimal sfsl { get; set; } = 0; // 闇�杩斿洖 + + /// <summary> + /// 瀹炲彂杞︽暟 + /// </summary> + public int sfcs { get; set; } = 0; // 闇�杩斿洖 + + /// <summary> + /// 瑁呰溅鏃堕棿 + /// </summary> + public string zcsj { get; set; } = string.Empty; // 闇�杩斿洖 + + /// <summary> + /// 璁¢噺鍗曚綅 + /// </summary> + public string jldw { get; set; } = string.Empty;// 闇�杩斿洖 + + /// <summary> + /// 鍙戣揣鏃ユ湡 + /// </summary> + public long fhrq { get; set; } = 0; // 闇�杩斿洖 + + /// <summary> + /// 浠撳簱浠g爜 + /// </summary> + public string ckdm { get; set; } = string.Empty; // 闇�杩斿洖 + + /// <summary> + /// 鍙戣揣浜�+ /// </summary> + public string fhr { get; set; } = string.Empty; // 闇�杩斿洖 + + /// <summary> + /// 鎿嶄綔鍛�+ /// </summary> + public string czydm { get; set; } = string.Empty; // 闇�杩斿洖 + + /// <summary> + /// 瀹℃牳浜�+ /// </summary> + public string shr_username { get; set; } = string.Empty; + + /// <summary> + /// 瀹℃牳鏃ユ湡 + /// </summary> + public long shrq { get; set; } = 0; + + /// <summary> + /// 浣滃簾鏍囪 + /// </summary> + public long zfbj { get; set; } = 0; + + /// <summary> + /// 浣滃簾鏃ユ湡 + /// </summary> + public long zfrq { get; set; } = 0; + + /// <summary> + /// 缁撶畻鍗曚綅 + /// </summary> + public string jsdw { get; set; } = string.Empty; + + /// <summary> + /// 鏀惰揣鍗曚綅 + /// </summary> + public string shdw { get; set; } = string.Empty; + + /// <summary> + /// 杩愯緭鍗曚綅 + /// </summary> + public string ysdw { get; set; } = string.Empty; + + /// <summary> + /// 鑱旂郴浜�+ /// </summary> + public string lxr { get; set; } = string.Empty; + + /// <summary> + /// 瑁呭嵏宸�+ /// </summary> + public string ry_zxg { get; set; } = string.Empty; // 闇�杩斿洖 + + /// <summary> + /// 鍙夎溅鍙告満 + /// </summary> + public string ry_ccsj { get; set; } = string.Empty; // 闇�杩斿洖 + + /// <summary> + /// erp浜よ揣鍗曞彿 + /// </summary> + public string erphx_jhdh { get; set; } = string.Empty; + + /// <summary> + /// erp鐗╂枡缂栫爜 + /// </summary> + public string erphx_wlbm { get; set; } = string.Empty; + + /// <summary> + /// erp鐗╂枡鍚嶇О + /// </summary> + public string erphx_wlmc { get; set; } = string.Empty; + + /// <summary> + /// erp鍒涘缓鏃ユ湡 + /// </summary> + public string erphx_cjrq { get; set; } = string.Empty; + + /// <summary> + /// 璐т綅 + /// </summary> + public string hw { get; set; } = string.Empty; // 闇�杩斿洖 + + /// <summary> + /// 璐т綅鐘舵� + /// </summary> + public string hwzt { get; set; } = string.Empty; // 闇�杩斿洖 + } + } +} diff --git a/api/ErpModel.PickUpReturnErpInfo.cs b/api/ErpModel.PickUpReturnErpInfo.cs new file mode 100644 index 0000000..b7628c7 --- /dev/null +++ b/api/ErpModel.PickUpReturnErpInfo.cs @@ -0,0 +1,271 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HH.WCS.Mobox3.DSZSH.api { + public partial class ErpModel { + public class PickUpReturnErpInfo { + /// <summary> + /// 璁″垝鍗曞彿 (鍞竴鏍囪瘑) + /// </summary> + public string jhdh { get; set; } + + /// <summary> + /// 鍑哄簱鐘舵� + /// </summary> + public string ckzt { get; set; } // 闇�杩斿洖 + + /// <summary> + /// 璁″垝绫诲埆 + /// </summary> + public string jhlb { get; set; } + + /// <summary> + /// 鍙傝�鍗曞彿 + /// </summary> + public string ckdh { get; set; } + + /// <summary> + /// 杞︾墝鍙�+ /// </summary> + public string cph { get; set; } + + /// <summary> + /// 杩愯緭鏂瑰紡 + /// </summary> + public string ysfs { get; set; } + + /// <summary> + /// 浜у搧鐘舵� + /// </summary> + public string cpzt { get; set; } + + /// <summary> + /// 涔版柇鍗曚綅 + /// </summary> + public string mddw { get; set; } + + /// <summary> + /// 浜у搧浠g爜 + /// </summary> + public string cpdm { get; set; } + + /// <summary> + /// 浜у搧绫诲埆 + /// </summary> + public string cplb { get; set; } + + /// <summary> + /// 浜у搧绫诲埆鏄庣粏 + /// </summary> + public string cplbmx { get; set; } + + /// <summary> + /// 鍝佺墝 + /// </summary> + public string pp { get; set; } + + /// <summary> + /// 绛夌骇 + /// </summary> + public string dj { get; set; } // 闇�杩斿洖 + + /// <summary> + /// 缃愬彿 + /// </summary> + public string gh { get; set; } + + /// <summary> + /// 鎵瑰彿 + /// </summary> + public string ph { get; set; } // 闇�杩斿洖 + + /// <summary> + /// 鍖呰绫诲瀷 + /// </summary> + public string bzlx { get; set; } + + /// <summary> + /// 娲捐鍗曞彿 + /// </summary> + public string pzdh { get; set; } + + /// <summary> + /// 娲捐鍗曞崟浣�+ /// </summary> + public string pzd_dw { get; set; } + + /// <summary> + /// 娲捐鍗曡皟杩愮紪鍙�+ /// </summary> + public string pzd_dybh { get; set; } + + /// <summary> + /// 娲捐浠舵暟 + /// </summary> + public double pzjs { get; set; } + + /// <summary> + /// 娲捐鏁伴噺 + /// </summary> + public decimal pzsl { get; set; } + + /// <summary> + /// 娲捐鏃ユ湡(yyyy-mm-dd) + /// </summary> + public string pz_rq { get; set; } + + /// <summary> + /// 娲捐鎿嶄綔鏃ユ湡 + /// </summary> + public long pz_czrq { get; set; } + + /// <summary> + /// 娲捐浣滃簾鏍囪 + /// </summary> + public int pz_zfbj { get; set; } + + /// <summary> + /// 娲捐浣滃簾鏃ユ湡 + /// </summary> + public long pz_zfrq { get; set; } + + /// <summary> + /// 娲捐澶囨敞 + /// </summary> + public string pz_bz { get; set; } + + /// <summary> + /// 鍑哄簱鍗曠紪鍙�+ /// </summary> + public string ckdbh { get; set; } + + /// <summary> + /// 瀹炲彂浠舵暟 + /// </summary> + public double sfjs { get; set; } // 闇�杩斿洖 + + /// <summary> + /// 瀹炲彂鏁伴噺 + /// </summary> + public decimal sfsl { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 瀹炲彂杞︽暟 + ///// </summary> + //public int sfcs { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 瑁呰溅鏃堕棿 + ///// </summary> + //public string zcsj { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 璁¢噺鍗曚綅 + ///// </summary> + //public string jldw { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 鍙戣揣鏃ユ湡 + ///// </summary> + //public long fhrq { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 浠撳簱浠g爜 + ///// </summary> + //public string ckdm { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 鍙戣揣浜�+ ///// </summary> + //public string fhr { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 鎿嶄綔鍛�+ ///// </summary> + //public string czydm { get; set; } // 闇�杩斿洖 + + /// <summary> + /// 瀹℃牳浜�+ /// </summary> + public string shr_username { get; set; } + + /// <summary> + /// 瀹℃牳鏃ユ湡 + /// </summary> + public long shrq { get; set; } + + /// <summary> + /// 浣滃簾鏍囪 + /// </summary> + public long zfbj { get; set; } + + /// <summary> + /// 浣滃簾鏃ユ湡 + /// </summary> + public long zfrq { get; set; } + + /// <summary> + /// 缁撶畻鍗曚綅 + /// </summary> + public string jsdw { get; set; } + + /// <summary> + /// 鏀惰揣鍗曚綅 + /// </summary> + public string shdw { get; set; } + + /// <summary> + /// 杩愯緭鍗曚綅 + /// </summary> + public string ysdw { get; set; } + + /// <summary> + /// 鑱旂郴浜�+ /// </summary> + public string lxr { get; set; } + + ///// <summary> + ///// 瑁呭嵏宸�+ ///// </summary> + //public string ry_zxg { get; set; } // 闇�杩斿洖 + + ///// <summary> + ///// 鍙夎溅鍙告満 + ///// </summary> + //public string ry_ccsj { get; set; } // 闇�杩斿洖 + + /// <summary> + /// erp浜よ揣鍗曞彿 + /// </summary> + public string erphx_jhdh { get; set; } + + /// <summary> + /// erp鐗╂枡缂栫爜 + /// </summary> + public string erphx_wlbm { get; set; } + + /// <summary> + /// erp鐗╂枡鍚嶇О + /// </summary> + public string erphx_wlmc { get; set; } + + /// <summary> + /// erp鍒涘缓鏃ユ湡 + /// </summary> + public string erphx_cjrq { get; set; } + + /// <summary> + /// 璐т綅 + /// </summary> + public string hw { get; set; } // 闇�杩斿洖 + + /// <summary> + /// 璐т綅鐘舵� + /// </summary> + public string hwzt { get; set; } // 闇�杩斿洖 + } + } +} diff --git a/api/ForceController.cs b/api/ForceController.cs index c19181d..11c25cf 100644 --- a/api/ForceController.cs +++ b/api/ForceController.cs @@ -51,7 +51,7 @@ return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(model.EndLoc, null, -1)); } - var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, model.CntId, taskInfo.TaskName); + var task = WCSHelper.BuildTaskAndLockLoc(startLoc, endLoc, model.CntId, taskInfo.TaskName); (ok, msg) = DbTran.CreateTask(new CreateTaskObj { StartLocToUpdate = startLoc, diff --git a/api/MoboxController.cs b/api/MoboxController.cs index 71c46e0..9b723bb 100644 --- a/api/MoboxController.cs +++ b/api/MoboxController.cs @@ -122,6 +122,5 @@ return ApiHelper.FinishedOutbound(model); } } - } } diff --git a/core/Monitor.cs b/core/Monitor.cs index da491d5..86fafc7 100644 --- a/core/Monitor.cs +++ b/core/Monitor.cs @@ -69,7 +69,9 @@ public static void CheckOutboundOrder() { var db = new SqlHelper<object>().GetInstance(); - var taskInfo = Settings.GetTaskInfo(ETask.C鎴愬搧鑳跺嚭搴�; + var (ok, msg) = (false, string.Empty); + + var taskInfo = ETask.C鎴愬搧鑳跺嚭搴�Info(); var taskName = "鍑哄簱"; const string preLog = "杞:鍑哄簱:"; @@ -139,41 +141,22 @@ } detail.N_B_STATE = 2; + detail.T_MODIFY = DateTime.Now; - var cntId = detail.S_CNTR_CODE; - - var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskName); + var task = WCSHelper.BuildTaskAndLockLoc(startLoc, endLoc, detail.S_CNTR_CODE, taskName); task.S_OP_CODE = detail.S_OO_NO; if (string.IsNullOrEmpty(detail.S_BS_NO)) { task.S_BS_NO = detail.S_BS_NO; task.S_BS_TYPE = "ERP"; } - using (var tran = db.Ado.UseTran()) { - if (db.Updateable(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { - tran.RollbackTran(); - LogHelper.Info($"杞:{taskName}:淇敼鏄庣粏琛ㄧ姸鎬佷负瀹屾垚--澶辫触!"); - continue; - } - - // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟 - if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - LogHelper.Info(preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{startLoc.S_CODE}',閿佺姸鎬�>'鍑哄簱閿�"); - } - if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - LogHelper.Info(preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�"); - } - if (db.Insertable(task).ExecuteCommand() <= 0) { - tran.RollbackTran(); - LogHelper.Info(preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } - - // 鎻愪氦鏁版嵁搴撴洿鏀�- tran.CommitTran(); - LogHelper.Info(preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } + (ok, msg) = DbTran.CreateTaskOrderObj(new CreateTaskOrderObj { + OutboundDetailToUpdate = detail, + StartLocToUpdate = startLoc, + EndLocToUpdate = endLoc, + TaskToInsert = task, + }); + LogHelper.Info(preLog + msg); // 濡傛灉褰撳墠鍑哄簱鍗曟槑缁嗘槸ERP涓嬪彂鐨�浠诲姟鍒涘缓瀹屾垚鍙嶉璐т綅淇℃伅 if (detail.S_BS_TYPE == "ERP") { @@ -193,7 +176,9 @@ public static void CheckCheckOrder() { var db = new SqlHelper<object>().GetInstance(); - var taskInfo = Settings.GetTaskInfo(ETask.C鎶芥鍑哄簱); + var (ok, msg) = (false, string.Empty); + + var taskInfo = ETask.C鎶芥鍑哄簱.Info(); var taskName = taskInfo.TaskName; const string preLog = "杞:鎶芥:"; @@ -250,40 +235,19 @@ } detail.N_B_STATE = 2; + detail.T_MODIFY = DateTime.Now; var cntId = detail.S_CNTR_CODE; - var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskName); + var task = WCSHelper.BuildTaskAndLockLoc(startLoc, endLoc, cntId, taskName); task.S_OP_CODE = detail.S_OO_NO; - using (var tran = db.Ado.UseTran()) { - if (db.Updateable(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { - tran.RollbackTran(); - LogHelper.Info(preLog + $"淇敼{taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触!"); - continue; - } - - if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - LogHelper.Info(preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{startLoc.S_CODE}',閿佺姸鎬�>'鍑哄簱閿�"); - continue; - } - - if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - LogHelper.Info(preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�"); - continue; - } - - if (db.Insertable(task).ExecuteCommand() <= 0) { - tran.RollbackTran(); - LogHelper.Info(preLog + $"鐢熸垚浠诲姟'{taskName}'澶辫触,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}"); - continue; - } - - tran.CommitTran(); - LogHelper.Info(preLog + $"鐢熸垚浠诲姟'{taskName}'鎴愬姛,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}"); - continue; - } + (ok, msg) = DbTran.CreateTaskOrderObj(new CreateTaskOrderObj { + SpotCheckDetailToUpdate = detail, + StartLocToUpdate = startLoc, + EndLocToUpdate = endLoc, + TaskToInsert = task, + }); + LogHelper.Info(preLog + msg); } } catch (Exception ex) { @@ -293,7 +257,9 @@ public static void CheckShiftOrder() { var db = new SqlHelper<object>().GetInstance(); - var taskInfo = Settings.GetTaskInfo(ETask.Y绉诲簱); + var (ok, msg) = (false, string.Empty); + + var taskInfo = ETask.Y绉诲簱.Info(); var taskName = taskInfo.TaskName; const string preLog = "杞:绉诲簱:"; @@ -337,63 +303,35 @@ } 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 => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�:鏈笂閿�- .Where(l => l.N_CURRENT_NUM == 1) - .First(); + var startLoc = db.Queryable<TN_Location>().LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE) + .Where(DbExpr.StartLoc()).Where((l, c) => c.S_CNTR_CODE == detail.S_CNTR_CODE).First(); if (startLoc == null) { - LogHelper.Info(preLog + $"娌℃湁鎵惧埌缁堢偣璐т綅={detail.S_END_AREA}鐨勭粓鐐硅揣浣�闇�婊¤冻:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0"); + LogHelper.Info(preLog + LogMsg.StartLocNotFound() + $"缁戝畾瀹瑰櫒='{detail.S_CNTR_CODE}'"); continue; } var endLoc = db.Queryable<TN_Location>() - .Where(l => l.S_AREA_CODE == detail.S_END_AREA) - .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�:鏈笂閿�- .Where(a => a.N_CURRENT_NUM == 0).First(); - + .Where(DbExpr.EndLoc(areas: new List<string> { detail.S_END_AREA })).First(); if (endLoc == null) { - LogHelper.Info(preLog + $"娌℃湁鎵惧埌缁堢偣璐т綅={detail.S_END_AREA}鐨勭粓鐐硅揣浣�闇�婊¤冻:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0"); + LogHelper.Info(preLog + LogMsg.EndLocNotFound(areas: new List<string> { detail.S_END_AREA })); continue; } detail.N_B_STATE = 2; + detail.T_MODIFY = DateTime.Now; var cntId = detail.S_CNTR_CODE; - var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskName); + var task = WCSHelper.BuildTaskAndLockLoc(startLoc, endLoc, cntId, taskName); task.S_OP_CODE = detail.S_OO_NO; - using (var tran = db.Ado.UseTran()) { - if (db.Updateable(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { - tran.RollbackTran(); - LogHelper.Info($"杞:{taskName}:淇敼{taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触!"); - continue; - } - - if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - LogHelper.Info(preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{startLoc.S_CODE}',閿佺姸鎬�>'鍑哄簱閿�"); - continue; - } - - if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - LogHelper.Info(preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�"); - continue; - } - - if (db.Insertable(task).ExecuteCommand() <= 0) { - tran.RollbackTran(); - LogHelper.Info(preLog + $"鐢熸垚浠诲姟'{taskName}'澶辫触,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}"); - continue; - } - - tran.CommitTran(); - LogHelper.Info(preLog + $"鐢熸垚浠诲姟'{taskName}'鎴愬姛,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}"); - continue; - } + (ok, msg) = DbTran.CreateTaskOrderObj(new CreateTaskOrderObj { + RelocationDetailToUpdate = detail, + StartLocToUpdate = startLoc, + EndLocToUpdate = endLoc, + TaskToInsert = task, + }); + LogHelper.Info(preLog + msg); } } catch (Exception ex) { @@ -422,7 +360,7 @@ LogHelper.Info($"璁″垝鍗曞彿{task.S_BS_NO}涓嶅瓨鍦�"); } - var model = new OtherModel.CreateTaskReturnErpInfo { + var model = new ErpModel.CreateTaskReturnErpInfo { jhdh = plan.JHDH , // 璁″垝鍗曞彿 (鍞竴鏍囪瘑) ckzt = plan.CKZT , // 鍑哄簱鐘舵� (闇�杩斿洖) jhlb = plan.JHLB , // 璁″垝绫诲埆 diff --git a/core/WCSCore.cs b/core/WCSCore.cs index 26a01cd..8404866 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -195,7 +195,7 @@ try { ModbusHelper.Relink(); - var BZQ = Settings.GetTaskInfo(ETask.M婊℃墭涓嬬嚎鍏ュ簱).StartAreas; + var BZQ = ETask.M婊℃墭涓嬬嚎鍏ュ簱.StartAreas(); var loc = db.Queryable<TN_Location>() .Where(l => BZQ.Contains(l.S_AREA_CODE) && l.S_AGV_SITE == model.station_name).First(); @@ -327,7 +327,7 @@ LogHelper.Info($"鐗╂枡缂栫爜涓嶅瓨鍦�"); } - var model = new OtherModel.PickUpReturnErpInfo { + var model = new ErpModel.PickUpReturnErpInfo { jhdh = plan.JHDH, // 璁″垝鍗曞彿 (鍞竴鏍囪瘑) ckzt = plan.CKZT, // 鍑哄簱鐘舵� (闇�杩斿洖) jhlb = plan.JHLB, // 璁″垝绫诲埆 @@ -491,10 +491,10 @@ public static (bool, string) CreateInboundTask(string startLocCode, string cntrCode) { var db = new SqlHelper<object>().GetInstance(); - var taskInfo = Settings.GetTaskInfo(ETask.M婊℃墭涓嬬嚎鍏ュ簱); - var taskName = taskInfo.TaskName; - var startAreas = taskInfo.StartAreas; - var endAreas = taskInfo.EndAreas; + var tInfo = ETask.M婊℃墭涓嬬嚎鍏ュ簱.Info(); + var taskName = tInfo.TaskName; + var startAreas = tInfo.StartAreas; + var endAreas = tInfo.EndAreas; const string cntrType = "鎵樼洏"; try { @@ -533,7 +533,7 @@ } var cntId = locCntrRel.S_CNTR_CODE; - var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskName); + var task = WCSHelper.BuildTaskAndLockLoc(startLoc, endLoc, cntId, taskName); using (var tran = db.Ado.UseTran()) { if (locCntrRelOld != null) { diff --git a/device/ModbusFactory.cs b/device/ModbusFactory.cs index d44947b..d03901a 100644 --- a/device/ModbusFactory.cs +++ b/device/ModbusFactory.cs @@ -6,7 +6,6 @@ using Org.BouncyCastle.Utilities.Net; using System.Web.UI.WebControls.WebParts; using System.Linq; - using TcpClient = System.Net.Sockets.TcpClient; using System.IO; using HH.WCS.Mobox3.DSZSH.util; diff --git a/device/ModbusHelper.cs b/device/ModbusHelper.cs index 7633921..43d4ccb 100644 --- a/device/ModbusHelper.cs +++ b/device/ModbusHelper.cs @@ -2,9 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; - using EasyModbus; - using HH.WCS.Mobox3.DSZSH.util; namespace HH.WCS.Mobox3.DSZSH.device { diff --git a/device/OpcUaHelper.cs b/device/OpcUaHelper.cs index 4f8922c..a916ed8 100644 --- a/device/OpcUaHelper.cs +++ b/device/OpcUaHelper.cs @@ -4,33 +4,25 @@ using Opc.Ua.Configuration; using HH.WCS.Mobox3.DSZSH.util; - -namespace HH.WCS.Mobox3.DSZSH.device -{ - internal class OpcUaHelper - { +namespace HH.WCS.Mobox3.DSZSH.device { + internal class OpcUaHelper { private static Opc.Ua.Client.Session session; - static OpcUaHelper() - { + static OpcUaHelper() { CreateUpcSession(); } /// <summary> /// 杩炴帴OPC鏈嶅姟 /// </summary> - internal static async void CreateUpcSession() - { - try - { + internal static async void CreateUpcSession() { + try { // 鍒涘缓涓�釜搴旂敤閰嶇疆瀵硅薄,鐢ㄤ簬璁剧疆搴旂敤鍚嶇О,鍞竴鏍囪瘑,绫诲瀷,璇佷功鍜屽畨鍏ㄧ瓥鐣�- var config = new ApplicationConfiguration() - { + var config = new ApplicationConfiguration() { ApplicationName = "MyClient", ApplicationUri = Utils.Format(@"urn:{0}:MyClient", System.Net.Dns.GetHostName()), ApplicationType = ApplicationType.Client, - SecurityConfiguration = new SecurityConfiguration - { + SecurityConfiguration = new SecurityConfiguration { ApplicationCertificate = new CertificateIdentifier { StoreType = @"Directory", StorePath = @"%CommonApplicationData%\OPC Foundation\CertificateStores\MachineDefault", SubjectName = "MyClientSubjectName" }, TrustedIssuerCertificates = new CertificateTrustList { StoreType = @"Directory", StorePath = @"%CommonApplicationData%\OPC Foundation\CertificateStores\UA Certificate Authorities" }, TrustedPeerCertificates = new CertificateTrustList { StoreType = @"Directory", StorePath = @"%CommonApplicationData%\OPC Foundation\CertificateStores\UA Applications" }, @@ -50,8 +42,7 @@ await config.Validate(ApplicationType.Client); // 璁剧疆璇佷功楠岃瘉浜嬩欢,鐢ㄤ簬鑷姩鎺ュ彈涓嶅彈淇′换鐨勮瘉涔�- if (config.SecurityConfiguration.AutoAcceptUntrustedCertificates) - { + if (config.SecurityConfiguration.AutoAcceptUntrustedCertificates) { config.CertificateValidator.CertificateValidation += (s, e) => { e.Accept = (e.Error.StatusCode == StatusCodes.BadCertificateUntrusted); }; } @@ -65,19 +56,16 @@ EndpointConfiguration endpointConfiguration = EndpointConfiguration.Create(config); ConfiguredEndpoint endpoint = new ConfiguredEndpoint(null, endpointDescription, endpointConfiguration); session = await Session.Create(config, endpoint, false, false, "DataCollector", 60000, new UserIdentity(), null); - if (session != null && session.Connected) - { + if (session != null && session.Connected) { Console.WriteLine("The session is connected to the OPC UA server."); LogHelper.Info($"鍒涘缓OPC杩炴帴鎴愬姛", "OPC"); } - else - { + else { Console.WriteLine("The session is not connected to the OPC UA server."); LogHelper.Info($"鍒涘缓OPC杩炴帴澶辫触", "OPC"); } } - catch (Exception e) - { + catch (Exception e) { LogHelper.Info($"杩炴帴OPC鏈嶅姟寮傚父" + e.Message, "OPC"); } } @@ -86,27 +74,22 @@ /// 璇诲彇OPC鑺傜偣鏁版嵁 /// </summary> /// <param name="nodeId"></param> - internal static object ReadOpcValue(string nodeId) - { - try - { - if (session != null && session.Connected) - { + internal static object ReadOpcValue(string nodeId) { + try { + if (session != null && session.Connected) { // 璇诲彇鏁版嵁鑺傜偣 DataValue item = session.ReadValue(nodeId: nodeId); LogHelper.Info($"OPC璇诲彇:nodeid:{nodeId},value:{item.Value}", "OPC"); return item.Value; } - else - { + else { Console.WriteLine("The session is not connected to the OPC UA server."); LogHelper.Info($"OPC杩炴帴澶辫触", "OPC"); CreateUpcSession(); } - + } - catch (Exception e) - { + catch (Exception e) { LogHelper.Info($"璇诲彇OPC鏁版嵁寮傚父" + e.Message, "OPC"); } @@ -118,15 +101,11 @@ /// </summary> /// <param name="nodeId"></param> /// <param name="val"></param> - internal static void WriteOpcValue(string nodeId,bool val) - { - try - { - if (session != null && session.Connected) - { + internal static void WriteOpcValue(string nodeId, bool val) { + try { + if (session != null && session.Connected) { // 鍐欏叆鏁版嵁鍒拌妭鐐�- WriteValue writeValue = new WriteValue - { + WriteValue writeValue = new WriteValue { NodeId = new NodeId(nodeId), AttributeId = Attributes.Value, Value = new DataValue(val) @@ -138,16 +117,14 @@ Console.WriteLine($"Write Status for {nodeId}: {results[0]}"); LogHelper.Info($"OPC鍐欏叆:nodeid:{nodeId},value:{val}", "OPC"); } - else - { + else { Console.WriteLine("The session is not connected to the OPC UA server."); LogHelper.Info($"OPC杩炴帴澶辫触", "OPC"); CreateUpcSession(); } } - catch (Exception e) - { + catch (Exception e) { LogHelper.Info($"鍐欏叆OPC鏁版嵁寮傚父" + e.Message, "OPC"); } } @@ -157,15 +134,11 @@ /// </summary> /// <param name="nodeId"></param> /// <param name="val"></param> - internal static void WriteOpcValue(string nodeId, int val) - { - try - { - if (session != null && session.Connected) - { + internal static void WriteOpcValue(string nodeId, int val) { + try { + if (session != null && session.Connected) { // 鍐欏叆鏁版嵁鍒拌妭鐐�- WriteValue writeValue = new WriteValue - { + WriteValue writeValue = new WriteValue { NodeId = new NodeId(nodeId), AttributeId = Attributes.Value, Value = new DataValue(val) @@ -177,16 +150,14 @@ Console.WriteLine($"Write Status for {nodeId}: {results[0]}"); LogHelper.Info($"OPC鍐欏叆:nodeid:{nodeId},value:{val}", "OPC"); } - else - { + else { Console.WriteLine("The session is not connected to the OPC UA server."); LogHelper.Info($"OPC杩炴帴澶辫触", "OPC"); CreateUpcSession(); } } - catch (Exception e) - { + catch (Exception e) { LogHelper.Info($"鍐欏叆OPC鏁版嵁寮傚父" + e.Message, "OPC"); } } diff --git a/device/PlcHelper.cs b/device/PlcHelper.cs deleted file mode 100644 index c25ed1d..0000000 --- a/device/PlcHelper.cs +++ /dev/null @@ -1,100 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -using HH.WCS.Mobox3.DSZSH.process; - -namespace HH.WCS.Mobox3.DSZSH.device -{ - internal class PlcHelper - { - internal static void Receive(string ip, string msg) { - //澶勭悊璁惧淇″彿 - DeviceProcess.Analysis(msg, ip); - } - internal static bool SendHex(string ip, string msg) { - return TcpServer.TcpServerSend(ip, Hex2Bytes(msg)); - } - internal static void SendAscii(string ip, string msg) { - TcpServer.TcpServerSend(ip, Encoding.ASCII.GetBytes(msg)); - } - - internal static byte[] Hex2Bytes(string hexString) { - hexString = hexString.Replace(" ", ""); - if ((hexString.Length % 2) != 0) - hexString += " "; - byte[] returnBytes = new byte[hexString.Length / 2]; - for (int i = 0; i < returnBytes.Length; i++) - returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); - - return returnBytes; - } - internal static string Hex2Ascii(string hexString) { - hexString = hexString.Replace(" ", ""); - if ((hexString.Length % 2) != 0) - hexString += " "; - byte[] returnBytes = new byte[hexString.Length / 2]; - for (int i = 0; i < returnBytes.Length; i++) - returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); - - return Encoding.ASCII.GetString(returnBytes); - } - - #region 杩涘埗杞崲+CRC - internal static bool CheckCRC(string hex) { - var result = false; - var data = hex.Replace(" ", ""); - if (data.Length % 2 == 0) { - var code1 = data.Substring(data.Length - 4, 4).ToLower(); - var code2 = BitConverter.ToString(CRC16LH(Hex2Bytes(data.Substring(0, data.Length - 4)))).Replace("-", "").Replace(" ", "").ToLower(); - result = code1 == code2; - } - return result; - } - internal static byte[] CRC16LH(byte[] pDataBytes) { - ushort crc = 0xffff; - ushort polynom = 0xA001; - - for (int i = 0; i < pDataBytes.Length; i++) { - crc ^= pDataBytes[i]; - for (int j = 0; j < 8; j++) { - if ((crc & 0x01) == 0x01) { - crc >>= 1; - crc ^= polynom; - } - else { - crc >>= 1; - } - } - } - - byte[] result = BitConverter.GetBytes(crc); - return result; - } - internal static byte[] CRC16HL(byte[] pDataBytes) { - ushort crc = 0xffff; - ushort polynom = 0xA001; - - for (int i = 0; i < pDataBytes.Length; i++) { - crc ^= pDataBytes[i]; - for (int j = 0; j < 8; j++) { - if ((crc & 0x01) == 0x01) { - crc >>= 1; - crc ^= polynom; - } - else { - crc >>= 1; - } - } - } - - byte[] result = BitConverter.GetBytes(crc).Reverse().ToArray(); - return result; - } - - #endregion - - } -} diff --git a/device/TcpClient.cs b/device/TcpClient.cs deleted file mode 100644 index 4b2bda1..0000000 --- a/device/TcpClient.cs +++ /dev/null @@ -1,87 +0,0 @@ -锘縰sing HH.WCS.Mobox3.DSZSH; -using HH.WCS.Mobox3.DSZSH.device; -using HH.WCS.Mobox3.DSZSH.util; - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net.Sockets; -using System.Text; -using System.Threading.Tasks; - -namespace HH.WCS.Mobox3.DSZSH.device { - internal class TcpClient - { - /// <summary> - /// - /// </summary> - /// <param name="ip">127.0.0.1</param> - /// <param name="port">8888</param> - /// <param name="hex">01 02 00 00 00 0C 78 0F</param> - /// <returns></returns> - private static string SendHexOnce(string ip, int port, string hex) { - var res = string.Empty; - Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - client.Connect(ip, port); - client.ReceiveTimeout = 2000; - if (client.Connected) { - client.Send(PlcHelper.Hex2Bytes(hex)); - byte[] buffer = new byte[1024]; - try { - var length = client.Receive(buffer, SocketFlags.None); - byte[] data = new byte[length]; - Array.Copy(buffer, data, length); - res = BitConverter.ToString(data).Replace("-", ""); - } - catch (Exception ex) { - LogHelper.InfoEx(ex); - } - client.Disconnect(true); - client.Dispose(); - } - client = null; - return res; - } - - /// <summary> - /// 璇讳繚鎸佸瘎瀛樺櫒,modbus rtu鐨勫皝瑁�- /// </summary> - /// <param name="address"></param> - /// <param name="qty"></param> - /// <param name="ip"></param> - /// <param name="port"></param> - /// <returns></returns> - internal int[] ReadInputRegistersRtu(int address, int qty, string ip, int port = 502) { - List<int> res = new List<int>(); - var hex = $"0103{address.ToString("X4")}{qty.ToString("X4")}"; - hex = hex + BitConverter.ToString(PlcHelper.CRC16LH(PlcHelper.Hex2Bytes(hex))).Replace("-", "").Replace(" ", ""); - var data = SendHexOnce(ip, port, hex); - if (!string.IsNullOrEmpty(data)) { - if (PlcHelper.CheckCRC(data)) { - var lenght = Convert.ToInt16(data.Substring(4, 2), 16) / 2; - for (int i = 0; i < lenght; i++) { - res[i] = Convert.ToInt16(data.Substring(6 + 4 * 1, 4), 16); - } - } - } - return res.ToArray(); - } - /// <summary> - /// 鍐欏崟涓瘎瀛樺櫒 - /// </summary> - /// <param name="address"></param> - /// <param name="value"></param> - /// <param name="ip"></param> - /// <param name="port"></param> - internal bool WriteSingleRegisterRtu(int address, int value, string ip, int port = 502) { - var res = false; - var hex = $"0106{address.ToString("X4")}{value.ToString("X4")}"; - hex = hex + BitConverter.ToString(PlcHelper.CRC16LH(PlcHelper.Hex2Bytes(hex))).Replace("-", "").Replace(" ", ""); - var data = SendHexOnce(ip, port, hex); - if (!string.IsNullOrEmpty(data)) { - res = true; - } - return res; - } - } -} diff --git a/device/TcpServer.cs b/device/TcpServer.cs deleted file mode 100644 index 3340cb5..0000000 --- a/device/TcpServer.cs +++ /dev/null @@ -1,252 +0,0 @@ -锘縰sing HH.WCS.Mobox3.DSZSH.dispatch; -using HH.WCS.Mobox3.DSZSH.util; - -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Net.Sockets; -using System.Text; - -namespace HH.WCS.Mobox3.DSZSH.device -{ - public class TcpServer - { - public TcpServer(string ip, int port) - { - Init(ip, port); - } - private void Init(string ip, int port) - { - //鍒涘缓涓�釜鏂扮殑Socket,杩欓噷鎴戜滑浣跨敤鏈�父鐢ㄧ殑鍩轰簬TCP鐨凷tream Socket (娴佸紡濂楁帴瀛� - var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - try - { - //灏嗚socket缁戝畾鍒颁富鏈轰笂闈㈢殑鏌愪釜绔彛,绔彛搴旇鏀惧埌閰嶇疆鏂囦欢涓�- socket.Bind(new IPEndPoint(IPAddress.Parse(ip), port)); - Console.WriteLine(port); - //鍚姩鐩戝惉,骞朵笖璁剧疆涓�釜鏈�ぇ鐨勯槦鍒楅暱搴�- socket.Listen(30); - //寮�鎺ュ彈瀹㈡埛绔繛鎺ヨ姹�- socket.BeginAccept(new AsyncCallback(ClientAccepted), socket); - } - catch (Exception e) - { - Console.WriteLine(e.Message); - } - } - public static Dictionary<string, Socket> clients = new Dictionary<string, Socket>(); - public static Dictionary<string, byte[]> buffers = new Dictionary<string, byte[]>(); - public static Dictionary<string,bool> isSend = new Dictionary<string, bool>(); - public static Dictionary<string,bool> isCheck = new Dictionary<string, bool>(); - - public static Dictionary<string,int> saoMa = new Dictionary<string, int>(); - - public static void ClientAccepted(IAsyncResult ar) - { - - var socket = ar.AsyncState as Socket; - var client = socket.EndAccept(ar); - string remote_ip = ((System.Net.IPEndPoint)client.RemoteEndPoint).Address.ToString(); - if (clients.Keys.Contains(remote_ip)) - { - clients[remote_ip] = client; - } - else - { - clients.Add(remote_ip, client); - } - if (!buffers.Keys.Contains(remote_ip)) - { - buffers.Add(remote_ip, new byte[1024]); - } - - if (!isSend.Keys.Contains(remote_ip)) - { - isSend.Add(remote_ip, false); - } - - if (!isCheck.Keys.Contains(remote_ip)) - { - isCheck.Add(remote_ip, false); - } - - //缁欏鎴风鍙戦�涓�釜娆㈣繋娑堟伅 - //client.Send(Encoding.Unicode.GetBytes("Hi there, I accept you request at " + DateTime.Now.ToString())); - Console.WriteLine(remote_ip); - - try - { - client.BeginReceive(buffers[remote_ip], 0, buffers[remote_ip].Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), client); - } - catch (Exception ex) - { - Console.WriteLine($"銆愭帴鏀跺鎴风鐨勬秷鎭紓甯搞�:" + ex.Message); - } - //鍑嗗鎺ュ彈涓嬩竴涓鎴风璇锋眰 - socket.BeginAccept(new AsyncCallback(ClientAccepted), socket); - } - - - public static void ReceiveMessage(IAsyncResult ar) - { - try - { - var socket = ar.AsyncState as Socket; - string remote_ip = ((System.Net.IPEndPoint)socket.RemoteEndPoint).Address.ToString(); - var length = socket.EndReceive(ar); - if (length == 0) - { - clients.Remove(remote_ip); - buffers.Remove(remote_ip); - isSend.Remove(remote_ip); - isCheck.Remove(remote_ip); - saoMa.Remove(remote_ip); - return; - } - else - { - if (!clients.Keys.Contains(remote_ip)) - { - clients.Add(remote_ip, socket); - } - if (!buffers.Keys.Contains(remote_ip)) - { - buffers.Add(remote_ip, new byte[1024]); - - } - if (!isSend.Keys.Contains(remote_ip)) - { - isSend.Add(remote_ip, false); - } - if (!isCheck.Keys.Contains(remote_ip)) - { - isCheck.Add(remote_ip, false); - } - if (!saoMa.Keys.Contains(remote_ip)) - { - saoMa.Add(remote_ip, 3); - } - } - - //LogHelper.Info($"鎺ユ敹鍒颁俊鎭�IP:{remote_ip},MSG:{BitConverter.ToString(buffers[remote_ip])}"); - - if (buffers.Keys.Contains(remote_ip)) - { - var messageBytes = new byte[length]; - Array.Copy(buffers[remote_ip], 0, messageBytes, 0, length); - - try - { - //璇诲崱鍣ㄦ牎楠�- var message = BitConverter.ToString(messageBytes); - - if (!saoMa.ContainsKey(remote_ip)) - { - saoMa.Add(remote_ip, 3); - } - if (messageBytes.Length <= 20 && messageBytes.Length > 0) - { - saoMa[remote_ip] = 3;//鏈壂鍒扮爜 - } - - if (messageBytes.Length >= 21 && isCheck[remote_ip]) - { - byte[] rfid = new byte[12]; - Array.Copy(messageBytes, 9, rfid, 0, 12); - - string rfids16 = BitConverter.ToString(rfid); - string rfids = Encoding.ASCII.GetString(rfid); - //LogHelper.Info($"璇诲崱鍣ㄦ牎楠屽搴斿鍣ㄥ彿:{rfids},鍏�6杩涘埗褰㈠紡:{rfids16}"); - //if (ScanCodeHelper.Analysis(remote_ip, rfids))//鏍¢獙RFID - //{ - // isCheck[remote_ip] = false; - // saoMa[remote_ip] = 1;//鎵爜鍖归厤 - //} - //else - //{ - // isCheck[remote_ip] = false; - // saoMa[remote_ip] = 2;//鎵爜涓嶅尮閰�- //} - } - else - { - LogHelper.Info($"涓嶆弧瓒宠鍗″櫒鏍¢獙瑙勫畾:IP:{remote_ip},MSG:{message}"); - } - } - catch(Exception ex) - { - LogHelper.Info($"鎵爜鏍¢獙鍙戠敓浜嗗紓甯�{ex.Message}"); - saoMa[remote_ip] = 4;//鎵爜寮傚父 - } - - try - { - - } - catch(Exception ex) - { - LogHelper.Info($"鍗峰笜闂ㄦ牎楠屽彂鐢熶簡寮傚父:{ex.Message}"); - } - //TcpServerSend(remote_ip, System.Text.Encoding.Default.GetBytes(msgSend)); - Array.Clear(buffers[remote_ip], 0, buffers[remote_ip].Length);//娓呯┖褰撳墠IP Buffer - } - else - { - if (!buffers.Keys.Contains(remote_ip)) - { - buffers.Add(remote_ip, new byte[1024]); - } - } - - //鎺ユ敹涓嬩竴涓秷鎭�鍥犱负杩欐槸涓�釜閫掑綊鐨勮皟鐢�鎵�互杩欐牱灏卞彲浠ヤ竴鐩存帴鏀舵秷鎭簡) - socket.BeginReceive(buffers[remote_ip], 0, buffers[remote_ip].Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket); - } - catch (Exception ex) - { - LogHelper.InfoEx(ex); - } - } - - private static string GetHexString(byte[] buffer, int lenght) - { - return BitConverter.ToString(buffer, 0, lenght).Replace("-", string.Empty).ToLower(); - } - - public static bool TcpServerSend(string ip, byte[] msg) - { - if (clients.Keys.Contains(ip)) - { - var client = clients[ip]; - if (client.Connected) - { - try - { - client.Send(msg); - LogHelper.Info($"宸插彂閫佺粰璇GV鍦板潃{ip},{msg}"); - return true; - } - catch (SocketException ex) - { - LogHelper.Info(ex.Message, "Error"); - clients[ip].Close(); - clients.Remove(ip); - } - } - else - { - clients[ip].Close(); - clients.Remove(ip); - } - } - else - { - LogHelper.Info("鏈壘鍒拌璁惧,鏄惁宸茶繛鎺ワ紵"); - } - return false; - - } - - } -} diff --git a/dispatch/GZRobot.cs b/dispatch/GZRobot.cs index 0e58b2a..b684953 100644 --- a/dispatch/GZRobot.cs +++ b/dispatch/GZRobot.cs @@ -5,7 +5,6 @@ using System.Collections.Generic; using System.Web.Caching; using HH.WCS.Mobox3.DSZSH.models; - using HH.WCS.Mobox3.DSZSH.util; using static HH.WCS.Mobox3.DSZSH.api.ApiModel; diff --git a/dispatch/HanAo.cs b/dispatch/HanAo.cs index 422f394..e865161 100644 --- a/dispatch/HanAo.cs +++ b/dispatch/HanAo.cs @@ -1,5 +1,4 @@ 锘縰sing HH.WCS.Mobox3.DSZSH.util; - using Newtonsoft.Json; using System; using System.Collections.Generic; diff --git a/dispatch/NDC.cs b/dispatch/NDC.cs index 1974369..d0b34e9 100644 --- a/dispatch/NDC.cs +++ b/dispatch/NDC.cs @@ -1,15 +1,12 @@ 锘縰sing HH.WCS.Mobox3.DSZSH.util; - using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Text; using System.Xml; -namespace HH.WCS.Mobox3.DSZSH.dispatch -{ - public class NDC - { +namespace HH.WCS.Mobox3.DSZSH.dispatch { + public class NDC { private static HostToAGV callClient = null; static NDC() { callClient = new HostToAGV(); @@ -70,8 +67,7 @@ sb.Append("/></Req>"); return sb.ToString(); } - public static AGVResult AddNewOrder(int ts, Dictionary<string, string> param) - { + public static AGVResult AddNewOrder(int ts, Dictionary<string, string> param) { //< Req >< Order TS = '1' Pri = '1' No = 'TN2302020001' Ext1 = '' Ext2 = '' N_CNTR_COUNT = '' >< Param Name = 'From' Value = '2' />< Param Name = 'To' Value = '1' /></ Order ></ Req > var bufin = GetReqStr(ts, param); @@ -152,12 +148,10 @@ var json = JsonConvert.SerializeXmlNode(xml); return JsonConvert.DeserializeObject<AGVResult>(json); } - public class AGVResult - { + public class AGVResult { public Res Res { get; set; } } - public class Res - { + public class Res { public int ErrCode { get; set; } public string ErrInfo { get; set; } } diff --git a/dispatch/NDCApi.cs b/dispatch/NDCApi.cs index 559e4f5..5e6a7ee 100644 --- a/dispatch/NDCApi.cs +++ b/dispatch/NDCApi.cs @@ -1,28 +1,22 @@ 锘縰sing HH.WCS.Mobox3.DSZSH; using HH.WCS.Mobox3.DSZSH.util; - using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Text; using System.Xml; -namespace HH.WCS.Mobox3.DSZSH.dispatch -{ +namespace HH.WCS.Mobox3.DSZSH.dispatch { /// <summary> /// NDC鐨凙PI鎺ュ彛,鐢ㄤ簬鏇夸唬鍘烴DC,NDCHelper鍜孒ostToAGV妯″潡 /// </summary> - public class NDCApi - { + public class NDCApi { public static string NDCApiUrl { set; get; } - static NDCApi() - { + static NDCApi() { NDCApiUrl = Settings.NdcApiUrl; } - - public static AgvApiResult AddOrderNew(int ts, int pri, string taskNo, List<param> param) - { + public static AgvApiResult AddOrderNew(int ts, int pri, string taskNo, List<param> param) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); var model = new AddOrderNewModel(); @@ -30,8 +24,7 @@ model.pri = pri; model.task_no = taskNo; model.param = param; - try - { + try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"NDC浠诲姟涓嬪彂:{taskNo}\n\n{jsonInfo}\n", "NDC"); var result = httpH.WebPost(NDCApiUrl + "Add", jsonInfo); @@ -39,8 +32,7 @@ agvApiResult = JsonConvert.DeserializeObject<AgvApiResult>(result); return agvApiResult; } - catch (Exception e) - { + catch (Exception e) { LogHelper.Info($"浠诲姟涓嬪彂澶辫触:res='{e.Message}'", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; @@ -48,13 +40,11 @@ } } - public static AgvApiResult AddOrderNew(AddOrderNewModel model) - { + public static AgvApiResult AddOrderNew(AddOrderNewModel model) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); - try - { + try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"浠诲姟{model.task_no}涓嬪彂,{jsonInfo}", "NDC"); @@ -64,8 +54,7 @@ agvApiResult = JsonConvert.DeserializeObject<AgvApiResult>(result); return agvApiResult; } - catch (Exception e) - { + catch (Exception e) { LogHelper.Info($"浠诲姟涓嬪彂澶辫触 res={e.Message}", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; @@ -73,15 +62,13 @@ } } - public static AgvApiResult CancelOrder(string tsNo, bool is_force = true) - { + public static AgvApiResult CancelOrder(string tsNo, bool is_force = true) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); var model = new CancelOrderModel(); model.task_no = tsNo; model.is_force = is_force; - try - { + try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"浠诲姟{model.task_no}鍙栨秷,{jsonInfo}", "NDC"); @@ -91,8 +78,7 @@ agvApiResult = JsonConvert.DeserializeObject<AgvApiResult>(result); return agvApiResult; } - catch (Exception e) - { + catch (Exception e) { LogHelper.Info($"CancelOrder res={e.Message}", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; @@ -100,12 +86,10 @@ } } - public static AgvApiResult CancelOrder(CancelOrderModel model) - { + public static AgvApiResult CancelOrder(CancelOrderModel model) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); - try - { + try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"浠诲姟{model.task_no}鍙栨秷,{jsonInfo}", "NDC"); @@ -115,8 +99,7 @@ agvApiResult = JsonConvert.DeserializeObject<AgvApiResult>(result); return agvApiResult; } - catch (Exception e) - { + catch (Exception e) { LogHelper.Info($"CancelOrder res={e.Message}", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; @@ -125,15 +108,13 @@ } - public static AgvApiResult ChangeOrderPri(string taskNo, int newPri) - { + public static AgvApiResult ChangeOrderPri(string taskNo, int newPri) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); var model = new ChangePriModel(); model.task_no = taskNo; model.pri = newPri; - try - { + try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"浠诲姟{model.task_no}浼樺厛绾ф洿鏀�{jsonInfo}", "NDC"); @@ -143,8 +124,7 @@ agvApiResult = JsonConvert.DeserializeObject<AgvApiResult>(result); return agvApiResult; } - catch (Exception e) - { + catch (Exception e) { LogHelper.Info($"ChangeOrderPri res={e.Message}", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; @@ -152,12 +132,10 @@ } } - public static AgvApiResult ChangeOrderPri(ChangePriModel model) - { + public static AgvApiResult ChangeOrderPri(ChangePriModel model) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); - try - { + try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"浠诲姟{model.task_no}浼樺厛绾ф洿鏀�{jsonInfo}", "NDC"); @@ -167,8 +145,7 @@ agvApiResult = JsonConvert.DeserializeObject<AgvApiResult>(result); return agvApiResult; } - catch (Exception e) - { + catch (Exception e) { LogHelper.Info($"ChangeOrderPri res={e.Message}", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; @@ -176,16 +153,14 @@ } } - public static AgvApiResult ChangeOrderParam(string taskNo, int paramNo, string paramStr) - { + public static AgvApiResult ChangeOrderParam(string taskNo, int paramNo, string paramStr) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); var model = new ChangeParamModel(); model.task_no = taskNo; model.param_no = paramNo; model.param = paramStr; - try - { + try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"浠诲姟{model.task_no}鍙傛暟鏇存敼,{jsonInfo}", "NDC"); @@ -195,8 +170,7 @@ agvApiResult = JsonConvert.DeserializeObject<AgvApiResult>(result); return agvApiResult; } - catch (Exception e) - { + catch (Exception e) { LogHelper.Info($"ChangeOrderParam res={e.Message}", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; @@ -204,12 +178,10 @@ } } - public static AgvApiResult ChangeOrderParam(ChangeParamModel model) - { + public static AgvApiResult ChangeOrderParam(ChangeParamModel model) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); - try - { + try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"浠诲姟{model.task_no}鍙傛暟鏇存敼,{jsonInfo}", "NDC"); @@ -219,8 +191,7 @@ agvApiResult = JsonConvert.DeserializeObject<AgvApiResult>(result); return agvApiResult; } - catch (Exception e) - { + catch (Exception e) { LogHelper.Info($"ChangeOrderParam res={e.Message}", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; @@ -232,15 +203,13 @@ /// <summary> /// 杩斿洖淇℃伅Model /// </summary> - public class AgvApiResult - { + public class AgvApiResult { public int err_code { set; get; }//寮傚父鐮�0 - 姝e父,鍏跺畠鍊间负寮傚父閿欒鐮� public string err_msg { set; get; }//杩斿洖鐨勯敊璇弿杩�鍦�err_code <> 0 鏃惰繑鍥� public object result { set; get; }//姝g‘杩斿洖鐨勭粨鏋滃唴瀹�鍦�err_code = 0 涓旀湁杩斿洖鍐呭鏃� } - public class AddOrderNewModel - { + public class AddOrderNewModel { public int ts_no { set; get; }//TS 鍙�蹇呴』鏈夊� public int pri { set; get; }//浼樺厛绾� public string task_no { set; get; }//涓婃父浠诲姟缂栫爜,濡傛灉 no_feedback = 1 鏃�鍙互涓虹┖ @@ -248,27 +217,23 @@ } - public class param - { + public class param { public string name { set; get; }//鍙傛暟鍚� public string value { set; get; }//鍙傛暟鍊� } - public class CancelOrderModel - { + public class CancelOrderModel { public string task_no { set; get; }//涓婃父浠诲姟缂栫爜 public bool is_force { set; get; } = true;//鏄惁寮哄埗鍙栨秷,1 鈥�寮哄埗 } - public class ChangeParamModel - { + public class ChangeParamModel { public string task_no { set; get; }//涓婃父浠诲姟缂栫爜 public int param_no { set; get; }//鍙傛暟鍙� public string param { set; get; }//鍙傛暟鍐呭,澶氫釜鍙傛暟浠ヨ嫳鏂囧垎鍙�;)鍒嗛殧 } - public class ChangePriModel - { + public class ChangePriModel { public string task_no { set; get; }//涓婃父浠诲姟缂栫爜 public int pri { set; get; }//鏂颁紭鍏堢骇 } diff --git a/dispatch/NDCHelper.cs b/dispatch/NDCHelper.cs index 71d585e..f820ffe 100644 --- a/dispatch/NDCHelper.cs +++ b/dispatch/NDCHelper.cs @@ -2,10 +2,8 @@ using System.Collections.Generic; using System.Text; -namespace HH.WCS.Mobox3.DSZSH.dispatch -{ - public class NDCHelper - { +namespace HH.WCS.Mobox3.DSZSH.dispatch { + public class NDCHelper { public static void Test() { //dic.Add("Ext1", ""); dic.Add("Ext2", ""); dic.Add("N_CNTR_COUNT", ""); //var r = callClient.AddNewOrderAsync(new AddNewOrderRequest() { bufin = "<Req><Order Pri='1' TS='1' From='1' To='2' No='123471118_1' Ext1='1' Ext2='CALLADDAGV' N_CNTR_COUNT='' /></Req>" }); diff --git a/process/DeviceProcess.cs b/process/DeviceProcess.cs deleted file mode 100644 index dfce112..0000000 --- a/process/DeviceProcess.cs +++ /dev/null @@ -1,24 +0,0 @@ -锘縰sing HH.WCS.Mobox3.DSZSH.device; - -using HH.WCS.Mobox3.DSZSH.dispatch; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; - -namespace HH.WCS.Mobox3.DSZSH.process -{ - /// <summary> - /// 璁惧淇″彿澶勭悊,涓昏鏄痶cp淇″彿,鎴戜滑鍋歴erver琚姩鎺ユ敹淇″彿鏉ュ鐞�鏍规嵁椤圭洰瀹氬埗鐨�- /// </summary> - internal class DeviceProcess - { - internal static void Analysis(string data, string ip) { - if (data.Length >= 6) { - //鍘绘帀娑堟伅澶�F 00 - data = data.Substring(4); - //Console.WriteLine($"{ip}-{data}"); - } - } - } -} diff --git a/util/Settings.cs b/util/Settings.cs index b9eb8a7..a27282b 100644 --- a/util/Settings.cs +++ b/util/Settings.cs @@ -29,10 +29,12 @@ public static void Init() { // 鍔犺浇閰嶇疆鏂囦欢 LoadJson(); + + LoadProdLines(); } private static void LoadJson() { - LogHelper.Info("鍔犺浇閰嶇疆鏂囦欢淇℃伅 寮�"); + LogHelper.Info("鍔犺浇閰嶇疆鏂囦欢淇℃伅:寮�!!"); // JSON 鏂囦欢璺緞 string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "./config/config.json"); @@ -43,49 +45,41 @@ // 鍙嶅簭鍒楀寲涓�Config 瀵硅薄 var root = JsonConvert.DeserializeObject<Config.Root>(jsonContent); + #region Config.Root 璧嬪�瀛楁閮ㄥ垎 WebApiUrl = root.WebApiUrl; NdcApiUrl = root.NdcApiUrl; ErpApiUrl = root.ErpApiUrl; ErpRoute = root.ErpRoute; - TcpServerPort= root.TcpServerPort; + TcpServerPort = root.TcpServerPort; DbConn = root.SqlServer; //TcpServerIp = root.TcpServerIp; //TcpServerPort = root.TcpServerPort; ProductionLines = root.ProductionLines; TaskInfos = root.TaskInfos; - - for (var i = 0; i < ProductionLines.Count; i++) { - if (ProductionLines[i].OnLoc == null) continue; - foreach (var onLoc in ProductionLines[i].OnLoc) { - LocProdIdMap.Add(onLoc, int.Parse(ProductionLines[i].Id)); - } - foreach (var offLoc in ProductionLines[i].OffLoc) { - LocProdIdMap.Add(offLoc, int.Parse(ProductionLines[i].Id)); - } - } + #endregion } catch (FileNotFoundException) { - LogHelper.Info("JSON 鏂囦欢鏈壘鍒�); + LogHelper.Info("JSON鏂囦欢鏈壘鍒�!", "Exception"); } catch (JsonException ex) { - LogHelper.Info($"JSON 瑙f瀽閿欒: {ex.Message}"); + LogHelper.Info($"JSON瑙f瀽閿欒!!Error:{ex.Message}\n\n{ex.StackTrace}\n", "Exception"); } catch (Exception ex) { - LogHelper.Info($"鍙戠敓閿欒: {ex.Message}"); + LogHelper.InfoEx(ex, "Settings:"); } - LogHelper.Info("鍔犺浇閰嶇疆鏂囦欢淇℃伅 瀹屾垚"); + LogHelper.Info("鍔犺浇閰嶇疆鏂囦欢淇℃伅:瀹屾垚!!"); } private static void LoadProdLines() { - //var db = new SqlHelper<object>().GetInstance(); - //for (int i = 0; i < ProductionLines.Count; i++) { - // var line = ProductionLines[i]; - // // 閫氳繃OnLoc OffLoc鎵惧埌AGVsite鐒跺悗鍐欏叆瀛楀吀 - //} - } - - public static Config.TaskInfo GetTaskInfo(ETask eTask) { - return TaskInfos[(int)eTask]; + for (var i = 0; i < ProductionLines.Count; i++) { + if (ProductionLines[i].OnLoc == null) continue; + foreach (var onLoc in ProductionLines[i].OnLoc) { + LocProdIdMap.Add(onLoc, int.Parse(ProductionLines[i].Id)); + } + foreach (var offLoc in ProductionLines[i].OffLoc) { + LocProdIdMap.Add(offLoc, int.Parse(ProductionLines[i].Id)); + } + } } } diff --git a/wms/DbTran.cs b/wms/DbTran.cs index e5b0be1..0ca7eb8 100644 --- a/wms/DbTran.cs +++ b/wms/DbTran.cs @@ -94,6 +94,59 @@ return (true, $"鐢熸垚浠诲姟'{obj.TaskToInsert.S_TYPE}'鎴愬姛!!浠诲姟鍙�'{obj.TaskToInsert.S_CODE}',瀹瑰櫒鍙�'{obj.TaskToInsert.S_CNTR_CODE}',璧风偣='{obj.TaskToInsert.S_START_LOC}',缁堢偣='{obj.TaskToInsert.S_END_LOC}'"); } } + + /// <summary> + /// 鏁版嵁搴撲簨鍔�: 娑夊強鍗曟嵁鏄庣粏鏇存柊鐨勪换鍔″垱寤�+ /// </summary> + /// <param name="obj"></param> + /// <remarks><b>[ 瑕佹眰 ]</b> obj 鈮�null ; obj.TaskToInsert 鈮�null</remarks> + /// <returns></returns> + /// <exception cref="ArgumentException"></exception> + public static (bool, string) CreateTaskOrderObj(CreateTaskOrderObj obj) { + var db = new SqlHelper<object>().GetInstance(); + + using (var tran = db.Ado.UseTran()) { + + if (obj.OutboundDetailToUpdate != null && db.Updateable(obj.OutboundDetailToUpdate).UpdateColumns(it => new { it.N_B_STATE, it.T_MODIFY }).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return (false, $"鏇存柊[鏄庣粏琛╙[鐘舵�]涓篬瀹屾垚]澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.OutboundDetailToUpdate)}\n"); + } + + if (obj.SpotCheckDetailToUpdate != null && db.Updateable(obj.SpotCheckDetailToUpdate).UpdateColumns(it => new { it.N_B_STATE, it.T_MODIFY }).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return (false, $"鏇存柊[鏄庣粏琛╙[鐘舵�]涓篬瀹屾垚]澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.SpotCheckDetailToUpdate)}\n"); + } + + if (obj.RelocationDetailToUpdate != null && db.Updateable(obj.RelocationDetailToUpdate).UpdateColumns(it => new { it.N_B_STATE, it.T_MODIFY }).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return (false, $"鏇存柊[鏄庣粏琛╙[鐘舵�]涓篬瀹屾垚]澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.RelocationDetailToUpdate)}\n"); + } + + #region 鍒涘缓浠诲姟 + 璐т綅閿�+ if (obj.StartLocToUpdate != null && db.Updateable(obj.StartLocToUpdate).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return (false, $"鏇存柊[璧风偣璐т綅][閿佺姸鎬乚澶辫触!!璧风偣='{obj.StartLocToUpdate.S_CODE}',閿佺姸鎬�>'{obj.StartLocToUpdate.S_LOCK_STATE}'"); + } + if (obj.EndLocToUpdate != null && db.Updateable(obj.EndLocToUpdate).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return (false, $"鏇存柊[缁堢偣璐т綅][閿佺姸鎬乚澶辫触!!缁堢偣='{obj.EndLocToUpdate.S_CODE}',閿佺姸鎬�>'{obj.EndLocToUpdate.S_LOCK_STATE}'"); + } + if (obj.TaskToInsert == null) { + tran.RollbackTran(); + throw new ArgumentException("鏁版嵁搴撲簨鍔″鐞�寰呮彃鍏ョ殑[浠诲姟]涓虹┖!!"); // 寰呮彃鍏ョ殑浠诲姟涓嶅瓨鍦�鐩存帴鎶涘嚭寮傚父 + } + if (db.Insertable(obj.TaskToInsert).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return (false, $"鐢熸垚浠诲姟'{obj.TaskToInsert.S_TYPE}'澶辫触!!浠诲姟鍙�'{obj.TaskToInsert.S_CODE}',瀹瑰櫒鍙�'{obj.TaskToInsert.S_CNTR_CODE}',璧风偣='{obj.TaskToInsert.S_START_LOC}',缁堢偣='{obj.TaskToInsert.S_END_LOC}'"); + } + #endregion + + // 鎻愪氦鏁版嵁搴撴洿鏀�+ tran.CommitTran(); + return (true, $"鐢熸垚浠诲姟'{obj.TaskToInsert.S_TYPE}'鎴愬姛!!浠诲姟鍙�'{obj.TaskToInsert.S_CODE}',瀹瑰櫒鍙�'{obj.TaskToInsert.S_CNTR_CODE}',璧风偣='{obj.TaskToInsert.S_START_LOC}',缁堢偣='{obj.TaskToInsert.S_END_LOC}'"); + } + } + } public class CreateTaskObj { @@ -119,8 +172,17 @@ public TN_CG_Detail CgDetailToUpdate { get; set; } = null; } - public class DbTranObj { - public List<TN_Location> LocListToUpdate { get; set; } + public class CreateTaskOrderObj { + + #region 璧风偣璐т綅 / 缁堢偣璐т綅 / 浠诲姟 + public TN_Location StartLocToUpdate { get; set; } = null; + public TN_Location EndLocToUpdate { get; set; } = null; + public TN_Task TaskToInsert { get; set; } = null; + #endregion + + public TN_Outbound_Detail OutboundDetailToUpdate { get; set; } = null; + public TN_SpotCheck_Detail SpotCheckDetailToUpdate { get; set; } = null; + public TN_RelocationList_Detail RelocationDetailToUpdate { get; set; } = null; } } diff --git a/wms/LogMsg.cs b/wms/LogMsg.cs index a0dd762..375220f 100644 --- a/wms/LogMsg.cs +++ b/wms/LogMsg.cs @@ -4,12 +4,10 @@ using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; - using HH.WCS.Mobox3.DSZSH.models; - using Newtonsoft.Json; -namespace HH.WCS.Mobox3.DSZSH.util { +namespace HH.WCS.Mobox3.DSZSH.wms { /// <summary> /// [ 鏃ュ織淇℃伅 ] 鏋勯�绫� /// </summary> diff --git a/wms/WCSHelper.cs b/wms/WCSHelper.cs index 9962930..c18f8d9 100644 --- a/wms/WCSHelper.cs +++ b/wms/WCSHelper.cs @@ -51,47 +51,8 @@ return loc == null ? "0" : loc.S_AGV_SITE; } #endregion - - #region 浠诲姟鍒涘缓 / 涓嬪彂 / 鏌ヨ - internal static string GenerateTaskNo() { - //var id = SYSHelper.GetSerialNumber("浠诲姟鍙�, "TN"); - //var date = DateTime.Now.ToString("yyMMdd"); - //return $"TN{date}{id.ToString().PadLeft(4, '0')}"; - return SYSHelper.GenerateSN("浠诲姟鍙�, "TN", "yyMMdd"); - } - - internal static bool UpdateTaskState(TN_Task task, string state) { - var res = false; - var db = new SqlHelper<TN_Task>().GetInstance(); - task.S_B_STATE = state; - res = db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE }).ExecuteCommand() > 0; - return res; - } - - internal static bool UpdateTaskState(TN_Task task) { - var res = false; - var db = new SqlHelper<TN_Task>().GetInstance(); - task.S_B_STATE = TN_Task.GetStateStr(task.N_B_STATE); - task.T_MODIFY = DateTime.Now; - res = db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_MODIFY }).ExecuteCommand() > 0; - return res; - } - - internal static bool UpdateEqTaskNo(TN_Task task) { - var res = false; - var db = new SqlHelper<TN_Task>().GetInstance(); - task.T_MODIFY = DateTime.Now; - res = db.Updateable(task).UpdateColumns(it => new { it.S_EQ_TASK_CODE, it.T_MODIFY }).ExecuteCommand() > 0; - return res; - } - - internal static TN_Task GetTask(string taskNo) { - var db = new SqlHelper<TN_Task>().GetInstance(); - var task = db.Queryable<TN_Task>().Where(a => a.S_CODE == taskNo).First(); - return task; - } - #endregion - + + private const bool __瀹瑰櫒鏌ヨ缁戝畾妯″潡__ = false; // 浠呯敤浜庡垎娈�娌℃湁瀹炶川鎰忎箟 #region 瀹瑰櫒鐩稿叧淇℃伅 鏌ヨ / 缁戝畾 /// <summary> /// 鏍规嵁 [ 瀹瑰櫒鍙�] , 鏌ヨ褰撳墠瀹瑰櫒鍏宠仈鐨�[ 璐т綅 ] [ 璐т綅瀹瑰櫒 ] [ 瀹瑰櫒璐у搧 ] 淇℃伅 ( 鍙煡璇�1 鏉�) @@ -171,9 +132,10 @@ loc.T_MODIFY = DateTime.Now; return locCntrRel; - } + } #endregion + private const bool __鍒涘缓浠诲姟妯″潡__ = false; // 浠呯敤浜庡垎娈�娌℃湁瀹炶川鎰忎箟 #region 璧风偣 / 缁堢偣璐т綅閿�+ 鍒涘缓浠诲姟 /// <summary> /// 璧风偣鍑哄簱閿�@@ -211,6 +173,17 @@ loc.T_MODIFY = System.DateTime.Now; LogHelper.Info($"缁堢偣鍏ュ簱閿�缁堢偣璐т綅='{loc.S_CODE}',鏉ユ簮='{lockSource}'"); + } + + /// <summary> + /// 鐢熸垚浠诲姟鍙�閫氬父鍙BuildTask浣跨敤,鏁呰涓虹鏈� + /// </summary> + /// <returns></returns> + private static string GenerateTaskNo() { + //var id = SYSHelper.GetSerialNumber("浠诲姟鍙�, "TN"); + //var date = DateTime.Now.ToString("yyMMdd"); + //return $"TN{date}{id.ToString().PadLeft(4, '0')}"; + return SYSHelper.GenerateSN("浠诲姟鍙�, "TN", "yyMMdd"); } /// <summary> @@ -254,7 +227,7 @@ /// <param name="pri">浼樺厛绾�/param> /// <param name="agv">AGV 绫诲瀷</param> /// <returns></returns> - public static TN_Task BuildTaskWithLocLock(TN_Location startLoc, TN_Location endLoc, string cntId, string type, + public static TN_Task BuildTaskAndLockLoc(TN_Location startLoc, TN_Location endLoc, string cntId, string type, int pri = 3, int agv = 1) { var task = BuildTask(startLoc, endLoc, cntId, type, pri); @@ -263,14 +236,44 @@ return task; } - - #endregion + private const bool __浠诲姟鍒嗗彂澶勭悊妯″潡__ = false; // 浠呯敤浜庡垎娈�娌℃湁瀹炶川鎰忎箟 #region 浠诲姟鍒嗗彂 / 鎵ц / 璁板綍 internal static bool CheckActionRecordExist(string no, int code) { var db = new SqlHelper<TN_Task_Action>().GetInstance(); return db.Queryable<TN_Task_Action>().Count(a => a.S_TASK_CODE == no && a.N_ACTION_CODE == code) > 0; + } + + internal static bool UpdateTaskState(TN_Task task, string state) { + var res = false; + var db = new SqlHelper<TN_Task>().GetInstance(); + task.S_B_STATE = state; + res = db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE }).ExecuteCommand() > 0; + return res; + } + + internal static bool UpdateTaskState(TN_Task task) { + var res = false; + var db = new SqlHelper<TN_Task>().GetInstance(); + task.S_B_STATE = TN_Task.GetStateStr(task.N_B_STATE); + task.T_MODIFY = DateTime.Now; + res = db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_MODIFY }).ExecuteCommand() > 0; + return res; + } + + internal static bool UpdateEqTaskNo(TN_Task task) { + var res = false; + var db = new SqlHelper<TN_Task>().GetInstance(); + task.T_MODIFY = DateTime.Now; + res = db.Updateable(task).UpdateColumns(it => new { it.S_EQ_TASK_CODE, it.T_MODIFY }).ExecuteCommand() > 0; + return res; + } + + internal static TN_Task GetTask(string taskNo) { + var db = new SqlHelper<TN_Task>().GetInstance(); + var task = db.Queryable<TN_Task>().Where(a => a.S_CODE == taskNo).First(); + return task; } internal static void SetTaskBegin(TN_Task task, string forklift_no) { @@ -297,7 +300,7 @@ internal static void SetTaskFail(TN_Task task) { var db = new SqlHelper<TN_Task>().GetInstance(); if (task != null) { - //鍒ゆ柇鏈夋病鏈夊彇璐у畬鎴�娌℃湁灏卞彉鎴愬け璐ャ�鏈夊彇璐у畬鎴愰粯璁ゅ畬鎴愪簡 (璺熸嵁椤圭洰鑰屽畾,鏈変簺椤圭洰浜哄伐鎷夎蛋浜嗕篃娌℃湁鏀惧埌缁堢偣) 銆�+ //鍒ゆ柇鏈夋病鏈夊彇璐у畬鎴�娌℃湁灏卞彉鎴愬け璐�鏈夊彇璐у畬鎴愰粯璁ゅ畬鎴愪簡 (璺熸嵁椤圭洰鑰屽畾,鏈変簺椤圭洰浜哄伐鎷夎蛋浜嗕篃娌℃湁鏀惧埌缁堢偣) task.N_B_STATE = 4; task.S_B_STATE = TN_Task.GetStateStr(task.N_B_STATE); db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand(); diff --git a/wms/WMSHelper.cs b/wms/WMSHelper.cs index c704164..e5eaf47 100644 --- a/wms/WMSHelper.cs +++ b/wms/WMSHelper.cs @@ -16,7 +16,7 @@ /// </summary> public class WMSHelper { /// <summary> - /// 妫�煡瀹瑰櫒绫诲瀷 + /// 妫�煡瀹瑰櫒绫诲瀷 ( 瀹瑰櫒琛�涓嶅瓨鍦�/ 绫诲瀷涓嶅尮閰�鏃�, 杩斿洖 false ) /// </summary> /// <param name="cntrCode"></param> /// <param name="cntrType"></param> @@ -35,21 +35,6 @@ return (true, "妫�煡瀹瑰櫒绫诲瀷鎴愬姛!!"); } /// <summary> - /// - /// </summary> - /// <param name="locCode"></param> - /// <param name="areas"></param> - /// <param name="startLoc"></param> - /// <returns></returns> - public static (bool, string) FindStartLocUnbind(string locCode, List<string> areas, out TN_Location startLoc) { - var db = new SqlHelper<object>().GetInstance(); - startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(locCode, areas)).First(); - if (startLoc == null) { - return (false, LogMsg.StartLocUnbindNotFound(locCode, areas)); - } - return (true, ""); - } - /// <summary> /// 鏍规嵁瀹瑰櫒鍙�, 鏌ユ壘鏃х殑璐т綅 / 璐т綅缁戝畾 / 鐗╂枡淇℃伅 ( 灏嗗緟鍒犻櫎 / 鏇存柊鏁版嵁鍐欏叆 obj ) /// </summary> /// <remarks><code><![CDATA[obj.Old = oldLocCntrCg;]]></code></remarks> @@ -57,13 +42,14 @@ /// <param name="cntrCode"></param> /// <param name="skipCgDetail"></param> /// <returns></returns> - public static LocCntrCg FindCntrOldInfo(CreateTaskObj obj, string cntrCode, bool skipCgDetail = true) { + public static LocCntrCg FindOldCntrInfo(CreateTaskObj obj, string cntrCode, bool skipCgDetail = true) { var oldLocCntrCg = WCSHelper.GetLocCntrCg(cntrCode, skipCgDetail); obj.Old = oldLocCntrCg; return oldLocCntrCg; } /// <summary> - /// 缁戝畾璐т綅瀹瑰櫒 ( 淇敼 [ 璐т綅瀹瑰櫒琛�] [ 璐т綅绫诲瀷 ] = cntrType ; 灏�[ 寰呮彃鍏�] 璐т綅瀹瑰櫒鍏崇郴 鍔犲叆鍒�obj 涓�) + /// 缁戝畾璐т綅瀹瑰櫒 ( 淇敼 [ 璐т綅瀹瑰櫒琛�] [ 璐т綅绫诲瀷 ] = cntrType ; 灏�[ 寰呮彃鍏�] 璐т綅瀹瑰櫒鍏崇郴 鍔犲叆鍒�obj 涓�)<br/> + /// 璋冪敤 <see cref="WCSHelper.BindLocCntr"/> 璁剧疆 loc.N_CURRENT_NUM = 1 /// </summary> /// <remarks><code><![CDATA[obj.New = new LocCntrCg { LocCntrRel = locCntrRel };]]></code></remarks> /// <param name="obj"></param> @@ -107,5 +93,66 @@ return task; } + + private const bool __鏌ヨ璇彞灏佽__ = false; // 浠呯敤浜庡垎娈�娌℃湁瀹炶川鎰忎箟(VS2022 v17.4.3 鏂囨。澶х翰) + #region 鏌ヨ璇彞(鎼佺疆,璁句负绉佹湁,鏌ヨ闇�眰鍙樻洿澶�灏佽涓嶅鐏垫椿) + /// <summary> + /// 鏌ヨ [ 缁戝畾鍓�] 鐨勮捣鐐硅揣浣�+ /// </summary> + /// <example><code><![CDATA[ + /// (ok, msg) = WMSHelper.FindStartLocUnbind(model.StartLoc, taskInfo.StartAreas, out var startLoc); + /// if (!ok) return NewSimpleResult(2, preLog + msg); + /// ]]></code></example> + /// <param name="locCode"></param> + /// <param name="areas"></param> + /// <param name="startLoc"></param> + /// <returns></returns> + private static (bool, string) FindStartLocUnbind(string locCode, List<string> areas, out TN_Location startLoc) { + var db = new SqlHelper<object>().GetInstance(); + startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(locCode, areas)).First(); + if (startLoc == null) { + return (false, LogMsg.StartLocUnbindNotFound(locCode, areas)); + } + return (true, ""); + } + /// <summary> + /// 鏌ヨ [ 缁戝畾鍚�] 鐨勮捣鐐硅揣浣�+ /// </summary> + /// <example><code><![CDATA[ + /// (ok, msg) = WMSHelper.FindStartLoc(model.StartLoc, taskInfo.StartAreas, out var startLoc); + /// if (!ok) return NewSimpleResult(2, preLog + msg); + /// ]]></code></example> + /// <param name="locCode"></param> + /// <param name="areas"></param> + /// <param name="startLoc"></param> + /// <returns></returns> + private static (bool, string) FindStartLoc(string locCode, List<string> areas, out TN_Location startLoc) { + var db = new SqlHelper<object>().GetInstance(); + startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLoc(locCode, areas)).First(); + if (startLoc == null) { + return (false, LogMsg.StartLocNotFound(locCode, areas)); + } + return (true, ""); + } + /// <summary> + /// 鏌ヨ缁堢偣璐т綅 + /// </summary> + /// <example><code><![CDATA[ + /// (ok, msg) = WMSHelper.FindEndLoc(areas: taskInfo.EndAreas, out var endLoc); + /// if (!ok) return NewSimpleResult(3, preLog + msg); + /// ]]></code></example> + /// <param name="locCode"></param> + /// <param name="areas"></param> + /// <param name="endLoc"></param> + /// <returns></returns> + private static (bool, string) FindEndLoc(string locCode, List<string> areas, out TN_Location endLoc) { + var db = new SqlHelper<object>().GetInstance(); + endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(locCode, areas)).First(); + if (endLoc == null) { + return (false, LogMsg.EndLocNotFound(locCode, areas)); + } + return (true, ""); + } + #endregion } } -- Gitblit v1.9.1