林豪 左 2 年 前
コミット
6fea373f80

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

@@ -28,7 +28,7 @@ namespace WCS.WorkEngineering.Systems
             {
                 var task = db.Default.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data.TaskNumber && v.Status == Entity.TaskStatus.ConveyorExecution) ?? throw new KnownException("无可执行任务", LogLevelEnum.Mid);
                 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.Mid);
-                var res = IwmsApi.满轮出库(task.MatCode, task.AddrTo, task.ID.ToString(), task.BarCode, task.InvBarCode, task.IsSurplus, task.IsRework, task.IsFast, task.Grade);
+                var res = IwmsApi.满轮出库(task.MatCode, task.AddrTo, task.ID.ToString(), task.BarCode, task.InvBarCode, task.IsSurplus, task.IsRework, task.IsFast, task.Grade, task.WorkBench);
                 agv.Status = AGVTaskStatus.Confirm;
                 agv.AgvID = res.data;
                 agv.Station = obj.Entity.Code;

+ 3 - 1
WCS.WorkEngineering/WebApi/Controllers/IwmsApi.cs

@@ -39,8 +39,9 @@ namespace WCS.WorkEngineering.WebApi.Controllers
         /// <param name="isRework">返工标记</param>
         /// <param name="matFast">快投标记</param>
         /// <param name="gradeCode">质量等级</param>
+        /// <param name="wetIntoBinCode">仓位号</param>
         /// <returns></returns>
-        public static zhongTianIntoStockResponse 满轮出库(string matCode, string wbCode, string taskNo, string rfid, string matNo, bool isSurplus, bool isRework, bool matFast, string gradeCode)
+        public static zhongTianIntoStockResponse 满轮出库(string matCode, string wbCode, string taskNo, string rfid, string matNo, bool isSurplus, bool isRework, bool matFast, string gradeCode, string wetIntoBinCode)
         {
             return zhongTianIntoStock(new zhongTianIntoStockRequest()
             {
@@ -62,6 +63,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                 taskNo = $"RK{taskNo}",
                 returnDesc = "",
                 lockFlag = "0",
+                wetIntoBinCode = wetIntoBinCode
             });
             //return zhongTianOutStock(new zhongTianOutStockRequest()
             //{

+ 180 - 218
WCS.WorkEngineering/WebApi/Controllers/WcsController.cs

@@ -1,6 +1,7 @@
 using Microsoft.AspNetCore.Mvc;
 using Newtonsoft.Json;
 using ServiceCenter;
+using ServiceCenter.Extensions;
 using ServiceCenter.Redis;
 using ServiceCenter.SqlSugars;
 using System.Net.NetworkInformation;
@@ -44,156 +45,124 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                         var task = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.ID == item).First();
                         if (task != null)
                         {
-                            SRes res = new SRes();
                             //验证wms是否能取消
-                            try
-                            {
-                                res = WmsApi.HandleTaskVerify(new List<int>() { task.ID }, 106);
-                            }
-                            catch (Exception ex)
-                            {
-                                response.ResDataList.Add(new HandleTaskResponse()
-                                {
-                                    IsSuccess = false,
-                                    TaskNo = item,
-                                    Message = ex.Message,
-                                });
-                                return;
-                            }
-                            if (res.ResCode == Models.WMS.Response.ResponseStatusCodeEnum.Sucess)
-                            {
-                                switch (task.Type)
-                                {
-                                    case TaskType.SetPlate:
-                                        if (task.Status != Entity.TaskStatus.WaitingToExecute)
-                                        {
-                                            response.ResDataList.Add(new HandleTaskResponse()
-                                            {
-                                                IsSuccess = false,
-                                                TaskNo = item,
-                                                Message = $"只能取消待执行状态组盘任务",
-                                            });
-                                            return;
-                                        }
-                                        break;
+                            SRes res = HandleTaskVerify(response, item);
+                            if (res == null) return;
 
-                                    case TaskType.EnterDepot:
-                                        if (task.Status > Entity.TaskStatus.WaitingToExecute)
+                            switch (task.Type)
+                            {
+                                case TaskType.SetPlate:
+                                    if (task.Status != Entity.TaskStatus.WaitingToExecute)
+                                    {
+                                        response.ResDataList.Add(new HandleTaskResponse()
                                         {
-                                            response.ResDataList.Add(new HandleTaskResponse()
-                                            {
-                                                IsSuccess = false,
-                                                TaskNo = item,
-                                                Message = $"只能取消待执行状态入库任务",
-                                            });
-                                            return;
-                                        }
-                                        break;
+                                            IsSuccess = false,
+                                            TaskNo = item,
+                                            Message = $"只能取消待执行状态组盘任务",
+                                        });
+                                        return;
+                                    }
+                                    break;
 
-                                    case TaskType.OutDepot:
-                                        if (task.Status != Entity.TaskStatus.WaitingToExecute)
+                                case TaskType.EnterDepot:
+                                    if (task.Status > Entity.TaskStatus.WaitingToExecute)
+                                    {
+                                        response.ResDataList.Add(new HandleTaskResponse()
                                         {
-                                            response.ResDataList.Add(new HandleTaskResponse()
-                                            {
-                                                IsSuccess = false,
-                                                TaskNo = item,
-                                                Message = $"只能取消待执行状态出库任务",
-                                            });
-                                            return;
-                                        }
-                                        break;
-
-                                    case TaskType.TransferDepot:
-                                        break;
+                                            IsSuccess = false,
+                                            TaskNo = item,
+                                            Message = $"只能取消待执行状态入库任务",
+                                        });
+                                        return;
+                                    }
+                                    break;
 
-                                    case TaskType.Delivery:
-                                        if (task.Status != Entity.TaskStatus.WaitingToExecute)
+                                case TaskType.OutDepot:
+                                    if (task.Status != Entity.TaskStatus.WaitingToExecute)
+                                    {
+                                        response.ResDataList.Add(new HandleTaskResponse()
                                         {
-                                            response.ResDataList.Add(new HandleTaskResponse()
-                                            {
-                                                IsSuccess = false,
-                                                TaskNo = item,
-                                                Message = $"只能取消待执行搬运任务",
-                                            });
-                                            return;
-                                        }
-                                        break;
+                                            IsSuccess = false,
+                                            TaskNo = item,
+                                            Message = $"只能取消待执行状态出库任务",
+                                        });
+                                        return;
+                                    }
+                                    break;
 
-                                    case TaskType.EmptyInit:
-                                        if (task.Status != Entity.TaskStatus.WaitingToExecute)
+                                case TaskType.TransferDepot:
+                                    if (task.Status > Entity.TaskStatus.WaitingToExecute)
+                                    {
+                                        response.ResDataList.Add(new HandleTaskResponse()
                                         {
-                                            response.ResDataList.Add(new HandleTaskResponse()
-                                            {
-                                                IsSuccess = false,
-                                                TaskNo = item,
-                                                Message = $"只能取消待执行状态空轮初始化任务",
-                                            });
-                                            return;
-                                        }
-                                        break;
-                                }
+                                            IsSuccess = false,
+                                            TaskNo = item,
+                                            Message = $"无法取消{task.Status.GetDescription()}的移库任务,只能取消新建/待执行的移库任务",
+                                        });
+                                        return;
+                                    }
+                                    break;
 
