海波 张
18 小时以前 60cbd8c8e6472c129c440fe37040d1dc3e99f877
dispatch/WcsTask.cs
@@ -53,18 +53,14 @@
                        isFu = "1";
                    }
                }
                var workFlow = TaskHelper.selectWorkFlowByType(mst.N_TYPE.ToString(), mst.TOOLSTYPE);
                if (workFlow != null)
                {
                    if (workFlow.INOROUT.Contains("入库"))
                    if (mst.S_TYPE.Contains("入库")|| mst.S_TYPE.Contains("回库"))
                    {
                        Type = "1";
                    }
                    if (workFlow.INOROUT.Contains("出库"))
                    if (mst.S_TYPE.Contains("出库"))
                    {
                        Type = "2";
                        var count = TaskHelper.GetConnectionTask(mst.S_END_LOC);
@@ -75,7 +71,7 @@
                    }
                }
                if (mst.S_CNTR_CODE.Contains("KJZ"))
                {
@@ -749,8 +745,100 @@
                                }
                            }
                            if (model.code == "2") {
                            if (model.code == "2") {
                                var work = TaskHelper.GetWmsWork(transportTask.S_OP_CODE);
                                if (work==null)
                                {
                                    LogHelper.Info($"未查询到{transportTask.S_OP_CODE}对应的作业", "Wcs任务执行通知");
                                    throw new Exception("未查询到对应的作业");
                                }
                                var workFlow = TaskHelper.selectWorkFlowByType(work.N_TYPE.ToString(), work.TOOLSTYPE);
                                if (workFlow == null)
                                {
                                    LogHelper.Info($"外形检测失败,没找到对应作业流程", "Wcs任务执行通知");
                                    throw new Exception($"外形检测失败,没找到对应作业流程");
                                }
                                //查找终点
                                var endList = LocationHelper.GetAllLocList1(workFlow.ERRORAREA);
                                //var end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ERRORAREA,workFlow.ROADWAY);
                                var end = LocationHelper.FindEndcolByLoc(endList, workFlow.ERRORAREA);
                                LogHelper.Info($"外形检测失败失败下发异常终点信息" + JsonConvert.SerializeObject(end), "Wcs任务执行通知");
                                if (end == null)
                                {
                                    LogHelper.Info($"外形检测失败失败下发任务失败,终点库区{workFlow.ERRORAREA},没找到终点", "Wcs任务执行通知");
                                    throw new Exception($"外形检测失败失败终点库区{workFlow.ERRORAREA},没找到终点");
                                }
                                LocationHelper.LockLoc(end.S_CODE, "入库锁", 1);
                                var connectionLoc = LocationHelper.GetLoc(work.CONNECTION.Replace("R", "C"));
                                if (connectionLoc==null)
                                {
                                    LogHelper.Info($"未查询到{work.CONNECTION.Replace("R", "C")}对应的接驳位", "Wcs任务执行通知");
                                    throw new Exception("未查询到对应的出库接驳位");
                                }
                                var connection = connectionLoc.S_CODE;
                                var operation = new WmsWork
                                {
                                    // 作业号
                                    S_CODE = TaskHelper.GenerateTaskNo(),
                                    // 作业类型
                                    N_TYPE = 99,
                                    // 作业类型
                                    S_TYPE = work.S_TYPE.Replace("入","出"),
                                    // 起点货位
                                    S_START_LOC = work.CONNECTION,
                                    // 起点库区编码
                                    S_START_AREA = work.CONNECTION_AREA,
                                    //起点库区名称
                                    S_START_AREA_NAME = work.CONNECTION_AREA,
                                    //接驳位
                                    CONNECTION = connection,
                                    //接驳库区名称
                                    CONNECTION_AREA = connectionLoc.S_AREA_Name,
                                    // 终点货位
                                    S_END_LOC = end.S_CODE,
                                    // 终点库区编码
                                    S_END_AREA = end.S_AREA_CODE,
                                    //终点库区名称
                                    S_END_AREA_NAME = end.S_AREA_Name,
                                    // 容器编码
                                    S_CNTR_CODE = work.S_CNTR_CODE,
                                    // 作业定义名称
                                    S_OP_DEF_NAME = workFlow.FLOWNAME,
                                    //优先级
                                    N_PRIORITY = work.N_PRIORITY,
                                    //工装类型
                                    TOOLSTYPE = work.TOOLSTYPE
                                };
                                //创建作业
                                if (WMSHelper.CreateWmsWork(operation))
                                {
                                    if (connection != "")
                                    {
                                        LocationHelper.LockLoc(operation.S_START_LOC, "出库锁", 2);
                                        LocationHelper.LockLoc(operation.S_END_LOC, "入库锁", 1);
                                        LocationHelper.LockLoc(operation.CONNECTION, "入库锁", 1);
                                    }
                                    LogHelper.Info($"异常出库作业创建成功{operation.S_CODE}", "Mes任务下发");
                                }
                                else
                                {
                                    LogHelper.Info($"异常出库任务下发创建作业失败", "Mes任务下发");
                                    throw new Exception($"异常出库任务下发创建作业失败");
                                }
                            }