林豪 左 1 年間 前
コミット
045fa5454a

+ 1 - 1
WCS.Core/ProtocolProxyBase.cs

@@ -126,7 +126,7 @@ namespace WCS.Core
             var item = Items[propertyName] as PlcItem<T>;
             var res = item.Value;
             var channel = Ltc.GetChannel();
-            //if (channel != null && !ProtocolType.Name.Contains("525") && !ProtocolType.Name.Contains("83")) this.World.OnInternalLog(channel, $"获取值:{Device.Code}.{ProtocolType.Name}.{propertyName}:{res}");
+            //if (channel != null && !ProtocolType.Name.Contains("525") && !ProtocolType.Name.Contains("83") && !ProtocolType.Name.Contains("524")) this.World.OnInternalLog(channel, $"获取值:{Device.Code}.{ProtocolType.Name}.{propertyName}:{res}");
             return res;
         }
 

+ 5 - 9
业务工程/分拣库/WCS.WorkEngineering/Extensions/TaskExtension.cs

@@ -3,9 +3,7 @@ using ServiceCenter.Logs;
 using ServiceCenter.Redis;
 using ServiceCenter.SqlSugars;
 using SqlSugar;
-using System.Xml.Linq;
 using WCS.Entity;
-using static System.Runtime.InteropServices.JavaScript.JSType;
 using TaskStatus = WCS.Entity.TaskStatus;
 
 namespace WCS.WorkEngineering.Extensions
@@ -88,10 +86,10 @@ namespace WCS.WorkEngineering.Extensions
         public static void UpdateableOldTask(this WCS_TaskInfo taskInfo, SqlSugarScopeProvider db)
         {
             if (taskInfo.Status == TaskStatus.NewBuild) return;
+
             // 同步任务信息
             //Console.WriteLine($"开始找任务:{taskInfo.ID}");
-            var name = db.SplitHelper<WCS_TaskOld>().GetTableName(taskInfo.AddTime);
-            var taskOld = db.Queryable<WCS_TaskOld>().Where(v => v.Id == taskInfo.ID).SplitTable(tabs => tabs.InTableNames(name)).ToList().OrderByDescending(v => v.AddTime).First();
+            var taskOld = db.Queryable<WCS_TaskOld>().Where(v => v.Id == taskInfo.ID).SplitTable(tabs => tabs.Take(2)).ToList().OrderByDescending(v => v.AddTime).First();
             //Console.WriteLine($"找到任务:{taskInfo.ID}");
             if (taskOld is not null)
             {
@@ -101,7 +99,7 @@ namespace WCS.WorkEngineering.Extensions
                     taskOld = taskInfo.Mapper<WCS_TaskOld, WCS_TaskInfo>();
                     taskOld.Id = taskInfo.ID;
                     //Console.WriteLine($"开始更新:{taskInfo.ID}");
-                    db.Updateable(taskOld).Where(x => x.Id == taskOld.Id).SplitTable(tabs => tabs.InTableNames(name)).ExecuteCommand();
+                    db.Updateable(taskOld).Where(x => x.Id == taskOld.Id).SplitTable(tabs => tabs.Take(2)).ExecuteCommand();
                     //Console.WriteLine($"更新结束:{taskInfo.ID}");
                 }
             }
@@ -120,14 +118,13 @@ namespace WCS.WorkEngineering.Extensions
         {
             if (taskInfo.Status is not Entity.TaskStatus.Finish and not Entity.TaskStatus.Cancel) throw new KnownException("任务未完成或取消,无法执行WCS_TaskInfo与WCS_TaskOld同步动作", LogLevelEnum.Mid);
             // 任务完成或取消,进行相关同步动作
-            var name = db.SplitHelper<WCS_TaskOld>().GetTableName(taskInfo.AddTime);
-            var taskOld = db.Queryable<WCS_TaskOld>().Where(v => v.Id == taskInfo.ID).SplitTable(tabs => tabs.InTableNames(name)).ToList().OrderByDescending(v => v.AddTime).First();
+            var taskOld = db.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)
             {
                 taskOld = taskInfo.Mapper<WCS_TaskOld, WCS_TaskInfo>();
                 taskOld.Id = taskInfo.ID;
                 //更新任务历史表,删除任务当前表
-                db.Updateable(taskOld).Where(x => x.Id == taskOld.Id).SplitTable(tabs => tabs.InTableNames(name)).ExecuteCommand();
+                db.Updateable(taskOld).Where(x => x.Id == taskOld.Id).SplitTable(tabs => tabs.Take(2)).ExecuteCommand();
                 db.Deleteable(taskInfo).ExecuteCommand();
             }
             else