-                                SRes cancelRes = new SRes();
-                                //取消任务
-                                try
-                                {
-                                    cancelRes = WmsApi.CarryTaskInfo(new List<int>() { task.ID }, 106);
-                                }
-                                catch (Exception ex)
-                                {
-                                    response.ResDataList.Add(new HandleTaskResponse()
+                                case TaskType.Delivery:
+                                    if (task.Status != Entity.TaskStatus.WaitingToExecute)
                                     {
-                                        IsSuccess = false,
-                                        TaskNo = item,
-                                        Message = ex.Message,
-                                    });
-                                    return;
-                                }
+                                        response.ResDataList.Add(new HandleTaskResponse()
+                                        {
+                                            IsSuccess = false,
+                                            TaskNo = item,
+                                            Message = $"只能取消待执行搬运任务",
+                                        });
+                                        return;
+                                    }
+                                    break;
 
-                                if (cancelRes.ResCode == Models.WMS.Response.ResponseStatusCodeEnum.Sucess)
-                                {
-                                    //找到对应的AGV任务
-                                    var agv = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.ID == task.AgvTaskID).SplitTable(v => v.Take(2)).First();
-                                    if (agv != null)
+                                case TaskType.EmptyInit:
+                                    if (task.Status != Entity.TaskStatus.WaitingToExecute)
                                     {
-                                        agv.Status = AGVTaskStatus.Cancel;
-                                        agv.AgvStatus = AGVTaskStatus.Cancel;
-                                        db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                        response.ResDataList.Add(new HandleTaskResponse()
+                                        {
+                                            IsSuccess = false,
+                                            TaskNo = item,
+                                            Message = $"只能取消待执行状态空轮初始化任务",
+                                        });
+                                        return;
                                     }
