| | |
| | | if (load) |
| | | { |
| | | Console.WriteLine($"任务{mst.S_CODE} 货位{mst.S_START_LOC}取货完成,起点解绑容器{mst.S_CNTR_CODE}"); |
| | | LogHelper.Info($"任务{mst.S_CODE} 货位{mst.S_START_LOC}取货完成,起点解绑容器{mst.S_CNTR_CODE}"); |
| | | LogHelper.Info($"任务{mst.S_CODE} 货位{mst.S_START_LOC}取货完成,起点解绑容器{mst.S_CNTR_CODE}","解锁"); |
| | | LocationHelper.UnBindingLoc(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList()); |
| | | } |
| | | else |
| | | { |
| | | Console.WriteLine($"任务{mst.S_CODE} 货位{mst.S_END_LOC}卸货完成,终点绑定容器{mst.S_CNTR_CODE}"); |
| | | LogHelper.Info($"任务{mst.S_CODE} 货位{mst.S_END_LOC}卸货完成,终点绑定容器{mst.S_CNTR_CODE}"); |
| | | LogHelper.Info($"任务{mst.S_CODE} 货位{mst.S_END_LOC}卸货完成,终点绑定容器{mst.S_CNTR_CODE}","解锁"); |
| | | LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList()); |
| | | } |
| | | |
| | |
| | | /// </summary> |
| | | /// <param name="mst"></param> |
| | | internal static void CacheBitCancelUpdate(WMSTask mst) { |
| | | |
| | | LogHelper.Info($"CacheBitCancelUpdate解锁:任务号:{mst.S_CODE}", "解锁"); |
| | | LocationHelper.UnLockLoc(mst.S_START_LOC); |
| | | LocationHelper.UnLockLoc(mst.S_END_LOC); |
| | | |
| | |
| | | |
| | | try |
| | | { |
| | | |
| | | |
| | | |
| | | //空托入库判断空托出缓存表,有对应记录直接改道到缓存表终点 |
| | | if (workFlow.FLOWCODE=="3") { |
| | | var kt = db.Queryable<MesKtTask>().Where(e => e.TOOLS_TPYE==task.TOOLSTYPE && e.Status=="N").OrderBy(a=>a.CreateDate).First(); |
| | |
| | | return result; |
| | | } |
| | | |
| | | if (work.S_B_STATE == "等待") |
| | | { |
| | | work.N_B_STATE = 7; |
| | | work.S_B_STATE = "取消"; |
| | | work.T_MODIFY = DateTime.Now; |
| | | work.T_END_TIME = DateTime.Now; |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | db.Updateable(work).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_MODIFY, it.T_END_TIME }).ExecuteCommand(); |
| | | |
| | | LogHelper.Info($"cancelTask1取消{model.task_no},解锁", "解锁"); |
| | | LocationHelper.UnLockLoc(work.S_START_LOC); |
| | | LocationHelper.UnLockLoc(work.S_END_LOC); |
| | | if (!string.IsNullOrEmpty(work.CONNECTION)) |
| | | { |
| | | LocationHelper.UnLockLoc(work.CONNECTION); |
| | | } |
| | | result.errCode = 0; |
| | | result.errMsg = "取消成功"; |
| | | result.success = true; |
| | | return result; |
| | | } |
| | | |
| | | |
| | | //作业没有接驳位,一段任务取消 |
| | | if (string.IsNullOrEmpty(work.CONNECTION)) { |
| | | if (task != null) |
| | |
| | | //未执行直接修改状态为取消 |
| | | TaskHelper.opMesTask(task, 3); |
| | | TaskHelper.Fail(task); |
| | | |
| | | TaskProcess.CacheBitCancelUpdate(task); |
| | | |
| | | ContainerHelper.delCntr(task.S_CNTR_CODE); |
| | |
| | | { |
| | | //二段任务取消 |
| | | |
| | | if (task.S_TYPE.Contains("出库")) |
| | | { |
| | | |
| | | if (wcsTask != null) |
| | | { |
| | | LogHelper.Info($"cancelTask1取消Wcs任务{wcsTask.S_CODE}", "取消"); |
| | | if (wcsTask.S_B_STATE.Trim() == "未执行" && task.S_B_STATE.Trim() == "未执行") |
| | | if (wcsTask.S_B_STATE.Trim() == "未执行") |
| | | { |
| | | //未执行直接修改状态为取消 |
| | | TaskHelper.opMesTask(task, 3); |
| | | TaskHelper.Fail(task); |
| | | TaskProcess.OperateStatus(task,7); |
| | | TaskHelper.Fail(wcsTask); |
| | | TaskProcess.OperateStatus(wcsTask, 7); |
| | | result.errCode = 0; |
| | | result.errMsg = "取消成功"; |
| | | result.success = true; |
| | | return result; |
| | | } |
| | | else |
| | | { |
| | |
| | | return result; |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | |
| | | |
| | | if (task.S_B_STATE.Trim() == "未执行") |
| | | { |
| | | //未执行直接修改状态为取消 |
| | |
| | | result.errCode = 1; |
| | | result.errMsg = "任务已经结束"; |
| | | result.success = false; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | |
| | | |
| | | |
| | | |
| | | var workFlow = TaskHelper.selectWorkFlowByType(model.BUSI_TYPE); |
| | | |
| | | |
| | | var workFlow = TaskHelper.selectWorkFlowByType(model.BUSI_TYPE); |
| | | |
| | | |
| | | if (workFlow == null) |
| | |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"作业流程信息" + JsonConvert.SerializeObject(workFlow), "Mes任务下发"); |
| | | LogHelper.Info($"出库作业流程信息" + JsonConvert.SerializeObject(workFlow), "Mes任务下发"); |
| | | } |
| | | |
| | | //出库任务 |
| | |
| | | } |
| | | |
| | | workFlow = TaskHelper.selectWorkFlowByEndArea(model.BUSI_TYPE, end.S_AREA_CODE); |
| | | TOOLSTYPE = workFlow.TOOLSTYPE; |
| | | if (workFlow != null) |
| | | { |
| | | TOOLSTYPE = workFlow.TOOLSTYPE; |
| | | } |
| | | } |
| | | |
| | | LogHelper.Info($"作业{model.task_no},工装类型{TOOLSTYPE}", "Mes任务下发"); |
| | |
| | | if (TOOLSTYPE == "25" || TOOLSTYPE == "35") |
| | | { |
| | | LogHelper.Info($"ZCSendTask入库任务工装是二合一库,需要物料均衡", "Mes任务下发"); |
| | | balanceLocList = LocationHelper.RoadWayBalance1ByItem(balanceLocList, model.PROD_NO); |
| | | balanceLocList = LocationHelper.RoadWayBalance1ByItem(endList, model.PROD_NO); |
| | | } |
| | | else { |
| | | balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY); |
| | |
| | | cntr1.S_CODE = cntrCode; |
| | | cntr1.C_ENABLE = "Y"; |
| | | cntr1.N_DETAIL_COUNT = cntrCount; |
| | | cntr1.S_TYPE = ""; |
| | | cntr1.S_TYPE = TOOLSTYPE; |
| | | |
| | | LogHelper.Info($"添加容器信息" + JsonConvert.SerializeObject(cntr1), "Mes任务下发"); |
| | | if (ContainerHelper.CreateCntr(cntr1)) |
| | |
| | | S_START_AREA_NAME = start.S_AREA_Name, |
| | | //起点库区名称 |
| | | S_END_AREA_NAME = end.S_AREA_Name, |
| | | //起点库区名称 |
| | | //接驳库区名称 |
| | | CONNECTION_AREA = connectionArea, |
| | | }; |
| | | |
| | |
| | | { |
| | | if (connection != "") |
| | | { |
| | | LogHelper.Info($"{operation.S_CODE}锁货位", "上锁"); |
| | | LocationHelper.LockLoc(operation.S_START_LOC, "出库锁", 2); |
| | | LocationHelper.LockLoc(operation.S_END_LOC, "入库锁", 1); |
| | | LocationHelper.LockLoc(operation.CONNECTION, "其他锁", 3); |
| | |
| | | } |
| | | |
| | | |
| | | //LogHelper.Info($"ZCSendTask出库任务判断终点货位是否可以无限制下任务开始", "Mes任务下发"); |
| | | |
| | | var unlimitedLocation = TaskHelper.GetMesKtLoc(); |
| | | |
| | | //标记终点货位是否可以无限制下任务 |
| | |
| | | } |
| | | } |
| | | |
| | | //LogHelper.Info($"ZCSendTask出库任务判断终点货位是否可以无限制下任务endLocFlag信息{endLocFlag}", "Mes任务下发"); |
| | | if (endLocFlag) |
| | | { |
| | | var endTask = TaskHelper.GetTaskByEndLoc(model.Location_To); |
| | | |
| | | //LogHelper.Info($"ZCSendTask出库任务判断终点货位是否可以无限制下任务endTask信息"+JsonConvert.SerializeObject(endTask), "Mes任务下发"); |
| | | if (endTask != null) |
| | | { |
| | | LogHelper.Info($"ZCSendTask出库任务下发失败,终点:{model.Location_To}有任务执行中,任务号:{endTask.S_CODE}", "Mes任务下发"); |
| | | throw new Exception($"终点:{model.Location_To}有任务执行中,任务号:{endTask.S_CODE}"); |
| | | } |
| | | } |
| | | |
| | | |
| | | // LogHelper.Info($"ZCSendTask出库任务判断终点货位是否可以无限制下任务完成", "Mes任务下发"); |
| | | |
| | | //查找起点 |
| | | List<Location> strrtList; |
| | |
| | | else |
| | | { |
| | | strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA); |
| | | |
| | | } |
| | | |
| | | |
| | | //LogHelper.Info($"CSendTask出库任务获取起点货位集合完成", "Mes任务下发"); |
| | | |
| | | if (workFlow.FLOWCODE == "9" || workFlow.FLOWCODE == "4" || workFlow.FLOWCODE == "6") |
| | | { |
| | |
| | | else |
| | | { |
| | | //根据制品编号寻找立库区对应物料托盘 |
| | | |
| | | LogHelper.Info($"CSendTask出库任务根据制品编号寻找立库区对应物料托盘", "Mes任务下发"); |
| | | start = LocationHelper.FindStartcolByLoclistAndItem(strrtList, model.PROD_NO, workFlow.STARTAREA, workFlow.ROADWAY,workFlow.CONNECTION); |
| | | if (start == null) |
| | | { |
| | |
| | | S_START_AREA_NAME = start.S_AREA_Name, |
| | | //起点库区名称 |
| | | S_END_AREA_NAME = end.S_AREA_Name, |
| | | //起点库区名称 |
| | | //接驳库区名称 |
| | | CONNECTION_AREA = connectionArea |
| | | }; |
| | | |