| | |
| | | return result; |
| | | } |
| | | |
| | | internal static SimpleResult ErrorOperation(MoboxOperationBase model) |
| | | { |
| | | var result = new SimpleResult(); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var wmsTask = db.Queryable<WMSTask>().Where(a => a.S_CODE == model.OperationNo).First(); |
| | | if (wmsTask != null) |
| | | { |
| | | LogHelper.Info($"清除错误作业 解绑托盘 托盘{wmsTask.S_CNTR_CODE}"); |
| | | db.Deleteable<LocCntrRel>().Where(a => a.S_CNTR_CODE == wmsTask.S_CNTR_CODE).ExecuteCommand(); |
| | | db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE == wmsTask.S_CNTR_CODE).ExecuteCommand(); |
| | | var locInfo = db.Queryable<Location>().Where(a => a.S_CODE == wmsTask.S_START_LOC).First(); |
| | | if (locInfo != null) |
| | | { |
| | | LogHelper.Info($"清除错误作业 重置货位状态 货位{locInfo.S_CODE}"); |
| | | locInfo.N_CURRENT_NUM = 0; |
| | | locInfo.N_LOCK_STATE = 0; |
| | | locInfo.S_LOCK_STATE = "无"; |
| | | db.Updateable(locInfo).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand(); |
| | | } |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | |
| | | internal static TaskStateresutl GetTaskState(GetTaskStateModel model) |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | |
| | | //if (task.S_B_STATE != "取消" && task.S_B_STATE != "完成" && task.S_B_STATE != "关闭" && task.S_B_STATE != "强制完成") |
| | | //{ |
| | | TaskProcess.OperateStatus(task, 6); |
| | | if (task.S_TYPE.Contains("入库")) |
| | | if (task.S_OP_NAME =="入库") |
| | | { |
| | | WMSHelper.AddChange(task); |
| | | } |
| | | if (task.S_OP_NAME == "出库") |
| | | { |
| | | WMSHelper.DeleteChange(task); |
| | | } |
| | | if (task.S_TYPE == "分拣回") |
| | | { |
| | |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"{locinfo.N_ROADWAY} 巷道找不到可入货位 随机分配货位"); |
| | | endbit = WMSHelper.GetLiKuLocationIn(locinfo.S_AREA_CODE, 0, locinfo.S_TYPE); |
| | | if (endbit != null) |
| | | { |
| | | LogHelper.Info($"查找到改道货位为{endbit.S_CODE}"); |
| | | //修改任务数据 终点 备注:改位 |
| | | LocationHelper.LockLoc(endbit.S_CODE, 1); |
| | | wmstask.S_END_LOC = endbit.S_CODE; |
| | | db.Updateable(wmstask).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand(); |
| | | task.S_END_LOC = endbit.S_CODE; |
| | | task.S_NOTE = "改位"; |
| | | db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_NOTE }).ExecuteCommand(); |
| | | |
| | | var agvBit = db.Queryable<PeiZhi>().Where(it => it.BitCode == endbit.S_CODE).First(); |
| | | if (agvBit != null) |
| | | { |
| | | result.new_locate_no = agvBit.PlcLocation; |
| | | } |
| | | } |
| | | } |
| | | //else |
| | | //{ |
| | | // LogHelper.Info($"{locinfo.N_ROADWAY} 巷道找不到可入货位 随机分配货位"); |
| | | // endbit = WMSHelper.GetLiKuLocationIn(locinfo.S_AREA_CODE, 0, locinfo.S_TYPE); |
| | | // if (endbit != null) |
| | | // { |
| | | // LogHelper.Info($"查找到改道货位为{endbit.S_CODE}"); |
| | | // //修改任务数据 终点 备注:改位 |
| | | // LocationHelper.LockLoc(endbit.S_CODE, 1); |
| | | // wmstask.S_END_LOC = endbit.S_CODE; |
| | | // db.Updateable(wmstask).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand(); |
| | | // task.S_END_LOC = endbit.S_CODE; |
| | | // task.S_NOTE = "改位"; |
| | | // db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_NOTE }).ExecuteCommand(); |
| | | // |
| | | // var agvBit = db.Queryable<PeiZhi>().Where(it => it.BitCode == endbit.S_CODE).First(); |
| | | // if (agvBit != null) |
| | | // { |
| | | // result.new_locate_no = agvBit.PlcLocation; |
| | | // } |
| | | // } |
| | | //} |
| | | } |
| | | internal static SimpleResult OutboundOrderExecute(OutboundOrderCheck model) |
| | | { |
| | |
| | | { |
| | | WeiLiResult result = new WeiLiResult(); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var tasks = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.orderNo).ToList(); |
| | | if (tasks.Count >= 1) |
| | | { |
| | | //流程任务数量执行超过一条 任务不允许取消 |
| | | result.code = 500; |
| | | result.msg = "流程任务执行中途不允许取消"; |
| | | return result; |
| | | } |
| | | //var tasks = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.orderNo).ToList(); |
| | | //if (tasks.Count >= 1) |
| | | //{ |
| | | // //流程任务数量执行超过一条 任务不允许取消 |
| | | // result.code = 500; |
| | | // result.msg = "流程任务执行中途不允许取消"; |
| | | // return result; |
| | | //} |
| | | //var task = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.orderNo).OrderByDescending(a => a.T_CREATE).First(); |
| | | //if (task != null) |
| | | //{ |
| | | // if (WCSHelper.CheckActionRecordExist(task.S_CODE, 4)) |
| | | // { |
| | | // result.code = 500; |
| | | // result.msg = "任务已取货完成 不允许取消"; |
| | | // return result; |
| | | // } |
| | | // if (task.N_B_STATE == 0) |
| | | // { |
| | | // //等待直接修改状态为取消 |
| | | // WCSHelper.UpdateStatus(model.orderNo, 5); |
| | | // //result.msg = "任务等待,直接取消"; |
| | | // } |
| | | // else if (task.N_B_STATE != 3 && task.N_B_STATE != 4) |
| | | // { |
| | | // if (task.S_TYPE == "杭奥") |
| | | // { |
| | | // //通知立库取消任务 |
| | | // } |
| | | // else |
| | | // { |
| | | // //已推送但是没有完成或者取消,通知hosttoagv |
| | | // NDCHelper.Cancel(task.S_CODE.Trim()); |
| | | // //result.msg = "任务取消已经发送给小车"; |
| | | // } |
| | | // } |
| | | // else |
| | | // { |
| | | // result.code = 500; |
| | | // result.msg = "任务已结束"; |
| | | // } |
| | | //} |
| | | //else |
| | | //{ |
| | | // result.code = 500; |
| | | // result.msg = "任务不存在"; |
| | | //} |
| | | |
| | | var task = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.orderNo).OrderByDescending(a => a.T_CREATE).First(); |
| | | if (task != null) |
| | | { |
| | | if (WCSHelper.CheckActionRecordExist(task.S_CODE, 4)) |
| | | var wmsTask = WMSHelper.GetWmsTask(task.S_OP_CODE); |
| | | if (wmsTask != null) |
| | | { |
| | | result.code = 500; |
| | | result.msg = "任务已取货完成 不允许取消"; |
| | | return result; |
| | | } |
| | | if (task.N_B_STATE == 0) |
| | | { |
| | | //等待直接修改状态为取消 |
| | | WCSHelper.UpdateStatus(model.orderNo, 5); |
| | | //result.msg = "任务等待,直接取消"; |
| | | } |
| | | else if (task.N_B_STATE != 3 && task.N_B_STATE != 4) |
| | | { |
| | | if (task.S_TYPE == "杭奥") |
| | | if (task.N_B_STATE == 0) |
| | | { |
| | | //通知立库取消任务 |
| | | //等待直接修改状态为取消 |
| | | WCSHelper.UpdateStatus(task.S_CODE, 4); |
| | | wmsTask.N_B_STATE = 6; |
| | | WMSHelper.UpdateTaskState(wmsTask); |
| | | LocationHelper.UnLockLoc(task.S_START_LOC); |
| | | LocationHelper.UnLockLoc(task.S_END_LOC); |
| | | LocationHelper.UnLockLoc(wmsTask.S_END_LOC); |
| | | |
| | | result.msg = "任务等待,直接取消"; |
| | | } |
| | | else if (task.N_B_STATE != 3 && task.N_B_STATE != 4) |
| | | { |
| | | if (task.S_SCHEDULE_TYPE == "NDC") |
| | | { |
| | | //已推送但是没有完成或者取消,通知hosttoagv |
| | | NDCApi.CancelOrder(task.S_CODE.Trim()); |
| | | } |
| | | else |
| | | { |
| | | TaskProcess.Cancel(task); |
| | | TaskProcess.OperateStatus(task, 7); |
| | | WCSHelper.Fail(task); |
| | | WMSHelper.Fail(task); |
| | | } |
| | | |
| | | result.msg = "任务取消已经发送给小车"; |
| | | } |
| | | else |
| | | { |
| | | //已推送但是没有完成或者取消,通知hosttoagv |
| | | NDCHelper.Cancel(task.S_CODE.Trim()); |
| | | //result.msg = "任务取消已经发送给小车"; |
| | | result.msg = "任务已结束"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | result.code = 500; |
| | | result.msg = "任务已结束"; |
| | | result.msg = "任务所处的作业不存在"; |
| | | } |
| | | } |
| | | else |
| | |
| | | result.code = 500; |
| | | result.msg = "任务不存在"; |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | |