gkj vor 2 Jahren
Ursprung
Commit
a553e88a9f

+ 1 - 1
WCS.Entity/WCS_AgvTaskInfo.cs

@@ -212,6 +212,6 @@ namespace WCS.Entity
         /// 叫料
         /// </summary>
         [Description("叫料")]
-        CallMaterial = 2,
+        CallMaterial = 4,
     }
 }

+ 4 - 4
WCS.WorkEngineering/Systems/AgvSystems.cs

@@ -40,7 +40,7 @@ namespace WCS.WorkEngineering.Systems
                 SqlSugarHelper.Do(db =>
                 {
                     //获取所有未结束的AGV任务
-                    var agvTaks = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.Status <= AGVTaskStatus.MissionCompleted && v.Status > AGVTaskStatus.NewBuild && v.Station == obj.Entity.Code).SplitTable(tabs => tabs.Take(2)).ToList();
+                    var agvTaks = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.TaskType == AGVTaskType.CallMaterial && v.Status < AGVTaskStatus.MissionCompleted && v.Status > AGVTaskStatus.NewBuild && v.Station == obj.Entity.Code).SplitTable(tabs => tabs.Take(2)).ToList();
 
                     foreach (var agv in agvTaks)
                     {
@@ -65,7 +65,7 @@ namespace WCS.WorkEngineering.Systems
                 SqlSugarHelper.Do(db =>
                 {
                     //获取所有未结束的AGV任务
-                    var agvTaks = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.Status < AGVTaskStatus.MissionCompleted && v.TaskType == AGVTaskType.EnterDepot).SplitTable(tabs => tabs.Take(2)).ToList();
+                    var agvTaks = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.Status < AGVTaskStatus.MissionCompleted && v.TaskType == AGVTaskType.EnterDepot && v.Station == obj.Entity.Code).SplitTable(tabs => tabs.Take(2)).ToList();
 
                     foreach (var agv in agvTaks)
                     {
@@ -145,8 +145,8 @@ namespace WCS.WorkEngineering.Systems
 
         public override bool Select(Device dev)
         {
-            //return dev.HasFlag(DeviceFlags.巷道口);
-            return dev.Code == "1011";
+            return dev.HasFlag(DeviceFlags.巷道口);
+            //return dev.Code is "1011" or "1012";
         }
     }
 }

+ 32 - 3
WCS.WorkEngineering/Systems/DataCollectionSysyem.cs

@@ -1,7 +1,14 @@
-using System.ComponentModel;
+using Newtonsoft.Json;
+using ServiceCenter;
+using ServiceCenter.Helpers;
+using ServiceCenter.SqlSugars;
+using System.ComponentModel;
 using WCS.Core;
+using WCS.Entity;
 using WCS.Entity.Protocol.DataStructure;
+using WCS.Entity.Protocol.Station;
 using WCS.Service.Worlds;
+using WCS.WorkEngineering.Extensions;
 
 namespace WCS.Service.Systems
 {
@@ -12,15 +19,37 @@ namespace WCS.Service.Systems
     [Description("数据采集系统")]
     public class DataCollectionSysyem : ServiceSystem<bool, bool>
     {
+        public List<Station> ConvList;
+
         public DataCollectionSysyem()
         {
+            ConvList = Device.All.Where(v => v.HasProtocol(typeof(IStation523))).Select(v => new Station(v, this.World)).ToList();
         }
 
         protected override bool Do(bool obj)
         {
-            DeviceDataPack pack = new DeviceDataPack();
+            SqlSugarHelper.Do(db =>
+            {
+                DeviceDataPack pack = new DeviceDataPack();
+                pack.Frame = DateTime.Now;
+                //pack.
+
+                //byte[] bytes = System.Text.Encoding.Default.GetBytes(JsonConvert.SerializeObject(ConvList, null, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }));
+
+                var plcData = new WCS_PlcData()
+                {
+                    AddWho = "WCS",
+                    WAREHOUSE = ServiceHub.WarehouseName,
+                    CONTENT = JsonConvert.SerializeObject(ConvList, null, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }),
+                };
+
+                var a = TypeConversionHelper.SerializeRedisValue(ConvList);
+
+                //对bytes进行数据压缩
+                //plcData.CONTENT = bytes.Compress();
 
+                db.Default.Insertable(plcData).ExecuteCommand();
+            });
             return true;
         }
-    }
 }

+ 4 - 1
WCS.WorkEngineering/Systems/NoInteractionSystems.cs

@@ -152,7 +152,10 @@ namespace WCS.WorkEngineering.Systems
                                     break;
 
                                 case 2:
-
+                                    var agvRes = IwmsApi.空轮回库(wcs.MatCode, wcs.SrmStation, wcs.IsSurplus, wcs.IsRework, agv.ID, wcs.BarCode);
+                                    agv.Status = AGVTaskStatus.Confirm;
+                                    agv.AgvID = agvRes.data;
+                                    db.Default.Updateable(agv).SplitTable().ExecuteCommand();
                                     break;
 
                                 default:

+ 1 - 1
WCS.WorkEngineering/Systems/SrmSystems.cs

@@ -327,7 +327,7 @@ namespace WCS.WorkEngineering.Systems
 
         public override bool Select(Device dev)
         {
-            //return dev.Code == "SRM3";
+            //return dev.Code == "SRM2";
             return dev.HasProtocol(typeof(ISRM520));
         }
     }

+ 4 - 3
WCS.WorkEngineering/Systems/二楼出库工位处理系统.cs

@@ -11,7 +11,7 @@ using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
 namespace WCS.WorkEngineering.Systems
 {
     /// <summary>
-    /// 出库站台交互
+    /// 二楼出库工位处理系统
     /// </summary>
     [BelongTo(typeof(MainWorld))]
     [Description("二楼出库工位处理系统")]
@@ -27,10 +27,11 @@ namespace WCS.WorkEngineering.Systems
             SqlSugarHelper.Do(db =>
             {
                 var task = db.Default.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data.TaskNumber && v.Status == Entity.TaskStatus.ConveyorExecution) ?? throw new KnownException("无可执行任务", LogLevelEnum.Low);
-                var agv = db.Default.Queryable<WCS_AgvTaskInfo>().First(v => v.ID == task.AgvTaskID && v.Status == AGVTaskStatus.NewBuild) ?? throw new KnownException("未找到对应的AGV任务", LogLevelEnum.Low);
-                var res = IwmsApi.满轮出库(task.MatCode, task.AddrTo, task.ID.ToString(), task.BarCode, task.InvBarCode);
+                var agv = db.Default.Queryable<WCS_AgvTaskInfo>().SplitTable(v => v.Take(2)).First(v => v.ID == task.AgvTaskID && v.Status == AGVTaskStatus.NewBuild) ?? throw new KnownException("未找到对应的AGV任务", LogLevelEnum.Low);
+                var res = IwmsApi.满轮出库(task.MatCode, task.AddrTo, task.ID.ToString(), task.BarCode, task.InvBarCode, task.IsSurplus, task.IsRework, task.IsFast, task.Grade);
                 agv.Status = AGVTaskStatus.Confirm;
                 agv.AgvID = res.data;
+                agv.Station = obj.Entity.Code;
                 db.Default.Updateable(agv).SplitTable().ExecuteCommand();
                 task.Status = Entity.TaskStatus.AGVExecution;
                 db.Default.Updateable(task).ExecuteCommand();

+ 9 - 0
WCS.WorkEngineering/WebApi/Controllers/AgvController.cs

@@ -224,6 +224,15 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                 agvTask.Status = AGVTaskStatus.MissionCompleted;
                                 break;
 
+                            case "end": //二楼出满任务完成s
+                                agvTask.Status = AGVTaskStatus.MissionCompleted;
+                                taskInfo = db.Default.Queryable<WCS_TaskInfo>().First(v => v.AgvTaskID == agvTask.ID) ?? throw new Exception("为找找到对应WCS任务");
+                                taskInfo.Status = Entity.TaskStatus.Finish;
+                                taskInfo.AddWCS_TASK_DTL(db, "agv", "任务完成");
+                                db.Default.Updateable(taskInfo).ExecuteCommand();
+                                taskInfo.CompleteOrCancelTasks(db);
+                                break;
+
                             case "tcEnd": //机台补空任务完成
                                 agvTask.Status = AGVTaskStatus.MissionCompleted;
                                 taskInfo = db.Default.Queryable<WCS_TaskInfo>().First(v => v.AgvTaskID == agvTask.ID) ?? throw new Exception("为找找到对应WCS任务");

+ 36 - 10
WCS.WorkEngineering/WebApi/Controllers/IwmsApi.cs

@@ -27,7 +27,20 @@ namespace WCS.WorkEngineering.WebApi.Controllers
             }
         }
 
