零件条码统计工步; 保存激光装配件工步

dev-temp-nht-202502180000-customprint
王杰 5 months ago
parent b775ab0fa1
commit e14d752618

@ -0,0 +1,71 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdRuleContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyNosortContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesBarcodeCountShareInfo;
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 lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.List;
/**
* @Description :
* @Author : wangjie
**/
@Slf4j
@Service("mesBarcodeCountShareAssemblySnSaveStepService")
public class MesBarcodeCountShareAssemblySnSaveStepService extends MesBarcodeCountShareInfoSaveStepService {
@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());
//存储生产过程上下文对象
productionProcessContextStepService.dispatchProductionProcessContext(reqBean, productionProcessContext);
//获取上下文产出条码数据信息集合
List<MesProductionPsOutContext> productionPsOutContextList = productionDispatchContextStepService.getProductionPsOutContext(reqBean);
if (CollectionUtils.isEmpty(productionPsOutContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在产出零件条码信息,请重置工序解决!");
//获取上下文产品加工规则数据信息集合
List<MesProdRuleContext> prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean);
if (CollectionUtils.isEmpty(prodRuleContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在非排序加工规则数据,请重置工序!");
prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getAssemblyDataJson()))).forEach(o -> {
List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList = o.getNosortAssemblyDataContext();
if (!CollectionUtils.isEmpty(productionAssemblyNosortContextList)) {
MesProductionPsOutContext productionPsOutContext = productionPsOutContextList.stream().filter(i -> (null != i && i.getForeignKey().compareTo(o.getForeignKey()) == 0)).findFirst().get();
for (MesProductionAssemblyNosortContext productionAssemblyNosortContext : productionAssemblyNosortContextList) {
if (StringUtils.isEmpty(productionAssemblyNosortContext.getAssemblySn())) continue;
saveBarcodeCountShareInfo(reqBean, productionProcessContext, new MesBarcodeCountShareInfo(
MesExtEnumUtil.BARCODE_COUNT_SHARE_INFO.BARCODE_COUNT_SHARE_INFO_20.getValue(),
productionAssemblyNosortContext.getAssemblySn(), productionPsOutContext.getPartNo(), productionPsOutContext.getPartName()));
}
}
});
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "保存激光装配件信息成功!");
}
}

@ -0,0 +1,99 @@
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.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IStepService;
import cn.estsh.i3plus.mes.pcn.util.StringUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesBarcodeCountShareInfo;
import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam;
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.repository.MesBarcodeCountShareInfoRepository;
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.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
/**
* @Description : OEE
* @Author : wangjie
**/
@Slf4j
@Service("mesBarcodeCountShareInfoSaveStepService")
public class MesBarcodeCountShareInfoSaveStepService extends BaseStepService {
@Autowired
public IMesProductionProcessContextStepService productionProcessContextStepService;
@Autowired
public IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Autowired
private MesBarcodeCountShareInfoRepository barcodeCountShareInfoRepository;
@Override
public StepResult execute(StationRequestBean reqBean) {
StationResultBean resultBean = new StationResultBean();
StepResult stepResult = StepResult.getSuccessComplete();
//获取工步参数
Optional<Map<String, MesProdRouteOptParam>> stepParamMap = getStepParams(reqBean);
String stepParam = (null != stepParamMap && stepParamMap.isPresent() && stepParamMap.get().containsKey(MesPcnExtConstWords.BARCODE_COUNT_SHARE_INFO)) ? stepParamMap.get().get(MesPcnExtConstWords.BARCODE_COUNT_SHARE_INFO).getParamValue() : null;
if (StringUtils.isEmpty(stepParam) && StringUtils.isEmpty(MesExtEnumUtil.BARCODE_COUNT_SHARE_INFO.valueOfDescription(stepParam))) {
return stepDynamicsCompleteAndSendMsgReturn(reqBean,
resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, true,
MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, String.format("未配置有效的工步参数[{}]跳过执行保存零件条码统计共享信息工步!", MesPcnExtConstWords.BARCODE_COUNT_SHARE_INFO));
}
Boolean isAllExec = false;
if (MesExtEnumUtil.BARCODE_COUNT_SHARE_INFO.BARCODE_COUNT_SHARE_INFO_30.getValue().equals(stepParam)) isAllExec = true;
//零件条码统计工步
if (isAllExec || MesExtEnumUtil.BARCODE_COUNT_SHARE_INFO.BARCODE_COUNT_SHARE_INFO_10.getValue().equals(stepParam)) {
((IStepService) SpringContextsUtil.getBean("mesBarcodeCountShareProductSnSaveStepService")).executeInState(reqBean);
}
//保存激光装配件工步
if (isAllExec || MesExtEnumUtil.BARCODE_COUNT_SHARE_INFO.BARCODE_COUNT_SHARE_INFO_20.getValue().equals(stepParam)) {
((IStepService) SpringContextsUtil.getBean("mesBarcodeCountShareAssemblySnSaveStepService")).executeInState(reqBean);
}
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- {}={}[{}]",
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(),
StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), MesPcnExtConstWords.BARCODE_COUNT_SHARE_INFO, stepParam, MesExtEnumUtil.BARCODE_COUNT_SHARE_INFO.valueOfDescription(stepParam));
return stepResult;
}
public void saveBarcodeCountShareInfo(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, MesBarcodeCountShareInfo barcodeCountShareInfo) {
barcodeCountShareInfo.setAreaCode(reqBean.getAreaCode());
barcodeCountShareInfo.setWorkCenterCode(reqBean.getWorkCenterCode());
barcodeCountShareInfo.setWorkCellCode(reqBean.getWorkCellCode());
barcodeCountShareInfo.setProcessCode(reqBean.getProcessCode());
barcodeCountShareInfo.setCraftCode(productionProcessContext.getCraftCode());
barcodeCountShareInfo.setEquipmentCode(productionProcessContext.getCurCellEquip().getEquipmentCode());
barcodeCountShareInfo.setOrganizeCode(reqBean.getOrganizeCode());
barcodeCountShareInfo.setFid(UUID.randomUUID().toString());
ConvertBean.serviceModelInitialize(barcodeCountShareInfo, reqBean.getUserInfo());
barcodeCountShareInfo.setProductEndTime(barcodeCountShareInfo.getModifyDatetime());
barcodeCountShareInfoRepository.insert(barcodeCountShareInfo);
}
}

