forked from I3-YF/i3plus-mes-pcn-yfai
mes-uat-changshu0609^2
parent
2a1c27f06d
commit
360d200a48
@ -0,0 +1,95 @@
|
||||
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
|
||||
|
||||
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesStationContainerSnExtService;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method.stationpm.IMesStationMatchPsProcessMethodStrategyStepService;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesContainerPackageDetailContext;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsInContext;
|
||||
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
|
||||
import cn.estsh.i3plus.mes.pcn.util.StringUtil;
|
||||
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.i3plus.pojo.mes.util.MesExtEnumUtil;
|
||||
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description : 原料站点扣减工步
|
||||
* @Author : wangjie
|
||||
**/
|
||||
@Slf4j
|
||||
@Service("mesStationDeductionProductSnStepService")
|
||||
public class MesStationDeductionProductSnStepService extends BaseStepService {
|
||||
|
||||
@Autowired
|
||||
private IMesProductionProcessContextStepService productionProcessContextStepService;
|
||||
|
||||
@Autowired
|
||||
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
||||
|
||||
@Autowired
|
||||
private IMesStationContainerSnExtService stationContainerSnExtService;
|
||||
|
||||
@Override
|
||||
public StepResult execute(StationRequestBean reqBean) {
|
||||
|
||||
StationResultBean resultBean = new StationResultBean();
|
||||
|
||||
StepResult stepResult = StepResult.getSuccessComplete();
|
||||
|
||||
//获取工位当前设备信息
|
||||
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean);
|
||||
|
||||
//配置错误 抛出异常
|
||||
if (!productionProcessContext.getSuccess()) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage());
|
||||
|
||||
//获取进料主条码数据信息
|
||||
List<MesProductionPsInContext> productionPsInContextList = productionDispatchContextStepService.getProductionPsInContext(reqBean);
|
||||
if (CollectionUtils.isEmpty(productionPsInContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在进料主条码信息,请重置工序解决!");
|
||||
|
||||
//验证是否需要进行原料站点扣减
|
||||
List<String> containerSnDataList = productionPsInContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getContainerSnData()))).map(MesProductionPsInContext::getContainerSnData).collect(Collectors.toList());
|
||||
if (CollectionUtils.isEmpty(containerSnDataList)) {
|
||||
return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, true,
|
||||
MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, "验证每腔不存在容器匹配的主条码,默认跳过原料站点扣减!");
|
||||
}
|
||||
|
||||
//修改上料明细表信息状态 【扣减完成】
|
||||
Long[] ids = containerSnDataList.stream().filter(o -> !StringUtils.isEmpty(o)).map(Long::parseLong).toArray(Long[]::new);
|
||||
stationContainerSnExtService.updateContainerPackageDetail(reqBean.getOrganizeCode(), reqBean.getUserInfo(), MesExtEnumUtil.CONTAINER_BARCODE_STATUS.STATUS_20.getValue(), ids);
|
||||
|
||||
// 赋值 stepAfterState, 当前工步集执行结束后会执行当前工步重写的executeStepAfterState方法
|
||||
stepResult.addStepAfterStateList(StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()));
|
||||
|
||||
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "原料站点扣减成功!");
|
||||
|
||||
}
|
||||
|
||||
//当前工步集完成之后执行当前方法
|
||||
@Override
|
||||
public void executeStepAfterState(StationRequestBean reqBean, StepResult stepResult) {
|
||||
if (!stepResult.isCompleted()) return;
|
||||
|
||||
//获取已被验证了的容器主条码信息
|
||||
List<MesContainerPackageDetailContext> containerPackageDetailContextList = productionDispatchContextStepService.getContainerPackageDetailPs(reqBean);
|
||||
if (CollectionUtils.isEmpty(containerPackageDetailContextList) || StringUtils.isEmpty(containerPackageDetailContextList.get(0).getProcessMethod())) return;
|
||||
|
||||
//加工模式策略
|
||||
IMesStationMatchPsProcessMethodStrategyStepService strategyService = (IMesStationMatchPsProcessMethodStrategyStepService) SpringContextsUtil.getBean(MesExtEnumUtil.STATION_PROCESS_METHOD.valueOfStrategyClass(containerPackageDetailContextList.get(0).getProcessMethod()));
|
||||
//【原料站点】解锁进料主条码信息
|
||||
strategyService.removeContainerPackageDetailPsLocked(reqBean, containerPackageDetailContextList);
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue