杨张扬
8 天以前 3909fbf77ad4ebc0dde600ff82710d959f74b5f4
core/WCSCore.cs
@@ -1,5 +1,6 @@
using HH.WCS.Mobox3.DoubleCoin.device;
using HH.WCS.Mobox3.DoubleCoin.dispatch;
using HH.WCS.Mobox3.DoubleCoin.models;
using HH.WCS.Mobox3.DoubleCoin.process;
using HH.WCS.Mobox3.DoubleCoin.util;
using HH.WCS.Mobox3.DoubleCoin.wms;
@@ -34,8 +35,9 @@
                }
                else if (model.state == 1012)
                {
                    Task task5 = Task.Run(() =>
                    Task task5 = Task.Run(async () =>
                    {
                        await Task.Delay(3000);//延时3秒
                        PostScanCode(model.task_no, model.forklift_no);//反馈扫码结果
                    });
                }
@@ -55,8 +57,8 @@
                }
                else
                {
                    var TN_Task = WCSHelper.GetTask(model.task_no);//根据当前model编号查询任务
                    if (TN_Task != null)
                    var tN_Task = WCSHelper.GetTask(model.task_no);//根据当前model编号查询任务
                    if (tN_Task != null)
                    {
                        if (model.state <= 8)
                        {
@@ -64,43 +66,48 @@
                            switch (model.state)
                            {
                                case 1:
                                    WCSHelper.Begin(TN_Task, model.forklift_no);//已推送的任务的状态改成执行
                                    WCSHelper.Begin(tN_Task, model.forklift_no);//已推送的任务的状态改成执行
                                    Task task4 = Task.Run(() =>
                                    {
                                        OpenScanCode(model.task_no, model.forklift_no);//开启扫码
                                    });
                                    break;
                                case 3:
                                    WCSHelper.UpdateStatus(TN_Task, "开始取货");//任务状态改成开始取货
                                    WCSHelper.UpdateStatus(tN_Task, "开始取货");//任务状态改成开始取货
                                    break;
                                case 4:
                                    WCSHelper.UpdateStatus(TN_Task, "取货完成");//任务状态改成取货完成
                                    TaskProcess.OperateStatus(TN_Task, 4);//起点容器货位解绑,解锁起点
                                    WCSHelper.UpdateStatus(tN_Task, "取货完成");//任务状态改成取货完成
                                    TaskProcess.OperateStatus(tN_Task, 4);//起点容器货位解绑,解锁起点
                                    
                                    Task task3 = Task.Run(() =>
                                    {
                                        EmptyInStackArea(TN_Task);
                                        EmptyInStackArea(tN_Task);
                                    });
                                    Task task1 = Task.Run(() =>
                                    {
                                        returnS7Ok(TN_Task);
                                        returnS7Ok(tN_Task);
                                    });
                                    Task task27 = Task.Run(() =>
                                    {
                                        SpecHelper.DeleteInventoryM(tN_Task);
                                    });
                                    break;
                                case 5:
                                    WCSHelper.UpdateStatus(TN_Task, "开始卸货");//任务状态改成开始卸货
                                    WCSHelper.UpdateStatus(tN_Task, "开始卸货");//任务状态改成开始卸货
                                    break;
                                case 6:
                                    WCSHelper.UpdateStatus(TN_Task, "卸货完成");//任务状态改成卸货完成
                                    TaskProcess.OperateStatus(TN_Task, 6);//终点容器货位绑定,解锁终点
                                    WCSHelper.UpdateStatus(tN_Task, "卸货完成");//任务状态改成卸货完成
                                    TaskProcess.OperateStatus(tN_Task, 6);//终点容器货位绑定,解锁终点
                                    Task task2 = Task.Run(() =>
                                    {
                                        if (TN_Task.S_TYPE == "空托出库入线")
                                        if (tN_Task.S_TYPE == "空托出库入线")
                                        {
                                            var ip = Settings.ProductionLines.FirstOrDefault(a => a.PointIn == TN_Task.S_END_LOC).ProductionLine_IP;
                                            var ip = Settings.ProductionLines.FirstOrDefault(a => a.PointIn == tN_Task.S_END_LOC).ProductionLine_IP;
                                            if (!Settings.S7TestMoni)
                                            {
                                                S7Helper.WriteBytes(ip, 10, 2, new byte[] { 0, 11, 1 });
@@ -110,104 +117,84 @@
                                    Task task29 = Task.Run(() =>
                                    {
                                        if (TN_Task.S_TYPE == "余料下线入库")
                                        if (tN_Task.S_TYPE == "余料下线入库")
                                        {
                                            SpecHelper.UpdateSurplusDetail(TN_Task.S_CODE);
                                            SpecHelper.UpdateSurplusDetail(tN_Task.S_CODE);
                                        }
                                    });
                                    Task task30 = Task.Run(() =>
                                    {
                                        if (TN_Task.S_TYPE.Contains("回炉"))
                                        if (tN_Task.S_TYPE.Contains("回炉"))
                                        {
                                            SpecHelper.UpdateRemeltDetail(TN_Task.S_CODE);
                                            SpecHelper.UpdateRemeltDetail(tN_Task.S_CODE);
                                        }
                                    });
                                    Task task31 = Task.Run(() =>
                                    {
                                        if (TN_Task.S_TYPE == "满托出库上线")
                                        if (tN_Task.S_TYPE == "满托出库上线")
                                        {
                                            SpecHelper.UpdateComponentDetail(TN_Task.S_CODE);
                                            SpecHelper.UpdateComponentDetail(tN_Task.S_CODE);
                                        }
                                    });
                                    Task task12 = Task.Run(() =>
                                    {
                                        if (TN_Task.S_TYPE == "PDA满托下线入库" || TN_Task.S_TYPE == "PLC满托下线入库")
                                        if (tN_Task.S_TYPE == "PDA满托下线入库" || tN_Task.S_TYPE == "PLC满托下线入库")
                                        {
                                            SpecHelper.UpdateComponentDetail(TN_Task.S_CODE);
                                            SpecHelper.UpdateComponentDetail(tN_Task.S_CODE);
                                        }
                                    });
                                    Task task19 = Task.Run(() =>
                                    {
                                        if (TN_Task.S_END_AREA == Settings.Areas[2])
                                        if (tN_Task.S_END_AREA == Settings.Areas[1])
                                        {
                                            SpecHelper.UpdateInventoryM_RuKu(TN_Task.S_CNTR_CODE);
                                            SpecHelper.UpdateInventoryM_RuKu(tN_Task.S_CNTR_CODE);
                                        }
                                        else
                                        {
                                            LogHelper.Info($"更新WMS库存明细的入库时间跳过,TN_Task.S_END_AREA: {tN_Task.S_END_AREA }不等于 Settings.Areas[1]:{Settings.Areas[1]}");
                                        }
                                    });
                                    break;
                                case 2:
                                    WCSHelper.End(TN_Task);//任务状态改成结束
                                    WCSHelper.End(tN_Task);//任务状态改成结束
                                    Task task16 = Task.Run(() =>
                                    {
                                        SpecHelper.RestEndLoc(tN_Task);
                                    });
                                    break;
                                case 7:
                                    Task task10 = Task.Run(() =>
                                    {
                                        if (TN_Task.S_TYPE == "满托下线入库")
                                        {
                                            TaskProcess.OperateStatus(TN_Task, 7);//异常处理
                                        }
                                        else if(TN_Task.S_TYPE == "满托出库上线")
                                        {
                                            WCSHelper.Fail(TN_Task);//任务状态改成错误
                                            LocationHelper.UnLockLoc(TN_Task.S_END_LOC);
                                            if (!WCSHelper.CheckActionRecordExist(TN_Task.S_CODE, 4))
                                            {
                                                LocationHelper.UnLockLoc(TN_Task.S_START_LOC);
                                            }
                                        }
                                        WCSHelper.CancleTaskInfo(tN_Task);
                                    });
                                    break;
                                case 8:
                                    Task task11 = Task.Run(() =>
                                    var res = NDCApi.CancelOrder(tN_Task.S_CODE);
                                    if (res != null && (res.err_code == 50002 || res.err_code == 0))
                                    {
                                        if (TN_Task.S_TYPE == "满托下线入库")
                                        LogHelper.Info($"异常和取消操作 请求结果成功{res}");
                                        Task task8 = Task.Run(() =>
                                        {
                                            var res = NDCApi.CancelOrder(TN_Task.S_CODE);
                                            if (res != null && (res.err_code ==50002 || res.err_code == 0))
                                            {
                                                TaskProcess.OperateStatus(TN_Task, 7);//异常处理
                                            }
                                            else
                                            {
                                                LogHelper.Info($"异常和取消操作 请求结果失败{res}");
                                            }
                                        }
                                        else
                                        {
                                            var res = NDCApi.CancelOrder(TN_Task.S_CODE);
                                            if (res != null && (res.err_code == 50002 || res.err_code == 0))
                                            {
                                                WCSHelper.Fail(TN_Task);//任务状态改成错误
                                                LocationHelper.UnLockLoc(TN_Task.S_END_LOC);
                                                if (!WCSHelper.CheckActionRecordExist(TN_Task.S_CODE, 4))
                                                {
                                                    LocationHelper.UnLockLoc(TN_Task.S_START_LOC);
                                                }
                                            }
                                            else
                                            {
                                                LogHelper.Info($"异常和取消操作 请求结果失败{res}");
                                            }
                                        }
                                    });
                                            WCSHelper.CancleTaskInfo(tN_Task);
                                        });
                                    }
                                    else
                                    {
                                        LogHelper.Info($"异常和取消操作 请求结果失败{res}");
                                    }
                                    break;
                            }
                            WCSHelper.AddActionRecord(model.task_no, model.state, model.forklift_no, model.ext_data);
@@ -497,7 +484,6 @@
                {
                    //推送成功
                    LogHelper.Info($"NDC反馈扫码结果成功,扫码结果:{TcpServer.saoMa[agv.ScanAddress].ToString()}");
                }
                else
                {