可复用 逻辑重写

tags/yfai-pcn-ext-v2.3
王杰 6 months ago
parent 5e3ada454c
commit a237d0672e

@ -69,8 +69,11 @@ public interface IMesProductionCustomContextStepService {
@ApiOperation(value = "获取生产线的当前班组班次信息") @ApiOperation(value = "获取生产线的当前班组班次信息")
MesProdShiftContext getMesProdShiftKvBean(String organizeCode, String workCenterCode); MesProdShiftContext getMesProdShiftKvBean(String organizeCode, String workCenterCode);
@ApiOperation(value = "根据装配件规则ID获取可复用条码") @ApiOperation(value = "根据装配件信息获取可复用条码")
String getRepeatAssemblySn(String organizeCode, String workCenterCode, String workCellCode, String assemblyNosortCfgId); String getRepeatAssemblySn(String organizeCode, String workCenterCode, String workCellCode, MesProductionAssemblyContext productionAssemblyContext);
@ApiOperation(value = "根据装配件信息获取可复用条码")
String getRepeatAssemblySn(String organizeCode, String workCenterCode, String workCellCode, String repeatKey);
@ApiOperation(value = "根据设备代码获取可复用条码的个数") @ApiOperation(value = "根据设备代码获取可复用条码的个数")
Integer getRepeatAssemblySnCount(String organizeCode, String workCenterCode, String workCellCode, String equipmentCode); Integer getRepeatAssemblySnCount(String organizeCode, String workCenterCode, String workCellCode, String equipmentCode);

@ -181,12 +181,13 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList = new ArrayList<>(); List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList = new ArrayList<>();
//遍历装配件规则, 实例化装配件清单对象, 判断是否配置可复用 //遍历装配件规则, 实例化装配件清单对象, 判断是否配置可复用
assemblyNosortCfgList.forEach(o -> productionAssemblyNosortContextList.add( assemblyNosortCfgList.forEach(o -> {
new MesProductionAssemblyNosortContext().copy(prodRuleContext, o, getRepeatAssemblySn(prodRuleContext.getOrganizeCode(), prodRuleContext.getWorkCenterCode(), prodRuleContext.getWorkCellCode(), o)).fileUrl(fileMap).foreignKey(prodRuleContext.getForeignKey())) MesProductionAssemblyNosortContext productionAssemblyNosortContext = new MesProductionAssemblyNosortContext().copy(prodRuleContext, o).fileUrl(fileMap).foreignKey(prodRuleContext.getForeignKey());
); productionAssemblyNosortContext.overrideAssemblyStatus(productionCustomContextStepService.getRepeatAssemblySn(prodRuleContext.getOrganizeCode(), prodRuleContext.getWorkCenterCode(), prodRuleContext.getWorkCellCode(), productionAssemblyNosortContext));
productionAssemblyNosortContextList.add(productionAssemblyNosortContext);
});
return productionAssemblyNosortContextList; return productionAssemblyNosortContextList;
} }
//获取非排序装配件配置信息 //获取非排序装配件配置信息
@ -198,6 +199,7 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
return assemblyNosortCfgRepository.findByHqlWhere(packBean); return assemblyNosortCfgRepository.findByHqlWhere(packBean);
} }
//获取设备的装配件规则清单
@Override @Override
public List<MesAssemblyNosortCfg> getAssemblyNosortCfgList(String organizeCode, String equipmentCode) { public List<MesAssemblyNosortCfg> getAssemblyNosortCfgList(String organizeCode, String equipmentCode) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipmentCode)) return null; if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipmentCode)) return null;
@ -206,6 +208,7 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), equipmentCode}); new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), equipmentCode});
} }
//获取设备的装配件规则清单
@Override @Override
public List<MesProductionAssemblyNosortContext> getProductionAssemblyNosortContextList(String organizeCode, String equipmentCode) { public List<MesProductionAssemblyNosortContext> getProductionAssemblyNosortContextList(String organizeCode, String equipmentCode) {
@ -221,6 +224,7 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
return productionAssemblyNosortContextList; return productionAssemblyNosortContextList;
} }
//【排序线】获取生产工单装配件清单
@Override @Override
public List<MesWorkOrderAssembly> getWorkOrderAssemblyList(String organizeCode, String workOrderNo, String productSn, String craftCode) { public List<MesWorkOrderAssembly> getWorkOrderAssemblyList(String organizeCode, String workOrderNo, String productSn, String craftCode) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workOrderNo) || StringUtils.isEmpty(productSn) || StringUtils.isEmpty(craftCode)) return null; if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workOrderNo) || StringUtils.isEmpty(productSn) || StringUtils.isEmpty(craftCode)) return null;
@ -229,6 +233,7 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workOrderNo, productSn, craftCode}); new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workOrderNo, productSn, craftCode});
} }
//【排序线】获取生产工单装配件清单
@Override @Override
public List<MesWorkOrderAssembly> getWorkOrderAssemblyList(String organizeCode, String workCenterCode, String workCellCode, String workOrderNo, List<String> productSnList) { public List<MesWorkOrderAssembly> getWorkOrderAssemblyList(String organizeCode, String workCenterCode, String workCellCode, String workOrderNo, List<String> productSnList) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCode) || StringUtils.isEmpty(workCellCode) || StringUtils.isEmpty(workOrderNo) || CollectionUtils.isEmpty(productSnList)) return null; if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCode) || StringUtils.isEmpty(workCellCode) || StringUtils.isEmpty(workOrderNo) || CollectionUtils.isEmpty(productSnList)) return null;
@ -241,15 +246,6 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
return workOrderAssemblyRepository.findByHqlWhere(packBean); return workOrderAssemblyRepository.findByHqlWhere(packBean);
} }
//验证装配件规则对应的ID是否存在可复用装配件条码
private String getRepeatAssemblySn(String organizeCode, String workCenterCode, String workCellCode, MesAssemblyNosortCfg assemblyNosortCfg) {
if (null == assemblyNosortCfg || StringUtils.isEmpty(assemblyNosortCfg.getIsRepeat()) || assemblyNosortCfg.getIsRepeat().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) return null;
return productionCustomContextStepService.getRepeatAssemblySn(organizeCode, workCenterCode, workCellCode, assemblyNosortCfg.getId().toString());
}
//搜集非排序文件ID集合 //搜集非排序文件ID集合
private List<Long> filterNosortFileIdList(List<MesAssemblyNosortCfg> assemblyNosortCfgList) { private List<Long> filterNosortFileIdList(List<MesAssemblyNosortCfg> assemblyNosortCfgList) {
if (CollectionUtils.isEmpty(assemblyNosortCfgList)) return null; if (CollectionUtils.isEmpty(assemblyNosortCfgList)) return null;

@ -311,7 +311,7 @@ public class MesAssemblyGeneratePartNoStepService extends BaseStepService {
} }
String getRepeatAssemblySn = getRepeatAssemblySn(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), productionAssemblyNosortContext); String getRepeatAssemblySn = productionCustomContextStepService.getRepeatAssemblySn(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), productionAssemblyNosortContext);
if (!StringUtils.isEmpty(getRepeatAssemblySn)) productionAssemblyNosortContext.assemblyStatus(getRepeatAssemblySn); if (!StringUtils.isEmpty(getRepeatAssemblySn)) productionAssemblyNosortContext.assemblyStatus(getRepeatAssemblySn);
//判断当前装配件规则是否被成功匹配条码 //判断当前装配件规则是否被成功匹配条码
@ -404,16 +404,4 @@ public class MesAssemblyGeneratePartNoStepService extends BaseStepService {
return result; return result;
} }
//验证装配件规则对应的ID是否存在可复用装配件条码
private String getRepeatAssemblySn(String organizeCode, String workCenterCode, String workCellCode, MesProductionAssemblyNosortContext productionAssemblyNosortContext) {
if (productionAssemblyNosortContext.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) != 0) return null;
if (null == productionAssemblyNosortContext || StringUtils.isEmpty(productionAssemblyNosortContext.getIsRepeat()) || productionAssemblyNosortContext.getIsRepeat().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0) return null;
return productionCustomContextStepService.getRepeatAssemblySn(organizeCode, workCenterCode, workCellCode, productionAssemblyNosortContext.getSourceId().toString());
}
} }

@ -312,7 +312,7 @@ public class MesAssemblyMatchNosortRetrodictStepService extends BaseStepService
} }
String getRepeatAssemblySn = getRepeatAssemblySn(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), productionAssemblyNosortContext); String getRepeatAssemblySn = productionCustomContextStepService.getRepeatAssemblySn(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), productionAssemblyNosortContext);
if (!StringUtils.isEmpty(getRepeatAssemblySn)) productionAssemblyNosortContext.assemblyStatus(getRepeatAssemblySn); if (!StringUtils.isEmpty(getRepeatAssemblySn)) productionAssemblyNosortContext.assemblyStatus(getRepeatAssemblySn);
//判断当前装配件规则是否被成功匹配条码 //判断当前装配件规则是否被成功匹配条码
@ -405,16 +405,4 @@ public class MesAssemblyMatchNosortRetrodictStepService extends BaseStepService
return result; return result;
} }
//验证装配件规则对应的ID是否存在可复用装配件条码
private String getRepeatAssemblySn(String organizeCode, String workCenterCode, String workCellCode, MesProductionAssemblyNosortContext productionAssemblyNosortContext) {
if (productionAssemblyNosortContext.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) != 0) return null;
if (null == productionAssemblyNosortContext || StringUtils.isEmpty(productionAssemblyNosortContext.getIsRepeat()) || productionAssemblyNosortContext.getIsRepeat().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0) return null;
return productionCustomContextStepService.getRepeatAssemblySn(organizeCode, workCenterCode, workCellCode, productionAssemblyNosortContext.getSourceId().toString());
}
} }

