| | |
| | | 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); |
| | |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | if (mst.S_CNTR_CODE.Contains("KJZ")) |
| | | { |
| | |
| | | //任务完成 |
| | | case "2": |
| | | LogHelper.Info($"任务{taskNo}完成", "Wcs任务执行通知"); |
| | | LocationHelper.UnLockLoc(transportTask.S_START_LOC); |
| | | TaskProcess.OperateStatus(transportTask, 4); |
| | | LocationHelper.UnLockLoc(transportTask.S_END_LOC); |
| | | TaskProcess.OperateStatus(transportTask, 6); |
| | | TaskHelper.End(transportTask); |
| | | LocationHelper.CreateUpAndDown(transportTask); |
| | |
| | | LogHelper.Info($"RFID校验失败,没找到对应{transportTask.S_OP_CODE}的agv任务", "Wcs任务执行通知"); |
| | | throw new Exception($"RFID校验失败,没找到对应{transportTask.S_OP_CODE}的agv任务"); |
| | | } |
| | | |
| | | WmsTaskAction ac7 = TaskHelper.GetActionRecord(agvTask.S_CODE, "7"); |
| | | if (ac7!=null) |
| | | { |
| | | LogHelper.Info($"RFID校验失败,agv任务{agvTask.S_CODE},已经取消,请人工处理", "Wcs任务执行通知"); |
| | | throw new Exception($"RFID校验失败,agv任务{agvTask.S_CODE},已经取消,请人工处理"); |
| | | } |
| | | |
| | | var workFlow = TaskHelper.selectWorkFlowByType(agvTask.N_TYPE.ToString(), agvTask.TOOLSTYPE); |
| | | |
| | | if (workFlow == null) |
| | |
| | | throw new Exception($"RFID校验失败,通知Wcs取消任务失败"); |
| | | } |
| | | } |
| | | |
| | | if (model.code == "2") { |
| | | |
| | | TaskHelper.Fail(transportTask); |
| | | TaskProcess.OperateStatus(transportTask, 7); |
| | | |
| | | if (!WcsCancellTask(transportTask)) { |
| | | LogHelper.Info($"外形检测失败,通知Wcs取消任务失败", "Wcs任务执行通知"); |
| | | throw new Exception($"外形检测失败,通知Wcs取消任务失败"); |
| | | } |
| | | |
| | | 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($"异常出库任务下发创建作业失败"); |
| | | } |
| | | } |
| | | |
| | | |
| | | newDb.BeginTran(); |
| | | var R = newDb.Insertable(RfidChek).ExecuteCommand(); |
| | | if (R == 0) |
| | |
| | | { |
| | | TaskHelper.Fail(agvTask1); |
| | | NDCApi.CancelOrder(agvTask1.S_CODE.Trim()); |
| | | |
| | | LogHelper.Info($"Wcs任务执行通知,任务号{transportTask.S_CODE}取消,解锁", "解锁"); |
| | | TaskProcess.CacheBitCancelUpdate(agvTask1); |
| | | } |
| | | } |
| | |
| | | { |
| | | LogHelper.Info($"任务号{task.S_CODE},取消任务成功,起点{task.S_START_LOC}设为异常", "取货无货"); |
| | | TaskHelper.Fail(task); |
| | | |
| | | TaskProcess.OperateStatus(task, 7); |
| | | LocationHelper.updateLocLock(task.S_START_LOC, 3, "其他锁"); |
| | | var agvTask = TaskHelper.GetTaskByWorkNo(task.S_OP_CODE, "agv"); |
| | |
| | | NDCApi.CancelOrder(agvTask.S_CODE.Trim()); |
| | | } |
| | | TaskHelper.Fail(agvTask); |
| | | |
| | | LogHelper.Info($"取货无货,任务号{task.S_CODE}取消,解锁", "解锁"); |
| | | TaskProcess.CacheBitCancelUpdate(agvTask); |
| | | } |
| | | } |