tags/yfai-pcn-ext-v1.0
微笑着面对明天 12 months ago
parent 4376c15c51
commit feb76a6014

@ -0,0 +1,203 @@
/*
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.step;
import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseStepService;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.util.MesConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipment;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentInterfaceInfo;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentParam;
import cn.estsh.i3plus.pojo.mes.bean.MesWcEquipment;
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.MesEquipmentInterfaceInfoRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentParamRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWcEquipmentRepository;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import lombok.extern.slf4j.Slf4j;
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.List;
import java.util.Objects;
import java.util.stream.Collectors;
*/
/**
* @Description :
* @Reference :
* @Author : xiangwei.zhang
* @CreateDate : 2024-04-22
* @Modify:
**//*
@Slf4j
@Service("jxSnLineOnCheckMcOrPsStepService")
public class ReadWorkResultStepService extends BaseStepService {
@Autowired
private MesWcEquipmentRepository wcEquipmentRepository;
@Autowired
private MesEquipmentRepository equipmentRepository;
@Autowired
private MesEquipmentParamRepository equipmentParamRepository;
@Autowired
private MesEquipmentInterfaceInfoRepository mesEquipmentInterfaceInfoRepository;
@Override
public StepResult init(StationRequestBean reqBean) {
reqBean.setSerialNumber(null);
reqBean.setProductSn(null);
reqBean.setTray(null);
clearStepContent(reqBean);
return super.init(reqBean);
}
*/
/**
* , : ---> equParamList
* equParamList : , :
* equParamList : , :
* :, , ,
* , ,
* ++
* IDDB, : +
* , 0 (0)
* ,
* ,
* , , , ,
* , //, ,
*
* 1(1)
* @param reqBean
* @return
*//*
@Override
public StepResult execute(StationRequestBean reqBean) {
// 1 获取工位信息
String workCell = reqBean.getWorkCellCode();
// 2 根据工位在组织模型中获取设备信息编号
MesWcEquipment mesWcEquipment = wcEquipmentRepository.getByProperty(
new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID, "workCellCode"},
new Object[]{AuthUtil.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
CommonEnumUtil.IS_VAILD.VAILD.getValue(), workCell});
if (null == mesWcEquipment) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工位代码【%s】无效", workCell)
.build();
}
// 3 查询设备信息
MesEquipment mesEquipmentDb = equipmentRepository.getByProperty(
new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID, "equipmentCode"},
new Object[]{mesWcEquipment.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
CommonEnumUtil.IS_VAILD.VAILD.getValue(), mesWcEquipment.getEquipmentCode()});
if (null == mesEquipmentDb) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("设备代码【%s】无效", mesWcEquipment.getEquipmentCode())
.build();
}
//4 查询设备参数信息
List<MesEquipmentParam> mesEquipmentParamList = equipmentParamRepository.findByProperty(
new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID, "equipmentCode"},
new Object[]{mesWcEquipment.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
CommonEnumUtil.IS_VAILD.VAILD.getValue(), mesWcEquipment.getEquipmentCode()});
if (CollectionUtils.isEmpty(mesEquipmentParamList)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("设备代码【%s】无效", mesWcEquipment.getEquipmentCode())
.build();
}
//
List<MesEquipmentParam> mesEquipmentParams = mesEquipmentParamList.stream().filter(mesEquipParam -> Objects.equals(mesEquipParam.getVariableType(), cn.estsh.i3plus.ext.mes.pojo.util.MesPcnExtEnumUtil.EQUIPMENT_VARIABLE_TYPE.PRODUCTION_PARAM.getValue())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(mesEquipmentParams)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("未配置加工结果", mesWcEquipment.getEquipmentCode())
.build();
}
// 从equParamList中筛选 一个点位: 加工模式, 条件: 二级类别。
List<MesEquipmentParam> mesEquipmentParamsModel = mesEquipmentParamList.stream().filter(mesEquipParam -> Objects.equals(mesEquipParam.getVariableType(), cn.estsh.i3plus.ext.mes.pojo.util.MesPcnExtEnumUtil.EQUIPMENT_VARIABLE_TYPE.PRODUCTION_PARAM.getValue())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(mesEquipmentParams)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("未配置加工模式", mesWcEquipment.getEquipmentCode())
.build();
}
// 从equParamList中筛选 多个点位: 加工结果, 条件: 二级类别。
List<MesEquipmentParam> mesEquipmentParamsResult = mesEquipmentParamList.stream().filter(mesEquipParam -> Objects.equals(mesEquipParam.getVariableType(), cn.estsh.i3plus.ext.mes.pojo.util.MesPcnExtEnumUtil.EQUIPMENT_VARIABLE_TYPE.PRODUCTION_PARAM.getValue())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(mesEquipmentParams)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("未配置加工结果", mesWcEquipment.getEquipmentCode())
.build();
}
for (MesEquipmentParam mesEquipmentParam : mesEquipmentParamsModel) {
// 查询设备接口逻辑维护(可以拿到 查询的值以及对应的参考值) 有4个点位 成功 失败 报废 可疑
List<MesEquipmentInterfaceInfo> mesEquipmentInterfaceInfoList = mesEquipmentInterfaceInfoRepository.findByProperty(
new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID, "variableConfigType", "secondCategory"},
new Object[]{mesWcEquipment.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
CommonEnumUtil.IS_VAILD.VAILD.getValue(), mesEquipmentDb.getVariableConfigType(), mesEquipmentParam.getSecondCategory()});
if (CollectionUtils.isEmpty(mesEquipmentInterfaceInfoList)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("设备接口逻辑维护信息缺失", mesWcEquipment.getEquipmentCode())
.build();
}
MesEquipmentInterfaceInfo mesEquipmentInterfaceInfo = mesEquipmentInterfaceInfoList.get(0);
// 查询设备数据采集表
boolean flag = Objects.equals(mesEquipmentInterfaceInfo.getIsOftenChangeValue(), 1);
Integer status = 1;
if (flag) {
status = 0;
}
//根据加工模式点位读取数据,判断值是否匹配接口逻辑的参考值 需要带条件 状态=0
// readEquipmentInfo();
String res = "";
//res = readEquipmentInfo();
if (StringUtils.isEmpty(res)) {
// 无结果
} else if (Objects.equals(res, mesEquipmentInterfaceInfo.getReferValue())) {
// 手动
// todo 修改状态为1 进入下一个工步
return StepResult.getSuccessComplete("");
} else {
// 自动/半自动
// todo 修改状态为1
}
}
// todo 查询数据库看设备的返回信息 与 逻辑维护的数据进行匹配,匹配成功则直接
//todo 根据设备id找到分表然后查询
return stepResult;
}
private
}
*/