-                                    //更新任务状态
-                                    task.Status = Entity.TaskStatus.Cancel;
-                                    task.EditTime = DateTime.Now;
-                                    task.EditWho = req.User;
-                                    task.ManualRemarks = req.ManualRemarks;
-                                    task.AddWCS_TASK_DTL(db, "未知", "任务取消");
-                                    db.Default.Updateable(task).ExecuteCommand();
-                                    task.CompleteOrCancelTasks(db);
-                                    response.ResDataList.Add(new HandleTaskResponse()
-                                    {
-                                        IsSuccess = true,
-                                        TaskNo = item,
-                                        Message = $"完成",
-                                    });
-                                }
-                                else
-                                {
-                                    response.ResDataList.Add(new HandleTaskResponse()
-                                    {
-                                        IsSuccess = false,
-                                        TaskNo = item,
-                                        Message = $"取消任务失败,{cancelRes.ResMsg}",
-                                    });
-                                }
+                                    break;
                             }
-                            else
+
+                            SRes cancelRes = CarryTaskInfo(response, item);
+                            if (cancelRes == null) return;
+                            //取消任务
+                            try
+                            {
+                                cancelRes = WmsApi.CarryTaskInfo(new List<int>() { task.ID }, 106);
+                            }
+                            catch (Exception ex)
                             {
                                 response.ResDataList.Add(new HandleTaskResponse()
                                 {
                                     IsSuccess = false,
                                     TaskNo = item,
-                                    Message = $"取消任务失败,{res.ResMsg}",
+                                    Message = ex.Message,
                                 });
+                                return;
+                            }
+                            //找到对应的AGV任务
+                            var agv = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.ID == task.AgvTaskID).SplitTable(v => v.Take(2)).First();
+                            if (agv != null)
+                            {
+                                agv.Status = AGVTaskStatus.Cancel;
+                                agv.AgvStatus = AGVTaskStatus.Cancel;
+                                db.Default.Updateable(agv).SplitTable().ExecuteCommand();
                             }
+                            //更新任务状态
+                            task.Status = Entity.TaskStatus.Cancel;
+                            task.EedTime = DateTime.Now;
+                            task.EditWho = req.User;
+                            task.ManualRemarks = req.ManualRemarks;
+                            task.AddWCS_TASK_DTL(db, "未知", "任务取消");
+                            db.Default.Updateable(task).ExecuteCommand();
+                            task.CompleteOrCancelTasks(db);
                         }
                         else
                         {
@@ -219,101 +188,44 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                         {
                             if (task.Type == TaskType.OutDepot)
                             {
-                                SRes res = new SRes();
-                                //验证wms是否能完成
-                                try
-                                {
-                                    res = WmsApi.HandleTaskVerify(new List<int>() { task.ID }, 99);
-                                }
-                                catch (Exception ex)
-                                {
-                                    response.ResDataList.Add(new HandleTaskResponse()
-                                    {
-                                        IsSuccess = false,
-                                        TaskNo = item,
-                                        Message = ex.Message,
-                                    });
-                                    return;
-                                }
-                                if (res.ResCode == Models.WMS.Response.ResponseStatusCodeEnum.Sucess)
-                                {
-                                    switch (task.Type)
-                                    {
-                                        case TaskType.OutDepot:
-                                            if (task.Status >= Entity.TaskStatus.Finish)
-                                            {
-                                                response.ResDataList.Add(new HandleTaskResponse()
-                                                {
-                                                    IsSuccess = false,
-                                                    TaskNo = item,
-                                                    Message = $"只能完成未完成状态的任务",
-                                                });
-                                                return;
-                                            }
-                                            break;
-                                    }
+                                SRes res = HandleTaskVerify(response, item);
+                                if (res == null) return;
 
-                                    SRes finishRes = new SRes();
-                                    //完成任务
-                                    try
-                                    {
-                                        finishRes = WmsApi.CarryTaskInfo(new List<int>() { task.ID }, 99);
-                                    }
-                                    catch (Exception ex)
-                                    {
-                                        response.ResDataList.Add(new HandleTaskResponse()
-                                        {
-                                            IsSuccess = false,
-                                            TaskNo = item,
-                                            Message = ex.Message,
-                                        });
-                                        return;
-                                    }
-
-                                    if (finishRes.ResCode == Models.WMS.Response.ResponseStatusCodeEnum.Sucess)
-                                    {
-                                        //找到对应的AGV任务
-                                        var agv = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.ID == task.AgvTaskID).SplitTable(v => v.Take(2)).First();
-                                        if (agv != null)
+                                switch (task.Type)
+                                {
+                                    case TaskType.OutDepot:
+                                        if (task.Status >= Entity.TaskStatus.Finish)
                                         {
-                                            agv.Status = AGVTaskStatus.MissionCompleted;
-                                            agv.AgvStatus = AGVTaskStatus.MissionCompleted;
-                                            db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                            response.ResDataList.Add(new HandleTaskResponse()
+                                            {
+                                                IsSuccess = false,
+                                                TaskNo = item,
+                                                Message = $"只能完成未完成状态的任务",
+                                            });
+                                            return;
                                         }
-                                        //更新任务状态
-                                        task.Status = Entity.TaskStatus.Finish;
-                                        task.EditTime = DateTime.Now;
-                                        task.EditWho = req.User;
-                                        task.ManualRemarks = req.ManualRemarks;
-                                        task.AddWCS_TASK_DTL(db, "未知", "任务完成");
-                                        db.Default.Updateable(task).ExecuteCommand();
-                                        task.CompleteOrCancelTasks(db);
-                                        response.ResDataList.Add(new HandleTaskResponse()
-                                        {
-                                            IsSuccess = true,
-                                            TaskNo = item,
-                                            Message = $"完成",
-                                        });
-                                    }
-                                    else
-                                    {
-                                        response.ResDataList.Add(new HandleTaskResponse()
-                                        {
-                                            IsSuccess = false,
-                                            TaskNo = item,
-                                            Message = $"完成任务失败,{finishRes.ResMsg}",
-                                        });
-                                    }                                   
+                                        break;
                                 }
-                                else
+
+                                SRes cancelRes = CarryTaskInfo(response, item);
+                                if (cancelRes == null) return;
+
+                                //找到对应的AGV任务
+                                var agv = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.ID == task.AgvTaskID).SplitTable(v => v.Take(2)).First();
+                                if (agv != null)
                                 {
-                                    response.ResDataList.Add(new HandleTaskResponse()
-                                    {
-                                        IsSuccess = false,
-                                        TaskNo = item,
-                                        Message = $"完成任务失败"
-                                    });
+                                    agv.Status = AGVTaskStatus.MissionCompleted;
+                                    agv.AgvStatus = AGVTaskStatus.MissionCompleted;
+                                    db.Default.Updateable(agv).SplitTable().ExecuteCommand();
                                 }
+                                //更新任务状态
+                                task.Status = Entity.TaskStatus.Finish;
+                                task.EedTime = DateTime.Now;
+                                task.EditWho = req.User;
+                                task.ManualRemarks = req.ManualRemarks;
+                                task.AddWCS_TASK_DTL(db, "未知", "任务完成");
+                                db.Default.Updateable(task).ExecuteCommand();
+                                task.CompleteOrCancelTasks(db);
                             }
                             else
                             {
@@ -326,7 +238,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                             }
                         }
                     }
