diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentExtService.java index 725db87..5c2f008 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentExtService.java @@ -51,4 +51,7 @@ public interface IMesEquipmentExtService { @ApiOperation(value = "根据生产线代码查询加工不可用规则信息") List getProdRuleIgnoreCfgListByCenter(String organizeCode, String workCenterCode); + @ApiOperation(value = "根据设备代码, 来源信息查询加工不可用规则信息") + List getProdRuleIgnoreCfgList(String organizeCode, String equipmentCode, Integer dataSource, Long sourceId); + } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesAssemblyExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesAssemblyExtService.java index 0826a43..1209cf9 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesAssemblyExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesAssemblyExtService.java @@ -66,4 +66,7 @@ public interface IMesAssemblyExtService { @ApiOperation(value = "根据条件修改工单装配件记录的装配状态") void saveWorkOrderAssemblyStatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer assemblyStatus); + @ApiOperation(value = "根据ID查询工单装配件信息") + MesWorkOrderAssembly getWorkOrderAssembly(String organizeCode, Long id); + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentExtService.java index ecd0b62..b610355 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentExtService.java @@ -206,6 +206,7 @@ public class MesEquipmentExtService implements IMesEquipmentExtService { return equipSpotCheckContext.isExistSpot().equipmentSpotCheckJson(equipmentSpotCheckList).equipmentSpotCheckDetailJson(equipmentSpotCheckDetailList).equipmentSpotCheckPartJson(equipmentSpotCheckPartList); } + //根据设备代码查询加工不可用规则信息 @Override public List getProdRuleIgnoreCfgListByEquip(String organizeCode, String equipmentCode) { if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipmentCode)) return null; @@ -214,8 +215,10 @@ public class MesEquipmentExtService implements IMesEquipmentExtService { new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), equipmentCode}); } + //根据生产线代码查询加工不可用规则信息 @Override public List getProdRuleIgnoreCfgListByCenter(String organizeCode, String workCenterCode) { + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCode)) return null; List wcEquipmentList = wcEquipmentRepository.findByProperty( new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.WORK_CENTER_CODE}, new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workCenterCode}); @@ -227,4 +230,12 @@ public class MesEquipmentExtService implements IMesEquipmentExtService { else DdlPreparedPack.getInPackList(equipmentCodeList, MesPcnExtConstWords.EQUIPMENT_CODE, packBean); return prodRuleIgnoreCfgRepository.findByHqlWhere(packBean); } + + //根据设备代码, 来源信息查询加工不可用规则信息 + public List getProdRuleIgnoreCfgList(String organizeCode, String equipmentCode, Integer dataSource, Long sourceId) { + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipmentCode) || StringUtils.isEmpty(dataSource) || StringUtils.isEmpty(sourceId)) return null; + return prodRuleIgnoreCfgRepository.findByProperty( + new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.EQUIPMENT_CODE, MesPcnExtConstWords.DATD_SOURCE, MesPcnExtConstWords.SOURCE_ID}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), equipmentCode, dataSource, sourceId}); + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java index ea8f679..b882a98 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java @@ -1,9 +1,6 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base; -import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService; -import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService; -import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesReworkTaskService; -import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService; +import cn.estsh.i3plus.ext.mes.pcn.api.base.*; import cn.estsh.i3plus.ext.mes.pcn.api.busi.*; import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; @@ -37,6 +34,7 @@ import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.util.SpringContextsUtil; import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.map.HashedMap; import org.slf4j.Logger; @@ -69,6 +67,7 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { @Autowired private MesReworkTaskRepository mesReworkTaskRepository; + @Autowired private MesPartTypePictureRepository mesPartTypePictureRepository; @@ -137,11 +136,16 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { @Autowired private IMesWorkOrderExtService workOrderExtService; + @Autowired private MesWorkOrderRepository workOrderRepository; + @Autowired private MesProductVersionRepository productVersionRepository; + @Autowired + private IMesEquipmentExtService equipmentExtService; + @Override public ListPager queryReworkTask(MesReworkTask mesReworkTask, Pager pager) { String organizeCode = !StringUtils.isEmpty(mesReworkTask.getOrganizeCode())?mesReworkTask.getOrganizeCode():AuthUtil.getOrganizeCode(); @@ -489,7 +493,7 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { Map mesWorkCenterMap = new HashMap<>(); //匹配装配件 for (MesProductionAssembly assembly : productionAssemblies) { - Object context = getContext(requestModel, assembly,mesWorkCenterMap); + Object context = getContext(requestModel, assembly, mesWorkCenterMap); //匹配规则 Map result = numberRuleMatchDispatchService.matchNumberRule(requestModel.getOrganizeCode(), requestModel.getSn(), context); //匹配成功 @@ -859,20 +863,38 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { mesProductionAssemblyUniqueRepository.insert(productionAssemblyUnique); } - private Object getContext(MesReworkTaskRequestModel requestModel, MesProductionAssembly mesProductionAssembly,Map mesWorkCenterMap) { + private Object getContext(MesReworkTaskRequestModel requestModel, MesProductionAssembly mesProductionAssembly, Map mesWorkCenterMap) { if(StringUtils.isEmpty(mesProductionAssembly.getWorkCenterCode())) MesPcnException.throwFlowException("产线代码不存在"); - Object context = null; - MesWorkCenter workCenterDb = null; + MesWorkCenter workCenterDb; //产线类型 if(!mesWorkCenterMap.containsKey(mesProductionAssembly.getWorkCenterCode())){ workCenterDb = getMesWorkCenter(requestModel.getOrganizeCode(), mesProductionAssembly.getWorkCenterCode()); mesWorkCenterMap.put(mesProductionAssembly.getWorkCenterCode(),workCenterDb); - }else{ + } else{ workCenterDb = mesWorkCenterMap.get(mesProductionAssembly.getWorkCenterCode()); } - if (MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue() == workCenterDb.getCenterType()) context = new MesProductionAssemblySortContext().copy(mesProductionAssembly); - else context = new MesProductionAssemblyNosortContext().copy(mesProductionAssembly); - return context; + + //获取不可用规则 + String prodRuleIgnoreCfg = getProdRuleIgnoreCfg(requestModel.getOrganizeCode(), workCenterDb.getCenterType(), mesProductionAssembly.getSourceId(), mesProductionAssembly.getEquipmentCode()); + + return MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue() == workCenterDb.getCenterType() + ? new MesProductionAssemblySortContext().copy(mesProductionAssembly).prodRuleIgnoreCfg(prodRuleIgnoreCfg) + : new MesProductionAssemblyNosortContext().copy(mesProductionAssembly).prodRuleIgnoreCfg(prodRuleIgnoreCfg); + } + + //获取不可用规则 + private String getProdRuleIgnoreCfg(String organizeCode, Integer centerType, Long sourceId, String equipmentCode) { + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(centerType) || StringUtils.isEmpty(sourceId) || StringUtils.isEmpty(equipmentCode)) return null; + Long sourceId2IgnoreCfg = null; + if (MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue() == centerType) { + MesWorkOrderAssembly workOrderAssembly = mesAssemblyExtService.getWorkOrderAssembly(organizeCode, sourceId); + if (null != workOrderAssembly && !StringUtils.isEmpty(workOrderAssembly.getPid())) sourceId2IgnoreCfg = workOrderAssembly.getPid(); + } else sourceId2IgnoreCfg = sourceId; + Integer dataSource = MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue() == centerType ? MesExtEnumUtil.PROD_RULE_IGNORE_DATA_SOURCE.DATA_SOURCE10.getValue() : MesExtEnumUtil.PROD_RULE_IGNORE_DATA_SOURCE.DATA_SOURCE30.getValue(); + if (StringUtils.isEmpty(sourceId2IgnoreCfg)) return null; + List prodRuleIgnoreCfgList = equipmentExtService.getProdRuleIgnoreCfgList(organizeCode, equipmentCode, dataSource, sourceId2IgnoreCfg); + if (CollectionUtils.isEmpty(prodRuleIgnoreCfgList)) return null; + return JSONObject.toJSONString(prodRuleIgnoreCfgList); } private MesProduceSn getMesProduceSn(String organizeCode, String productSn) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java index 47cfd02..6cac190 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java @@ -359,4 +359,12 @@ public class MesAssemblyExtService implements IMesAssemblyExtService { packBean); } + @Override + public MesWorkOrderAssembly getWorkOrderAssembly(String organizeCode, Long id) { + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(id)) return null; + return workOrderAssemblyRepository.getByProperty( + new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.ID}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), id}); + } + }