林豪 左 2 年之前
父节点
当前提交
9bb6617cb8

+ 18 - 24
Projects/永冠OPP/WCS.Service/Extensions/WCS_TaskExtensions.cs

@@ -8,37 +8,31 @@ namespace WCS.Service.Extensions
     {
         /// <summary>
         /// 任务发生状态变更时,为任务新增状态变更记录
-        /// 异步任务
+
         /// </summary>
         /// <param name="task">对应任务</param>
         /// <param name="db">db链接, 没有从新构造一个db的原因是为了保证状态记录的增加与任务状态的变更是同步的</param>
         /// <param name="msg">需要记录的消息</param>
-        public static void CreateStatusLogAsync(this WCS_TASK task, string msg, Type cl)
+        public static void CreateStatusLog(this WCS_TASK task, DBHelper.DB db, string msg, Type cl)
         {
-            System.Threading.Tasks.Task.Run(() =>
+            try
             {
-                try
-                {
-                    DBHelper.DB.Do(db =>
-                    {
-                        WCS_StatusLog statusLog = new WCS_StatusLog()
-                        {
-                            WCS_TASKID = task.ID,
-                            NewStatus = task.STATUS,
-                            UPDATETIME = DateTime.Now,
-                            upStatus = task.UPLOADED,
-                            Node = cl.FullName,
-                            UPDATEUSER = "WCS",
-                            msg = msg,
-                        };
-                        db.Default.Add(statusLog);
-                    });
-                }
-                catch
+                WCS_StatusLog statusLog = new WCS_StatusLog()
                 {
-                    //TODO:记日志
-                }
-            });
+                    WCS_TASKID = task.ID,
+                    NewStatus = task.STATUS,
+                    UPDATETIME = DateTime.Now,
+                    upStatus = task.UPLOADED,
+                    Node = cl.FullName,
+                    UPDATEUSER = "WCS",
+                    msg = msg,
+                };
+                db.Default.Add(statusLog);
+            }
+            catch
+            {
+                //TODO:记日志
+            }
         }
     }
 }

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

@@ -149,7 +149,7 @@ namespace WCS.Service.Works.SRM
                                 task.ADDRTO = $"{loc.Row}-{loc.Colomn}-{loc.Layer}";
                                 task.DEVICE = deviceCode;
                                 task.TUNNEL = tunnel;
-                                task.CreateStatusLogAsync( $"状态由{oldTask}变更至{task.STATUS}", this.GetType());
+                                task.CreateStatusLog(db, $"状态由{oldTask}变更至{task.STATUS}", this.GetType());
                                 finishTaskList.Add(new FinishTaskList<int>(task.ID, dev));
                             }
                             db.Default.SaveChanges();
@@ -284,7 +284,7 @@ namespace WCS.Service.Works.SRM
                                 task.GetSrmStationAndaddNext(fork);
                                 var msg = "";
                                 msg = fork == SrmFork.货叉1 ? $"状态由[{oldTaskStatus}]变更为[{task.STATUS}][{srmDevice.Data.SLine_1}-{srmDevice.Data.SCol_1}-{srmDevice.Data.SLayer_1}][{srmDevice.Data.ELine_1}][{srmDevice.Data.VoucherNo_1}]" : $"状态由[{oldTaskStatus}]变更为[{task.STATUS}][{srmDevice.Data.SLine_2}-{srmDevice.Data.SCol_2}-{srmDevice.Data.SLayer_2}][{srmDevice.Data.ELine_2}][{srmDevice.Data.VoucherNo_2}]";
-                                task.CreateStatusLogAsync(msg, this.GetType());
+                                task.CreateStatusLog(db,msg, this.GetType());
                                 item.SRMSTATION = task.SRMSTATION;
                                 finishTaskList.Add(new FinishTaskList<SrmFork, Task>(fork, item));
                             }
@@ -365,7 +365,7 @@ namespace WCS.Service.Works.SRM
                             task.DEVICE = deviceCode;
                             db.Default.SaveChanges();
                             Uploader.Upload(db);
