jx pcn
							parent
							
								
									b8cd8e64ff
								
							
						
					
					
						commit
						5149178ddf
					
				| @ -0,0 +1,141 @@ | |||||||
|  | package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.step.jx; | ||||||
|  | 
 | ||||||
|  | import cn.estsh.i3plus.ext.mes.pcn.api.base.ISxWorkOrderExtService; | ||||||
|  | import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkOrderExt; | ||||||
|  | import cn.estsh.i3plus.ext.mes.pcn.pojo.model.WorkOrderExtModel; | ||||||
|  | import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; | ||||||
|  | import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil; | ||||||
|  | import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService; | ||||||
|  | import cn.estsh.i3plus.mes.pcn.api.iservice.base.IModuleService; | ||||||
|  | import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseStepService; | ||||||
|  | import cn.estsh.i3plus.platform.common.tool.MathOperation; | ||||||
|  | import cn.estsh.i3plus.platform.common.util.MesPcnConstWords; | ||||||
|  | import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; | ||||||
|  | import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; | ||||||
|  | import cn.estsh.i3plus.pojo.mes.model.StationResultBean; | ||||||
|  | import cn.estsh.i3plus.pojo.mes.model.StepResult; | ||||||
|  | import cn.estsh.impp.framework.boot.util.SpringContextsUtil; | ||||||
|  | import lombok.extern.slf4j.Slf4j; | ||||||
|  | import org.springframework.beans.BeanUtils; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  | import org.springframework.util.CollectionUtils; | ||||||
|  | import org.springframework.util.StringUtils; | ||||||
|  | 
 | ||||||
