Merge branch 'uat-temp-wj-chongqingdaqu-prod-huaweiyun' into yfai-20250418-dev

yfai-20250418-dev
王杰 3 months ago
commit a572836ee9

@ -10,6 +10,9 @@ import java.util.List;
public interface IMesEquipVariableCfgRuleMatchDispatchService {
@ApiOperation(value = "设备数据变量接口逻辑根据变量类别规则匹配")
Object matchEquipVariableCfgCollectContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, String variableCategory, List<MesEquipVariableCfgCollectContext> collectContextList);
default Object matchEquipVariableCfgCollectContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, String variableCategory, List<MesEquipVariableCfgCollectContext> collectContextList) { return null; }
@ApiOperation(value = "设备数据变量接口逻辑根据变量类别规则匹配")
default Object matchEquipVariableCfgCollectContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, String variableCategory, List<MesEquipVariableCfgCollectContext> collectContextList, Boolean isUpperCase) { return null; }
}

@ -134,7 +134,7 @@ public class MesProduceSnExtService implements IMesProduceSnExtService {
List<MesProduceSn> produceSnList = getProduceSnList(organizeCode, productSnList);
//先排序再分组
return CollectionUtils.isEmpty(produceSnList) ? null : produceSnList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesProduceSn::getProductSn));
return CollectionUtils.isEmpty(produceSnList) ? null : produceSnList.stream().filter(o -> null != o).collect(Collectors.groupingBy(o -> o.getProductSn().toUpperCase()));
}

@ -17,12 +17,17 @@ import java.util.List;
@Service
public class MesEquipVariableCfgRuleMatchDispatchService implements IMesEquipVariableCfgRuleMatchDispatchService {
private Object matchEquipVariableCfgCollectContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, String variableCategory, List<MesEquipVariableCfgCollectContext> collectContextList, String strategyClass) {
return ((IMesEquipVariableCfgRuleMatchDispatchService) SpringContextsUtil.getBean(strategyClass)).matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, variableCategory, collectContextList);
private Object matchEquipVariableCfgCollectContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, String variableCategory, List<MesEquipVariableCfgCollectContext> collectContextList, Boolean isUpperCase, String strategyClass) {
return ((IMesEquipVariableCfgRuleMatchDispatchService) SpringContextsUtil.getBean(strategyClass)).matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, variableCategory, collectContextList, isUpperCase);
}
@Override
public Object matchEquipVariableCfgCollectContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, String variableCategory, List<MesEquipVariableCfgCollectContext> collectContextList) {
return matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, variableCategory, collectContextList, true);
}
@Override
public Object matchEquipVariableCfgCollectContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, String variableCategory, List<MesEquipVariableCfgCollectContext> collectContextList, Boolean isUpperCase) {
switch (MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.getByValue(variableCategory)) {
@ -33,7 +38,7 @@ public class MesEquipVariableCfgRuleMatchDispatchService implements IMesEquipVar
case READY_SIGNAL:
case MEMBRANE_SIGNAL:
case BYPASS:
return matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, variableCategory, collectContextList, "mesEvcRuleMatchCompareValueService");
return matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, variableCategory, collectContextList, isUpperCase, "mesEvcRuleMatchCompareValueService");
case FIRST_MOULD_NO:
case MOULD_NO:
case ASSEMBLY:
@ -41,7 +46,7 @@ public class MesEquipVariableCfgRuleMatchDispatchService implements IMesEquipVar
case WORK_ORDER:
case PRODUCTION_PART_NO:
case RECYCLABLE_PACKAGE:
return matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, variableCategory, collectContextList, "mesEvcRuleMatchBackValueService");
return matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, variableCategory, collectContextList, isUpperCase, "mesEvcRuleMatchBackValueService");
//TODO CASE 数据变量接口逻辑根据变量类别实现策略

@ -22,7 +22,7 @@ import java.util.List;
public class MesEvcRuleMatchBackValueService implements IMesEquipVariableCfgRuleMatchDispatchService {
@Override
public List<MesEquipVariableCollectContext> matchEquipVariableCfgCollectContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, String variableCategory, List<MesEquipVariableCfgCollectContext> collectContextList) {
public List<MesEquipVariableCollectContext> matchEquipVariableCfgCollectContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, String variableCategory, List<MesEquipVariableCfgCollectContext> collectContextList, Boolean isUpperCase) {
List<MesEquipVariableCollectContext> backList = null;
@ -34,7 +34,7 @@ public class MesEvcRuleMatchBackValueService implements IMesEquipVariableCfgRule
if (null == equipVariableCollectContext || StringUtils.isEmpty(equipVariableCollectContext.getEquipVariableValue())) continue;
if (StringUtils.isEmpty(filterSpecialChar(equipVariableCollectContext).getEquipVariableValue())) continue;
if (StringUtils.isEmpty(filterSpecialChar(equipVariableCollectContext, isUpperCase).getEquipVariableValue())) continue;
if (CollectionUtils.isEmpty(backList)) backList = new ArrayList<>();
@ -50,9 +50,9 @@ public class MesEvcRuleMatchBackValueService implements IMesEquipVariableCfgRule
//不过滤":"tesla零件号带冒号
//不过滤[)>字符
private MesEquipVariableCollectContext filterSpecialChar(MesEquipVariableCollectContext equipVariableCollectContext) {
private MesEquipVariableCollectContext filterSpecialChar(MesEquipVariableCollectContext equipVariableCollectContext, Boolean isUpperCase) {
equipVariableCollectContext.trimValue();
equipVariableCollectContext.trimValue(isUpperCase);
String realEquipVariableValue = equipVariableCollectContext.getEquipVariableValue();

@ -24,7 +24,7 @@ import java.util.stream.Collectors;
public class MesEvcRuleMatchCompareValueService implements IMesEquipVariableCfgRuleMatchDispatchService {
@Override
public Boolean matchEquipVariableCfgCollectContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, String variableCategory, List<MesEquipVariableCfgCollectContext> collectContextList) {
public Boolean matchEquipVariableCfgCollectContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, String variableCategory, List<MesEquipVariableCfgCollectContext> collectContextList, Boolean isUpperCase) {
Map<String, List<MesEquipVariableCfgCollectContext>> ruleCategoryMap = CollectionUtils.isEmpty(collectContextList) ? null : collectContextList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesEquipVariableCfgCollectContext::getRuleCategory));
@ -35,7 +35,7 @@ public class MesEvcRuleMatchCompareValueService implements IMesEquipVariableCfgR
if (null == entry) continue;
//任意一组规则全部匹配
if (matchEquipVariableCfgCollectContext(entry.getKey(), entry.getValue())) return true;
if (matchEquipVariableCfgCollectContext(entry.getValue(), isUpperCase)) return true;
}
@ -43,21 +43,21 @@ public class MesEvcRuleMatchCompareValueService implements IMesEquipVariableCfgR
}
private Boolean matchEquipVariableCfgCollectContext(String ruleCategory, List<MesEquipVariableCfgCollectContext> collectContextList) {
private Boolean matchEquipVariableCfgCollectContext(List<MesEquipVariableCfgCollectContext> collectContextList, Boolean isUpperCase) {
for (MesEquipVariableCfgCollectContext collectContext : collectContextList) {
if (null == collectContext) continue;
//任意一个规则不匹配
if (!matchEquipVariableCfgCollectContext(collectContext)) return false;
if (!matchEquipVariableCfgCollectContext(collectContext, isUpperCase)) return false;
}
return true;
}
private Boolean matchEquipVariableCfgCollectContext(MesEquipVariableCfgCollectContext collectContext) {
private Boolean matchEquipVariableCfgCollectContext(MesEquipVariableCfgCollectContext collectContext, Boolean isUpperCase) {
if (StringUtils.isEmpty(collectContext.getValue()) || CollectionUtils.isEmpty(collectContext.getEquipVariableCollectContextList())) return false;
@ -69,16 +69,16 @@ public class MesEvcRuleMatchCompareValueService implements IMesEquipVariableCfgR
if (StringUtils.isEmpty(equipVariableCollectContext.getEquipVariableValue())) return false;
//比对值是否相等
if (!compareTo(collectContext.getValue(), equipVariableCollectContext.getEquipVariableValue(), equipVariableCollectContext.getDataType())) return false;
if (!compareTo(collectContext.getValue(), equipVariableCollectContext.getEquipVariableValue(), equipVariableCollectContext.getDataType(), isUpperCase)) return false;
}
return true;
}
private Boolean compareTo(String value1, String value2, Integer dataType) {
value1 = value1.toUpperCase();
value2 = value2.toUpperCase();
private Boolean compareTo(String value1, String value2, Integer dataType, Boolean isUpperCase) {
if (isUpperCase) value1 = value1.toUpperCase();
if (isUpperCase) value2 = value2.toUpperCase();
if (value1.equals(value2)) return true;
if (StringUtils.isEmpty(dataType) || dataType.compareTo(MesExtEnumUtil.VARIABLE_DATA_TYPE.VARIABLE_DATA_TYPE_40.getValue()) != 0) return false;
value1 = transferValueBoo(value1);

@ -143,7 +143,7 @@ public class MesFirstMouldNoReadStepService extends BaseStepService {
MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME);
//读取的头道模具号进行规则匹配
List<MesEquipVariableCollectContext> equipVariableCollectContextList = (List<MesEquipVariableCollectContext>) equipVariableCfgRuleMatchService.matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.FIRST_MOULD_NO.getValue(), equipLogDispatchContext.getEquipVariableCfgCollectContextList());
List<MesEquipVariableCollectContext> equipVariableCollectContextList = (List<MesEquipVariableCollectContext>) equipVariableCfgRuleMatchService.matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.FIRST_MOULD_NO.getValue(), equipLogDispatchContext.getEquipVariableCfgCollectContextList(), false);
//没有有效的数据
if (CollectionUtils.isEmpty(equipVariableCollectContextList)) {
@ -188,7 +188,7 @@ public class MesFirstMouldNoReadStepService extends BaseStepService {
//验证产出零件(一模多腔)信息是否跟当前对设备及模具匹配
private Boolean checkCachedProductionPartValid(List<MesProductionPartContext> productionPartContextList, String equipmentCode, String firstMouldNo) {
return (!CollectionUtils.isEmpty(productionPartContextList) && productionPartContextList.get(0).getEquipmentCode().equals(equipmentCode) && productionPartContextList.get(0).getMouldNo().equals(firstMouldNo)) ? true : false;
return (!CollectionUtils.isEmpty(productionPartContextList) && productionPartContextList.get(0).getEquipmentCode().toUpperCase().equals(equipmentCode.toUpperCase()) && productionPartContextList.get(0).getMouldNo().toUpperCase().equals(firstMouldNo.toUpperCase())) ? true : false;
}
//封装展示组件MODULE_CONTENT内容

@ -49,7 +49,7 @@ public class MesManyCellTriggerJumpProcessStepService extends BaseStepService {
//所有分屏强制跳过工序密码
String pwd = fsmCommonService.handleFsmWcpcMapDataForDoScanThenBackValue(reqBean, MesPcnExtConstWords.MANY_CELL_TRIGGER_JUMP_PROCESS_PWD);
if (StringUtils.isEmpty(pwd) || !pwd.equals(reqBean.getScanInfo())) return stepResult;
if (StringUtils.isEmpty(pwd) || !pwd.toUpperCase().equals(reqBean.getScanInfo().toUpperCase())) return stepResult;
StationResultBean resultBean = new StationResultBean();

@ -146,7 +146,7 @@ public class MesMouldNoReadStepService extends BaseStepService {
}
//读取的模具号进行规则匹配
List<MesEquipVariableCollectContext> equipVariableCollectContextList = (List<MesEquipVariableCollectContext>) equipVariableCfgRuleMatchService.matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.MOULD_NO.getValue(), equipLogDispatchContext.getEquipVariableCfgCollectContextList());
List<MesEquipVariableCollectContext> equipVariableCollectContextList = (List<MesEquipVariableCollectContext>) equipVariableCfgRuleMatchService.matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.MOULD_NO.getValue(), equipLogDispatchContext.getEquipVariableCfgCollectContextList(), false);
//没有有效的数据: 设置常变值 或者 当前没有头道模具号或生产工单信息
if (CollectionUtils.isEmpty(equipVariableCollectContextList) && (equipLogDispatchContext.getNeedNewValue() || !StringUtils.isEmpty(isReadMultiCavityCfg))) {

@ -126,17 +126,19 @@ public class MesProcessMethodSourceBoxInOutStepService extends BaseStepService {
}
//查询条码信息
Map<String, List<MesProduceSn>> produceSnMap = produceSnExtService.getProduceSnMap(reqBean.getOrganizeCode(), bindingDetailList.stream().map(MesRecyclablePackageBindingDetail::getProductSn).collect(Collectors.toList()));
String productSnUpper;
for (MesRecyclablePackageBindingDetail bindingDetail : bindingDetailList) {
productSnUpper = bindingDetail.getProductSn().toUpperCase();
//外协件
if (CollectionUtils.isEmpty(produceSnMap) || !produceSnMap.containsKey(bindingDetail.getProductSn())) {
if (CollectionUtils.isEmpty(produceSnMap) || !produceSnMap.containsKey(productSnUpper)) {
for (int i = 0; i < bindingDetail.getQty(); i++) {
productionPsInContextList.add(new MesProductionPsInContext(reqBean.getOrganizeCode(), bindingDetail.getProductSn()).messageSource(equipVariableCollectContextList.iterator().next().getMessageSource()));
productionPsInContextList.add(new MesProductionPsInContext(reqBean.getOrganizeCode(), productSnUpper).messageSource(equipVariableCollectContextList.iterator().next().getMessageSource()));
}
recyclablePackageContextList.add(new MesProductionRecyclablePackageContext(recyclablePackageBinding,bindingDetail));
//自制件
} else {
recyclablePackageContextList.add(new MesProductionRecyclablePackageContext(recyclablePackageBinding,bindingDetail).setId(produceSnMap.get(bindingDetail.getProductSn()).iterator().next().getId()));
productSnCheckStepService.createProductionPsInContext(reqBean, stepResult, workCell, equipVariableCollectContextList.iterator().next(), produceSnMap.get(bindingDetail.getProductSn()), productionPsInContextList);
recyclablePackageContextList.add(new MesProductionRecyclablePackageContext(recyclablePackageBinding,bindingDetail).setId(produceSnMap.get(productSnUpper).iterator().next().getId()));
productSnCheckStepService.createProductionPsInContext(reqBean, stepResult, workCell, equipVariableCollectContextList.iterator().next(), produceSnMap.get(productSnUpper), productionPsInContextList);
}
}
//流程包含解绑工步[工步参数]

@ -238,6 +238,9 @@ public class MesProductSnGenerateStepService extends BaseStepService {
//未知不同步
produceSnClone.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
//条码转大写
produceSnToUpperCase(produceSnClone);
if (StringUtils.isEmpty(produceSnClone.getId())) {
produceSnClone.setFid(UUID.randomUUID().toString());
produceSnClone = produceSnExtService.insert(produceSnClone);
@ -273,6 +276,13 @@ public class MesProductSnGenerateStepService extends BaseStepService {
}
private void produceSnToUpperCase(MesProduceSn produceSn) {
if (!StringUtils.isEmpty(produceSn.getProductSn())) produceSn.setProductSn(produceSn.getProductSn().toUpperCase());
if (!StringUtils.isEmpty(produceSn.getCustSn())) produceSn.setCustSn(produceSn.getCustSn().toUpperCase());
if (!StringUtils.isEmpty(produceSn.getWorkOrderNo())) produceSn.setWorkOrderNo(produceSn.getWorkOrderNo().toUpperCase());
if (!StringUtils.isEmpty(produceSn.getPartNo())) produceSn.setPartNo(produceSn.getPartNo().toUpperCase());
}
private GenSerialNoModel generateGenSerialNoModel(StationRequestBean reqBean, StationResultBean resultBean, String ruleCode, MesPart part) {
return new GenSerialNoModel(ruleCode).prodLocation(reqBean.getWorkCenterCode()).partNo(part.getPartNo()).partSnParam(part.getPartSnParam())
.putDataMap(MesPart.class.getSimpleName(), part).basicInfo(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());

@ -219,7 +219,7 @@ public class MesProductSnPrintSortStepService extends BaseStepService {
// 根据工单号分组
return CollectionUtils.isEmpty(workOrderList) ? null :
workOrderList.stream().collect(Collectors.toMap(MesWorkOrder::getWorkOrderNo, Function.identity(), (x, y) -> y));
workOrderList.stream().collect(Collectors.toMap(o -> o.getWorkOrderNo().toUpperCase(), Function.identity(), (x, y) -> y));
}
//过滤打印配置信息

@ -269,14 +269,14 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
if (labelTemplate == null)
return stepResult.isCompleted(false).msg(String.format("请检查包装定义信息,零件号[%s]对应模板代码[%s]无效!", mesCutSchemeFg.getPartNo(), mesPackingDefine.getPackageTemplate()));
MesPartContext mesPartContext = partDataExtContext.get(mesCutSchemeFg.getPartNo());
MesPartContext mesPartContext = partDataExtContext.get(mesCutSchemeFg.getPartNo().toUpperCase());
mesPartContext.setCopies(mesPackingDefine.getPrintCopies() == null ? 1 : mesPackingDefine.getPrintCopies());
mesPartContext.setPackageSnRule(mesPackingDefine.getPackageBarcodeRule());
mesPartContext.setPrinter(StringUtils.isEmpty(cutScheme.getPackageSnPrinter()) ? mesPackingDefine.getPrinter() : cutScheme.getPackageSnPrinter());
mesPartContext.setLabelTemplate(StringUtils.isEmpty(cutScheme.getPackageLabelTemplateCode()) ? mesPackingDefine.getPackageTemplate() : cutScheme.getPackageLabelTemplateCode());
mesPartContext.setCustPartNo(customerPart == null ? "" : customerPart.getCustPartNo());
partDataExtContext.put(mesCutSchemeFg.getPartNo(), mesPartContext);
partDataExtContext.put(mesCutSchemeFg.getPartNo().toUpperCase(), mesPartContext);
workOrderCutDetailModelList.add(workOrderCutDetailModel);
}
@ -322,11 +322,11 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
}
private static void packProductionPartContextList(MesProductionProcessContext productionProcessContext, List<MesEquipVariableCollectContext> equipVariableCollectContextList, List<MesProductionPartContext> productionPartContextList, MesCutScheme cutScheme, List<MesWorkOrderCutDetail> mesWorkOrderCutDetailList, List<MesWorkOrder> workOrderList) {
Map<String, MesWorkOrderCutDetail> workOrderCutDetailMap = mesWorkOrderCutDetailList.stream().collect(Collectors.toMap(MesWorkOrderCutDetail::getWorkOrderNo, Function.identity(), (x, y) -> y));
Map<String, MesWorkOrderCutDetail> workOrderCutDetailMap = mesWorkOrderCutDetailList.stream().collect(Collectors.toMap(o -> o.getWorkOrderNo().toUpperCase(), Function.identity(), (x, y) -> y));
workOrderList.stream().filter(o -> null != o).forEach(o -> {
MesProductionPartContext productionPartContext = new MesProductionPartContext()
.copyPartNo(o, workOrderCutDetailMap.get(o.getWorkOrderNo()).getQty(), workOrderCutDetailMap.get(o.getWorkOrderNo()).getCutWorkOrderNo(), equipVariableCollectContextList.get(0).getMessageSource())
.copyPartNo(o, workOrderCutDetailMap.get(o.getWorkOrderNo().toUpperCase()).getQty(), workOrderCutDetailMap.get(o.getWorkOrderNo().toUpperCase()).getCutWorkOrderNo(), equipVariableCollectContextList.get(0).getMessageSource())
.isCheck(productionProcessContext.getWorkCell());
productionPartContext.setCutCode(cutScheme.getCutCode());
productionPartContextList.add(productionPartContext);

@ -140,7 +140,7 @@ public class MesWorkOrderCutPackageSnSaveStepService extends BaseStepService {
Double qty, List<MesWorkOrderCutPackage> workOrderCutPackages,
List<MesWorkOrderCutDetailModel> newWorkOrderCutFgDataContextList) {
MesPartContext mesPartContext = partDataContext.get(workOrderCutDetailModel.getPartNo());
MesPartContext mesPartContext = partDataContext.get(workOrderCutDetailModel.getPartNo().toUpperCase());
String nowTime = TimeTool.getNowTime(false);
MesWorkOrderCutPackage cutPackage = new MesWorkOrderCutPackage();
ConvertBean.serviceModelInitialize(cutPackage, reqBean.getUserInfo());
@ -182,7 +182,7 @@ public class MesWorkOrderCutPackageSnSaveStepService extends BaseStepService {
} catch (ImppBusiException e) {
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), e.getErrorDetail());
} catch (Exception e) {
String webMsg = String.format("零件编码[%s]编码规则代码[%s]生成零件条码%s", part.getPartNo(), ruleCode, fsmRouteDataService.handleFsmCfgOrDefault(reqBean, MesPcnEnumUtil.FSM_CFG.FSM_EXCEPTION_MSG.getCode()));
String webMsg = String.format("零件编码[%s]编码规则代码[%s]生成裁片工单包装条码%s", part.getPartNo(), ruleCode, fsmRouteDataService.handleFsmCfgOrDefault(reqBean, MesPcnEnumUtil.FSM_CFG.FSM_EXCEPTION_MSG.getCode()));
this.sendMessage(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.ERROR.getValue()), webMsg, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
this.cacheException(reqBean, reqBean.getStepName(), webMsg, e, true);
foundExThrowNoShowMsg();

@ -13,6 +13,7 @@ import cn.estsh.i3plus.mes.pcn.util.StringUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
@ -73,6 +74,9 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService {
@Autowired
private IMesProdShiftRecordService prodShiftRecordService;
@Autowired
private SnowflakeIdMaker snowflakeIdMaker;
@Override
public StepResult execute(StationRequestBean reqBean) {
@ -128,7 +132,7 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService {
MesPart part = partDataContext.get(mesProductionPartContext.getPartNo());
MesProdRuleContext mesProdRuleContext = prodRuleContextMapByOutPartNo.get(part.getPartNo());
MesProdRuleContext mesProdRuleContext = prodRuleContextMapByOutPartNo.get(mesProductionPartContext.getPartNo());
MesProduceSn produceSn = new MesProduceSn();
ConvertBean.serviceModelInitialize(produceSn, reqBean.getUserInfo());
@ -139,7 +143,7 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService {
produceSn.setCraftCode(productionProcessContext.getCraftCode());
produceSn.setCustSn(produceSn.getCustSn());
produceSn.setSerialNumber(doGenerateSerialNo(reqBean, resultBean, MesPcnExtConstWords.DEFAULT_SERIAL_NUMBER_RULE, part));
produceSn.setSerialNumber(snowflakeIdMaker.nextId() + MesPcnExtConstWords.EMPTY);
produceSn.setQty(mesProductionPartContext.getCutQty());
produceSn.setWorkOrderNo(mesProductionPartContext.getWorkOrderNo());

@ -156,11 +156,11 @@ public class MesProductionProcessContextStepService extends BaseStepService impl
public MesProductionProcessContext productionPwdContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext) {
List<MesConfig> configList = configService.doCachedConfigList(MesPcnExtConstWords.PRODUCTION_PWD_CFG, reqBean.getOrganizeCode());
Map<String, List<MesConfig>> cfgKeyMap = CollectionUtils.isEmpty(configList) ? null : configList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCfgKey()))).collect(Collectors.groupingBy(MesConfig::getCfgKey));
return productionProcessContext.finishCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.CAVITY_FINISH_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.CAVITY_FINISH_CODE).get(0).getCfgValue() : MesPcnExtConstWords.CAVITY_FINISH_CODE)
.craftJumpCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.CRAFT_JUMP_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.CRAFT_JUMP_CODE).get(0).getCfgValue() : MesPcnExtConstWords.CRAFT_JUMP_CODE)
.assemblySkipCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.ASSEMBLY_SKIP_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.ASSEMBLY_SKIP_CODE).get(0).getCfgValue() : MesPcnExtConstWords.ASSEMBLY_SKIP_CODE)
.assemblyCavitySkipCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.ASSEMBLY_CAVITY_SKIP_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.ASSEMBLY_CAVITY_SKIP_CODE).get(0).getCfgValue() : MesPcnExtConstWords.ASSEMBLY_CAVITY_SKIP_CODE)
.sortSuspiciousCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.SORT_SUSPICIOUS_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.SORT_SUSPICIOUS_CODE).get(0).getCfgValue() : MesPcnExtConstWords.SORT_SUSPICIOUS_CODE);
return productionProcessContext.finishCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.CAVITY_FINISH_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.CAVITY_FINISH_CODE).get(0).getCfgValue().toUpperCase() : MesPcnExtConstWords.CAVITY_FINISH_CODE)
.craftJumpCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.CRAFT_JUMP_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.CRAFT_JUMP_CODE).get(0).getCfgValue().toUpperCase() : MesPcnExtConstWords.CRAFT_JUMP_CODE)
.assemblySkipCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.ASSEMBLY_SKIP_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.ASSEMBLY_SKIP_CODE).get(0).getCfgValue().toUpperCase() : MesPcnExtConstWords.ASSEMBLY_SKIP_CODE)
.assemblyCavitySkipCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.ASSEMBLY_CAVITY_SKIP_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.ASSEMBLY_CAVITY_SKIP_CODE).get(0).getCfgValue().toUpperCase() : MesPcnExtConstWords.ASSEMBLY_CAVITY_SKIP_CODE)
.sortSuspiciousCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.SORT_SUSPICIOUS_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.SORT_SUSPICIOUS_CODE).get(0).getCfgValue().toUpperCase() : MesPcnExtConstWords.SORT_SUSPICIOUS_CODE);
}
//验证组织模型有效性

@ -23,6 +23,7 @@ import org.springframework.util.StringUtils;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @Description :
@ -63,6 +64,8 @@ public class MesPartDataMapSaveStepService extends BaseStepService {
if (!isBackError) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), stepResult.getMsg());
}
partNoList = partNoList.stream().map(o -> o.toUpperCase()).collect(Collectors.toList());
//从上下文中取出零件信息集合
Map<String, ? extends MesPart> partDataMap = productionDispatchContextStepService.getPartDataContext(reqBean, isExt);
@ -140,6 +143,7 @@ public class MesPartDataMapSaveStepService extends BaseStepService {
}
private MesProductionPartContext getProductionPartContextByPartNo(StationRequestBean reqBean, String partNo, MesProductionProcessContext productionProcessContext, Map<String, MesPart> partDataMap) {
partNo = partNo.toUpperCase();
if (!partNo.equals(productionProcessContext.getFinishCode())) return new MesProductionPartContext().copyPartNo(reqBean.getOrganizeCode(), partNo, partDataMap.get(partNo).getPartName());
return new MesProductionPartContext().isFinishCode();
}
@ -169,8 +173,8 @@ public class MesPartDataMapSaveStepService extends BaseStepService {
private Map<String, MesPartContext> getPartMap(List<MesPart> partList) {
partList = CollectionUtils.isEmpty(partList) ? null :
partList.stream().distinct().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesPart::getPartNo))), ArrayList::new));
return CollectionUtils.isEmpty(partList) ? null : partList.stream().filter(o -> null != o).collect(Collectors.toMap(MesPart::getPartNo, o -> new MesPartContext(o)));
partList.stream().distinct().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getPartNo().toUpperCase()))), ArrayList::new));
return CollectionUtils.isEmpty(partList) ? null : partList.stream().filter(o -> null != o).collect(Collectors.toMap(o -> o.getPartNo().toUpperCase(), o -> new MesPartContext(o)));
}
}

