From 096835bd114f8b5f50e649952550f37518f66019 Mon Sep 17 00:00:00 2001 From: jun Date: Mon, 29 Jul 2024 19:04:41 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E6=B8=85=E5=8D=95=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/ext/mes/api/base/IMesConfigService.java | 8 +++++++ .../src/groovy/MesProductionRecordToPisces.groovy | 18 ++++++++++----- .../serviceimpl/base/MesConfigService.java | 21 ++++++++++++++++- .../serviceimpl/base/MesWorkOrderService.java | 2 +- .../serviceimpl/report/MesYfReportServiceImpl.java | 26 +++++++++++++--------- 5 files changed, 57 insertions(+), 18 deletions(-) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesConfigService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesConfigService.java index 0760baf..f8918f5 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesConfigService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesConfigService.java @@ -3,6 +3,8 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.pojo.mes.bean.MesConfig; import io.swagger.annotations.ApiOperation; +import java.util.List; + /** * @Description: * @CreateDate: 2021/9/9 下午3:24 @@ -22,4 +24,10 @@ public interface IMesConfigService { @ApiOperation(value = "验证分表配置") Boolean checkShardingTablesObjectCfg(String organizeCode, String cfgKey, String item); + @ApiOperation(value = "根据分隔符查询存在元素的配置") + List findCfgValueContainItem(String organizeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, List itemList); + + @ApiOperation(value = "查询分表配置") + List findShardingTablesObjectCfg(String organizeCode, String cfgKey, List itemList); + } diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy index 1a2bb5f..d5a4747 100644 --- a/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy @@ -30,6 +30,8 @@ class MesProductionRecordToPisces { public static final Logger LOGGER = LoggerFactory.getLogger(MesProductionRecordToPisces.class) + private static final String[] workCenterCodeList = ["B19CK01A", "B15CK01A", "C06CK01A", "C06CK01B", "C09CK01A", "C12CK01A"] as String[]; + @Autowired private MesEquipmentRepository equipmentRepository; @@ -69,11 +71,17 @@ class MesProductionRecordToPisces { }else{ continue } - - String workOrderNo = String.valueOf(rowMap.get("work_order_no")); - MesWorkOrder workOrderDb = getWorkOrderDb(mapper.getOrganizeCode(), workOrderNo); - if (!Objects.isNull(workOrderDb)) { - rowMap.put("WORK_ORDER_FID", workOrderDb.getFid()) + String workCenterCode = String.valueOf(rowMap.get("work_center_code")); + if (!workCenterCodeList.contains(workCenterCode)) { + String workOrderNo = String.valueOf(rowMap.get("work_order_no")); + MesWorkOrder workOrderDb = getWorkOrderDb(mapper.getOrganizeCode(), workOrderNo); + if (!Objects.isNull(workOrderDb)) { + rowMap.put("WORK_ORDER_FID", workOrderDb.getFid()) + } else { + rowMap.put("WORK_ORDER_FID", null) + } + } else { + rowMap.put("WORK_ORDER_FID", null) } String equipmentCode = String.valueOf(rowMap.get("equipment_code")); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesConfigService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesConfigService.java index a23ee05..06ac806 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesConfigService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesConfigService.java @@ -6,7 +6,6 @@ import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesConfig; -import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentLogDetail; import cn.estsh.i3plus.pojo.mes.repository.MesConfigRepository; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import lombok.extern.slf4j.Slf4j; @@ -17,6 +16,7 @@ import org.springframework.util.StringUtils; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; /** * @Description: @@ -67,4 +67,23 @@ public class MesConfigService implements IMesConfigService { return checkCfgValueIsContainItem(organizeCode, MesExtConstWords.MES_SHARDING_TABLES_OBJECT_CFG, cfgKey, CommonEnumUtil.SOFT_TYPE.MES.name(), MesExtConstWords.SEMICOLON, item); } + @Override + public List findCfgValueContainItem(String organizeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, List itemList) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(cfgCode, MesExtConstWords.CFG_CODE, packBean); + DdlPreparedPack.getStringEqualPack(cfgKey, MesExtConstWords.CFG_KEY, packBean); + DdlPreparedPack.getStringEqualPack(cfgType, MesExtConstWords.CFG_TYPE, packBean); + MesConfig config = configRepository.getByProperty(packBean); + if (null == config || StringUtils.isEmpty(config.getCfgValue())) return null; + List cfgValueList = Arrays.asList(config.getCfgValue().split(splitStr)); + if (CollectionUtils.isEmpty(cfgValueList)) return null; + return itemList.stream().filter(cfgValueList::contains).collect(Collectors.toList()); + } + + @Override + public List findShardingTablesObjectCfg(String organizeCode, String cfgKey, List itemList) { + if(CollectionUtils.isEmpty(itemList)) return null; + return findCfgValueContainItem(organizeCode, MesExtConstWords.MES_SHARDING_TABLES_OBJECT_CFG, cfgKey, CommonEnumUtil.SOFT_TYPE.MES.name(), MesExtConstWords.SEMICOLON, itemList); + } + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index c231b03..45c9b51 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -1470,7 +1470,7 @@ public class MesWorkOrderService extends BaseMesService implements newMesProductOffLine.setQty(1d); newMesProductOffLine.setReportSn(produceSn.getProductSn()); newMesProductOffLine.setBomVersion(mesWorkOrderDb.getProductVersion()); - newMesProductOffLine.setSerialNumber(produceSn.getProductSn()); + newMesProductOffLine.setSerialNumber(produceSn.getSerialNumber()); newMesProductOffLine.setUnit(mesBom.getUnit()); newMesProductOffLine.setItemUnit(mesBom.getItemUnit()); newMesProductOffLine.setWorkOrderNo(mesWorkOrderDb.getWorkOrderNo()); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java index 4020a74..c0c4b5c 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.report; +import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService; import cn.estsh.i3plus.ext.mes.api.base.IMesProduceSnService; import cn.estsh.i3plus.ext.mes.api.base.IMesProductionRecordService; import cn.estsh.i3plus.ext.mes.api.base.file.IMesFileService; @@ -90,6 +91,9 @@ public class MesYfReportServiceImpl implements IMesYfReportService { @Autowired private MesEquipmentRepository mesEquipmentRepository; + @Autowired + private IMesConfigService mesConfigService; + @Override public ListPager queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager) { ListPager mesDeviceDataQueryReportResultModelListPager = @@ -157,7 +161,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService { List productionAssemblyList = mesProductionAssemblyRepository.findByHqlWhere(packBean); Map> productionAssemblyMap = CollectionUtils.isEmpty(productionAssemblyList) ? null : productionAssemblyList.stream().collect(Collectors.groupingBy(t -> new StringJoiner(MesExtConstWords.COMMA).add(t.getWorkCenterCode()).add(t.getWorkCellCode()).add(t.getEquipmentCode()).toString())); //根据设备代码查询设备id - Map> mesEquipmentLogDetailMap = getMesEquipmentLogDetailMap(mesProduceSn, productionRecordList); + Map> mesEquipmentLogDetailMap = getMesEquipmentLogDetailMap(mesProduceSn.getOrganizeCode(), productionRecordList); //查询工序名称 Map processMap = getMesProcessMap(mesProduceSn, processCodeList); //数据组装 @@ -220,29 +224,29 @@ public class MesYfReportServiceImpl implements IMesYfReportService { return mesTraceabilityReportModelList; } - private Map> getMesEquipmentLogDetailMap(MesProduceSn mesProduceSn, List productionRecordList) { - List organizeCodeEquipList = getEquipList(mesProduceSn, productionRecordList); + private Map> getMesEquipmentLogDetailMap(String organizeCode, List productionRecordList) { + List organizeCodeEquipList = getEquipList(organizeCode, productionRecordList); //工艺加工参数 if(CollectionUtils.isEmpty(organizeCodeEquipList)) return null; - return getMesEquipmentLogDetailMap(mesProduceSn, productionRecordList, organizeCodeEquipList); + return getMesEquipmentLogDetailMap(organizeCode, productionRecordList, organizeCodeEquipList); } - private Map> getMesEquipmentLogDetailMap(MesProduceSn mesProduceSn, List productionRecordList, List organizeCodeEquipList) { - DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProduceSn.getOrganizeCode()); + private Map> getMesEquipmentLogDetailMap(String organizeCode, List productionRecordList, List organizeCodeEquipList) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getInPackList(organizeCodeEquipList, MesExtConstWords.ORG_EQUIP_ID, packBean); - DdlPreparedPack.getInPackList(productionRecordList.stream().map(MesProductionRecord::getMouldRecordId).collect(Collectors.toList()), "mouldRecordId", packBean); + DdlPreparedPack.getInPackList(productionRecordList.stream().map(MesProductionRecord::getMouldRecordId).distinct().collect(Collectors.toList()), "mouldRecordId", packBean); DdlPreparedPack.getInPackArray(new Object[]{MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS.getValue()}, "variableType", packBean); List mesEquipmentLogDetailList = mesEquipmentLogDetailRepository.findByHqlWhere(packBean); if (CollectionUtils.isEmpty(mesEquipmentLogDetailList)) return null; return mesEquipmentLogDetailList.stream().collect(Collectors.groupingBy(t -> new StringJoiner(MesExtConstWords.COMMA).add(t.getMouldRecordId().toString()).add(t.getWorkCenterCode()).add(t.getWorkCellCode()).add(t.getEquipmentCode()).toString())); } - private List getEquipList(MesProduceSn mesProduceSn, List productionRecordList) { - DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProduceSn.getOrganizeCode()); - DdlPreparedPack.getInPackList(productionRecordList.stream().map(MesProductionRecord::getEquipmentCode).collect(Collectors.toList()), "equipmentCode", packBean); + private List getEquipList(String organizeCode, List productionRecordList) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(productionRecordList.stream().map(MesProductionRecord::getEquipmentCode).distinct().collect(Collectors.toList()), "equipmentCode", packBean); List mesEquipmentList = mesEquipmentRepository.findByHqlWhere(packBean); if (CollectionUtils.isEmpty(mesEquipmentList)) return null; - return mesEquipmentList.stream().map(t -> new StringJoiner(MesExtConstWords.E_UNDERLINE).add(t.getOrganizeCode()).add(t.getEquipId().toString()).toString()).collect(Collectors.toList()); + return mesConfigService.findShardingTablesObjectCfg(organizeCode,MesEquipmentLogDetail.class.getSimpleName(),mesEquipmentList.stream().map(t -> new StringJoiner(MesExtConstWords.E_UNDERLINE).add(t.getOrganizeCode()).add(t.getEquipId().toString()).toString()).distinct().collect(Collectors.toList())); } private MesWorkCenter getWorkCenter(MesProduceSn produceSn) {