-                }); 
+                });
             }
             else if (req.Type == HandleTaskTypeEnum.重新下发AGV任务)
             {
@@ -434,6 +346,56 @@ namespace WCS.WorkEngineering.WebApi.Controllers
             return response;
         }
 
+        /// <summary>
+        ///  WMS完成或取消任务验证
+        /// </summary>
+        /// <param name="sRes"></param>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public SRes? HandleTaskVerify(SRes<HandleTaskResponse> sRes, int id)
+        {
+            try
+            {
+                var res = WmsApi.HandleTaskVerify(new List<int>() { id }, 106);
+                return res;
+            }
+            catch (Exception ex)
+            {
+                sRes.ResDataList.Add(new HandleTaskResponse()
+                {
+                    IsSuccess = false,
+                    TaskNo = id,
+                    Message = ex.Message,
+                });
+                return null;
+            }
+        }
+
+        /// <summary>
+        ///  WMS完成或取消任务执行
+        /// </summary>
+        /// <param name="sRes"></param>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public SRes? CarryTaskInfo(SRes<HandleTaskResponse> sRes, int id)
+        {
+            try
+            {
+                var res = WmsApi.CarryTaskInfo(new List<int>() { id }, 106);
+                return res;
+            }
+            catch (Exception ex)
+            {
+                sRes.ResDataList.Add(new HandleTaskResponse()
+                {
+                    IsSuccess = false,
+                    TaskNo = id,
+                    Message = ex.Message,
+                });
+                return null;
+            }
+        }
+
         /// <summary>
         ///  设备信息写入接口
         /// </summary>

+ 5 - 0
WCS.WorkEngineering/WebApi/Models/AGV/Request/zhongTianIntoStockRequest.cs

@@ -94,5 +94,10 @@
         /// 是否锁定
         /// </summary>
         public string lockFlag { get; set; }
+
+        /// <summary>
+        ///  仓位号
+        /// </summary>
+        public string wetIntoBinCode { get; set; }
     }
 }