tags/yfai-pcn-ext-v1.0
王杰 1 year ago
parent eb317e9974
commit 4c3048b236

@ -13,8 +13,8 @@ public interface IMesProductionRecordService {
/**
*
* @param sn
* @param prodRuleNoSortId
* @param serialNo
* @param sourceId
* @param dataSource ,,
*
* MesExtEnumUtil.TIME_DATA_SOURCE
@ -23,5 +23,5 @@ public interface IMesProductionRecordService {
* DATA_SOURCE30(30, "非排序装配件");
*
*/
Map<String,Object> checkSnTimeliness(String sn, Long prodRuleNoSortId , String organizeCode , Integer dataSource ,Boolean isAssembly);
Map<String, Object> checkSnTimeliness(String organizeCode, String serialNo, Long sourceId, Integer dataSource, Boolean isAssembly);
}

@ -39,7 +39,7 @@ import java.util.stream.Collectors;
* @Modify:
**/
@Service
public class MesProduceSnPrintServiceImpl implements IMesProduceSnPrintService {
public class MesProduceSnPrintService implements IMesProduceSnPrintService {
@Autowired
private MesPackingDefineDetailsRepository mesPackingDefineDetailsRDao;

@ -1,6 +1,7 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionRecordService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly;
@ -27,7 +28,7 @@ import java.util.stream.Collectors;
* @Modify:
**/
@Service
public class MesProductionRecordServiceImpl implements IMesProductionRecordService {
public class MesProductionRecordService implements IMesProductionRecordService {
@Autowired
private MesTimeEfficientCfgRepository mesTimeEfficientCfgRao;
@ -55,20 +56,20 @@ public class MesProductionRecordServiceImpl implements IMesProductionRecordServi
* DATA_SOURCE20(20, "非排序加工规则"),
* DATA_SOURCE30(30, "非排序装配件");
*
* @param sn
* @param serialNo
* @param sourceId
* @param organizeCode
* @param isAssembly
* @return
*/
@Override
public Map<String, Object> checkSnTimeliness(String sn, Long sourceId ,String organizeCode ,Integer timeDataSource , Boolean isAssembly) {
public Map<String, Object> checkSnTimeliness(String organizeCode, String serialNo, Long sourceId, Integer dataSource, Boolean isAssembly) {
Map<String, Object> resultMap = new HashMap<>();
//校验成功
resultMap.put("result", true);
resultMap.put(MesPcnExtConstWords.RESULT, true);
//1.根据prodRuleNoSortId 获取 非排序加工规则的 时效性数据 --- 当前的条码需要完全匹配查询的规则
DdlPackBean timelinessPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(sourceId,"sourceId",timelinessPackBean);
DdlPreparedPack.getNumEqualPack(sourceId, MesPcnExtConstWords.SOURCE_ID, timelinessPackBean);
List<MesTimeEfficientCfg> timelinessList = mesTimeEfficientCfgRao.findByHqlWhere(timelinessPackBean);
//2.如果timelinessList为空 且 非装配件校验 直接返回true
@ -79,11 +80,11 @@ public class MesProductionRecordServiceImpl implements IMesProductionRecordServi
if (!isAssembly){
//3.根据条码获取生产加工记录结果
DdlPackBean recordPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(sn,"productSn",recordPackBean);
DdlPreparedPack.getStringEqualPack(serialNo, MesPcnExtConstWords.PRODUCT_SN, recordPackBean);
List<MesProductionRecord> recordList = mesProductionRecordRao.findByHqlWhere(recordPackBean);
boolean checkedResult = checkProductSn(recordList, timelinessList);
if (!checkedResult){
resultMap.put("result", false);
resultMap.put(MesPcnExtConstWords.RESULT, false);
return resultMap;
}
}
@ -93,7 +94,7 @@ public class MesProductionRecordServiceImpl implements IMesProductionRecordServi
for (MesTimeEfficientCfg timeliness : timelinessList) {
//需要查询装配件记录表 production_assembly mesProductionAssemblyRao
DdlPackBean assemblyPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(sn,"assemblySn",assemblyPackBean);
DdlPreparedPack.getStringEqualPack(serialNo,"assemblySn",assemblyPackBean);
DdlPreparedPack.getStringEqualPack(timeliness.getCraftCode(),"craftCode",assemblyPackBean);
List<MesProductionAssembly> productionAssemblyList = mesProductionAssemblyRao.findByHqlWhere(assemblyPackBean);

@ -1,9 +1,6 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNumberRuleMatchDispatchService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProdRuleCfgExtService;
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.api.busi.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
@ -48,6 +45,9 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
@Autowired
private IMesNumberRuleMatchDispatchService numberRuleMatchDispatchService;
@Autowired
private IMesProductionRecordService productionRecordService;
@Override
public StepResult execute(StationRequestBean reqBean) {
@ -86,7 +86,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
//封装非排序加工规则
doHandleProdRuleData(reqBean, resultBean, stepResult, workCenter, productionProcessContext, cellEquipContext, prodRuleContextList, productionPartContextList, productionPsInContextList);
if (!stepResult.isCompleted()) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg());
if (!stepResult.isCompleted() && doBusiCheckToDelete(reqBean, productionPartContextList, productionPsInContextList)) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg());
if (prodRuleContextList.size() != initSize) {
//保存上下文产品加工规则信息集合
@ -152,8 +152,11 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
List<MesProdRuleNosortCfg> filterList = !CollectionUtils.isEmpty(prodRuleNosortCfgMap) ? prodRuleNosortCfgMap.get(productionPartContext.getPartNo()) : null;
if (CollectionUtils.isEmpty(filterList) || filterList.size() > 1) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), String.format(
"请检查非排序产品加工规则信息,根据设备[%s]产出零件[%s]进料零件[空]进料零件规则[空]查询到[%s]条加工规则配置信息,无法显示出装配件清单!", cellEquipContext.getEquipmentCode(), productionPartContext.getPartNo(), CollectionUtils.isEmpty(filterList) ? MesPcnExtConstWords.ZERO : filterList.size()));
if (CollectionUtils.isEmpty(filterList) || filterList.size() > 1) {
productionPartContext.busiCheckToDelete();
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format(
"请检查非排序产品加工规则信息,根据设备[%s]产出零件[%s]进料零件[空]进料零件规则[空]查询到[%s]条加工规则配置信息,无法显示出装配件清单!", cellEquipContext.getEquipmentCode(), productionPartContext.getPartNo(), CollectionUtils.isEmpty(filterList) ? MesPcnExtConstWords.ZERO : filterList.size()));
}
//【非排序线】获取产品加工规则对应的装配件信息
prodRuleContextList.add(prodRuleCfgExtService.getProdRuleNosortContext(new MesProdRuleContext(
@ -186,11 +189,18 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
//进料零件条码匹配进料零件规则
else filterList = (List<MesProdRuleNosortCfg>) numberRuleMatchDispatchService.matchNumberRule(reqBean.getOrganizeCode(), productionPsInContext.getProductSn(), filterProdRuleNosortCfgList(prodRuleNosortCfgList));
if (CollectionUtils.isEmpty(filterList) || filterList.size() > 1) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), String.format(
"请检查非排序产品加工规则信息,根据设备[%s]进料零件条码[%s]查询到[%s]条加工规则配置信息,无法显示出装配件清单!", cellEquipContext.getEquipmentCode(), productionPsInContext.getProductSn(), CollectionUtils.isEmpty(filterList) ? MesPcnExtConstWords.ZERO : filterList.size()));
if (CollectionUtils.isEmpty(filterList) || filterList.size() > 1) {
productionPsInContext.busiCheckToDelete();
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format(
"请检查非排序产品加工规则信息,根据设备[%s]进料零件条码[%s]查询到[%s]条加工规则配置信息,无法显示出装配件清单!", cellEquipContext.getEquipmentCode(), productionPsInContext.getProductSn(), CollectionUtils.isEmpty(filterList) ? MesPcnExtConstWords.ZERO : filterList.size()));
//TODO 验证时效性
//if (!StringUtils.isEmpty(productionPsInContext.getPartNo()) && !时效性接口(productionPsInContext.produceSn, filterList.get(0).getId))
}
if (!StringUtils.isEmpty(productionPsInContext.getPartNo()) && !(Boolean) productionRecordService.checkSnTimeliness(
reqBean.getOrganizeCode(), productionPsInContext.getProductSn(), filterList.get(0).getId(), MesExtEnumUtil.TIME_DATA_SOURCE.DATA_SOURCE20.getValue(), false).get(MesPcnExtConstWords.RESULT)) {
productionPsInContext.busiCheckToDelete();
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("请检查进料主条码信息,进料主条码[%s]时效性验证不通过!", productionPsInContext.getProductSn()));
}
//【非排序线】获取产品加工规则对应的装配件信息
prodRuleContextList.add(prodRuleCfgExtService.getProdRuleNosortContext(new MesProdRuleContext(
@ -249,8 +259,11 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
if (CollectionUtils.isEmpty(innerfilterList) || innerfilterList.size() > 1) continue;
//TODO 验证时效性
//if (!StringUtils.isEmpty(productionPsInContext.getPartNo()) && !checkTimeEfficientCfg(reqBean.getOrganizeCode(), productionPsInContext.getProductSn(), filter.getId(), dataSource, stepResult).isComplete()) return stepResult;
if (!StringUtils.isEmpty(productionPsInContext.getPartNo()) && !(Boolean) productionRecordService.checkSnTimeliness(
reqBean.getOrganizeCode(), productionPsInContext.getProductSn(), innerfilterList.get(0).getId(), MesExtEnumUtil.TIME_DATA_SOURCE.DATA_SOURCE20.getValue(), false).get(MesPcnExtConstWords.RESULT)) {
productionPsInContext.busiCheckToDelete();
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("请检查进料主条码信息,进料主条码[%s]时效性验证不通过!", productionPsInContext.getProductSn()));
}
productionPartContext.foreignKey(productionPsInContext.foreignKey(foreignKey += 1).getForeignKey());
@ -260,10 +273,18 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
}
if (CollectionUtils.isEmpty(innerfilterList) || innerfilterList.size() > 1) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), String.format(
"请检查非排序产品加工规则信息,根据设备[%s]产出零件[%s]匹配任意一个主条码%s查询到[%s]条加工规则配置信息,无法显示出装配件清单!", cellEquipContext.getEquipmentCode(), productionPartContext.getPartNo(),
productionPsInContextList.stream().filter(o -> (null != o && StringUtils.isEmpty(o.getForeignKey()) && o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).map(MesProductionPsInContext::getProductSn).collect(Collectors.toList()).toString(),
CollectionUtils.isEmpty(innerfilterList) ? MesPcnExtConstWords.ZERO : innerfilterList.size()));
if (CollectionUtils.isEmpty(innerfilterList) || innerfilterList.size() > 1) {
productionPsInContextList.forEach(o -> {
if (StringUtils.isEmpty(o.getForeignKey()) || o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) o.busiCheckToDelete();
});
return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format(
"请检查非排序产品加工规则信息,根据设备[%s]产出零件[%s]匹配任意一个主条码%s查询到[%s]条加工规则配置信息,无法显示出装配件清单!", cellEquipContext.getEquipmentCode(), productionPartContext.getPartNo(),
productionPsInContextList.stream().filter(o -> (null != o && StringUtils.isEmpty(o.getForeignKey()) && o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).map(MesProductionPsInContext::getProductSn).collect(Collectors.toList()).toString(),
CollectionUtils.isEmpty(innerfilterList) ? MesPcnExtConstWords.ZERO : innerfilterList.size()));
}
//【非排序线】获取产品加工规则对应的装配件信息
prodRuleContextList.add(prodRuleCfgExtService.getProdRuleNosortContext(new MesProdRuleContext(
@ -283,7 +304,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
//搜集进料零件规则有值的产品加工规则
private List<MesProdRuleNosortCfg> filterProdRuleNosortCfgList(List<MesProdRuleNosortCfg> prodRuleNosortCfgList) {
return CollectionUtils.isEmpty(prodRuleNosortCfgList) ? null : prodRuleNosortCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getInPartNoRule()))).collect(Collectors.toList());
return CollectionUtils.isEmpty(prodRuleNosortCfgList) ? null : prodRuleNosortCfgList.stream().filter(o -> (null != o && StringUtils.isEmpty(o.getInPartNo()) && !StringUtils.isEmpty(o.getInPartNoRule()))).collect(Collectors.toList());
}
//根据产出零件分组数据
@ -367,4 +388,12 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
return attrBeanList;
}
private Boolean doBusiCheckToDelete(StationRequestBean reqBean, List<MesProductionPartContext> productionPartContextList, List<MesProductionPsInContext> productionPsInContextList) {
if (!CollectionUtils.isEmpty(productionPsInContextList)) productionDispatchContextStepService.saveProductionPsInContext(reqBean,
productionPsInContextList.stream().filter(o -> (null != o && o.getBusiCheckToDelete().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).collect(Collectors.toList()));
else if (!CollectionUtils.isEmpty(productionPartContextList)) productionDispatchContextStepService.saveProductionPartContext(reqBean,
productionPartContextList.stream().filter(o -> (null != o && o.getBusiCheckToDelete().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0)).collect(Collectors.toList()));
return true;
}
}

@ -162,7 +162,7 @@ public class MesProdRuleContext implements Serializable {
}
public MesProdRuleContext inPartRuleIsEmpty(Boolean isEmpty) {
this.inPartRuleIsEmpty = true;
this.inPartRuleIsEmpty = isEmpty;
return this;
}

@ -71,6 +71,10 @@ public class MesProductionPartContext implements Serializable {
@ApiParam("工单序号【用于发送设备加工参数】")
private String workOrderSeq;
//默认否
@ApiParam("业务验证之后需要清除的数据标志")
private Integer busiCheckToDelete = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue();
//根据一模多腔赋值
public MesProductionPartContext copyMouldMultiCavity(MesMouldMultiCavity mouldMultiCavity) {
BeanUtils.copyProperties(mouldMultiCavity, this, MesPcnExtConstWords.ID);
@ -102,4 +106,9 @@ public class MesProductionPartContext implements Serializable {
return this;
}
public MesProductionPartContext busiCheckToDelete() {
this.busiCheckToDelete = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue();
return this;
}
}

@ -7,7 +7,6 @@ import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.util.StringUtils;
import java.io.Serializable;
@ -84,6 +83,10 @@ public class MesProductionPsInContext implements Serializable {
@ApiParam(name = "前道工艺防错结果")
private Integer checkCraftResult = MesPcnExtConstWords.ZERO;
//默认否
@ApiParam("业务验证之后需要清除的数据标志")
private Integer busiCheckToDelete = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue();
public MesProductionPsInContext() {}
public MesProductionPsInContext foreignKey(Integer foreignKey) {
@ -127,4 +130,9 @@ public class MesProductionPsInContext implements Serializable {
this.isCheck(workCell);
}
public MesProductionPsInContext busiCheckToDelete() {
this.busiCheckToDelete = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue();
return this;
}
}

@ -127,6 +127,8 @@ public class MesPcnExtConstWords {
public static final String QTY = "qty";
// 工位信息来源
public static final String CELL_MESSAGE_SOURCE = "cellMessageSource";
// 结果
public static final String RESULT = "result";
//设备数据变量读写访问配置

Loading…
Cancel
Save