From 0ed390381862dea0c7fd0210d16017eb09f12da4 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期三, 30 七月 2025 17:27:27 +0800 Subject: [PATCH] 封装插入容器表等业务代码, 修复部分底层旧框架方法问题 --- wms/SYSHelper.cs | 29 ++++- wms/WMSHelper.cs | 77 ++++++++++++++ core/WCSCore.cs | 6 models/TN_Task.cs | 1 wms/WCSHelper.cs | 25 ++-- util/SqlHelper.cs | 41 +++---- wms/DbExpr.cs | 34 +++--- api/ForceController.cs | 9 - .editorconfig | 12 ++ api/AgvController.cs | 3 util/Settings.cs | 8 api/ApiHelper.cs | 17 +-- wms/LogMsg.cs | 32 +++--- wms/DbTran.cs | 4 14 files changed, 189 insertions(+), 109 deletions(-) diff --git a/.editorconfig b/.editorconfig index fc9bad4..46b58d0 100644 --- a/.editorconfig +++ b/.editorconfig @@ -70,7 +70,7 @@ csharp_indent_labels = one_less_than_current dotnet_sort_system_directives_first = true -dotnet_separate_import_directive_groups = true +dotnet_separate_import_directive_groups = csharp_prefer_simple_using_statement = true:suggestion csharp_prefer_braces = true:silent csharp_style_namespace_declarations = block_scoped:silent @@ -94,6 +94,12 @@ csharp_style_prefer_index_operator = true:suggestion csharp_style_prefer_range_operator = true:suggestion csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion +csharp_style_prefer_tuple_swap = true:suggestion +csharp_style_prefer_utf8_string_literals = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion +csharp_style_deconstructed_variable_declaration = true:suggestion +csharp_style_unused_value_assignment_preference = discard_variable:suggestion +csharp_style_unused_value_expression_statement_preference = discard_variable:silent [*.vb] #### 鍛藉悕鏍峰紡 #### @@ -175,4 +181,6 @@ dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion dotnet_style_prefer_compound_assignment = true:suggestion dotnet_style_prefer_simplified_interpolation = true:suggestion -dotnet_style_namespace_match_folder = true:suggestion \ No newline at end of file +dotnet_style_namespace_match_folder = true:suggestion +dotnet_style_predefined_type_for_locals_parameters_members = true:silent +dotnet_style_predefined_type_for_member_access = true:silent \ No newline at end of file diff --git a/api/AgvController.cs b/api/AgvController.cs index e6b2891..d178940 100644 --- a/api/AgvController.cs +++ b/api/AgvController.cs @@ -6,12 +6,9 @@ using System.Security.Cryptography; using System.Text; using System.Web.Http; - using HH.WCS.Mobox3.DSZSH.core; using HH.WCS.Mobox3.DSZSH.util; - using Newtonsoft.Json; - using static HH.WCS.Mobox3.DSZSH.api.ApiModel; using static HH.WCS.Mobox3.DSZSH.dispatch.NDC; diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs index 08ce187..909bdee 100644 --- a/api/ApiHelper.cs +++ b/api/ApiHelper.cs @@ -27,6 +27,7 @@ public static SimpleResult GoodpackOffline(GoodpackOfflineInfo model) { var db = new SqlHelper<object>().GetInstance(); var (ok, msg) = (false, string.Empty); + var obj = new CreateTaskObj(); var taskInfo = ETask.M婊$涓嬬嚎鍏ュ簱.Info(); const string preLog = "API:婊$涓嬬嚎鍏ュ簱:"; @@ -53,10 +54,9 @@ } // 鍜屾弧鎵樹笅绾垮叆搴撶殑閫昏緫涓�嚧,鐢变簬瀹瑰櫒绉诲姩涓嶄細鏇存敼缁戝畾淇℃伅,鎵�互蹇呴』鍒犻櫎鏃ф暟鎹�- var old = WCSHelper.GetLocCntrCg(cgDetail.S_CNTR_CODE, skipCgDetail: true); + WMSHelper.FindCntrOldInfo(obj, cgDetail.S_CNTR_CODE, skipCgDetail: true); - var locCntrRel = WCSHelper.BindLocCntr(startLoc, cgDetail.S_CNTR_CODE); - locCntrRel.S_CNTR_TYPE = cntrType; + var locCntrRel = WMSHelper.BindLocCntr(obj, startLoc, cgDetail.S_CNTR_CODE, cntrType); var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: taskInfo.EndAreas)) .OrderBy(l => new { l.N_LAYER }).First(); @@ -64,15 +64,8 @@ return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.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, taskInfo.TaskName); + (ok, msg) = DbTran.CreateTask(obj); return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { diff --git a/api/ForceController.cs b/api/ForceController.cs index 8c250b5..c19181d 100644 --- a/api/ForceController.cs +++ b/api/ForceController.cs @@ -41,15 +41,14 @@ const string preLog = "DEBUG:寮哄埗鍒涘缓浠诲姟:"; try { - var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, taskInfo.StartAreas)).First(); + var startLoc = db.Queryable<TN_Location>().Where(DbExpr.LocFilter(0, model.StartLoc, null, -1)).First(); if (startLoc == null) { - return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas)); + return NewSimpleResult(2, preLog + LogMsg.StartLocNotFound(model.StartLoc, null, -1)); } - var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: taskInfo.EndAreas)) - .OrderBy(l => new { l.N_LAYER }).First(); + var endLoc = db.Queryable<TN_Location>().Where(DbExpr.LocFilter(0, model.EndLoc, null, -1)).First(); if (endLoc == null) { - return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas)); + return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(model.EndLoc, null, -1)); } var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, model.CntId, taskInfo.TaskName); diff --git a/core/WCSCore.cs b/core/WCSCore.cs index f197ee2..26a01cd 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -58,7 +58,7 @@ // AGV 浠诲姟 134562(7) 鐘舵�澶勭悊 switch (model.state) { case 1: // 鎵ц - WCSHelper.Begin(TN_Task, model.forklift_no); // 宸叉帹閫佺殑浠诲姟鐨勭姸鎬佹敼鎴愭墽琛�+ WCSHelper.SetTaskBegin(TN_Task, model.forklift_no); // 宸叉帹閫佺殑浠诲姟鐨勭姸鎬佹敼鎴愭墽琛� break; case 3: // 寮�鍙栬揣 WCSHelper.UpdateTaskState(TN_Task, "寮�鍙栬揣"); // 浠诲姟鐘舵�鏀规垚寮�鍙栬揣 @@ -85,7 +85,7 @@ TaskProcess.OperateStatus(TN_Task, 6); // 缁堢偣瀹瑰櫒璐т綅缁戝畾,瑙i攣缁堢偣 break; case 2: // 瀹屾垚 - WCSHelper.End(TN_Task); // 浠诲姟鐘舵�鏀规垚缁撴潫 + WCSHelper.SetTaskEnd(TN_Task); // 浠诲姟鐘舵�鏀规垚缁撴潫 //if (TN_Task.S_TYPE == TaskName.鎶芥_鍑哄簱) { // var checkCompleteTask = Task.Run(() => { @@ -100,7 +100,7 @@ break; case 7: // 寮傚父 TaskProcess.OperateStatus(TN_Task, 7); // 寮傚父澶勭悊 - WCSHelper.Fail(TN_Task); // 浠诲姟鐘舵�鏀规垚閿欒 + WCSHelper.SetTaskFail(TN_Task); // 浠诲姟鐘舵�鏀规垚閿欒 break; } diff --git a/models/TN_Task.cs b/models/TN_Task.cs index 306655e..597b7d9 100644 --- a/models/TN_Task.cs +++ b/models/TN_Task.cs @@ -38,7 +38,6 @@ /// 浠诲姟浼樺厛绾� /// </summary> public int N_PRIORITY { get; set; } - public string S_EQ_TASK_CODE { get; set; } diff --git a/util/Settings.cs b/util/Settings.cs index 74721a1..b9eb8a7 100644 --- a/util/Settings.cs +++ b/util/Settings.cs @@ -8,8 +8,7 @@ using Newtonsoft.Json.Linq; namespace HH.WCS.Mobox3.DSZSH.util { - public class Settings - { + public class Settings { public static string WebApiUrl { get; set; } public static string NdcApiUrl { get; set; } public static string ErpApiUrl { get; set; } // ERP 鍙嶉鎺ュ彛URL @@ -17,7 +16,8 @@ public static int TcpServerPort { get; set; } public static Config.ErpRoute ErpRoute { get; set; } - public static string SqlServer { get; set; } + public static SqlSugar.DbType DbType { get; set; } = SqlSugar.DbType.SqlServer; + public static string DbConn { get; set; } //public static string TcpServerIp { get; set; } //public static int TcpServerPort { get; set; } public static List<Config.ProductionLine> ProductionLines { get; set; } = new List<Config.ProductionLine>(); @@ -48,7 +48,7 @@ ErpApiUrl = root.ErpApiUrl; ErpRoute = root.ErpRoute; TcpServerPort= root.TcpServerPort; - SqlServer = root.SqlServer; + DbConn = root.SqlServer; //TcpServerIp = root.TcpServerIp; //TcpServerPort = root.TcpServerPort; ProductionLines = root.ProductionLines; diff --git a/util/SqlHelper.cs b/util/SqlHelper.cs index e59332d..ebe702b 100644 --- a/util/SqlHelper.cs +++ b/util/SqlHelper.cs @@ -1,28 +1,22 @@ 锘縰sing System; +using System.Collections.Generic; using System.Linq; - +using System.Linq.Expressions; using SqlSugar; namespace HH.WCS.Mobox3.DSZSH.util { - //https://www.donet5.com/Home/Doc + //DOC:https://www.donet5.com/Home/Doc + //NOTE:濡傛灉鐢∣racle鏁版嵁搴�闇�鍖匫racle.ManagedDataAccess/21.15.0,鐜netframework/4.6.2(澶柊浜�.8,鏈夌殑鏈嶅姟鍣ㄥ畨瑁呬笉涓婂幓) + //NOTE:SqlHelper甯鐨勫師鍥�鏄棫妗嗘灦缂栧啓浜哷Update(T model, string[] cols)`绛変唬鐮�鍙傝�HH-0014_NongFu_QingXi 鍐滃か闈掓邯) public class SqlHelper<T> where T : class, new() { - // NOTE:濡傛灉鐢∣racle鏁版嵁搴�闇�鍖匫racle.ManagedDataAccess/21.15.0,鐜netframework 4.6.2 (澶柊浜�.8鏈夌殑鏈嶅姟鍣ㄥ畨瑁呬笉涓婂幓) - - public SqlSugarClient GetInstance(string url = "") { + public SqlSugarClient GetInstance() { //鍒涘缓鏁版嵁搴撳璞� SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { - ConnectionString = string.IsNullOrEmpty(url) ? Settings.SqlServer : url, - - //ConnectionString = @"Data Source=192.168.1.198\sql2008;Initial Catalog=OIMobox;User ID=sa;Password=sa@2015", - DbType = DbType.SqlServer, - - //ConnectionString = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=OIMobox)));User Id=system;Password=Am123123;", - //DbType = DbType.Oracle, - + ConnectionString = Settings.DbConn, + DbType = Settings.DbType, IsAutoCloseConnection = true, InitKeyType = InitKeyType.Attribute//浠庣壒鎬ц鍙栦富閿嚜澧炰俊鎭� }); - //鐩戞帶鎵�湁瓒呰繃1绉掔殑Sql db.Aop.OnLogExecuted = (sql, p) => { //鎵ц鏃堕棿瓒呰繃1绉�@@ -37,13 +31,11 @@ } //鐩稿綋浜嶦F鐨�PrintToMiniProfiler }; - - // 閰嶇疆AOP鏃ュ織 + //閰嶇疆AOP鏃ュ織 //db.Aop.OnLogExecuting = (sql, pars) => //{ - // Console.WriteLine(sql); // 杈撳嚭绾疭QL璇彞 + // Console.WriteLine(sql);//杈撳嚭绾疭QL璇彞 //}; - //姣忔璁剧疆鏁板�鏃堕兘鍘婚櫎鍓嶅鍚庡绌烘牸 db.Aop.DataExecuted = (value, entity) => { entity.EntityColumnInfos.ToList().ForEach(a => { @@ -53,13 +45,14 @@ } }); }; - - //鎹浆鎹�(ExecuteCommand鎵嶄細鎷︽埅,鏌ヨ涓嶈) - //db.Aop.DataExecuting = (value, entity) => { - // //var val=entity.EntityColumnInfo - // Console.WriteLine(entity.EntityName); + //璁剧疆AOP涓殑浜嬩欢澶勭悊绋嬪簭 + //db.Aop.OnExecutingChangeSql = (sql, p) => { + // // 绀轰緥锛氳嚜鍔ㄨ繃婊よ蒋鍒犻櫎鏁版嵁 + // if (sql.StartsWith("SELECT")) { + // sql += " WHERE IsDeleted = 0"; + // } + // return new KeyValuePair<string, SugarParameter[]>(sql, p); //}; - return db; } } diff --git a/wms/DbExpr.cs b/wms/DbExpr.cs index 2d1a631..36eabaa 100644 --- a/wms/DbExpr.cs +++ b/wms/DbExpr.cs @@ -24,12 +24,14 @@ /// && areas.Contains(l.S_AREA_CODE) /// && l.N_CURRENT_NUM == curNum /// ]]></code></remarks> - /// <param name="lock"></param> - /// <param name="name"></param> - /// <param name="areas"></param> - /// <param name="curNum"></param> + /// <param name="lock">閿佺姸鎬�( 灏忎簬 0 鏃跺拷鐣�)</param> + /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> + /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> + /// <param name="curNum">褰撳墠鏁伴噺 ( 灏忎簬 0 鏃跺拷鐣�)</param> /// <returns></returns> - public static Expression<Func<TN_Location, bool>> LocFilter(int @lock, string name, List<string> areas, int curNum) { + public static Expression<Func<TN_Location, bool>> LocFilter(int @lock = 0, string name = "", + List<string> areas = null, int curNum = -1) { + Expression<Func<TN_Location, bool>> expr = l => l.C_ENABLE == "Y"; // 宸插惎鐢� if (@lock >= 0) { @@ -63,8 +65,8 @@ /// && areas.Contains(l.S_AREA_CODE) /// && l.N_CURRENT_NUM == 0 /// ]]></code></remarks> - /// <param name="name"></param> - /// <param name="areas"></param> + /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> + /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> /// <returns></returns> public static Expression<Func<TN_Location, bool>> StartLocUnbind(string name = "", List<string> areas = null) { return LocFilter(0, name, areas, 0); @@ -80,11 +82,12 @@ /// && areas.Contains(l.S_AREA_CODE) /// && l.N_CURRENT_NUM == 1 /// ]]></code></remarks> - /// <param name="name"></param> - /// <param name="areas"></param> + /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> + /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> + /// <param name="curNum">褰撳墠鏁伴噺 ( 灏忎簬 0 鏃跺拷鐣�)</param> /// <returns></returns> - public static Expression<Func<TN_Location, bool>> StartLoc(string name = "", List<string> areas = null) { - return LocFilter(0, name, areas, 1); + public static Expression<Func<TN_Location, bool>> StartLoc(string name = "", List<string> areas = null, int curNum = 1) { + return LocFilter(0, name, areas, curNum); } /// <summary> @@ -97,11 +100,12 @@ /// && areas.Contains(l.S_AREA_CODE) /// && l.N_CURRENT_NUM == 0 /// ]]></code></remarks> - /// <param name="name"></param> - /// <param name="areas"></param> + /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> + /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> + /// <param name="curNum">褰撳墠鏁伴噺 ( 灏忎簬 0 鏃跺拷鐣�)</param> /// <returns></returns> - public static Expression<Func<TN_Location, bool>> EndLoc(string name = "", List<string> areas = null) { - return LocFilter(0, name, areas, 0); + public static Expression<Func<TN_Location, bool>> EndLoc(string name = "", List<string> areas = null, int curNum = 0) { + return LocFilter(0, name, areas, curNum); } } } diff --git a/wms/DbTran.cs b/wms/DbTran.cs index ba00c68..e5b0be1 100644 --- a/wms/DbTran.cs +++ b/wms/DbTran.cs @@ -119,4 +119,8 @@ public TN_CG_Detail CgDetailToUpdate { get; set; } = null; } + public class DbTranObj { + public List<TN_Location> LocListToUpdate { get; set; } + } + } diff --git a/wms/LogMsg.cs b/wms/LogMsg.cs index 11848f4..a0dd762 100644 --- a/wms/LogMsg.cs +++ b/wms/LogMsg.cs @@ -24,7 +24,7 @@ /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> /// <param name="curNum">褰撳墠鏁伴噺 ( 灏忎簬 0 鏃跺拷鐣�)</param> /// <returns></returns> - public static string LocNotFound(string desc, int @lock, string name, List<string> areas, int curNum) { + public static string LocNotFound(string desc = "", int @lock = 0, string name = "", List<string> areas = null, int curNum = -1) { var res = $"娌℃湁鎵惧埌{desc}璐т綅!!瑕佹眰:"; if (@lock >= 0) { @@ -44,6 +44,16 @@ } /// <summary> + /// <c>"娌℃湁鎵惧埌璧风偣璐т綅!!瑕佹眰:閿佺姸鎬�'鏃�;璐т綅鍚嶇О='name';鎵�湪搴撳尯=[areas];褰撳墠瀹瑰櫒鏁伴噺=0;"</c> + /// </summary> + /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> + /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> + /// <returns></returns> + public static string StartLocUnbindNotFound(string name = "", List<string> areas = null) { + return LocNotFound("璧风偣", 0, name, areas, 0); + } + + /// <summary> /// <c>"娌℃湁鎵惧埌璧风偣璐т綅!!瑕佹眰:閿佺姸鎬�'鏃�;璐т綅鍚嶇О='name';鎵�湪搴撳尯=[areas];褰撳墠瀹瑰櫒鏁伴噺=curNum;"</c> /// </summary> /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> @@ -52,16 +62,6 @@ /// <returns></returns> public static string StartLocNotFound(string name = "", List<string> areas = null, int curNum = 1) { return LocNotFound("璧风偣", 0, name, areas, curNum); - } - - /// <summary> - /// <c>"娌℃湁鎵惧埌璧风偣璐т綅!!瑕佹眰:閿佺姸鎬�'鏃�;璐т綅鍚嶇О='name';鎵�湪搴撳尯=[areas];褰撳墠瀹瑰櫒鏁伴噺=0;"</c> - /// </summary> - /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> - /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> - /// <returns></returns> - public static string StartLocUnbindNotFound(string name = "", List<string> areas = null) { - return LocNotFound("璧风偣", 0, name, areas, 0); } /// <summary> @@ -79,8 +79,8 @@ /// <c>"娌℃湁鎵惧埌[璐т綅瀹瑰櫒缁戝畾]淇℃伅!!瑕佹眰:璐т綅='loc';瀹瑰櫒='cntr';"</c> /// </summary> /// <remarks><b>[ 娉ㄦ剰 ]</b> 鍘熷垯涓婅嚦灏戞湁 1 涓檺鍒舵潯浠�/remarks> - /// <param name="loc"></param> - /// <param name="cntr"></param> + /// <param name="loc">璐т綅缂栫爜 ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> + /// <param name="cntr">瀹瑰櫒缂栫爜 ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> /// <returns></returns> public static string LocCntrRelNotFound(string loc = "", string cntr = "") { var res = $"娌℃湁鎵惧埌[璐т綅瀹瑰櫒缁戝畾]淇℃伅!!瑕佹眰:"; @@ -99,8 +99,8 @@ /// <c>"娌℃湁鎵惧埌[瀹瑰櫒璐у搧鏄庣粏]淇℃伅!!瑕佹眰:瀹瑰櫒='cntr';鐗╂枡='item';"</c> /// </summary> /// <remarks><b>[ 娉ㄦ剰 ]</b> 鍘熷垯涓婅嚦灏戞湁 1 涓檺鍒舵潯浠�/remarks> - /// <param name="cntr"></param> - /// <param name="item"></param> + /// <param name="cntr">瀹瑰櫒缂栫爜 ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> + /// <param name="item">鐗╂枡缂栫爜 ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> /// <returns></returns> public static string CgDetailNotFound(string cntr = "", string item = "") { var res = $"娌℃湁鎵惧埌[瀹瑰櫒璐у搧鏄庣粏]淇℃伅!!瑕佹眰:"; @@ -111,7 +111,7 @@ if (!string.IsNullOrEmpty(item)) { res += $"鐗╂枡='{item}';"; } - + return res; } } diff --git a/wms/SYSHelper.cs b/wms/SYSHelper.cs index 9935a0c..0cc3bfa 100644 --- a/wms/SYSHelper.cs +++ b/wms/SYSHelper.cs @@ -1,12 +1,10 @@ -锘縰sing HH.WCS.Mobox3.DSZSH.util; - -using SqlSugar; - -using System; +锘縰sing System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using HH.WCS.Mobox3.DSZSH.util; +using SqlSugar; namespace HH.WCS.Mobox3.DSZSH.wms { /// <summary> @@ -15,12 +13,20 @@ public class SYSHelper { private static object locker = new object(); /// <summary> - /// <c>"{prefix}-{DateTime.Now.ToString(dateFormat)}-{id.ToString().PadLeft(length, '0')}"</c> + /// <c>"{prefix}-{DateTime.Now.ToString(dateFormat)}-{id.ToString().PadLeft(length,'0')}"</c> /// </summary> /// <param name="snType"></param> /// <param name="prefix"></param> /// <param name="dateFormat"></param> /// <param name="length"></param> + /// <example><code><![CDATA[ + /// private static string GenerateOrderNo(string snType, string prefix) { + /// //var id = SYSHelper.GetSerialNumber(snType, prefix); + /// //var date = DateTime.Now.ToString("yyMMdd"); + /// //return $"{prefix}{date}-{id.ToString().PadLeft(4, '0')}"; + /// return SYSHelper.GenerateSN(snType, prefix, "yyMMdd"); + /// } + /// ]]></code></example> /// <returns></returns> public static string GenerateSN(string snType, string prefix, string dateFormat = "yyMM", int length = 4) { var header = $"{prefix}{DateTime.Now.ToString(dateFormat)}-"; @@ -30,18 +36,26 @@ return $"{header}{res.ToString().PadLeft(length, '0')}"; } } - + //鍘熸鏋舵柟娉�涓嶄細鎸夋棩鏇存柊MAXID,鐜板湪璁句负绉佹湁闅愯棌,榛樿璋冪敤灏佽鍚庣殑GenerateSN鏂规硶 private static int GetSerialNumber(string snType, string prefix) { int result = 0; lock (locker) { var db = new SqlHelper<object>().GetInstance(); var sId = db.Queryable<OI_SYS_MAXID>().Where(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix).First(); if (sId != null) { + //鍘熸鏋堕�杈�鏇存帴杩慚obox鐨勫簭鍒楀彿鐢熸垚鏂规硶) sId.CN_N_MAX++; if (db.Ado.ExecuteCommand($"update OI_SYS_MAXID set CN_N_MAX={sId.CN_N_MAX} " + $"where CN_S_TYPE='{snType}' and CN_S_PRE='{prefix}' ") > 0) { result = sId.CN_N_MAX; } + //鎸夋棩閲嶇疆MAXID鐨勯�杈�鐜颁笉鑰冭檻浣跨敤) + //sId.CN_N_MAX = sId.CN_T_LAST < DateTime.Today ? 1 : sId.CN_N_MAX + 1; + //sId.CN_T_LAST = DateTime.Now; + //if (db.Ado.ExecuteCommand($"update OI_SYS_MAXID set CN_N_MAX={sId.CN_N_MAX}, CN_T_LAST='{sId.CN_T_LAST}' " + + // $"where CN_S_TYPE='{snType}' and CN_S_PRE='{prefix}' ") > 0) { + // result = sId.CN_N_MAX; + //} } else { //鎻掑叆琛�@@ -51,7 +65,6 @@ } return result; } - [SugarTable("dbo.OI_SYS_MAXID")] public class OI_SYS_MAXID { public string CN_S_TYPE { get; set; } diff --git a/wms/WCSHelper.cs b/wms/WCSHelper.cs index 0e73985..9962930 100644 --- a/wms/WCSHelper.cs +++ b/wms/WCSHelper.cs @@ -1,14 +1,10 @@ -锘縰sing HH.WCS.Mobox3.DSZSH.models; -using HH.WCS.Mobox3.DSZSH.util; -using HH.WCS.Mobox3.DSZSH; - -using Newtonsoft.Json; - -using System; +锘縰sing System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using HH.WCS.Mobox3.DSZSH.models; +using HH.WCS.Mobox3.DSZSH.util; namespace HH.WCS.Mobox3.DSZSH.wms { /// <summary> @@ -58,7 +54,7 @@ #region 浠诲姟鍒涘缓 / 涓嬪彂 / 鏌ヨ internal static string GenerateTaskNo() { - //var id = SYSHelper.GetSerialNumberResetByDay("浠诲姟鍙�, "TN"); + //var id = SYSHelper.GetSerialNumber("浠诲姟鍙�, "TN"); //var date = DateTime.Now.ToString("yyMMdd"); //return $"TN{date}{id.ToString().PadLeft(4, '0')}"; return SYSHelper.GenerateSN("浠诲姟鍙�, "TN", "yyMMdd"); @@ -221,8 +217,8 @@ /// 鍒涘缓浠诲姟 /// </summary> /// <remarks><b>[ 瑕佹眰 ]</b> startLoc / endLoc 鈮�null ; startLoc / endLoc 瀛樺湪 S_CODE , S_AREA_CODE 瀛楁</remarks> - /// <param name="startLoc">璧风偣璐т綅 : 鑷冲皯鎻愪緵:S_CODE , S_AREA_CODE</param> - /// <param name="endLoc">缁堢偣璐т綅 : 鑷冲皯鎻愪緵:S_CODE , S_AREA_CODE</param> + /// <param name="startLoc">璧风偣璐т綅 : 鑷冲皯鎻愪緵 : S_CODE , S_AREA_CODE</param> + /// <param name="endLoc">缁堢偣璐т綅 : 鑷冲皯鎻愪緵 : S_CODE , S_AREA_CODE</param> /// <param name="cntId">瀹瑰櫒鍙�/param> /// <param name="type">浠诲姟绫诲瀷 ( 鍚嶇О )</param> /// <param name="pri">浼樺厛绾�/param> @@ -260,12 +256,15 @@ /// <returns></returns> public static TN_Task BuildTaskWithLocLock(TN_Location startLoc, TN_Location endLoc, string cntId, string type, int pri = 3, int agv = 1) { + var task = BuildTask(startLoc, endLoc, cntId, type, pri); LockStartLoc(startLoc, task.S_CODE); LockEndLoc(endLoc, task.S_CODE); return task; } + + #endregion #region 浠诲姟鍒嗗彂 / 鎵ц / 璁板綍 @@ -274,7 +273,7 @@ return db.Queryable<TN_Task_Action>().Count(a => a.S_TASK_CODE == no && a.N_ACTION_CODE == code) > 0; } - internal static void Begin(TN_Task task, string forklift_no) { + internal static void SetTaskBegin(TN_Task task, string forklift_no) { var db = new SqlHelper<TN_Task>().GetInstance(); if (task != null) { if (task.N_B_STATE == 1 || task.N_B_STATE == 0) { // 娣诲姞褰搕ask鐘舵�涓�鏃朵篃鍙互瑙﹀彂 @@ -286,7 +285,7 @@ } } } - internal static void End(TN_Task task) { + internal static void SetTaskEnd(TN_Task task) { var db = new SqlHelper<TN_Task>().GetInstance(); if (task != null) { task.N_B_STATE = 3; @@ -295,7 +294,7 @@ db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_END_TIME }).ExecuteCommand(); } } - internal static void Fail(TN_Task task) { + internal static void SetTaskFail(TN_Task task) { var db = new SqlHelper<TN_Task>().GetInstance(); if (task != null) { //鍒ゆ柇鏈夋病鏈夊彇璐у畬鎴�娌℃湁灏卞彉鎴愬け璐ャ�鏈夊彇璐у畬鎴愰粯璁ゅ畬鎴愪簡 (璺熸嵁椤圭洰鑰屽畾,鏈変簺椤圭洰浜哄伐鎷夎蛋浜嗕篃娌℃湁鏀惧埌缁堢偣) 銆�diff --git a/wms/WMSHelper.cs b/wms/WMSHelper.cs index 7f9bb6e..c704164 100644 --- a/wms/WMSHelper.cs +++ b/wms/WMSHelper.cs @@ -4,13 +4,11 @@ using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; - using HH.WCS.Mobox3.DSZSH.models; using HH.WCS.Mobox3.DSZSH.util; - using Newtonsoft.Json; - using static HH.WCS.Mobox3.DSZSH.api.ApiModel; +using static HH.WCS.Mobox3.DSZSH.util.Config; namespace HH.WCS.Mobox3.DSZSH.wms { /// <summary> @@ -36,5 +34,78 @@ } 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> + /// <param name="obj"></param> + /// <param name="cntrCode"></param> + /// <param name="skipCgDetail"></param> + /// <returns></returns> + public static LocCntrCg FindCntrOldInfo(CreateTaskObj obj, string cntrCode, bool skipCgDetail = true) { + var oldLocCntrCg = WCSHelper.GetLocCntrCg(cntrCode, skipCgDetail); + obj.Old = oldLocCntrCg; + return oldLocCntrCg; + } + /// <summary> + /// 缁戝畾璐т綅瀹瑰櫒 ( 淇敼 [ 璐т綅瀹瑰櫒琛�] [ 璐т綅绫诲瀷 ] = cntrType ; 灏�[ 寰呮彃鍏�] 璐т綅瀹瑰櫒鍏崇郴 鍔犲叆鍒�obj 涓�) + /// </summary> + /// <remarks><code><![CDATA[obj.New = new LocCntrCg { LocCntrRel = locCntrRel };]]></code></remarks> + /// <param name="obj"></param> + /// <param name="loc"></param> + /// <param name="cntrCode"></param> + /// <param name="cntrType"></param> + /// <returns></returns> + public static TN_Loc_Container BindLocCntr(CreateTaskObj obj, TN_Location loc, string cntrCode, string cntrType = "") { + var locCntrRel = WCSHelper.BindLocCntr(loc, cntrCode); + if (!string.IsNullOrEmpty(cntrType)) { + locCntrRel.S_CNTR_TYPE = cntrType; + } + obj.New = new LocCntrCg { LocCntrRel = locCntrRel }; + return locCntrRel; + } + /// <summary> + /// 鍒涘缓浠诲姟 ( 鏋勯�浠诲姟椤�/ 璧风偣缁堢偣涓婇攣 ; 灏�鎻掑叆浠诲姟 / 鏇存柊璐т綅 鐨勫璞″啓鍏�obj ) + /// </summary> + /// <remarks><code><![CDATA[ + /// obj.TaskToInsert = task; + /// obj.StartLocToUpdate = startLoc; + /// obj.EndLocToUpdate = endLoc; + /// ]]></code></remarks> + /// <param name="obj"></param> + /// <param name="startLoc"></param> + /// <param name="endLoc"></param> + /// <param name="cntId"></param> + /// <param name="type"></param> + /// <param name="pri"></param> + /// <param name="agv"></param> + public static TN_Task CreateTask(CreateTaskObj obj, TN_Location startLoc, TN_Location endLoc, string cntId, string type, + int pri = 3, int agv = 1) { + + var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, type, pri); + WCSHelper.LockStartLoc(startLoc, task.S_CODE); + WCSHelper.LockEndLoc(endLoc, task.S_CODE); + + obj.TaskToInsert = task; + obj.StartLocToUpdate = startLoc; + obj.EndLocToUpdate = endLoc; + + return task; + } } } -- Gitblit v1.9.1