海波 张
2025-05-16 38a9baa41316a3f834b67f0334ec001abeeede07
dispatch/WcsTask.cs
@@ -262,7 +262,7 @@
                LogHelper.Info("Wcs下发任务异常" + ex.Message, "Wcs下发任务");
                return result;
            }
            return result;
        }
        /// <summary>
        /// Wcs满托入和空托出
@@ -360,45 +360,55 @@
                        var endList2 = LocationHelper.GetAllLocList1(workFlow.ERRORAREA);
                        end1 = LocationHelper.FindEndcolByLoc(endList2, workFlow.ERRORAREA);
                        LogHelper.Info($"ZcWcsInWorkArea一段任务入异常库区终点信息" + JsonConvert.SerializeObject(end1), "Wcs下发任务");
                        if (end1 == null)
                        {
                            LogHelper.Info($"ZcWcsInWorkArea任务下发失败,终点库区{workFlow.ERRORAREA},没找到终点", "Wcs下发任务");
                            throw new Exception($"终点库区{workFlow.ERRORAREA},没找到终点");
                        }
                    }
                    else {
                        end1 = LocationHelper.FindEndcolByLoc(endList1, workFlow.ENDAREA);
                        LogHelper.Info($"ZcWcsInWorkArea一段任务入三层货架终点信息" + JsonConvert.SerializeObject(end1), "Wcs下发任务");
                        if (end1 == null)
                        {
                            LogHelper.Info($"ZcWcsInWorkArea任务下发失败,终点库区{workFlow.ENDAREA},没找到终点", "Wcs下发任务");
                            throw new Exception($"终点库区{workFlow.ENDAREA},没找到终点");
                        }
                    }
                    LogHelper.Info($"ZcWcsInWorkArea任务下发终点信息" + JsonConvert.SerializeObject(end1), "Wcs下发任务");
                    if (end1 == null)
                    {
                        LogHelper.Info($"ZcWcsInWorkArea任务下发失败,终点库区{workFlow.ENDAREA},没找到终点", "Wcs下发任务");
                        throw new Exception($"终点库区{workFlow.ENDAREA},没找到终点");
                    }
                    //添加托盘物料关联表
                   
                    //添加托盘 异常托盘不添加
                    if (!(model.code == "1" || model.contNo == "99")) {
                        //添加托盘物料关联表
                        CntrItemRel rel = new CntrItemRel();
                        rel.S_CNTR_CODE = model.contNo;
                        rel.PRODUCTIONDATE = DateTime.Parse(item.wrkdatetime);
                        rel.S_ITEM_CODE = item.recipe;
                        rel.F_SUM_QTY = item.zl;
                        rel.TurnCardNum = item.tmh;
                        rel.facnm = item.facnm;
                        rel.cdrub= item.cdrub;
                        rel.cdrub = item.cdrub;
                        rel.mchid = item.mchid;
                        rel.wdate = item.wdate;
                        rel.wsht = item.wsht;
                        rel.strbat = item.strbat;
                        rel.wsht = item.wsht;
                        rel.strbat = item.strbat;
                        rel.endbat = item.endbat;
                        rel.planno = item.planno;
                        rel.stage  = item.stage;
                        rel.planno = item.planno;
                        rel.stage = item.stage;
                        rel.grd = item.grd;
                        ContainerHelper.CreateCntrItem(rel);
                    //添加托盘
                    if (model.code == "1" || model.contNo == "99") {
                        Container cntr1 = new Container();
                        cntr1.S_CODE = model.contNo;
                        cntr1.C_ENABLE = "Y";
@@ -437,7 +447,13 @@
                        //优先级
                        N_PRIORITY = 1,
                        //工装类型
                        TOOLSTYPE = ""
                        TOOLSTYPE = "",
                        //起点库区名称
                        S_START_AREA_NAME = start1.S_AREA_Name,
                        //终点库区名称
                        S_END_AREA_NAME= end1.S_AREA_Name,
                        //接驳位库区名称
                        CONNECTION_AREA = ""
                    };
                    //创建作业
@@ -525,7 +541,13 @@
                        //优先级
                        N_PRIORITY = 1,
                        //工装类型
                        TOOLSTYPE = ""
                        TOOLSTYPE = "" ,
                        //起点库区名称
                        S_START_AREA_NAME = start.S_AREA_Name,
                        //终点库区名称
                        S_END_AREA_NAME = end.S_AREA_Name,
                        //接驳位库区名称
                        CONNECTION_AREA = ""
                    };
                    //创建作业
