From 7574dfe69822c9ff3f8c6230039f87b11aae7452 Mon Sep 17 00:00:00 2001 From: jun Date: Fri, 28 Jun 2024 18:49:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E5=BC=80=E6=A8=A1=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E6=95=B0=E6=8D=AE=E5=8F=91=E9=80=81=20=E8=BF=BD?= =?UTF-8?q?=E6=BA=AF=E6=8A=A5=E8=A1=A8=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/busi/IMesProdMouldStatisticsService.java | 4 ++ .../schedulejob/MesProdMouldStatisticsJob.java | 23 +++++-- .../busi/MesProdMouldStatisticsServiceImpl.java | 77 ++++++++++++++++++++-- .../ext/mes/pcn/pojo/util/MesPcnExtConstWords.java | 9 +-- 4 files changed, 101 insertions(+), 12 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProdMouldStatisticsService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProdMouldStatisticsService.java index 502cd5f..31cc201 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProdMouldStatisticsService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProdMouldStatisticsService.java @@ -13,4 +13,8 @@ public interface IMesProdMouldStatisticsService { @ApiOperation("汇总生产开模统计") void doSumMesProdMouldStatistics(String organizeCode, Integer pageSize, String userName); + + + @ApiOperation("发送生产开模统计数据") + void doSendMesProdMouldStatistics(String organizeCode,String userName); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesProdMouldStatisticsJob.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesProdMouldStatisticsJob.java index 95de35d..752c0b6 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesProdMouldStatisticsJob.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesProdMouldStatisticsJob.java @@ -40,10 +40,25 @@ public class MesProdMouldStatisticsJob extends BaseMesScheduleJob { List wmsJobParamModelList = JsonUtilTool.toList(this.getJobParam(), WmsJobParamModel.class); if (!CollectionUtils.isEmpty(wmsJobParamModelList)) { for (WmsJobParamModel wmsJobParamModel : wmsJobParamModelList) { - long startTime = System.currentTimeMillis(); - mesProdMouldStatisticsService.doSumMesProdMouldStatistics(wmsJobParamModel.getOrganizeCode(), wmsJobParamModel.getPageSize(), "job"); - long endTime = System.currentTimeMillis(); - log.info("工厂{}生产开模统计job --- END --- 耗时: {} ms", wmsJobParamModel.getOrganizeCode(), endTime - startTime); + //统计数据 + try { + long startTime = System.currentTimeMillis(); + mesProdMouldStatisticsService.doSumMesProdMouldStatistics(wmsJobParamModel.getOrganizeCode(), wmsJobParamModel.getPageSize(), "job"); + long endTime = System.currentTimeMillis(); + log.info("工厂{}生产开模统计job --- END --- 耗时: {} ms", wmsJobParamModel.getOrganizeCode(), endTime - startTime); + } catch (Exception e) { + log.info("工厂{}生产开模统计job 执行失败{}", wmsJobParamModel.getOrganizeCode(), e); + } + //发送数据 + try { + long startTime = System.currentTimeMillis(); + mesProdMouldStatisticsService.doSendMesProdMouldStatistics(wmsJobParamModel.getOrganizeCode(), "job"); + long endTime = System.currentTimeMillis(); + log.info("工厂{}生产开模统计发送数据 --- END --- 耗时: {} ms", wmsJobParamModel.getOrganizeCode(), endTime - startTime); + } catch (Exception e) { + log.info("工厂{}生产开模统计发送数据 执行失败{}", wmsJobParamModel.getOrganizeCode(), e); + + } } } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProdMouldStatisticsServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProdMouldStatisticsServiceImpl.java index 1b1a661..08d91e4 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProdMouldStatisticsServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProdMouldStatisticsServiceImpl.java @@ -2,25 +2,26 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProdMouldStatisticsService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesProdMouldStatisticsDao; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.mes.pcn.api.iservice.base.IConfigService; import cn.estsh.i3plus.mes.pcn.util.DateUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.TimeTool; 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.MesMouldMappingCfg; -import cn.estsh.i3plus.pojo.mes.bean.MesProdMouldRecord; -import cn.estsh.i3plus.pojo.mes.bean.MesProdMouldStatistics; -import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; +import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.repository.IMesMouldMappingCfgRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProdMouldRecordRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProdMouldStatisticsRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProductionRecordRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.hutool.http.HttpRequest; 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; @@ -54,6 +55,9 @@ public class MesProdMouldStatisticsServiceImpl implements IMesProdMouldStatistic @Autowired private MesProdMouldStatisticsRepository mesProdMouldStatisticsRDao; + @Autowired + private IConfigService configService; + @Override public void doSumMesProdMouldStatistics(String organizeCode, Integer pageSize, String userName) { //查询未统计的开模记录数据 @@ -80,6 +84,52 @@ public class MesProdMouldStatisticsServiceImpl implements IMesProdMouldStatistic updateMesProductionRecord(organizeCode, userName, undStatisticsMesProdMouldRecordList.stream().map(MesProdMouldRecord::getId).collect(Collectors.toList())); } + @Override + public void doSendMesProdMouldStatistics(String organizeCode, String userName) { + Map mesConfigMap = getMesConfigMap(organizeCode); + if (mesConfigMap == null) { + return; + } + //发送URL + String sendUrl = getConfigValue(mesConfigMap, MesPcnExtConstWords.SEND_URL); + //发送data + String sendData = getConfigValue(mesConfigMap, MesPcnExtConstWords.SEND_DATA); + //发送item + String sendItemData = getConfigValue(mesConfigMap, MesPcnExtConstWords.SEND_ITEM_DATA); + if (Objects.isNull(sendUrl) || Objects.isNull(sendData) || Objects.isNull(sendItemData)) { + return; + } + //查询未发送数据 + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.FALSE, "systemSyncStatus", packBean); + DdlPreparedPack.getStringSmallerNotEqualPack(TimeTool.getToday(), "createDatetime", packBean); + DdlPreparedPack.getOrderBy("modifyDatetime", CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), packBean); + List mesProdMouldStatisticsList = mesProdMouldStatisticsRDao.findByHqlWhere(packBean); + if (CollectionUtils.isEmpty(mesProdMouldStatisticsList)) { + log.info("不存在未发送的数据"); + return; + } + //发送数据 + StringBuilder itemData = new StringBuilder(); + for (MesProdMouldStatistics statistics : mesProdMouldStatisticsList) { + String time = TimeTool.parseStringFormat(statistics.getCreateDatetime(), "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd'T'HH:mm:ss"); + itemData.append(String.format(sendItemData, statistics.getAssetNum(), statistics.getEquipmentCode(), statistics.getQty(), time, "1117")); + } + String body = HttpRequest.post(sendUrl).header("Content-Type", "text/xml").body(String.format(sendData, itemData)).execute().body(); + //发送成功更新同步状态 + mesProdMouldStatisticsList.forEach(t -> { + if (!body.contains("messageID")) { + t.setSystemSyncStatus(CommonEnumUtil.FALSE); + t.setDescription(body); + } else { + t.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + } + ConvertBean.serviceModelUpdate(t, userName); + }); + mesProdMouldStatisticsRDao.saveAll(mesProdMouldStatisticsList); + + } + private void updateMesProductionRecord(String organizeCode, String userName, List idList) { //查询加工记录表 List mesProductionRecordList = getProductionRecordList(organizeCode, idList); @@ -105,6 +155,7 @@ public class MesProdMouldStatisticsServiceImpl implements IMesProdMouldStatistic mesProdMouldStatistic.setWorkDate(mesProdMouldRecordEntry.getKey()); mesProdMouldStatistic.setAssetNum(mesMouldMappingCfg.getAssetNum()); mesProdMouldStatistic.setMeterName(mesMouldMappingCfg.getMeterName()); + mesProdMouldStatistic.setEquipmentCode(mesMouldMappingCfg.getEquipmentCode()); mesProdMouldStatistic.setQty(mesProdMouldRecordEntry.getValue().size()); mesProdMouldStatistic.setOrganizeCode(organizeCode); ConvertBean.serviceModelInitialize(mesProdMouldStatistic, userName); @@ -141,4 +192,22 @@ public class MesProdMouldStatisticsServiceImpl implements IMesProdMouldStatistic DdlPreparedPack.getInPackList(idList, "mouldRecordId", packBean); return mesProductionRecordRDao.findByHqlWhere(packBean); } + + private String getConfigValue(Map mesConfigMap, String key) { + MesConfig mesConfig = mesConfigMap.get(key); + if (Objects.isNull(mesConfig) || StringUtils.isEmpty(mesConfig.getCfgValue())) { + log.info("参数【{}】未维护", key); + return null; + } + return mesConfig.getCfgValue(); + } + + private Map getMesConfigMap(String organizeCode) { + List mesConfigList = configService.findMesConfigByCfgCode(MesPcnExtConstWords.SEND_MES_PROD_MOULD_STATISTICS, organizeCode); + if (CollectionUtils.isEmpty(mesConfigList)) { + log.info("发送开模统计参数【{}】未维护", MesPcnExtConstWords.SEND_MES_PROD_MOULD_STATISTICS); + return null; + } + return mesConfigList.stream().collect(Collectors.toMap(MesConfig::getCfgKey, t -> t)); + } } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index f7ac860..ae3ab48 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -313,10 +313,11 @@ public class MesPcnExtConstWords { public static final String CHANNEL = "channel"; public static final String EQUIPMENT_ID = "equipmentId"; - @Deprecated - public static final String OPC_WRITE_VARIABLE="/api/OPCService/WriteVariable"; - @Deprecated - public static final String OPC_READ_VARIABLE="/api/OPCService/ReadVariable"; + //发送开模统计数据 + public static final String SEND_MES_PROD_MOULD_STATISTICS = "SEND_MES_PROD_MOULD_STATISTICS"; + public static final String SEND_URL = "SEND_URL"; + public static final String SEND_DATA = "SEND_DATA"; + public static final String SEND_ITEM_DATA = "SEND_ITEM_DATA"; }