-                            task.CreateStatusLogAsync($"状态由[{oldTaskStatus}]变更为[{task.STATUS}]", this.GetType());
+                            task.CreateStatusLog(db,$"状态由[{oldTaskStatus}]变更为[{task.STATUS}]", this.GetType());
 
                             if (addFrom[2].ToShort().OddNumberOrEven())
                             {
@@ -450,7 +450,7 @@ namespace WCS.Service.Works.SRM
                             task.ADDRTO = $"{loc.Row}-{loc.Colomn}-{loc.Layer}";
                             task.DEVICE = deviceCode;
                             task.TUNNEL = tunnel;
-                            task.CreateStatusLogAsync($"状态由{oldTask}变更至{task.STATUS}", this.GetType());
+                            task.CreateStatusLog(db,$"状态由{oldTask}变更至{task.STATUS}", this.GetType());
                             finishTaskList.Add(new FinishTaskList<int>(task.ID, dev));
                         }
                         db.Default.SaveChanges();
@@ -629,7 +629,7 @@ namespace WCS.Service.Works.SRM
                             task.GetSrmStationAndaddNext(fork);
                             var msg = "";
                             msg = fork == SrmFork.货叉1 ? $"状态由[{oldTaskStatus}]变更为[{task.STATUS}][{srmDevice.Data.SLine_1}-{srmDevice.Data.SCol_1}-{srmDevice.Data.SLayer_1}][{srmDevice.Data.ELine_1}][{srmDevice.Data.VoucherNo_1}]" : $"状态由[{oldTaskStatus}]变更为[{task.STATUS}][{srmDevice.Data.SLine_2}-{srmDevice.Data.SCol_2}-{srmDevice.Data.SLayer_2}][{srmDevice.Data.ELine_2}][{srmDevice.Data.VoucherNo_2}]";
-                            task.CreateStatusLogAsync(msg, this.GetType());
+                            task.CreateStatusLog(db,msg, this.GetType());
                             item.SRMSTATION = task.SRMSTATION;
                             finishTaskList.Add(new FinishTaskList<SrmFork, Task>(fork, item));
                         }

+ 3 - 3
Projects/永冠OPP/WCS.Service/Works/Station/BOPP入库.cs

@@ -70,7 +70,7 @@ namespace WCS.Service.Works.Station
 
                         var msg = $"下达从{dev.Entity.CODE}移动至{next}的PLC指令。";
                         msg += $"[{dev.Data.Tasknum}][{dev.Data.Goodsstart}][{dev.Data.Goodsend}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
-                        task.CreateStatusLogAsync(msg, this.GetType());
+                        task.CreateStatusLog(db,msg, this.GetType());
                     }
                     //两个任务一起创建
                     db.Default.SaveChanges();
@@ -200,7 +200,7 @@ namespace WCS.Service.Works.Station
                         task.ADDRTO = task.DEVICE;
                         var msg = $"下达从G23移动至{dev.Data.Goodsend}的PLC指令。同时将任务分配至[{task.TUNNEL}]-[{task.DEVICE}]";
                         msg += $"[{dev.Data.Tasknum}][G23][{dev.Data.Goodsend}][{tunnelInfo.SRM.Entity.CODE}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
-                        task.CreateStatusLogAsync(msg, this.GetType());
+                        task.CreateStatusLog(db,msg, this.GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, item.Station));
                     }
                     db.Default.SaveChanges();
@@ -312,7 +312,7 @@ namespace WCS.Service.Works.Station
                         task.ADDRTO = task.DEVICE;
                         var msg = $"下达从{stationDeviceGroup.Entity.CODE}移动至{dev.Data.Goodsend}的PLC指令。同时将任务分配至[{task.TUNNEL}]-[{task.DEVICE}]";
                         msg += $"[{dev.Data.Tasknum}][{stationDeviceGroup.Entity.CODE}][{dev.Data.Goodsend}][{tunnelInfo.SRM.Entity.CODE}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
-                        task.CreateStatusLogAsync(msg, GetType());
+                        task.CreateStatusLog(db,msg, GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, item.Station));
                     }
                     db.Default.SaveChanges();

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

@@ -67,7 +67,7 @@ namespace WCS.Service.Works.Station
 
                             db.Default.Set<WCS_TASK>().Add(task);
                             finishTaskList.Add(new FinishTaskList<int>(task.WMSTASK, item.Station));
-                            task.CreateStatusLogAsync($"{dev.Entity.CODE}创建入库任务", this.GetType());
+                            task.CreateStatusLog(db,$"{dev.Entity.CODE}创建入库任务", this.GetType());
                         }
                         //两个任务一起创建
                         db.Default.SaveChanges();
@@ -184,7 +184,7 @@ namespace WCS.Service.Works.Station
                         task.ADDRNEXT = tunnelInfo.taskIN.CODE;
                         task.TaskGroupKey = res.WMSTaskGroupKey;
                         task.ADDRTO = task.DEVICE;
-                        task.CreateStatusLogAsync($"一次分配至堆垛机{task.DEVICE}", this.GetType());
+                        task.CreateStatusLog(db,$"一次分配至堆垛机{task.DEVICE}", this.GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, item.Entity.Create<StationDevice>()));
                     }
 
@@ -283,7 +283,7 @@ namespace WCS.Service.Works.Station
                         task.ADDRNEXT = tunnelInfo.taskIN.CODE;
                         task.TaskGroupKey = res.WMSTaskGroupKey;
                         task.ADDRTO = task.DEVICE;
-                        task.CreateStatusLogAsync($"二次分配至堆垛机{task.TUNNEL}", this.GetType());
+                        task.CreateStatusLog(db,$"二次分配至堆垛机{task.TUNNEL}", this.GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, dev));
                     }
                     db.Default.SaveChanges();

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

@@ -51,7 +51,7 @@ namespace WCS.Service.Works.Station
                         if (tasks.Any(v => v.STATUS != TaskStatus.堆垛机完成 && v.STATUS != TaskStatus.执行中)) throw new WarnException("任务异常,同组任务状态不为堆垛机完成或执行中");
 
                         task.STATUS = TaskStatus.执行中;
-                        task.CreateStatusLogAsync($"堆垛机放货点分配目标地址{task.ADDRNEXT}", GetType());
+                        task.CreateStatusLog(db,$"堆垛机放货点分配目标地址{task.ADDRNEXT}", GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, dev.Station));
                     }
                     db.Default.SaveChanges();
@@ -123,7 +123,7 @@ namespace WCS.Service.Works.Station
                         task!.STATUS = TaskStatus.已完成;
                         task.ENDTIME = System.DateTime.Now;
                         task.UPDATEUSER = "WCS";
-                        task.CreateStatusLogAsync($"任务完成", this.GetType());
+                        task.CreateStatusLog(db,$"任务完成", this.GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, dev.Station));
                     }
                     db.Default.SaveChanges();

+ 19 - 34
Projects/永冠OPP/WCS.Service/Works/Station/涂布入库.cs

@@ -2,7 +2,6 @@
 using Microsoft.EntityFrameworkCore;
 using System;
 using System.Collections.Generic;
-using System.Diagnostics;
 using System.Linq;
 using WCS.Core;
 using WCS.Entity;
@@ -236,8 +235,6 @@ namespace WCS.Service.Works.Station
     {
         protected override void Do(StationDeviceGroup obj)
         {
-            var timer = new Stopwatch();
-            timer.Start();
             obj.EX(stationDeviceGroup =>
             {
                 stationDeviceGroup.BcrStationIsForbid();
@@ -250,18 +247,16 @@ namespace WCS.Service.Works.Station
                     if (stationDeviceGroup.Items.Any(v => !v.Data3.Status.HasFlag(StationStatus.低位))) throw new DoException("不在低位");
                 }
 
+                var devise = stationDeviceGroup.GetBcrValid();
+                devise.Valid();
+                var infos = devise.GetWMSInTask();
+                WCS_AGVTask agvTask = null;
+
                 //成功创建的任务
                 var finishTaskList = new List<FinishTaskList<int>>();
-
                 //创建对应的任务
                 DB.Do(db =>
                 {
-                    var devise = stationDeviceGroup.GetBcrValid();
-                    devise.Valid();
-                    var infos = devise.GetWMSInTask();
-
-                    WCS_AGVTask agvTask = null;
-
                     if (!stationDeviceGroup.Items.Any(v => v.Data2.Status.HasFlag(IstationStatus.手动入库)))
                     {
                         if (stationDeviceGroup.Entity.CODE == "G1435")
@@ -309,9 +304,7 @@ namespace WCS.Service.Works.Station
                         db.Default.Set<WCS_TASK>().Add(task);
                         finishTaskList.Add(new FinishTaskList<int>(task.WMSTASK, item.Station));
 
-                        var msg = $"下达从{dev.Entity.CODE}移动至{next}的PLC指令。";
-                        msg += $"[{dev.Data.Tasknum}][{dev.Data.Goodsstart}][{dev.Data.Goodsend}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
-                        task.CreateStatusLogAsync(msg, this.GetType());
+                        task.CreateStatusLog(db,"创建任务", this.GetType());
                     }
                     //两个任务一起创建
                     db.Default.SaveChanges();
@@ -333,9 +326,6 @@ namespace WCS.Service.Works.Station
                         finishTask.Station.Data.VoucherNo++;
                     }
                 });
-
-                timer.Stop();
-                InfoLog.INFO_TIMING($"{stationDeviceGroup.Entity.CODE}--扫码入库,耗时{timer.ElapsedMilliseconds}");
             });
         }
 