@@ -635,11 +657,12 @@
                                    TaskHelper.Fail(transportTask);
                                    TaskProcess.OperateStatus(transportTask, 7);
                                    var agvTask = newDb.Queryable<WMSTask>().Where(e => e.S_CODE == transportTask.S_OP_CODE+"_1")?.First();
                                    var agvTask = TaskHelper.GetTaskByWorkNo(transportTask.S_OP_CODE, "agv");
                                    if (agvTask == null)
                                    {
                                        LogHelper.Info($"RFID校验失败,没找到对应{transportTask.S_OP_CODE+"_1"}任务", "Wcs任务执行通知");
                                        throw new Exception($"RFID校验失败,没找到对应{transportTask.S_OP_CODE + "_1"}任务");
                                        LogHelper.Info($"RFID校验失败,没找到对应{transportTask.S_OP_CODE}的agv任务", "Wcs任务执行通知");
                                        throw new Exception($"RFID校验失败,没找到对应{transportTask.S_OP_CODE }的agv任务");
                                    }
                                    var workFlow = TaskHelper.selectWorkFlowByType(agvTask.N_TYPE.ToString(), agvTask.TOOLSTYPE);
                                  
@@ -695,7 +718,7 @@
                            TaskHelper.Fail(transportTask);
                            TaskProcess.OperateStatus(transportTask, 7);
                            LocationHelper.updateLocLock(transportTask.S_START_LOC, 4, "异常锁");
                            var agvTask = TaskHelper.GetTask(transportTask.S_OP_CODE + "_1");
                            var agvTask = TaskHelper.GetTaskByWorkNo(transportTask.S_OP_CODE, "agv");
                            if (agvTask!=null)
                            {
                                TaskHelper.Fail(agvTask);
@@ -927,62 +950,35 @@
                LogHelper.Info("查询到安全请求信号记录表已经存在数据,此次信号不下达给立库", "agv执行通知");
                return true;
            }
            if (mst.S_TYPE.Contains("入库"))
            switch (state)
            {
                 Type = "2";
                 bit = mst.S_END_LOC;
                if (state == 1103)
                {
                    Meshod = "AgvRequest";
                    bit = mst.S_END_LOC;
                }
                else if (state == 7)
                {
                    Type = "3";
                    Meshod = "AgvRequestCancel";
                }
                else if (state == 4) {
                    //申请出门
                    Type = "4";
                    Meshod = "AgvRequest";
                    bit = mst.S_END_LOC;
                }
                else
                {
                    Meshod = "Complete";
                }
            }
            else if (mst.S_TYPE.Contains("出库"))
            {
                Type = "1";
                bit = mst.S_START_LOC;
                if (state == 1101)
                {
                    Meshod = "AgvRequest";
                }
                else if (state == 7)
                {
                    Type = "3";
                    Meshod = "AgvRequestCancel";
                }
                else if (state == 3)
                {
                    //申请进门
                    Type = "3";
                    Meshod = "AgvRequest";
                case 1101:
                    Type = "1";
                    bit = mst.S_START_LOC;
                }
                else
                {
                    Meshod = "AgvRequest";
                    break;
                case 1102:
                    Type = "1";
                    bit = mst.S_START_LOC;
                    Meshod = "Complete";
                }
                    break;
                case 1103:
                    Type = "2";
                    bit = mst.S_END_LOC;
                    Meshod = "AgvRequest";
                    break;
                case 1104:
                    Type = "2";
                    bit = mst.S_END_LOC;
                    Meshod = "Complete";
                    break;
                case 7:
                    Type = "5";
                    bit = mst.S_END_LOC;
                    Meshod = "AgvRequestCancel";
                    break;
            }
            else
            {
                LogHelper.Info("除了出入库其余不需要安全请求", "agv执行通知");
                return true;
            }
@@ -1161,7 +1157,7 @@
                      var endLoc = LocationHelper.GetLocOne(task.S_END_LOC);
                       var end = newDb.Queryable<Location>().Where(a => a.S_AREA_CODE == endLoc.S_AREA_CODE && a.N_ROW == endLoc.N_ROW && a.N_COL > endLoc.N_COL && a.S_LOCK_STATE == "无" && a.N_CURRENT_NUM == 0).OrderBy(b=>b.N_COL).First();
                       var end = newDb.Queryable<Location>().Where(a => a.S_AREA_CODE == endLoc.S_AREA_CODE && a.N_ROW == endLoc.N_ROW && a.N_COL > endLoc.N_COL && a.S_LOCK_STATE == "无" && a.N_CURRENT_NUM == 0 && a.C_ENABLE=="Y").OrderBy(b=>b.N_COL).First();
                      LogHelper.Info($"Wcs放货有货寻找新终点信息" + JsonConvert.SerializeObject(end), "放货有货");