jx pcn
parent
ce7f728764
commit
19f6fa6a1f
@ -0,0 +1,127 @@
|
|||||||
|
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.api.busi.jx.IJxProdBusiStrategyService;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.station.jx.JxSnLineOnModuleService;
|
||||||
|
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.model.jx.JxProdBusiStrategyParamsBuilder;
|
||||||
|
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.serviceimpl.base.BaseStepService;
|
||||||
|
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 com.alibaba.fastjson.JSONObject;
|
||||||
|
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.StringUtils;
|
||||||
|
|
||||||
|
import java.util.StringJoiner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description : 嘉兴条码加工扫描工步
|
||||||
|
* @Reference :
|
||||||
|
* @Author : wangjie
|
||||||
|
* @CreateDate : 2019-07-11
|
||||||
|
* @Modify:
|
||||||
|
**/
|
||||||
|
@Slf4j
|
||||||
|
@Service("jxSnProcessingCheckMcOrPsStepService")
|
||||||
|
public class JxSnProcessingCheckMcOrPsStepService extends BaseStepService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private JxSnLineOnModuleService snLineOnModuleService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISxWorkOrderExtService workOrderExtService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StepResult guide(StationRequestBean reqBean) {
|
||||||
|
return execSuccessCompleteAndSendGuideReturn(reqBean, new StationResultBean(), "请扫描管理编码或产品条码!");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StepResult init(StationRequestBean reqBean) {
|
||||||
|
reqBean.setSerialNumber(null);
|
||||||
|
reqBean.setProductSn(null);
|
||||||
|
reqBean.setTray(null);
|
||||||
|
clearStepContent(reqBean);
|
||||||
|
snLineOnModuleService.doHandleBindKeyPartData(reqBean, 3, new StringJoiner(MesPcnExtConstWords.COMMA).add(MesPcnExtConstWords.BIND_KEY_PART).add(MesPcnExtConstWords.EXEC_BIND_KEY).toString(), null);
|
||||||
|
return super.init(reqBean);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StepResult execute(StationRequestBean reqBean) {
|
||||||
|
|
||||||
|
log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnProcessingCheckMcOrPsStepService --- START --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());
|
||||||
|
|
||||||
|
StepResult stepResult = StepResult.getSuccessComplete();
|
||||||
|
|
||||||
|
StationResultBean resultBean = new StationResultBean();
|
||||||
|
|
||||||
|
if (StringUtils.isEmpty(reqBean.getScanInfo())) return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, "入参缺少管理编码或产品条码!");
|
||||||
|
|
||||||
|
String curExecWorkOrderNo = getCurExecWorkOrderNo(reqBean, resultBean);
|
||||||
|
|
||||||
|
WorkOrderExtModel orderModel = getWorkOrderExtModel(reqBean, resultBean, curExecWorkOrderNo);
|
||||||
|
|
||||||
|
checkScanInfoIsValid(reqBean, resultBean, stepResult, orderModel);
|
||||||
|
|
||||||
|
reqBean.setScanInfo(null);
|
||||||
|
|
||||||
|
log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnProcessingCheckMcOrPsStepService --- SUCCESS --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());
|
||||||
|
|
||||||
|
return stepResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getCurExecWorkOrderNo(StationRequestBean reqBean, StationResultBean resultBean) {
|
||||||
|
String curExecWorkOrderNo = (String) snLineOnModuleService.doHandleCurExecWorkOrder(reqBean, 1, null);
|
||||||
|
if (StringUtils.isEmpty(curExecWorkOrderNo)) execExpSendMsgAndThrowEx(reqBean, resultBean, "此前操作的工单号已丢失,请选择启动状态的生产工单!");
|
||||||
|
return curExecWorkOrderNo;
|
||||||
|
}
|
||||||
|
|
||||||
|
private WorkOrderExtModel getWorkOrderExtModel(StationRequestBean reqBean, StationResultBean resultBean, String curExecWorkOrderNo) {
|
||||||
|
WorkOrderExtModel orderModel = !reqBean.getDataMap().containsKey(MesPcnExtConstWords.WORK_ORDER) ? null :
|
||||||
|
JSONObject.parseObject(JSONObject.toJSONString(reqBean.getDataMap().get(MesPcnExtConstWords.WORK_ORDER)), WorkOrderExtModel.class);
|
||||||
|
if (null == orderModel) {
|
||||||
|
MesWorkOrderExt workOrderExt = workOrderExtService.getWorkOrderExtByOrderNo(reqBean.getOrganizeCode(), curExecWorkOrderNo);
|
||||||
|
if (null != workOrderExt) {
|
||||||
|
orderModel = new WorkOrderExtModel();
|
||||||
|
BeanUtils.copyProperties(workOrderExt, orderModel, MesPcnExtConstWords.ID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (null == orderModel) execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("此前操作的工单号[%s]对应的信息不存在!", curExecWorkOrderNo));
|
||||||
|
return orderModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private StepResult checkScanInfoIsValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, WorkOrderExtModel orderModel) {
|
||||||
|
|
||||||
|
JxProdBusiStrategyParamsBuilder params = new JxProdBusiStrategyParamsBuilder.builder()
|
||||||
|
.organizeCode(reqBean.getOrganizeCode())
|
||||||
|
.scanInfo(reqBean.getScanInfo())
|
||||||
|
.location(reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())
|
||||||
|
.orderModel(orderModel)
|
||||||
|
.strategyService(SpringContextsUtil.getBean(MesPcnExtEnumUtil.JX_PROD_BUSI_STRATEGY.COMMON.getClazz()))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
StepResult result = ((IJxProdBusiStrategyService) SpringContextsUtil.getBean(MesPcnExtEnumUtil.JX_PROD_BUSI_STRATEGY.valueOfClazz(orderModel.getWorkOrderType()))).checkProcessing(params);
|
||||||
|
|
||||||
|
this.sendMessage(reqBean, resultBean, result.getMsg(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, result.isCompleted() ? MesPcnEnumUtil.STATION_DATA_TYPE.TEXT : MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
|
||||||
|
|
||||||
|
stepResult.setCompleted(result.isCompleted());
|
||||||
|
|
||||||
|
reqBean.setSerialNumber(params.getSerialNumber());
|
||||||
|
reqBean.setProductSn(params.getProductSn());
|
||||||
|
reqBean.setTray(null == params.getProduceSnMcRecordDb() ? params.getManageCode() : new StringJoiner(MesPcnExtConstWords.AND).add(params.getProduceSnMcRecordDb().getManageCode()).add(params.getProduceSnMcRecordDb().getId().toString()).toString());
|
||||||
|
|
||||||
|
if (result.isCompleted() && (null != params.getProduceSnMcRecordDb() || null != params.getProduceSnExtDb())) stepResult.nextTriggerEvent(MesPcnExtConstWords.BIND_KEY_PART).isCompleted(false);
|
||||||
|
|
||||||
|
return stepResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.step.jx;
|
||||||
|
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProdBusiStrategyService;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.jx.JxProdBusiStrategyParamsBuilder;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
|
||||||
|
import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseStepService;
|
||||||
|
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.stereotype.Service;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description : 嘉兴条码加工完成工步
|
||||||
|
* @Reference :
|
||||||
|
* @Author : wangjie
|
||||||
|
* @CreateDate : 2019-07-11
|
||||||
|
* @Modify:
|
||||||
|
**/
|
||||||
|
@Slf4j
|
||||||
|
@Service("jxSnProcessingCompleteStepService")
|
||||||
|
public class JxSnProcessingCompleteStepService extends BaseStepService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StepResult execute(StationRequestBean reqBean) {
|
||||||
|
|
||||||
|
log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnProcessingCompleteStepService --- START --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());
|
||||||
|
|
||||||
|
StepResult stepResult = StepResult.getSuccessComplete();
|
||||||
|
|
||||||
|
StationResultBean resultBean = new StationResultBean();
|
||||||
|
|
||||||
|
if (StringUtils.isEmpty(reqBean.getSerialNumber()) && StringUtils.isEmpty(reqBean.getProductSn())) return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, "入参缺少过程条码或产品条码!");
|
||||||
|
|
||||||
|
((IJxProdBusiStrategyService) SpringContextsUtil.getBean(MesPcnExtEnumUtil.JX_PROD_BUSI_STRATEGY.COMMON.getClazz()))
|
||||||
|
.checkProcessing(new JxProdBusiStrategyParamsBuilder.builder()
|
||||||
|
.organizeCode(reqBean.getOrganizeCode())
|
||||||
|
.userInfo(reqBean.getUserInfo())
|
||||||
|
.location(reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())
|
||||||
|
.serialNumber(reqBean.getSerialNumber())
|
||||||
|
.productSn(reqBean.getProductSn())
|
||||||
|
.obj(reqBean)
|
||||||
|
.build());
|
||||||
|
|
||||||
|
log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnProcessingCompleteStepService --- SUCCESS --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());
|
||||||
|
|
||||||
|
return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, true, MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO,
|
||||||
|
MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, String.format("管理编码[%s]过程条码[%s]产品条码[%s]加工完成!", reqBean.getTray(), reqBean.getSerialNumber(), reqBean.getProductSn()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue