装配件匹配

tags/yfai-pcn-ext-v1.0
微笑着面对明天 11 months ago
parent 5a954457a4
commit 594edc20ae

@ -61,6 +61,8 @@ public class MesEquipmentLogService implements IMesEquipmentLogService {
// 筛选出该设备中设备变量属性对应的数据采集信息
equipmentLogList = equipmentLogList.stream().filter(mesEquipmentLog -> equipVariableIdList.contains(mesEquipmentLog.getEquipVariableId())).collect(Collectors.toList());
LOGGER.info("需要保存的工艺参数信息: list ={}", equipmentLogList);
Long recordId = snowflakeIdMaker.nextId();
MesEquipmentRecord mesEquipmentRecord =new MesEquipmentRecord();
@ -71,8 +73,10 @@ public class MesEquipmentLogService implements IMesEquipmentLogService {
ConvertBean.serviceModelInitialize(mesEquipmentRecord, actorMessage.getUserName());
String key = getKey(mesEquipmentRecord);
LOGGER.info("key ={}", key);
// todo 目前没有适合的方法,需要优化一下
equipmentLogList.forEach(equipLog -> {
redisMesPcn.putList(key, equipLog);
});
/* MesEq

@ -0,0 +1,44 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNumberRuleMatchDispatchService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyNosortContext;
import com.google.common.base.Objects;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
*/
@Slf4j
@Service
public class MesNumberRuleMatchCompareRangeService implements IMesNumberRuleMatchDispatchService {
@Override
public Boolean matchNumberRule(String organizeCode, String sn, Object... params) {
Object obj = params[0].toString();
if (obj instanceof MesProductionAssemblyNosortContext) {
MesProductionAssemblyNosortContext context = (MesProductionAssemblyNosortContext) obj;
if (StringUtils.isEmpty(context.getMaxValue()) || StringUtils.isEmpty(context.getMinValue())) {
return false;
}
try {
Double snValue = Double.parseDouble(sn);
if (snValue > context.getMaxValue()) {
return false;
}
if (snValue < context.getMinValue()) {
return false;
}
} catch (Exception e) {
return false;
}
} else {
return false;
}
return true;
}
}

@ -5,6 +5,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyNosortConte
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblySortContext;
import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleSortCfg;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Primary;
@ -29,7 +30,7 @@ public class MesNumberRuleMatchDispatchService implements IMesNumberRuleMatchDis
if (numberRuleList.get(0) instanceof MesProdRuleNosortCfg) numberRuleList.forEach(o -> matchNumberRule(organizeCode, sn, resultList, o, "mesNumberRuleMatchRegularExpressionService",o, ((MesProdRuleNosortCfg) o).getInPartNoRule()));
if (numberRuleList.get(0) instanceof MesProductionAssemblyNosortContext) numberRuleList.forEach(o -> matchNumberRule(organizeCode, sn, resultList, o, "mesNumberRuleMatchRegularExpressionService",o, ((MesProductionAssemblyNosortContext) o).getMatchRule()));
if (numberRuleList.get(0) instanceof MesProductionAssemblyNosortContext) numberRuleList.forEach(o -> matchNumberRule(organizeCode, sn, resultList, o, MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.valueOfStrategyClass(((MesProductionAssemblyNosortContext) o).getMatchType()),o, ((MesProductionAssemblyNosortContext) o).getMatchRule()));
if (numberRuleList.get(0) instanceof MesProductionAssemblySortContext) numberRuleList.forEach(o -> matchNumberRule(organizeCode, sn, resultList, o, "mesNumberRuleMatchRegularExpressionService",o, ((MesProductionAssemblySortContext) o).getMatchRule()));

@ -2,8 +2,6 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNumberRuleMatchDispatchService;
import com.google.common.base.Objects;
import jdk.nashorn.internal.runtime.regexp.joni.Regex;
import jodd.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

@ -0,0 +1,79 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNumberRuleMatchDispatchService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base.MesPojoVersionServiceImpl;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyNosortContext;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import com.google.common.base.Objects;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
*
*/
@Slf4j
@Service
public class MesNumberRuleMatchSnService implements IMesNumberRuleMatchDispatchService {
private static final Logger LOGGER = LoggerFactory.getLogger(MesNumberRuleMatchSnService.class);
@Autowired
private IMesProduceSnExtService produceSnExtService;
@Override
public Boolean matchNumberRule(String organizeCode, String sn, Object... params) {
List<MesProduceSn> produceSnList = produceSnExtService.getProduceSnList(organizeCode, Arrays.asList(sn));
if (CollectionUtils.isEmpty(produceSnList)) {
LOGGER.info("条码不存在");
return false;
}
List<MesProduceSn> standardList = produceSnList.stream()
.filter(o -> (null != o && o.getSnStatus().compareTo(MesExtEnumUtil.PRODUCE_SN_STATUS.UNKNOW.getValue()) != 0))
.sorted(Comparator.comparing(MesProduceSn::getCreateDatetime).reversed())
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(standardList)) {
LOGGER.info("匹配到的条码不存在");
return false;
}
MesProduceSn mesProduceSn = standardList.get(0);
if (StringUtils.isEmpty(mesProduceSn.getSnStatus()) || StringUtils.isEmpty(mesProduceSn.getQcStatus()) || StringUtils.isEmpty(mesProduceSn.getPartNo())) {
LOGGER.info("snStatus 为空, 或者 qcStatus为空, 或者 partNo 为空");
return false;
}
if (!Objects.equal(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue(), mesProduceSn.getQcStatus())) {
LOGGER.info("条码:{}, 质量状态不合格 qcStatus={}", mesProduceSn.getProductSn(), mesProduceSn.getQcStatus());
return false;
}
if (!Objects.equal(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue(), mesProduceSn.getSnStatus())) {
LOGGER.info("条码:{}, 条码状态未完成 snStatus={}", mesProduceSn.getProductSn(), mesProduceSn.getSnStatus());
return false;
}
Object obj = params[0].toString();
if (!(obj instanceof MesProductionAssemblyNosortContext)) {
return false;
}
MesProductionAssemblyNosortContext context = (MesProductionAssemblyNosortContext) obj;
if (!Objects.equal(context.getAssemblyPartNo(), mesProduceSn.getPartNo())) {
return false;
}
// 需要校验时效性
return true;
}
}

@ -1,21 +1,25 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipVariableRwExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IWriteVariableService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob.BaseMesScheduleJob;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdShiftContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsInContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
import cn.estsh.i3plus.pojo.mes.model.MesEquipVariableRwResult;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@ -35,6 +39,11 @@ public class WriteVariableService implements IWriteVariableService {
@Autowired
private IMesProductionDispatchContextStepService mesProductionDispatchContextStepService;
@Autowired
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Autowired
private IMesProductionCustomContextStepService productionCustomContextStepService;
/**
*
* @param value
@ -62,6 +71,14 @@ public class WriteVariableService implements IWriteVariableService {
public String transferValue(StationRequestBean reqBean, String value, Integer foreignKey, Integer index) {
List<MesProductionPartContext> productionPartContextList = mesProductionDispatchContextStepService.getProductionPartContext(reqBean);
List<MesProductionPsOutContext> productionPsOutContexts = mesProductionDispatchContextStepService.getProductionPsOutContext(reqBean);
List<MesProductionPsInContext> productionPsInContexts = mesProductionDispatchContextStepService.getProductionPsInContext(reqBean);
String productResult = productionDispatchContextStepService.getProductResultContext(reqBean);
MesProdShiftContext mesProdShiftKvBean = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode());
MesProductionPartContext mesProductionPartContext;
MesProductionPsOutContext productionPsOutSn;
@ -70,18 +87,50 @@ public class WriteVariableService implements IWriteVariableService {
mesProductionPartContext = productionPartContextList.stream().filter(context -> Objects.equals(context.getForeignKey(), foreignKey)).findFirst().orElse(null);
productionPsOutSn = productionPsOutContexts.stream().filter(context -> Objects.equals(context.getForeignKey(), foreignKey)).findFirst().orElse(null);
String newValue = "";
if (value.contains("%")) {
if (value.contains("partNo")) {
newValue = mesProductionPartContext.getPartNo();
} else if (value.contains("orderNo")) {
newValue = mesProductionPartContext.getWorkOrderNo();
} else if (value.contains("sn")) {
newValue = productionPsOutSn.getCustSn();
}
return newValue;
} else {
return value;
if (StringUtils.isEmpty(value)) {
return null;
}
switch (value.toUpperCase()) {
case "%RESULT%" : newValue = mesProductionPartContext.getPartNo(); break;
case "%PARAM%": newValue = mesProductionPartContext.getWorkOrderNo(); break;
case "%ORDERCODE%": newValue = mesProductionPartContext.getWorkOrderNo(); break;
case "%CUSTPARTNO%": newValue = mesProductionPartContext.getCustPartNo(); break;
case "%EMPLOYEENO%": newValue = reqBean.getUserInfo(); break;///当前操作员工号 用户名
case "%BARCODE%": newValue = productionPsOutContexts.get(0).getProductSn(); break;// 条码
case "%BARCODE2%": newValue = productionPsOutContexts.get(1).getProductSn(); break;///条码
case "%BARCODE3%": newValue = productionPsOutContexts.get(2).getProductSn(); break;///条码
case "%BARCODE4%": newValue = productionPsOutContexts.get(3).getProductSn(); break;///条码
case "%BARCODE5%": newValue = productionPsOutContexts.get(4).getProductSn(); break;///条码
case "%BARCODE6%": newValue = productionPsOutContexts.get(5).getProductSn(); break;///条码
case "%BARCODE7%": newValue = productionPsOutContexts.get(6).getProductSn(); break;///条码
case "%BARCODE8%": newValue = productionPsOutContexts.get(7).getProductSn(); break;///条码
case "%BARCODE9%": newValue = productionPsOutContexts.get(8).getProductSn(); break;///条码
case "%BARCODE10%": newValue = productionPsOutContexts.get(9).getProductSn(); break;///条码
case "%BARCODE11%": newValue = productionPsOutContexts.get(10).getProductSn(); break;///条码
case "%BARCODE12%": newValue = productionPsOutContexts.get(11).getProductSn(); break;///条码
case "%BARCODE13%": newValue = productionPsOutContexts.get(12).getProductSn(); break;///条码
case "%BARCODE14%": newValue = productionPsOutContexts.get(13).getProductSn(); break;///条码
case "%BARCODE15%": newValue = productionPsOutContexts.get(14).getProductSn(); break;///条码
case "%BARCODE16%": newValue = productionPsOutContexts.get(15).getProductSn(); break;///条码
case "%BARCODE17%": newValue = productionPsOutContexts.get(16).getProductSn(); break;///条码
case "%BARCODE18%": newValue = productionPsOutContexts.get(17).getProductSn(); break;///条码
case "%BARCODE19%": newValue = productionPsOutContexts.get(18).getProductSn(); break;///条码
case "%BARCODE20%": newValue = productionPsOutContexts.get(19).getProductSn(); break;///条码
case "%CREATEDATE%": newValue = DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN); break;///加工记录的创建时间
case "%CREATEUSER%": newValue = reqBean.getUserInfo(); break;///当前操作员工号 用户名
case "%SHIFT%": newValue = mesProdShiftKvBean.getShiftGroup(); break;///当前操作员工号 用户名
//case "%STATUS%": newValue = productionPsInContexts.get(0).get() +"" ; break;//进料条码状态
// case "%CUSTORDERCOD%": newValue = mesProductionPartContext.getCustOrderNo(); break;///客户订单号
case "%PARTNO%": newValue = mesProductionPartContext.getPartNo(); break;///工单对应的零件号
//case "%VINCODE%": newValue = mesProductionPartContext.getv(); break;///工单对应的vincode
case "%SEQUENCE%": newValue = reqBean.getUserInfo(); break;///工单顺序号 不是生产顺序号
case "%CUSTBARCODE%": newValue = productionPsOutContexts.get(0).getCustSn(); break;///客户条码
case "%GETDATE%": newValue = DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN); break;///客户条码
default:
newValue = value;
}
return newValue;
} else {
if (index != null && foreignKey == null) {
mesProductionPartContext = productionPartContextList.get(index);

@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionCustomContextStepService;
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.apiservice.schedulejob.BaseMesScheduleJob;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
@ -16,6 +17,8 @@ import cn.estsh.i3plus.pojo.mes.repository.MesProductionRecordRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import com.google.common.base.Objects;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -34,6 +37,9 @@ import java.util.stream.Collectors;
@Service("mesProductionRecordGenerateStepService")
public class MesProductionRecordGenerateStepService extends BaseStepService {
public static final Logger LOGGER = LoggerFactory.getLogger(MesProductionRecordGenerateStepService.class);
@Autowired
private IMesProductionProcessContextStepService productionProcessContextStepService;

Loading…
Cancel
Save