@ -0,0 +1,100 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesModelMultiCavity;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
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.MesPartRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j;
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.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* @Description :
* @Author : wangjie
**/
@Slf4j
@Service("mesGenerateSnService")
public class MesGenerateSnService extends BaseStepService {
@Autowired
private IMesProductionProcessContextStepService productionProcessContextStepService;
@Autowired
private MesPartRepository mesPartRepository;
@Autowired
private MesProduceSnRepository mesProduceSnRepository;
@Autowired
private ISyncFuncService syncFuncService;
public static final String ORDER_NO_JIS_SORT = "ORDER_NO_JIS_SORT";
@Override
public StepResult execute(StationRequestBean reqBean) {
StationResultBean resultBean = new StationResultBean();
StepResult stepResult = StepResult.getSuccessComplete();
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getEquipmentVariableList(reqBean, MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PRODUCTION.getValue());
List<MesModelMultiCavity> mesModelMultiCavities = productionProcessContext.getMesModelMultiCavities();
List<MesProduceSn> mesProduceSns = new ArrayList<>();
for (MesModelMultiCavity modelMultiCavity : mesModelMultiCavities) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(modelMultiCavity.getPartNo(), "partNo", packBean);
MesPart mesPart = mesPartRepository.getByProperty(packBean);
if (mesPart == null) {
return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, "零件号不存在");
}
String sn = generateByRule(mesPart);
MesProduceSn mesProduceSn = generateMesProduceSn();
mesProduceSns.add(mesProduceSn);
}
mesProduceSnRepository.saveAll(mesProduceSns);
return StepResult.getSuccessComplete();
}
private String generateByRule(MesPart mesPart) {
//生成工单号
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(ORDER_NO_JIS_SORT);
genSerialNoModel.setPartNo(mesPart.getPartNo());
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, mesPart.getCreateUser(), mesPart.getOrganizeCode(), 1).getResultList();
return resultList.get(0);
}
private MesProduceSn generateMesProduceSn(MesPart mesPart) {
MesProduceSn mesProduceSn = new MesProduceSn();
mesProduceSn.set
}
}
Loading…
Cancel
Save