dev
王杰 2 years ago
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;
}
}
}

@ -83,7 +83,7 @@ public class JxSnFinalInspectionAspectCheckStepService extends BaseStepService {
enum BUSI_FLAG {
QUALIFIED("QUALIFIED", "检查合格"),
REPAIR("REPAIR", "返工返修");
REPAIR("REPAIR", "返修");
private String value;
private String description;

@ -98,8 +98,8 @@ public class JxSnFinalInspectionDataReviewStepService extends BaseStepService {
}
enum BUSI_FLAG {
ASPECT_CHECK("ASPECT_CHECK", "外观检查"),
REPAIR("REPAIR", "返工返修");
ASPECT_CHECK("ASPECT_CHECK", "最终检查"),
REPAIR("REPAIR", "返修");
private String value;
private String description;

@ -57,13 +57,13 @@ public class JxSnFinalInspectionInitOrderStepService extends BaseStepService {
if (!StringUtils.isEmpty(selectWorkOrderNo)) {
workOrderExt = workOrderExtService.getWorkOrderExtByOrderNo(reqBean.getOrganizeCode(), selectWorkOrderNo);
checkWorkOrderExtIsValid(reqBean, resultBean, stepResult, workOrderExt, String.format("选择的工单号[%s]", selectWorkOrderNo), true);
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), false);
checkWorkOrderExtIsValid(reqBean, resultBean, stepResult, workOrderExt, String.format("此前操作的工单号[%s]", curExecWorkOrderNo));
}
if (null == workOrderExt || !stepResult.isCompleted()) execSendGuideAndThrowEx(reqBean, resultBean, "请选择启动状态的生产工单!");
@ -84,7 +84,7 @@ public class JxSnFinalInspectionInitOrderStepService extends BaseStepService {
}
}
private void checkWorkOrderExtIsValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesWorkOrderExt workOrderExt, String suffix, Boolean flag) {
private void checkWorkOrderExtIsValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesWorkOrderExt workOrderExt, String suffix) {
if (null == workOrderExt) execNonCompleteAndSendMsg(reqBean, resultBean, stepResult, String.format("%s对应的工单信息不存在!", suffix));

@ -57,13 +57,13 @@ public class JxSnLineOnInitOrderStepService extends BaseStepService {
if (!StringUtils.isEmpty(selectWorkOrderNo)) {
workOrderExt = workOrderExtService.getWorkOrderExtByOrderNo(reqBean.getOrganizeCode(), selectWorkOrderNo);
checkWorkOrderExtIsValid(reqBean, resultBean, stepResult, workOrderExt, String.format("选择的工单号[%s]", selectWorkOrderNo), true);
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), false);
checkWorkOrderExtIsValid(reqBean, resultBean, stepResult, workOrderExt, String.format("此前操作的工单号[%s]", curExecWorkOrderNo));
}
if (null == workOrderExt || !stepResult.isCompleted()) execSendGuideAndThrowEx(reqBean, resultBean, "请选择启动状态的生产工单!");
@ -84,7 +84,7 @@ public class JxSnLineOnInitOrderStepService extends BaseStepService {
}
}
private void checkWorkOrderExtIsValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesWorkOrderExt workOrderExt, String suffix, Boolean flag) {
private void checkWorkOrderExtIsValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesWorkOrderExt workOrderExt, String suffix) {
if (null == workOrderExt) execNonCompleteAndSendMsg(reqBean, resultBean, stepResult, String.format("%s对应的工单信息不存在!", suffix));

Loading…
Cancel
Save