@ -0,0 +1,55 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesBarcodeCountShareInfo;
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 lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
/**
* @Description :
* @Author : wangjie
**/
@Slf4j
@Service("mesBarcodeCountShareProductSnSaveStepService")
public class MesBarcodeCountShareProductSnSaveStepService extends MesBarcodeCountShareInfoSaveStepService {
@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());
//存储生产过程上下文对象
productionProcessContextStepService.dispatchProductionProcessContext(reqBean, productionProcessContext);
//获取上下文产出条码数据信息集合
List<MesProductionPsOutContext> productionPsOutContextList = productionDispatchContextStepService.getProductionPsOutContext(reqBean);
if (CollectionUtils.isEmpty(productionPsOutContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在产出零件条码信息,请重置工序解决!");
productionPsOutContextList.stream().filter(o -> null != o).forEach(o ->
saveBarcodeCountShareInfo(reqBean, productionProcessContext, new MesBarcodeCountShareInfo(
MesExtEnumUtil.BARCODE_COUNT_SHARE_INFO.BARCODE_COUNT_SHARE_INFO_10.getValue(), o.getProductSn(), o.getPartNo(), o.getPartName()))
);
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "保存零件条码统计信息成功!");
}
}

@ -351,6 +351,8 @@ public class MesPcnExtConstWords {
public static final String NEED_CHECK_IS_PS = "NEED_CHECK_IS_PS"; public static final String NEED_CHECK_IS_PS = "NEED_CHECK_IS_PS";
// 流程包含解绑工步[工步参数] // 流程包含解绑工步[工步参数]
public static final String CONTEXT_UNBINDING_STEP = "CONTEXT_UNBINDING_STEP"; public static final String CONTEXT_UNBINDING_STEP = "CONTEXT_UNBINDING_STEP";
// 零件条码统计OEE共享信息[工步参数]
public static final String BARCODE_COUNT_SHARE_INFO = "BARCODE_COUNT_SHARE_INFO";
// 装配件显示规则配置[工位参数] // 装配件显示规则配置[工位参数]
public static final String ASSEMBLY_SHOW_MR_CFG = "ASSEMBLY_SHOW_MR_CFG"; public static final String ASSEMBLY_SHOW_MR_CFG = "ASSEMBLY_SHOW_MR_CFG";

Loading…
Cancel
Save