| | |
| | | /// <param name="transportReqs"></param> |
| | | public List<OperateResult> ExecTransferTask(List<TN_MES_TASK> transportReqs) |
| | | { |
| | | var mapStr = JsonHelper.GetValue("workFlowTransType"); |
| | | if (string.IsNullOrEmpty(mapStr)) |
| | | throw new Exception("未找到配置:workFlowTransType"); |
| | | |
| | | var isEnableAms = new ZCTransferDto(); |
| | | var _isEnableAmsStr = JsonHelper.GetValue("isSendAms"); |
| | | if (!string.IsNullOrEmpty(_isEnableAmsStr)) |
| | | { |
| | | isEnableAms = JsonConvert.DeserializeObject<ZCTransferDto>(_isEnableAmsStr); |
| | | isEnableAms = isEnableAms ?? new ZCTransferDto(); |
| | | } |
| | | |
| | | var workFlowTransType = JsonConvert.DeserializeObject<List<ZCTransferDto>>(mapStr); |
| | | |
| | | List<OperateResult> ors = new List<OperateResult>(); |
| | | if (transportReqs.Any()) |
| | | { |
| | |
| | | string endBit = req.Location_To; |
| | | |
| | | string startArea = string.Empty, endArea = string.Empty; |
| | | //校验起点 |
| | | if (!string.IsNullOrEmpty(startBit)) |
| | | { |
| | | var _location = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_LOCATION_CODE = startBit |
| | | }); |
| | | if (_location == null) |
| | | { |
| | | ors.Add(OperateResult.Error("未找到起始货位:" + startBit, req)); |
| | | continue; |
| | | } |
| | | startArea = Util.ToString(_location.CN_S_AREA_CODE).Trim(); |
| | | } |
| | | //校验终点 |
| | | if (!string.IsNullOrEmpty(endBit)) |
| | | { |
| | | var _location = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_LOCATION_CODE = endBit |
| | | }); |
| | | if (_location == null) |
| | | { |
| | | ors.Add(OperateResult.Error("未找到终点货位:" + endBit, req)); |
| | | continue; |
| | | } |
| | | endArea = Util.ToString(_location.CN_S_AREA_CODE).Trim(); |
| | | } |
| | | if (string.IsNullOrEmpty(startArea) && string.IsNullOrEmpty(endArea)) |
| | | { |
| | | ors.Add(OperateResult.Error("起点终点不可同时为空")); |
| | | continue; |
| | | } |
| | | //找作业路径 |
| | | //var workRoute = BLLCreator.Create<TN_AB_B_WORK_AREA_PROBLL>().GetSingleRoute(startArea, endArea); |
| | | //if (workRoute == null) |
| | | //{ |
| | | // ors.Add(OperateResult.Error("未找到作业路径", req)); |
| | | // continue; |
| | | //} |
| | | |
| | | var workRoute = new TN_AB_B_WORK_AREA_PROEntity(); |
| | | var workRoutes = BLLCreator.Create<TN_AB_B_WORK_AREA_PROBLL>().GetRoute("", startArea, endArea); |
| | | if (!workRoutes.Any()) |
| | | try |
| | | { |
| | | ors.Add(OperateResult.Error("未找到作业路径", req)); |
| | | continue; |
| | | } |
| | | else |
| | | { |
| | | workRoute = workRoutes[0]; |
| | | if (workRoutes.Count > 1) |
| | | InWorkAreaEntity inModel = new InWorkAreaEntity(); |
| | | inModel.itemCode = req.PROD_NO; |
| | | inModel.trayCode = req.TurnCardNum; |
| | | inModel.priority = req.Priority; |
| | | inModel.startBit = req.Location_From; |
| | | inModel.endBit = req.Location_To; |
| | | inModel.remark = "业务类型:" + req.BUSI_TYPE; |
| | | |
| | | OutWorkAreaEntity outModel = new OutWorkAreaEntity(); |
| | | outModel.itemCode = req.PROD_NO; |
| | | outModel.trayCode = req.TurnCardNum; |
| | | outModel.priority = req.Priority; |
| | | outModel.startBit = req.Location_From; |
| | | outModel.endBit = req.Location_To; |
| | | outModel.remark = "业务类型:" + req.BUSI_TYPE; |
| | | |
| | | // 下一步要执行的阶段 |
| | | string section = NextSection(req); |
| | | bool needCreateTask = true; |
| | | string direction = ""; |
| | | |
| | | if (section == TaskSectionConstants.ERROR) |
| | | { |
| | | if (workRoutes.Exists(e => Util.ToString(e.CN_S_TYPE_CODE) == "X6" || Util.ToString(e.CN_S_TYPE_CODE) == "X7")) |
| | | // "执行失败,MES任务业务类型或阶段不正确" |
| | | needCreateTask = false; |
| | | } |
| | | else if (string.IsNullOrEmpty(section)) |
| | | { |
| | | needCreateTask = false; |
| | | } |
| | | else if (section == TaskSectionConstants.BCP_KTCK) |
| | | { |
| | | direction = Constants.Out; |
| | | } |
| | | else if (section == TaskSectionConstants.BCP_MTRK) |
| | | { |
| | | direction = Constants.In; |
| | | } |
| | | else if (section == TaskSectionConstants.CXJ_BCPHK) |
| | | { |
| | | direction = Constants.In; |
| | | } |
| | | else if (section == TaskSectionConstants.CXJ_KTHK_RECORD) |
| | | { |
| | | needCreateTask = false; |
| | | } |
| | | else if (section == TaskSectionConstants.CXJ_MTCK) |
| | | { |
| | | direction = Constants.Out; |
| | | } |
| | | else if (section == TaskSectionConstants.CXJ_KTHK_KTRK) |
| | | { |
| | | direction = Constants.In; |
| | | } |
| | | else if (section == TaskSectionConstants.DS_BCPKTHK) |
| | | { |
| | | direction = Constants.In; |
| | | } |
| | | else if (section == TaskSectionConstants.DS_MTCK) |
| | | { |
| | | direction = Constants.Out; |
| | | } |
| | | // 更新MES任务阶段 |
| | | req.SECTION = section; |
| | | |
| | | var externalRes = new ExternalResponse(); |
| | | string taskNo = ""; |
| | | |
| | | if (needCreateTask) |
| | | { |
| | | if (direction == Constants.In) |
| | | { |
| | | if (string.IsNullOrEmpty(req.PROD_NO)) |
| | | //传递参数 |
| | | List<InWorkAreaEntity> inWorkAreaEntitys = new List<InWorkAreaEntity>(); |
| | | inWorkAreaEntitys.Add(inModel); |
| | | |
| | | try |
| | | { |
| | | workRoute = workRoutes.Find(f => f.CN_S_TYPE_CODE == "X6"); |
| | | Log.Info("入作业区开始,传参:", JsonConvert.SerializeObject(inWorkAreaEntitys)); |
| | | externalRes = BLLCreator.Create<WmsApiBaseBLL>().InWorkArea(inWorkAreaEntitys); |
| | | taskNo = inModel.taskNo; |
| | | } |
| | | else |
| | | catch (Exception ex) |
| | | { |
| | | workRoute = workRoutes.Find(f => f.CN_S_TYPE_CODE == "X7"); |
| | | Log.Error("入作业区失败,传参:", JsonConvert.SerializeObject(inWorkAreaEntitys) + ex.ToString()); |
| | | ors.Add(OperateResult.Error("入作业区失败:" + ex.Message, req)); |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | if (workRoute == null) |
| | | { |
| | | ors.Add(OperateResult.Error("未找到作业路径", req)); |
| | | continue; |
| | | } |
| | | } |
| | | else if (direction == Constants.Out) |
| | | { |
| | | //传递参数 |
| | | List<OutWorkAreaEntity> outWorkAreaEntitys = new List<OutWorkAreaEntity>(); |
| | | outWorkAreaEntitys.Add(outModel); |
| | | |
| | | |
| | | var existsWorkFlow = workFlowTransType.Find(f => f.workFlowCode == workRoute.CN_S_TYPE_CODE); |
| | | if (existsWorkFlow == null) |
| | | { |
| | | ors.Add(OperateResult.Error("未找到作业方向", req)); |
| | | continue; |
| | | } |
| | | |
| | | TN_WM_B_MAKE_TASKEntity makeReq = new TN_WM_B_MAKE_TASKEntity() |
| | | { |
| | | CN_S_ITEM_CODE = req.PROD_NO, |
| | | CN_S_ITEM_NAME = "", |
| | | CN_S_START_BIT = req.Location_From, |
| | | CN_S_START_AREA = workRoute.CN_S_START_AREA_CODE, |
| | | CN_S_END_BIT = req.Location_To, |
| | | CN_S_END_AREA = workRoute.CN_S_END_AREA_CODE, |
| | | CN_S_TRAY_CODE = req.TurnCardNum, |
| | | CN_S_PRIORITY = req.Priority.ToString(), |
| | | CN_S_WORKFLOW_NAME = WorkFlowName.FlowNameList[existsWorkFlow.workFlowCode], |
| | | CN_F_QUANTITY = Convert.ToDecimal(req.CURRENT_AMOUNT), |
| | | CN_S_NEED_AMS = isEnableAms.transferEnableAms, |
| | | CN_S_ISTRANSPORT = existsWorkFlow.isTransport |
| | | }; |
| | | |
| | | var externalRes = new ExternalResponse(); |
| | | if (existsWorkFlow.transType == "In") |
| | | { |
| | | try |
| | | { |
| | | var res = BLLCreator.Create<ZCBLL>().GLInWorkArea(makeReq); |
| | | externalRes = JsonConvert.DeserializeObject<ExternalResponse>(res); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | ors.Add(OperateResult.Error("入作业区失败:" + ex.Message, req)); |
| | | continue; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | try |
| | | { |
| | | var res = BLLCreator.Create<ZCBLL>().GLOutWorkArea(makeReq); |
| | | externalRes = JsonConvert.DeserializeObject<ExternalResponse>(res); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | ors.Add(OperateResult.Error("出作业区失败:" + ex.Message, req)); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | var _serviceExec = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_TASK_NO = req.task_no |
| | | }); |
| | | if (_serviceExec != null) |
| | | { |
| | | _serviceExec.Update = true; |
| | | } |
| | | else |
| | | { |
| | | _serviceExec = new TN_WM_SERVICE_EXECEntity() |
| | | { |
| | | CN_S_TASK_NO = req.task_no, |
| | | CN_S_ITEM_CODE = req.PROD_NO, |
| | | CN_S_ITEM_NAME = "", |
| | | CN_S_TASK_TYPE = "移送", |
| | | CN_S_TRANS_TYPE = WorkFlowName.FlowNameList[existsWorkFlow.workFlowCode], |
| | | CN_S_TRAY_CODE = req.TurnCardNum, |
| | | CN_N_PRIORITY = req.Priority, |
| | | CN_S_START_LOCATION = req.Location_From, |
| | | CN_S_END_LOCATION = req.Location_To, |
| | | CN_T_CREATE = DateTime.Now, |
| | | CN_C_COMPLETE = Constants.N, |
| | | CN_C_SEND_MES = Constants.N, |
| | | CN_F_QUANTITY = Convert.ToDecimal(req.CURRENT_AMOUNT), |
| | | CN_N_REQUEST_TYPE = 0,//req.RequestType, |
| | | CN_S_TRAY_TYPE = "0"//req.LoadType |
| | | }; |
| | | } |
| | | |
| | | if (!externalRes.success) |
| | | { |
| | | //写任务执行表,并回报mes |
| | | if (externalRes.errCode == "7" || externalRes.errCode == "8") |
| | | { |
| | | |
| | | _serviceExec.CN_C_COMPLETE = Constants.Y; |
| | | _serviceExec.CN_C_SEND_MES = Constants.Y; |
| | | _serviceExec.CN_S_MSG = externalRes.errMsg; |
| | | try |
| | | { |
| | | Log.Info("出作业区开始,传参:", JsonConvert.SerializeObject(outWorkAreaEntitys)); |
| | | externalRes = BLLCreator.Create<WmsApiBaseBLL>().OutWorkArea(outWorkAreaEntitys); |
| | | taskNo = outModel.taskNo; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Log.Error("出作业区失败,传参:", JsonConvert.SerializeObject(outWorkAreaEntitys) + ex.ToString()); |
| | | ors.Add(OperateResult.Error("出作业区失败:" + ex.Message, req)); |
| | | continue; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | ors.Add(OperateResult.Error("未知的出入库类型:" + direction, req)); |
| | | continue; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | // 不需要创建wms任务的执行流程,标识为成功 |
| | | externalRes.success = true; |
| | | } |
| | | |
| | | var _serviceExec = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_TASK_NO = req.task_no |
| | | }); |
| | | if (_serviceExec != null) |
| | | { |
| | | _serviceExec.Update = true; |
| | | } |
| | | else |
| | | { |
| | | _serviceExec = new TN_WM_SERVICE_EXECEntity() |
| | | { |
| | | CN_S_TASK_NO = req.task_no, |
| | | CN_S_ITEM_CODE = req.PROD_NO, |
| | | CN_S_ITEM_NAME = "", |
| | | CN_S_TASK_TYPE = "移送", |
| | | CN_S_TRANS_TYPE = req.BUSI_TYPE_NAME, |
| | | CN_S_TRAY_CODE = req.TurnCardNum, |
| | | CN_N_PRIORITY = req.Priority, |
| | | CN_S_START_LOCATION = req.Location_From, |
| | | CN_S_END_LOCATION = req.Location_To, |
| | | CN_T_CREATE = DateTime.Now, |
| | | CN_C_COMPLETE = Constants.N, |
| | | CN_C_SEND_MES = Constants.N, |
| | | CN_F_QUANTITY = Convert.ToDecimal(req.CURRENT_AMOUNT), |
| | | CN_N_REQUEST_TYPE = null, |
| | | CN_S_TRAY_TYPE = "" |
| | | }; |
| | | } |
| | | |
| | | if (!externalRes.success) |
| | | { |
| | | _serviceExec.CN_C_COMPLETE = Constants.N; |
| | | _serviceExec.CN_C_SEND_MES = Constants.N; |
| | | _serviceExec.CN_S_MSG = externalRes.errMsg; |
| | | } |
| | | |
| | | var _or = TransportSuccess(_serviceExec); |
| | | var _or = BLLCreator.Create<ZCMiddleOperateBll>().TransportSuccess(req, _serviceExec, taskNo); |
| | | |
| | | if (!_or.Success) |
| | | { |
| | | Log.DomainInfo("TransportSuccess error", _or.Msg); |
| | | Log.DomainInfo("externalRes Error: " + externalRes.errMsg, JsonConvert.SerializeObject(req)); |
| | | |
| | | ors.Add(OperateResult.Error("TransportSuccess error", _or.Msg)); |
| | | } |
| | | else |
| | | { |
| | | if (externalRes.errCode == "7" || externalRes.errCode == "8") |
| | | if (!_or.Success) |
| | | { |
| | | ors.Add(OperateResult.Warning("已反馈至mes,消息: " + externalRes.errMsg, req)); |
| | | Log.DomainInfo("TransportSuccess error", _or.Msg); |
| | | Log.DomainInfo("externalRes Error: " + externalRes.errMsg, JsonConvert.SerializeObject(req)); |
| | | |
| | | ors.Add(OperateResult.Error("TransportSuccess error", _or.Msg)); |
| | | } |
| | | else |
| | | { |
| | | ors.Add(OperateResult.Error("externalRes Error: " + externalRes.errMsg, req)); |
| | | } |
| | | } |
| | | } |
| | | else//成功的话写移送任务日志 |
| | | { |
| | | var ok = externalRes.okList[0]; |
| | | |
| | | _serviceExec.CN_S_START_LOCATION = ok.startBit; |
| | | _serviceExec.CN_S_END_LOCATION = ok.endBit; |
| | | _serviceExec.CN_C_COMPLETE = Constants.Y; |
| | | _serviceExec.CN_C_SEND_MES = Constants.Y; |
| | | _serviceExec.CN_S_MSG = "下达成功"; |
| | | var _or = TransportSuccess(_serviceExec); |
| | | if (!_or.Success) |
| | | else |
| | | { |
| | | ors.Add(OperateResult.Warning("下达成功,更新移送任务日志失败:" + _or.Msg, req)); |
| | | continue; |
| | | var ok = externalRes.okList[0]; |
| | | |
| | | _serviceExec.CN_S_START_LOCATION = ok.startBit; |
| | | _serviceExec.CN_S_END_LOCATION = ok.endBit; |
| | | _serviceExec.CN_C_COMPLETE = Constants.Y; |
| | | _serviceExec.CN_C_SEND_MES = Constants.Y; |
| | | _serviceExec.CN_S_MSG = "下达成功"; |
| | | |
| | | req.Data_status = req.SECTION == TaskSectionConstants.COMPLETE ? 2 : 1; |
| | | req.NeedTrig = Constants.N; |
| | | req.SECTION = section; |
| | | |
| | | var _or = BLLCreator.Create<ZCMiddleOperateBll>().TransportSuccess(req, _serviceExec, taskNo); |
| | | |
| | | if (!_or.Success) |
| | | { |
| | | ors.Add(OperateResult.Warning("下达成功,更新移送任务日志失败:" + _or.Msg, req)); |
| | | continue; |
| | | } |
| | | ors.Add(OperateResult.Succeed("下达成功", req)); |
| | | } |
| | | ors.Add(OperateResult.Succeed("下达成功", req)); |
| | | |
| | | Log.DomainInfo("移送任务 结果", JsonConvert.SerializeObject(ors)); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | ors.Add(OperateResult.Error("移送任务失败:" + ex.Message, req)); |
| | | continue; |
| | | } |
| | | } |
| | | Log.DomainInfo("移送任务 结果", JsonConvert.SerializeObject(ors)); |
| | |
| | | return ors; |
| | | } |
| | | #endregion |
| | | |
| | | public string NextSection(TN_MES_TASK task) |
| | | { |
| | | if (task.BUSI_TYPE == "1") |
| | | { |
| | | if (string.IsNullOrEmpty(task.SECTION)) |
| | | return TaskSectionConstants.BCP_KTCK; |
| | | else if (task.SECTION == TaskSectionConstants.BCP_KTCK) |
| | | return TaskSectionConstants.BCP_MTRK; |
| | | else if (task.SECTION == TaskSectionConstants.BCP_MTRK) |
| | | return TaskSectionConstants.COMPLETE; |
| | | else |
| | | return TaskSectionConstants.ERROR; |
| | | } |
| | | else if (task.BUSI_TYPE == "2") |
| | | { |
| | | if (string.IsNullOrEmpty(task.SECTION)) |
| | | return TaskSectionConstants.CXJ_BCPHK; |
| | | else if (task.SECTION == TaskSectionConstants.CXJ_BCPHK) |
| | | return TaskSectionConstants.COMPLETE; |
| | | else |
| | | return TaskSectionConstants.ERROR; |
| | | } |
| | | else if (task.BUSI_TYPE == "3") |
| | | { |
| | | if (string.IsNullOrEmpty(task.SECTION)) |
| | | return TaskSectionConstants.CXJ_KTHK_RECORD; |
| | | else if (task.SECTION == TaskSectionConstants.CXJ_KTHK_RECORD) |
| | | return TaskSectionConstants.COMPLETE; |
| | | else |
| | | return TaskSectionConstants.ERROR; |
| | | } |
| | | else if (task.BUSI_TYPE == "4") |
| | | { |
| | | if (string.IsNullOrEmpty(task.SECTION)) |
| | | return TaskSectionConstants.CXJ_MTCK; |
| | | else if (task.SECTION == TaskSectionConstants.CXJ_MTCK) |
| | | return TaskSectionConstants.CXJ_KTHK_KTRK; |
| | | else if (task.SECTION == TaskSectionConstants.CXJ_KTHK_KTRK) |
| | | return TaskSectionConstants.COMPLETE; |
| | | else |
| | | return TaskSectionConstants.ERROR; |
| | | } |
| | | else if (task.BUSI_TYPE == "5") |
| | | { |
| | | if (string.IsNullOrEmpty(task.SECTION)) |
| | | return TaskSectionConstants.DS_BCPKTHK; |
| | | else if (task.SECTION == TaskSectionConstants.DS_BCPKTHK) |
| | | return TaskSectionConstants.COMPLETE; |
| | | else |
| | | return TaskSectionConstants.ERROR; |
| | | } |
| | | else if (task.BUSI_TYPE == "6") |
| | | { |
| | | if (string.IsNullOrEmpty(task.SECTION)) |
| | | return TaskSectionConstants.DS_MTCK; |
| | | else if (task.SECTION == TaskSectionConstants.DS_MTCK) |
| | | return TaskSectionConstants.COMPLETE; |
| | | else |
| | | return TaskSectionConstants.ERROR; |
| | | } |
| | | else |
| | | { |
| | | return TaskSectionConstants.ERROR; |
| | | } |
| | | } |
| | | |
| | | #region 判断是否在工作时间 |
| | | /// <summary> |
| | |
| | | |
| | | //传递参数 |
| | | List<InWorkAreaEntity> inWorkAreaEntitys = new List<InWorkAreaEntity>(); |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | InWorkAreaEntity model = new InWorkAreaEntity(); |
| | |
| | | { |
| | | try |
| | | { |
| | | //取未执行、完成一半、完成部分的自管任务 |
| | | //取未执行的自管任务 |
| | | var tasks = BLLCreator.CreateDapper<TN_WM_TASKEntity>().GetList(new |
| | | { |
| | | CN_S_TASK_FLAG = Constants.TaskFlag_ZG, |
| | | CN_S_STATE = new List<string>() { Constants.TaskState_NoExecuted, Constants.TaskState_CompleteHalf, Constants.TaskState_CompletePart } |
| | | CN_S_STATE = new List<string>() { Constants.TaskState_NoExecuted, Constants.TaskState_CompleteHalf } |
| | | }); |
| | | |
| | | // 接驳位配置 |
| | | var mes_tasks = BLLCreator.CreateDapper<TN_MES_TASK>().GetList(new |
| | | { |
| | | task_no = tasks.ConvertAll(t => t.CN_S_EXT1).ToList() |
| | | }); |
| | | |
| | | var connectBitStr = JsonHelper.GetValue("connectBit"); |
| | | if (string.IsNullOrEmpty(connectBitStr)) |
| | | throw new Exception("未找到配置:connectBit"); |
| | | |
| | | var connectBits = JsonConvert.DeserializeObject<List<ConnectBitDto>>(connectBitStr); |
| | | |
| | | List<OperateResult> ors = new List<OperateResult>(); |
| | | foreach (var task in tasks) |
| | | { |
| | | try |
| | | { |
| | | var connectBits = JsonConvert.DeserializeObject<List<ConnectBitDto>>(connectBitStr); |
| | | |
| | | OperateResult or = OperateResult.Error("未知错误"); |
| | | |
| | | #region 半成品 |
| | | |
| | | #region 空托出库 |
| | | |
| | | if (task.CN_S_EXT3 == TaskSectionConstants.BCP_KTCK) |
| | | var mes_task = mes_tasks.FirstOrDefault(t => t.task_no == task.CN_S_EXT1); |
| | | if (mes_task == null) |
| | | { |
| | | // 空托出库的接驳位 |
| | | var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.KTCK); |
| | | if (task.CN_S_EXT2 == TaskFlagConstants.ROOT) |
| | | ors.Add(OperateResult.Error("从TN_MES_TASK表中未找到此任务的来源MES任务,任务编号:" + task.CN_S_TASK_NO)); |
| | | continue; |
| | | } |
| | | // 出库主任务是同时下两条子任务 |
| | | if (mes_task.SECTION == TaskSectionConstants.BCP_KTCK || |
| | | mes_task.SECTION == TaskSectionConstants.CXJ_MTCK || |
| | | mes_task.SECTION == TaskSectionConstants.DS_MTCK) |
| | | { |
| | | string tasktype = mes_task.SECTION == TaskSectionConstants.BCP_KTCK ? ConnectBitConstants.KTCK : mes_task.SECTION == TaskSectionConstants.CXJ_MTCK ? ConnectBitConstants.MTCK : mes_task.SECTION == TaskSectionConstants.DS_MTCK ? ConnectBitConstants.DSCK : ""; |
| | | //立库货位 |
| | | string lkBit = task.CN_S_START_BIT; |
| | | |
| | | var locationBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new |
| | | { |
| | | // 创建两条并行子任务 |
| | | or = ExecBCP_KTCK_Add(task, connectBit); |
| | | CN_S_LOCATION_CODE = lkBit |
| | | }); |
| | | if (locationBit == null) |
| | | throw new Exception("未找到立库货位:" + lkBit); |
| | | var _bit = connectBits.Find(f => f.tasktype == tasktype); |
| | | if (_bit == null) |
| | | throw new Exception("未找到配置类型为:" + tasktype + "的接驳位"); |
| | | |
| | | var connectBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_LOCATION_CODE = _bit.bit |
| | | }); |
| | | if (connectBit == null) |
| | | throw new Exception("未找到接驳位货位:" + _bit.bit); |
| | | if (connectBit.CN_S_LOCATION_STATE != Constants.Location_State_Normal) |
| | | throw new Exception("接驳位:" + _bit.bit + "存在未执行完的任务"); |
| | | |
| | | var readytBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_LOCATION_CODE = _bit.readybit |
| | | }); |
| | | if (readytBit == null) |
| | | throw new Exception("未找到准备点货位:" + _bit.bit); |
| | | if (readytBit.CN_S_LOCATION_STATE != Constants.Location_State_Normal) |
| | | throw new Exception("准备点:" + _bit.bit + "存在未执行完的任务"); |
| | | |
| | | //赋值接驳位 |
| | | task.CN_S_CONNECT_BIT = _bit.bit; |
| | | task.CN_S_EXT2 = _bit.readybit; |
| | | |
| | | string taskNo1 = task.CN_S_TASK_NO + "_1"; |
| | | //创建第一个任务 |
| | | TN_WM_TASKEntity taskEntity1 = new TN_WM_TASKEntity() |
| | | { |
| | | CN_S_TASK_NO = taskNo1, |
| | | CN_S_TRAY_CODE = task.CN_S_TRAY_CODE, |
| | | CN_S_START_BIT = task.CN_S_START_BIT, |
| | | CN_S_END_BIT = task.CN_S_CONNECT_BIT, |
| | | CN_S_STATE = Constants.TaskState_NoExecuted, |
| | | CN_S_BF_TASK_NO = "", |
| | | CN_S_AF_TASK_NO = "", |
| | | CN_S_STOCK_CODE = task.CN_S_STOCK_CODE, |
| | | CN_S_START_AREA = task.CN_S_START_AREA, |
| | | CN_S_END_AREA = connectBit.CN_S_AREA_CODE, |
| | | CN_N_PRIORITY = 1, |
| | | CN_S_CREATOR = "sys", |
| | | CN_S_CREATOR_BY = "sys", |
| | | CN_T_CREATE = DateTime.Now, |
| | | CN_T_MODIFY = DateTime.Now, |
| | | CN_S_REMARK = "", |
| | | CN_S_TASK_FLAG = Constants.TaskFlag_LG, |
| | | CN_S_TASK_TYPE = "转运" |
| | | }; |
| | | string taskNo2 = task.CN_S_TASK_NO + "_2"; |
| | | //创建第二个任务 |
| | | TN_WM_TASKEntity taskEntity2 = new TN_WM_TASKEntity() |
| | | { |
| | | CN_S_TASK_NO = taskNo2, |
| | | CN_S_TRAY_CODE = task.CN_S_TRAY_CODE, |
| | | CN_S_START_BIT = task.CN_S_CONNECT_BIT, |
| | | CN_S_END_BIT = task.CN_S_END_BIT, |
| | | CN_S_STATE = Constants.TaskState_NoExecuted, |
| | | CN_S_BF_TASK_NO = "", |
| | | CN_S_AF_TASK_NO = "", |
| | | CN_S_STOCK_CODE = task.CN_S_STOCK_CODE, |
| | | CN_S_START_AREA = connectBit.CN_S_AREA_CODE, |
| | | CN_S_END_AREA = task.CN_S_END_AREA, |
| | | CN_N_PRIORITY = 1, |
| | | CN_S_CREATOR = "sys", |
| | | CN_S_CREATOR_BY = "sys", |
| | | CN_T_CREATE = DateTime.Now, |
| | | CN_T_MODIFY = DateTime.Now, |
| | | CN_S_REMARK = "", |
| | | CN_S_TASK_FLAG = Constants.TaskFlag_AGV, |
| | | CN_S_TASK_TYPE = "转运" |
| | | }; |
| | | var or = UseTransaction(trans => |
| | | { |
| | | //增加子任务 |
| | | CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity1, trans); |
| | | //更新接驳位状态 |
| | | CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new |
| | | { |
| | | CN_S_LOCATION_STATE = Constants.Location_State_InLock |
| | | }, new |
| | | { |
| | | CN_S_LOCATION_CODE = taskEntity1.CN_S_END_BIT |
| | | }, trans); |
| | | // 更新主任务接驳位 状态置为执行中 记录接驳位和准备点 |
| | | CreateDapperDAL<TN_WM_TASKEntity>().Update(new |
| | | { |
| | | CN_S_CONNECT_BIT = task.CN_S_CONNECT_BIT, |
| | | CN_S_EXT1 = task.CN_S_EXT1, |
| | | CN_S_STATE = Constants.TaskState_Executing |
| | | }, new |
| | | { |
| | | CN_S_TASK_NO = task.CN_S_TASK_NO |
| | | }, trans); |
| | | //立库任务 需要调用wcs接口 |
| | | // 发送Wcs任务 |
| | | Log.Detail(LogType.LogPara("调用WCS接口执行任务"), "任务信息:" + JsonConvert.SerializeObject(taskEntity1)); |
| | | OperateResult re = BLLCreator.Create<OtherSysApi>().SendWcsCreateTask(taskEntity1); |
| | | Log.Detail(LogType.LogPara("调用WCS接口执行任务"), "执行结果:" + JsonConvert.SerializeObject(re)); |
| | | if (!re.Success) |
| | | { |
| | | throw new Exception(re.Msg); |
| | | } |
| | | |
| | | //增加子任务 |
| | | CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity2, trans); |
| | | //更新准备点状态 |
| | | CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new |
| | | { |
| | | CN_S_LOCATION_STATE = Constants.Location_State_OutLock |
| | | }, new |
| | | { |
| | | CN_S_LOCATION_CODE = taskEntity2.CN_S_START_BIT |
| | | }, trans); |
| | | |
| | | //agv任务 |
| | | re = new OtherSysApi().SendAmsCreateTask(taskEntity2); |
| | | if (!re.Success) |
| | | { |
| | | throw new Exception(re.Msg); |
| | | } |
| | | }); |
| | | if (!or.Success) throw new Exception(or.Msg); |
| | | } |
| | | else |
| | | { |
| | | //未执行表示第一个任务 |
| | | if (task.CN_S_STATE == Constants.TaskState_NoExecuted) |
| | | { |
| | | //立库货位 |
| | | string lkBit = string.Empty; |
| | | //根据任务类型判断立库货位 |
| | | if (task.CN_S_TASK_TYPE == Constants.Out) |
| | | { |
| | | lkBit = task.CN_S_START_BIT; |
| | | } |
| | | else if (task.CN_S_TASK_TYPE == Constants.In) |
| | | { |
| | | lkBit = task.CN_S_END_BIT; |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("自管任务任务类型不正确"); |
| | | } |
| | | |
| | | var locationBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_LOCATION_CODE = lkBit |
| | | }); |
| | | if (locationBit == null) |
| | | throw new Exception("未找到立库货位:" + lkBit); |
| | | var _bit = connectBits.Find(f => f.tunnel == Util.ToString(locationBit.CN_S_ROADWAY).Trim()); |
| | | if (_bit == null) |
| | | throw new Exception("未找到配置巷道:" + locationBit.CN_S_ROADWAY + "的接驳位"); |
| | | |
| | | var connectBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_LOCATION_CODE = _bit.bit |
| | | }); |
| | | if (connectBit == null) |
| | | throw new Exception("未找到接驳位货位:" + _bit.bit); |
| | | if (connectBit.CN_S_LOCATION_STATE != Constants.Location_State_Normal) |
| | | throw new Exception("接驳位:" + _bit.bit + "存在未执行完的任务"); |
| | | |
| | | //赋值接驳位 |
| | | task.CN_S_CONNECT_BIT = _bit.bit; |
| | | |
| | | string taskNo = task.CN_S_TASK_NO + "_1"; |
| | | //创建第一个任务 |
| | | TN_WM_TASKEntity taskEntity = new TN_WM_TASKEntity() |
| | | { |
| | | CN_S_TASK_NO = taskNo, |
| | | CN_S_TRAY_CODE = task.CN_S_TRAY_CODE, |
| | | CN_S_START_BIT = task.CN_S_START_BIT, |
| | | CN_S_END_BIT = task.CN_S_CONNECT_BIT, |
| | | CN_S_STATE = Constants.TaskState_NoExecuted, |
| | | CN_S_BF_TASK_NO = "", |
| | | CN_S_AF_TASK_NO = "", |
| | | CN_S_STOCK_CODE = task.CN_S_STOCK_CODE, |
| | | CN_S_START_AREA = task.CN_S_START_AREA, |
| | | CN_S_END_AREA = connectBit.CN_S_AREA_CODE, |
| | | CN_N_PRIORITY = 1, |
| | | CN_S_CREATOR = "sys", |
| | | CN_S_CREATOR_BY = "sys", |
| | | CN_T_CREATE = DateTime.Now, |
| | | CN_T_MODIFY = DateTime.Now, |
| | | CN_S_REMARK = "", |
| | | CN_S_TASK_FLAG = task.CN_S_TASK_TYPE == Constants.Out ? Constants.TaskFlag_LG : Constants.TaskFlag_AGV, |
| | | CN_S_TASK_TYPE = "转运" |
| | | }; |
| | | var or = UseTransaction(trans => |
| | | { |
| | | //增加子任务 |
| | | CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity, trans); |
| | | //更新接驳位状态 |
| | | CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new |
| | | { |
| | | CN_S_LOCATION_STATE = Constants.Location_State_InLock |
| | | }, new |
| | | { |
| | | CN_S_LOCATION_CODE = taskEntity.CN_S_END_BIT |
| | | }, trans); |
| | | // 更新主任务接驳位 状态置为执行中 |
| | | CreateDapperDAL<TN_WM_TASKEntity>().Update(new |
| | | { |
| | | CN_S_CONNECT_BIT = task.CN_S_CONNECT_BIT, |
| | | CN_S_STATE = Constants.TaskState_Executing |
| | | }, new |
| | | { |
| | | CN_S_TASK_NO = task.CN_S_TASK_NO |
| | | }, trans); |
| | | //立库任务 需要调用wcs接口 |
| | | if (taskEntity.CN_S_TASK_FLAG == Constants.TaskFlag_LG) |
| | | { |
| | | //to do... |
| | | #region 待测试 |
| | | //OperateResult re = new OtherSysApi().SendWcsCreateTask(taskEntity, _bit); |
| | | //if (!re.Success) |
| | | //{ |
| | | // throw new Exception(re.Msg); |
| | | //} |
| | | #endregion |
| | | } |
| | | else//agv任务 |
| | | { |
| | | //OperateResult re = new OtherSysApi().SendAmsCreateTask(taskEntity); |
| | | //if (!re.Success) |
| | | //{ |
| | | // throw new Exception(re.Msg); |
| | | //} |
| | | } |
| | | }); |
| | | if (!or.Success) throw new Exception(or.Msg); |
| | | } |
| | | else if (task.CN_S_EXT2 == TaskFlagConstants.BCP_KTCK_SUB_1) |
| | | else//执行一半的任务,开始创建第二个任务 |
| | | { |
| | | // 执行第一条子任务 |
| | | or = ExecBCP_KTCK_Sub1(task, connectBit); |
| | | } |
| | | else if (task.CN_S_EXT2 == TaskFlagConstants.BCP_KTCK_SUB_2) |
| | | { |
| | | // 执行第二条任务 |
| | | or = ExecBCP_KTCK_Sub2(task, connectBit); |
| | | string taskNo = task.CN_S_TASK_NO + "_2"; |
| | | var connectBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_LOCATION_CODE = task.CN_S_CONNECT_BIT |
| | | }); |
| | | var _bit = connectBits.Find(f => f.tunnel == Util.ToString(connectBit.CN_S_ROADWAY).Trim()); |
| | | if (_bit == null) |
| | | throw new Exception("未找到配置巷道:" + connectBit.CN_S_ROADWAY + "的接驳位"); |
| | | //创建第二个任务 |
| | | TN_WM_TASKEntity taskEntity = new TN_WM_TASKEntity() |
| | | { |
| | | CN_S_TASK_NO = taskNo, |
| | | CN_S_TRAY_CODE = task.CN_S_TRAY_CODE, |
| | | CN_S_START_BIT = task.CN_S_CONNECT_BIT, |
| | | CN_S_END_BIT = task.CN_S_END_BIT, |
| | | CN_S_STATE = Constants.TaskState_NoExecuted, |
| | | CN_S_BF_TASK_NO = "", |
| | | CN_S_AF_TASK_NO = "", |
| | | CN_S_STOCK_CODE = task.CN_S_STOCK_CODE, |
| | | CN_S_START_AREA = connectBit.CN_S_AREA_CODE, |
| | | CN_S_END_AREA = task.CN_S_END_AREA, |
| | | CN_N_PRIORITY = 1, |
| | | CN_S_CREATOR = "sys", |
| | | CN_S_CREATOR_BY = "sys", |
| | | CN_T_CREATE = DateTime.Now, |
| | | CN_T_MODIFY = DateTime.Now, |
| | | CN_S_REMARK = "", |
| | | CN_S_TASK_FLAG = task.CN_S_TASK_TYPE == Constants.Out ? Constants.TaskFlag_AGV : Constants.TaskFlag_LG, |
| | | CN_S_TASK_TYPE = "转运" |
| | | }; |
| | | |
| | | var or = UseTransaction(trans => |
| | | { |
| | | //增加子任务 |
| | | CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity, trans); |
| | | //更新接驳位状态 |
| | | CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new |
| | | { |
| | | CN_S_LOCATION_STATE = Constants.Location_State_OutLock |
| | | }, new |
| | | { |
| | | CN_S_LOCATION_CODE = taskEntity.CN_S_START_BIT |
| | | }, trans); |
| | | // 更新主任务接驳位 状态置为执行中 |
| | | CreateDapperDAL<TN_WM_TASKEntity>().Update(new |
| | | { |
| | | CN_S_STATE = Constants.TaskState_Executing |
| | | }, new |
| | | { |
| | | CN_S_TASK_NO = task.CN_S_TASK_NO |
| | | }, trans); |
| | | |
| | | //立库任务 需要调用wcs接口 |
| | | if (taskEntity.CN_S_TASK_FLAG == Constants.TaskFlag_LG) |
| | | { |
| | | //to do... |
| | | #region 待测试 |
| | | //OperateResult re = new OtherSysApi().SendWcsCreateTask(taskEntity, _bit); |
| | | //if (!re.Success) |
| | | //{ |
| | | // throw new Exception(re.Msg); |
| | | //} |
| | | #endregion |
| | | } |
| | | else//agv任务 |
| | | { |
| | | //OperateResult re = new OtherSysApi().SendAmsCreateTask(taskEntity); |
| | | //if (!re.Success) |
| | | //{ |
| | | // throw new Exception(re.Msg); |
| | | //} |
| | | } |
| | | }); |
| | | if (!or.Success) throw new Exception(or.Msg); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 满托入库 |
| | | |
| | | else if (task.CN_S_EXT3 == TaskSectionConstants.BCP_MTRK) |
| | | { |
| | | // 满托入库的接驳位 |
| | | var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.MTRK); |
| | | if (task.CN_S_EXT2 == TaskFlagConstants.ROOT) |
| | | { |
| | | // 创建第一条子任务 |
| | | or = ExecBCP_MTRK_AddSub1(task, connectBit); |
| | | } |
| | | else if (task.CN_S_EXT2 == TaskFlagConstants.BCP_MTRK_SUB_1) |
| | | { |
| | | // 执行第一条子任务 |
| | | or = ExecBCP_MTRK_Sub1(task, connectBit); |
| | | } |
| | | else if (task.CN_S_EXT2 == TaskFlagConstants.BCP_MTRK_SUB_2) |
| | | { |
| | | // 执行第二条子任务 |
| | | or = ExecBCP_MTRK_Sub2(task, connectBit); |
| | | } |
| | | } |
| | | else if (task.CN_S_EXT3 == TaskSectionConstants.BCP_MTRK_SECOND) |
| | | { |
| | | // 满托入库的接驳位 |
| | | var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.MTRK); |
| | | if (task.CN_S_EXT2 == TaskFlagConstants.ROOT) |
| | | { |
| | | // 创建第二条子任务 |
| | | or = ExecBCP_MTRK_AddSub2(task, connectBit); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #endregion |
| | | |
| | | #region 成型机 |
| | | |
| | | #region 半成品回库 |
| | | |
| | | else if (task.CN_S_EXT3 == TaskSectionConstants.CXJ_BCPHK) |
| | | { |
| | | // 满托入库的接驳位 |
| | | var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.MTRK); |
| | | if (task.CN_S_EXT2 == TaskFlagConstants.ROOT) |
| | | { |
| | | // 创建第一条子任务 |
| | | ExecCXJ_BCPHK_AddSub1(task, connectBit); |
| | | } |
| | | else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_BCPHK_SUB_1) |
| | | { |
| | | // 执行第一条子任务 |
| | | ExecCXJ_BCPHK_Sub1(task, connectBit); |
| | | } |
| | | else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_BCPHK_SUB_2) |
| | | { |
| | | // 执行第二条子任务 |
| | | ExecCXJ_BCPHK_Sub2(task, connectBit); |
| | | } |
| | | } |
| | | else if (task.CN_S_EXT3 == TaskSectionConstants.CXJ_BCPHK_SECOND) |
| | | { |
| | | // 满托入库的接驳位 |
| | | var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.MTRK); |
| | | if (task.CN_S_EXT2 == TaskFlagConstants.ROOT) |
| | | { |
| | | // 创建第二条子任务 |
| | | ExecCXJ_BCPHK_AddSub2(task, connectBit); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 空托回库 |
| | | |
| | | #region 记录 |
| | | |
| | | else if (task.CN_S_EXT3 == TaskSectionConstants.CXJ_KTHK_RECORD) |
| | | { |
| | | // 只用于记录 |
| | | // 在同一线边货位的满托出库任务完成后执行 |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 空托入库 |
| | | |
| | | else if (task.CN_S_EXT3 == TaskSectionConstants.CXJ_KTHK_KTRK) |
| | | { |
| | | // 空托入库的接驳位 |
| | | var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.KTRK); |
| | | if (task.CN_S_EXT2 == TaskFlagConstants.ROOT) |
| | | { |
| | | // 创建第一条子任务 |
| | | ExecCXJ_KTHK_KTRK_AddSub1(task, connectBit); |
| | | } |
| | | else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_BCPHK_SUB_1) |
| | | { |
| | | // 执行第一条子任务 |
| | | ExecCXJ_KTHK_KTRK_Sub1(task, connectBit); |
| | | } |
| | | else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_BCPHK_SUB_2) |
| | | { |
| | | // 执行第二条子任务 |
| | | ExecCXJ_KTHK_KTRK_Sub2(task, connectBit); |
| | | } |
| | | } |
| | | else if (task.CN_S_EXT3 == TaskSectionConstants.CXJ_KTHK_KTRK_SECOND) |
| | | { |
| | | // 空托入库的接驳位 |
| | | var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.KTRK); |
| | | if (task.CN_S_EXT2 == TaskFlagConstants.ROOT) |
| | | { |
| | | // 创建第二条子任务 |
| | | ExecCXJ_KTHK_KTRK_AddSub2(task, connectBit); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #endregion |
| | | |
| | | #region 满托出库 |
| | | |
| | | else if (task.CN_S_EXT3 == TaskSectionConstants.CXJ_MTCK) |
| | | { |
| | | // 满托出库的接驳位 |
| | | var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.MTCK); |
| | | if (task.CN_S_EXT2 == TaskFlagConstants.ROOT) |
| | | { |
| | | // 创建两条并行子任务 |
| | | or = ExecCXJ_MTCK_Add(task, connectBit); |
| | | } |
| | | else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_MTCK_SUB_1) |
| | | { |
| | | // 执行第一条子任务 |
| | | or = ExecCXJ_MTCK_Sub1(task, connectBit); |
| | | } |
| | | else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_MTCK_SUB_2) |
| | | { |
| | | // 执行第二条任务 |
| | | or = ExecCXJ_MTCK_Sub2(task, connectBit); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #endregion |
| | | |
| | | #region 带束 |
| | | |
| | | #region 半成品/空托回库 |
| | | |
| | | else if (task.CN_S_EXT3 == TaskSectionConstants.DS_BCPKTHK) |
| | | { |
| | | // 带束入库的接驳位 |
| | | var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.DSRK); |
| | | if (task.CN_S_EXT2 == TaskFlagConstants.ROOT) |
| | | { |
| | | // 创建第一条子任务 |
| | | ExecDS_BCPKTHK_AddSub1(task, connectBit); |
| | | } |
| | | else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_BCPHK_SUB_1) |
| | | { |
| | | // 执行第一条子任务 |
| | | ExecDS_BCPKTHK_Sub1(task, connectBit); |
| | | } |
| | | else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_BCPHK_SUB_2) |
| | | { |
| | | // 执行第二条子任务 |
| | | ExecDS_BCPKTHK_Sub2(task, connectBit); |
| | | } |
| | | } |
| | | else if (task.CN_S_EXT3 == TaskSectionConstants.DS_BCPKTHK_SECOND) |
| | | { |
| | | // 带束入库的接驳位 |
| | | var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.DSRK); |
| | | if (task.CN_S_EXT2 == TaskFlagConstants.ROOT) |
| | | { |
| | | // 创建第二条子任务 |
| | | ExecDS_BCPKTHK_AddSub2(task, connectBit); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 满托出库 |
| | | |
| | | else if (task.CN_S_EXT3 == TaskSectionConstants.DS_MTCK) |
| | | { |
| | | // 带束出库的接驳位 |
| | | var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.DSCK); |
| | | if (task.CN_S_EXT2 == TaskFlagConstants.ROOT) |
| | | { |
| | | // 创建两条并行子任务 |
| | | or = ExecCXJ_MTCK_Add(task, connectBit); |
| | | } |
| | | else if (task.CN_S_EXT2 == TaskFlagConstants.DS_MTCK_SUB_1) |
| | | { |
| | | // 执行第一条子任务 |
| | | or = ExecCXJ_MTCK_Sub1(task, connectBit); |
| | | } |
| | | else if (task.CN_S_EXT2 == TaskFlagConstants.DS_MTCK_SUB_2) |
| | | { |
| | | // 执行第二条任务 |
| | | or = ExecCXJ_MTCK_Sub2(task, connectBit); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #endregion |
| | | ors.Add(OperateResult.Succeed("生成成功")); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | catch (Exception ex) |
| | | { |
| | | Log.DomainInfo("SelfManageTask Error", ex.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 遍历中间表,根据业务类型创建WMS任务 |
| | | /// </summary> |
| | | public void ExecTransferTask() |
| | | { |
| | | // 已接收待处理任务 |
| | | var receiveTasks = BLLCreator.CreateDapper<TN_MES_TASK>().GetList(new TN_MES_TASK |
| | | { |
| | | NeedTrig = "Y" |
| | | }).OrderBy(t => t.CreateDate).ToList(); |
| | | |
| | | List<OperateResult> ors = new List<OperateResult>(); |
| | | |
| | | foreach (var task in receiveTasks) |
| | | { |
| | | try |
| | | { |
| | | // 从mongo中获取货位相关的信息 - 起始货位 |
| | | AutoBomLocationEntity start_location = CreateDAL<TN_AB_STOCK_LOCATIONDAL>().GetModel(task.Location_From); |
| | | // 从mongo中获取货位相关的信息 - 终点货位 |
| | | AutoBomLocationEntity end_location = CreateDAL<TN_AB_STOCK_LOCATIONDAL>().GetModel(task.Location_To); |
| | | |
| | | // 主任务执行流程中的起始阶段 |
| | | string section = ""; |
| | | switch (task.BUSI_TYPE) |
| | | { |
| | | case "1": |
| | | section = TaskSectionConstants.BCP_KTCK; |
| | | break; |
| | | case "2": |
| | | section = TaskSectionConstants.CXJ_BCPHK; |
| | | break; |
| | | case "3": |
| | | section = TaskSectionConstants.CXJ_KTHK_RECORD; |
| | | break; |
| | | case "4": |
| | | section = TaskSectionConstants.CXJ_MTCK; |
| | | break; |
| | | case "5": |
| | | section = TaskSectionConstants.DS_BCPKTHK; |
| | | break; |
| | | case "6": |
| | | section = TaskSectionConstants.DS_MTCK; |
| | | break; |
| | | } |
| | | // 创建WMS主任务 |
| | | TN_WM_TASKEntity taskEntity = new TN_WM_TASKEntity() |
| | | { |
| | | CN_S_TASK_NO = task.task_no, |
| | | CN_S_TRAY_CODE = task.TurnCardNum, |
| | | CN_S_STATE = Constants.TaskState_NoExecuted, |
| | | CN_S_BF_TASK_NO = "", |
| | | CN_S_AF_TASK_NO = "", |
| | | CN_S_STOCK_CODE = start_location.CN_S_STOCK_CODE, |
| | | CN_S_START_AREA = start_location.CN_S_AREA_CODE, |
| | | CN_S_START_BIT = start_location.CN_S_LOCATION_CODE, |
| | | CN_S_END_AREA = end_location.CN_S_AREA_CODE, |
| | | CN_S_END_BIT = end_location.CN_S_LOCATION_CODE, |
| | | CN_N_PRIORITY = 1, |
| | | CN_S_CREATOR = "sys", |
| | | CN_S_CREATOR_BY = "sys", |
| | | CN_T_CREATE = DateTime.Now, |
| | | CN_T_MODIFY = DateTime.Now, |
| | | CN_S_REMARK = "", |
| | | CN_S_TASK_FLAG = Constants.TaskFlag_ZG, |
| | | CN_S_EXT1 = "", |
| | | CN_S_EXT2 = TaskFlagConstants.ROOT, |
| | | CN_S_EXT3 = section |
| | | }; |
| | | UseTransaction(trans => |
| | | { |
| | | // 增加WMS主任务 |
| | | OperateResult re = CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity); |
| | | if (!re.Success) |
| | | throw new Exception(re.Msg); |
| | | // 更新TN_MES_TASK状态 |
| | | CreateDapperDAL<TN_MES_TASK>().Update(new |
| | | { |
| | | NeedTrig = "N" |
| | | }, new { task_no = task.task_no }, trans); |
| | | if (!re.Success) |
| | | throw new Exception(re.Msg); |
| | | }); |
| | | |
| | | ors.Add(OperateResult.Succeed("生成成功")); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | ors.Add(OperateResult.Error(ex.Message)); |
| | | } |
| | | Log.DomainInfo("ExecTransferTask", JsonConvert.SerializeObject(ors)); |
| | | } |
| | | } |
| | | |
| | |
| | | /// 任务完成 |
| | | /// </summary> |
| | | public static string COMPLETE = "任务完成"; |
| | | public static string ERROR = "执行失败"; |
| | | |
| | | #region 半成品 |
| | | |
| | | /// <summary> |
| | | /// 半成品-空托出库 |
| | | /// </summary> |
| | | public static string BCP_KTCK = "空托出库"; |
| | | public static string BCP_KTCK = "半成品-空托出库"; |
| | | /// <summary> |
| | | /// 半成品-满托入库 |
| | | /// </summary> |
| | | public static string BCP_MTRK = "半成品-满托入库"; |
| | | /// <summary> |
| | | /// 半成品-满托入库-第二阶段 |
| | | /// </summary> |
| | | public static string BCP_MTRK_SECOND = "半成品-满托入库-第二阶段"; |
| | | |
| | | #endregion |
| | | |
| | |
| | | /// 成型机-半成品回库 |
| | | /// </summary> |
| | | public static string CXJ_BCPHK = "成型机-半成品回库"; |
| | | |
| | | /// <summary> |
| | | /// 成型机-半成品回库-第二阶段 |
| | | /// </summary> |
| | | public static string CXJ_BCPHK_SECOND = "成型机-半成品回库-第二阶段"; |
| | | /// <summary> |
| | | /// 成型机-空托回库-记录阶段 |
| | | /// </summary> |
| | |
| | | /// </summary> |
| | | public static string CXJ_KTHK_KTRK = "成型机-空托回库-入库阶段"; |
| | | /// <summary> |
| | | /// 成型机-空托回库-入库阶段-第二阶段 |
| | | /// </summary> |
| | | public static string CXJ_KTHK_KTRK_SECOND = "成型机-空托回库-入库阶段-第二阶段"; |
| | | /// <summary> |
| | | /// 成型机-满托出库 |
| | | /// </summary> |
| | | public static string CXJ_MTCK = "成型机-满托出库"; |
| | | /// <summary> |
| | | /// 成型机-空托入库 |
| | | /// </summary> |
| | | public static string CXJ_KTRK = "成型机-空托入库"; |
| | | |
| | | #endregion |
| | | |
| | |
| | | /// 带束-半成品/空托回库 |
| | | /// </summary> |
| | | public static string DS_BCPKTHK = "成型机带束-半成品/空托回库"; |
| | | /// <summary> |
| | | /// 带束-半成品/空托回库-第二阶段 |
| | | /// </summary> |
| | | public static string DS_BCPKTHK_SECOND = "成型机带束-半成品/空托回库-第二阶段"; |
| | | /// <summary> |
| | | /// 带束-满托出库 |
| | | /// </summary> |