林豪 左 3 years ago
parent
commit
4167eec381

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

@@ -11,7 +11,7 @@ namespace WCS.Service.Works.SRM
     {
         protected override void Do(Device<ISRM520, ISRM521, ISRM537> obj)
         {
-            obj.Data.ECol_1 = (short)22l;
+            //obj.Data.ECol_1 = (short)22l;
         }
 
         protected override bool SelectDevice(WCS_DEVICE dev)

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

@@ -1,7 +1,9 @@
 using DBHelper_SqlSugar;
 using Logs;
+using System;
 using System.Collections.Generic;
 using System.Diagnostics;
+using System.Linq;
 using WCS.Core;
 using WCS.Entity;
 using WCS.Entity.Protocol;
@@ -11,7 +13,7 @@ using WCS.Service.Helpers;
 
 namespace WCS.Service.Works.Station
 {
-    //[WorkTitle(typeof(ProductHandler), "扫码入库")]
+    [WorkTitle(typeof(ProductHandler), "扫码入库")]
     internal class 扫码入库 : Work<StationDeviceGroup>
     {
         protected override void Do(StationDeviceGroup obj)
@@ -20,50 +22,55 @@ namespace WCS.Service.Works.Station
             timer.Start();
             obj.EX(obj =>
             {
+                obj.BcrStationIsForbid();
+                //设备组无论单卷还是双卷都必须满足的条件
+                if (obj.Items.Any(v => v.Data.VoucherNo != v.Data2.VoucherNo)) throw new WarnException($"等待任务执行--凭证号不一致");
+                if (obj.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位))) throw new WarnException($"设备运行中");
+
                 //成功创建的任务
                 var finishTaskList = new List<FinishTaskList<int>>();
 
                 //创建对应的任务
                 Db.Do(db =>
                 {
-                    var devs = obj.Items;
-                    //var devs = obj.GetBcrValid();
-                    //devs.Valid();
-                    //var infos = devs.GetWMSInTask();
+                    var devs = obj.GetBcrValid();
+                    devs.Valid();
+                    var infos = devs.GetWMSInTask();
+
                     foreach (var item in devs)
                     {
-                        //var dev = item.Station;
-                        //var next = dev.Entity.GetPath("SRM").CODE;
-                        //var info = infos.FirstOrDefault(v => item.FinishCode.Contains(v.ContainerCode + "}"));
-                        //if (db.Default.Queryable<WCS_TASK>().Any(v => v.BARCODE == info.ContainerCode && v.STATUS < TaskStatus.已完成 && v.TYPE == TaskType.入库))
-                        //    throw new WarnException($"生产条码{info.ContainerCode}存在未完成任务,请检查是否为标签卡重复使用");
-
-                        //var task = new WCS_TASK
-                        //{
-                        //    BARCODE = info.ContainerCode,
-                        //    TYPE = TaskType.入库,
-                        //    STATUS = TaskStatus.执行中,
-                        //    ADDRFROM = dev.Entity.CODE,
-                        //    ADDRTO = info.EndPostion,
-                        //    STARTTIME = DateTime.Now,
-                        //    UPDATEUSER = "WCS",
-                        //    UPDATETIME = DateTime.Now,
-                        //    WMSTASK = int.Parse(info.WMSTaskNum),
-                        //    TaskGroupKey = info.TaskGroupKey,
-                        //    ADDRNEXT = next,
-                        //    HEIGHT = dev.Data2.GoodsSize,
-                        //    FLOOR = 1
-                        //};
-
-                        //db.Default.Updateable(task).AddQueue();
-                        finishTaskList.Add(new FinishTaskList<int>(0, item.Entity.Create<StationDevice>()));
-
-                        //var msg = $"下达从{dev.Entity.CODE}移动至{next}的PLC指令。";
-                        //msg += $"[{dev.Data.Tasknum}][{dev.Data.Goodsstart}][{dev.Data.Goodsend}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
-                        //task.CreateStatusLog(db, msg, this.GetType());
+                        var dev = item.Station;
+                        var next = dev.Entity.GetPath("SRM").CODE;
+                        var info = infos.FirstOrDefault(v => item.FinishCode.Contains(v.ContainerCode + "}"));
+                        if (db.Default.Queryable<WCS_TASK>().Any(v => v.BARCODE == info.ContainerCode && v.STATUS < TaskStatus.已完成 && v.TYPE == TaskType.入库))
+                            throw new WarnException($"生产条码{info.ContainerCode}存在未完成任务,请检查是否为标签卡重复使用");
+
+                        var task = new WCS_TASK
+                        {
+                            BARCODE = info.ContainerCode,
+                            TYPE = TaskType.入库,
+                            STATUS = TaskStatus.执行中,
+                            ADDRFROM = dev.Entity.CODE,
+                            ADDRTO = info.EndPostion,
+                            STARTTIME = DateTime.Now,
+                            UPDATEUSER = "WCS",
+                            UPDATETIME = DateTime.Now,
+                            WMSTASK = int.Parse(info.WMSTaskNum),
+                            TaskGroupKey = info.TaskGroupKey,
+                            ADDRNEXT = next,
+                            HEIGHT = dev.Data2.GoodsSize,
+                            FLOOR = 1
+                        };
+
+                        db.Default.Updateable(task).AddQueue();
+                        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.CreateStatusLog(db, msg, this.GetType());
                     }
                     //两个任务一起创建
-                    //db.Default.SaveQueues();
+                    db.Default.SaveQueues();
                 });
 
                 //检查对应的任务是否已创建成功
@@ -71,115 +78,21 @@ namespace WCS.Service.Works.Station
                 {
                     foreach (var finishTask in finishTaskList)
                     {
-                        //var task = db.Default.Queryable<WCS_TASK>().First(v => v.WMSTASK == finishTask.FinishCode);
-                        //if (task == null) continue;
-
-                        //finishTask.Station.Data2.Status = finishTask.Station.Data2.Status | IstationStatus.光电状态;
-                        //finishTask.Station.Data.Goodsstart = 2222;
-                        //finishTask.Station.Data.Goodsend = task.ADDRNEXT.ToShort();
-                        //finishTask.Station.Data.Goodsnum = finishTaskList.Count.ToShort();
-                        //finishTask.Station.Data.CmdType = IstationCmdType.扫码入库;
-                        //finishTask.Station.Data.VoucherNo++;
+                        var task = db.Default.Queryable<WCS_TASK>().First(v => v.WMSTASK == finishTask.FinishCode);
+                        if (task == null) continue;
+
+                        finishTask.Station.Data.Tasknum = task.ID;
+                        finishTask.Station.Data.Goodsstart = task.ADDRFROM.ToShort();
+                        finishTask.Station.Data.Goodsend = task.ADDRNEXT.ToShort();
+                        finishTask.Station.Data.Goodsnum = finishTaskList.Count.ToShort();
+                        finishTask.Station.Data.CmdType = IstationCmdType.扫码入库;
+                        finishTask.Station.Data.VoucherNo++;
                     }
                 });
 
                 timer.Stop();
                 InfoLog.INFO_TIMING($"{obj.Entity.CODE}--扫码入库,耗时{timer.ElapsedMilliseconds}");
             });