@@ -367,15 +357,14 @@ namespace WCS.Service.Works.Station
 
                     //成功分配巷道的任务的任务
                     var finishTaskList = new List<FinishTaskList<int>>();
-
+                    var devise = stationDeviceGroup.Items.Where(v => v.Data2.Status.HasFlag(IstationStatus.光电状态) && v.Data2.Request == IstationRequest.请求分配目标地址)
+                                               .Where(v => v.Data2.Tasknum > 10000 && v.Data2.Goodsend != 0);
+                    var enumerable = devise as Device<IStation520, IStation521, IStation523>[] ?? devise.ToArray();
+                    if (!enumerable.Any()) return; //无可执行任务
+                    var taskIds = enumerable.Select(dev => dev.Data2.Tasknum).ToList();
                     //变更数据库信息
                     DB.Do(db =>
                     {
-                        var devise = stationDeviceGroup.Items.Where(v => v.Data2.Status.HasFlag(IstationStatus.光电状态) && v.Data2.Request == IstationRequest.请求分配目标地址)
-                                               .Where(v => v.Data2.Tasknum > 10000 && v.Data2.Goodsend != 0);
-                        var enumerable = devise as Device<IStation520, IStation521, IStation523>[] ?? devise.ToArray();
-                        if (!enumerable.Any()) return; //无可执行任务
-                        var taskIds = enumerable.Select(dev => dev.Data2.Tasknum).ToList();
                         var taskList = db.Default.Set<WCS_TASK>().Where(v => taskIds.Contains(v.ID)).ToList();
 
                         taskList.ValidTaskCheck(enumerable.Count(), db);
@@ -441,9 +430,7 @@ namespace WCS.Service.Works.Station
                             task.ADDRNEXT = tunnelInfo.taskIN.CODE;
                             task.TaskGroupKey = res.WMSTaskGroupKey;
                             task.ADDRTO = task.DEVICE;
-                            var msg = $"下达从{stationDeviceGroup.Entity.CODE}移动至{dev.Data.Goodsend}的PLC指令。同时将任务分配至[{task.TUNNEL}]-[{task.DEVICE}]";
-                            msg += $"[{dev.Data.Tasknum}][{stationDeviceGroup.Entity.CODE}][{dev.Data.Goodsend}][{tunnelInfo.SRM.Entity.CODE}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
-                            task.CreateStatusLogAsync(msg, this.GetType());
+                            task.CreateStatusLog(db,$"一次分配至堆垛机{task.DEVICE}", this.GetType());
                             finishTaskList.Add(new FinishTaskList<int>(task.ID, dev));
                         }
                         db.Default.SaveChanges();
@@ -496,15 +483,14 @@ namespace WCS.Service.Works.Station
                 if (stationDeviceGroup.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位))) throw new DoException("运行中");
                 //成功分配巷道的任务的任务
                 var finishTaskList = new List<FinishTaskList<int>>();
