| | |
| | | return result; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | internal static WeiLiResult AddTask(AddTaskModel model) |
| | | { |
| | | var result = new WeiLiResult(); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var cntrweight = model.cntrWeight == 1 ? 2 : model.cntrWeight == 2 ? 3 : model.cntrWeight == 3 ? 11 : model.cntrWeight == 4 ? 30 : model.cntrWeight == 5 ? 150 : 0; |
| | | if (!string.IsNullOrEmpty(model.startBit) && !string.IsNullOrEmpty(model.endBit)) |
| | | { |
| | | if (!string.IsNullOrEmpty(model.TaskNo)) |
| | | { |
| | | var taskinfo = db.Queryable<WMSTask>().Where(a => a.S_CODE == model.TaskNo).First(); |
| | | if (taskinfo == null) |
| | | { |
| | | var startinfo = db.Queryable<Location>().Where(a => a.S_CODE == model.startBit).First(); |
| | | var endinfo = db.Queryable<Location>().Where(a => a.S_CODE == model.endBit).First(); |
| | | if (startinfo != null && endinfo != null) |
| | | { |
| | | if (startinfo.N_LOCK_STATE != 0 || endinfo.N_LOCK_STATE != 0) |
| | | { |
| | | result.code = 500; |
| | | result.msg = "起点或终点货位锁定状态异常 不予创建任务"; |
| | | return result; |
| | | } |
| | | |
| | | var startloccntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startinfo.S_CODE).First(); |
| | | LogHelper.Info("查询起点是否绑定托盘"); |
| | | if (startloccntr == null) |
| | | { |
| | | LogHelper.Info("起点未绑定托盘 准备绑定托盘"); |
| | | //绑定起点托盘 |
| | | LocationHelper.BindingLoc(model.startBit, new List<string>() { model.cntrNo }); |
| | | } |
| | | else if (startloccntr.S_CNTR_CODE != model.cntrNo) |
| | | { |
| | | result.code = 500; |
| | | result.msg = $"起点已绑定托盘{startloccntr.S_CNTR_CODE} 与任务托盘{model.cntrNo} 不符"; |
| | | return result; |
| | | } |
| | | |
| | | LogHelper.Info("转运任务 创建作业"); |
| | | |
| | | //创建作业 |
| | | var optask = new WMSTask |
| | | { |
| | | S_CODE = model.TaskNo, |
| | | S_START_LOC = startinfo.S_CODE, |
| | | S_END_LOC = endinfo.S_CODE, |
| | | S_END_AREA = endinfo.S_AREA_CODE, |
| | | S_START_AREA = startinfo.S_AREA_CODE, |
| | | S_START_WH = startinfo.S_WH_CODE, |
| | | S_END_WH = endinfo.S_WH_CODE, |
| | | S_TYPE = "转运", |
| | | N_TYPE = 3, |
| | | N_B_STATE = 0, |
| | | S_CNTR_CODE = model.cntrNo, |
| | | S_OP_DEF_NAME = "转运", |
| | | S_BS_NO = model.workNo, |
| | | N_PRIORITY = model.priority, |
| | | N_TRAY_WEIGHT = cntrweight |
| | | }; |
| | | |
| | | var note = Settings.Tasktypes.Where(a => a.StartArea == optask.S_START_AREA && a.EndArea == optask.S_END_AREA).FirstOrDefault(); |
| | | if (note != null) |
| | | { |
| | | optask.S_NOTE = note.TaskType; |
| | | } |
| | | |
| | | |
| | | |
| | | db.Insertable(optask).ExecuteCommand(); |
| | | LocationHelper.LockLoc(startinfo.S_CODE, 2); |
| | | LocationHelper.LockLoc(endinfo.S_CODE, 1); |
| | | } |
| | | else |
| | | { |
| | | result.code = 500; |
| | | result.msg = "起点或终点信息有误 查询不到站点信息"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | result.code = 500; |
| | | result.msg = "任务号重复 请勿重复下发任务"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | result.code = 500; |
| | | result.msg = "任务号不能为空"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | result.code = 500; |
| | | result.msg = "起点或终点不能为空"; |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | |
| | | internal static TaskStateresutl GetTaskState(GetTaskStateModel model) |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | TaskStateresutl result = new TaskStateresutl { success = false, code = 0}; |
| | | if (!string.IsNullOrEmpty(model.taskNo)) |
| | | { |
| | | var info = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.taskNo).First(); |
| | | if (info!=null) |
| | | { |
| | | var TaskStates = db.Queryable<TaskAction>().Where(a => a.S_TASK_CODE == info.S_CODE).ToList(); |
| | | TaskStates=TaskStates.OrderBy(a => a.T_CREATE).ToList(); |
| | | for (int i = 0; i < TaskStates.Count; i++) |
| | | { |
| | | TaskState task = new TaskState |
| | | { |
| | | state = TaskStates[i].N_ACTION_CODE.ToString(), |
| | | errMsg = "", |
| | | taskNo = model.taskNo, |
| | | transferTime = TaskStates[i].T_CREATE.ToString() |
| | | }; |
| | | if (!string.IsNullOrEmpty(TaskStates[i].S_EQ_CODE)) |
| | | { |
| | | task.agvNo = int.Parse(TaskStates[i].S_EQ_CODE); |
| | | } |
| | | result.data.Add(task); |
| | | } |
| | | result.success = true ; |
| | | } |
| | | else |
| | | { |
| | | result.code = 1; |
| | | result.msg = "该任务号没有状态记录!"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | result.code = 1; |
| | | result.msg = "请求任务号不能为空!"; |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | internal static PlcSendTaskres PlcCallbackState(PlcState model) |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | |
| | | db.Updateable(task).UpdateColumns(it => new { it.S_NOTE }).ExecuteCommand(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | internal static WeiLiResult CancelOrder(CancelOrderModel 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(); |
| | | var tasks = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.task_no).ToList(); |
| | | if (tasks.Count >= 1) |
| | | { |
| | | //流程任务数量执行超过一条 任务不允许取消 |
| | |
| | | result.msg = "流程任务执行中途不允许取消"; |
| | | return result; |
| | | } |
| | | var task = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.orderNo).OrderByDescending(a => a.T_CREATE).First(); |
| | | var task = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.task_no).OrderByDescending(a => a.T_CREATE).First(); |
| | | if (task != null) |
| | | { |
| | | if (WCSHelper.CheckActionRecordExist(task.S_CODE, 4)) |
| | |
| | | if (task.N_B_STATE == 0) |
| | | { |
| | | //等待直接修改状态为取消 |
| | | WCSHelper.UpdateStatus(model.orderNo, 5); |
| | | WCSHelper.UpdateStatus(model.task_no, 5); |
| | | //result.msg = "任务等待,直接取消"; |
| | | } |
| | | else if (task.N_B_STATE != 3 && task.N_B_STATE != 4) |
| | |
| | | else |
| | | { |
| | | //已推送但是没有完成或者取消,通知hosttoagv |
| | | NDCHelper.Cancel(task.S_CODE.Trim()); |
| | | //NDCHelper.Cancel(task.S_CODE.Trim()); |
| | | NDCApi.CancelOrder(task.S_CODE.Trim()); |
| | | //result.msg = "任务取消已经发送给小车"; |
| | | } |
| | | } |
| | |
| | | else |
| | | { |
| | | //通知杭叉修改优先级 |
| | | NDCHelper.Cancel(task.S_CODE.Trim()); |
| | | //NDCHelper.Cancel(task.S_CODE.Trim()); |
| | | NDCApi.CancelOrder(task.S_CODE.Trim()); |
| | | result.msg = "修改优先级成功"; |
| | | } |
| | | } |