@ -112,6 +112,8 @@ public class BarCodeUtils {
return os;
}
//不过滤":"tesla零件号带冒号
//不过滤[)>字符
public static String removePatternSpecialCharacter(String barCode) {
if (StringUtils.isEmpty(barCode)) return MesPcnExtConstWords.EMPTY;
return StringUtils.removePattern(barCode, "[^A-Z^a-z0-9_^\\s^\\-^/^\\.^\\[^\\)^\\>^\\:]");

@ -131,8 +131,9 @@ public class MesEquipVariableCollectContext implements Serializable {
return this;
}
public MesEquipVariableCollectContext trimValue() {
public MesEquipVariableCollectContext trimValue(Boolean isUpperCase) {
if (!StringUtils.isEmpty(this.equipVariableValue)) this.equipVariableValue = this.equipVariableValue.trim();
if (!StringUtils.isEmpty(this.equipVariableValue) && isUpperCase) this.equipVariableValue = this.equipVariableValue.toUpperCase();
return this;
}

@ -134,6 +134,8 @@ public class MesProdRuleContext implements Serializable {
public MesProdRuleContext copy(MesProdRuleNosortCfg prodRuleNosortCfg) {
BeanUtils.copyProperties(prodRuleNosortCfg, this);
this.pid = prodRuleNosortCfg.getId();
if (!StringUtils.isEmpty(this.inPartNo)) this.inPartNo = this.inPartNo.toUpperCase();
if (!StringUtils.isEmpty(this.outPartNo)) this.outPartNo = this.outPartNo.toUpperCase();
return this;
}

@ -139,13 +139,14 @@ public class MesProductionPartContext implements Serializable {
//根据一模多腔赋值
public MesProductionPartContext copyMouldMultiCavity(MesMouldMultiCavity mouldMultiCavity) {
BeanUtils.copyProperties(mouldMultiCavity, this, MesPcnExtConstWords.ID);
this.partNo = this.partNo.toUpperCase();
return messageSource(MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ.getValue());
}
//根据零件信息赋值
public MesProductionPartContext copyPartNo(String organizeCode, String partNo, String partName) {
this.organizeCode = organizeCode;
this.partNo = partNo;
this.partNo = partNo.toUpperCase();
this.partName = partName;
return messageSource(MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ.getValue());
}
@ -155,6 +156,8 @@ public class MesProductionPartContext implements Serializable {
if (null != workOrder) {
BeanUtils.copyProperties(workOrder, this);
if (StringUtils.isEmpty(this.completeQty)) this.completeQty = new Double(0);
this.workOrderNo = this.workOrderNo.toUpperCase();
this.partNo = this.partNo.toUpperCase();
} else this.isFinishCode = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue();
return messageSource(messageSource);
}
@ -164,8 +167,10 @@ public class MesProductionPartContext implements Serializable {
if (null != workOrder) {
BeanUtils.copyProperties(workOrder, this);
if (StringUtils.isEmpty(this.completeQty)) this.completeQty = new Double(0);
this.setCutQty(cutQty);
this.setCutWorkOrderNo(cutWorkOrderNo);
this.workOrderNo = this.workOrderNo.toUpperCase();
this.partNo = this.partNo.toUpperCase();
this.cutWorkOrderNo = cutWorkOrderNo.toUpperCase();
this.cutQty = cutQty;
} else this.isFinishCode = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue();
return messageSource(messageSource);
}

@ -107,6 +107,10 @@ public class MesProductionPsInContext implements Serializable {
public MesProductionPsInContext(MesProduceSn produceSn) {
BeanUtils.copyProperties(produceSn, this);
if (!StringUtils.isEmpty(this.productSn)) this.productSn = this.productSn.toUpperCase();
if (!StringUtils.isEmpty(this.custSn)) this.custSn = this.custSn.toUpperCase();
if (!StringUtils.isEmpty(this.workOrderNo)) this.workOrderNo = this.workOrderNo.toUpperCase();
if (!StringUtils.isEmpty(this.partNo)) this.partNo = this.partNo.toUpperCase();
}
public MesProductionPsInContext foreignKey(Integer foreignKey) {

@ -1,49 +0,0 @@
package cn.estsh.i3plus.ext.mes.pcn.pojo.context;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import java.io.Serializable;
/**
* -
*/
@Data
public class MesScanMonitorDetailContext implements Serializable {
private static final long serialVersionUID = -7678933218854960945L;
@ApiParam("扫描/读取信息")
private String scanInfo;
@ApiParam("日志类型")
private Integer logType;
@ApiParam("日志内容")
private String message;
@ApiParam("信息类型")
private Integer messageType;
public MesScanMonitorDetailContext() {}
public MesScanMonitorDetailContext(Integer logType) {
this.logType = logType;
}
public MesScanMonitorDetailContext scanInfo(String scanInfo) {
this.scanInfo = scanInfo;
return this;
}
public MesScanMonitorDetailContext message(String message) {
this.message = message;
return this;
}
public MesScanMonitorDetailContext messageType(Integer messageType) {
this.messageType = messageType;
return this;
}
}

@ -621,9 +621,6 @@ public class MesPcnExtConstWords {
// 分表配置
public static final String MES_SHARDING_TABLES_OBJECT_CFG = "MES_SHARDING_TABLES_OBJECT_CFG";
//过程条码默认生成规则
public static final String DEFAULT_SERIAL_NUMBER_RULE = "DEFAULT_SERIAL_NUMBER_RULE";
// 定制页面名称
public static final String CUSTOM_PAGE_NAME = "CUSTOM_PAGE_NAME";

Loading…
Cancel
Save