-        public static zhongTianIntoStockResponse 满轮出库(string matCode, string wbCode, string taskNo, string rfid, string matNo)
+        /// <summary>
+        ///  满轮出库
+        /// </summary>
+        /// <param name="matCode">物料编号</param>
+        /// <param name="wbCode">取货点位置</param>
+        /// <param name="taskNo">任务号</param>
+        /// <param name="rfid">RFID</param>
+        /// <param name="matNo">材料号</param>
+        /// <param name="isSurplus">改手盘标记</param>
+        /// <param name="isRework">返工标记</param>
+        /// <param name="matFast">快投标记</param>
+        /// <param name="gradeCode">质量等级</param>
+        /// <returns></returns>
+        public static zhongTianIntoStockResponse 满轮出库(string matCode, string wbCode, string taskNo, string rfid, string matNo, bool isSurplus, bool isRework, bool matFast, string gradeCode)
         {
             return zhongTianIntoStock(new zhongTianIntoStockRequest()
             {
@@ -39,11 +52,11 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                 wetIntoSpec = false,
                 wetIntoReturn = false,
                 wetSpecWbCode = "0",
-                isSurplus = "0",
-                isRework = "0",
+                isSurplus = isSurplus == false ? "0" : "1",
+                isRework = isRework == false ? "0" : "1",
                 spoolNo = rfid,
-                gradeCode = "",
-                matFast = "0",
+                gradeCode = gradeCode,
+                matFast = matFast == false ? "0" : "1",
                 matNo = matNo,
                 orderProcessLenOut = "0",
                 taskNo = $"RK{taskNo}",
@@ -58,10 +71,23 @@ namespace WCS.WorkEngineering.WebApi.Controllers
             //});
         }
 
-        //public static zhongTianIntoStockResponse 余料入库(string matCode, string wbCode)
-        //{
-        //    //return zhongTianIntoStock(matCode, )
-        //}
+        public static zhongTianOutStockResponse 空轮回库(string matCode, string wbCode, bool isSurplus, bool isRework, int taskNo, string RFID)
+        {
+            return zhongTianOutStock(new zhongTianOutStockRequest()
+            {
+                matCode = matCode,
+                workAreaCode = wbCode,
+                outSpoolFull = "0",
+                intoEmpty = false,
+                wetOut = "",
+                wetOutReturn = true,
+                spoolNo = RFID,
+                isSurplus = isSurplus == false ? "0" : "1",
+                isRework = isRework == false ? "0" : "1",
+                reqCode = Guid.NewGuid().ToString().Replace("-", ""),
+                taskNo = $"CK{wbCode}{taskNo}"
+            });
+        }
 
         public static zhongTianIntoStockResponse zhongTianIntoStock(zhongTianIntoStockRequest req)
         {
@@ -75,7 +101,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
 
         public static zhongTianOutStockResponse zhongTianOutStock(zhongTianOutStockRequest req)
         {
-            var res = APICaller.CallApi2<zhongTianOutStockResponse>(IwmsUrl + "/databus/publish/zhongTianIntoStock", req);
+            var res = APICaller.CallApi2<zhongTianOutStockResponse>(IwmsUrl + "/databus/publish/zhongTianOutStock", req);
             if (res.code != AgvResponseCode.Success)
             {
                 throw new KnownException(res.message, LogLevelEnum.High);

+ 7 - 1
WCS.WorkEngineering/WebApi/Models/AGV/Request/zhongTianOutStockRequest.cs

@@ -1,10 +1,16 @@
 namespace WCS.WorkEngineering.WebApi.Models.AGV.Request
 {
+ 
     /// <summary>
     ///  合金二楼下发AGV出库任务
     /// </summary>
     public class zhongTianOutStockRequest
     {
+        /// <summary>
+        /// 请求编号
+        /// </summary>
+        public string reqCode { get; set; }
+
         /// <summary>
         /// 物料编码
         /// </summary>
@@ -33,7 +39,7 @@
         /// <summary>
         /// 湿拉退料出库标记
         /// </summary>
-        public string wetOutReturn { get; set; }
+        public bool wetOutReturn { get; set; }
 
         /// <summary>
         /// 改手盘标记

+ 1 - 1
WCS.WorkEngineering/WorkStart.cs

@@ -126,7 +126,7 @@ namespace WCS.WorkEngineering
                 new RouteInfo("1012", new string[] { "TY1" }),
                 new RouteInfo("1022", new string[] { "TY1" }),
                 new RouteInfo("1014", new string[] { "TY2" }),
-                new RouteInfo("1025", new string[] { "TY2" }),
+                new RouteInfo("1024", new string[] { "TY2" }),
                 new RouteInfo("1016", new string[] { "TY3" }),
                 new RouteInfo("1026", new string[] { "TY3" })
             };