@ -7,6 +7,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; 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.BaseStepService;
import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil; import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.model.StationKvBean; import cn.estsh.i3plus.pojo.mes.model.StationKvBean;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
@ -221,10 +222,18 @@ public class MesProductionCustomContextStepService extends BaseStepService imple
return new StringJoiner(MesPcnExtConstWords.COLON).add(organizeCode).add(workCenterCode).add(workCellCode).add(MesPcnExtConstWords.PRODUCTION_PROCESS_CONTEXT).add(MesPcnExtConstWords.REPEAT_ASSEMBLY_SN_CONTEXT).toString(); return new StringJoiner(MesPcnExtConstWords.COLON).add(organizeCode).add(workCenterCode).add(workCellCode).add(MesPcnExtConstWords.PRODUCTION_PROCESS_CONTEXT).add(MesPcnExtConstWords.REPEAT_ASSEMBLY_SN_CONTEXT).toString();
} }
//根据装配件规则ID获取可复用条码 //根据装配件信息获取可复用条码
@Override @Override
public String getRepeatAssemblySn(String organizeCode, String workCenterCode, String workCellCode, String assemblyNosortCfgId) { public String getRepeatAssemblySn(String organizeCode, String workCenterCode, String workCellCode, MesProductionAssemblyContext productionAssemblyContext) {
String repeatAssemblySnJson = getFsmBusiData(organizeCode, getRepeatAssemblySnContextKey(organizeCode, workCenterCode, workCellCode), assemblyNosortCfgId); if (productionAssemblyContext.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) != 0) return null;
if (null == productionAssemblyContext || StringUtils.isEmpty(productionAssemblyContext.getIsRepeat()) || productionAssemblyContext.getIsRepeat().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0) return null;
return getRepeatAssemblySn(organizeCode, workCenterCode, workCellCode, productionAssemblyContext.repeatKeyToString());
}
//根据装配件信息获取可复用条码
@Override
public String getRepeatAssemblySn(String organizeCode, String workCenterCode, String workCellCode, String repeatKey) {
String repeatAssemblySnJson = getFsmBusiData(organizeCode, getRepeatAssemblySnContextKey(organizeCode, workCenterCode, workCellCode), repeatKey);
MesProductionAssemblyContext productionAssemblyContext = !StringUtils.isEmpty(repeatAssemblySnJson) ? JSONObject.parseObject(repeatAssemblySnJson, MesProductionAssemblyContext.class) : null; MesProductionAssemblyContext productionAssemblyContext = !StringUtils.isEmpty(repeatAssemblySnJson) ? JSONObject.parseObject(repeatAssemblySnJson, MesProductionAssemblyContext.class) : null;
return null != productionAssemblyContext ? productionAssemblyContext.getAssemblySn() : null; return null != productionAssemblyContext ? productionAssemblyContext.getAssemblySn() : null;
} }
@ -236,14 +245,15 @@ public class MesProductionCustomContextStepService extends BaseStepService imple
return !StringUtils.isEmpty(countStr) ? Integer.valueOf(countStr) : MesPcnExtConstWords.ZERO; return !StringUtils.isEmpty(countStr) ? Integer.valueOf(countStr) : MesPcnExtConstWords.ZERO;
} }
//根据装配件规则ID获取可复用条码 //保存可复用条码到上下文
@Override @Override
public Boolean dispatchRepeatAssemblySn(String organizeCode, String workCenterCode, String workCellCode, MesProductionAssemblyContext productionAssemblyContext) { public Boolean dispatchRepeatAssemblySn(String organizeCode, String workCenterCode, String workCellCode, MesProductionAssemblyContext productionAssemblyContext) {
if (StringUtils.isEmpty(getRepeatAssemblySn(organizeCode, workCenterCode, workCellCode, productionAssemblyContext.getSourceId().toString()))) { String repeatKey = productionAssemblyContext.repeatKeyToString();
if (StringUtils.isEmpty(getRepeatAssemblySn(organizeCode, workCenterCode, workCellCode, repeatKey))) {
Integer count = getRepeatAssemblySnCount(organizeCode, workCenterCode, workCellCode, productionAssemblyContext.getEquipmentCode()) + 1; Integer count = getRepeatAssemblySnCount(organizeCode, workCenterCode, workCellCode, productionAssemblyContext.getEquipmentCode()) + 1;
dispatchFsmBusiData(organizeCode, getRepeatAssemblySnContextKey(organizeCode, workCenterCode, workCellCode), productionAssemblyContext.getEquipmentCode(), count.toString()); dispatchFsmBusiData(organizeCode, getRepeatAssemblySnContextKey(organizeCode, workCenterCode, workCellCode), productionAssemblyContext.getEquipmentCode(), count.toString());
} }
return dispatchFsmBusiData(organizeCode, getRepeatAssemblySnContextKey(organizeCode, workCenterCode, workCellCode), productionAssemblyContext.getSourceId().toString(), JSONObject.toJSONString(productionAssemblyContext)); return dispatchFsmBusiData(organizeCode, getRepeatAssemblySnContextKey(organizeCode, workCenterCode, workCellCode), repeatKey, productionAssemblyContext.getAssemblySn());
} }
//删除上下文可复用条码信息 //删除上下文可复用条码信息

