海波 张
2025-05-19 a99ceecce8c9a2521ac1fc167f4eff764cbdb123
process/TaskProcess.cs
@@ -124,10 +124,10 @@
                    return;
                }
                var wcsTask = TaskHelper.GetTask(mst.S_OP_CODE + "_2");
                var wcsTask = TaskHelper.GetTaskByWorkNo(mst.S_OP_CODE,"wcs");
                if (wcsTask == null)
                {
                    LogHelper.Info($"判断巷道可用失败,没找到对应{mst.S_OP_CODE + "_2"}任务", "改道安全交互");
                    LogHelper.Info($"判断巷道可用失败,没找到对应{mst.S_OP_CODE}的wcs任务", "改道安全交互");
                    return;
                }
                //判断空托缓存、接驳位和巷道是否可用 不可用需要改道
@@ -138,8 +138,8 @@
                //开关关门申请
                DeviceProcess.Door(mst, forkliftNo, state);
            }
            else if (state == 1013) {
                LogHelper.Info($"等待交互,任务号={mst.S_CODE},卸货交管成功,修改参数", "安全交互");
            else if (state == 1002) {
                LogHelper.Info($"等待交互,任务号={mst.S_CODE}", "安全交互");
                //等待rfid校验
                var rfidFlag = TaskHelper.GetRfid(mst.S_CODE);
@@ -289,7 +289,7 @@
                        foreach (var item in usableConnectionList.available)
                        {
                            var con = LocationHelper.GetLoc(item);
                            if (con.S_CODE.Contains(task.S_END_LOC) && con.C_ENABLE=="Y")
                            if (con.S_CODE.Contains(task.S_END_LOC))
                            {
                                flag = false;
@@ -791,8 +791,8 @@
            try
            {
                var task = TaskHelper.GetTask(model.task_no + "_1");
                var wcsTask = TaskHelper.GetTask(model.task_no + "_2");
                var task = TaskHelper.GetTaskByWorkNo(model.task_no, "agv");
                var wcsTask = TaskHelper.GetTaskByWorkNo(model.task_no,"wcs");
                if (task != null && wcsTask != null)
                {
                    if (task.S_B_STATE.Trim() == "未执行")
@@ -856,7 +856,7 @@
                else
                {
                    result.errCode = 1;
                    result.errMsg = "任务不存在";
                    result.errMsg = $"{model.task_no}任务不存在";
                    result.success = false;
                }
            }
@@ -1280,6 +1280,9 @@
                    //接驳位
                    var connection = "";
                    //接驳位库区名称
                    var connectionArea = "";
                    //如果需要下发wcs立库,则需要寻找可用接驳位
                    if (workFlow.SENDWCS == "Y") {
@@ -1305,13 +1308,16 @@
                        var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
                        if (usableConnectionList != null && usableConnectionList.code == "0")
                        {
                            foreach (var item in usableConnectionList.available)
                            //根据接驳位任务数量获取均衡接驳位集合优先任务数少的接驳位
                            var balanceConnectionList =  LocationHelper.GetBalanceConnectionList(usableConnectionList.available);
                            foreach (var item in balanceConnectionList)
                            {
                                var con = LocationHelper.GetLoc(item);
                                if (con.N_CURRENT_NUM < 2 && con.C_ENABLE == "Y")
                                if (item.loc.N_CURRENT_NUM<2)
                                {
                                    connection = con.S_CODE;
                                    connection = item.loc.S_CODE;
                                    connectionArea = item.loc.S_AREA_Name;
                                    LogHelper.Info($"ZCSendTask入库任务下发寻找到可用接驳位{connection}", "Mes任务下发");
                                    break;
                                }
                            }
                        }
@@ -1381,10 +1387,10 @@
                    }
                    LogHelper.Info($"ZCSendTask任务下发终点信息" + JsonConvert.SerializeObject(end), "Mes任务下发");
                    LogHelper.Info($"ZCSendTask入库任务下发终点信息" + JsonConvert.SerializeObject(end), "Mes任务下发");
                    if (end == null) {
                        LogHelper.Info($"ZCSendTask任务下发失败,终点库区{workFlow.ENDAREA},没找到终点", "Mes任务下发");
                        LogHelper.Info($"ZCSendTask入库任务下发失败,终点库区{workFlow.ENDAREA},没找到终点", "Mes任务下发");
                        throw new Exception($"终点库区{workFlow.ENDAREA},没找到终点");
                    }
@@ -1482,8 +1488,13 @@
                        //优先级
                        N_PRIORITY = model.Priority,
                        //工装类型
                        TOOLSTYPE = TOOLSTYPE
                        TOOLSTYPE = TOOLSTYPE,
                        //起点库区名称
                        S_START_AREA_NAME = start.S_AREA_Name,
                        //起点库区名称
                        S_END_AREA_NAME = end.S_AREA_Name,
                        //起点库区名称
                        CONNECTION_AREA = connectionArea,
                    };
                    //创建作业
@@ -1508,6 +1519,10 @@
                    //接驳位
                    var connection = "";
                    //接驳位库区
                    var connectionArea = "";
                    //查找给定终点
                    var end = LocationHelper.GetLoc(model.Location_To);
@@ -1534,6 +1549,19 @@
                        else {
                            //根据制品编号寻找立库区对应物料托盘
                            start = LocationHelper.FindStartcolByLoclistAndItem(strrtList, model.PROD_NO, workFlow.STARTAREA, workFlow.ROADWAY);
                            if (start==null)
                            {
                                var itemFlag = LocationHelper.FindStartcolByLoclistAndItemFlag(strrtList, model.PROD_NO, workFlow.STARTAREA);
                                LogHelper.Info($"ZCSendTask满托出库任务没找到起点,校验是否有库存但是设备报警{itemFlag}", "Mes任务下发");
                                if (itemFlag)
                                {
                                    result.errMsg = "满托出库作业有库存但设备报警";
                                    result.errCode = 2001;
                                    result.success = true;
                                    return result;
                                }
                            }
                        }
@@ -1541,6 +1569,19 @@
                    else if (workFlow.FLOWCODE == "7") {
                        //寻找立库区空托
                        start = LocationHelper.FindStartcolByLoclistAndcntr(strrtList, workFlow.STARTAREA);
                        if (start == null)
                        {
                            var itemFlag = LocationHelper.FindStartcolByLoclistAndcntrFlag(strrtList, workFlow.STARTAREA);
                            LogHelper.Info($"ZCSendTask空托出库任务没找到起点,校验是否有库存但是设备报警{itemFlag}", "Mes任务下发");
                            if (itemFlag)
                            {
                                result.errMsg = "空托出库作业有库存但设备报警";
                                result.errCode = 2001;
                                result.success = true;
                                return result;
                            }
                        }
                    }
@@ -1613,29 +1654,43 @@
                        //正式代码,调用接口寻找可用接驳位
                        var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
                        var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
                        if (usableConnectionList != null && usableConnectionList.code == "0")
                        //var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
                        //if (usableConnectionList != null && usableConnectionList.code == "0")
                        //{
                        //    foreach (var item in usableConnectionList.available)
                        //    {
                        //        var con = LocationHelper.GetLoc(item);
                        //        if (con.C_ENABLE == "Y" && con.N_CURRENT_NUM < 2)
                        //        {
                        //            connection = con.S_CODE;
                        //            connectionArea = con.S_AREA_Name;
                        //            LogHelper.Info($"ZCSendTask出库任务下发寻找到可用接驳位{connection}", "Mes任务下发");
                        //        }
                        //    }
                        //}
                        //else
                        //{
                        //    LogHelper.Info($"ZCSendTask出库任务下发寻找接驳位失败", "Mes任务下发");
                        //    throw new Exception($"ZCSendTask出库任务下发寻找接驳位失败");
                        //}
                        //根据接驳位任务数量获取均衡接驳位集合优先任务数少的接驳位
                        var balanceConnectionList = LocationHelper.GetBalanceConnectionList(connectionList);
                        foreach (var item in balanceConnectionList)
                        {
                            foreach (var item in usableConnectionList.available)
                            if (item.loc.N_CURRENT_NUM < 2)
                            {
                                var con = LocationHelper.GetLoc(item);
                                if (con.S_LOCK_STATE == "无" && con.N_CURRENT_NUM < 2)
                                {
                                    connection = con.S_CODE;
                                    LogHelper.Info($"ZCSendTask出库任务下发寻找到可用接驳位{connection}", "Mes任务下发");
                                }
                                connection = item.loc.S_CODE;
                                connectionArea = item.loc.S_AREA_Name;
                                LogHelper.Info($"ZCSendTask出库任务下发寻找到可用接驳位{connection}", "Mes任务下发");
                                break;
                            }
                        }
                        else
                        {
                            LogHelper.Info($"ZCSendTask出库任务下发寻找接驳位失败", "Mes任务下发");
                            throw new Exception($"ZCSendTask出库任务下发寻找接驳位失败");
                        }
                        if (connection == "")
                        {
                            LogHelper.Info($"ZCSendTask入库任务下发寻找接驳位失败", "Mes任务下发");
                            throw new Exception($"ZCSendTask入库任务下发寻找接驳位失败");
                            LogHelper.Info($"ZCSendTask出库任务下发寻找接驳位失败", "Mes任务下发");
                            throw new Exception($"ZCSendTask出库任务下发寻找接驳位失败");
                        }
                    }
@@ -1669,7 +1724,13 @@
                        //优先级
                        N_PRIORITY = model.Priority,
                        //工装类型
                        TOOLSTYPE = TOOLSTYPE
                        TOOLSTYPE = TOOLSTYPE,
                        //起点库区名称
                        S_START_AREA_NAME = start.S_AREA_Name,
                        //起点库区名称
                        S_END_AREA_NAME = end.S_AREA_Name,
                        //起点库区名称
                        CONNECTION_AREA = connectionArea
                    };
                    //创建作业
@@ -1734,9 +1795,6 @@
                result.success = false;
                return result;
            }
            return result;
        }