Parcourir la source

自动校秤程序优化

1693994901 il y a 2 jours
Parent
commit
9022c89054

+ 44 - 0
成品库/WCS.WorkEngineering/Extensions/TaskExtension.cs

@@ -3,7 +3,9 @@ using ServiceCenter.Extensions;
 using ServiceCenter.Logs;
 using ServiceCenter.Redis;
 using ServiceCenter.SqlSugars;
+using SqlSugar;
 using WCS.Entity;
+using TaskStatus = WCS.Entity.TaskStatus;
 
 namespace WCS.WorkEngineering.Extensions
 {
@@ -42,6 +44,48 @@ namespace WCS.WorkEngineering.Extensions
             }).SplitTable().ExecuteCommand();
         }
 
+        public static void AddWCS_TASK_DTL1(this WCS_TaskInfo task, SqlSugarHelper db, string curPoint, string NextPoint, string desc)
+        {
+            db.Default.Insertable(new WCS_TaskDtl
+            {
+                ID = Guid.NewGuid(),
+                ParentTaskCode = task.ID,
+                CurPoint = curPoint,
+                NextPoint = NextPoint,
+                Desc = desc,
+                AddWho = "WCS"
+            }).SplitTable().ExecuteCommand();
+            task.UpdateableOldTask(db);
+        }
+
+
+        /// <summary>
+        ///  更新历史表数据
+        /// </summary>
+        /// <param name="taskInfo"></param>
+        /// <param name="db"></param>
+        public static void UpdateableOldTask(this WCS_TaskInfo taskInfo, SqlSugarHelper db)
+        {
+            if (taskInfo.Status == TaskStatus.NewBuild) return;
+
+            // 同步任务信息
+            var taskOld = db.Default.Queryable<WCS_TaskOld>().Where(v => v.ID == taskInfo.ID).SplitTable(tabs => tabs.Take(2)).ToList().OrderByDescending(v => v.AddTime).First();
+            if (taskOld is not null)
+            {
+                if (taskInfo.Status >= TaskStatus.Finish) taskInfo.CompleteOrCancelTasks(db);
+                else
+                {
+                    taskOld = taskInfo.Mapper<WCS_TaskOld, WCS_TaskInfo>();
+                    taskOld.ID = taskInfo.ID;
+                    db.Default.Updateable(taskOld).Where(x => x.ID == taskOld.ID).SplitTable(tabs => tabs.Take(2)).ExecuteCommand();
+                }
+            }
+            else
+            {
+                throw new KnownException($"WCS_TaskOld表中不存在任务:{taskInfo.ID},无法执行WCS_TaskInfo与WCS_TaskOld同步动作", LogLevelEnum.Mid);
+            }
+        }
+
         /// <summary>
         /// 完成或取消任务
         /// </summary>

+ 39 - 0
成品库/WCS.WorkEngineering/Extensions/TypesExtension.cs

@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WCS.WorkEngineering.Extensions
+{
+    public static class TypesExtension
+    {
+        /// <summary>
+        /// 数据映射
+        /// </summary>
+        /// <typeparam name="D">映射目标实体Type</typeparam>
+        /// <typeparam name="S"></typeparam>
+        /// <param name="s"></param>
+        /// <returns></returns>
+        public static D Mapper<D, S>(this S s)
+        {
+            var d = Activator.CreateInstance<D>();
+
+            var sType = s?.GetType();
+            var dType = typeof(D);
+
+            foreach (var sP in sType.GetProperties())
+            {
+                foreach (var dP in dType.GetProperties())
+                {
+                    if (dP.Name == sP.Name)
+                    {
+                        dP.SetValue(d, sP.GetValue(s));
+                        break;
+                    }
+                }
+            }
+            return d;
+        }
+    }
+}

+ 1 - 1
成品库/WCS.WorkEngineering/Systems/NoInteractionSystems.cs

@@ -112,7 +112,7 @@ namespace WCS.WorkEngineering.Systems
                                                     break;
                                             }
                                         }
-                                        else if (task.AddrTo == "8088" || task.AddrTo == "8094" || task.AddrTo == "8313")
+                                        else if (task.AddrTo == "8088" || task.AddrTo == "8094" || task.AddrTo == "8313" || task.BusType == "砝码出库")
                                         {
                                             putStation = "8045";
                                         }