-
-            //var timer = new Stopwatch();
-            //timer.Start();
-            //obj.EX(obj =>
-            //{
-            //    obj.BcrStationIsForbid();
-            //    //设备组无论单卷还是双卷都必须满足的条件
-            //    if (obj.Items.Any(v => v.Data.VoucherNo != v.Data2.VoucherNo)) throw new WarnException($"等待任务执行--凭证号不一致");
-            //    if (obj.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位))) throw new WarnException($"设备运行中");
-
-            //    //成功创建的任务
-            //    var finishTaskList = new List<FinishTaskList<int>>();
-
-            //    //创建对应的任务
-            //    Db.Do(db =>
-            //    {
-            //        var devs = obj.GetBcrValid();
-            //        devs.Valid();
-            //        var infos = devs.GetWMSInTask();
-
-            //        foreach (var item in devs)
-            //        {
-            //            var dev = item.Station;
-            //            var next = dev.Entity.GetPath("SRM").CODE;
-            //            var info = infos.FirstOrDefault(v => item.FinishCode.Contains(v.ContainerCode + "}"));
-            //            if (db.Default.Queryable<WCS_TASK>().Any(v => v.BARCODE == info.ContainerCode && v.STATUS < TaskStatus.已完成 && v.TYPE == TaskType.入库))
-            //                throw new WarnException($"生产条码{info.ContainerCode}存在未完成任务,请检查是否为标签卡重复使用");
-
-            //            var task = new WCS_TASK
-            //            {
-            //                BARCODE = info.ContainerCode,
-            //                TYPE = TaskType.入库,
-            //                STATUS = TaskStatus.执行中,
-            //                ADDRFROM = dev.Entity.CODE,
-            //                ADDRTO = info.EndPostion,
-            //                STARTTIME = DateTime.Now,
-            //                UPDATEUSER = "WCS",
-            //                UPDATETIME = DateTime.Now,
-            //                WMSTASK = int.Parse(info.WMSTaskNum),
-            //                TaskGroupKey = info.TaskGroupKey,
-            //                ADDRNEXT = next,
-            //                HEIGHT = dev.Data2.GoodsSize,
-            //                FLOOR = 1
-            //            };
-
-            //            db.Default.Updateable(task).AddQueue();
-            //            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.CreateStatusLog(db, msg, this.GetType());
-            //        }
-            //        //两个任务一起创建
-            //        db.Default.SaveQueues();
-            //    });
-
-            //    //检查对应的任务是否已创建成功
-            //    Db.Do(db =>
-            //    {
-            //        foreach (var finishTask in finishTaskList)
-            //        {
-            //            var task = db.Default.Queryable<WCS_TASK>().First(v => v.WMSTASK == finishTask.FinishCode);
-            //            if (task == null) continue;
-
-            //            finishTask.Station.Data.Tasknum = task.ID;
-            //            finishTask.Station.Data.Goodsstart = task.ADDRFROM.ToShort();
-            //            finishTask.Station.Data.Goodsend = task.ADDRNEXT.ToShort();
-            //            finishTask.Station.Data.Goodsnum = finishTaskList.Count.ToShort();
-            //            finishTask.Station.Data.CmdType = IstationCmdType.扫码入库;
-            //            finishTask.Station.Data.VoucherNo++;
-            //        }
-            //    });
-
-            //    timer.Stop();
-            //    InfoLog.INFO_TIMING($"{obj.Entity.CODE}--扫码入库,耗时{timer.ElapsedMilliseconds}");
-            //});
-        }
-
-        protected override bool SelectDevice(WCS_DEVICE dev)
-        {
-            return dev.CODE == "G1028";
-        }
-    }
-
-    [WorkTitle(typeof(ProductHandler), "扫码入库")]
-    internal class 扫码入库1 : Work<StationDeviceGroup>
-    {
-        protected override void Do(StationDeviceGroup obj)
-        {
-            var a = Device.Find("1028").Create<StationDevice>();
-            foreach (var dev in obj.Items)
-            {
-                dev.Data2.Status = dev.Data2.Status | IstationStatus.光电状态;
-            }
         }
 
         protected override bool SelectDevice(WCS_DEVICE dev)

+ 2 - 1
WCS.Core/WCS.Core.csproj

@@ -4,7 +4,8 @@
     <TargetFramework>net6.0</TargetFramework>
     <AssemblyVersion>1.0.0.3</AssemblyVersion>
     <FileVersion>1.0.0.3</FileVersion>
-    <Version>1.0.0.3</Version>
+    <Version>1.0.2</Version>
+    <Description>更新了设备组实例获取的方式</Description>
   </PropertyGroup>
 
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">