-
+                var devise = stationDeviceGroup.Items.Where(v => v.Data2.Status.HasFlag(IstationStatus.光电状态) && v.Data2.Request == IstationRequest.请求分配目标地址)
+                                          .Where(v => v.Data2.Tasknum > 10000);
+                var enumerable = devise as Device<IStation520, IStation521, IStation523>[] ?? devise.ToArray();
+                if (!enumerable.Any()) return; //无可执行任务
+                var taskIds = enumerable.Select(dev => dev.Data2.Tasknum).ToList();
                 //变更数据库信息
                 DB.Do(db =>
                 {
-                    var devise = stationDeviceGroup.Items.Where(v => v.Data2.Status.HasFlag(IstationStatus.光电状态) && v.Data2.Request == IstationRequest.请求分配目标地址)
-                                           .Where(v => v.Data2.Tasknum > 10000);
-                    var enumerable = devise as Device<IStation520, IStation521, IStation523>[] ?? devise.ToArray();
-                    if (!enumerable.Any()) return; //无可执行任务
-                    var taskIds = enumerable.Select(dev => dev.Data2.Tasknum).ToList();
                     var taskList = db.Default.Set<WCS_TASK>().Where(v => taskIds.Contains(v.ID)).ToList();
 
                     taskList.ValidTaskCheck(enumerable.Count(), db);
@@ -565,9 +551,8 @@ namespace WCS.Service.Works.Station
                             task.ADDRNEXT = dev.Entity.GetPath(task.DEVICE).CODE;
                             task.TaskGroupKey = res.WMSTaskGroupKey;
                             task.ADDRTO = task.DEVICE;
-                            var msg = $"下达从{stationDeviceGroup.Entity.CODE}移动至{task.ADDRNEXT}的PLC指令。同时将任务分配至[{task.TUNNEL}]-[{task.DEVICE}]";
-                            msg += $"[{dev.Data.Tasknum}][{stationDeviceGroup.Entity.CODE}][{dev.Data.Goodsend}][{tunnelInfo.SRM.Entity.CODE}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
-                            task.CreateStatusLogAsync(msg, this.GetType());
+
+                            task.CreateStatusLog(db,$"二次分配至堆垛机{task.DEVICE}", this.GetType());
                             finishTaskList.Add(new FinishTaskList<int>(task.ID, dev));
                         }
                         db.Default.SaveChanges();

+ 100 - 99
Projects/永冠OPP/WCS.Service/Works/Station/涂布出库.cs

@@ -26,29 +26,30 @@ namespace WCS.Service.Works.Station
             {
                 if (stationDeviceGroup.Items.Any(v => v.Data.VoucherNo != v.Data2.VoucherNo)) throw new WarnException($"等待执行任务,凭证号不一致");
                 if (stationDeviceGroup.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位))) throw new DoException("运行中");
-                //成功处理的任务
-                var finishTaskList = new List<FinishTaskList<int>>();
 