+ 2 - 1
成品库/WCS.WorkEngineering/Systems/装箱区入库.cs

@@ -87,8 +87,9 @@ namespace WCS.WorkEngineering.Systems
                     obj.Data.GoodsEnd = 8243;    
                     obj.Data.VoucherNo++;
                     taskInfo.WorkBench = "8243";
+                    taskInfo.AddrTo = "srm";
                     db.Updateable(taskInfo).ExecuteCommand();
-                    taskInfo.AddWCS_TASK_DTL(_db, obj.Entity.Code, "8243", $"已分配目标地址{taskInfo.WorkBench}");
+                    taskInfo.AddWCS_TASK_DTL1(_db, obj.Entity.Code, "8243", $"已分配目标地址{taskInfo.WorkBench}");
                     return;
                 }
                 conf = _db.Default.Ado.SqlQuery<string>("SELECT  scontent FROM [WMS_ZT_01CP].[dbo].[sys_config]  where  code = 'ForbidBoxStockIn'").First();

+ 1 - 1
成品库/WCS.WorkEngineering/Systems/装箱区扫码.cs

@@ -163,7 +163,7 @@ namespace WCS.WorkEngineering.Systems
                             taskInfo.BusType = "砝码出库";                           
 
                             db.Updateable(taskInfo).ExecuteCommand();
-                            taskInfo.AddWCS_TASK_DTL(_db, obj.Entity.Code, taskInfo.AddrNext, $"8058重复扫码完成,已称重,前{weightBefore}-后{weightNow}");
+                            taskInfo.AddWCS_TASK_DTL1(_db, obj.Entity.Code, taskInfo.AddrNext, $"8058重复扫码完成,已称重,前{weightBefore}-后{weightNow}");
                             task = taskInfo;
                         }
                         else

+ 7 - 3
成品库/WCS.WorkEngineering/Systems/装箱区贴标.cs

@@ -71,9 +71,13 @@ namespace WCS.WorkEngineering.Systems
                         taskInfo.EditTime = DateTime.Now;
                         taskInfo.EedTime = DateTime.Now;
                         taskInfo.Weight = (float)Math.Round(obj.Data4.Weight, 2);
-                        try { WmsApi.WcsUploadInfo(taskInfo.ID,decimal.Parse(taskInfo.Weight.ToString()), taskInfo.BarCode); }
+                        try { WmsApi.WcsUploadInfo(taskInfo.ID, decimal.Parse(taskInfo.Weight.ToString()), taskInfo.BarCode); }
                         catch (Exception ex) { throw new KnownException(ex.Message, LogLevelEnum.Mid); }
                         db.Default.Updateable(taskInfo).ExecuteCommand();
+                    }
+                    else if (taskInfo.BusType == "砝码出库")
+                    { 
+
                     }
                     else//跟贴标机交互
                     {
@@ -86,7 +90,7 @@ namespace WCS.WorkEngineering.Systems
                         var jsonObj = JObject.Parse(labelResponse);
                         string js = $"{jsonObj["FN7"]}";
                         string jsR = $"{jsonObj["FN6"]}";
-                        if (string.IsNullOrEmpty(js) || string.IsNullOrEmpty(jsR)) 
+                        if (string.IsNullOrEmpty(js) || string.IsNullOrEmpty(jsR))
                         {
                             throw new KnownException($"贴标机打印数据不可为空", LogLevelEnum.High);
                         }
@@ -99,7 +103,7 @@ namespace WCS.WorkEngineering.Systems
                         }
 
                         //var conf = db.Default.Ado.SqlQuery<string>("SELECT  scontent FROM [WMS_ZT_01CP].[dbo].[sys_config]  where  code = 'ForbidBoxStockIn'").First();
-                        string data =  $"^XA\r\n^CI27\r\n^FT70,356^BQN,2,20\r\n";
+                        string data = $"^XA\r\n^CI27\r\n^FT70,356^BQN,2,20\r\n";
                         data += $"^FH\\^{js}^FS\r\n^FT85,500^A0N,71,71^FH\\^CI28^FD{a[1]}{rx}^FS^CI27\r\n^PQ1,0,1,Y\r\n^XZ";
                         #region old
                         //string data = $"^XA\r\n^CI28\r\n^CW1,E:SIMSUN.TTF\r\n^XFE:{jsonObj["LabelName"]}^FS\r\n";