海波 张
10 天以前 121a380d651097586384ee0ac70943ce1fc13583
process/TaskProcess.cs
@@ -353,10 +353,9 @@
                        {
                            endList = LocationHelper.GetAllLocList1(workFlow.ENDAREA);
                        }
                        balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
                        balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available);
@@ -367,7 +366,7 @@
                                //LogHelper.Info($"改道安全交互item信息" + JsonConvert.SerializeObject(item), "改道安全交互");
                                foreach (var item1 in balanceConnectionList)
                                {
                                    if (item1.CONNEC_ROADWAY == item.N_ROADWAY && item1.N_CURRENT_NUM < 2)
                                    if (item1.CONNEC_ROADWAY == item.N_ROADWAY)
                                    {
                                        connection = item1;
                                      
@@ -383,6 +382,7 @@
                                }
                            }
                        }
                        if (connection == null)
                        {
@@ -523,17 +523,34 @@
                if (mst.S_TYPE.Contains("出库"))
                {
                    var wcsTask = TaskHelper.GetTaskByWork("wcs", mst.S_OP_CODE);
                    if (wcsTask == null) {
                        LogHelper.Info($"推送任务{mst.S_CODE},没找到作业:{mst.S_OP_CODE}对应的出库任务", "NDC");
                    //查找对应作业,是接驳位就查询对应立库任务
                    var wmsWork = TaskHelper.GetWmsWork(mst.S_OP_CODE);
                    if (wmsWork==null)
                    {
                        LogHelper.Info($"推送任务{mst.S_CODE},没找到作业:{mst.S_OP_CODE}", "NDC");
                        return false;
                    }
                    if (wcsTask.S_B_STATE=="未执行")
                    if (!string.IsNullOrEmpty(wmsWork.CONNECTION))
                    {
                        LogHelper.Info($"推送任务{mst.S_CODE},对应的Wcs出库任务未执行,暂不推送", "NDC");
                        return false;
                        var wcsTask = TaskHelper.GetTaskByWork("wcs", mst.S_OP_CODE);
                        if (wcsTask == null)
                        {
                            LogHelper.Info($"推送任务{mst.S_CODE},没找到作业:{mst.S_OP_CODE}对应的出库任务", "NDC");
                            return false;
                        }
                        if (wcsTask.S_B_STATE == "未执行")
                        {
                            LogHelper.Info($"推送任务{mst.S_CODE},对应的Wcs出库任务未执行,暂不推送", "NDC");
                            return false;
                        }
                    }
                    //接驳位两个agv任务,a任务取货完成 推送b任务
                }
@@ -755,6 +772,13 @@
                        LogHelper.Info("查询到该工装托盘码已经绑定了物料信息", "物料绑定解绑");
                        throw new Exception("查询到该工装托盘码已经绑定了物料信息");
                    }
                    var Tray = db.Queryable<Container>().Where(e => e.S_CODE == model.TOOLS_NO).ToList();
                    if (Tray.Count() > 0)
                    {
                        LogHelper.Info("查询到该工装托盘码已经绑定了容器信息", "物料绑定解绑");
                        throw new Exception("查询到该工装托盘码已经绑定了容器信息");
                    }
                    var Locations = db.Queryable<Location>().Where(e => e.S_CODE == model.LOCATION_CODE)?.First();
                    if (Locations == null)
                    {
@@ -905,7 +929,7 @@
            {
                db.RollbackTran();
                LogHelper.Info("物料绑定解绑异常:" + e.Message, "物料绑定解绑");
                result.errMsg = "物料绑定解绑异常";
                result.errMsg = "物料绑定解绑异常" + e.Message;
                result.errCode = 1;
                result.success = false;
                return result;
@@ -1482,72 +1506,114 @@
                    {
                        //正式代码,调用接口寻找可用接驳位
                        var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
                        var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
                        if (usableConnectionList != null && usableConnectionList.code == "0")
                        //var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
                        //var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
                        //if (usableConnectionList != null && usableConnectionList.code == "0")
                        //{
                        //    var balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available);
                        //    LogHelper.Info($"ZCSendTask入库任务下发寻找可用接驳位" + JsonConvert.SerializeObject(balanceConnectionList), "Mes任务下发");
                        //    if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2")
                        //    {
                        //        //满托入
                        //        balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
                        //        if (TOOLSTYPE == "25" || TOOLSTYPE == "35") {
                        //            LogHelper.Info($"ZCSendTask入库任务工装是二合一库,需要物料均衡", "Mes任务下发");
                        //            balanceLocList = LocationHelper.RoadWayBalance1ByItem(balanceLocList, model.PROD_NO);
                        //        }
                        //    }
                        //    else if (workFlow.FLOWCODE == "3")
                        //    {
                        //        //空托入立库区
                        //        cntrCount = 0;
                        //        LogHelper.Info($"ZCSendTask入库任务,寻找立库区空货位", "Mes任务下发");
                        //        balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
                        //    }
                        //    LogHelper.Info($"ZCSendTask入库任务下发寻找终点数量{balanceLocList.Count}", "Mes任务下发");
                        //    foreach (var item in balanceLocList)
                        //    {
                        //        if (item.S_LOCK_STATE == "无" && item.N_CURRENT_NUM == 0)
                        //        {
                        //           // LogHelper.Info($"ZCSendTask入库任务下发item信息" + JsonConvert.SerializeObject(item), "Mes任务下发");
                        //            foreach (var item1 in balanceConnectionList)
                        //            {
                        //                if (item1.CONNEC_ROADWAY == item.N_ROADWAY)
                        //                {
                        //                    connection = item1.S_CODE;
                        //                    connectionArea = item1.S_AREA_Name;
                        //                    end = item;
                        //                    LogHelper.Info($"ZCSendTask入库任务下发寻找到可用接驳位{connection}", "Mes任务下发");
                        //                    break;
                        //                }
                        //            }
                        //            if (end!=null)
                        //            {
                        //                LogHelper.Info($"ZCSendTask入库任务下发寻找到终点{end.S_CODE}", "Mes任务下发");
                        //                break;
                        //            }
                        //        }
                        //    }
                        //    if (connection == "")
                        //    {
                        //        LogHelper.Info($"ZCSendTask入库任务下发没找到接驳位", "Mes任务下发");
                        //        throw new Exception($"ZCSendTask入库任务下发没找到接驳位");
                        //    }
                        //}
                        //else
                        //{
                        //    LogHelper.Info($"ZCSendTask入库任务下发寻找接驳位接口失败", "Mes任务下发");
                        //    throw new Exception($"ZCSendTask入库任务下发寻找接驳位接口失败");
                        //}
                        if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2")
                        {
                            var balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available);
                            LogHelper.Info($"ZCSendTask入库任务下发寻找可用接驳位" + JsonConvert.SerializeObject(balanceConnectionList), "Mes任务下发");
                            //满托入
                            if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2")
                            if (TOOLSTYPE == "25" || TOOLSTYPE == "35")
                            {
                                //满托入
                                balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
                                if (TOOLSTYPE == "25" || TOOLSTYPE == "35") {
                                    LogHelper.Info($"ZCSendTask入库任务工装是二合一库,需要物料均衡", "Mes任务下发");
                                    balanceLocList = LocationHelper.RoadWayBalance1ByItem(balanceLocList, model.PROD_NO);
                                }
                                LogHelper.Info($"ZCSendTask入库任务工装是二合一库,需要物料均衡", "Mes任务下发");
                                end = LocationHelper.FindBalanceEndcolByLocListItem(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no, model.PROD_NO);
                            }
                            else if (workFlow.FLOWCODE == "3")
                            {
                                //空托入立库区
                                cntrCount = 0;
                                LogHelper.Info($"ZCSendTask入库任务,寻找立库区空货位", "Mes任务下发");
                                balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
                            else {
                                end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no);
                            }
                            LogHelper.Info($"ZCSendTask入库任务下发寻找终点数量{balanceLocList.Count}", "Mes任务下发");
                            foreach (var item in balanceLocList)
                            {
                                if (item.S_LOCK_STATE == "无" && item.N_CURRENT_NUM == 0)
                                {
                                   // LogHelper.Info($"ZCSendTask入库任务下发item信息" + JsonConvert.SerializeObject(item), "Mes任务下发");
                                    foreach (var item1 in balanceConnectionList)
                                    {
                                        if (item1.CONNEC_ROADWAY == item.N_ROADWAY && item1.N_CURRENT_NUM < 2)
                                        {
                                            connection = item1.S_CODE;
                                            connectionArea = item1.S_AREA_Name;
                                            end = item;
                                            LogHelper.Info($"ZCSendTask入库任务下发寻找到可用接驳位{connection}", "Mes任务下发");
                                            break;
                                        }
                                    }
                                    if (end!=null)
                                    {
                                        LogHelper.Info($"ZCSendTask入库任务下发寻找到终点{end.S_CODE}", "Mes任务下发");
                                        break;
                                    }
                                }
                            }
                            if (connection == "")
                            {
                                LogHelper.Info($"ZCSendTask入库任务下发没找到接驳位", "Mes任务下发");
                                throw new Exception($"ZCSendTask入库任务下发没找到接驳位");
                            }
                        }
                        else
                        else if (workFlow.FLOWCODE == "3")
                        {
                            LogHelper.Info($"ZCSendTask入库任务下发寻找接驳位接口失败", "Mes任务下发");
                            throw new Exception($"ZCSendTask入库任务下发寻找接驳位接口失败");
                            //空托入立库区
                            cntrCount = 0;
                            LogHelper.Info($"ZCSendTask入库任务,寻找立库区空货位", "Mes任务下发");
                            end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no);
                        }
                        if (end == null)
                        {
                            LogHelper.Info($"ZCSendTask入库任务{model.task_no}下发失败,终点库区{workFlow.ENDAREA},没找到终点巷道或接驳位不可用", "Mes任务下发");
                            throw new Exception($"{model.task_no}下发失败终点库区{workFlow.ENDAREA},没找到终点,巷道或接驳位不可用");
                        }
                        var jb = LocationHelper.GetConnectionByEnd(workFlow.CONNECTION, end.N_ROADWAY);
                        if (jb==null)
                        {
                            LogHelper.Info($"ZCSendTask入库任务下发库区{workFlow.CONNECTION},巷道{end.N_ROADWAY},没找到接驳位", "Mes任务下发");
                            throw new Exception($"ZCSendTask入库任务下发库区{workFlow.CONNECTION},巷道{end.N_ROADWAY},没找到接驳位");
                        }
                        connection = jb.S_CODE;
                        connectionArea = jb.S_AREA_Name;
                    }
                    else {
                        if (workFlow.FLOWCODE == "3")
@@ -1575,16 +1641,14 @@
                        }
                     }
                    LogHelper.Info($"ZCSendTask入库任务下发终点信息" + JsonConvert.SerializeObject(end), "Mes任务下发");
                    if (end == null) {
                        LogHelper.Info($"ZCSendTask入库任务下发失败,终点库区{workFlow.ENDAREA},没找到终点", "Mes任务下发");
                        throw new Exception($"终点库区{workFlow.ENDAREA},没找到终点");
                        LogHelper.Info($"ZCSendTask入库任务{model.task_no}下发失败,终点库区{workFlow.ENDAREA},没找到终点", "Mes任务下发");
                        throw new Exception($"{model.task_no}下发失败终点库区{workFlow.ENDAREA},没找到终点");
                    }
                    //添加托盘物料关联表
                    if (cntrCount != 0)
@@ -1932,7 +1996,7 @@
                        var balanceConnectionList = LocationHelper.GetBalanceConnectionList(connectionList);
                        foreach (var item in balanceConnectionList)
                        {
                            if (item.loc.N_CURRENT_NUM < 2 && item.loc.CONNEC_ROADWAY==start.N_ROADWAY)
                            if (item.loc.CONNEC_ROADWAY==start.N_ROADWAY)
                            {
                                connection = item.loc.S_CODE;
                                connectionArea = item.loc.S_AREA_Name;
@@ -2018,8 +2082,6 @@
                    LogHelper.Info("ZCSendTask出库任务下发失败,Task_type不等于1或2", "Mes任务下发");
                    throw new Exception("Task_type不等于1或2");
                }
            }
            catch (Exception ex)