@@ -204,7 +201,6 @@ namespace WCS.WorkEngineering.Extensions
             if (billBomsetgrp == null) throw new KnownException($"物料规格[{task.MatCode}]无可用码垛垛形", LogLevelEnum.Mid);
             var billBomsetinfos = db.Queryable<BillBomsetinfo>().Where(x => x.BomSetHdrId == billBomsetgrp.Id).ToList();
 
-
             //开始构造垛形信息
             var palletizing = new WCS_Palletizing()
             {

+ 5 - 14
业务工程/分拣库/WCS.WorkEngineering/Systems/NoInteractionSystems.cs

@@ -4,6 +4,7 @@ using ServiceCenter.Extensions;
 using ServiceCenter.Logs;
 using ServiceCenter.SqlSugars;
 using System.ComponentModel;
+using SqlSugar;
 using WCS.Core;
 using WCS.Entity;
 using WCS.Entity.Protocol.Station;
@@ -177,20 +178,9 @@ namespace WCS.WorkEngineering.Systems
                                         var devs = Device.All.Where(x => x.HasFlag(DeviceFlags.AGV取货站台口)).Select(x => x.Code);
                                         if (devs.Contains(task.SrmStation))
                                         {
-                                            //开始处理车间叫料AGV任务任务
-                                            db.Default.Insertable(new WCS_AgvTaskInfo()
-                                            {
-                                                ID = db.GetAgvTaskId(),
-                                                TaskType = AGVTaskType.CallMaterial,
-                                                Status = AGVTaskStatus.NewBuild,
-                                                TaskId = task.ID,
-                                                Position = task.WorkBench,
-                                                Station = task.SrmStation,
-                                                AddWho = "WCS",
-                                                AddTime = DateTime.Now
-                                            }).SplitTable().ExecuteCommand();
+                                            
 
-                                            db.Default.Insertable(new WCS_AgvTaskInfo()
+                                            var b = new WCS_AgvTaskInfo()
                                             {
                                                 ID = db.GetAgvTaskId(),
                                                 TaskType = AGVTaskType.EnterDepot,
@@ -200,7 +190,8 @@ namespace WCS.WorkEngineering.Systems
                                                 Station = "2501",
                                                 AddWho = "WCS",
                                                 AddTime = DateTime.Now
-                                            }).SplitTable().ExecuteCommand();
+                                            };
+                                            db.Default.Insertable(b).SplitTable().ExecuteCommand();
                                         }
                                         //更新任务状态
                                         task.Status = Entity.TaskStatus.WaitingToExecute;

+ 1 - 1
业务工程/分拣库/WCS.WorkEngineering/Systems/SrmSystems.cs