@ -1,8 +1,10 @@
package cn.estsh.i3plus.ext.mes.pcn.pojo.context; package cn.estsh.i3plus.ext.mes.pcn.pojo.context;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.Data; import lombok.Data;
import org.springframework.util.StringUtils;
import java.io.Serializable; import java.io.Serializable;
@ -126,4 +128,13 @@ public class MesProductionAssemblyContext implements Serializable {
@ApiParam(name = "是否关闭防错") @ApiParam(name = "是否关闭防错")
public Boolean isClosedCheck = false; public Boolean isClosedCheck = false;
public String repeatKeyToString() {
if (StringUtils.isEmpty(this.equipmentCode) || StringUtils.isEmpty(this.matchType) || (StringUtils.isEmpty(this.matchRule) && StringUtils.isEmpty(this.assemblyPartNo))) return null;
return String.format("%s:%s&%s:%s&%s:%s&%s:%s",
MesPcnExtConstWords.EQUIPMENT_CODE, this.equipmentCode,
MesPcnExtConstWords.MATCH_TYPE, this.matchType,
MesPcnExtConstWords.MATCH_RULE, StringUtils.isEmpty(this.matchRule) ? MesPcnExtConstWords.EMPTY : this.matchRule,
MesPcnExtConstWords.ASSEMBLY_PART_NO, StringUtils.isEmpty(this.assemblyPartNo) ? MesPcnExtConstWords.EMPTY : this.assemblyPartNo);
}
} }

@ -44,7 +44,7 @@ public class MesProductionAssemblyNosortContext extends MesProductionAssemblyCon
public MesProductionAssemblyNosortContext() {} public MesProductionAssemblyNosortContext() {}
public MesProductionAssemblyNosortContext copy(MesProdRuleContext prodRuleContext, MesAssemblyNosortCfg assemblyNosortCfg, String assemblySn) { public MesProductionAssemblyNosortContext copy(MesProdRuleContext prodRuleContext, MesAssemblyNosortCfg assemblyNosortCfg) {
BeanUtils.copyProperties(assemblyNosortCfg, this); BeanUtils.copyProperties(assemblyNosortCfg, this);
@ -61,16 +61,20 @@ public class MesProductionAssemblyNosortContext extends MesProductionAssemblyCon
this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue(); this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue();
return this;
}
public MesProductionAssemblyNosortContext overrideAssemblyStatus(String repeatAssemblySn) {
if (!MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkIsNeedScan(this.matchType)) this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue(); if (!MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkIsNeedScan(this.matchType)) this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue();
if (!StringUtils.isEmpty(assemblySn)) { if (!StringUtils.isEmpty(repeatAssemblySn)) {
this.assemblySn = assemblySn; this.assemblySn = repeatAssemblySn;
this.isRepeat2Cache = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); this.isRepeat2Cache = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue();
this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue(); this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue();
} }
if (this.assemblyStatus.compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) != 0) this.isResetScan = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); if (this.assemblyStatus.compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) != 0) this.isResetScan = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue();
return this; return this;
} }

@ -151,6 +151,8 @@ public class MesPcnExtConstWords {
public static final String ASSEMBLY_STATUS = "assemblyStatus"; public static final String ASSEMBLY_STATUS = "assemblyStatus";
// 装配件绑定状态 // 装配件绑定状态
public static final String ASSEMBLY_STATUS_NAME = "assemblyStatusName"; public static final String ASSEMBLY_STATUS_NAME = "assemblyStatusName";
// 装配件确认规则
public static final String MATCH_RULE = "matchRule";
// 装配件确认方式 // 装配件确认方式
public static final String MATCH_TYPE = "matchType"; public static final String MATCH_TYPE = "matchType";
// 装配件确认方式 // 装配件确认方式

Loading…
Cancel
Save