可复用 逻辑重写

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

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

@ -181,12 +181,13 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList = new ArrayList<>();
//遍历装配件规则, 实例化装配件清单对象, 判断是否配置可复用
assemblyNosortCfgList.forEach(o -> productionAssemblyNosortContextList.add(
new MesProductionAssemblyNosortContext().copy(prodRuleContext, o, getRepeatAssemblySn(prodRuleContext.getOrganizeCode(), prodRuleContext.getWorkCenterCode(), prodRuleContext.getWorkCellCode(), o)).fileUrl(fileMap).foreignKey(prodRuleContext.getForeignKey()))
);
assemblyNosortCfgList.forEach(o -> {
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;
}
//获取非排序装配件配置信息
@ -198,6 +199,7 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
return assemblyNosortCfgRepository.findByHqlWhere(packBean);
}
//获取设备的装配件规则清单
@Override
public List<MesAssemblyNosortCfg> getAssemblyNosortCfgList(String organizeCode, String equipmentCode) {
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});
}
//获取设备的装配件规则清单
@Override
public List<MesProductionAssemblyNosortContext> getProductionAssemblyNosortContextList(String organizeCode, String equipmentCode) {
@ -221,6 +224,7 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
return productionAssemblyNosortContextList;
}
//【排序线】获取生产工单装配件清单
@Override
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;
@ -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});
}
//【排序线】获取生产工单装配件清单
@Override
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;
@ -241,15 +246,6 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
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集合
private List<Long> filterNosortFileIdList(List<MesAssemblyNosortCfg> assemblyNosortCfgList) {
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);
//判断当前装配件规则是否被成功匹配条码
@ -404,16 +404,4 @@ public class MesAssemblyGeneratePartNoStepService extends BaseStepService {
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);
//判断当前装配件规则是否被成功匹配条码
@ -405,16 +405,4 @@ public class MesAssemblyMatchNosortRetrodictStepService extends BaseStepService
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.mes.pcn.serviceimpl.fsm.BaseStepService;
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.mes.model.StationKvBean;
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();
}
//根据装配件规则ID获取可复用条码
//根据装配件信息获取可复用条码
@Override
public String getRepeatAssemblySn(String organizeCode, String workCenterCode, String workCellCode, String assemblyNosortCfgId) {
String repeatAssemblySnJson = getFsmBusiData(organizeCode, getRepeatAssemblySnContextKey(organizeCode, workCenterCode, workCellCode), assemblyNosortCfgId);
public String getRepeatAssemblySn(String organizeCode, String workCenterCode, String workCellCode, MesProductionAssemblyContext productionAssemblyContext) {
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;
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;
}
//根据装配件规则ID获取可复用条码
//保存可复用条码到上下文
@Override
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;
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;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import org.springframework.util.StringUtils;
import java.io.Serializable;
@ -126,4 +128,13 @@ public class MesProductionAssemblyContext implements Serializable {
@ApiParam(name = "是否关闭防错")
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 copy(MesProdRuleContext prodRuleContext, MesAssemblyNosortCfg assemblyNosortCfg, String assemblySn) {
public MesProductionAssemblyNosortContext copy(MesProdRuleContext prodRuleContext, MesAssemblyNosortCfg assemblyNosortCfg) {
BeanUtils.copyProperties(assemblyNosortCfg, this);
@ -61,16 +61,20 @@ public class MesProductionAssemblyNosortContext extends MesProductionAssemblyCon
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 (!StringUtils.isEmpty(assemblySn)) {
this.assemblySn = assemblySn;
if (!StringUtils.isEmpty(repeatAssemblySn)) {
this.assemblySn = repeatAssemblySn;
this.isRepeat2Cache = CommonEnumUtil.TRUE_OR_FALSE.FALSE.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();
return this;
}

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

Loading…
Cancel
Save