-                DB.Do(db =>
+                var devise = new List<FinishTaskList<string>>();
+                foreach (var dev in stationDeviceGroup.Items)
                 {
-                    var devise = new List<FinishTaskList<string>>();
-                    foreach (var dev in stationDeviceGroup.Items)
+                    //没有请求
+                    if (dev.Data2.Request != IstationRequest.堆垛机放货完成请求目标地址)
                     {
-                        //没有请求
-                        if (dev.Data2.Request != IstationRequest.堆垛机放货完成请求目标地址)
-                        {
-                            InfoLog.INFO_INFO($"{stationDeviceGroup.Entity.CODE}无请求-堆垛机放货完成请求--4");
-                            continue;
-                        }
-                        //没有光电
-                        if (!dev.Data2.Status.HasFlag(IstationStatus.光电状态))
-                        {
-                            InfoLog.INFO_WarnDb($"{dev.Entity.CODE}有请求无光电", stationDeviceGroup.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
-                            continue;
-                        };
-                        devise.Add(new FinishTaskList<string>(dev.Entity.CODE, dev.Entity.Create<StationDevice>()));
+                        InfoLog.INFO_INFO($"{stationDeviceGroup.Entity.CODE}无请求-堆垛机放货完成请求--4");
+                        continue;
                     }
+                    //没有光电
+                    if (!dev.Data2.Status.HasFlag(IstationStatus.光电状态))
+                    {
+                        InfoLog.INFO_WarnDb($"{dev.Entity.CODE}有请求无光电", stationDeviceGroup.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
+                        continue;
+                    };
+                    devise.Add(new FinishTaskList<string>(dev.Entity.CODE, dev.Entity.Create<StationDevice>()));
+                }
 
+                //成功处理的任务
+                var finishTaskList = new List<FinishTaskList<int>>();
+
+                DB.Do(db =>
+                {
                     foreach (var dev in devise)
                     {
                         var task = db.Default.Set<WCS_TASK>().FirstOrDefault(v => (v.TYPE == TaskType.出库 || v.TYPE == TaskType.倒库) && v.SRMSTATION == dev.FinishCode && v.STATUS == TaskStatus.堆垛机完成) ?? throw new WarnException("无任务");
@@ -56,7 +57,7 @@ namespace WCS.Service.Works.Station
                         if (tasks.Any(v => v.STATUS != TaskStatus.堆垛机完成 && v.STATUS != TaskStatus.执行中)) throw new WarnException("任务异常,同组任务状态不为堆垛机完成或执行中");
 
                         task.STATUS = TaskStatus.执行中;
-                        task.CreateStatusLogAsync($"状态由[{TaskStatus.堆垛机完成}]变更为[{task.STATUS}]-{stationDeviceGroup.Entity.CODE}", this.GetType());
+                        task.CreateStatusLog(db,$"堆垛机放货点分配目标地址{task.ADDRNEXT}", this.GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, dev.Station));
                     }
                     db.Default.SaveChanges();
@@ -104,31 +105,30 @@ namespace WCS.Service.Works.Station
                     ProtocolProxy.YG150Redis.Set(key, key);
                     if (stationDeviceGroup.Items.Any(v => v.Data.VoucherNo != v.Data2.VoucherNo)) throw new WarnException("等待执行任务,凭证号不一致");
                     if (stationDeviceGroup.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位))) throw new DoException("运行中");
-
+                    var devise = new List<FinishTaskList<string>>();
+                    foreach (var dev in stationDeviceGroup.Items)
+                    {
+                        if (dev.Data2.Request != IstationRequest.请求分配目标地址)
+                        {
+                            InfoLog.INFO_INFO($"{stationDeviceGroup.Entity.CODE}无请求-分配目标地址--2");
+                            continue;
+                        }
+                        if (!dev.Data2.Status.HasFlag(IstationStatus.光电状态))
+                        {
+                            InfoLog.INFO_WarnDb($"{dev.Entity.CODE}有请求无光电", stationDeviceGroup.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
+                            continue;
+                        }
+                        if (dev.Data2.Tasknum < 10000)
+                        {
+                            InfoLog.INFO_WarnDb($"{dev.Entity.CODE}有请求有光电无任务", stationDeviceGroup.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
+                            continue;
+                        }
+                        devise.Add(new FinishTaskList<string>(dev.Entity.CODE, dev.Entity.Create<StationDevice>()));
+                    }
                     var finishTaskList = new List<FinishTaskList<int>>();
 
                     DB.Do(db =>
                     {
-                        var devise = new List<FinishTaskList<string>>();
-                        foreach (var dev in stationDeviceGroup.Items)
-                        {
-                            if (dev.Data2.Request != IstationRequest.请求分配目标地址)
-                            {
-                                InfoLog.INFO_INFO($"{stationDeviceGroup.Entity.CODE}无请求-分配目标地址--2");
-                                continue;
-                            }
-                            if (!dev.Data2.Status.HasFlag(IstationStatus.光电状态))
-                            {
-                                InfoLog.INFO_WarnDb($"{dev.Entity.CODE}有请求无光电", stationDeviceGroup.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
-                                continue;
-                            }
-                            if (dev.Data2.Tasknum < 10000)
-                            {
-                                InfoLog.INFO_WarnDb($"{dev.Entity.CODE}有请求有光电无任务", stationDeviceGroup.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
-                                continue;
-                            }
-                            devise.Add(new FinishTaskList<string>(dev.Entity.CODE, dev.Entity.Create<StationDevice>()));
-                        }
                         //验证总数
                         if (db.Default.Set<WCS_TASK>().Count(v => v.STATUS < TaskStatus.已完成 && v.ADDRNEXT == "G1") >= 3) throw new WarnException("总数已达3,流量管控");
 
@@ -149,7 +149,7 @@ namespace WCS.Service.Works.Station
                             {
                                 task.ADDRNEXT = "G1";
                             }
-                            task.CreateStatusLogAsync($"分配目标地址{task.ADDRNEXT}", this.GetType());
+                            task.CreateStatusLog(db,$"涂布出库分配出库口{task.ADDRNEXT}", this.GetType());
                             finishTaskList.Add(new FinishTaskList<int>(task.ID, dev.Station));
                         }
                         db.Default.SaveChanges();
@@ -200,43 +200,44 @@ namespace WCS.Service.Works.Station
                 if (stationDeviceGroup.Items.Any(v => v.Data2.VoucherNo != v.Data.VoucherNo)) throw new WarnException("凭证号不一致");
                 if (stationDeviceGroup.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位))) throw new DoException("设备运行中");
 
-                //成功处理的任务
-                var finishTaskList = new List<FinishTaskList<int>>();
+                var devise = new List<FinishTaskList<string>>();
 
-                DB.Do(db =>
+                //获取需要执行的设备信息
+                foreach (var dev in stationDeviceGroup.Items)
                 {
-                    var devise = new List<FinishTaskList<string>>();
-
-                    //获取需要执行的设备信息
-                    foreach (var dev in stationDeviceGroup.Items)
+                    if (!dev.Data3.Status.HasFlag(StationStatus.低位))
                     {
-                        if (!dev.Data3.Status.HasFlag(StationStatus.低位))
-                        {
-                            InfoLog.INFO_INFO($"{dev.Entity.CODE}--不在低位");
-                            continue;
-                        }
-                        if (!dev.Data2.Status.HasFlag(IstationStatus.光电状态))
-                        {
-                            InfoLog.INFO_INFO($"{dev.Entity.CODE}--没有光电");
-                            continue;
-                        }
-                        if (dev.Data2.Request != IstationRequest.请求分配目标地址)
-                        {
-                            InfoLog.INFO_WarnDb($"{dev.Entity.CODE}--有光电没有分配目标地址请求--2", stationDeviceGroup.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
-                            continue;
-                        };
-                        if (dev.Data2.Tasknum < 10000)
-                        {
-                            InfoLog.INFO_WarnDb($"{dev.Entity.CODE}--有光电有请求没有任务号", stationDeviceGroup.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
-                            continue;
-                        }
-
-                        devise.Add(new FinishTaskList<string>(dev.Entity.CODE, dev.Entity.Create<StationDevice>()));
+                        InfoLog.INFO_INFO($"{dev.Entity.CODE}--不在低位");
+                        continue;
                     }
+                    if (!dev.Data2.Status.HasFlag(IstationStatus.光电状态))
+                    {
+                        InfoLog.INFO_INFO($"{dev.Entity.CODE}--没有光电");
+                        continue;
+                    }
+                    if (dev.Data2.Request != IstationRequest.请求分配目标地址)
+                    {
+                        InfoLog.INFO_WarnDb($"{dev.Entity.CODE}--有光电没有分配目标地址请求--2", stationDeviceGroup.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
+                        continue;
+                    };
+                    if (dev.Data2.Tasknum < 10000)
+                    {
+                        InfoLog.INFO_WarnDb($"{dev.Entity.CODE}--有光电有请求没有任务号", stationDeviceGroup.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
+                        continue;
+                    }
+
+                    devise.Add(new FinishTaskList<string>(dev.Entity.CODE, dev.Entity.Create<StationDevice>()));
+                }
 
-                    if (!devise.Any()) return; //无可执行任务
-                                               //验证可执行任务数与有效任务数是否一致
-                    var taskIds = devise.Select(dev => dev.Station.Data2.Tasknum).ToList();
+                if (!devise.Any()) return; //无可执行任务
+                //验证可执行任务数与有效任务数是否一致
+                var taskIds = devise.Select(dev => dev.Station.Data2.Tasknum).ToList();
+
+                //成功处理的任务
+                var finishTaskList = new List<FinishTaskList<int>>();
+
+                DB.Do(db =>
+                {
                     var taskList = db.Default.Set<WCS_TASK>().Where(v => taskIds.Contains(v.ID)).ToList();
 
                     var task1 = taskList.FirstOrDefault();
@@ -272,7 +273,7 @@ namespace WCS.Service.Works.Station
                         }
 
                         task.ADDRNEXT = addNext;
-                        task.CreateStatusLogAsync($"状态由[{WCS.Entity.TaskStatus.堆垛机完成}]变更为[{task.STATUS}]-{stationDeviceGroup.Entity.CODE}", this.GetType());
+                        task.CreateStatusLog(db,$"涂布出库分配AGV取货点{addNext}", this.GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, dev.Station));
                         stationList.Add(new FinishTaskList<WCS_TASK>(task, dev.Station));
                     }
@@ -350,36 +351,35 @@ namespace WCS.Service.Works.Station
                 if (stationDeviceGroup.Items.Any(v => v.Data2.VoucherNo != v.Data.VoucherNo)) throw new WarnException("凭证号不一致");
                 if (stationDeviceGroup.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位))) throw new DoException("设备运行中");
 
-                //成功处理的任务
+                var devise = new List<FinishTaskList<string>>();
 
-                DB.Do(db =>
+                //获取需要执行的设备信息
+                foreach (var dev in stationDeviceGroup.Items)
                 {
-                    var devise = new List<FinishTaskList<string>>();
-
-                    //获取需要执行的设备信息
-                    foreach (var dev in stationDeviceGroup.Items)
+                    if (dev.Data2.Request != IstationRequest.请求分配目标地址)
                     {
-                        if (dev.Data2.Request != IstationRequest.请求分配目标地址)
-                        {
-                            InfoLog.INFO_INFO($"{stationDeviceGroup.Entity.CODE}无请求-分配目标地址--2");
-                            continue;
-                        }
-                        if (!dev.Data2.Status.HasFlag(IstationStatus.光电状态))
-                        {
-                            InfoLog.INFO_WarnDb($"{dev.Entity.CODE}有请求无光电", stationDeviceGroup.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
-                            continue;
-                        }
-                        if (dev.Data2.Tasknum < 10000)
-                        {
-                            InfoLog.INFO_WarnDb($"{dev.Entity.CODE}有请求有光电无任务", stationDeviceGroup.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
-                            continue;
-                        }
-                        devise.Add(new FinishTaskList<string>(dev.Entity.CODE, dev.Entity.Create<StationDevice>()));
+                        InfoLog.INFO_INFO($"{stationDeviceGroup.Entity.CODE}无请求-分配目标地址--2");
+                        continue;
+                    }
+                    if (!dev.Data2.Status.HasFlag(IstationStatus.光电状态))
+                    {
+                        InfoLog.INFO_WarnDb($"{dev.Entity.CODE}有请求无光电", stationDeviceGroup.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
+                        continue;
+                    }
+                    if (dev.Data2.Tasknum < 10000)
+                    {
+                        InfoLog.INFO_WarnDb($"{dev.Entity.CODE}有请求有光电无任务", stationDeviceGroup.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
+                        continue;
                     }
+                    devise.Add(new FinishTaskList<string>(dev.Entity.CODE, dev.Entity.Create<StationDevice>()));
+                }
 
-                    if (!devise.Any()) return;//无可执行任务
-                    //验证可执行任务数与有效任务数是否一致
-                    var taskIds = devise.Select(dev => dev.Station.Data2.Tasknum).ToList();
+                if (!devise.Any()) return;//无可执行任务
+                                          //验证可执行任务数与有效任务数是否一致
+                var taskIds = devise.Select(dev => dev.Station.Data2.Tasknum).ToList();
+
+                DB.Do(db =>
+                {
                     var taskList = db.Default.Set<WCS_TASK>().Where(v => taskIds.Contains(v.ID)).ToList();
                     var taskCount = db.Default.Set<WCS_TASK>().Count(v => v.TaskGroupKey == taskList.FirstOrDefault().TaskGroupKey && v.TYPE == TaskType.出库);
 
@@ -481,6 +481,7 @@ namespace WCS.Service.Works.Station
                                      FLOOR = 2
                                  };
                                  task.TaskGetSrmStation();
+                                 task.CreateStatusLog(db, $"创建任务", this.GetType());
                                  db.Default.Set<WCS_TASK>().Add(task);
                                  tasking.Status = AGVTaskStatus.确认;
                                  tasking.UpdateTime = DateTime.Now;