Browse Source

更改数据库保存操作与PLC写入触发的顺序

林豪 左 3 years ago
parent
commit
3ec77d061d

+ 32 - 29
Projects/永冠OPP/WCS.Service/Works/SRM/SRMWork.cs

@@ -85,6 +85,16 @@ namespace WCS.Service.Works.SRM
                     {
                         var addrFrom = task.ADDRFROM.Split("-");
                         var addrTo = task.ADDRTO.Split("-");
+
+                        var oldTaskSTATUS = task.STATUS;
+                        task.STARTTIME = DateTime.Now;
+                        task.UPDATETIME = DateTime.Now;
+                        task.STATUS = WCS.Entity.TaskStatus.堆垛机执行;
+                        task.DEVICE = obj.Entity.CODE;
+                        db.Default.SaveChanges();
+                        Uploader.Upload(db);
+                        task.CreateStatusLog(db, $"状态由[{oldTaskSTATUS}]变更为[{task.STATUS}]", this.GetType());
+
                         if (addrFrom[2].ToShort().OddNumberOrEven())
                         {
                             obj.Data.TaskID_1 = task.ID;
@@ -107,14 +117,6 @@ namespace WCS.Service.Works.SRM
                             obj.Data.ELayer_2 = addrTo[2].ToShort();
                             obj.Data.VoucherNo_2++;
                         }
-                        var oldTaskSTATUS = task.STATUS;
-                        task.STARTTIME = DateTime.Now;
-                        task.UPDATETIME = DateTime.Now;
-                        task.STATUS = WCS.Entity.TaskStatus.堆垛机执行;
-                        task.DEVICE = obj.Entity.CODE;
-                        db.Default.SaveChanges();
-                        Uploader.Upload(db);
-                        task.CreateStatusLog(db, $"状态由[{oldTaskSTATUS}]变更为[{task.STATUS}]", this.GetType());
                     }
                 });
 
@@ -317,6 +319,28 @@ namespace WCS.Service.Works.SRM
                         var item = tasks[i];
                         var task = db.Default.Set<WCS_TASK>().Find(item.ID);
 
+                        var oldTaskSTATUS = task.STATUS;
+                        task.STARTTIME = DateTime.Now;
+                        task.UPDATETIME = DateTime.Now;
+                        task.STATUS = WCS.Entity.TaskStatus.堆垛机执行;
+                        task.DEVICE = obj.Entity.CODE;
+                        //获取到站台的下一个地址
+                        if (Device.Find(task.SRMSTATION).ROUTES.Any(v => v.NEXT == dev1.Entity)) task.ADDRNEXT = dev1.Entity.CODE;
+                        else task.ADDRNEXT = dev2.Entity.CODE;
+
+                        db.Default.SaveChanges();
+                        Uploader.Upload(db);
+                        if (item.Col.OddNumberOrEven())
+                        {
+                            var msg = $"状态由[{oldTaskSTATUS}]变更为[{task.STATUS}][{obj.Data.SLine_1}-{obj.Data.SCol_1}-{obj.Data.SLayer_1}][{obj.Data.ELine_1}][{obj.Data.VoucherNo_1}]";
+                            task.CreateStatusLog(db, msg, this.GetType());
+                        }
+                        else
+                        {
+                            var msg = $"状态由[{oldTaskSTATUS}]变更为[{task.STATUS}][{obj.Data.SLine_2}-{obj.Data.SCol_2}-{obj.Data.SLayer_2}][{obj.Data.ELine_2}][{obj.Data.VoucherNo_2}]";
+                            task.CreateStatusLog(db, msg, this.GetType());
+                        }
+
                         //判断当前任务为二工位还是一工位
                         if (item.Col.OddNumberOrEven())
                         {
@@ -344,27 +368,6 @@ namespace WCS.Service.Works.SRM
                             obj.Data.VoucherNo_2++;
                             InfoLog.INFO_SRMINFO($"写入堆垛机[{obj.Entity.CODE}]2工位-结束:[{obj.Data.TaskID_2}][{obj.Data.SLine_2}][{obj.Data.SCol_2}][{obj.Data.SLayer_2}][{obj.Data.ELine_2}][{obj.Data.VoucherNo_2}]");
                         }
-                        var oldTaskSTATUS = task.STATUS;
-                        task.STARTTIME = DateTime.Now;
-                        task.UPDATETIME = DateTime.Now;
-                        task.STATUS = WCS.Entity.TaskStatus.堆垛机执行;
-                        task.DEVICE = obj.Entity.CODE;
-                        //获取到站台的下一个地址
-                        if (Device.Find(task.SRMSTATION).ROUTES.Any(v => v.NEXT == dev1.Entity)) task.ADDRNEXT = dev1.Entity.CODE;
-                        else task.ADDRNEXT = dev2.Entity.CODE;
-
-                        db.Default.SaveChanges();
-                        Uploader.Upload(db);
-                        if (item.Col.OddNumberOrEven())
-                        {
-                            var msg = $"状态由[{oldTaskSTATUS}]变更为[{task.STATUS}][{obj.Data.SLine_1}-{obj.Data.SCol_1}-{obj.Data.SLayer_1}][{obj.Data.ELine_1}][{obj.Data.VoucherNo_1}]";
-                            task.CreateStatusLog(db, msg, this.GetType());
-                        }
-                        else
-                        {
-                            var msg = $"状态由[{oldTaskSTATUS}]变更为[{task.STATUS}][{obj.Data.SLine_2}-{obj.Data.SCol_2}-{obj.Data.SLayer_2}][{obj.Data.ELine_2}][{obj.Data.VoucherNo_2}]";
-                            task.CreateStatusLog(db, msg, this.GetType());
-                        }
                     }
                 });
 