|  | import java.lang.reflect.Method; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @Description : 嘉兴初始化工单工步 | ||||||
|  |  * @Reference : | ||||||
|  |  * @Author : wangjie | ||||||
|  |  * @CreateDate : 2019-07-11 | ||||||
|  |  * @Modify: | ||||||
|  |  **/ | ||||||
|  | @Slf4j | ||||||
|  | @Service("jxInitOrderStepService") | ||||||
|  | public class JxInitOrderStepService extends BaseStepService { | ||||||
|  | 
 | ||||||
|  |     @Autowired | ||||||
|  |     private IFsmRouteDataService routeDataService; | ||||||
|  | 
 | ||||||
|  |     @Autowired | ||||||
|  |     private ISxWorkOrderExtService workOrderExtService; | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public StepResult execute(StationRequestBean reqBean) { | ||||||
|  | 
 | ||||||
|  |         log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxInitOrderStepService --- START --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); | ||||||
|  | 
 | ||||||
|  |         StepResult stepResult = StepResult.getSuccessComplete(); | ||||||
|  | 
 | ||||||
|  |         StationResultBean resultBean = new StationResultBean(); | ||||||
|  | 
 | ||||||
|  |         String selectWorkOrderNo = (String) doHandleModuleObjectMethod(reqBean, resultBean, "doHandleSelectWorkOrderNo", 1, null); | ||||||
|  |         String curExecWorkOrderNo = (String) doHandleModuleObjectMethod(reqBean, resultBean, "doHandleCurExecWorkOrder", 1, null); | ||||||
|  | 
 | ||||||
|  |         if (!StringUtils.isEmpty(selectWorkOrderNo)) doHandleModuleObjectMethod(reqBean, resultBean, "doHandleSelectWorkOrderNo", 3, null); | ||||||
|  |         if (!StringUtils.isEmpty(selectWorkOrderNo) && !StringUtils.isEmpty(curExecWorkOrderNo)) { | ||||||
|  |             if (selectWorkOrderNo.equals(curExecWorkOrderNo)) selectWorkOrderNo = null; | ||||||
|  |             else curExecWorkOrderNo = null; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         MesWorkOrderExt workOrderExt = null; | ||||||
|  | 
 | ||||||
|  |         if (!StringUtils.isEmpty(selectWorkOrderNo)) { | ||||||
|  |             workOrderExt = workOrderExtService.getWorkOrderExtByOrderNo(reqBean.getOrganizeCode(), selectWorkOrderNo); | ||||||
|  |             checkWorkOrderExtIsValid(reqBean, resultBean, stepResult, workOrderExt, String.format("选择的工单号[%s]", selectWorkOrderNo)); | ||||||
|  |             doCacheCurExecWorkOrderNo(reqBean, resultBean, stepResult, selectWorkOrderNo); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if (!StringUtils.isEmpty(curExecWorkOrderNo)) { | ||||||
|  |             workOrderExt = workOrderExtService.getWorkOrderExtByOrderNo(reqBean.getOrganizeCode(), curExecWorkOrderNo); | ||||||
|  |             checkWorkOrderExtIsValid(reqBean, resultBean, stepResult, workOrderExt, String.format("此前操作的工单号[%s]", curExecWorkOrderNo)); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if (null == workOrderExt || !stepResult.isCompleted()) execSendGuideAndThrowEx(reqBean, resultBean, "请选择启动状态的生产工单!"); | ||||||
|  | 
 | ||||||
|  |         cacheOrderModel(reqBean, workOrderExt); | ||||||
|  | 
 | ||||||
|  |         log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxInitOrderStepService --- SUCCESS --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); | ||||||
|  | 
 | ||||||
|  |         return stepResult; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void doCacheCurExecWorkOrderNo(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, String selectWorkOrderNo) { | ||||||
|  |         Boolean flag = (Boolean) doHandleModuleObjectMethod(reqBean, resultBean, "doHandleCurExecWorkOrder", 2, selectWorkOrderNo); | ||||||
|  |         if (!flag) execNonCompleteAndSendMsg(reqBean, resultBean, stepResult, String.format("选择的工单号[%s]初始化失败!", selectWorkOrderNo)); | ||||||
|  |         else { | ||||||
|  |             execStateModule(reqBean, resultBean); | ||||||
|  |             if (stepResult.isCompleted()) this.sendMessage(reqBean, resultBean, String.format("选择的工单号[%s]初始化成功!", selectWorkOrderNo), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void checkWorkOrderExtIsValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesWorkOrderExt workOrderExt, String suffix) { | ||||||
|  | 
 | ||||||
|  |         if (null == workOrderExt) execNonCompleteAndSendMsg(reqBean, resultBean, stepResult, String.format("%s对应的工单信息不存在!", suffix)); | ||||||
|  | 
 | ||||||
|  |         if (stepResult.isCompleted() && MesPcnExtEnumUtil.WORK_ORDER_STATUS.OPEN.getValue() != workOrderExt.getWorkOrderStatus()) | ||||||
|  |             execNonCompleteAndSendMsg(reqBean, resultBean, stepResult, String.format("%s状态[%s],不支持在此工位操作!", suffix, MesPcnExtEnumUtil.WORK_ORDER_STATUS.valueOfDescription(workOrderExt.getWorkOrderStatus()))); | ||||||
|  | 
 | ||||||
|  |         if (stepResult.isCompleted() && MathOperation.compareTo(workOrderExt.getQty(), new Double(0)) <= 0) | ||||||
|  |             execNonCompleteAndSendMsg(reqBean, resultBean, stepResult, String.format("%s计划数量为[0],不支持在此工位操作!", suffix)); | ||||||
|  | 
 | ||||||
|  |         if (!stepResult.isCompleted()) return; | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void cacheOrderModel(StationRequestBean reqBean, MesWorkOrderExt workOrderExt) { | ||||||
|  |         WorkOrderExtModel orderModel = new WorkOrderExtModel(); | ||||||
|  |         BeanUtils.copyProperties(workOrderExt, orderModel, MesPcnExtConstWords.ID); | ||||||
|  |         reqBean.getDataMap().put(MesPcnExtConstWords.WORK_ORDER, orderModel); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private Object doHandleModuleObjectMethod(StationRequestBean reqBean, StationResultBean resultBean, String methodStr, Integer flag, String value) { | ||||||
|  |         if (CollectionUtils.isEmpty(reqBean.getWcpcMap())) reqBean.setWcpcMap(routeDataService.doHandleFsmWcpcMapData(reqBean)); | ||||||
|  |         try { | ||||||
|  |             IModuleService moduleService = (IModuleService) SpringContextsUtil.getBean(reqBean.getWcpcMap().get(MesPcnConstWords.MODULE_OBJECT)); | ||||||
|  |             Method method = moduleService.getClass().getDeclaredMethod(methodStr, reqBean.getClass(), Integer.class, String.class); | ||||||
|  |             method.setAccessible(true); | ||||||
|  |             return method.invoke(this, reqBean, flag, value); | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("执行展示组件内部方法[%s]出现异常:%s", methodStr, e.getMessage())); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private Object execStateModule(StationRequestBean reqBean, StationResultBean resultBean) { | ||||||
|  |         if (CollectionUtils.isEmpty(reqBean.getWcpcMap())) reqBean.setWcpcMap(routeDataService.doHandleFsmWcpcMapData(reqBean)); | ||||||
|  |         try { | ||||||
|  |             IModuleService moduleService = (IModuleService) SpringContextsUtil.getBean(reqBean.getWcpcMap().get(MesPcnConstWords.MODULE_OBJECT)); | ||||||
|  |             Method method = moduleService.getClass().getDeclaredMethod("execStateModule", reqBean.getClass(), List.class, Map.class); | ||||||
|  |             method.setAccessible(true); | ||||||
|  |             return method.invoke(this, reqBean, null, null); | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("执行展示组件内部方法[execStateModule]出现异常:%s", e.getMessage())); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
					Loading…
					
					
				
		Reference in New Issue