@@ -103,7 +103,7 @@ namespace WCS.WorkEngineering.Systems
                                 {
                                     case OutTypeEnum.自动出库任务 or OutTypeEnum.全自动手动出库任务:
 
-                                        if (task.SrmStation is "1601" or "1605" or "1611" or "1615")
+                                        if (task.SrmStation is "1601" or "1605" or "1611" or "1615" or "1632")
                                         {
                                             task.Status = Entity.TaskStatus.Finish;
                                             var dev = new Station(Device.All.FirstOrDefault(v => v.Code == task.SrmStation) ?? throw new KnownException($"未找到{task.SrmStation}信息", LogLevelEnum.High), this.World);

+ 3 - 3
业务工程/分拣库/WCS.WorkEngineering/Systems/一楼叠盘机入库.cs

@@ -42,9 +42,9 @@ namespace WCS.WorkEngineering.Systems
                 SqlSugarHelper.Do(_db =>
                 {
                     var db = _db.Default;
-
+                    var isTask = db.Queryable<WCS_TaskInfo>().Any(v => v.BarCode.Contains(barcode) && v.AddrFrom == obj.Entity.Code && v.Type == TaskType.EnterDepot);
                     //验证是否有对应的任务
-                    if (!db.Queryable<WCS_TaskInfo>().Any(v => v.BarCode.Contains(barcode) && v.AddrFrom == obj.Entity.Code && v.Type == TaskType.EnterDepot))
+                    if (!isTask)
                     {
                         var res = WmsApi.OneFloorWorkerBuildEmptyPalletsStock(new OneFloorWorkerBuildEmptyPalletsStockRequest()
                         {
@@ -89,7 +89,7 @@ namespace WCS.WorkEngineering.Systems
 
                         task = taskInfo;
                     }
-                    else return;
+                    else throw new KnownException($"未找到对应的任务{taskInfo}", LogLevelEnum.Mid);
                 });
             }
             catch (Exception ex)

+ 1 - 0
业务工程/分拣库/WCS.WorkEngineering/Systems/分拣支线/环形库分流点.cs

@@ -60,6 +60,7 @@ namespace WCS.WorkEngineering.Systems
                 else
                 if (taskInfo == null) throw new KnownException($"未找到对应的WCS任务{obj.Data2.TaskNumber}", LogLevelEnum.Mid);
 
+
                 if (!taskInfo.BarCode.Contains("Error"))
                 {
                     switch (obj.Data4.Length.ToInt())

+ 23 - 1
业务工程/分拣库/WCS.WorkEngineering/Systems/机台叫料生成AGV任务.cs

@@ -33,9 +33,31 @@ namespace WCS.WorkEngineering.Systems
                 var task = db.Queryable<WCS_TaskInfo>().Single(x => x.ID == obj.Data.TaskNumber);
                 if (task == null) throw new Exception($"未找到对应任务{obj.Data.TaskNumber}");
                 if (task.Status != Entity.TaskStatus.ConveyorExecution) throw new Exception($"{task.ID}状态不是输送机执行中");
+
+
+
+
                 //开始创建AGV任务
                 var agvTask = db.Queryable<WCS_AgvTaskInfo>().SplitTable(x => x.Take(2)).Single(x => x.TaskId == task.ID && x.TaskType == AGVTaskType.CallMaterial);
-                if (agvTask == null) throw new Exception($"{task.ID}未找到对应的AGV任务"); ;
+                if (agvTask == null)
+                {
+                    var a = new WCS_AgvTaskInfo()
+                    {
+                        ID = _db.GetAgvTaskId(),
+                        TaskType = AGVTaskType.CallMaterial,
+                        Status = AGVTaskStatus.NewBuild,
+                        TaskId = task.ID,
+                        Position = task.WorkBench,
+                        Station = task.SrmStation,
+                        AddWho = "WCS",
+                        AddTime = DateTime.Now
+                    };
+                    //开始处理车间叫料AGV任务任务
+                    db.Insertable(a).SplitTable().ExecuteCommand();
+                    World.Log($"{task.ID}未找到对应的AGV任务");
+                    return;
+                }
+
                 if (agvTask.Status != AGVTaskStatus.NewBuild) throw new Exception($"AGV任务{agvTask.ID}状态不是新建"); ;
                 var agvId = DateTime.Now.GetFormat(GetFormatterEnum.only);
 

+ 13 - 3
业务工程/分拣库/WCS.WorkEngineering/Systems/桁架码垛/桁架.cs

@@ -2,6 +2,7 @@
 using ServiceCenter.Logs;
 using ServiceCenter.SqlSugars;
 using System.ComponentModel;
+using Newtonsoft.Json;
 using WCS.Core;
 using WCS.Entity;
 using WCS.Entity.Protocol.Station;
@@ -136,7 +137,7 @@ namespace WCS.WorkEngineering.Systems
                 obj.Data.PalletizingRowId2 = 0;
             }
             if (obj.Data2.CmdType == 0 && obj.Data.CmdType != 0) obj.Data.CmdType = 0;
-            if (obj.Data2.CmdType != 0 || obj.Data.CmdType != 0) return;
+            if (obj.Data2.CmdType != 0 || obj.Data.CmdType != 0) throw new Exception($"完成信号未清除:{obj.Data2.CmdType}--{obj.Data.CmdType}");
             if (obj.Data2.Status != TrussStatus.Idle) throw new Exception($"桁架处于{obj.Data2.Status.GetDescription()}");
 
             //查找所有的可用开始搬运的线体
@@ -165,6 +166,10 @@ namespace WCS.WorkEngineering.Systems
                 devList = devList.Where(x => x.Data2.Status.HasFlag(StationStatus.PH_Status) && taskCode.Contains(x.Data.TaskNumber) && !x.Data3.CmdType.HasFlag(TrussCmdType.Two)).ToList();
                 devCode = devList.Select(x => x.Entity.Code);
                 if (!devCode.Any()) throw new KnownException($"无可用放货码垛位,请检查实际有货位置的光电是否正常", LogLevelEnum.Mid);
+                else
+                {
+                    World.Log($"可用放货位:{JsonConvert.SerializeObject(devCode)}");
+                }
                 palletizingLsit = palletizingLsit.Where(x => devCode.Contains(x.PalletizingStation)).ToList(); //可以放货的目标托盘
                 //可以取货的码垛信息
                 var pickUpCode = _pickUpDevices.Select(x => x.Key.Entity.Code.ToShort());
@@ -198,7 +203,12 @@ namespace WCS.WorkEngineering.Systems
                         .Where(x => cacheLines.Any(a => a.MatCodeList == x.MatCodeList && a.Quantity == x.QtyMaxCount && a.WarehouseCode == x.WarehouseCode)); //获取可以取货的码垛信息行
 
                     //无可用行,进入下一次迭代
-                    if (!palletizingRow.Any()) continue;
+                    if (!palletizingRow.Any())
+                    {
+                        World.Log($"{palletizingInfo.Id}");
+                        continue;
+                    }
+
                     var rowIds = new List<int>();
                     //跟据缓存信息找到对应的可用取货行
                     var rowList = cacheLines.Select(x =>
@@ -260,7 +270,7 @@ namespace WCS.WorkEngineering.Systems
                 }
             });
 
-            if (palletizingRowList == null || !palletizingRowList.Any()) return;
+            if (palletizingRowList == null || !palletizingRowList.Any()) throw new KnownException($"没有可用任务", LogLevelEnum.Mid);
 
             for (var i = 0; i < palletizingRowList.Count; i++)
             {

+ 1 - 2
业务工程/分拣库/WCS.WorkEngineering/Systems/环形库/环形库码垛结束.cs

@@ -50,8 +50,7 @@ namespace WCS.WorkEngineering.Systems.环形库
                     try
                     {
                         //开始绑盘
-                        WmsApi.FinishBingPallet(cbrCode.BarCode, tasks.Select(x => x.BarCode).ToList(),
-                            obj.Entity.Code.GetWareCode(), obj.Entity.Code);
+                        WmsApi.FinishBingPallet(cbrCode.BarCode, tasks.Select(x => x.BarCode).ToList(), obj.Entity.Code.GetWareCode(), obj.Entity.Code);
                     }
                     catch (Exception e)
                     {

+ 12 - 11
业务工程/分拣库/WCS.WorkEngineering/WorkStart.cs

@@ -1,6 +1,7 @@
 using ServiceCenter;
 using ServiceCenter.SqlSugars;
 using WCS.Core;
+using WCS.Entity;
 using WCS.Entity.Protocol.BCR;
 using WCS.Entity.Protocol.RGV;
 using WCS.Entity.Protocol.Robot;
@@ -1135,17 +1136,17 @@ namespace WCS.WorkEngineering
                     {
                         case "WCSDB"://WCS基本数据库
                             SqlSugarHelper.SetDefault(connectionString.Key);
-                            //_db.CodeFirst.InitTables(typeof(WCS_PlcData));
-                            //_db.CodeFirst.InitTables(typeof(WCS_TaskInfo));
-                            //_db.CodeFirst.InitTables(typeof(WCS_TaskDtl));
-                            //_db.CodeFirst.InitTables(typeof(WCS_TaskOld));
-                            //_db.CodeFirst.InitTables(typeof(WCS_AgvTaskInfo));
-                            //_db.CodeFirst.InitTables(typeof(WCS_Palletizing));
-                            //_db.CodeFirst.InitTables(typeof(WCS_PalletizingLayer));
-                            //_db.CodeFirst.InitTables(typeof(WCS_PalletizingRow));
-                            //_db.CodeFirst.InitTables(typeof(WCS_PalletizingLoc));
-                            //_db.CodeFirst.InitTables(typeof(WCS_CacheLine));
-                            //_db.CodeFirst.InitTables(typeof(WCS_CacheLineLoc));
+                            _db.CodeFirst.InitTables(typeof(WCS_PlcData));
+                            _db.CodeFirst.InitTables(typeof(WCS_TaskInfo));
+                            _db.CodeFirst.InitTables(typeof(WCS_TaskDtl));
+                            _db.CodeFirst.InitTables(typeof(WCS_TaskOld));
+                            _db.CodeFirst.InitTables(typeof(WCS_AgvTaskInfo));
+                            _db.CodeFirst.InitTables(typeof(WCS_Palletizing));
+                            _db.CodeFirst.InitTables(typeof(WCS_PalletizingLayer));
+                            _db.CodeFirst.InitTables(typeof(WCS_PalletizingRow));
+                            _db.CodeFirst.InitTables(typeof(WCS_PalletizingLoc));
+                            _db.CodeFirst.InitTables(typeof(WCS_CacheLine));
+                            _db.CodeFirst.InitTables(typeof(WCS_CacheLineLoc));
 
                             break;