+ 12 - 13
Projects/永冠OPP/WCS.Service/Works/Station/一楼入库.cs

@@ -144,11 +144,6 @@ namespace WCS.Service.Works.Station
                         var dev = Device.Find(item.Entity.CODE).Create<StationDevice>();
                         var task = tasks.FirstOrDefault(p => p.ID == dev.Data2.Tasknum);
                         //if (dev.Data2.Goodsend == task.ADDRNEXT.ToShort() && (task.TaskGroupKey.Contains($"{task.WMSTASK}_") || task.TaskGroupKey.Contains($"_{task.WMSTASK}"))) continue;
-                        dev.Data.Tasknum = task.ID;
-                        dev.Data.Goodsstart = Conv_1030.ToShort();
-                        dev.Data.Goodsend = tunnelInfo.taskIN.CODE.Replace("G", "").ToShort();
-                        dev.Data.CmdType = IstationCmdType.分配目标地址;
-                        dev.Data.VoucherNo++;
 
                         task.DEVICE = tunnelInfo.SRM.Entity.CODE;
                         task.TUNNEL = tunnelInfo.Tunnel.CODE;
@@ -161,6 +156,12 @@ namespace WCS.Service.Works.Station
                         msg += $"[{dev.Data.Tasknum}][{Conv_1030}][{dev.Data.Goodsend}][{tunnelInfo.SRM.Entity.CODE}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
 
                         task.CreateStatusLog(db, msg, this.GetType());
+
+                        dev.Data.Tasknum = task.ID;
+                        dev.Data.Goodsstart = Conv_1030.ToShort();
+                        dev.Data.Goodsend = tunnelInfo.taskIN.CODE.Replace("G", "").ToShort();
+                        dev.Data.CmdType = IstationCmdType.分配目标地址;
+                        dev.Data.VoucherNo++;
                     }
                 });
             }
@@ -195,19 +196,17 @@ namespace WCS.Service.Works.Station
                 }
                 var next = obj.Entity.GetPath(task.ADDRTO);
 
-                obj.Data.Tasknum = task.ID;
-                obj.Data.Goodsstart = obj.Entity.CODE.ToShort();
-                obj.Data.Goodsend = next.FirstOrDefault().CODE.ToShort();
-                obj.Data.CmdType = IstationCmdType.分配目标地址;
-                obj.Data.VoucherNo++;
-
                 task.ADDRNEXT = next.FirstOrDefault().CODE;
                 db.Default.SaveChanges();
-
                 var msg = $"下达从{obj.Data.Goodsstart}移动至{obj.Data.Goodsend}的PLC指令";
                 msg += $"[{obj.Data.Tasknum}][{obj.Data.Goodsstart}][{obj.Data.Goodsend}][{obj.Data.VoucherNo}[{obj.Data2.VoucherNo}]";
-
                 task.CreateStatusLog(db, msg, this.GetType());
+
+                obj.Data.Tasknum = task.ID;
+                obj.Data.Goodsstart = obj.Entity.CODE.ToShort();
+                obj.Data.Goodsend = next.FirstOrDefault().CODE.ToShort();
+                obj.Data.CmdType = IstationCmdType.分配目标地址;
+                obj.Data.VoucherNo++;
             });
         }
 

+ 2 - 2
Projects/永冠OPP/WCS.Service/Works/Station/一楼出库.cs

@@ -23,13 +23,13 @@ namespace WCS.Service.Works.Station
                 if (task.SRMSTATION != obj.Entity.CODE && task.STATUS != TaskStatus.堆垛机完成) return;
                 task.STATUS = TaskStatus.执行中;
                 db.Default.SaveChanges();
+                task.CreateStatusLog(db, $"状态由[{TaskStatus.堆垛机完成}]变更为[{task.STATUS}]-{obj.Entity.Code}", this.GetType());
                 //开始写入目标地址
                 obj.Data.Tasknum = task.ID;
                 obj.Data.Goodsstart = obj.Entity.CODE.ToShort();
                 obj.Data.Goodsend = task.ADDRNEXT.ToShort();
                 obj.Data.CmdType = IstationCmdType.堆垛机放货完成请求目标地址;
                 obj.Data.VoucherNo++;
-                task.CreateStatusLog(db, $"状态由[{TaskStatus.堆垛机完成}]变更为[{task.STATUS}]-{obj.Entity.Code}", this.GetType());
             });
         }
 
@@ -62,9 +62,9 @@ namespace WCS.Service.Works.Station
                         throw new Exception(LogHelper.SpliceLogMessage($"{task.ID}任务状态错误", dev.Entity.CODE, WCS_EXCEPTIONTYPE.逻辑异常, GetType()));
                     task.STATUS = TaskStatus.已完成;
                     db.Default.SaveChanges();
+                    task.CreateStatusLog(db, $"状态由[{TaskStatus.执行中}]变更为[{task.STATUS}]-{dev.Entity.CODE}", this.GetType());
                     dev.Data.CmdType = IstationCmdType.月台出库口任务完成;
                     dev.Data.VoucherNo++;
-                    task.CreateStatusLog(db, $"状态由[{TaskStatus.执行中}]变更为[{task.STATUS}]-{dev.Entity.CODE}", this.GetType());
                 }
             });
         }