From 7e50e2cf37a30c6bdc366543253361e42db94b2e Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Mon, 29 Jul 2024 15:49:45 +0800 Subject: [PATCH 01/46] =?UTF-8?q?mes=E6=8A=A5=E8=A1=A8=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E5=88=86=E8=A1=A8=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/ext/mes/api/base/IMesConfigService.java | 6 +++++ .../serviceimpl/base/MesConfigService.java | 27 ++++++++++++++++++++++ .../report/MesEquipmentLogDetailService.java | 19 +++++++++++++++ .../report/MesWorkCellMonitorLogService.java | 14 ++++++++++- .../i3plus/ext/mes/pojo/util/MesExtConstWords.java | 12 ++++++++++ 5 files changed, 77 insertions(+), 1 deletion(-) 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 2c821c4..0605958 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 @@ -9,11 +9,17 @@ import io.swagger.annotations.ApiOperation; * @Author: simon.song */ public interface IMesConfigService { + @ApiOperation(value = "获取配置表模板代码") String getCfgValue(String org, String key); @ApiOperation(value = "获取配置表模板代码") MesConfig getCfgValueByCode(String key); + @ApiOperation(value = "根据分隔符验证是否存在元素的配置") + Boolean checkCfgValueIsContainItem(String orginzeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, String item); + + @ApiOperation(value = "验证分表配置") + Boolean checkShardingTablesObjectCfg(String orginzeCode, String cfgKey, String item); } 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 d8f381b..88fa13e 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 @@ -1,13 +1,22 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; +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; 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.Arrays; +import java.util.List; /** * @Description: @@ -40,4 +49,22 @@ public class MesConfigService implements IMesConfigService { return this.configRepository.getByProperty(new String[]{"isDeleted", "isValid", "cfgCode"}, new Object[]{CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), cfgCode}); } + + @Override + public Boolean checkCfgValueIsContainItem(String orginzeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, String item) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(orginzeCode); + 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 false; + List cfgValueList = Arrays.asList(config.getCfgValue().split(splitStr)); + return (!CollectionUtils.isEmpty(cfgValueList) && cfgValueList.contains(item)) ? true : false; + } + + @Override + public Boolean checkShardingTablesObjectCfg(String orginzeCode, String cfgKey, String item) { + return checkCfgValueIsContainItem(orginzeCode, MesExtConstWords.MES_SHARDING_TABLES_OBJECT_CFG, cfgKey, CommonEnumUtil.SOFT_TYPE.MES.name(), MesExtConstWords.SEMICOLON, item); + } + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesEquipmentLogDetailService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesEquipmentLogDetailService.java index 54e7817..03f2065 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesEquipmentLogDetailService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesEquipmentLogDetailService.java @@ -1,19 +1,29 @@ 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.busi.report.IMesEquipmentLogDetailService; import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.BaseMesService; +import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentLogDetail; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; +import java.util.ArrayList; import java.util.StringJoiner; @Service public class MesEquipmentLogDetailService extends BaseMesService implements IMesEquipmentLogDetailService { + @Autowired + private IMesConfigService configService; + @Override protected void setPackQueryBean(MesEquipmentLogDetail bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(new StringJoiner(MesExtConstWords.E_UNDERLINE).add(bean.getOrganizeCode()).add(bean.getEquipId().toString()).toString(), MesExtConstWords.ORG_EQUIP_ID, packBean); @@ -26,4 +36,13 @@ public class MesEquipmentLogDetailService extends BaseMesService queryPager(MesEquipmentLogDetail bean, Pager pager) { + if (StringUtils.isEmpty(bean.getEquipId())) MesException.throwBusiException("查询条件的参数缺失设备ID[equipId]"); + String orgEquipId = new StringJoiner(MesExtConstWords.E_UNDERLINE).add(bean.getOrganizeCode()).add(bean.getEquipId().toString()).toString(); + if (!configService.checkShardingTablesObjectCfg(bean.getOrganizeCode(), MesEquipmentLogDetail.class.getSimpleName(), orgEquipId)) + return new ListPager<>(new ArrayList<>(), pager); + return super.queryPager(bean, pager); + } + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesWorkCellMonitorLogService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesWorkCellMonitorLogService.java index 0064b84..0b895f9 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesWorkCellMonitorLogService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesWorkCellMonitorLogService.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.busi.report.IMesWorkCellScanMonitorLogService; import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.BaseMesService; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; @@ -43,6 +44,9 @@ public class MesWorkCellMonitorLogService extends BaseMesService queryWorkCellScanMonitorLogList(MesWorkCellScanMonitorConditionModel conditionModel) { @@ -142,6 +146,10 @@ public class MesWorkCellMonitorLogService extends BaseMesService findWorkCellScanMonitorLogList(MesWorkCellScanMonitorConditionModel conditionModel) { + String orgWorkCode = new StringJoiner(MesExtConstWords.E_UNDERLINE).add(conditionModel.getOrganizeCode()).add(conditionModel.getWorkCenterCode()).toString(); + + if (!configService.checkShardingTablesObjectCfg(conditionModel.getOrganizeCode(), MesWorkCellScanMonitorLog.class.getSimpleName(), orgWorkCode)) return null; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(conditionModel.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(new StringJoiner(MesExtConstWords.E_UNDERLINE).add(conditionModel.getOrganizeCode()).add(conditionModel.getWorkCenterCode()).toString(), MesExtConstWords.ORG_WORK_CODE, packBean); DdlPreparedPack.getStringEqualPack(conditionModel.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, packBean); @@ -177,8 +185,12 @@ public class MesWorkCellMonitorLogService extends BaseMesService findEquipmentLogDetailList(MesWorkCellScanMonitorConditionModel conditionModel) { + String orgEquipId = new StringJoiner(MesExtConstWords.E_UNDERLINE).add(conditionModel.getOrganizeCode()).add(conditionModel.getEquipId().toString()).toString(); + + if (!configService.checkShardingTablesObjectCfg(conditionModel.getOrganizeCode(), MesEquipmentLogDetail.class.getSimpleName(), orgEquipId)) return null; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(conditionModel.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(new StringJoiner(MesExtConstWords.E_UNDERLINE).add(conditionModel.getOrganizeCode()).add(conditionModel.getEquipId().toString()).toString(), MesExtConstWords.ORG_EQUIP_ID, packBean); + DdlPreparedPack.getStringEqualPack(orgEquipId, MesExtConstWords.ORG_EQUIP_ID, packBean); DdlPreparedPack.getNumEqualPack(conditionModel.getEquipId(), MesExtConstWords.EQUIP_ID, packBean); DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PRODUCTION.getValue(), MesExtConstWords.VARIABLE_TYPE, packBean); DdlPreparedPack.getNumEqualPack(conditionModel.getEquipVariableId(), MesExtConstWords.EQUIP_VARIABLE_ID, packBean); diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java index 965c6fb..bbe5937 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java @@ -135,6 +135,12 @@ public class MesExtConstWords { public static final String ORG_WORK_CODE = "orgWorkCode"; //工厂_设备ID public static final String ORG_EQUIP_ID = "orgEquipId"; + //配置代码 + public static final String CFG_CODE = "cfgCode"; + //配置键 + public static final String CFG_KEY = "cfgKey"; + //配置类型 + public static final String CFG_TYPE = "cfgType"; //时间[开始/结束]条件 public static final String START_TIME_START = "startTimeStart"; @@ -218,4 +224,10 @@ public class MesExtConstWords { //英文逗号 public static final String COMMA = ","; + // ; + public static final String SEMICOLON = ";"; + + // 分表配置 + public static final String MES_SHARDING_TABLES_OBJECT_CFG = "MES_SHARDING_TABLES_OBJECT_CFG"; + } From 0da6e7f2f65fae0762043ef3ba1c2e3dd1f1f6e6 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Mon, 29 Jul 2024 16:07:17 +0800 Subject: [PATCH 02/46] =?UTF-8?q?mes=E6=8A=A5=E8=A1=A8=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E5=88=86=E8=A1=A8=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/estsh/i3plus/ext/mes/api/base/IMesConfigService.java | 4 ++-- .../ext/mes/apiservice/serviceimpl/base/MesConfigService.java | 8 ++++---- 2 files changed, 6 insertions(+), 6 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 0605958..0760baf 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 @@ -17,9 +17,9 @@ public interface IMesConfigService { MesConfig getCfgValueByCode(String key); @ApiOperation(value = "根据分隔符验证是否存在元素的配置") - Boolean checkCfgValueIsContainItem(String orginzeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, String item); + Boolean checkCfgValueIsContainItem(String organizeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, String item); @ApiOperation(value = "验证分表配置") - Boolean checkShardingTablesObjectCfg(String orginzeCode, String cfgKey, String item); + Boolean checkShardingTablesObjectCfg(String organizeCode, String cfgKey, String item); } 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 88fa13e..a23ee05 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 @@ -51,8 +51,8 @@ public class MesConfigService implements IMesConfigService { } @Override - public Boolean checkCfgValueIsContainItem(String orginzeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, String item) { - DdlPackBean packBean = DdlPackBean.getDdlPackBean(orginzeCode); + public Boolean checkCfgValueIsContainItem(String organizeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, String item) { + 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); @@ -63,8 +63,8 @@ public class MesConfigService implements IMesConfigService { } @Override - public Boolean checkShardingTablesObjectCfg(String orginzeCode, String cfgKey, String item) { - return checkCfgValueIsContainItem(orginzeCode, MesExtConstWords.MES_SHARDING_TABLES_OBJECT_CFG, cfgKey, CommonEnumUtil.SOFT_TYPE.MES.name(), MesExtConstWords.SEMICOLON, item); + public Boolean checkShardingTablesObjectCfg(String organizeCode, String cfgKey, String item) { + return checkCfgValueIsContainItem(organizeCode, MesExtConstWords.MES_SHARDING_TABLES_OBJECT_CFG, cfgKey, CommonEnumUtil.SOFT_TYPE.MES.name(), MesExtConstWords.SEMICOLON, item); } } From 096835bd114f8b5f50e649952550f37518f66019 Mon Sep 17 00:00:00 2001 From: jun Date: Mon, 29 Jul 2024 19:04:41 +0800 Subject: [PATCH 03/46] =?UTF-8?q?=E9=97=AE=E9=A2=98=E6=B8=85=E5=8D=95?= =?UTF-8?q?=E4=BF=AE=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) { From ba4c03b84334e00fd737d72084869cd75ecd6638 Mon Sep 17 00:00:00 2001 From: "castle.zang" Date: Mon, 29 Jul 2024 20:16:50 +0800 Subject: [PATCH 04/46] =?UTF-8?q?=E6=9B=B4=E6=96=B0bto=E6=8C=89=E6=97=B6?= =?UTF-8?q?=E5=9C=86=E6=95=B4=E7=94=9F=E6=88=90=E5=B7=A5=E5=8D=95=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/roundness/MesTimeRoundnessService.java | 29 ++++++++++++++-------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java index 42ba47c..8e58d08 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java @@ -24,6 +24,7 @@ import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -74,18 +75,24 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { return; } DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); - Long createSeq = Long.parseLong(dateFormat.format(new Date())); - + long createSeq = Long.parseLong(dateFormat.format(new Date())); + Map> sortInfoMap = sortInfoList.stream().collect(Collectors.groupingBy(MesCustSortInfo::getCustPartNo)); + Map prodGroupDetailMap = details.stream().collect(Collectors.toMap(MesPartProdGroupDetail::getCustPartNo, Function.identity())); + Set softInfoKeySet = sortInfoMap.keySet(); //遍历零件生产组零件,过滤出 - for (MesPartProdGroupDetail detail : details) { + for (String softInfoKey : softInfoKeySet) { + MesPartProdGroupDetail detail = prodGroupDetailMap.get(softInfoKey); + if (detail == null){ + continue; + } //根据detail.id 获取 MesProdGroupPartBtoCount btoCountInfo = getByGroupPartId(detail.getId(), detail.getOrganizeCode()); //历史累计差异 double btoCount = btoCountInfo.getCurrentQty(); //获取圆整数量 double roundQty = detail.getRoundQty(); - List sortInfos = sortInfoList.stream().filter(info -> info.getCustPartNo().equals(detail.getCustPartNo())).collect(Collectors.toList()); - if (sortInfos.isEmpty()) { + List sortInfos = sortInfoMap.get(detail.getCustPartNo()); + if (sortInfos == null ||sortInfos.isEmpty()) { continue; } //本次排序需要的数量 @@ -116,7 +123,7 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { mesWorkOrder.setFid(UUID.randomUUID().toString()); mesWorkOrder.setWorkOrderNo(resultList.get(0)); mesWorkOrder.setWorkOrderType(MesExtEnumUtil.ORDER_TYPE.BTO.getValue()); - mesWorkOrder.setWorkOrderSeq(createSeq.toString()); + mesWorkOrder.setWorkOrderSeq(Long.toString(createSeq)); //生产顺序号 【前缀(WOPS)+工厂号+产线+特殊符号#+10位流水 步长10】({prefix}{org}{prodLocation}{dynamicRule}{serialNo}) GenSerialNoModel proSeqGenSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_PRODUCT_SEQ); proSeqGenSerialNoModel.setOrganizeCode(detail.getOrganizeCode()); @@ -171,9 +178,10 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int hours = calendar.get(Calendar.HOUR_OF_DAY); + int minutes = calendar.get(Calendar.MINUTE); String shiftTime = String.format("%02d:%02d", hours, minutes); - if (shiftList == null || shiftList.isEmpty()) { + if (!shiftList.isEmpty()) { for (MesShift shift : shiftList) { String startTime = shift.getStartTime().replace(":", ""); String endTime = shift.getEndTime().replace(":", ""); @@ -254,9 +262,10 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { String nowTime = String.format("%02d:%02d", hour, minute); //遍历窗口时间获取最新的窗口时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - List sortedTime = windowTimeList.stream().sorted(Comparator.comparing(MesPartProdGroupWindowTime::getWindowTime)).collect(Collectors.toList()); + //使用降序 + List sortedTime = windowTimeList.stream().sorted(Comparator.comparing(MesPartProdGroupWindowTime::getWindowTime,Comparator.reverseOrder())).collect(Collectors.toList()); for (MesPartProdGroupWindowTime time : sortedTime) { - if (nowTime.compareTo(time.getWindowTime()) < 0) { + if(Integer.parseInt(time.getWindowTime().replace(":","")) > Integer.parseInt(nowTime.replace(":",""))){ continue; } calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time.getWindowTime().substring(0, 2))); @@ -266,7 +275,7 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { return time; } Date lastRunTime = sdf.parse(time.getLastRunTime()); - if (dateCreateOrder.compareTo(lastRunTime) < 0) { + if (dateCreateOrder.before(lastRunTime)) { continue; } return time; From b08727bb8224a82c10996fcab8d3ee8b2a756b77 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Tue, 30 Jul 2024 11:36:38 +0800 Subject: [PATCH 05/46] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/ext/mes/api/base/IMesConfigService.java | 3 ++ .../serviceimpl/base/MesConfigService.java | 33 +++++++++++++--------- 2 files changed, 23 insertions(+), 13 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 f8918f5..c1cb297 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 @@ -18,6 +18,9 @@ public interface IMesConfigService { @ApiOperation(value = "获取配置表模板代码") MesConfig getCfgValueByCode(String key); + @ApiOperation(value = "获取系统配置集合") + List getConfigList(String organizeCode, String cfgCode, String cfgKey, String cfgType); + @ApiOperation(value = "根据分隔符验证是否存在元素的配置") Boolean checkCfgValueIsContainItem(String organizeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, String item); 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 06ac806..83c20d9 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 @@ -51,31 +51,38 @@ public class MesConfigService implements IMesConfigService { } @Override - public Boolean checkCfgValueIsContainItem(String organizeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, String item) { + public List getConfigList(String organizeCode, String cfgCode, String cfgKey, String cfgType) { 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 false; - List cfgValueList = Arrays.asList(config.getCfgValue().split(splitStr)); + return configRepository.findByHqlWhere(packBean); + } + + @Override + public Boolean checkCfgValueIsContainItem(String organizeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, String item) { + String cfgValue = getAndMergeCfgValue(organizeCode, cfgCode, cfgKey, cfgType, splitStr); + if (StringUtils.isEmpty(cfgValue)) return false; + List cfgValueList = Arrays.asList(cfgValue.split(splitStr)); return (!CollectionUtils.isEmpty(cfgValueList) && cfgValueList.contains(item)) ? true : false; } + private String getAndMergeCfgValue(String organizeCode, String cfgCode, String cfgKey, String cfgType, String splitStr) { + List configList = getConfigList(organizeCode, cfgCode, cfgKey, cfgType); + if (CollectionUtils.isEmpty(configList)) return null; + return configList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCfgValue()))).map(MesConfig::getCfgValue).collect(Collectors.joining(splitStr)); + } + @Override public Boolean checkShardingTablesObjectCfg(String organizeCode, String cfgKey, String item) { - return checkCfgValueIsContainItem(organizeCode, MesExtConstWords.MES_SHARDING_TABLES_OBJECT_CFG, cfgKey, CommonEnumUtil.SOFT_TYPE.MES.name(), MesExtConstWords.SEMICOLON, item); + return checkCfgValueIsContainItem(organizeCode, MesExtConstWords.MES_SHARDING_TABLES_OBJECT_CFG, cfgKey, CommonEnumUtil.SOFT_TYPE.MES.name(), MesExtConstWords.COMMA, 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)); + String cfgValue = getAndMergeCfgValue(organizeCode, cfgCode, cfgKey, cfgType, splitStr); + if (StringUtils.isEmpty(cfgValue)) return null; + List cfgValueList = Arrays.asList(cfgValue.split(splitStr)); if (CollectionUtils.isEmpty(cfgValueList)) return null; return itemList.stream().filter(cfgValueList::contains).collect(Collectors.toList()); } @@ -83,7 +90,7 @@ public class MesConfigService implements IMesConfigService { @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); + return findCfgValueContainItem(organizeCode, MesExtConstWords.MES_SHARDING_TABLES_OBJECT_CFG, cfgKey, CommonEnumUtil.SOFT_TYPE.MES.name(), MesExtConstWords.COMMA, itemList); } } From c4d113ce0582ede1048df872af0fac68eb2b5ebb Mon Sep 17 00:00:00 2001 From: jun Date: Tue, 30 Jul 2024 16:55:40 +0800 Subject: [PATCH 06/46] =?UTF-8?q?=E9=97=AE=E9=A2=98=E6=B8=85=E5=8D=95?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../groovy/Mes2Pisces/MesToPiscesProductSn.groovy | 27 ++++- .../src/groovy/MesProductionRecordToPisces.groovy | 118 +++++++++++++++++---- .../mes/apiservice/dbinterface/WmsSAPDbQuery.java | 4 + .../serviceimpl/report/MesYfReportServiceImpl.java | 13 ++- 4 files changed, 133 insertions(+), 29 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesProductSn.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesProductSn.groovy index f152686..01efd03 100644 --- a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesProductSn.groovy +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesProductSn.groovy @@ -1,3 +1,4 @@ +import cn.estsh.i3plus.platform.common.tool.TimeTool import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy import cn.estsh.i3plus.pojo.base.bean.DdlPackBean import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack @@ -5,13 +6,17 @@ import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfg import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper import cn.estsh.i3plus.pojo.mes.repository.IMesCrossOrganizeCfgRepository import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil +import lombok.Getter +import lombok.Setter import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Autowired import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate import org.springframework.util.CollectionUtils +import org.springframework.util.StringUtils import javax.annotation.Resource +import java.sql.Connection /** * @Description : 跨工厂防错 @@ -30,6 +35,10 @@ class MesToPiscesProductSn { @Resource(name = "mesDataSource") private DynamicDataSourceProxy mesDataSource; + @Getter + @Setter + private Connection mesConn; + def readData(MesInterfaceDataMapper mapper) throws Exception { String organizeCode = mapper.getOrganizeCode(); DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); @@ -40,12 +49,19 @@ class MesToPiscesProductSn { return new ArrayList<>(); } List> srcData = new ArrayList<>(); + List updateList = new ArrayList<>(); //循环处理数据 for (MesCrossOrganizeCfg crossOrganizeCfg : crossOrganizeCfgList) { Map params = new HashMap<>(); params.put("srcOrganizeCode", crossOrganizeCfg.getOrganizeCode()) params.put("partNo", crossOrganizeCfg.getPartNo()) - String sql = "select * from " + mapper.getSrcTableName() + " where organize_code = :srcOrganizeCode and part_no = :partNo and " + mapper.getSrcWhere() + " order by " + mapper.getSrcOrderBy() + " limit " + mapper.getSrcGetLimit() + if (StringUtils.isEmpty(crossOrganizeCfg.getLastCreateDatetime())) { + params.put("createDateTime", TimeTool.pareDateToString(new Date(0))); + } else { + params.put("createDateTime", crossOrganizeCfg.getLastCreateDatetime()) + } + + String sql = "select * from " + mapper.getSrcTableName() + " where organize_code = :srcOrganizeCode and part_no = :partNo and create_date_time >= :createDateTime and " + mapper.getSrcWhere() + " order by " + mapper.getSrcOrderBy() + " limit " + mapper.getSrcGetLimit() //查询待同步的数据 List> dataList = queryDataTable(sql, params); if (!CollectionUtils.isEmpty(dataList)) { @@ -54,8 +70,17 @@ class MesToPiscesProductSn { rowMap.put("DEST_ORGANIZE_CODE", crossOrganizeCfg.getSrcOrganizeCode()) } srcData.addAll(dataList); + String createDateTime = dataList.iterator().next().get("create_date_time") + //更新配置 + updateList.add("update mes_cross_organize_cfg set last_create_date_time = '"+createDateTime+"',last_exe_time = '"+ TimeTool.getNowTime(true)+"' where id= " + crossOrganizeCfg.getId() + " ;") } } + //更新同步标识 + if (!CollectionUtils.isEmpty(updateList) && updateList.size() > 0) { + this.mesConn = mesDataSource.getWriteConnectionWithoutPool(); + mesDataSource.executeAsBatch(updateList, mesConn) + mesDataSource.closeConnectionWithoutPoll(this.mesConn) + } return srcData; } diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy index d5a4747..aa7e57c 100644 --- a/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy @@ -1,13 +1,10 @@ import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy import cn.estsh.i3plus.pojo.base.bean.DdlPackBean import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack -import cn.estsh.i3plus.pojo.mes.bean.MesEquipment -import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn -import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder +import cn.estsh.i3plus.pojo.base.util.StringUtil +import cn.estsh.i3plus.pojo.mes.bean.* import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper -import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentRepository -import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository -import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository +import cn.estsh.i3plus.pojo.mes.repository.* import lombok.Getter import lombok.Setter import org.slf4j.Logger @@ -51,24 +48,37 @@ class MesProductionRecordToPisces { @Setter private Connection mesConn; + @Autowired + private MesWorkCenterRepository mesWorkCenterRepository; + + @Autowired + private MesWorkCellRepository mesWorkCellRepository; + + @Autowired + private MesProcessRepository mesProcessRepository; + def filterData(MesInterfaceDataMapper mapper, List> srcData) throws Exception { if (srcData == null || srcData.size() == 0) { return srcData } + String organizeCode = mapper.getOrganizeCode(); + Map mesWorkCenterMap = new HashMap<>(); + Map mesWorkCellMap = new HashMap<>(); + Map mesProcessMap = new HashMap<>(); List updateList = new ArrayList<>(); List> destData = new ArrayList<>(); for (Map rowMap : srcData) { Map params = new HashMap<>(); - params.put("partNo",rowMap.get("part_no")) - params.put("productSn",rowMap.get("product_sn")) - String sql = "select ID from MES.TT_PC_PART_BARCODE where PART_NO = :partNo and BARCODE = :productSn order by GENERATION_TIME desc"; - List> dataMap = queryDataTable(sql,params); + params.put("partNo", rowMap.get("part_no")) + params.put("productSn", rowMap.get("product_sn")) + String sql = "select top 1 ID from MES.TT_PC_PART_BARCODE where PART_NO = :partNo and BARCODE = :productSn order by GENERATION_TIME desc"; + List> dataMap = queryDataTable(sql, params); - if (!CollectionUtils.isEmpty(dataMap) && dataMap.size() >0) { + if (!CollectionUtils.isEmpty(dataMap) && dataMap.size() > 0) { rowMap.put("BARCODE_ID", dataMap.iterator().next().get("ID")) - updateList.add("update mes_production_record set system_sync_status = 1 where id= "+rowMap.get("id")+" ;") - }else{ + updateList.add("update mes_production_record set system_sync_status = 1 where id= " + rowMap.get("id") + " ;") + } else { continue } String workCenterCode = String.valueOf(rowMap.get("work_center_code")); @@ -83,6 +93,48 @@ class MesProductionRecordToPisces { } else { rowMap.put("WORK_ORDER_FID", null) } + //工作中心 + MesWorkCenter mesWorkCenter = getMesWorkCenter(organizeCode, workCenterCode, mesWorkCenterMap) + if (!Objects.isNull(mesWorkCenter)) { + rowMap.put("work_center_code", mesWorkCenter.getDescription()) + } else { + LOGGER.info("工作中心{},信息不存在", workCenterCode) + } + //工位 + if (!StringUtil.isEmpty(rowMap.get("work_cell_code"))) { + String workCellCode = String.valueOf(rowMap.get("work_cell_code")); + MesWorkCell mesWorkCell = getMesWorkCell(organizeCode, workCellCode, mesWorkCellMap) + if (!Objects.isNull(mesWorkCell)) { + rowMap.put("work_cell_code", mesWorkCell.getDescription()) + } else { + LOGGER.info("工位{},信息不存在", workCellCode) + } + } + //工序信息 + if (!StringUtil.isEmpty(rowMap.get("process_code"))) { + String processCode = String.valueOf(rowMap.get("process_code")); + MesProcess mesProcess = getMesProcess(organizeCode, processCode, mesProcessMap) + if (!Objects.isNull(mesProcess)) { + rowMap.put("process_code", mesProcess.getDescription()) + } else { + LOGGER.info("工序{},信息不存在", processCode) + } + } + //开班记录 + if (!StringUtil.isEmpty(rowMap.get("work_center_code")) && !StringUtil.isEmpty(rowMap.get("process_code")) && !StringUtil.isEmpty(rowMap.get("shift_code"))) { + params = new HashMap<>(); + params.put("workCenterCode", rowMap.get("work_center_code")) + params.put("processCode", rowMap.get("process_code")) + params.put("shiftCode", 1 == Integer.parseInt(rowMap.get("shift_code").toString()).intValue() ? "早班" : "晚班") + sql = "select top 1 ID from MES.TL_PS_SHIFT_START where ASSEMBLY_LINE = :workCenterCode and SHIFT_NAME = :shiftCode and SHIFT_GROUP_CODE = :processCode order by ID desc"; + dataMap = queryDataTable(sql, params); + if (!CollectionUtils.isEmpty(dataMap) && dataMap.size() > 0) { + rowMap.put("SHIFT_START_ID", dataMap.iterator().next().get("ID")) + } + } + if (StringUtil.isEmpty(rowMap.get("SHIFT_START_ID"))) { + rowMap.put("SHIFT_START_ID", null) + } String equipmentCode = String.valueOf(rowMap.get("equipment_code")); MesEquipment equipmentDb = getEquipmentDb(mapper.getOrganizeCode(), equipmentCode); @@ -93,23 +145,15 @@ class MesProductionRecordToPisces { } //更新同步标识 - if(!CollectionUtils.isEmpty(updateList) && updateList.size() > 0){ + if (!CollectionUtils.isEmpty(updateList) && updateList.size() > 0) { this.mesConn = mesDataSource.getWriteConnectionWithoutPool(); - mesDataSource.executeAsBatch(updateList,mesConn) + mesDataSource.executeAsBatch(updateList, mesConn) mesDataSource.closeConnectionWithoutPoll(this.mesConn) } return destData; } - def getProduceSnDb(String organizeCode, String productSn, String partNo) { - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getStringEqualPack(productSn, "productSn", ddlPackBean); - DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean); - MesProduceSn produceSnDb = produceSnRepository.getByProperty(ddlPackBean); - return produceSnDb; - } - MesWorkOrder getWorkOrderDb(String organizeCode, String workOrderNo) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(workOrderNo, "workOrderNo", ddlPackBean); @@ -130,4 +174,32 @@ class MesProductionRecordToPisces { return dataMap; } + private MesWorkCenter getMesWorkCenter(String organizeCode, String workCenterCode, Map mesWorkCenterMap) { + if (Objects.isNull(mesWorkCenterMap) || !mesWorkCenterMap.containsKey(workCenterCode)) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", ddlPackBean); + mesWorkCenterMap.put(workCenterCode, mesWorkCenterRepository.getByProperty(ddlPackBean)) + } + return mesWorkCenterMap.get(workCenterCode); + } + + private MesWorkCell getMesWorkCell(String organizeCode, String workCenterCell, Map mesWorkCellMap) { + if (Objects.isNull(mesWorkCellMap) || !mesWorkCellMap.containsKey(workCenterCell)) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workCenterCell, "workCellCode", ddlPackBean); + mesWorkCellMap.put(workCenterCell, mesWorkCellRepository.getByProperty(ddlPackBean)) + } + return mesWorkCellMap.get(workCenterCell); + } + + + private MesProcess getMesProcess(String organizeCode, String processCode, Map mesProcessMap) { + if (Objects.isNull(mesProcessMap) || !mesProcessMap.containsKey(processCode)) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(processCode, "processCode", ddlPackBean); + mesProcessMap.put(processCode, mesProcessRepository.getByProperty(ddlPackBean)) + } + return mesProcessMap.get(processCode); + } + } \ No newline at end of file diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/WmsSAPDbQuery.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/WmsSAPDbQuery.java index 854c57d..b6a01a8 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/WmsSAPDbQuery.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/WmsSAPDbQuery.java @@ -119,6 +119,7 @@ public class WmsSAPDbQuery { * @throws Exception */ public String partName(String organizeCode, String partNo) throws Exception { + if(StringUtil.isEmpty(partNo) || StringUtil.isEmpty(organizeCode)) return ""; String sqlString = "select part_name from mes_part where organize_code='" + organizeCode + "' and part_no='" + partNo + "'"; @@ -138,9 +139,12 @@ public class WmsSAPDbQuery { * @throws Exception */ public String getColumnDateBySql(String sql, String params, String column) throws Exception { + if(StringUtil.isEmpty(sql)) return ""; String[] split = null; if (!StringUtil.isEmpty(params)) { split = params.split(","); + }else{ + if(sql.contains("?")) return ""; } List> result = mesDataSourceProxy.queryMapList(srcConn, sql, split); if (CollectionUtils.isNotEmpty(result)) { 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 c0c4b5c..3e1b4a4 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 @@ -232,11 +232,14 @@ public class MesYfReportServiceImpl implements IMesYfReportService { } 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).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); + List mesEquipmentLogDetailList = new ArrayList<>(); + for (String organizeCodeEquip : organizeCodeEquipList) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(organizeCodeEquip, MesExtConstWords.ORG_EQUIP_ID, 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); + mesEquipmentLogDetailList.addAll(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())); } From 2d94c2c66de89465202b359a38354a53f204a82b Mon Sep 17 00:00:00 2001 From: jun Date: Wed, 31 Jul 2024 13:41:12 +0800 Subject: [PATCH 07/46] =?UTF-8?q?=E9=97=AE=E9=A2=98=E6=B8=85=E5=8D=95?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/serviceimpl/base/MesRawPackageDetailServiceImpl.java | 2 +- .../ext/mes/apiservice/serviceimpl/base/MesRawPackageServiceImpl.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesRawPackageDetailServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesRawPackageDetailServiceImpl.java index c9312be..716a344 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesRawPackageDetailServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesRawPackageDetailServiceImpl.java @@ -23,7 +23,7 @@ public class MesRawPackageDetailServiceImpl extends BaseMesService implements IMesRawPackageService { protected void setPackQueryBean(MesRawPackage bean, DdlPackBean packBean) { - DdlPreparedPack.getStringLikerPack(bean.getPackageType(), "packageType", packBean); + DdlPreparedPack.getNumEqualPack(bean.getPackageType(), "packageType", packBean); DdlPreparedPack.getStringLikerPack(bean.getName(), "name", packBean); } @@ -45,7 +45,7 @@ public class MesRawPackageServiceImpl extends BaseMesService impl ValidatorBean.checkNotNull(item.getPackageType(), "容器类型"); ValidatorBean.checkNotNull(item.getName(), "容器名称"); DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(item.getPackageType(), "packageType", packBean); + DdlPreparedPack.getNumEqualPack(item.getPackageType(), "packageType", packBean); DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", packBean); if (baseRDao.isExitByHql(packBean)) { MesException.throwMesBusiException("容器类型【%s】已存在", item.getPackageType()); From 1e77a3a7f5e0f1e75820eeed1b6e2cc148a8e4ff Mon Sep 17 00:00:00 2001 From: "logic.fang" <[logic.fang@estsh.com]> Date: Wed, 31 Jul 2024 18:54:19 +0800 Subject: [PATCH 08/46] =?UTF-8?q?=E4=BA=A7=E7=BA=BF=E7=9C=8B=E6=9D=BF-?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/board/IMesYfBoardServiceImpl.java | 55 ++++++++++++++-------- .../model/board/MesWorkCenterBoardResultModel.java | 8 ++-- 2 files changed, 40 insertions(+), 23 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/board/IMesYfBoardServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/board/IMesYfBoardServiceImpl.java index 951251e..c8809ed 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/board/IMesYfBoardServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/board/IMesYfBoardServiceImpl.java @@ -17,6 +17,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; @@ -105,11 +107,15 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService { } resultModel.setWorkCenterCompletedQuantity(workCenterCompletedQuantity); resultModel.setWorkCenterPlannedQuantity(workCenterPlannedQuantity); + double workCenterCompletionRate; if (workCenterCompletedQuantity == 0 || workCenterPlannedQuantity == 0) { - resultModel.setWorkCenterCompletionRate(0D); + workCenterCompletionRate = 0; }else { - resultModel.setWorkCenterCompletionRate(workCenterCompletedQuantity * 100 / workCenterPlannedQuantity); + workCenterCompletionRate = workCenterCompletedQuantity * 100 / workCenterPlannedQuantity; } + BigDecimal bd = new BigDecimal(workCenterCompletionRate); + bd = bd.setScale(2, RoundingMode.HALF_UP); + resultModel.setWorkCenterCompletionRate(bd); return resultModel; } @@ -129,11 +135,18 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService { resultModel.setPartDescription(mesWorkOrder.getPartName()); resultModel.setWorkOrderCompletedQuantity(mesWorkOrder.getCompleteQty()); resultModel.setWorkOrderPlannedQuantity(mesWorkOrder.getQty()); + double workOrderFirstPassRate; if (resultModel.getWorkOrderCompletedQuantity() == 0 || resultModel.getWorkOrderPlannedQuantity() == 0) { - resultModel.setWorkOrderFirstPassRate(0D); + workOrderFirstPassRate = 0; }else { - resultModel.setWorkOrderFirstPassRate(resultModel.getWorkOrderCompletedQuantity() * 100 / resultModel.getWorkOrderPlannedQuantity()); + workOrderFirstPassRate = resultModel.getWorkOrderCompletedQuantity() * 100 / resultModel.getWorkOrderPlannedQuantity(); + if (workOrderFirstPassRate > 100) { + workOrderFirstPassRate = 100; + } } + BigDecimal bd = new BigDecimal(workOrderFirstPassRate); + bd = bd.setScale(2, RoundingMode.HALF_UP); + resultModel.setWorkOrderFirstPassRate(bd); resultModelList.add(resultModel); } return resultModelList; @@ -146,12 +159,11 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(conditionModel.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(conditionModel.getWorkCenterCodeList().get(0), "workCenterCode", ddlPackBean); MesWorkCenter mesWorkCenter = mesWorkCenterRepository.getByProperty(ddlPackBean); + String jph; if (Objects.isNull(mesWorkCenter) || StringUtils.isEmpty(mesWorkCenter.getJph())) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) - .setErrorDetail(conditionModel.getWorkCenterCodeList().get(0) + " 产线未维护有效的产线JPH信息!") - .build(); + jph = "0"; + }else { + jph = mesWorkCenter.getJph(); } //获取并汇总当前产线在当前时间前12个小时的每个小时时间段内工单的完成数 Map> timeZoneMap = getLastHoursTimeZoneMap(NUM); @@ -169,7 +181,7 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService { //横坐标赋值 resultModel.setUnitHourCompletionRateTimePeriod(timeZone); //目标值 - resultModel.setUnitHourCompletionRateTargetValue(Double.valueOf(mesWorkCenter.getJph())); + resultModel.setUnitHourCompletionRateTargetValue(Double.valueOf(jph)); if (CollectionUtils.isEmpty(mesProductOffLineQueryResultList)) { resultModel.setUnitHourCompletionRate(0); }else { @@ -214,17 +226,17 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService { collect(Collectors.groupingBy(MesWorkCenterBoardResultModel::getQcStatus)); if (CollectionUtils.isEmpty(nowResultList) || !resultModelByQcStatusMap.containsKey(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue())) { - //当前时间段没有生产加工记录或者没有合格的生产加工条码 - resultModel.setWorkCenterFirstTimeOfflineQualificationRate(0D); + //当前时间段没有生产加工记录或者没有合格的生产加工条码时返回值置null(保证数据为0时瀑布图连线的垂直) + resultModel.setWorkCenterFirstTimeOfflineQualificationRate(null); }else { - double workCenterFirstTimeOfflineQualificationRate = ( - resultModelByQcStatusMap.get(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()).size() * 100 - / nowResultList.size()); + double workCenterFirstTimeOfflineQualificationRate = resultModelByQcStatusMap.get(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()).size() * 100 / nowResultList.size(); //最大值只允许100 if (workCenterFirstTimeOfflineQualificationRate > 100) { workCenterFirstTimeOfflineQualificationRate = 100; } - resultModel.setWorkCenterFirstTimeOfflineQualificationRate(workCenterFirstTimeOfflineQualificationRate); + BigDecimal bd = new BigDecimal(workCenterFirstTimeOfflineQualificationRate); + bd = bd.setScale(2, RoundingMode.HALF_UP); + resultModel.setWorkCenterFirstTimeOfflineQualificationRate(bd); } resultModelList.add(resultModel); } @@ -277,6 +289,9 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService { //最新的点检单结果为 NOK //结果设置为“异常” resultModel.setInspectionResults(MesExtEnumUtil.INSPECTION_RESULTS.ABNORMAL.getValue()); + }else { + //其它结果设置为“异常” + resultModel.setInspectionResults(MesExtEnumUtil.INSPECTION_RESULTS.ABNORMAL.getValue()); } }else { //不存在该种点检类型的点检单数据 @@ -296,10 +311,10 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService { @Override public MesWorkCenterBoardResultModel queryAbnormalDowntime(MesWorkCenterBoardConditionModel conditionModel) { MesWorkCenterBoardResultModel resultModel = new MesWorkCenterBoardResultModel(); - //获取查询时间区间 - Map> timeZoneMap = getTimeZoneMap(conditionModel.getWorkCenterCodeList(), - conditionModel.getTimeRangeIdentification(), conditionModel.getOrganizeCode()); - resultModel.setAbnormalDowntime("00:45"); + //获取查询时间区间(需求未明确,暂时注释,返回固定值) +// Map> timeZoneMap = getTimeZoneMap(conditionModel.getWorkCenterCodeList(), +// conditionModel.getTimeRangeIdentification(), conditionModel.getOrganizeCode()); + resultModel.setAbnormalDowntime("00:00"); return resultModel; } diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java index a5a8e8c..937d43d 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiParam; import lombok.Data; +import java.math.BigDecimal; + /** * @Description : 产线看板-查询结果封装 * @Reference : @@ -34,7 +36,7 @@ public class MesWorkCenterBoardResultModel { private Double workCenterPlannedQuantity; @ApiParam(value = "产线完成率") - private Double workCenterCompletionRate; + private BigDecimal workCenterCompletionRate; /** * 查询产线工单完成情况 @@ -55,7 +57,7 @@ public class MesWorkCenterBoardResultModel { private Double workOrderPlannedQuantity; @ApiParam(value = "工单一次合格率") - private Double workOrderFirstPassRate; + private BigDecimal workOrderFirstPassRate; /** * 查询单位小时完工数 @@ -73,7 +75,7 @@ public class MesWorkCenterBoardResultModel { * 查询产线一次下线合格率 */ @ApiParam(value = "产线一次下线合格率") - private Double workCenterFirstTimeOfflineQualificationRate; + private BigDecimal workCenterFirstTimeOfflineQualificationRate; @ApiParam(value = "产线一次下线合格率-时间段") private String workCenterFirstTimeOfflineQualificationRateTimePeriod; From 8d48119572221de2290c36ab382c85593c4813d4 Mon Sep 17 00:00:00 2001 From: "castle.zang" Date: Wed, 31 Jul 2024 20:24:27 +0800 Subject: [PATCH 09/46] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E4=BF=A1=E6=81=AF=E6=97=B6=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=9C=AA=E8=A7=A3=E6=9E=90=E8=BF=87=E7=9A=84=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/serviceimpl/base/MesCustSoftInfoServiceImpl.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustSoftInfoServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustSoftInfoServiceImpl.java index eea273c..710c9ce 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustSoftInfoServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustSoftInfoServiceImpl.java @@ -2,7 +2,9 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesCustSoftInfoService; 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.shipping.MesCustSortInfo; import org.springframework.stereotype.Service; @@ -23,6 +25,7 @@ public class MesCustSoftInfoServiceImpl extends BaseMesService public List queryCustSortInfoList(String custCode, String custOrganizeCode, String infoPointCode, String organizeCode, List custPartNoList) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(custCode,"custCode", ddlPackBean); + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),"serviceFlag", ddlPackBean); DdlPreparedPack.getStringEqualPack(custOrganizeCode, "custOrganizeCode", ddlPackBean); DdlPreparedPack.getStringEqualPack(infoPointCode, "infoPointCode", ddlPackBean); DdlPreparedPack.getInPackList(custPartNoList,"custPartNo", ddlPackBean); @@ -31,8 +34,9 @@ public class MesCustSoftInfoServiceImpl extends BaseMesService @Override public void updateCustSortInfo(MesCustSortInfo custSortInfo) { - ConvertBean.saveOrUpdate(custSortInfo,"edi"); - baseRDao.update(custSortInfo); + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(custSortInfo.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(custSortInfo.getId(),"id",ddlPackBean); + baseRDao.updateByProperties(new String[]{"serviceFlag","modifyUser","modifyDatetime"},new Object[]{CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),"edi", TimeTool.getNowTime(true)},ddlPackBean); } } From fad2cb5c66162e9b6ea7460190f449235ef95b5b Mon Sep 17 00:00:00 2001 From: "castle.zang" Date: Wed, 31 Jul 2024 20:41:09 +0800 Subject: [PATCH 10/46] =?UTF-8?q?=E4=BF=AE=E6=94=B9bto=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E5=B7=A5=E5=8D=95=E7=9A=84=E7=AA=97=E5=8F=A3=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java index 8e58d08..078de5e 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java @@ -71,7 +71,7 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { try { //4. 如果没有订单需要更新窗口时间 TM_BAS_PRODUCT_GROUP_WINDOW_TIME MesPartProdGroupWindowTime time = getWindowTimeByProductGroup(partProdGroup.id, partProdGroup.getOrganizeCode()); if (Objects.isNull(time)) { - log.info("当前零件生产组:{}没有维护时间窗口", partProdGroup.getPartProdGroupName()); + log.info("当前零件生产组:{} 没有到达生产工单的窗口", partProdGroup.getPartProdGroupName()); return; } DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); From ee50030890d4c9fa432583410fb397626aa6ba33 Mon Sep 17 00:00:00 2001 From: jun Date: Wed, 31 Jul 2024 23:32:10 +0800 Subject: [PATCH 11/46] =?UTF-8?q?=E4=BA=A7=E7=BA=BF=E4=B8=8E=E9=9B=B6?= =?UTF-8?q?=E4=BB=B6=E5=85=B3=E7=B3=BB=E5=AF=BC=E5=85=A5=EF=BC=88=E4=BA=A7?= =?UTF-8?q?=E7=BA=BF=E5=90=8D=E7=A7=B0=E6=94=B9=E4=B8=BA=E4=BA=A7=E7=BA=BF?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/base/MesWorkCenterPartRelationService.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCenterPartRelationService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCenterPartRelationService.java index 5046f7c..0459746 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCenterPartRelationService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCenterPartRelationService.java @@ -50,7 +50,7 @@ public class MesWorkCenterPartRelationService extends BaseMesService relationList = beanList.stream().collect(Collectors.collectingAndThen( Collectors.toCollection(() -> new TreeSet<>( - Comparator.comparing(p -> p.getPartNo() + ";" + p.getWorkCenterName()))), ArrayList::new)); + Comparator.comparing(p -> p.getPartNo() + ";" + p.getWorkCenterCode()))), ArrayList::new)); for (MesWorkCenterPartRelation item : relationList) { //根据零件号查询数据 @@ -68,17 +68,17 @@ public class MesWorkCenterPartRelationService extends BaseMesService centerList = mesWorkCenterRao.findByHqlWhere(workCenterPackBean); if (centerList.isEmpty()) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail("产线【%s】不存在!",item.getWorkCenterName()) + .setErrorDetail("产线【%s】不存在!",item.getWorkCenterCode()) .build(); } MesWorkCenter mesWorkCenter = centerList.get(0); - item.setWorkCenterCode(mesWorkCenter.getWorkCenterCode()); + item.setWorkCenterName(mesWorkCenter.getWorkCenterName()); } return relationList; @@ -90,14 +90,14 @@ public class MesWorkCenterPartRelationService extends BaseMesService Date: Thu, 1 Aug 2024 19:01:44 +0800 Subject: [PATCH 12/46] =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E9=9B=B6=E4=BB=B6=E7=94=9F=E4=BA=A7=E7=BB=84=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=B7=A5=E5=8D=95=E6=97=B6=E7=9A=84=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/serviceimpl/base/MesBtoJobServiceImpl.java | 2 +- .../serviceimpl/base/roundness/MesTimeRoundnessService.java | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBtoJobServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBtoJobServiceImpl.java index e0ef486..620a603 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBtoJobServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBtoJobServiceImpl.java @@ -54,7 +54,7 @@ public class MesBtoJobServiceImpl implements IMesBtoJobService { continue; } //6. 根据零件生产组的RoundnessType 去做策略,现在只做 窗口时间 策略; 入参 - String roundnessService = MesExtEnumUtil.SHIPPING_GROUP_ROUND_METHOD.valueOfService(prodGroup.getRoundType()); + String roundnessService = MesExtEnumUtil.SHIPPING_GROUP_ROUND_METHOD.valueOfService(prodGroup.getRoundMethod()); IRoundnessStrategy roundnessStrategy = (IRoundnessStrategy)SpringContextsUtil.getBean(roundnessService); roundnessStrategy.execute(prodGroup,sortInfoList, details); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java index 078de5e..1d9e005 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java @@ -74,6 +74,11 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { log.info("当前零件生产组:{} 没有到达生产工单的窗口", partProdGroup.getPartProdGroupName()); return; } + String lastRunTime = TimeTool.getNowTime(true); + log.info("当前零件生产组:{},更新本次执行时间:{}",partProdGroup.getPartProdGroupName(),lastRunTime); + ConvertBean.saveOrUpdate(time, "JOB"); + time.setLastRunTime(lastRunTime); + windowTimeRao.update(time); DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); long createSeq = Long.parseLong(dateFormat.format(new Date())); Map> sortInfoMap = sortInfoList.stream().collect(Collectors.groupingBy(MesCustSortInfo::getCustPartNo)); @@ -236,9 +241,7 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { } } - ConvertBean.saveOrUpdate(time, "JOB"); - time.setLastRunTime(TimeTool.getNowTime(true)); - windowTimeRao.update(time); + } catch (Exception e) { log.error("创建工单报错:{}", Arrays.toString(e.getStackTrace())); } @@ -265,7 +268,7 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { //使用降序 List sortedTime = windowTimeList.stream().sorted(Comparator.comparing(MesPartProdGroupWindowTime::getWindowTime,Comparator.reverseOrder())).collect(Collectors.toList()); for (MesPartProdGroupWindowTime time : sortedTime) { - if(Integer.parseInt(time.getWindowTime().replace(":","")) > Integer.parseInt(nowTime.replace(":",""))){ + if (Integer.parseInt(time.getWindowTime().replace(":", "")) > Integer.parseInt(nowTime.replace(":", ""))) { continue; } calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time.getWindowTime().substring(0, 2))); @@ -274,6 +277,7 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { if (Objects.isNull(time.getLastRunTime())) { return time; } + //校验lastRuntime 是否已经在当前圆整时区已经生成完了工单 Date lastRunTime = sdf.parse(time.getLastRunTime()); if (dateCreateOrder.before(lastRunTime)) { continue; From 38d65f2050e812f03cddd586db134c35a360c6f5 Mon Sep 17 00:00:00 2001 From: jun Date: Fri, 2 Aug 2024 06:41:04 +0800 Subject: [PATCH 13/46] =?UTF-8?q?=E6=8A=A5=E5=B7=A5=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8E=9F=E5=9B=A0=E5=BD=95=E5=85=A5=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java | 1 + 1 file changed, 1 insertion(+) 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 45c9b51..b6b8b89 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 @@ -890,6 +890,7 @@ public class MesWorkOrderService extends BaseMesService implements mesWorkOrderDb.getAdjustQty(), mesWorkOrderDb.getReportedQty()); } } + mesWorkOrderDb.setRemark(mesWorkOrder.getRemark()); //更新工单 updateMesWorkOrder(mesWorkOrderDb,(MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) ? MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT : MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT_ADJUST,mesWorkOrder.getNum()); //试制单不报工 From f4f581d23728f44c3e687ef0bed25fa51fb73f99 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Sat, 3 Aug 2024 11:12:36 +0800 Subject: [PATCH 14/46] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=20=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/serviceimpl/report/MesEquipmentLogDetailService.java | 4 ++-- .../apiservice/serviceimpl/report/MesWorkCellMonitorLogService.java | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesEquipmentLogDetailService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesEquipmentLogDetailService.java index 03f2065..984eda0 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesEquipmentLogDetailService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesEquipmentLogDetailService.java @@ -27,10 +27,10 @@ public class MesEquipmentLogDetailService extends BaseMesService Date: Sat, 3 Aug 2024 21:34:00 +0800 Subject: [PATCH 15/46] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=B5=8B1=E7=9A=84=E9=97=AE=E9=A2=98=20?= =?UTF-8?q?=E5=B7=B2=E7=BB=8F=E8=B7=9F=E7=BD=97=20=E5=8F=8C=202=E4=BA=BA?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/apiservice/controller/busi/MesWhiteListController.java | 5 +++-- .../i3plus/ext/mes/apiservice/schedulejob/MesQmsScrapJob.java | 6 ++++-- .../i3plus/ext/mes/apiservice/schedulejob/MesQmsSuspiciousJob.java | 4 +++- .../java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java | 7 +++++++ 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesWhiteListController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesWhiteListController.java index 6e672f4..da6ffbd 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesWhiteListController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesWhiteListController.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.busi; import cn.estsh.i3plus.ext.mes.api.base.*; import cn.estsh.i3plus.ext.mes.api.busi.IMaximoService; import cn.estsh.i3plus.ext.mes.pojo.model.MaximoParamModel; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; @@ -191,8 +192,8 @@ public class MesWhiteListController extends MesBaseController { qmsScrapService.doQmsScrapByPartInspection(mesPartInspectionList,organizeCode); for (MesPartInspection mesPartInspection : mesPartInspectionList) { - mesPartInspection.setSystemSyncStatus(1); - mesPartInspection.setSystemSyncDatetime(TimeTool.getNowTime(true)); + mesPartInspection.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + ConvertBean.serviceModelUpdate(mesPartInspection, MesExtConstWords.JOB); } partInspectionRepository.saveAll(mesPartInspectionList); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsScrapJob.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsScrapJob.java index 6905562..33d761b 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsScrapJob.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsScrapJob.java @@ -1,7 +1,9 @@ package cn.estsh.i3plus.ext.mes.apiservice.schedulejob; import cn.estsh.i3plus.ext.mes.api.base.IMesQmsScrapService; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.mes.apiservice.schedulejob.BaseMesScheduleJob; +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; @@ -82,8 +84,8 @@ public class MesQmsScrapJob extends BaseMesScheduleJob { qmsScrapService.doQmsScrapByPartInspection(mesPartInspectionList,organizeCode); for (MesPartInspection mesPartInspection : mesPartInspectionList) { - mesPartInspection.setSystemSyncStatus(1); - mesPartInspection.setSystemSyncDatetime(TimeTool.getNowTime(true)); + mesPartInspection.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + ConvertBean.serviceModelUpdate(mesPartInspection, MesExtConstWords.JOB); } partInspectionRepository.saveAll(mesPartInspectionList); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsSuspiciousJob.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsSuspiciousJob.java index 1482100..d252011 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsSuspiciousJob.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsSuspiciousJob.java @@ -1,7 +1,9 @@ package cn.estsh.i3plus.ext.mes.apiservice.schedulejob; import cn.estsh.i3plus.ext.mes.api.base.IMesQmsSuspiciousService; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.mes.apiservice.schedulejob.BaseMesScheduleJob; +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; @@ -102,7 +104,7 @@ public class MesQmsSuspiciousJob extends BaseMesScheduleJob { for (MesPartInspection mesPartInspection : mesPartInspectionList) { mesPartInspection.setQmsSync(1); - mesPartInspection.setSystemSyncDatetime(TimeTool.getNowTime(true)); + ConvertBean.serviceModelUpdate(mesPartInspection, MesExtConstWords.JOB); } partInspectionRepository.saveAll(mesPartInspectionList); } diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java index bbe5937..92cf96a 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java @@ -127,6 +127,8 @@ public class MesExtConstWords { public static final String LOG_TYPE = "logType"; //信息类型 public static final String MESSAGE_TYPE = "messageType"; + //信息 + public static final String MESSAGE = "message"; //枚举代码 public static final String ENUM_CODE = "enumCode"; //组件类型 @@ -230,4 +232,9 @@ public class MesExtConstWords { // 分表配置 public static final String MES_SHARDING_TABLES_OBJECT_CFG = "MES_SHARDING_TABLES_OBJECT_CFG"; + // 工位扫描日志报表临时文件 + public static final String MES_WCSML_REPORT_TMP_DATA = "MES_WCSML_REPORT_TMP_DATA"; + public static final String CONDITION_U = "CONDITION"; + public static final String DATA_U = "DATA"; + } From 6cde8fa37c8032d830643d186e22839f9550491c Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Sat, 3 Aug 2024 22:42:01 +0800 Subject: [PATCH 16/46] =?UTF-8?q?=E5=B7=A5=E4=BD=8D=E6=89=AB=E6=8F=8F?= =?UTF-8?q?=E6=97=A5=E5=BF=97model?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MesWorkCellScanMonitorConditionModel.java | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesWorkCellScanMonitorConditionModel.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesWorkCellScanMonitorConditionModel.java index 7723d7c..99bc265 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesWorkCellScanMonitorConditionModel.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesWorkCellScanMonitorConditionModel.java @@ -19,6 +19,9 @@ public class MesWorkCellScanMonitorConditionModel { @ApiParam(value = "组织代码") private String organizeCode; + @ApiParam(value = "操作人") + private String userInfo; + @ApiParam(value = "产线") private String workCenterCode; @@ -43,6 +46,9 @@ public class MesWorkCellScanMonitorConditionModel { @ApiParam("扫描/读取信息") private String scanInfo; + @ApiParam("信息") + private String message; + @ApiParam("生产工单号") private String workOrderNo; @@ -103,5 +109,35 @@ public class MesWorkCellScanMonitorConditionModel { return this; } + @Override + public String toString() { + + return "MesWorkCellScanMonitorConditionModel{" + + "organizeCode='" + organizeCode + '\'' + + ", userInfo='" + userInfo + '\'' + + ", workCenterCode='" + workCenterCode + '\'' + + ", workCellCode='" + workCellCode + '\'' + + ", equipId='" + equipId + '\'' + + ", equipmentCode='" + equipmentCode + '\'' + + ", equipVariableId='" + equipVariableId + '\'' + + ", equipVariableName='" + equipVariableName + '\'' + + ", mouldRecordId='" + mouldRecordId + '\'' + + ", scanInfo='" + scanInfo + '\'' + + ", message='" + message + '\'' + + ", workOrderNo='" + workOrderNo + '\'' + + ", productSn='" + productSn + '\'' + + ", partNo='" + partNo + '\'' + + ", stepCode='" + stepCode + '\'' + + ", logTypes='" + logTypes + '\'' + + ", messageType='" + messageType + '\'' + + ", limit='" + limit + '\'' + + ", ascOrDesc='" + ascOrDesc + '\'' + + ", createDateTimeStart='" + createDateTimeStart + '\'' + + ", createDateTimeEnd='" + createDateTimeEnd + '\'' + + '}'; + + + } + } From 91de11ab7874b1f9ca49cfe855c44cfd82e0dabd Mon Sep 17 00:00:00 2001 From: "castle.zang" Date: Mon, 5 Aug 2024 20:13:28 +0800 Subject: [PATCH 17/46] =?UTF-8?q?=E5=9C=A8=E9=9B=B6=E4=BB=B6=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E7=BB=84=E6=B2=A1=E6=9C=89=E5=8F=AF=E4=BB=A5=E7=94=9F?= =?UTF-8?q?=E6=88=90=E7=9A=84=E9=9B=B6=E4=BB=B6=E6=97=B6=EF=BC=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=AA=97=E5=8F=A3=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/base/MesBtoJobServiceImpl.java | 77 +++++++++++++++++++++- .../base/roundness/MesTimeRoundnessService.java | 16 ++++- 2 files changed, 87 insertions(+), 6 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBtoJobServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBtoJobServiceImpl.java index 620a603..34b01de 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBtoJobServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBtoJobServiceImpl.java @@ -2,17 +2,25 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesBtoJobService; import cn.estsh.i3plus.ext.mes.api.base.strategy.IRoundnessStrategy; +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.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesCustomerMessagePoint; import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup; import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroupDetail; +import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroupWindowTime; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesCustSortInfo; +import cn.estsh.i3plus.pojo.mes.repository.MesPartProdGroupWindowTimeRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.util.SpringContextsUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.List; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; import java.util.stream.Collectors; /** @@ -33,6 +41,10 @@ public class MesBtoJobServiceImpl implements IMesBtoJobService { @Autowired private MesCustSoftInfoServiceImpl mesCustSoftInfoService; + + @Autowired + private MesPartProdGroupWindowTimeRepository windowTimeRao; + @Override public void doCreateBto(String organizeCode, List groupCodeList) { //1. 根据 organizeCode 和 groupCodeList 查询零件生产组 @@ -49,12 +61,25 @@ public class MesBtoJobServiceImpl implements IMesBtoJobService { List custPartNoList = details.stream().map(MesPartProdGroupDetail::getCustPartNo).collect(Collectors.toList()); List sortInfoList = mesCustSoftInfoService.queryCustSortInfoList(prodGroup.getCustCode(), prodGroup.getCustOrganizeCode(), prodGroup.getCustInfoPoint(), organizeCode, custPartNoList); + //6. 根据零件生产组的RoundnessType 去做策略,现在只做 窗口时间 策略; 入参 + String roundnessService = MesExtEnumUtil.SHIPPING_GROUP_ROUND_METHOD.valueOfService(prodGroup.getRoundMethod()); if (sortInfoList.isEmpty()){ log.info("当前零件生产组:{}没有排序信息",prodGroup.getPartProdGroupName()); + //如果圆整方式是按时圆整,且没有排序信息,更新窗口时间 + try { + MesPartProdGroupWindowTime time = getWindowTimeByProductGroup(prodGroup.getId(), organizeCode); + if (time != null){ + String lastRunTime = TimeTool.getNowTime(true); + log.info("当前零件生产组:{},更新本次执行时间:{},窗口时间为:{}",prodGroup.getPartProdGroupCode(),lastRunTime,time.getWindowTime()); + ConvertBean.saveOrUpdate(time, "JOB"); + time.setLastRunTime(lastRunTime); + windowTimeRao.update(time); + } + } catch (ParseException e) { + log.info("解析失败:{}",e.getMessage()); + } continue; } - //6. 根据零件生产组的RoundnessType 去做策略,现在只做 窗口时间 策略; 入参 - String roundnessService = MesExtEnumUtil.SHIPPING_GROUP_ROUND_METHOD.valueOfService(prodGroup.getRoundMethod()); IRoundnessStrategy roundnessStrategy = (IRoundnessStrategy)SpringContextsUtil.getBean(roundnessService); roundnessStrategy.execute(prodGroup,sortInfoList, details); } @@ -72,4 +97,50 @@ public class MesBtoJobServiceImpl implements IMesBtoJobService { return null; } + + private MesPartProdGroupWindowTime getWindowTimeByProductGroup(Long partProdGroupId, String organizeCode) throws ParseException { + DdlPackBean windowTimPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(partProdGroupId, "pid", windowTimPackBean); + List windowTimeList = windowTimeRao.findByHqlWhere(windowTimPackBean); + if (windowTimeList.isEmpty()) { + return null; + } + //获取当前时间的HH mm + Date now = new Date(); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(now); + int hour = calendar.get(Calendar.HOUR_OF_DAY); // 获取小时(24小时制) + int minute = calendar.get(Calendar.MINUTE); + String nowTime = String.format("%02d:%02d", hour, minute); + //遍历窗口时间获取最新的窗口时间 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //使用降序 + List sortedTime = windowTimeList.stream().sorted(Comparator.comparing(MesPartProdGroupWindowTime::getWindowTime,Comparator.reverseOrder())).collect(Collectors.toList()); + for (MesPartProdGroupWindowTime time : sortedTime) { + if (Integer.parseInt(time.getWindowTime().replace(":", "")) > Integer.parseInt(nowTime.replace(":", ""))) { + continue; + } + calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time.getWindowTime().substring(0, 2))); + calendar.set(Calendar.MINUTE, Integer.parseInt(time.getWindowTime().substring(2, 4))); + calendar.set(Calendar.SECOND, 0); + Date dateCreateOrder = calendar.getTime(); + if (Objects.isNull(time.getLastRunTime())) { + return time; + } + //校验lastRuntime 是否已经在当前圆整时区已经生成完了工单 + Date lastRunTime = sdf.parse(time.getLastRunTime()); + Calendar lastRunTimeCalendar = Calendar.getInstance(); + lastRunTimeCalendar.setTime(lastRunTime); + lastRunTimeCalendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time.getWindowTime().substring(0, 2))); + lastRunTimeCalendar.set(Calendar.MINUTE, Integer.parseInt(time.getWindowTime().substring(2, 4))); + lastRunTimeCalendar.set(Calendar.SECOND, 1); + //两个相同的时间比较before,返回值为false,把上次运行的时间格式化为窗口时间,加1秒是过滤掉相等的情况 + if (dateCreateOrder.before(lastRunTimeCalendar.getTime())) { + continue; + } + log.info("零件生产组详情id:{},本次运行时间:{},格式化后的上次运行时间:{},上次运行时间为:{}",partProdGroupId,sdf.format(dateCreateOrder),sdf.format(lastRunTimeCalendar.getTime()),time.getLastRunTime()); + return time; + } + return null; + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java index 1d9e005..6cb8d85 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java @@ -75,7 +75,7 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { return; } String lastRunTime = TimeTool.getNowTime(true); - log.info("当前零件生产组:{},更新本次执行时间:{}",partProdGroup.getPartProdGroupName(),lastRunTime); + log.info("当前零件生产组:{},更新本次执行时间:{},窗口时间为:{}",partProdGroup.getPartProdGroupName(),lastRunTime,time.getWindowTime()); ConvertBean.saveOrUpdate(time, "JOB"); time.setLastRunTime(lastRunTime); windowTimeRao.update(time); @@ -233,7 +233,9 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { // 保存工单 ConvertBean.saveOrUpdate(mesWorkOrder, "edi"); - mesWorkOrderRao.insert(mesWorkOrder); + if (mesWorkOrder.getQty() > 0){ + mesWorkOrderRao.insert(mesWorkOrder); + } //更新 custSortInfo 状态已解析 for (MesCustSortInfo sortInfo : sortInfos) { sortInfo.setServiceFlag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); @@ -273,15 +275,23 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { } calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time.getWindowTime().substring(0, 2))); calendar.set(Calendar.MINUTE, Integer.parseInt(time.getWindowTime().substring(2, 4))); + calendar.set(Calendar.SECOND, 0); Date dateCreateOrder = calendar.getTime(); if (Objects.isNull(time.getLastRunTime())) { return time; } //校验lastRuntime 是否已经在当前圆整时区已经生成完了工单 Date lastRunTime = sdf.parse(time.getLastRunTime()); - if (dateCreateOrder.before(lastRunTime)) { + Calendar lastRunTimeCalendar = Calendar.getInstance(); + lastRunTimeCalendar.setTime(lastRunTime); + lastRunTimeCalendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time.getWindowTime().substring(0, 2))); + lastRunTimeCalendar.set(Calendar.MINUTE, Integer.parseInt(time.getWindowTime().substring(2, 4))); + lastRunTimeCalendar.set(Calendar.SECOND, 1); + //两个相同的时间比较before,返回值为false,把上次运行的时间格式化为窗口时间,加1秒是过滤掉相等的情况 + if (dateCreateOrder.before(lastRunTimeCalendar.getTime())) { continue; } + log.info("零件生产组详情id:{},本次运行时间:{},格式化后的上次运行时间:{},上次运行时间为:{}",partProdGroupId,sdf.format(dateCreateOrder),sdf.format(lastRunTimeCalendar.getTime()),time.getLastRunTime()); return time; } return null; From 5a5bce2767c3dd615f58d83ec7b2eb00c128aa3b Mon Sep 17 00:00:00 2001 From: jun Date: Tue, 6 Aug 2024 05:53:18 +0800 Subject: [PATCH 18/46] =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=89=93=E5=8D=B0=E6=97=B6=E9=97=B4=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/groovy/MesProductionRecordToPisces.groovy | 17 +++++++-- .../src/groovy/MesUpdateSrcData.groovy | 44 ++++++++++++++++++++++ 2 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 modules/i3plus-ext-mes-apiservice/src/groovy/MesUpdateSrcData.groovy diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy index aa7e57c..f116c5c 100644 --- a/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy @@ -1,3 +1,4 @@ +import cn.estsh.i3plus.platform.common.tool.TimeTool import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy import cn.estsh.i3plus.pojo.base.bean.DdlPackBean import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack @@ -12,6 +13,7 @@ import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Autowired import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate import org.springframework.util.CollectionUtils +import org.springframework.util.StringUtils import javax.annotation.Resource import java.sql.Connection @@ -65,7 +67,7 @@ class MesProductionRecordToPisces { Map mesWorkCenterMap = new HashMap<>(); Map mesWorkCellMap = new HashMap<>(); Map mesProcessMap = new HashMap<>(); - List updateList = new ArrayList<>(); + List idList = new ArrayList<>(); List> destData = new ArrayList<>(); for (Map rowMap : srcData) { @@ -77,8 +79,9 @@ class MesProductionRecordToPisces { if (!CollectionUtils.isEmpty(dataMap) && dataMap.size() > 0) { rowMap.put("BARCODE_ID", dataMap.iterator().next().get("ID")) - updateList.add("update mes_production_record set system_sync_status = 1 where id= " + rowMap.get("id") + " ;") + idList.add(rowMap.get("id").toString()); } else { + LOGGER.info("条码{}物料{}条码信息未同步,信息不存在", rowMap.get("product_sn"),rowMap.get("part_no")) continue } String workCenterCode = String.valueOf(rowMap.get("work_center_code")); @@ -145,7 +148,9 @@ class MesProductionRecordToPisces { } //更新同步标识 - if (!CollectionUtils.isEmpty(updateList) && updateList.size() > 0) { + if (!CollectionUtils.isEmpty(idList) && idList.size() > 0) { + List updateList = new ArrayList<>(); + updateList.add("update mes_production_record set system_sync_date_time='"+ TimeTool.getNowTime(true)+"',system_sync_status = 1 where id in (" + String.join(",",idList) + ") ;") this.mesConn = mesDataSource.getWriteConnectionWithoutPool(); mesDataSource.executeAsBatch(updateList, mesConn) mesDataSource.closeConnectionWithoutPoll(this.mesConn) @@ -202,4 +207,10 @@ class MesProductionRecordToPisces { return mesProcessMap.get(processCode); } + def saveSrcData(MesInterfaceDataMapper mapper, List> srcData) throws Exception { + if (srcData == null || srcData.size() == 0 || StringUtils.isEmpty(mapper.getSrcTableName())) { + return srcData + } + } + } \ No newline at end of file diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/MesUpdateSrcData.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/MesUpdateSrcData.groovy new file mode 100644 index 0000000..71237ea --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/MesUpdateSrcData.groovy @@ -0,0 +1,44 @@ +import cn.estsh.i3plus.platform.common.tool.TimeTool +import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy +import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper +import lombok.Getter +import lombok.Setter +import org.springframework.util.StringUtils + +import javax.annotation.Resource +import java.sql.Connection + +/** + * @Description :MES2PISCES-更新同步标识 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/8/5 20:19 + * @Modify: + * */ +class MesUpdateSrcData { + + @Resource(name = "mesDataSource") + private DynamicDataSourceProxy mesDataSource; + + @Getter + @Setter + private Connection mesConn; + + def saveSrcData(MesInterfaceDataMapper mapper, List> srcData) throws Exception { + if (srcData == null || srcData.size() == 0 || StringUtils.isEmpty(mapper.getSrcTableName())) { + return srcData + } + List idList = new ArrayList<>(); + for (Map data : srcData) { + idList.add(data.get("id").toString()); + } + + //更新同步标识 + List updateList = new ArrayList<>(); + updateList.add("update " + mapper.getSrcTableName() + " set system_sync_date_time='" + TimeTool.getNowTime(true) + "',system_sync_status='1' where id in (" + String.join(",", idList) + ") ;"); + this.mesConn = mesDataSource.getWriteConnectionWithoutPool(); + mesDataSource.executeAsBatch(updateList, mesConn) + mesDataSource.closeConnectionWithoutPoll(this.mesConn) + + } +} \ No newline at end of file From 637bac157b491c09679a21f1b618ed8a0ae5f9ba Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Tue, 6 Aug 2024 11:07:08 +0800 Subject: [PATCH 19/46] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=82=B9=E4=BD=8D=20?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=20=20=E8=AE=BE=E5=A4=87=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E6=A8=A1=E7=B3=8A=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/apiservice/serviceimpl/base/MesEquipmentVariableService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentVariableService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentVariableService.java index 33c6e8c..e826c25 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentVariableService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentVariableService.java @@ -45,7 +45,7 @@ public class MesEquipmentVariableService extends BaseMesService Date: Fri, 9 Aug 2024 17:07:20 +0800 Subject: [PATCH 20/46] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=20=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/apiservice/serviceimpl/report/MesWorkCellMonitorLogService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesWorkCellMonitorLogService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesWorkCellMonitorLogService.java index c77c82f..e8f6c7b 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesWorkCellMonitorLogService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesWorkCellMonitorLogService.java @@ -154,7 +154,7 @@ public class MesWorkCellMonitorLogService extends BaseMesService Date: Sat, 10 Aug 2024 10:27:28 +0800 Subject: [PATCH 21/46] =?UTF-8?q?42102=20=E7=82=B9=E6=A3=80=E5=8D=95?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=A2=9E=E5=8A=A0=E6=89=93=E5=8D=B0=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/api/busi/IMesSpotCheckOrderService.java | 3 +- .../busi/MesSpotCheckOrderController.java | 35 ++++++++++++++++++++++ .../serviceimpl/busi/MesSpotCheckOrderService.java | 16 ++++++++++ .../ext/mes/pojo/constant/MesCommonConstant.java | 1 + 4 files changed, 54 insertions(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/IMesSpotCheckOrderService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/IMesSpotCheckOrderService.java index 4228cc6..a0f8417 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/IMesSpotCheckOrderService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/IMesSpotCheckOrderService.java @@ -18,5 +18,6 @@ public interface IMesSpotCheckOrderService extends IBaseMesService mesEquipmentSpotCheckList, String userName); - + @ApiOperation("点检单结果打印") + MesSpotCheckOrder queryMesSpotCheckOrderResultPrint(MesSpotCheckOrder mesSpotCheckOrder); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesSpotCheckOrderController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesSpotCheckOrderController.java index 33c2f2d..ad3770f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesSpotCheckOrderController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesSpotCheckOrderController.java @@ -1,9 +1,19 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.busi; +import cn.estsh.i3plus.ext.mes.api.busi.IMesSpotCheckOrderService; import cn.estsh.i3plus.ext.mes.apiservice.controller.base.BaseMesController; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesSpotCheckOrder; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -13,4 +23,29 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping(MesCommonConstant.MES_YANFEN + "/mesSpotCheckOrder") public class MesSpotCheckOrderController extends BaseMesController { + @Autowired + private IMesSpotCheckOrderService mesSpotCheckOrderService; + + @PostMapping(value = "/qc-print") + @ApiOperation(value = "点检单结果打印") + public ResultBean queryMesSpotCheckOrderResultPrint(@RequestBody MesSpotCheckOrder mesSpotCheckOrder) { + try { + if (mesSpotCheckOrder == null) { + return ResultBean.success(); + } + //条件验证 + ValidatorBean.beginValid(mesSpotCheckOrder) + .notNull("spotCheckId", mesSpotCheckOrder.getSpotCheckId()) + .notNull("spotCheckOrderNo", mesSpotCheckOrder.getSpotCheckOrderNo()) + .notNull("organizeCode", mesSpotCheckOrder.getOrganizeCode()); + + return ResultBean.success("点检单结果打印成功") + .setResultObject(mesSpotCheckOrderService.queryMesSpotCheckOrderResultPrint(mesSpotCheckOrder)) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException imppException) { + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java index bae8137..2bf7f1b 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.busi; +import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService; import cn.estsh.i3plus.ext.mes.api.base.IMesEquipmentSpotCheckService; import cn.estsh.i3plus.ext.mes.api.busi.IMesSpotCheckOrderPartService; import cn.estsh.i3plus.ext.mes.api.busi.IMesSpotCheckOrderResultService; @@ -65,6 +66,9 @@ public class MesSpotCheckOrderService extends BaseMesService private ISyncFuncService syncFuncService; @Autowired private ICoreUtilCloud sysOrderNoRuleCloud; + + @Autowired + private IMesConfigService mesConfigService; @Override public MesSpotCheckOrder insert(MesSpotCheckOrder bean) { onInsertBean(bean); @@ -552,4 +556,16 @@ public class MesSpotCheckOrderService extends BaseMesService } return spotCheckOrderMap; } + + @Override + public MesSpotCheckOrder queryMesSpotCheckOrderResultPrint(MesSpotCheckOrder mesSpotCheckOrder) { + //获取点检方案明细 + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesSpotCheckOrder.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(mesSpotCheckOrder.getId(), "pid", packBean); + List detailList = spotCheckOrderResultRepository.findByHqlWhere(packBean); + mesSpotCheckOrder.setCheckOrderResults(detailList); + + mesSpotCheckOrder.setTemplateNo(mesConfigService.getCfgValue(mesSpotCheckOrder.getOrganizeCode(), MesCommonConstant.QC_ORDER_PRINT_TEMPLATE) ); + return mesSpotCheckOrder; + } } diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java index 82074a3..7266a5a 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java @@ -57,4 +57,5 @@ public class MesCommonConstant { //OPC注册ID public static final String CLIENT_HANDLE_ID = "CLIENT_HANDLE_ID"; + public static final String QC_ORDER_PRINT_TEMPLATE = "QC_ORDER_PRINT_TEMPLATE"; } From 32b76ad88d877ff2bfe88623ee781d9937d45bb9 Mon Sep 17 00:00:00 2001 From: gsz Date: Sat, 10 Aug 2024 10:32:05 +0800 Subject: [PATCH 22/46] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E7=89=A9=E6=96=99?= =?UTF-8?q?=E5=B7=A5=E4=BD=8D=E5=88=86=E7=BB=84=E5=88=86=E9=A1=B5=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=AE=BE=E5=A4=87=E5=8A=A0=E5=B7=A5=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/api/base/IMesProductionRecordService.java | 4 + .../base/MesProductionRecordController.java | 49 ++++++++ .../base/MesProductionRecordServiceImpl.java | 123 ++++++++++++++++++++- .../i3plus/ext/mes/apiservice/utils/BeanUtil.java | 75 +++++++++++++ 4 files changed, 250 insertions(+), 1 deletion(-) create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesProductionRecordController.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/utils/BeanUtil.java diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProductionRecordService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProductionRecordService.java index b74f17a..fc6c76d 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProductionRecordService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProductionRecordService.java @@ -1,5 +1,7 @@ package cn.estsh.i3plus.ext.mes.api.base; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import io.swagger.annotations.ApiOperation; @@ -16,4 +18,6 @@ public interface IMesProductionRecordService extends IBaseMesService findMesProductionRecord(String organizeCode, String sn); + + ListPager queryRecordGroupByPartNoWorkCellCode(MesProductionRecord mesProductionRecord, Pager pager); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesProductionRecordController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesProductionRecordController.java new file mode 100644 index 0000000..a61d402 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesProductionRecordController.java @@ -0,0 +1,49 @@ +package cn.estsh.i3plus.ext.mes.apiservice.controller.base; + +import cn.estsh.i3plus.ext.mes.api.base.IMesProductionRecordService; +import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Description : 设备加工记录表 + * @Reference : + * @Author : gsz + * @CreateDate 2024/8/10 10:50 + * @Modify: + **/ +@Api("设备加工记录") +@RestController +@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesProductionRecord") +public class MesProductionRecordController extends BaseMesController{ + @Autowired + private IMesProductionRecordService mesProductionRecordService; + + @GetMapping(value = "/group-by-part-cell/query") + @ApiOperation(value = "设备加工记录", notes = "设备加工记录") + public ResultBean queryProductionRecordGroupByPartNoWorkCellCode(MesProductionRecord mesProductionRecord, Pager pager) { + try { + ValidatorBean.beginValid(mesProductionRecord) + .notNull("organizeCode", mesProductionRecord.getOrganizeCode()); + + return ResultBean.success("查询成功").setListPager(mesProductionRecordService.queryRecordGroupByPartNoWorkCellCode(mesProductionRecord, pager)) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java index 2067bf6..20367cd 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java @@ -1,15 +1,28 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesProductionRecordService; +import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanUtil; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; +import cn.estsh.i3plus.ext.mes.pojo.util.OverwriteStringJoin; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import lombok.extern.slf4j.Slf4j; +import org.hibernate.SQLQuery; +import org.hibernate.transform.Transformers; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; /** @@ -22,16 +35,124 @@ import java.util.List; @Service @Slf4j public class MesProductionRecordServiceImpl extends BaseMesService implements IMesProductionRecordService { + @Autowired + private EntityManager entityManager; @Override public List findMesProductionRecord(String organizeCode, String sn) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(sn, "productSn", packBean); - DdlPreparedPack.getOrderBy("createDatetime", CommonEnumUtil.ASC_OR_DESC.ASC.getValue(),packBean); + DdlPreparedPack.getOrderBy("createDatetime", CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), packBean); List produceSnList = baseRDao.findByHqlWhere(packBean); if (CollectionUtils.isEmpty(produceSnList)) { MesException.throwMesBusiException("条码【%s】加工记录信息不存在", sn); } return produceSnList; } + + @Override + public ListPager queryRecordGroupByPartNoWorkCellCode(MesProductionRecord mesProductionRecord, Pager pager) { + + return queryERPMaterialStockHqlPager(mesProductionRecord, pager); + } + + private ListPager queryERPMaterialStockHqlPager(MesProductionRecord mesProductionRecord, Pager pager) { + String org = mesProductionRecord.getOrganizeCode(); + String startTime = mesProductionRecord.getCompleteDateTimeStart(); + String endTime = mesProductionRecord.getCompleteDateTimeEnd(); + List mesProductionRecordList = new ArrayList<>(); + String countSql = "select count(1) "; + String commHql = " SELECT " + + " DISTINCT mpr.id as id," + + " mpr.organize_code as organizeCode," + + " mpr.create_date_time AS createDatetime, " + + " mpr.create_user AS createUser, " + + " mpr.modify_date_time AS modifyDatetime, " + + " mpr.modify_user AS modifyUser, " + + " mpr.part_no as partNo," + + " mpr.part_name as partName," + + " mpr.work_center_code as workCenterCode," + + " mpr.shift_code as shiftCode," + + " mpr.work_cell_code as workCellCode," + + " mpr.equipment_name as equipmentName," + + " mpr.complete_date_time as completeDateTime," + + " count( mpr.qty) as qty "; + + String sql = " from mes_production_record mpr" + + " where 1=1 " + + " and mpr.organize_code =:organizeCode " + + " and mpr.is_deleted ='2' " + + " and mpr.is_valid ='1' "; + if (!StringUtil.isEmpty(startTime)) { + sql += " and mpr.complete_date_time >=:startTime "; + } + if (!StringUtil.isEmpty(endTime)) { + sql += " and mpr.complete_date_time <:endTime "; + } + + if (!StringUtil.isEmpty(mesProductionRecord.getPartNo())) { + sql += " and mpr.part_no ='" + mesProductionRecord.getPartNo() + "' "; + } + + if (!StringUtil.isEmpty(mesProductionRecord.getWorkCenterCode())) { + sql += " and mpr.work_center_code ='" + mesProductionRecord.getWorkCenterCode() + "' "; + } + + if (!StringUtil.isEmpty(mesProductionRecord.getShiftCode())) { + sql += " and mpr.shift_code ='" + mesProductionRecord.getShiftCode() + "' "; + } + + if (!StringUtil.isEmpty(mesProductionRecord.getWorkCellCode())) { + sql += " and mpr.work_cell_code ='" + mesProductionRecord.getWorkCellCode() + "' "; + } + + if (!StringUtil.isEmpty(mesProductionRecord.getEquipmentName())) { + sql += " and mpr.equipment_name like '%" + mesProductionRecord.getEquipmentName() + "%' "; + } + + sql += " GROUP BY mpr.part_no,mpr.work_cell_code ORDER BY mpr.complete_date_time desc "; + + Query queryObject = entityManager.createNativeQuery(commHql + sql); + queryObject.setParameter("organizeCode", org); + if (!StringUtil.isEmpty(startTime)) { + queryObject.setParameter("startTime", startTime); + } + if (!StringUtil.isEmpty(endTime)) { + queryObject.setParameter("endTime", endTime); + } + + Query queryCountObject = entityManager.createNativeQuery(countSql + sql); + queryCountObject.setParameter("organizeCode", org); + if (!StringUtil.isEmpty(startTime)) { + queryCountObject.setParameter("startTime", startTime); + } + if (!StringUtil.isEmpty(endTime)) { + queryCountObject.setParameter("endTime", endTime); + } + + queryObject.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP) + .setMaxResults(pager.getPageSize()).setFirstResult(pager.getStartRow()).getResultList(); + queryCountObject.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); + + List resultList = queryCountObject.getResultList(); + int countSize = resultList.size(); + if (countSize <= 0) { + return new ListPager(); + } + + pager = PagerHelper.getPager(pager, countSize); + + List> hashMaps = queryObject.getResultList(); + + for (HashMap hashMap : hashMaps) { + try { + mesProductionRecordList.add((MesProductionRecord) BeanUtil.populateBean(hashMap, MesProductionRecord.class)); + } catch (Exception e) { + e.printStackTrace(); + } + } + return new ListPager(mesProductionRecordList, pager); + + } + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/utils/BeanUtil.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/utils/BeanUtil.java new file mode 100644 index 0000000..0b5a300 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/utils/BeanUtil.java @@ -0,0 +1,75 @@ +package cn.estsh.i3plus.ext.mes.apiservice.utils; + +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.exception.ExceptionUtils; + +import javax.persistence.Column; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + + +/** + * Map转Object 工具类 + */ +public class BeanUtil { + + public static Object populateBean(Map map, Class clazz) throws Exception { + Object obj = clazz.newInstance(); + BeanUtils.populate(obj, map); + return obj; + } + + public static List popListToList(Object object, List> list) throws Exception { + + List listRetun = new ArrayList(); + for (Map map : list) { + listRetun.add(BeanUtil.populateBean(map, object.getClass())); + } + return listRetun; + } + + /** + * 获取对象父类和字类所有的数据库字段 + * + * @param c 对象类 + * @return 属性名数组 + */ + public static String[] getAllColumnFields(Class c) { + //父子类属性合并 + Field[] fields = ArrayUtils.addAll(c.getFields(), c.getDeclaredFields()); + //循环所有属性把名称存入数组 + List fieldsNameList = new ArrayList<>(); + for (Field field : fields) { + field.setAccessible(true); + // 判断是否为数据库字段 + if (field.isAnnotationPresent(Column.class)) { + fieldsNameList.add(field.getName()); + } + } + return fieldsNameList.toArray(new String[fieldsNameList.size()]); + } + + public static String getProperty(Object bean, String name) { + String proVal = null; + try { + proVal = BeanUtils.getProperty(bean, name); + } catch (Exception e) { + MesException.throwMesBusiException("反射获取对象【" + bean.getClass().getName() + "】属性【" + name + + "】值时异常:详情如下" + ExceptionUtils.getStackTrace(e)); + } + return proVal; + } + + public static void setProperty(Object bean, String name, Object values) { + try { + BeanUtils.setProperty(bean, name, values); + } catch (Exception e) { + MesException.throwMesBusiException("反射设置对象【" + bean.getClass().getName() + "】属性【" + name + + "】值时异常:详情如下" + ExceptionUtils.getStackTrace(e)); + } + } + +} From b722a36e5540dd026aea59b5eb9c0d80f8e2b3ff Mon Sep 17 00:00:00 2001 From: gsz Date: Sat, 10 Aug 2024 15:59:55 +0800 Subject: [PATCH 23/46] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E7=89=A9=E6=96=99?= =?UTF-8?q?=E5=B7=A5=E4=BD=8D=E5=88=86=E7=BB=84=E5=88=86=E9=A1=B5=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=AE=BE=E5=A4=87=E5=8A=A0=E5=B7=A5=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=88=86=E9=A1=B5pager?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java index 20367cd..2b3dc50 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java @@ -137,7 +137,7 @@ public class MesProductionRecordServiceImpl extends BaseMesService Date: Mon, 12 Aug 2024 13:27:16 +0800 Subject: [PATCH 24/46] =?UTF-8?q?42563=20=E5=B7=A5=E5=8D=95=E6=B1=87?= =?UTF-8?q?=E6=80=BBSAP=EF=BC=8C=E5=8F=AA=E6=98=AF=E6=B1=87=E6=80=BB?= =?UTF-8?q?=E9=9D=9E=E6=8E=92=E5=BA=8F=E5=B7=A5=E5=8D=95=EF=BC=8C=EF=BC=88?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E5=92=8CBTO=E5=B7=A5=E5=8D=95=E9=83=BD?= =?UTF-8?q?=E4=B8=8D=E9=9C=80=E8=A6=81=E5=9B=9E=E4=BC=A0SAP=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java index 2db115a..4f15500 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java @@ -29,6 +29,7 @@ public class MesWorkOrderDaoImpl implements IMesWorkOrderDao { public List sumMesWorkOrderQtyToSap(String organizeCode, List statusList) { StringBuffer hql = new StringBuffer("select new " + MesWorkOrderModel.class.getName() + "(partNo,planStartTime,productVersion,sum(case when workOrderStatus = 40 then 0 else qty end) as sumQty) " + " from MesWorkOrder where isDeleted=:isDeleted and isValid = :isValid and organizeCode = :organizeCode " + + " and workOrderType = 20 "+ "and workOrderStatus not in(:statusList) group by partNo,planStartTime,productVersion"); Query query = entityManager.createQuery(hql.toString(), MesWorkOrderModel.class); query.setParameter("organizeCode", organizeCode); From 2939ac3b6918471f6a79481c2f9b8cee8dd874c3 Mon Sep 17 00:00:00 2001 From: jun Date: Mon, 12 Aug 2024 23:08:37 +0800 Subject: [PATCH 25/46] =?UTF-8?q?=E5=8F=91=E8=BF=90=E5=8D=95=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E9=A1=B5=E9=9D=A2=E6=98=BE=E7=A4=BA=E5=A4=87=E6=B3=A8?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/ext/mes/apiservice/daoimpl/MesLoadingListDetailDaoImpl.java | 3 ++- .../cn/estsh/i3plus/ext/mes/pojo/model/MesLoadingListDetailModel.java | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesLoadingListDetailDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesLoadingListDetailDaoImpl.java index 67f0682..19ffe74 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesLoadingListDetailDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesLoadingListDetailDaoImpl.java @@ -37,7 +37,7 @@ public class MesLoadingListDetailDaoImpl implements IMesLoadingListDetailDao { StringBuffer hql = new StringBuffer("select mll.order_code ,mll.cust_name ,mll.cust_organize_name ,mll.shipping_group_name , "); hql.append(" mll.status , mll.truck_no ,mll.weather , ms.shipping_code ,ms.start_scan_time ,ms.end_scan_time ,mlld.status as shipStatus , "); hql.append(" mlld.create_date_time , mll.create_user ,mll.modify_date_time , ms.modify_user , "); - hql.append(" mll.cust_code , mll.cust_organize_code ,mll.shipping_group_code "); + hql.append(" mll.cust_code , mll.cust_organize_code ,mll.shipping_group_code,mlld.remark "); hql.append(" from mes_loading_list as mll"); hql.append(" inner join mes_loading_list_detail as mlld on mll.id = mlld.pid"); hql.append(" and mll.organize_code = mlld.organize_code and mll.is_deleted = mlld.is_deleted and mll.is_valid = mlld.is_valid "); @@ -94,6 +94,7 @@ public class MesLoadingListDetailDaoImpl implements IMesLoadingListDetailDao { model.setCustCode(StringUtils.isEmpty(cells[15]) ? "" : String.valueOf(cells[15])); model.setCustOrganizeCode(StringUtils.isEmpty(cells[16]) ? "" : String.valueOf(cells[16])); model.setShippingGroupCode(StringUtils.isEmpty(cells[17]) ? "" : String.valueOf(cells[17])); + model.setRemark(StringUtils.isEmpty(cells[18]) ? "" : String.valueOf(cells[18])); modelList.add(model); } diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/MesLoadingListDetailModel.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/MesLoadingListDetailModel.java index 12c4c1b..799b0d1 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/MesLoadingListDetailModel.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/MesLoadingListDetailModel.java @@ -64,4 +64,7 @@ public class MesLoadingListDetailModel { @ApiParam("修改日期") public String modifyDatetime; + @ApiParam("备注") + public String remark; + } From abcbb987670e48a63ffc9b194051504485e72f43 Mon Sep 17 00:00:00 2001 From: "logic.fang" <[logic.fang@estsh.com]> Date: Tue, 13 Aug 2024 15:41:06 +0800 Subject: [PATCH 26/46] =?UTF-8?q?=E4=BA=A7=E7=BA=BF=E7=9C=8B=E6=9D=BF-?= =?UTF-8?q?=E5=B7=A5=E5=8D=95=E5=AE=8C=E6=88=90=E6=83=85=E5=86=B5-?= =?UTF-8?q?=E5=BD=93=E7=8F=AD=E4=B8=80=E6=AC=A1=E5=90=88=E6=A0=BC=E7=8E=87?= =?UTF-8?q?=E6=B1=87=E6=80=BB=E9=80=BB=E8=BE=91=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/apiservice/dao/board/IMesYfBoardDao.java | 4 +- .../daoimpl/board/MesYfBoardDaoImpl.java | 22 ++++++--- .../serviceimpl/board/IMesYfBoardServiceImpl.java | 56 ++++++++++++++-------- .../model/board/MesWorkCenterBoardResultModel.java | 4 +- 4 files changed, 59 insertions(+), 27 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/board/IMesYfBoardDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/board/IMesYfBoardDao.java index bb00b21..74623b2 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/board/IMesYfBoardDao.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/board/IMesYfBoardDao.java @@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.pojo.model.board.MesWorkCenterBoardResultModel; import cn.estsh.i3plus.pojo.mes.bean.MesShift; import java.util.List; +import java.util.Set; /** * @Description : 看板-数据方法实现 @@ -39,8 +40,9 @@ public interface IMesYfBoardDao { * @param organizeCode 组织代码 * @param startTime 查询起始时间 * @param endTime 查询结束时间 + * @param workOrderNoSet 工单号集合 * @return 加工完成条码及其质量状态 */ - List queryCompletedSnInfo(String workCenterCode, String organizeCode, String startTime, String endTime); + List queryCompletedSnInfo(String workCenterCode, String organizeCode, String startTime, String endTime, Set workOrderNoSet); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/board/MesYfBoardDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/board/MesYfBoardDaoImpl.java index 492ce05..c6dffdc 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/board/MesYfBoardDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/board/MesYfBoardDaoImpl.java @@ -12,6 +12,7 @@ import org.springframework.util.CollectionUtils; import javax.persistence.EntityManager; import javax.persistence.Query; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; /** @@ -71,12 +72,14 @@ public class MesYfBoardDaoImpl implements IMesYfBoardDao { } @Override - public List queryCompletedSnInfo(String workCenterCode, String organizeCode, String startTime, String endTime) { - //先查询生产加工表中指定时间区间、指定产线已加工完成的数据 + public List queryCompletedSnInfo(String workCenterCode, String organizeCode, String startTime, String endTime, Set workOrderNoSet) { + //先查询生产加工表中指定时间区间、指定产线(指定工单)已加工完成的数据(过程条码,创建时间、工单号,物料号) StringBuffer queryMesProductionRecordSql = new StringBuffer(); - queryMesProductionRecordSql.append("select distinct new " + MesWorkCenterBoardResultModel.class.getName() + + queryMesProductionRecordSql.append("select new " + MesWorkCenterBoardResultModel.class.getName() + "(serialNumber, " + - "createDatetime) " + + "createDatetime, " + + "workOrderNo, " + + "partNo) " + "from MesProductionRecord " + "where isValid = :isValid " + "and isDeleted = :isDeleted " + @@ -85,6 +88,9 @@ public class MesYfBoardDaoImpl implements IMesYfBoardDao { "and isComplete = :isComplete " + "and createDatetime >= :startTime " + "and createDatetime <= :endTime "); + if (!CollectionUtils.isEmpty(workOrderNoSet)) { + queryMesProductionRecordSql.append("and workOrderNo in (:workOrderNoSet) "); + } Query mesProductionRecordQuery = entityManager.createQuery(queryMesProductionRecordSql.toString(), MesWorkCenterBoardResultModel.class); mesProductionRecordQuery.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); mesProductionRecordQuery.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); @@ -93,13 +99,17 @@ public class MesYfBoardDaoImpl implements IMesYfBoardDao { mesProductionRecordQuery.setParameter("isComplete", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); mesProductionRecordQuery.setParameter("startTime", startTime); mesProductionRecordQuery.setParameter("endTime", endTime); + if (!CollectionUtils.isEmpty(workOrderNoSet)) { + mesProductionRecordQuery.setParameter("workOrderNoSet", workOrderNoSet); + } List productionRecordQueryResultList = mesProductionRecordQuery.getResultList(); if (!CollectionUtils.isEmpty(productionRecordQueryResultList)) { //取出所有过程条码 List serialNumberList = productionRecordQueryResultList. stream().map(MesWorkCenterBoardResultModel::getSerialNumber).collect(Collectors.toList()); + //查询合格的过程条码与对应的物料号 拼接后的结果 StringBuffer queryMesProduceSnSql = new StringBuffer(); - queryMesProduceSnSql.append("select distinct serialNumber " + + queryMesProduceSnSql.append("select CONCAT(serial_number,part_no) " + "from MesProduceSn " + "where isValid = :isValid " + "and isDeleted = :isDeleted " + @@ -114,7 +124,7 @@ public class MesYfBoardDaoImpl implements IMesYfBoardDao { mesProduceSnQuery.setParameter("serialNumberList", serialNumberList); List resultList = mesProduceSnQuery.getResultList(); for (MesWorkCenterBoardResultModel resultModel : productionRecordQueryResultList) { - if (resultList.contains(resultModel.getSerialNumber())) { + if (!CollectionUtils.isEmpty(resultList) && resultList.contains(resultModel.getSerialNumber() + resultModel.getPartNo())) { resultModel.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); }else { resultModel.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue()); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/board/IMesYfBoardServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/board/IMesYfBoardServiceImpl.java index c8809ed..d3bce3d 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/board/IMesYfBoardServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/board/IMesYfBoardServiceImpl.java @@ -127,27 +127,44 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService { conditionModel.getTimeRangeIdentification(), conditionModel.getOrganizeCode()); //查询工单 List mesWorkOrderList = queryMesWorkOrder(timeZoneMap, conditionModel); - //封装汇总数据 - for (MesWorkOrder mesWorkOrder : mesWorkOrderList) { - MesWorkCenterBoardResultModel resultModel = new MesWorkCenterBoardResultModel(); - resultModel.setWorkOrderNo(mesWorkOrder.getWorkOrderNo()); - resultModel.setPartNo(mesWorkOrder.getPartNo()); - resultModel.setPartDescription(mesWorkOrder.getPartName()); - resultModel.setWorkOrderCompletedQuantity(mesWorkOrder.getCompleteQty()); - resultModel.setWorkOrderPlannedQuantity(mesWorkOrder.getQty()); - double workOrderFirstPassRate; - if (resultModel.getWorkOrderCompletedQuantity() == 0 || resultModel.getWorkOrderPlannedQuantity() == 0) { - workOrderFirstPassRate = 0; - }else { - workOrderFirstPassRate = resultModel.getWorkOrderCompletedQuantity() * 100 / resultModel.getWorkOrderPlannedQuantity(); - if (workOrderFirstPassRate > 100) { + if (!CollectionUtils.isEmpty(mesWorkOrderList)) { + Set workOrderNoSet = mesWorkOrderList.stream().map(MesWorkOrder::getWorkOrderNo).collect(Collectors.toSet()); + //查询当前产线在指定时间段内加工完成的工单条码数据 + List mesProductOffLineQueryResultList = mesYfBoardDao.queryCompletedSnInfo( + conditionModel.getWorkCenterCodeList().get(0), + conditionModel.getOrganizeCode(), + timeZoneMap.get(conditionModel.getWorkCenterCodeList().get(0)).get(START_TIME), + timeZoneMap.get(conditionModel.getWorkCenterCodeList().get(0)).get(END_TIME), + workOrderNoSet); + //查询结果按照工单号分组 + Map> workOrderAndSnDataByOrderNoMap = + mesProductOffLineQueryResultList.stream().collect(Collectors.groupingBy(MesWorkCenterBoardResultModel::getWorkOrderNo)); + //封装汇总数据 + for (MesWorkOrder mesWorkOrder : mesWorkOrderList) { + MesWorkCenterBoardResultModel resultModel = new MesWorkCenterBoardResultModel(); + resultModel.setWorkOrderNo(mesWorkOrder.getWorkOrderNo()); + resultModel.setPartNo(mesWorkOrder.getPartNo()); + resultModel.setPartDescription(mesWorkOrder.getPartName()); + resultModel.setWorkOrderCompletedQuantity(mesWorkOrder.getCompleteQty()); + resultModel.setWorkOrderPlannedQuantity(mesWorkOrder.getQty()); + //计算当前工单的合格率 + double workOrderFirstPassRate; + List resultModels = workOrderAndSnDataByOrderNoMap.get(mesWorkOrder.getWorkOrderNo()); + if (CollectionUtils.isEmpty(resultModels)) { workOrderFirstPassRate = 100; + }else { + //合格数 + long count = resultModels.stream().filter(model -> model.getQcStatus() == MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()).count(); + workOrderFirstPassRate = count * 100 / resultModels.size(); + if (workOrderFirstPassRate > 100) { + workOrderFirstPassRate = 100; + } } + BigDecimal bd = new BigDecimal(workOrderFirstPassRate); + bd = bd.setScale(2, RoundingMode.HALF_UP); + resultModel.setWorkOrderFirstPassRate(bd); + resultModelList.add(resultModel); } - BigDecimal bd = new BigDecimal(workOrderFirstPassRate); - bd = bd.setScale(2, RoundingMode.HALF_UP); - resultModel.setWorkOrderFirstPassRate(bd); - resultModelList.add(resultModel); } return resultModelList; } @@ -208,7 +225,8 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService { conditionModel.getWorkCenterCodeList().get(0), conditionModel.getOrganizeCode(), timeZoneMap.get(START_TIME).get(START_TIME), - timeZoneMap.get(END_TIME).get(END_TIME)); + timeZoneMap.get(END_TIME).get(END_TIME), + null); //依次汇总每个时间段的数据 for (String timeZone : timeZoneMap.keySet()) { MesWorkCenterBoardResultModel resultModel = new MesWorkCenterBoardResultModel(); diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java index 937d43d..55c2d7b 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java @@ -110,9 +110,11 @@ public class MesWorkCenterBoardResultModel { public MesWorkCenterBoardResultModel() { } - public MesWorkCenterBoardResultModel(String serialNumber, String createDateTime) { + public MesWorkCenterBoardResultModel(String serialNumber, String createDateTime, String workOrderNo, String partNo) { this.serialNumber = serialNumber; this.createDateTime = createDateTime; + this.workOrderNo = workOrderNo; + this.partNo = partNo; } } From 73a11a618a02504c7eeec6ef2e1f0cd536045c4f Mon Sep 17 00:00:00 2001 From: jun Date: Thu, 15 Aug 2024 07:05:31 +0800 Subject: [PATCH 27/46] =?UTF-8?q?=E9=9B=B6=E4=BB=B6=E6=9D=A1=E7=A0=81?= =?UTF-8?q?=E7=8A=B6=E6=80=81=EF=BC=8C=E4=BA=A7=E5=93=81=E5=8A=A0=E5=B7=A5?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=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 --- .../mes/api/busi/report/IMesYfReportService.java | 7 +++ .../controller/report/MesBusiReportController.java | 29 ++++++++++++ .../serviceimpl/report/MesYfReportServiceImpl.java | 53 ++++++++++++++++++++++ 3 files changed, 89 insertions(+) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesYfReportService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesYfReportService.java index 322602f..ae548a6 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesYfReportService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesYfReportService.java @@ -6,6 +6,7 @@ import cn.estsh.i3plus.ext.mes.pojo.model.report.MesProdRuleReportConditionModel import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportModel; import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.ApiOperation; @@ -41,4 +42,10 @@ public interface IMesYfReportService { @ApiOperation("查询追溯报表") List findTraceabilityReport(MesProduceSn mesProduceSn); + + @ApiOperation("零件条码状态查询") + ListPager queryMesProduceSn(MesProduceSn mesProduceSn, Pager pager); + + @ApiOperation("产品加工记录") + ListPager queryMesProductionRecord(MesProductionRecord mesProductionRecord, Pager pager); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java index 025f2d9..b486e42 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java @@ -3,7 +3,9 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.report; import cn.estsh.i3plus.ext.mes.api.busi.report.IMesYfReportService; import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import cn.estsh.impp.framework.base.controller.MesBaseController; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; @@ -45,4 +47,31 @@ public class MesBusiReportController extends MesBaseController { } } + @ApiOperation(value = "零件条码状态查询", notes = "零件条码状态查询") + @GetMapping("/mesProduceSn/query") + public ResultBean queryMesProduceSn(MesProduceSn mesProduceSn, Pager pager) { + try { + mesProduceSn.setOrganizeCode(AuthUtilExt.getOrganizeCode()); + return ResultBean.success("查询成功").setListPager(mesYfReportService.queryMesProduceSn(mesProduceSn,pager)); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + + @ApiOperation(value = "产品加工记录", notes = "产品加工记录") + @GetMapping("/mesProductionRecord/query") + public ResultBean queryMesProductionRecord(MesProductionRecord mesProductionRecord, Pager pager) { + try { + mesProductionRecord.setOrganizeCode(AuthUtilExt.getOrganizeCode()); + return ResultBean.success("查询成功").setListPager(mesYfReportService.queryMesProductionRecord(mesProductionRecord,pager)); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + } 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 3e1b4a4..a8028e3 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 @@ -94,6 +94,9 @@ public class MesYfReportServiceImpl implements IMesYfReportService { @Autowired private IMesConfigService mesConfigService; + @Autowired + private MesProductionRecordRepository mesProductionRecordRepository; + @Override public ListPager queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager) { ListPager mesDeviceDataQueryReportResultModelListPager = @@ -224,6 +227,56 @@ public class MesYfReportServiceImpl implements IMesYfReportService { return mesTraceabilityReportModelList; } + @Override + public ListPager queryMesProduceSn(MesProduceSn mesProduceSn, Pager pager) { + DdlPackBean packBean = getMesProduceSnPackBean(mesProduceSn); + + pager = PagerHelper.getPager(pager, mesProduceSnRDao.findByHqlWhereCount(packBean)); + List list = mesProduceSnRDao.findByHqlWherePage(packBean, pager); + return new ListPager<>(list, pager); + } + + @Override + public ListPager queryMesProductionRecord(MesProductionRecord mesProductionRecord, Pager pager) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecord.getOrganizeCode()); + DdlPreparedPack.getStringLikerPack(mesProductionRecord.getProductSn(), "productSn", packBean); + DdlPreparedPack.getStringLikerPack(mesProductionRecord.getWorkOrderNo(), "workOrderNo", packBean); + DdlPreparedPack.getStringLikerPack(mesProductionRecord.getWorkCenterCode(), "workCenterCode", packBean); + DdlPreparedPack.getStringLikerPack(mesProductionRecord.getWorkCellCode(), "workCellCode", packBean); + DdlPreparedPack.getStringBiggerPack(mesProductionRecord.getCompleteDateTimeStart(), "completeDateTime", packBean); + DdlPreparedPack.getStringSmallerPack(mesProductionRecord.getCompleteDateTimeEnd(), "completeDateTime", packBean); + DdlPreparedPack.getStringLikerPack(mesProductionRecord.getEquipmentCode(), "equipmentCode", packBean); + DdlPreparedPack.getStringLikerPack(mesProductionRecord.getEquipmentCode(), "equipmentCode", packBean); + DdlPreparedPack.getStringLikerPack(mesProductionRecord.getMouldNo(), "mouldNo", packBean); + DdlPreparedPack.getStringLikerPack(mesProductionRecord.getShiftGroup(), "shiftGroup", packBean); + DdlPreparedPack.getStringLikerPack(mesProductionRecord.getShiftCode(), "shiftCode", packBean); + DdlPreparedPack.getNumEqualPack(mesProductionRecord.getReportStatus(), "reportStatus", packBean); + DdlPreparedPack.getNumEqualPack(mesProductionRecord.getReportType(), "reportType", packBean); + DdlPreparedPack.getNumEqualPack(mesProductionRecord.getIsComplete(), "isComplete", packBean); + DdlPreparedPack.getNumEqualPack(mesProductionRecord.getIsTest(), "isTest", packBean); + pager = PagerHelper.getPager(pager, mesProductionRecordRepository.findByHqlWhereCount(packBean)); + List list = mesProductionRecordRepository.findByHqlWherePage(packBean, pager); + return new ListPager<>(list, pager); + } + + private DdlPackBean getMesProduceSnPackBean(MesProduceSn mesProduceSn) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProduceSn.getOrganizeCode()); + DdlPreparedPack.getStringLikerPack(mesProduceSn.getProductSn(), "productSn", packBean); + DdlPreparedPack.getStringLikerPack(mesProduceSn.getWorkOrderNo(), "workOrderNo", packBean); + DdlPreparedPack.getStringBiggerPack(mesProduceSn.getCreateDateTimeStart(), "createDatetime", packBean); + DdlPreparedPack.getStringSmallerPack(mesProduceSn.getCreateDateTimeEnd(), "createDatetime", packBean); + DdlPreparedPack.getNumEqualPack(mesProduceSn.getSnStatus(), "snStatus", packBean); + DdlPreparedPack.getNumEqualPack(mesProduceSn.getQcStatus(), "qcStatus", packBean); + DdlPreparedPack.getStringLikerPack(mesProduceSn.getPartNo(), "partNo", packBean); + DdlPreparedPack.getStringLikerPack(mesProduceSn.getPartName(), "partName", packBean); + DdlPreparedPack.getStringLikerPack(mesProduceSn.getWorkCenterCode(), "workCenterCode", packBean); + DdlPreparedPack.getNumEqualPack(mesProduceSn.getPrintCount(), "printCount", packBean); + DdlPreparedPack.getNumEqualPack(mesProduceSn.getPrintStatus(), "printStatus", packBean); + DdlPreparedPack.getStringLikerPack(mesProduceSn.getWorkCellCode(), "workCellCode", packBean); + DdlPreparedPack.getStringLikerPack(mesProduceSn.getCreateUser(), "createUser", packBean); + return packBean; + } + private Map> getMesEquipmentLogDetailMap(String organizeCode, List productionRecordList) { List organizeCodeEquipList = getEquipList(organizeCode, productionRecordList); //工艺加工参数 From 458b24957df6d6276eb1be81cd5c1fe188c48353 Mon Sep 17 00:00:00 2001 From: gsz Date: Thu, 15 Aug 2024 11:37:47 +0800 Subject: [PATCH 28/46] =?UTF-8?q?=E6=B1=87=E6=80=BB=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E7=BB=99SAP=20=E6=97=B6=E9=97=B4=E5=88=86=E7=BB=84=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=EF=BC=8C=E5=85=B3=E9=97=AD=E7=8A=B6=E6=80=81=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E9=80=BB=E8=BE=91=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/daoimpl/MesWorkOrderDaoImpl.java | 30 +++++++++++++++++----- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java index 4f15500..c2c5344 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java @@ -1,14 +1,19 @@ package cn.estsh.i3plus.ext.mes.apiservice.daoimpl; import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesWorkOrderDao; +import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; import lombok.extern.slf4j.Slf4j; +import org.hibernate.SQLQuery; +import org.hibernate.transform.Transformers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.persistence.EntityManager; import javax.persistence.Query; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; /** @@ -27,15 +32,28 @@ public class MesWorkOrderDaoImpl implements IMesWorkOrderDao { @Override public List sumMesWorkOrderQtyToSap(String organizeCode, List statusList) { - StringBuffer hql = new StringBuffer("select new " + MesWorkOrderModel.class.getName() + "(partNo,planStartTime,productVersion,sum(case when workOrderStatus = 40 then 0 else qty end) as sumQty) " + - " from MesWorkOrder where isDeleted=:isDeleted and isValid = :isValid and organizeCode = :organizeCode " + - " and workOrderType = 20 "+ - "and workOrderStatus not in(:statusList) group by partNo,planStartTime,productVersion"); - Query query = entityManager.createQuery(hql.toString(), MesWorkOrderModel.class); + StringBuffer hql = new StringBuffer("select part_No as partNo, plan_Start_Time as planStartTime, product_Version as productVersion, " + + " sum( CASE WHEN work_Order_Status = 40 THEN complete_Qty ELSE qty END ) AS sumQty " + + " from Mes_Work_Order where is_Deleted=:isDeleted and is_Valid = :isValid and organize_Code = :organizeCode " + + " and work_order_type = 20 "+ + "and work_Order_Status not in(:statusList) group by part_No, date_format( plan_Start_Time, '%Y-%m-%d' ), product_Version "); + Query query = entityManager.createNativeQuery(hql.toString()); query.setParameter("organizeCode", organizeCode); query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); query.setParameter("statusList", statusList); - return query.getResultList(); + query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); + + List> hashMaps = query.getResultList(); + List mesWorkOrderList =new ArrayList<>(); + for (HashMap hashMap : hashMaps) { + try { + mesWorkOrderList.add((MesWorkOrderModel) BeanUtil.populateBean(hashMap, MesWorkOrderModel.class)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + return mesWorkOrderList; } } From d2c1c4c591561eecda8e83faa079472979d2dc3d Mon Sep 17 00:00:00 2001 From: gsz Date: Thu, 15 Aug 2024 13:16:54 +0800 Subject: [PATCH 29/46] =?UTF-8?q?=E6=B1=87=E6=80=BB=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E7=BB=99SAP=20=E6=97=B6=E9=97=B4=E5=88=86=E7=BB=84=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=EF=BC=8C=E5=85=B3=E9=97=AD=E7=8A=B6=E6=80=81=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E9=80=BB=E8=BE=91=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java index c2c5344..388666b 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java @@ -33,7 +33,7 @@ public class MesWorkOrderDaoImpl implements IMesWorkOrderDao { @Override public List sumMesWorkOrderQtyToSap(String organizeCode, List statusList) { StringBuffer hql = new StringBuffer("select part_No as partNo, plan_Start_Time as planStartTime, product_Version as productVersion, " + - " sum( CASE WHEN work_Order_Status = 40 THEN complete_Qty ELSE qty END ) AS sumQty " + + " sum( CASE WHEN work_Order_Status = 40 THEN complete_Qty ELSE qty END ) AS qty " + " from Mes_Work_Order where is_Deleted=:isDeleted and is_Valid = :isValid and organize_Code = :organizeCode " + " and work_order_type = 20 "+ "and work_Order_Status not in(:statusList) group by part_No, date_format( plan_Start_Time, '%Y-%m-%d' ), product_Version "); From 0962527d5ff2fe333077ec6ec3508d4d8df7ddf6 Mon Sep 17 00:00:00 2001 From: gsz Date: Thu, 15 Aug 2024 15:14:24 +0800 Subject: [PATCH 30/46] =?UTF-8?q?=E6=B1=87=E6=80=BB=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E7=BB=99SAP=E4=B8=8D=E7=BB=9F=E8=AE=A1=20=E8=AF=95=E5=88=B6?= =?UTF-8?q?=E5=8D=95order=5Fflag=20!=3D'P'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java index 388666b..d4b947b 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java @@ -35,7 +35,7 @@ public class MesWorkOrderDaoImpl implements IMesWorkOrderDao { StringBuffer hql = new StringBuffer("select part_No as partNo, plan_Start_Time as planStartTime, product_Version as productVersion, " + " sum( CASE WHEN work_Order_Status = 40 THEN complete_Qty ELSE qty END ) AS qty " + " from Mes_Work_Order where is_Deleted=:isDeleted and is_Valid = :isValid and organize_Code = :organizeCode " + - " and work_order_type = 20 "+ + " and work_order_type = 20 and order_flag !='P' "+ "and work_Order_Status not in(:statusList) group by part_No, date_format( plan_Start_Time, '%Y-%m-%d' ), product_Version "); Query query = entityManager.createNativeQuery(hql.toString()); query.setParameter("organizeCode", organizeCode); From effc71dd95bece713164840f2a54bde589faf3c1 Mon Sep 17 00:00:00 2001 From: gsz Date: Thu, 15 Aug 2024 16:07:49 +0800 Subject: [PATCH 31/46] =?UTF-8?q?=E4=BA=A7=E9=87=8F=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8report=5Ftype=3D10=20=E7=9A=84=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java index 2b3dc50..f2f73f6 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java @@ -81,6 +81,7 @@ public class MesProductionRecordServiceImpl extends BaseMesService Date: Thu, 15 Aug 2024 20:56:24 +0800 Subject: [PATCH 32/46] =?UTF-8?q?42580=20PC-=E4=BA=A7=E7=BA=BF=E4=B8=8E?= =?UTF-8?q?=E9=9B=B6=E4=BB=B6=E5=85=B3=E7=B3=BB=E7=BB=B4=E6=8A=A4-?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=90=8E=EF=BC=8C=E4=BA=A7=E7=BA=BF=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/base/MesWorkCenterPartRelationService.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCenterPartRelationService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCenterPartRelationService.java index 0459746..14847bc 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCenterPartRelationService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCenterPartRelationService.java @@ -94,11 +94,7 @@ public class MesWorkCenterPartRelationService extends BaseMesService Date: Fri, 16 Aug 2024 03:23:13 +0800 Subject: [PATCH 33/46] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E6=B1=87=E6=80=BB?= =?UTF-8?q?=E5=8F=91=E9=80=81SAP=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= =?UTF-8?q?=EF=BC=8C=E9=9B=B6=E4=BB=B6=E6=9D=A1=E7=A0=81=E7=8A=B6=E6=80=81?= =?UTF-8?q?=EF=BC=8C=E5=8A=A0=E5=B7=A5=E8=AE=B0=E5=BD=95=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/ext/mes/api/base/IMesConfigService.java | 6 ++ .../ext/mes/api/base/IMesWorkOrderService.java | 2 +- .../mes/api/base/IMesWorkOrderToSapService.java | 2 +- .../controller/base/BaseExtDataController.java | 101 ++++++++++++++++++++- .../controller/base/MesWorkOrderController.java | 20 +++- .../controller/report/MesBusiReportController.java | 2 - .../ext/mes/apiservice/dao/IMesWorkOrderDao.java | 2 +- .../apiservice/daoimpl/MesWorkOrderDaoImpl.java | 9 +- .../schedulejob/MesWorkOrderToSapJob.java | 23 ++++- .../serviceimpl/base/MesConfigService.java | 13 +++ .../serviceimpl/base/MesWorkOrderService.java | 4 +- .../base/MesWorkOrderToSapServiceImpl.java | 46 +++++++--- .../serviceimpl/report/MesYfReportServiceImpl.java | 24 +++-- 13 files changed, 214 insertions(+), 40 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 c1cb297..99f8fd1 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 @@ -18,6 +18,9 @@ public interface IMesConfigService { @ApiOperation(value = "获取配置表模板代码") MesConfig getCfgValueByCode(String key); + @ApiOperation(value = "获取配置表模板代码") + MesConfig getCfgValueByCode(String organizeCode,String key); + @ApiOperation(value = "获取系统配置集合") List getConfigList(String organizeCode, String cfgCode, String cfgKey, String cfgType); @@ -33,4 +36,7 @@ public interface IMesConfigService { @ApiOperation(value = "查询分表配置") List findShardingTablesObjectCfg(String organizeCode, String cfgKey, List itemList); + @ApiOperation(value = "更新配置") + void update(MesConfig mesConfig,String userName); + } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java index 5d6ae89..6da2132 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java @@ -31,7 +31,7 @@ public interface IMesWorkOrderService extends IBaseMesService { void deleteUnSortOrder(String organizeCode, List partNoList); @ApiOperation("汇总工单给SAP") - List sumMesWorkOrderQtyToSap(String organizeCode); + List sumMesWorkOrderQtyToSap(String organizeCode,String lastSendToSapTime); @ApiOperation("ccscTest") List queryMesWorkOrderProcessToSap(String organizeCode); diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToSapService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToSapService.java index fcf463e..a0a49be 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToSapService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToSapService.java @@ -15,5 +15,5 @@ import java.util.List; public interface IMesWorkOrderToSapService extends IBaseMesService { MesWorkOrderToSap insert(MesWorkOrderModel mesWorkOrder); - void doMesWorkOrder(String organizeCode,List mesWorkOrderList); + void doMesWorkOrder(String organizeCode,String userName,List mesWorkOrderList); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java index ac45590..78e1601 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java @@ -1,23 +1,37 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; import cn.estsh.i3plus.ext.mes.api.base.IMesEnumExtService; +import cn.estsh.i3plus.ext.mes.api.busi.report.IMesYfReportService; +import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.platform.common.tool.ExcelTool; +import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.i3plus.pojo.model.common.ExportDataModel; import cn.estsh.impp.framework.base.controller.MesBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.RedisCacheTool; import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import javax.persistence.EntityManager; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URLEncoder; +import java.util.LinkedHashMap; import java.util.Map; +import java.util.Objects; /** * @Description: @@ -35,6 +49,12 @@ public class BaseExtDataController extends MesBaseController { @Autowired private IMesEnumExtService enumService; + @Autowired + private IMesYfReportService mesYfReportService; + + @Autowired + private EntityManager entityManager; + @GetMapping(value = "/enumlist") @ApiOperation(value = "获取MES系统所有枚举") public ResultBean enumlist(@RequestParam(name = "enumName") String enumName) { @@ -81,5 +101,78 @@ public class BaseExtDataController extends MesBaseController { } } + @ApiOperation(value = "导出", notes = "导出") + @PostMapping("/data-export") + public ResultBean doDataExport(@RequestBody ExportDataModel exportDataModel, HttpServletResponse response) { + try { + ValidatorBean.beginValid(exportDataModel) + .notNull("exportCol", exportDataModel.getExportCol()) + .notNull("selectWhere", exportDataModel.getSelectWhere()) + .notNull("exportMode", exportDataModel.getExportMode()); + File excelFile = null; + + ExcelTool excelTool = new ExcelTool(this.entityManager, RedisCacheTool.getImppRedis()); + Class mesClass = null; + ListPager listPager = null; + + switch (MesExtEnumUtil.DATA_EXPORT.valueOfCode(exportDataModel.getExportMode())){ + case MES_PRODUCE_SN_DATA_EXPORT: + mesClass = MesProduceSn.class; + //查询数据 + listPager = mesYfReportService.queryMesProduceSn(JSON.parseObject(exportDataModel.getSelectWhere(), MesProduceSn.class),null);break; + case MES_PRODUCTION_RECORD_DATA_EXPORT: + mesClass = MesProductionRecord.class; + //查询数据 + listPager = mesYfReportService.queryMesProductionRecord(JSON.parseObject(exportDataModel.getSelectWhere(), MesProductionRecord.class),null);break; + default: + break; + } + + if(Objects.isNull(listPager) || CollectionUtils.isEmpty(listPager.getObjectList())){ + MesException.throwMesBusiException("未查询到有效数据"); + } + + LinkedHashMap exportCol = (LinkedHashMap) JSON.parseObject(exportDataModel.getExportCol(), LinkedHashMap.class); + excelFile = new File(System.getProperty("java.io.tmpdir") + File.separator + mesClass.getSimpleName() + ".xls"); + excelFile.createNewFile(); + excelTool.exportData(excelFile, listPager.getObjectList(), mesClass, exportCol); + + + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(excelFile.getName(), "UTF-8")); + response.flushBuffer(); + BufferedInputStream bis = null; + + try { + bis = new BufferedInputStream(new FileInputStream(excelFile)); + OutputStream os = response.getOutputStream(); + byte[] buffer = new byte[1024]; + + for(int i = bis.read(buffer); i != -1; i = bis.read(buffer)) { + os.write(buffer, 0, i); + } + } catch (Exception var28) { + var28.printStackTrace(); + } finally { + if (bis != null) { + try { + bis.close(); + excelFile.delete(); + } catch (IOException var27) { + var27.printStackTrace(); + } + } + + } + + return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException var30) { + return ResultBean.fail(var30); + } catch (Exception var31) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(var31); + } + } + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java index be8bf01..3709d9e 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; +import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToSapService; import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt; @@ -7,9 +8,11 @@ import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel.MesExcelTool; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesConfig; import cn.estsh.i3plus.pojo.mes.bean.MesProductVersion; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; @@ -31,6 +34,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -46,6 +50,9 @@ public class MesWorkOrderController extends BaseMesController { @Autowired private IMesWorkOrderToSapService mesWorkOrderToSapService; + @Autowired + private IMesConfigService mesConfigService; + @ApiOperation(value = "查询生产版本", notes = "查询生产版本") @GetMapping("/mesProductVersion/query") public ResultBean queryMesProdRuleByPager(MesProductVersion mesProductVersion, Pager pager){ @@ -151,10 +158,19 @@ public class MesWorkOrderController extends BaseMesController { @ApiOperation(value = "发送给sap") public ResultBean sendToSap(String organizeCode) { try { + MesConfig sendToSap = mesConfigService.getCfgValueByCode(organizeCode, "LAST_SEND_TO_SAP_TIME"); + String lastSendToSapTime = null; + if (Objects.isNull(sendToSap) || StringUtils.isEmpty(sendToSap.getCfgValue())) { + lastSendToSapTime = TimeTool.pareDateToString(new Date(0)); + } else { + lastSendToSapTime = sendToSap.getCfgValue(); + sendToSap.setCfgValue(TimeTool.getNowTime(true)); + mesConfigService.update(sendToSap, ""); + } //查询汇总工单数量 - List mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode); + List mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode,lastSendToSapTime); if (!CollectionUtils.isEmpty(mesWorkOrderList)){ - mesWorkOrderToSapService.doMesWorkOrder(organizeCode,mesWorkOrderList); + mesWorkOrderToSapService.doMesWorkOrder(organizeCode,"",mesWorkOrderList); } return ResultBean.success("操作成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java index b486e42..c91616f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java @@ -51,7 +51,6 @@ public class MesBusiReportController extends MesBaseController { @GetMapping("/mesProduceSn/query") public ResultBean queryMesProduceSn(MesProduceSn mesProduceSn, Pager pager) { try { - mesProduceSn.setOrganizeCode(AuthUtilExt.getOrganizeCode()); return ResultBean.success("查询成功").setListPager(mesYfReportService.queryMesProduceSn(mesProduceSn,pager)); } catch (ImppBusiException e) { return ResultBean.fail(e); @@ -65,7 +64,6 @@ public class MesBusiReportController extends MesBaseController { @GetMapping("/mesProductionRecord/query") public ResultBean queryMesProductionRecord(MesProductionRecord mesProductionRecord, Pager pager) { try { - mesProductionRecord.setOrganizeCode(AuthUtilExt.getOrganizeCode()); return ResultBean.success("查询成功").setListPager(mesYfReportService.queryMesProductionRecord(mesProductionRecord,pager)); } catch (ImppBusiException e) { return ResultBean.fail(e); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java index d80ef90..65dc524 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java @@ -13,5 +13,5 @@ import java.util.List; **/ public interface IMesWorkOrderDao { - List sumMesWorkOrderQtyToSap(String organizeCode, List statusList); + List sumMesWorkOrderQtyToSap(String organizeCode, List statusList,String lastSendToSapTime); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java index d4b947b..5a1f70f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java @@ -31,17 +31,18 @@ public class MesWorkOrderDaoImpl implements IMesWorkOrderDao { private EntityManager entityManager; @Override - public List sumMesWorkOrderQtyToSap(String organizeCode, List statusList) { - StringBuffer hql = new StringBuffer("select part_No as partNo, plan_Start_Time as planStartTime, product_Version as productVersion, " + + public List sumMesWorkOrderQtyToSap(String organizeCode, List statusList,String lastSendToSapTime) { + StringBuffer hql = new StringBuffer("select organize_Code as organizeCode,part_No as partNo, plan_Start_Time as planStartTime, product_Version as productVersion, " + " sum( CASE WHEN work_Order_Status = 40 THEN complete_Qty ELSE qty END ) AS qty " + " from Mes_Work_Order where is_Deleted=:isDeleted and is_Valid = :isValid and organize_Code = :organizeCode " + - " and work_order_type = 20 and order_flag !='P' "+ - "and work_Order_Status not in(:statusList) group by part_No, date_format( plan_Start_Time, '%Y-%m-%d' ), product_Version "); + " and work_order_type = 20 and order_flag !='P' and modify_date_time >= :modifyDatetime "+ + " and work_Order_Status not in(:statusList) group by organize_code,part_No, date_format( plan_Start_Time, '%Y-%m-%d' ), product_Version "); Query query = entityManager.createNativeQuery(hql.toString()); query.setParameter("organizeCode", organizeCode); query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); query.setParameter("statusList", statusList); + query.setParameter("modifyDatetime", lastSendToSapTime); query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); List> hashMaps = query.getResultList(); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesWorkOrderToSapJob.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesWorkOrderToSapJob.java index 3386444..ada84ee 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesWorkOrderToSapJob.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesWorkOrderToSapJob.java @@ -1,8 +1,12 @@ package cn.estsh.i3plus.ext.mes.apiservice.schedulejob; +import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToSapService; import cn.estsh.i3plus.mes.apiservice.schedulejob.BaseMesScheduleJob; +import cn.estsh.i3plus.mes.apiservice.util.DateUtil; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.mes.bean.MesConfig; import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; import cn.estsh.impp.framework.boot.init.ApplicationProperties; import io.swagger.annotations.ApiOperation; @@ -15,7 +19,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.util.CollectionUtils; +import java.util.Date; import java.util.List; +import java.util.Objects; /** * @Description : 汇总工单给SAP @@ -39,6 +45,9 @@ public class MesWorkOrderToSapJob extends BaseMesScheduleJob { @Autowired private IMesWorkOrderToSapService mesWorkOrderToSapService; + @Autowired + private IMesConfigService mesConfigService; + @Value("${server.port}") private String serverPort; @Value("${impp.server.ip}") @@ -59,11 +68,21 @@ public class MesWorkOrderToSapJob extends BaseMesScheduleJob { } String[] organizeCodeList = jobParam.split(","); LOGGER.info("汇总工单给SAP开始 -----start"); + String userName = "job"; for (String organizeCode : organizeCodeList) { - List mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode); + MesConfig sendToSap = mesConfigService.getCfgValueByCode(organizeCode,"LAST_SEND_TO_SAP_TIME"); + String lastSendToSapTime = null; + if(Objects.isNull(sendToSap) || StringUtils.isEmpty(sendToSap.getCfgValue())){ + lastSendToSapTime = TimeTool.pareDateToString(new Date(0)); + }else{ + lastSendToSapTime = sendToSap.getCfgValue(); + sendToSap.setCfgValue(TimeTool.pareDateToString(DateUtil.addMinutes(new Date(), -10))); + mesConfigService.update(sendToSap,userName); + } + List mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode,lastSendToSapTime); if (!CollectionUtils.isEmpty(mesWorkOrderList)) { - mesWorkOrderToSapService.doMesWorkOrder(organizeCode, mesWorkOrderList); + mesWorkOrderToSapService.doMesWorkOrder(organizeCode,userName, mesWorkOrderList); } } LOGGER.info("汇总工单给SAP开始结束 ----- end"); 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 83c20d9..2e9a4f7 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 @@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService; import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; @@ -51,6 +52,12 @@ public class MesConfigService implements IMesConfigService { } @Override + public MesConfig getCfgValueByCode(String organizeCode,String cfgCode) { + return this.configRepository.getByProperty(new String[]{"organizeCode","isDeleted", "isValid", "cfgCode"}, + new Object[]{organizeCode,CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), cfgCode}); + } + + @Override public List getConfigList(String organizeCode, String cfgCode, String cfgKey, String cfgType) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(cfgCode, MesExtConstWords.CFG_CODE, packBean); @@ -93,4 +100,10 @@ public class MesConfigService implements IMesConfigService { return findCfgValueContainItem(organizeCode, MesExtConstWords.MES_SHARDING_TABLES_OBJECT_CFG, cfgKey, CommonEnumUtil.SOFT_TYPE.MES.name(), MesExtConstWords.COMMA, itemList); } + @Override + public void update(MesConfig mesConfig,String userName) { + ConvertBean.serviceModelUpdate(mesConfig,userName); + configRepository.update(mesConfig); + } + } 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 b6b8b89..4702273 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 @@ -1260,12 +1260,12 @@ public class MesWorkOrderService extends BaseMesService implements } @Override - public List sumMesWorkOrderQtyToSap(String organizeCode) { + public List sumMesWorkOrderQtyToSap(String organizeCode,String lastSendToSapTime) { List statusList = new ArrayList<>(); statusList.add(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue()); // statusList.add(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue()); //查询汇总工单数量 - return mesWorkOrderDao.sumMesWorkOrderQtyToSap(organizeCode, statusList); + return mesWorkOrderDao.sumMesWorkOrderQtyToSap(organizeCode, statusList,lastSendToSapTime); } @Override diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToSapServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToSapServiceImpl.java index d71be93..cfc38b1 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToSapServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToSapServiceImpl.java @@ -1,9 +1,9 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToSapService; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; -import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderToSap; import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; @@ -11,8 +11,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; @Service @Slf4j @@ -28,25 +28,41 @@ public class MesWorkOrderToSapServiceImpl extends BaseMesService mesWorkOrderList) { - Pager pager = new Pager(1,1); - DdlPackBean ddlPackBean = null; + public void doMesWorkOrder(String organizeCode,String userName,List mesWorkOrderList) { + //查询表里原有数据 + Map workOrderToSapMap = getStringMesWorkOrderToSapMap(organizeCode, mesWorkOrderList); + //数据处理 for (MesWorkOrderModel mesWorkOrder : mesWorkOrderList) { - mesWorkOrder.setOrganizeCode(organizeCode); - mesWorkOrder.setModifyUser("job"); + String key = new StringJoiner(MesExtConstWords.COMMA).add(mesWorkOrder.getPartNo()).add(mesWorkOrder.getPlanStartTime()).toString(); + mesWorkOrder.setModifyUser(userName); //计划开始时间+物料查询发送Sap的数据 - ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPlanStartTime(),"pedtr",ddlPackBean); - DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(),"plmat",ddlPackBean); - ddlPackBean.setOrderByStr(" order by createDatetime desc "); - List workOrderToSapList = baseRDao.findByHqlPage(ddlPackBean,pager); - if(CollectionUtils.isEmpty(workOrderToSapList)){ + if(!workOrderToSapMap.containsKey(key)){ insert(mesWorkOrder); }else{ - if(!Objects.equals(workOrderToSapList.iterator().next().getGsmng(),mesWorkOrder.getQty())){ + if(!Objects.equals(workOrderToSapMap.get(key).getGsmng(),mesWorkOrder.getQty())){ insert(mesWorkOrder); } } } } + + private Map getStringMesWorkOrderToSapMap(String organizeCode, List mesWorkOrderList) { + List partNoList = mesWorkOrderList.stream().map(MesWorkOrderModel::getPartNo).distinct().collect(Collectors.toList()); + List planStartTime = mesWorkOrderList.stream().map(MesWorkOrderModel::getPlanStartTime).distinct().collect(Collectors.toList()); + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(planStartTime,"pedtr",ddlPackBean); + DdlPreparedPack.getInPackList(partNoList,"plmat",ddlPackBean); + ddlPackBean.setOrderByStr(" order by createDatetime desc "); + List workOrderToSapList = baseRDao.findByHqlWhere(ddlPackBean); + Map workOrderToSapMap = new HashMap<>(); + if(!CollectionUtils.isEmpty(workOrderToSapList)){ + for (MesWorkOrderToSap mesWorkOrderToSap : workOrderToSapList) { + String key = new StringJoiner(MesExtConstWords.COMMA).add(mesWorkOrderToSap.getPlmat()).add(mesWorkOrderToSap.getPedtr()).toString(); + if(!workOrderToSapMap.containsKey(key)){ + workOrderToSapMap.put(key,mesWorkOrderToSap); + } + } + } + return workOrderToSapMap; + } } 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 a8028e3..e510f6f 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 @@ -230,14 +230,28 @@ public class MesYfReportServiceImpl implements IMesYfReportService { @Override public ListPager queryMesProduceSn(MesProduceSn mesProduceSn, Pager pager) { DdlPackBean packBean = getMesProduceSnPackBean(mesProduceSn); - + if(Objects.isNull(pager)){ + DdlPreparedPack.getOrderBy(mesProduceSn.getOrderByParam(),mesProduceSn.getAscOrDesc(),packBean); + return new ListPager<>(mesProduceSnRDao.findByHqlWhere(packBean), pager); + } pager = PagerHelper.getPager(pager, mesProduceSnRDao.findByHqlWhereCount(packBean)); - List list = mesProduceSnRDao.findByHqlWherePage(packBean, pager); - return new ListPager<>(list, pager); + DdlPreparedPack.getOrderBy(mesProduceSn.getOrderByParam(),mesProduceSn.getAscOrDesc(),packBean); + return new ListPager<>(mesProduceSnRDao.findByHqlWherePage(packBean, pager), pager); } @Override public ListPager queryMesProductionRecord(MesProductionRecord mesProductionRecord, Pager pager) { + DdlPackBean packBean = getDdlPackBeanMesProductionRecord(mesProductionRecord); + if(Objects.isNull(pager)){ + DdlPreparedPack.getOrderBy(mesProductionRecord.getOrderByParam(),mesProductionRecord.getAscOrDesc(),packBean); + return new ListPager<>(mesProductionRecordRepository.findByHqlWhere(packBean), pager); + } + pager = PagerHelper.getPager(pager, mesProductionRecordRepository.findByHqlWhereCount(packBean)); + DdlPreparedPack.getOrderBy(mesProductionRecord.getOrderByParam(),mesProductionRecord.getAscOrDesc(),packBean); + return new ListPager<>(mesProductionRecordRepository.findByHqlWherePage(packBean, pager), pager); + } + + private DdlPackBean getDdlPackBeanMesProductionRecord(MesProductionRecord mesProductionRecord) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecord.getOrganizeCode()); DdlPreparedPack.getStringLikerPack(mesProductionRecord.getProductSn(), "productSn", packBean); DdlPreparedPack.getStringLikerPack(mesProductionRecord.getWorkOrderNo(), "workOrderNo", packBean); @@ -254,9 +268,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService { DdlPreparedPack.getNumEqualPack(mesProductionRecord.getReportType(), "reportType", packBean); DdlPreparedPack.getNumEqualPack(mesProductionRecord.getIsComplete(), "isComplete", packBean); DdlPreparedPack.getNumEqualPack(mesProductionRecord.getIsTest(), "isTest", packBean); - pager = PagerHelper.getPager(pager, mesProductionRecordRepository.findByHqlWhereCount(packBean)); - List list = mesProductionRecordRepository.findByHqlWherePage(packBean, pager); - return new ListPager<>(list, pager); + return packBean; } private DdlPackBean getMesProduceSnPackBean(MesProduceSn mesProduceSn) { From 4758a89f4c2c77c5f7aa78164eb9a04676012bf4 Mon Sep 17 00:00:00 2001 From: jun Date: Fri, 16 Aug 2024 03:40:49 +0800 Subject: [PATCH 34/46] =?UTF-8?q?=E6=B1=87=E6=80=BB=E5=8F=91=E9=80=81?= =?UTF-8?q?=E5=B7=A5=E5=8D=95=E6=97=B6=E9=97=B4=E6=8F=90=E5=89=8D10?= =?UTF-8?q?=E5=88=86=E9=92=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/apiservice/controller/base/MesWorkOrderController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java index 3709d9e..807572f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java @@ -7,6 +7,7 @@ import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt; import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel.MesExcelTool; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.mes.apiservice.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.ListPager; @@ -164,7 +165,7 @@ public class MesWorkOrderController extends BaseMesController { lastSendToSapTime = TimeTool.pareDateToString(new Date(0)); } else { lastSendToSapTime = sendToSap.getCfgValue(); - sendToSap.setCfgValue(TimeTool.getNowTime(true)); + sendToSap.setCfgValue(TimeTool.pareDateToString(DateUtil.addMinutes(new Date(), -10))); mesConfigService.update(sendToSap, ""); } //查询汇总工单数量 From 5a8e76d8c563806391e96463d33362fc0c5c002f Mon Sep 17 00:00:00 2001 From: jun Date: Fri, 16 Aug 2024 05:48:28 +0800 Subject: [PATCH 35/46] =?UTF-8?q?=E9=9B=B6=E4=BB=B6=E6=9D=A1=E7=A0=81?= =?UTF-8?q?=E7=8A=B6=E6=80=81=EF=BC=8C=E6=8E=92=E5=BA=8F=E5=8A=A0=E5=B7=A5?= =?UTF-8?q?=E8=A7=84=E5=88=99=E5=AF=BC=E5=87=BA=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/apiservice/controller/base/BaseExtDataController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java index 78e1601..d0ac770 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java @@ -108,14 +108,14 @@ public class BaseExtDataController extends MesBaseController { ValidatorBean.beginValid(exportDataModel) .notNull("exportCol", exportDataModel.getExportCol()) .notNull("selectWhere", exportDataModel.getSelectWhere()) - .notNull("exportMode", exportDataModel.getExportMode()); + .notNull("module", exportDataModel.getModule()); File excelFile = null; ExcelTool excelTool = new ExcelTool(this.entityManager, RedisCacheTool.getImppRedis()); Class mesClass = null; ListPager listPager = null; - switch (MesExtEnumUtil.DATA_EXPORT.valueOfCode(exportDataModel.getExportMode())){ + switch (MesExtEnumUtil.DATA_EXPORT.valueOfCode(exportDataModel.getModule())){ case MES_PRODUCE_SN_DATA_EXPORT: mesClass = MesProduceSn.class; //查询数据 From 923c2570b9a2d82540b9388783a3978a253fb008 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Fri, 16 Aug 2024 11:17:23 +0800 Subject: [PATCH 36/46] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E5=86=99=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 e510f6f..c36d702 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 @@ -267,7 +267,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService { DdlPreparedPack.getNumEqualPack(mesProductionRecord.getReportStatus(), "reportStatus", packBean); DdlPreparedPack.getNumEqualPack(mesProductionRecord.getReportType(), "reportType", packBean); DdlPreparedPack.getNumEqualPack(mesProductionRecord.getIsComplete(), "isComplete", packBean); - DdlPreparedPack.getNumEqualPack(mesProductionRecord.getIsTest(), "isTest", packBean); + DdlPreparedPack.getStringEqualPack(mesProductionRecord.getIsTest(), "isTest", packBean); return packBean; } From 9f049564921625ec6c0bbd4d6ca43dc848bdde2a Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Fri, 16 Aug 2024 11:51:24 +0800 Subject: [PATCH 37/46] =?UTF-8?q?=E5=B0=91=E4=BA=86=E7=89=A9=E6=96=99?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java | 1 + 1 file changed, 1 insertion(+) 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 c36d702..089b303 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 @@ -268,6 +268,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService { DdlPreparedPack.getNumEqualPack(mesProductionRecord.getReportType(), "reportType", packBean); DdlPreparedPack.getNumEqualPack(mesProductionRecord.getIsComplete(), "isComplete", packBean); DdlPreparedPack.getStringEqualPack(mesProductionRecord.getIsTest(), "isTest", packBean); + DdlPreparedPack.getStringEqualPack(mesProductionRecord.getPartNo(), "partNo", packBean); return packBean; } From 6cf1811cfc21d2c582e8d1557324ca5c5e618625 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Fri, 16 Aug 2024 11:59:37 +0800 Subject: [PATCH 38/46] =?UTF-8?q?=E5=B0=91=E4=BA=86=E7=89=A9=E6=96=99?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 089b303..cacafaf 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 @@ -259,8 +259,8 @@ public class MesYfReportServiceImpl implements IMesYfReportService { DdlPreparedPack.getStringLikerPack(mesProductionRecord.getWorkCellCode(), "workCellCode", packBean); DdlPreparedPack.getStringBiggerPack(mesProductionRecord.getCompleteDateTimeStart(), "completeDateTime", packBean); DdlPreparedPack.getStringSmallerPack(mesProductionRecord.getCompleteDateTimeEnd(), "completeDateTime", packBean); - DdlPreparedPack.getStringLikerPack(mesProductionRecord.getEquipmentCode(), "equipmentCode", packBean); - DdlPreparedPack.getStringLikerPack(mesProductionRecord.getEquipmentCode(), "equipmentCode", packBean); + DdlPreparedPack.getStringEqualPack(mesProductionRecord.getEquipmentCode(), "equipmentCode", packBean); + DdlPreparedPack.getStringLikerPack(mesProductionRecord.getEquipmentName(), "equipmentName", packBean); DdlPreparedPack.getStringLikerPack(mesProductionRecord.getMouldNo(), "mouldNo", packBean); DdlPreparedPack.getStringLikerPack(mesProductionRecord.getShiftGroup(), "shiftGroup", packBean); DdlPreparedPack.getStringLikerPack(mesProductionRecord.getShiftCode(), "shiftCode", packBean); @@ -269,6 +269,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService { DdlPreparedPack.getNumEqualPack(mesProductionRecord.getIsComplete(), "isComplete", packBean); DdlPreparedPack.getStringEqualPack(mesProductionRecord.getIsTest(), "isTest", packBean); DdlPreparedPack.getStringEqualPack(mesProductionRecord.getPartNo(), "partNo", packBean); + DdlPreparedPack.getStringLikerPack(mesProductionRecord.getPartName(), "partName", packBean); return packBean; } From 8bf1738bcf8a854a1961a5ed3aecb78015fff7ae Mon Sep 17 00:00:00 2001 From: jun Date: Fri, 16 Aug 2024 21:10:46 +0800 Subject: [PATCH 39/46] =?UTF-8?q?=E4=BA=A7=E7=BA=BF=E9=9B=B6=E4=BB=B6?= =?UTF-8?q?=E5=85=B3=E7=B3=BB=E8=BD=AF=E5=88=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/base/MesWorkCenterPartRelationService.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCenterPartRelationService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCenterPartRelationService.java index 14847bc..c029de6 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCenterPartRelationService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCenterPartRelationService.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkCenterPartRelationService; import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +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; @@ -94,7 +95,9 @@ public class MesWorkCenterPartRelationService extends BaseMesService Date: Tue, 20 Aug 2024 10:41:47 +0800 Subject: [PATCH 40/46] =?UTF-8?q?42602=20=E5=8F=91=E8=BF=90=E5=90=8E?= =?UTF-8?q?=EF=BC=8C=E5=AE=A2=E9=80=80=E5=93=81=E8=BF=94=E5=B7=A5=EF=BC=8C?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=B9=B6=E6=89=93=E5=8D=B0=E6=96=B0=E6=9D=A1?= =?UTF-8?q?=E7=A0=81=2042582=20=E7=BA=BF=E8=BE=B9=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/api/base/IMesProduceSnService.java | 3 + .../mes/api/base/IMesProductionRecordService.java | 4 + .../IMesShippingOrderManagementDetailService.java | 8 ++ .../MesToPiscesMesLoadingListDetail.groovy | 33 +++-- .../Mes2Pisces/MesToPiscesMesShippingDetail.groovy | 2 +- .../MesToPiscesProductionAssembly.groovy | 2 +- .../controller/base/BaseExtDataController.java | 9 ++ ...MesShippingOrderManagementDetailController.java | 33 ++++- .../controller/report/MesBusiReportController.java | 23 ++++ .../apiservice/dao/IMesProdRuleNosortCfgDao.java | 2 + .../dao/IMesShippingOrderManagementDetailDao.java | 6 + .../{MesDaoImpl.java => MesBomDaoImpl.java} | 2 +- .../daoimpl/MesLoadingListDetailDaoImpl.java | 8 +- .../daoimpl/MesProdRuleNosortCfgDaoImpl.java | 18 +++ .../MesShippingOrderManagementDetailDaoImpl.java | 89 +++++++++++++ .../serviceimpl/base/MesProduceSnServiceImpl.java | 14 ++ .../base/MesProductionRecordServiceImpl.java | 35 +++++ .../MesShippingOrderManagementDetailService.java | 65 +++++++++ .../serviceimpl/base/MesWorkOrderService.java | 21 ++- .../MesShippingOrderManagementDetailModel.java | 146 +++++++++++++++++++++ .../model/board/MesWorkCenterBoardResultModel.java | 5 + 21 files changed, 499 insertions(+), 29 deletions(-) rename modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/{MesDaoImpl.java => MesBomDaoImpl.java} (97%) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProduceSnService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProduceSnService.java index a935f7b..9aa6a4e 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProduceSnService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProduceSnService.java @@ -16,4 +16,7 @@ public interface IMesProduceSnService extends IBaseMesService { @ApiOperation(value = "根据条码查询产品条码表") List findMesProduceSn(String organizeCode, String sn); + + @ApiOperation(value = "查询条码信息") + List findMesProduceSnList(String organizeCode, List snList); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProductionRecordService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProductionRecordService.java index fc6c76d..992ea9c 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProductionRecordService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProductionRecordService.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; +import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel; import io.swagger.annotations.ApiOperation; import java.util.List; @@ -20,4 +21,7 @@ public interface IMesProductionRecordService extends IBaseMesService findMesProductionRecord(String organizeCode, String sn); ListPager queryRecordGroupByPartNoWorkCellCode(MesProductionRecord mesProductionRecord, Pager pager); + + @ApiOperation(value = "线边库存报表") + ListPager queryMesProductionOffLine(MesProductionRecordModel mesProductionRecordModel,Pager pager); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesShippingOrderManagementDetailService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesShippingOrderManagementDetailService.java index c86090e..3c77082 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesShippingOrderManagementDetailService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesShippingOrderManagementDetailService.java @@ -4,6 +4,9 @@ import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; +import io.swagger.annotations.ApiOperation; + +import java.util.List; /** * @Description: @@ -15,4 +18,9 @@ public interface IMesShippingOrderManagementDetailService extends IBaseMesServic public ListPager queryDetailGroupByPartNo(MesShippingOrderManagementDetail bean, Pager pager); + @ApiOperation("查询发运单明细") + ListPager queryMesShippingDetailsByPager(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel, Pager pager); + + @ApiOperation("发运退回") + void doShippingBack(Long[] idList,String organizeCode,String userName); } diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesMesLoadingListDetail.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesMesLoadingListDetail.groovy index eb0c734..6b0c7b7 100644 --- a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesMesLoadingListDetail.groovy +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesMesLoadingListDetail.groovy @@ -1,4 +1,6 @@ - +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack +import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingList import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper @@ -29,23 +31,20 @@ class MesToPiscesMesLoadingListDetail { if (srcData == null || srcData.size() == 0) { return srcData } - Map mesProductionRecordMap = new HashMap<>(); + String organizeCode = mapper.getOrganizeCode(); + Map mesProductionRecordMap = new HashMap<>(); Map mesLoadingListMap = new HashMap<>(); for (Map rowMap : srcData) { //发运单 - if (!StringUtils.isEmpty(rowMap.get("shipping_id"))) { - long shippingId = Long.parseLong(String.valueOf(rowMap.get("shipping_id"))); - if (Objects.isNull(mesProductionRecordMap) || !mesProductionRecordMap.containsKey(shippingId)) { - mesProductionRecordMap.put(shippingId, mesShippingRepository.getById(shippingId)) - } - MesShippingOrderManagement mesProductionRecord = mesProductionRecordMap.get(shippingId) - if (!Objects.isNull(mesProductionRecord)) { - rowMap.put("SHIPPING_FID", mesProductionRecord.getFid()) + if (!StringUtils.isEmpty(rowMap.get("shipping_code"))) { + MesShippingOrderManagement mesShippingOrderManagement = getShippingCode(organizeCode,String.valueOf(rowMap.get("shipping_code")),mesProductionRecordMap) + if (!Objects.isNull(mesShippingOrderManagement)) { + rowMap.put("SHIPPING_FID", mesShippingOrderManagement.getFid()) } else { rowMap.put("SHIPPING_FID", null) - LOGGER.info("发运单id:{},信息不存在", String.valueOf(rowMap.get(rowMap.get("shipping_id")))) + LOGGER.info("发运单shipping_code:{},信息不存在", String.valueOf(rowMap.get("shipping_code"))) } }else{ rowMap.put("SHIPPING_FID", null) @@ -61,7 +60,7 @@ class MesToPiscesMesLoadingListDetail { rowMap.put("LOADING_LIST_FID", mesLoadingList.getFid()) } else { rowMap.put("LOADING_LIST_FID", null) - LOGGER.info("装车id:{},信息不存在", String.valueOf(rowMap.get(rowMap.get("pid")))) + LOGGER.info("装车id:{},信息不存在", String.valueOf(rowMap.get("pid"))) } }else{ rowMap.put("LOADING_LIST_FID", null) @@ -70,4 +69,14 @@ class MesToPiscesMesLoadingListDetail { return srcData; } + + private MesShippingOrderManagement getShippingCode(String organizeCode, String shippingCode, Map mesShippingOrderManagementMap) { + if (Objects.isNull(mesShippingOrderManagementMap) || !mesShippingOrderManagementMap.containsKey(shippingCode)) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(shippingCode, "shippingCode", ddlPackBean); + mesShippingOrderManagementMap.put(shippingCode, mesShippingRepository.getByProperty(ddlPackBean)) + } + return mesShippingOrderManagementMap.get(shippingCode); + } + } \ No newline at end of file diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesMesShippingDetail.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesMesShippingDetail.groovy index f8b4953..7c6a304 100644 --- a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesMesShippingDetail.groovy +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesMesShippingDetail.groovy @@ -58,7 +58,7 @@ class MesToPiscesMesShippingDetail { rowMap.put("SHIPPING_FID", mesProductionRecord.getFid()) } else { rowMap.put("SHIPPING_FID", null) - LOGGER.info("发运单id:{},信息不存在", String.valueOf(rowMap.get(rowMap.get("pid")))) + LOGGER.info("发运单id:{},信息不存在", String.valueOf(rowMap.get("pid"))) } }else{ rowMap.put("SHIPPING_FID", null) diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesProductionAssembly.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesProductionAssembly.groovy index deb8a58..f5c2f33 100644 --- a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesProductionAssembly.groovy +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesProductionAssembly.groovy @@ -73,7 +73,7 @@ class MesToPiscesProductionAssembly { if (!Objects.isNull(mesProductionRecord)) { rowMap.put("PRODUCTION_LOG_FID", mesProductionRecord.getFid()) } else { - LOGGER.info("原材料容器id:{},信息不存在", String.valueOf(rowMap.get(rowMap.get("production_record_id")))) + LOGGER.info("原材料容器id:{},信息不存在", String.valueOf(rowMap.get("production_record_id"))) } }else{ rowMap.put("PRODUCTION_LOG_FID", null) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java index d0ac770..440c4d6 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java @@ -1,9 +1,11 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; import cn.estsh.i3plus.ext.mes.api.base.IMesEnumExtService; +import cn.estsh.i3plus.ext.mes.api.base.IMesShippingOrderManagementDetailService; import cn.estsh.i3plus.ext.mes.api.busi.report.IMesYfReportService; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; import cn.estsh.i3plus.platform.common.tool.ExcelTool; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; @@ -53,6 +55,9 @@ public class BaseExtDataController extends MesBaseController { private IMesYfReportService mesYfReportService; @Autowired + private IMesShippingOrderManagementDetailService mesShippingOrderManagementDetailService; + + @Autowired private EntityManager entityManager; @GetMapping(value = "/enumlist") @@ -124,6 +129,10 @@ public class BaseExtDataController extends MesBaseController { mesClass = MesProductionRecord.class; //查询数据 listPager = mesYfReportService.queryMesProductionRecord(JSON.parseObject(exportDataModel.getSelectWhere(), MesProductionRecord.class),null);break; + case MES_SHIPPING_DETAIL_DATA_EXPORT: + mesClass = MesShippingOrderManagementDetailModel.class; + //查询数据 + listPager = mesShippingOrderManagementDetailService.queryMesShippingDetailsByPager(JSON.parseObject(exportDataModel.getSelectWhere(), MesShippingOrderManagementDetailModel.class),null);break; default: break; } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java index 93a7e90..a434b2d 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; import cn.estsh.i3plus.ext.mes.api.base.IMesShippingOrderManagementDetailService; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; @@ -12,9 +13,9 @@ import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @Api("发运单管理明细") @RestController @@ -40,4 +41,30 @@ public class MesShippingOrderManagementDetailController extends BaseMesControlle } } + @ApiOperation(value = "发运单明细", notes = "发运单明细") + @GetMapping("/master/query") + public ResultBean queryMesShippingDetailsByPager(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel, Pager pager) { + try { + return ResultBean.success("查询成功").setListPager(shippingOrderManagementDetailService.queryMesShippingDetailsByPager(mesShippingOrderManagementDetailModel,pager)); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @ApiOperation(value = "发运退回", notes = "发运退回") + @PutMapping("/doShippingBack") + public ResultBean doShippingBack(Long[] idList) { + try { + shippingOrderManagementDetailService.doShippingBack(idList,AuthUtil.getOrganizeCode(),AuthUtil.getSessionUser().getUserName()); + return ResultBean.success("退回成功"); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java index c91616f..19796db 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java @@ -1,11 +1,13 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.report; +import cn.estsh.i3plus.ext.mes.api.base.IMesProductionRecordService; import cn.estsh.i3plus.ext.mes.api.busi.report.IMesYfReportService; import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; +import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel; import cn.estsh.impp.framework.base.controller.MesBaseController; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; @@ -33,6 +35,9 @@ public class MesBusiReportController extends MesBaseController { @Autowired private IMesYfReportService mesYfReportService; + @Autowired + private IMesProductionRecordService mesProductionRecordService; + @ApiOperation(value = "查询追溯报表", notes = "查询追溯报表") @GetMapping("/traceability/find") public ResultBean findTraceabilityReport(MesProduceSn mesProduceSn) { @@ -72,4 +77,22 @@ public class MesBusiReportController extends MesBaseController { } } + @ApiOperation(value = "线边库存报表", notes = "线边库存报表") + @GetMapping("/mesProductionOffLine/query") + public ResultBean queryMesProductionOffLine(MesProductionRecordModel mesProductionRecordModel, Pager pager) { + try { + ValidatorBean.beginValid(mesProductionRecordModel) + .notNull("partNo", mesProductionRecordModel.getPartNo()) + .notNull("organizeCode", mesProductionRecordModel.getOrganizeCode()) + .notNull("onLineWorkCellCode",mesProductionRecordModel.getOnLineWorkCellCode()) + .notNull("offLineWorkCellCode",mesProductionRecordModel.getOffLineWorkCellCode()) + .notNull("createDateTimeStart",mesProductionRecordModel.getCreateDateTimeStart()) + .notNull("createDateTimeEnd",mesProductionRecordModel.getCreateDateTimeEnd()); + return ResultBean.success("查询成功").setListPager(mesProductionRecordService.queryMesProductionOffLine(mesProductionRecordModel,pager)); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesProdRuleNosortCfgDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesProdRuleNosortCfgDao.java index 86a4a98..c1c5142 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesProdRuleNosortCfgDao.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesProdRuleNosortCfgDao.java @@ -9,4 +9,6 @@ public interface IMesProdRuleNosortCfgDao { List findMesProdRuleNosortCfgByWorkCenterCode(String workCenterCode, String partNo, String organizeCode); + List findMesProdRuleNosortCfgByWorkCellCode(String workCellCode, String partNo, String organizeCode); + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesShippingOrderManagementDetailDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesShippingOrderManagementDetailDao.java index 9cb4ae2..7053b64 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesShippingOrderManagementDetailDao.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesShippingOrderManagementDetailDao.java @@ -1,8 +1,10 @@ package cn.estsh.i3plus.ext.mes.apiservice.dao; import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; +import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; +import io.swagger.annotations.ApiOperation; import java.util.List; @@ -18,4 +20,8 @@ public interface IMesShippingOrderManagementDetailDao { int queryOrderDetailGroupByPartCount(MesShippingOrderManagementDetail detail); List queryOrderDetailGroupByPartInfo(MesShippingOrderManagementDetail detail, Pager pager); + + @ApiOperation("查询发运单明细") + ListPager queryMesShippingDetailsByPager(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel, Pager pager); + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesBomDaoImpl.java similarity index 97% rename from modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesDaoImpl.java rename to modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesBomDaoImpl.java index ac974cb..3adc1fe 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesBomDaoImpl.java @@ -20,7 +20,7 @@ import java.util.List; @Service @Slf4j -public class MesDaoImpl implements IMesBomDao { +public class MesBomDaoImpl implements IMesBomDao { @Autowired private EntityManager entityManager; diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesLoadingListDetailDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesLoadingListDetailDaoImpl.java index 19ffe74..5b2a1c8 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesLoadingListDetailDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesLoadingListDetailDaoImpl.java @@ -41,8 +41,8 @@ public class MesLoadingListDetailDaoImpl implements IMesLoadingListDetailDao { hql.append(" from mes_loading_list as mll"); hql.append(" inner join mes_loading_list_detail as mlld on mll.id = mlld.pid"); hql.append(" and mll.organize_code = mlld.organize_code and mll.is_deleted = mlld.is_deleted and mll.is_valid = mlld.is_valid "); - hql.append(" inner join mes_shipping as ms on mlld.shipping_id = ms.id "); - hql.append(" and mlld.organize_code = ms.organize_code and mlld.is_deleted = ms.is_deleted and mlld.is_valid = ms.is_valid "); + hql.append(" left join mes_shipping as ms on mlld.shipping_code = ms.shipping_code "); + hql.append(" and ((mlld.organize_code = ms.organize_code and mlld.is_deleted = ms.is_deleted and mlld.is_valid = ms.is_valid) or (ms.id is null)) "); hql.append(" where mll.organize_code = :organizeCode "); hql.append(" and mll.is_deleted = :isDeleted "); hql.append(" and mll.is_valid = :isValid "); @@ -109,8 +109,8 @@ public class MesLoadingListDetailDaoImpl implements IMesLoadingListDetailDao { hql.append(" from mes_loading_list as mll"); hql.append(" inner join mes_loading_list_detail as mlld on mll.id = mlld.pid"); hql.append(" and mll.organize_code = mlld.organize_code and mll.is_deleted = mlld.is_deleted and mll.is_valid = mlld.is_valid "); - hql.append(" inner join mes_shipping as ms on mlld.shipping_id = ms.id "); - hql.append(" and mlld.organize_code = ms.organize_code and mlld.is_deleted = ms.is_deleted and mlld.is_valid = ms.is_valid "); + hql.append(" left join mes_shipping as ms on mlld.shipping_code = ms.shipping_code "); + hql.append(" and ((mlld.organize_code = ms.organize_code and mlld.is_deleted = ms.is_deleted and mlld.is_valid = ms.is_valid) or (ms.id is null)) "); hql.append(" where mll.organize_code = :organizeCode "); hql.append(" and mll.is_deleted = :isDeleted "); hql.append(" and mll.is_valid = :isValid "); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesProdRuleNosortCfgDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesProdRuleNosortCfgDaoImpl.java index e7db34c..7441f61 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesProdRuleNosortCfgDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesProdRuleNosortCfgDaoImpl.java @@ -35,4 +35,22 @@ public class MesProdRuleNosortCfgDaoImpl implements IMesProdRuleNosortCfgDao { return query.getResultList(); } + + @Override + public List findMesProdRuleNosortCfgByWorkCellCode(String workCellCode, String partNo, String organizeCode) { + StringBuffer hql = new StringBuffer("select ns from MesProdRuleNosortCfg ns" + + " left join MesWcEquipment we on ns.equipmentCode = we.equipmentCode " + + " where ns.isDeleted=:isDeleted and ns.isValid = :isValid and ns.organizeCode = :organizeCode " + + " and we.isDeleted=:isDeleted and we.isValid = :isValid and we.organizeCode = :organizeCode " + + " and we.workCellCode = :workCellCode and ns.inPartNo = :inPartNo order by ns.createDatetime desc"); + + Query query = entityManager.createQuery(hql.toString(), MesProdRuleNosortCfg.class); + query.setParameter("organizeCode", organizeCode); + query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + query.setParameter("workCellCode", workCellCode); + query.setParameter("inPartNo", partNo); + + return query.getResultList(); + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesShippingOrderManagementDetailDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesShippingOrderManagementDetailDaoImpl.java index 32532d4..3cbd941 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesShippingOrderManagementDetailDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesShippingOrderManagementDetailDaoImpl.java @@ -2,9 +2,13 @@ package cn.estsh.i3plus.ext.mes.apiservice.daoimpl; import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesShippingOrderManagementDetailDao; import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; +import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; +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; @@ -15,6 +19,7 @@ import javax.persistence.EntityManager; import javax.persistence.Query; import java.util.ArrayList; import java.util.List; +import java.util.Objects; /** * @Description :SAP生产计划 @@ -98,4 +103,88 @@ public class MesShippingOrderManagementDetailDaoImpl implements IMesShippingOrde return modelList; } + + @Override + public ListPager queryMesShippingDetailsByPager(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel, Pager pager) { + StringBuilder dataHql = new StringBuilder(); + dataHql.append(" select new ").append(MesShippingOrderManagementDetailModel.class.getName()).append("(m,d)"); + //共用HQL + String commonHql = getCommonHql(mesShippingOrderManagementDetailModel); + //行数 + Query countQuery = entityManager.createQuery("select count(1) " + commonHql); + setParameter(mesShippingOrderManagementDetailModel, countQuery); + //数据 + Query dataQuery = entityManager.createQuery(dataHql.append(commonHql).append(getOrderBy(mesShippingOrderManagementDetailModel)).toString(), MesShippingOrderManagementDetailModel.class); + setParameter(mesShippingOrderManagementDetailModel, dataQuery); + if (Objects.isNull(pager)) return new ListPager<>(dataQuery.getResultList(), pager); + + int count = Integer.parseInt(String.valueOf(countQuery.getSingleResult())); + if (count <= 0) return new ListPager<>(new ArrayList<>(), pager); + pager = PagerHelper.getPager(pager, count); + dataQuery.setFirstResult(pager.getStartRow()).setMaxResults(pager.getPageSize()); + return new ListPager<>(dataQuery.getResultList(), pager); + } + + private void setParameter(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel, Query query) { + query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + query.setParameter("organizeCode", mesShippingOrderManagementDetailModel.getOrganizeCode()); + query.setParameter("status", MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue()); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getShippingType())) + query.setParameter("shippingType", mesShippingOrderManagementDetailModel.getShippingType()); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getStartScanTimeStart())) + query.setParameter("startScanTimeStart", mesShippingOrderManagementDetailModel.getStartScanTimeStart()); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getStartScanTimeEnd())) + query.setParameter("startScanTimeEnd", mesShippingOrderManagementDetailModel.getStartScanTimeEnd()); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getEndScanTimeStart())) + query.setParameter("endScanTimeStart", mesShippingOrderManagementDetailModel.getEndScanTimeStart()); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getEndScanTimeEnd())) + query.setParameter("endScanTimeEnd", mesShippingOrderManagementDetailModel.getEndScanTimeEnd()); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getPublishTimeStart())) + query.setParameter("publishTimeStart", mesShippingOrderManagementDetailModel.getPublishTimeStart()); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getPublishTimeEnd())) + query.setParameter("publishTimeEnd", mesShippingOrderManagementDetailModel.getPublishTimeEnd()); + } + + private String getOrderBy(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel) { + StringBuilder orderBy = new StringBuilder(); + if (StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getOrderByParam()) || StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getAscOrDesc())) { + mesShippingOrderManagementDetailModel.setOrderByParam("createDatetime"); + mesShippingOrderManagementDetailModel.setAscOrDesc(CommonEnumUtil.ASC_OR_DESC.DESC.getValue()); + } + return orderBy.append(" order by d.").append(mesShippingOrderManagementDetailModel.getOrderByParam()).append(" ").append(CommonEnumUtil.ASC_OR_DESC.DESC.getValue() == mesShippingOrderManagementDetailModel.getAscOrDesc() ? "desc" : "asc").toString(); + } + + private String getCommonHql(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel) { + StringBuilder commonHql = new StringBuilder(); + commonHql.append(" from MesShippingOrderManagement m left join MesShippingOrderManagementDetail d on m.id = d.pid"); + commonHql.append(" where m.isDeleted=:isDeleted and m.isValid = :isValid and m.organizeCode = :organizeCode "); + commonHql.append(" and d.isDeleted=:isDeleted and d.isValid = :isValid and d.organizeCode = :organizeCode "); + commonHql.append(" and d.status = :status "); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getShippingCode())) + commonHql.append(" and m.shippingCode like '%").append(mesShippingOrderManagementDetailModel.getShippingCode()).append("%' "); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getBarcode())) + commonHql.append(" and d.barcode like '%").append(mesShippingOrderManagementDetailModel.getBarcode()).append("%' "); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getPartNo())) + commonHql.append(" and d.partNo like '%").append(mesShippingOrderManagementDetailModel.getPartNo()).append("%' "); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getCustPartNo())) + commonHql.append(" and d.custPartNo like '%").append(mesShippingOrderManagementDetailModel.getCustPartNo()).append("%' "); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getShippingType())) + commonHql.append(" and m.shippingType = :shippingType "); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getCustCode())) + commonHql.append(" and m.custCode like '%").append(mesShippingOrderManagementDetailModel.getCustCode()).append("%' "); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getStartScanTimeStart())) + commonHql.append(" and m.startScanTime >= :startScanTimeStart "); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getStartScanTimeEnd())) + commonHql.append(" and m.startScanTime <= :startScanTimeEnd "); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getEndScanTimeStart())) + commonHql.append(" and m.endScanTime >= :endScanTimeStart "); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getEndScanTimeEnd())) + commonHql.append(" and m.endScanTime <= :endScanTimeEnd "); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getPublishTimeStart())) + commonHql.append(" and m.publishTime >= :publishTimeStart "); + if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getPublishTimeEnd())) + commonHql.append(" and m.publishTime <= :publishTimeEnd "); + return commonHql.toString(); + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProduceSnServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProduceSnServiceImpl.java index 5d09ee9..d474b1a 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProduceSnServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProduceSnServiceImpl.java @@ -2,6 +2,8 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesProduceSnService; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; +import cn.estsh.i3plus.ext.mes.pojo.util.OverwriteStringJoin; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; @@ -11,6 +13,7 @@ import org.springframework.util.CollectionUtils; import java.util.Comparator; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -34,4 +37,15 @@ public class MesProduceSnServiceImpl extends BaseMesService implem } return produceSnList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesProduceSn::getCreateDatetime).reversed()).collect(Collectors.toList()); } + + @Override + public List findMesProduceSnList(String organizeCode, List snList) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(snList, "productSn", packBean); + List produceSnList = baseRDao.findByHqlWhere(packBean); + if (CollectionUtils.isEmpty(produceSnList)) { + MesException.throwMesBusiException("条码【%s】信息不存在", OverwriteStringJoin.join(MesExtConstWords.COMMA, snList)); + } + return produceSnList.stream().filter(Objects::nonNull).sorted(Comparator.comparing(MesProduceSn::getCreateDatetime).reversed()).collect(Collectors.toList()); + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java index f2f73f6..8014fe6 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java @@ -1,9 +1,12 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; +import cn.estsh.i3plus.ext.mes.api.base.IMesProdRuleNosortCfgService; import cn.estsh.i3plus.ext.mes.api.base.IMesProductionRecordService; +import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesProdRuleNosortCfgDao; import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanUtil; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.util.OverwriteStringJoin; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; @@ -11,10 +14,16 @@ import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.util.StringUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesPart; +import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; +import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel; +import cn.estsh.i3plus.pojo.mes.repository.MesProdRuleNoSortCfgRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import lombok.extern.slf4j.Slf4j; import org.hibernate.SQLQuery; import org.hibernate.transform.Transformers; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -38,6 +47,9 @@ public class MesProductionRecordServiceImpl extends BaseMesService findMesProductionRecord(String organizeCode, String sn) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); @@ -56,6 +68,29 @@ public class MesProductionRecordServiceImpl extends BaseMesService queryMesProductionOffLine(MesProductionRecordModel mesProductionRecordModel, Pager pager) { + List mesProdRuleNosortCfgs = mesProdRuleNosortCfgDao.findMesProdRuleNosortCfgByWorkCellCode(mesProductionRecordModel.getOnLineWorkCellCode(), mesProductionRecordModel.getPartNo(), mesProductionRecordModel.getOrganizeCode()); + if(CollectionUtils.isEmpty(mesProdRuleNosortCfgs) || StringUtil.isEmpty(mesProdRuleNosortCfgs.iterator().next().getOutPartNo())) return new ListPager<>(new ArrayList<>(),pager); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecordModel.getOrganizeCode()); + DdlPreparedPack.getInPackArray(new Object[]{mesProdRuleNosortCfgs.iterator().next().getOutPartNo(),mesProductionRecordModel.getPartNo()},"partNo",packBean); + DdlPreparedPack.getInPackArray(new Object[]{mesProductionRecordModel.getOffLineWorkCellCode(),mesProductionRecordModel.getOnLineWorkCellCode()},"workCellCode",packBean); + DdlPreparedPack.getStringBiggerPack(mesProductionRecordModel.getCreateDateTimeStart(),"createDatetime",packBean); + DdlPreparedPack.getStringSmallerPack(mesProductionRecordModel.getCreateDateTimeEnd(),"createDatetime",packBean); + DdlPreparedPack.getNumEqualPack( MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue(),"reportStatus",packBean); + pager = PagerHelper.getPager(pager, baseRDao.findByHqlWhereCount(packBean)); + List productionRecordList = baseRDao.findByHqlWherePage(packBean,pager); + if(CollectionUtils.isEmpty(productionRecordList)) return new ListPager<>(new ArrayList<>(),pager); + List mesProductionRecordModelList = new ArrayList<>(); + MesProductionRecordModel model; + for (MesProductionRecord mesProductionRecord : productionRecordList) { + model = new MesProductionRecordModel(); + BeanUtils.copyProperties(mesProductionRecord,model); + model.setOffLineWorkCellCode(mesProductionRecord.getWorkCellCode()); + } + return new ListPager<>(mesProductionRecordModelList, pager); + } + private ListPager queryERPMaterialStockHqlPager(MesProductionRecord mesProductionRecord, Pager pager) { String org = mesProductionRecord.getOrganizeCode(); String startTime = mesProductionRecord.getCompleteDateTimeStart(); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java index b0f5bd9..6358836 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java @@ -1,20 +1,32 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; +import cn.estsh.i3plus.ext.mes.api.base.IMesProduceSnService; import cn.estsh.i3plus.ext.mes.api.base.IMesShippingOrderManagementDetailService; import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesShippingOrderManagementDetailDao; +import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; +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.Objects; +import java.util.stream.Collectors; @Service @Slf4j @@ -23,6 +35,12 @@ public class MesShippingOrderManagementDetailService extends BaseMesService(modelList, pager); } + @Override + public ListPager queryMesShippingDetailsByPager(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel, Pager pager) { + return shippingOrderManagementDetailDao.queryMesShippingDetailsByPager(mesShippingOrderManagementDetailModel, pager); + } + + @Override + public void doShippingBack(Long[] idList, String organizeCode, String userName) { + List detailList = getManagementDetails(idList, organizeCode, userName); + if (CollectionUtils.isEmpty(detailList)) return; + Map> mesProduceSnMap = getMesProduceSnMap(organizeCode, detailList); + List updateMesProduceSn = new ArrayList<>(); + for (MesShippingOrderManagementDetail detail : detailList) { + if (!mesProduceSnMap.containsKey(detail.getBarcode())) + MesException.throwMesBusiException("发运单条码[%s]信息不存在", detail.getBarcode()); + //更新条码状态为完成 + MesProduceSn mesProduceSn = mesProduceSnMap.get(detail.getBarcode()).iterator().next(); + mesProduceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()); + mesProduceSn.setSystemSyncStatus(CommonEnumUtil.FALSE); + ConvertBean.serviceModelUpdate(mesProduceSn, userName); + updateMesProduceSn.add(mesProduceSn); + //软删明细 + detail.setIsDeleted(CommonEnumUtil.VALID); + detail.setSystemSyncStatus(CommonEnumUtil.FALSE); + ConvertBean.serviceModelUpdate(detail, userName); + } + baseRDao.saveAll(detailList); + if (!updateMesProduceSn.isEmpty()) { + mesProduceSnRepository.saveAll(updateMesProduceSn); + } + } + + private Map> getMesProduceSnMap(String organizeCode, List detailList) { + List snList = detailList.stream().map(MesShippingOrderManagementDetail::getBarcode).filter(StringUtils::isEmpty).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(snList)) MesException.throwMesBusiException("发运单条码信息不存在"); + List mesProduceSnList = mesProduceSnService.findMesProduceSnList(organizeCode, snList); + return mesProduceSnList.stream().collect(Collectors.groupingBy(MesProduceSn::getProductSn)); + } + + private List getManagementDetails(Long[] idList, String organizeCode, String userName) { + if (Objects.isNull(idList) || StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(userName)) return null; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackArray(idList, "id", packBean); + List detailList = baseRDao.findByHqlWhere(packBean); + if (CollectionUtils.isEmpty(detailList) || detailList.size() <= 0) + MesException.throwMesBusiException("选择数据不存在,请检查数据"); + return detailList; + } } 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 4702273..7c951c6 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 @@ -898,8 +898,9 @@ public class MesWorkOrderService extends BaseMesService implements String sn = getStringList(mesWorkOrder); //保存数据 List mesProductOffLineList = new ArrayList<>(); + String nowTime = TimeTool.getNowTime(true); for (MesBom mesBom : mesBoms) { - mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, false)); + mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, false,nowTime)); } mesProductOffLineService.insertBatch(mesProductOffLineList); } @@ -992,8 +993,9 @@ public class MesWorkOrderService extends BaseMesService implements MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode()); //成品汇报 if (isReport) { + String nowTime = TimeTool.getNowTime(true); for (MesBom mesBom : mesBoms) { - mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, mesBom, false)); + mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, mesBom, false,nowTime)); } } //成品移库 @@ -1006,8 +1008,9 @@ public class MesWorkOrderService extends BaseMesService implements } else if (MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue() == mesWorkOrder.getWorkOrderType()) { MesProdRuleNosortCfg mesProdRuleNoSortCfg = mesProdRuleNosortCfgService.findMesProdRuleNosortCfgByWorkCenterCode(mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode()); if (MesExtEnumUtil.NOSORT_REPORT_TYPE.REPORT.getValue() == mesProdRuleNoSortCfg.getReportType()) { + String nowTime = TimeTool.getNowTime(true); for (MesBom mesBom : mesBoms) { - mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, mesBom, false)); + mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, mesBom, false,nowTime)); } } @@ -1051,8 +1054,9 @@ public class MesWorkOrderService extends BaseMesService implements List mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList()); //保存数据 List mesProductOffLineList = new ArrayList<>(); + String nowTime = TimeTool.getNowTime(true); for (MesBom mesBom : mesBoms) { - mesProductOffLineList.add(getMesProductOffLine(model, mesPart, mesProductVersion, mesBom)); + mesProductOffLineList.add(getMesProductOffLine(model, mesPart, mesProductVersion, mesBom,nowTime)); } mesProductOffLineService.insertBatch(mesProductOffLineList); } @@ -1100,7 +1104,7 @@ public class MesWorkOrderService extends BaseMesService implements workOrderLogService.saveMesWorkOrderLog(mesWorkOrder,type,qty); } - private MesProductOffLine getMesProductOffLine(WmsProductModel model, MesPart mesPart, MesProductVersion mesProductVersion, MesBom mesBom) { + private MesProductOffLine getMesProductOffLine(WmsProductModel model, MesPart mesPart, MesProductVersion mesProductVersion, MesBom mesBom,String nowTime) { MesProductOffLine newMesProductOffLine = new MesProductOffLine(); newMesProductOffLine.setReportPartNo(mesPart.getPartNo()); newMesProductOffLine.setReportPartNameRdd(mesPart.getPartName()); @@ -1122,6 +1126,7 @@ public class MesWorkOrderService extends BaseMesService implements newMesProductOffLine.setOrderNo(model.getShipOrderNo()); newMesProductOffLine.setCustNo(model.getCustNo()); newMesProductOffLine.setCustOrder(model.getCustOrderNo()); + newMesProductOffLine.setDescription(nowTime); ConvertBean.serviceModelInitialize(newMesProductOffLine, model.getUserName()); return newMesProductOffLine; @@ -1170,7 +1175,8 @@ public class MesWorkOrderService extends BaseMesService implements } //汇报 if (isItemReport) { - mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, true)); + String nowTime = TimeTool.getNowTime(true); + mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, true,nowTime)); } //移库 if (isItemMove) { @@ -1229,7 +1235,7 @@ public class MesWorkOrderService extends BaseMesService implements private MesProductOffLine creatMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, - String sn, MesBom mesBom, boolean isItemReport) { + String sn, MesBom mesBom, boolean isItemReport,String nowTime) { MesProductOffLine newMesProductOffLine; newMesProductOffLine = new MesProductOffLine(); if (!isItemReport) { @@ -1254,6 +1260,7 @@ public class MesWorkOrderService extends BaseMesService implements newMesProductOffLine.setReportType(mesWorkOrder.getReportType()); newMesProductOffLine.setSapWorkCenter(mesWorkOrder.getErpWorkCenter()); newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode()); + newMesProductOffLine.setDescription(nowTime); ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser()); return newMesProductOffLine; diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/MesShippingOrderManagementDetailModel.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/MesShippingOrderManagementDetailModel.java index f135343..1da5af2 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/MesShippingOrderManagementDetailModel.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/MesShippingOrderManagementDetailModel.java @@ -1,6 +1,10 @@ package cn.estsh.i3plus.ext.mes.pojo.model; +import cn.estsh.i3plus.pojo.base.annotation.AnnoOutputColumn; +import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement; +import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import io.swagger.annotations.ApiParam; import lombok.Data; @@ -25,4 +29,146 @@ public class MesShippingOrderManagementDetailModel { @ApiParam("计量单位") private String unit; + @ApiParam("工厂代码") + private String organizeCode; + + @ApiParam("发运单") + private String shippingCode; + + @ApiParam("状态") + @AnnoOutputColumn(refClass = MesExtEnumUtil.SHIPPING_ORDER_STATUS.class, refForeignKey = "value", value = "description") + private Integer status; + + @ApiParam("客户排序信息序号") + private Long custInfoSeq; + + @ApiParam("条码") + private String barcode; + + @ApiParam("客户订单号") + private String custOrderNo; + + @ApiParam("创建时间") + private String createDatetime; + + @ApiParam("创建人") + private String createUser; + + @ApiParam(value = "更新时间") + private String modifyDatetime; + + @ApiParam(value = "更新人") + private String modifyUser; + + @ApiParam("发运单类型") + @AnnoOutputColumn(refClass = MesExtEnumUtil.SHIPPING_ORDER_TYPE.class, refForeignKey = "value", value = "description") + private Integer shippingType; + + @ApiParam("客户代码") + private String custCode; + + @ApiParam("客户名称") + private String custName; + + @ApiParam("客户工厂代码") + private String custOrganizeCode; + + @ApiParam("客户工厂名称") + private String custOrganizeName; + + @ApiParam("开始扫描时间") + private String startScanTime; + + @ApiParam("开始扫描时间(开始)") + private String startScanTimeStart; + + @ApiParam("开始扫描时间(结束)") + private String startScanTimeEnd; + + @ApiParam("结束扫描时间") + private String endScanTime; + + @ApiParam("结束扫描时间(开始)") + private String endScanTimeStart; + + @ApiParam("结束扫描时间(结束)") + private String endScanTimeEnd; + + @ApiParam("发布时间") + private String publishTime; + + @ApiParam("发布时间(开始)") + private String publishTimeStart; + + @ApiParam("发布时间(结束)") + private String publishTimeEnd; + + @ApiParam("累计打印次数") + private Integer printCount; + + @ApiParam("最后打印用户") + private String lastPrintUser; + + @ApiParam("最后打印时间") + private String lastPrintTime; + + @ApiParam("发运组代码") + private String shippingGroupCode; + + @ApiParam("发运组名称") + private String shippingGroupName; + + @ApiParam("车系代码") + private String carSerialCode; + + @ApiParam(value = "排序属性") + public String orderByParam = ""; + + @ApiParam(value = "排序类型,1 正序,2 倒序",example = "1") + public Integer ascOrDesc; + + @ApiParam("明细id") + private Long id; + + @ApiParam("明细状态") + @AnnoOutputColumn(refClass = MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.class, refForeignKey = "value", value = "description") + private Integer detailsStatus; + + public MesShippingOrderManagementDetailModel(){ + } + + public MesShippingOrderManagementDetailModel(MesShippingOrderManagement m, MesShippingOrderManagementDetail d){ + this.shippingCode = m.getShippingCode(); + this.status = m.getStatus(); + this.detailsStatus = d.getStatus(); + this.custInfoSeq = d.getCustInfoSeq(); + this.partName = d.getPartName(); + this.partNo = d.getPartNo(); + this.barcode = d.getBarcode(); + this.custPartNo = d.getCustPartNo(); + this.planQty = d.getPlanQty(); + this.actualQty = d.getActualQty(); + this.unit = d.getUnit(); + this.custOrderNo = m.getOrderCode(); + this.createDatetime = d.getCreateDatetime(); + this.createUser = d.getCreateUser(); + this.modifyDatetime = d.getModifyDatetime(); + this.modifyUser = d.getModifyUser(); + this.shippingType = m.getShippingType(); + this.custCode = m.getCustCode(); + this.custName = m.getCustName(); + this.custOrganizeCode = m.getCustOrganizeCode(); + this.custOrganizeName = m.getCustOrganizeName(); + this.startScanTime = m.getStartScanTime(); + this.endScanTime = m.getEndScanTime(); + this.publishTime = m.getPublishTime(); + this.printCount = m.getPrintCount(); + this.lastPrintTime = m.getLastPrintTime(); + this.lastPrintUser = m.getLastPrintUser(); + this.shippingGroupCode = m.getShippingGroupCode(); + this.shippingGroupName = m.getShippingGroupName(); + this.carSerialCode = d.getCarSerialCode(); + this.id = d.getId(); + } + } diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java index 55c2d7b..552d4ee 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java @@ -117,4 +117,9 @@ public class MesWorkCenterBoardResultModel { this.partNo = partNo; } + public MesWorkCenterBoardResultModel(String serialNumber, String createDateTime) { + this.serialNumber = serialNumber; + this.createDateTime = createDateTime; + } + } From dac6a8f9ecb0ea8a10151bd51c37e0f76aa75ddd Mon Sep 17 00:00:00 2001 From: gsz Date: Tue, 20 Aug 2024 16:54:58 +0800 Subject: [PATCH 41/46] =?UTF-8?q?42102=20=E7=82=B9=E6=A3=80=E5=8D=95?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=A2=9E=E5=8A=A0=E6=89=93=E5=8D=B0=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/busi/MesSpotCheckOrderService.java | 25 +++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java index 2bf7f1b..d00f1dd 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java @@ -8,6 +8,7 @@ import cn.estsh.i3plus.ext.mes.api.busi.IMesSpotCheckOrderService; import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.BaseMesService; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.icloud.core.sdk.ICoreUtilCloud; +import cn.estsh.i3plus.mes.api.iservice.base.IStateMachineRouteDesignService; import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService; import cn.estsh.i3plus.mes.apiservice.util.DateUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; @@ -16,6 +17,8 @@ import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.platform.common.util.WmsConstWords; import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.*; @@ -68,6 +71,8 @@ public class MesSpotCheckOrderService extends BaseMesService private ICoreUtilCloud sysOrderNoRuleCloud; @Autowired + private IStateMachineRouteDesignService stateMachineRouteDesignService; + @Autowired private IMesConfigService mesConfigService; @Override public MesSpotCheckOrder insert(MesSpotCheckOrder bean) { @@ -563,8 +568,26 @@ public class MesSpotCheckOrderService extends BaseMesService DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesSpotCheckOrder.getOrganizeCode()); DdlPreparedPack.getNumEqualPack(mesSpotCheckOrder.getId(), "pid", packBean); List detailList = spotCheckOrderResultRepository.findByHqlWhere(packBean); + for (MesSpotCheckOrderResult mesSpotCheckOrderResult : detailList) { + if (mesSpotCheckOrderResult.getIsTolerance()==1){ + mesSpotCheckOrderResult.setIsTolerance(Integer.parseInt(mesSpotCheckOrderResult.getSpotCheckSetValue())-Integer.parseInt(mesSpotCheckOrderResult.getSpotCheckRealValue()) ); + }else { + mesSpotCheckOrderResult.setIsTolerance(0); + } + } mesSpotCheckOrder.setCheckOrderResults(detailList); - + MesRouteProcessCell routeProcessCell=new MesRouteProcessCell(); + routeProcessCell.setOrganizeCode(mesSpotCheckOrder.getOrganizeCode()); + routeProcessCell.setWorkCenterCode(mesSpotCheckOrder.getWorkCenterCode()); + routeProcessCell.setWorkCellCode(mesSpotCheckOrder.getWorkCellCode()); + Pager pager = new Pager(); + pager.setCurrentPage(0); + pager.setPageSize(50); + ListPager listPager = stateMachineRouteDesignService.queryStateMachineRouteProcessCellByPager(routeProcessCell, pager); + List routeProcessCellList = listPager.getObjectList(); + if (!CollectionUtils.isEmpty(routeProcessCellList)){ + mesSpotCheckOrder.setProcessName(routeProcessCellList.get(0).getProcessCodeName()); + } mesSpotCheckOrder.setTemplateNo(mesConfigService.getCfgValue(mesSpotCheckOrder.getOrganizeCode(), MesCommonConstant.QC_ORDER_PRINT_TEMPLATE) ); return mesSpotCheckOrder; } From 95759dd8763c2e9e014d24d7d788b4817285b9bd Mon Sep 17 00:00:00 2001 From: jun Date: Tue, 20 Aug 2024 19:00:43 +0800 Subject: [PATCH 42/46] =?UTF-8?q?42582=20=E7=BA=BF=E8=BE=B9=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...MesShippingOrderManagementDetailController.java | 6 ++- .../base/MesProductionRecordServiceImpl.java | 58 +++++++++++++++------- .../MesShippingOrderManagementDetailService.java | 4 +- 3 files changed, 47 insertions(+), 21 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java index a434b2d..f04f835 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; import cn.estsh.i3plus.ext.mes.api.base.IMesShippingOrderManagementDetailService; +import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; import cn.estsh.i3plus.pojo.base.common.Pager; @@ -15,7 +16,7 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.List; +import java.util.Objects; @Api("发运单管理明细") @RestController @@ -55,8 +56,9 @@ public class MesShippingOrderManagementDetailController extends BaseMesControlle @ApiOperation(value = "发运退回", notes = "发运退回") @PutMapping("/doShippingBack") - public ResultBean doShippingBack(Long[] idList) { + public ResultBean doShippingBack(@RequestBody Long[] idList) { try { + if(Objects.isNull(idList) || idList.length <= 0) MesException.throwMesBusiException("选择数据无效,请检查"); shippingOrderManagementDetailService.doShippingBack(idList,AuthUtil.getOrganizeCode(),AuthUtil.getSessionUser().getUserName()); return ResultBean.success("退回成功"); } catch (ImppBusiException e) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java index 8014fe6..f21ff96 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java @@ -1,12 +1,9 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; -import cn.estsh.i3plus.ext.mes.api.base.IMesProdRuleNosortCfgService; import cn.estsh.i3plus.ext.mes.api.base.IMesProductionRecordService; import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesProdRuleNosortCfgDao; import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanUtil; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; -import cn.estsh.i3plus.ext.mes.pojo.util.OverwriteStringJoin; -import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; @@ -14,11 +11,11 @@ import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.util.StringUtil; -import cn.estsh.i3plus.pojo.mes.bean.MesPart; import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel; -import cn.estsh.i3plus.pojo.mes.repository.MesProdRuleNoSortCfgRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import lombok.extern.slf4j.Slf4j; import org.hibernate.SQLQuery; @@ -33,6 +30,8 @@ import javax.persistence.Query; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @Description : 设备加工记录表 @@ -50,6 +49,9 @@ public class MesProductionRecordServiceImpl extends BaseMesService findMesProductionRecord(String organizeCode, String sn) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); @@ -72,23 +74,45 @@ public class MesProductionRecordServiceImpl extends BaseMesService queryMesProductionOffLine(MesProductionRecordModel mesProductionRecordModel, Pager pager) { List mesProdRuleNosortCfgs = mesProdRuleNosortCfgDao.findMesProdRuleNosortCfgByWorkCellCode(mesProductionRecordModel.getOnLineWorkCellCode(), mesProductionRecordModel.getPartNo(), mesProductionRecordModel.getOrganizeCode()); if(CollectionUtils.isEmpty(mesProdRuleNosortCfgs) || StringUtil.isEmpty(mesProdRuleNosortCfgs.iterator().next().getOutPartNo())) return new ListPager<>(new ArrayList<>(),pager); + //筛选下线工位的当前零件的产成条码 + List mesProduceSnList = getMesProduceSnList(mesProductionRecordModel); + if(CollectionUtils.isEmpty(mesProduceSnList)) return new ListPager<>(new ArrayList<>(),pager); + //在上线工位消耗进料条码且没有报工 DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecordModel.getOrganizeCode()); - DdlPreparedPack.getInPackArray(new Object[]{mesProdRuleNosortCfgs.iterator().next().getOutPartNo(),mesProductionRecordModel.getPartNo()},"partNo",packBean); - DdlPreparedPack.getInPackArray(new Object[]{mesProductionRecordModel.getOffLineWorkCellCode(),mesProductionRecordModel.getOnLineWorkCellCode()},"workCellCode",packBean); - DdlPreparedPack.getStringBiggerPack(mesProductionRecordModel.getCreateDateTimeStart(),"createDatetime",packBean); - DdlPreparedPack.getStringSmallerPack(mesProductionRecordModel.getCreateDateTimeEnd(),"createDatetime",packBean); - DdlPreparedPack.getNumEqualPack( MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue(),"reportStatus",packBean); - pager = PagerHelper.getPager(pager, baseRDao.findByHqlWhereCount(packBean)); - List productionRecordList = baseRDao.findByHqlWherePage(packBean,pager); - if(CollectionUtils.isEmpty(productionRecordList)) return new ListPager<>(new ArrayList<>(),pager); + DdlPreparedPack.getStringEqualPack(mesProdRuleNosortCfgs.iterator().next().getOutPartNo(),"partNo",packBean); + DdlPreparedPack.getStringEqualPack(mesProductionRecordModel.getOnLineWorkCellCode(),"workCellCode",packBean); + DdlPreparedPack.getInPackList(mesProduceSnList.stream().map(MesProduceSn::getProductSn).distinct().collect(Collectors.toList()),"productSn",packBean); + List productionRecordList = baseRDao.findByHqlWhere(packBean); + Map productionRecordMap = new HashMap<>(); + if(!CollectionUtils.isEmpty(productionRecordList)){ + for (MesProductionRecord productionRecord : productionRecordList) { + productionRecordMap.put(productionRecord.getProductSn(),productionRecord); + } + } + //数据组装 List mesProductionRecordModelList = new ArrayList<>(); MesProductionRecordModel model; - for (MesProductionRecord mesProductionRecord : productionRecordList) { + for (MesProduceSn mesProduceSn : mesProduceSnList) { model = new MesProductionRecordModel(); - BeanUtils.copyProperties(mesProductionRecord,model); - model.setOffLineWorkCellCode(mesProductionRecord.getWorkCellCode()); + BeanUtils.copyProperties(mesProduceSn,model); + if(!productionRecordMap.containsKey(mesProduceSn.getProductSn()) || (productionRecordMap.containsKey(mesProduceSn.getProductSn()) && MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue() == productionRecordMap.get(mesProduceSn.getProductSn()).getReportStatus())){ + model.setOffLineWorkCellCode(mesProduceSn.getWorkCellCode()); + mesProductionRecordModelList.add(model); + } } - return new ListPager<>(mesProductionRecordModelList, pager); + pager = PagerHelper.getPager(pager, mesProductionRecordModelList.size()); + return new ListPager<>(mesProductionRecordModelList.subList(pager.getStartRow(), + Math.min(pager.getPageSize() * pager.getCurrentPage(), mesProductionRecordModelList.size())), pager); + } + + private List getMesProduceSnList(MesProductionRecordModel mesProductionRecordModel) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecordModel.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesProductionRecordModel.getPartNo(),"partNo",packBean); + DdlPreparedPack.getStringEqualPack(mesProductionRecordModel.getOffLineWorkCellCode(),"workCellCode",packBean); + DdlPreparedPack.getStringBiggerPack(mesProductionRecordModel.getCreateDateTimeStart(),"createDatetime",packBean); + DdlPreparedPack.getStringSmallerPack(mesProductionRecordModel.getCreateDateTimeEnd(),"createDatetime",packBean); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue(),"snStatus",packBean); + return mesProduceSnRepository.findByHqlWhere(packBean); } private ListPager queryERPMaterialStockHqlPager(MesProductionRecord mesProductionRecord, Pager pager) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java index 6358836..3919fe0 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java @@ -67,7 +67,7 @@ public class MesShippingOrderManagementDetailService extends BaseMesService detailList = getManagementDetails(idList, organizeCode, userName); - if (CollectionUtils.isEmpty(detailList)) return; + if (CollectionUtils.isEmpty(detailList)) MesException.throwMesBusiException("选择数据无效,请检查"); Map> mesProduceSnMap = getMesProduceSnMap(organizeCode, detailList); List updateMesProduceSn = new ArrayList<>(); for (MesShippingOrderManagementDetail detail : detailList) { @@ -91,7 +91,7 @@ public class MesShippingOrderManagementDetailService extends BaseMesService> getMesProduceSnMap(String organizeCode, List detailList) { - List snList = detailList.stream().map(MesShippingOrderManagementDetail::getBarcode).filter(StringUtils::isEmpty).collect(Collectors.toList()); + List snList = detailList.stream().map(MesShippingOrderManagementDetail::getBarcode).collect(Collectors.toList()); if (CollectionUtils.isEmpty(snList)) MesException.throwMesBusiException("发运单条码信息不存在"); List mesProduceSnList = mesProduceSnService.findMesProduceSnList(organizeCode, snList); return mesProduceSnList.stream().collect(Collectors.groupingBy(MesProduceSn::getProductSn)); From 2935bd40f785b8d380e08176a57da85803fd776f Mon Sep 17 00:00:00 2001 From: jun Date: Wed, 21 Aug 2024 14:36:06 +0800 Subject: [PATCH 43/46] =?UTF-8?q?=E6=B1=87=E6=80=BB=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=8F=91=E9=80=81=E7=BB=99SAP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java | 2 +- .../ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java | 10 +++++----- .../serviceimpl/base/MesWorkOrderService.java | 17 ++++++++++++++--- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java index 65dc524..eafd358 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java @@ -13,5 +13,5 @@ import java.util.List; **/ public interface IMesWorkOrderDao { - List sumMesWorkOrderQtyToSap(String organizeCode, List statusList,String lastSendToSapTime); + List sumMesWorkOrderQtyToSap(String organizeCode, List statusList,List partNoList); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java index 5a1f70f..5845d92 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java @@ -31,18 +31,18 @@ public class MesWorkOrderDaoImpl implements IMesWorkOrderDao { private EntityManager entityManager; @Override - public List sumMesWorkOrderQtyToSap(String organizeCode, List statusList,String lastSendToSapTime) { - StringBuffer hql = new StringBuffer("select organize_Code as organizeCode,part_No as partNo, plan_Start_Time as planStartTime, product_Version as productVersion, " + + public List sumMesWorkOrderQtyToSap(String organizeCode, List statusList,List partNoList) { + StringBuffer hql = new StringBuffer("select organize_Code as organizeCode,part_No as partNo, date_format(plan_start_time, '%Y-%m-%d' ) as planStartTime, product_Version as productVersion, " + " sum( CASE WHEN work_Order_Status = 40 THEN complete_Qty ELSE qty END ) AS qty " + " from Mes_Work_Order where is_Deleted=:isDeleted and is_Valid = :isValid and organize_Code = :organizeCode " + - " and work_order_type = 20 and order_flag !='P' and modify_date_time >= :modifyDatetime "+ - " and work_Order_Status not in(:statusList) group by organize_code,part_No, date_format( plan_Start_Time, '%Y-%m-%d' ), product_Version "); + " and work_order_type = 20 and order_flag !='P' and part_no in (:partNoList) "+ + " and work_Order_Status not in(:statusList) group by organize_code,part_No, date_format(plan_start_time, '%Y-%m-%d' ), product_Version "); Query query = entityManager.createNativeQuery(hql.toString()); query.setParameter("organizeCode", organizeCode); query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); query.setParameter("statusList", statusList); - query.setParameter("modifyDatetime", lastSendToSapTime); + query.setParameter("partNoList", partNoList); query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); List> hashMaps = query.getResultList(); 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 7c951c6..c47d6fa 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 @@ -5,6 +5,7 @@ import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesWorkOrderDao; import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanMapUtilsExt; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService; import cn.estsh.i3plus.mes.apiservice.util.DateUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; @@ -39,6 +40,7 @@ import org.springframework.util.StringUtils; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; @Service @Slf4j @@ -1271,8 +1273,17 @@ public class MesWorkOrderService extends BaseMesService implements List statusList = new ArrayList<>(); statusList.add(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue()); // statusList.add(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue()); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue(),MesExtConstWords.WORK_ORDER_TYPE,packBean); + DdlPreparedPack.getStringNoEqualPack(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue(),"orderFlag",packBean); + DdlPreparedPack.getNotInPack(statusList, MesExtConstWords.WORK_ORDER_STATUS, packBean); + DdlPreparedPack.getStringBiggerPack(lastSendToSapTime,"modifyDatetime",packBean); + List mesWorkOrderList = mesWorkOrderRDao.findByHqlWhere(packBean); + if(CollectionUtils.isEmpty(mesWorkOrderList)) return null; + List partNoList = mesWorkOrderList.stream().map(MesWorkOrder::getPartNo).filter(partNo -> !StringUtil.isEmptyAndNull(partNo)).distinct().collect(Collectors.toList()); + if(CollectionUtils.isEmpty(partNoList)) return null; //查询汇总工单数量 - return mesWorkOrderDao.sumMesWorkOrderQtyToSap(organizeCode, statusList,lastSendToSapTime); + return mesWorkOrderDao.sumMesWorkOrderQtyToSap(organizeCode, statusList,partNoList); } @Override @@ -1415,7 +1426,7 @@ public class MesWorkOrderService extends BaseMesService implements return mesWorkOrderList; } - + public List saveMesWorkOrderToWms(MesWorkOrder mesWorkOrder, List mesBomList) { List mesWorkOrderToWmsList = new ArrayList<>(); MesWorkOrderToWms mesWorkOrderToWms = null; @@ -1462,7 +1473,7 @@ public class MesWorkOrderService extends BaseMesService implements // } // mesProductOffLineService.insertBatch(mesProductOffLineList); - //保存数据 + //保存数据 List mesProductOffLineList = new ArrayList<>(); MesProductOffLine newMesProductOffLine; for (MesProductionRecord produceSn : mesProductionRecordList) { From d4a3b131df51fe2cf4649cefc46db9f675160c69 Mon Sep 17 00:00:00 2001 From: jun Date: Wed, 21 Aug 2024 16:47:25 +0800 Subject: [PATCH 44/46] =?UTF-8?q?42660=20SAP=E7=94=9F=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=8E=87=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../groovy/Mes2Pisces/MesToPiscesMesJisShipping.groovy | 16 ++++++++++++++++ .../apiservice/serviceimpl/base/MesWorkOrderService.java | 2 ++ 2 files changed, 18 insertions(+) diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesMesJisShipping.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesMesJisShipping.groovy index 4f359d3..d6f1ef4 100644 --- a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesMesJisShipping.groovy +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesMesJisShipping.groovy @@ -1,8 +1,11 @@ +import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant +import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService import cn.estsh.i3plus.platform.common.tool.MathOperation import cn.estsh.i3plus.pojo.base.bean.DdlPackBean import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper +import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementRepository import org.slf4j.Logger import org.slf4j.LoggerFactory @@ -23,6 +26,9 @@ class MesToPiscesMesJisShipping { @Autowired private MesShippingOrderManagementRepository mesShippingOrderManagementRepository; + @Autowired + private ISyncFuncService syncFuncService; + def filterData(MesInterfaceDataMapper mapper, List> srcData) throws Exception { if (srcData == null || srcData.size() == 0) { return srcData @@ -47,6 +53,16 @@ class MesToPiscesMesJisShipping { destData.put(key, rowMap) } } + //TRANS_ID赋值 + if(mapper.getDestColumnMapping().contains("TRANS_ID")){ + GenSerialNoModel orderSeqSerialNoModel = new GenSerialNoModel("JIS_SHIPPING_TRANS_ID"); + List resultList = syncFuncService.syncSerialNo(orderSeqSerialNoModel.organizeCode(organizeCode), "MES2PISCES发运单", organizeCode, destData.size()).getResultList(); + int index = 0; + for (Map rowMap : destData.values()) { + rowMap.put("TRANS_ID",resultList.get(index)); + index++; + } + } return new ArrayList<>(destData.values()); } 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 c47d6fa..5147863 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 @@ -1257,6 +1257,7 @@ public class MesWorkOrderService extends BaseMesService implements newMesProductOffLine.setUnit(mesBom.getUnit()); newMesProductOffLine.setItemUnit(mesBom.getItemUnit()); newMesProductOffLine.setWorkOrderNo(mesWorkOrder.getWorkOrderNo()); + newMesProductOffLine.setWorkOrderType(mesWorkOrder.getWorkOrderType()); newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode()); newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode()); newMesProductOffLine.setReportType(mesWorkOrder.getReportType()); @@ -1493,6 +1494,7 @@ public class MesWorkOrderService extends BaseMesService implements newMesProductOffLine.setUnit(mesBom.getUnit()); newMesProductOffLine.setItemUnit(mesBom.getItemUnit()); newMesProductOffLine.setWorkOrderNo(mesWorkOrderDb.getWorkOrderNo()); + newMesProductOffLine.setWorkOrderType(mesWorkOrderDb.getWorkOrderType()); newMesProductOffLine.setWorkCenterCode(mesWorkOrderDb.getWorkCenterCode()); newMesProductOffLine.setWorkCellCode(mesWorkOrderDb.getWorkCellCode()); newMesProductOffLine.setReportType(mesWorkOrderDb.getReportType()); From 3006fc0d1329f1ccb1c0861b7083bc84639b98cf Mon Sep 17 00:00:00 2001 From: gsz Date: Thu, 22 Aug 2024 14:54:24 +0800 Subject: [PATCH 45/46] =?UTF-8?q?42692=20MES:=E5=8F=AF=E7=96=91=E5=93=81?= =?UTF-8?q?=E6=B1=87=E6=80=BB=E9=80=BB=E8=BE=91=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/apiservice/schedulejob/MesQmsScrapJob.java | 2 +- .../mes/apiservice/schedulejob/MesQmsSuspiciousJob.java | 17 +++++++++++++---- .../apiservice/serviceimpl/base/MesQmsScrapService.java | 5 +++-- .../serviceimpl/base/MesQmsSuspiciousService.java | 16 ++++++++++++++-- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsScrapJob.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsScrapJob.java index 33d761b..e48673c 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsScrapJob.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsScrapJob.java @@ -81,7 +81,7 @@ public class MesQmsScrapJob extends BaseMesScheduleJob { List mesPartInspectionList = partInspectionRepository.findByHqlWhere(packBean); if (!CollectionUtils.isEmpty(mesPartInspectionList)) { - qmsScrapService.doQmsScrapByPartInspection(mesPartInspectionList,organizeCode); + qmsScrapService.doQmsScrapByPartInspection(mesPartInspectionList, organizeCode); for (MesPartInspection mesPartInspection : mesPartInspectionList) { mesPartInspection.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsSuspiciousJob.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsSuspiciousJob.java index d252011..9774280 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsSuspiciousJob.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsSuspiciousJob.java @@ -91,15 +91,24 @@ public class MesQmsSuspiciousJob extends BaseMesScheduleJob { if (!CollectionUtils.isEmpty(mesPartInspectionList)) { //过滤掉已经汇总的 List partInspectionList = new ArrayList<>(); - //排序取未同步的一条最早的 - Map> partMap = mesPartInspectionList.stream().collect(Collectors.groupingBy(p -> p.getSn() + "-" + p.getPartNo())); - for (Map.Entry> stringListEntry : partMap.entrySet()) { + //排序取单件逻辑未同步的一条最新的 + Map> partSnMap = mesPartInspectionList.stream() + .filter(p -> p.getSourceType() == 10) + .collect(Collectors.groupingBy(p -> p.getSn() + "-" + p.getPartNo())); + for (Map.Entry> stringListEntry : partSnMap.entrySet()) { List value = stringListEntry.getValue(); MesPartInspection next = value.stream().sorted(Comparator.comparing(MesPartInspection::getCreateDatetime).reversed()).iterator().next(); partInspectionList.add(next); } - LOGGER.info("MES可疑品汇总 ----- partInspectionList{}",partInspectionList.size()); + //批次逻辑的全部汇总数量 42692 MES:可疑品汇总逻辑更新 + Map> partMap = mesPartInspectionList.stream() + .filter(p -> p.getSourceType() == 20) + .collect(Collectors.groupingBy(MesPartInspection::getPartNo)); + for (Map.Entry> stringListEntry : partMap.entrySet()) { + partInspectionList.addAll(stringListEntry.getValue()); + } + LOGGER.info("MES可疑品汇总 ----- partInspectionList{}", partInspectionList.size()); qmsSuspiciousService.doQmsSuspiciousByPartInspection(partInspectionList, organizeCode); for (MesPartInspection mesPartInspection : mesPartInspectionList) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesQmsScrapService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesQmsScrapService.java index 96b7a1c..d39b185 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesQmsScrapService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesQmsScrapService.java @@ -29,6 +29,7 @@ import java.util.stream.Collectors; public class MesQmsScrapService extends BaseMesService implements IMesQmsScrapService { @Autowired private MesPartInspectionDetailRepository partInspectionDetailRDao; + @Override protected void setPackQueryBean(MesQmsScrap bean, DdlPackBean packBean) { DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean); @@ -49,7 +50,7 @@ public class MesQmsScrapService extends BaseMesService implements I String key = stringListEntry.getKey(); List mesPartInspections = stringListEntry.getValue(); MesPartInspection next = mesPartInspections.iterator().next(); - List mesPartInspectionDetails=new ArrayList<>(); + List mesPartInspectionDetails = new ArrayList<>(); for (MesPartInspection mesPartInspection : mesPartInspections) { mesPartInspectionDetails.addAll(idDetailListMap.get(mesPartInspection.getId())); } @@ -67,7 +68,7 @@ public class MesQmsScrapService extends BaseMesService implements I mesQmsScrap.setDefectTypeName(defectTypeName); mesQmsScrap.setReponsibilityId(next.getResponsibleParty()); mesQmsScrap.setNcJudger(next.getModifyUser()); - ConvertBean.serviceModelInitialize(mesQmsScrap,"MesScrapJob"); + ConvertBean.serviceModelInitialize(mesQmsScrap, "MesScrapJob"); baseRDao.insert(mesQmsScrap); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesQmsSuspiciousService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesQmsSuspiciousService.java index 40f8c98..86aca2b 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesQmsSuspiciousService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesQmsSuspiciousService.java @@ -75,14 +75,26 @@ public class MesQmsSuspiciousService extends BaseMesService im DdlPreparedPack.getStringEqualPack(partInspection.getSn(), "sn", packBeanNew); packBeanNew.setOrderByStr(" order by createDatetime "); MesPartInspection partInspectionDao = partInspectionRepository.getByProperty(packBeanNew); + //检验日期年月日可以根据创建日期截取,批次的不用取最早出现的 String qmsTime = partInspection.getCreateDatetime().substring(0, 13) + ":00:00"; - if (!StringUtil.isEmpty(partInspectionDao)) { + if (!StringUtil.isEmpty(partInspectionDao) && partInspection.getSourceType() == MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.SINGLE.getValue()) { qmsTime = partInspectionDao.getCreateDatetime().substring(0, 13) + ":00:00"; } partInspectionNew.setInspectionDate(qmsTime); mesPartInspectionsListTime.add(partInspectionNew); } //根据时间分组发送 + // 批次的: + //A 2024-08-21 08:00 10 + //A 2024-08-21 08:00 10 + //B 2024-08-20 08:00 10 检验日期 2024-08-21 08:00 + //B 2024-08-21 08:00 10 检验日期 2024-08-21 08:00 + //单件的: + //A 2024-08-21 08:00 1 0 0 1 + // + //qms汇总表===== + //A 2024-08-21 08:00 21 0 0 1 + //B 2024-08-21 08:00 20 Map> mesPartInspectionsMap = mesPartInspectionsListTime.stream().collect(Collectors.groupingBy(MesPartInspection::getInspectionDate)); for (Map.Entry> partInspection : mesPartInspectionsMap.entrySet()) { List mesPartInspections = partInspection.getValue(); @@ -143,7 +155,7 @@ public class MesQmsSuspiciousService extends BaseMesService im mesQmsSuspicious.setReworkScrapped(0); mesQmsSuspicious.setPartNo(key); mesQmsSuspicious.setPartName(next.getPartName()); - //缺陷分类,缺陷数量JOSN格式: + //缺陷分类,缺陷数量JOSN格式:【批次&单件数量汇总时需要根据检验时间段合并】 //[{"Defect_Name":"缺陷01","Defect_Qty":1},{"Defect_Name":"缺陷02","Defect_Qty":2}] Map> listDefectMap = mesPartInspectionDetails.stream().collect(Collectors.groupingBy(MesPartInspectionDetail::getDefectTypeName)); List> defectsList = new ArrayList<>(); From 3267d04197491231ebb50a057b0f141b9c94c039 Mon Sep 17 00:00:00 2001 From: jun Date: Thu, 22 Aug 2024 17:08:49 +0800 Subject: [PATCH 46/46] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=98=A0=E5=B0=84?= =?UTF-8?q?=EF=BC=8C=E8=87=AA=E5=AE=9A=E4=B9=89=E8=84=9A=E6=9C=AC=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/base/IMesInterfaceDataMapperService.java | 13 +++++ .../mes/api/base/IMesScriptPersistenceService.java | 13 +++++ .../base/MesInterfaceDataMapperController.java | 20 +++++++ .../base/MesScriptPersistenceController.java | 20 +++++++ .../mes/apiservice/dbinterface/WmsSAPDbWriter.java | 53 +++++++---------- .../serviceimpl/base/MesEnumExtService.java | 2 + .../base/MesInterfaceDataMapperServiceImpl.java | 68 ++++++++++++++++++++++ .../base/MesScriptPersistenceServiceImpl.java | 58 ++++++++++++++++++ 8 files changed, 215 insertions(+), 32 deletions(-) create mode 100644 modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesInterfaceDataMapperService.java create mode 100644 modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesScriptPersistenceService.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesInterfaceDataMapperController.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesScriptPersistenceController.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesInterfaceDataMapperServiceImpl.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesScriptPersistenceServiceImpl.java diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesInterfaceDataMapperService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesInterfaceDataMapperService.java new file mode 100644 index 0000000..63af50d --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesInterfaceDataMapperService.java @@ -0,0 +1,13 @@ +package cn.estsh.i3plus.ext.mes.api.base; + +import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper; + +/** + * @Description : 接口数据映射 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/8/22 9:59 + * @Modify: + **/ +public interface IMesInterfaceDataMapperService extends IBaseMesService { +} diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesScriptPersistenceService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesScriptPersistenceService.java new file mode 100644 index 0000000..850a6fc --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesScriptPersistenceService.java @@ -0,0 +1,13 @@ +package cn.estsh.i3plus.ext.mes.api.base; + +import cn.estsh.i3plus.pojo.mes.bean.MesScriptPersistence; + +/** + * @Description : 动态脚本 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/8/22 11:03 + * @Modify: + **/ +public interface IMesScriptPersistenceService extends IBaseMesService { +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesInterfaceDataMapperController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesInterfaceDataMapperController.java new file mode 100644 index 0000000..984fdfc --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesInterfaceDataMapperController.java @@ -0,0 +1,20 @@ +package cn.estsh.i3plus.ext.mes.apiservice.controller.base; + +import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Description : 接口数据映射 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/8/22 9:57 + * @Modify: + **/ +@Api(description = "接口数据映射") +@RestController +@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesInterfaceDataMapper") +public class MesInterfaceDataMapperController extends BaseMesController { +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesScriptPersistenceController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesScriptPersistenceController.java new file mode 100644 index 0000000..b84ed67 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesScriptPersistenceController.java @@ -0,0 +1,20 @@ +package cn.estsh.i3plus.ext.mes.apiservice.controller.base; + +import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.pojo.mes.bean.MesScriptPersistence; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Description : 动态脚本 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/8/22 9:57 + * @Modify: + **/ +@Api(description = "动态脚本") +@RestController +@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesScriptPersistence") +public class MesScriptPersistenceController extends BaseMesController { +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/WmsSAPDbWriter.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/WmsSAPDbWriter.java index 137a467..d6a482d 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/WmsSAPDbWriter.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/WmsSAPDbWriter.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.ext.mes.apiservice.dbinterface; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.mes.apiservice.serviceimpl.engine.script.EngineScriptManager; import cn.estsh.i3plus.mes.apiservice.util.datatable.DataRow; import cn.estsh.i3plus.mes.apiservice.util.datatable.DataSet; @@ -8,17 +9,16 @@ import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.wms.dbinterface.UpdateSyncItem; -import cn.estsh.i3plus.pojo.wms.dbinterface.WmsInterfaceEnumUtil; import cn.estsh.impp.framework.boot.util.ImppRedis; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.apache.commons.lang.exception.ExceptionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.sql.Connection; @@ -85,29 +85,15 @@ public class WmsSAPDbWriter extends WmsSAPDbSyncBase { saveDestData(destDataSet); } } catch (Exception e) { - //记录sap过来的数据 超过一定的请求次数放弃数据 - if (WmsInterfaceEnumUtil.DIRECTION_TYPE.SAP2WMS.getName().equals(this.dataMapper.getGroupName())) { - if (!CollectionUtils.isEmpty(srcDataList)) { - String key = this.dataMapper.getSoftAdaptorCode() + ":" + srcDataList.get(0).get("SID"); - if (redisMes.hasKey(key)) { - int reqCount = Integer.parseInt(String.valueOf(redisMes.getObject(key))); - if (reqCount + 1 > REQ_COUNT) { - if (this.dataMapper.getUseScriptMark() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) { - callScriptMark(srcDataList, originDataList); - } else { - callSqlMark(srcDataList, originDataList); - } - LOGGER.error("超过请求次数放弃数据 WmsSAPDbWriter.saveData SoftAdaptorCode:{}, SID:{}", this.dataMapper.getSoftAdaptorCode(), srcDataList.get(0).get("SID")); - return; - } else { - redisMes.incr(key, 1); - } - } else { - redisMes.incr(key, 1); - } - } + LOGGER.info(ExceptionUtils.getStackTrace(e)); + return; + } finally { + //同步失败,更新同步状态为同步失败 + if (this.dataMapper.getUseScriptMark() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) { + callScriptMark(srcDataList, originDataList); + } else { + callSqlMark(srcDataList, originDataList, false); } - throw e; } // 再更新来源数据的同步标志 @@ -115,7 +101,7 @@ public class WmsSAPDbWriter extends WmsSAPDbSyncBase { if (this.dataMapper.getUseScriptMark() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) { callScriptMark(srcDataList, originDataList); } else { - callSqlMark(srcDataList, originDataList); + callSqlMark(srcDataList, originDataList,true); } } @@ -125,12 +111,12 @@ public class WmsSAPDbWriter extends WmsSAPDbSyncBase { * @param originDataList 原始查询到的数据集 * @throws Exception */ - private void callSqlMark(List> srcDataList, List> originDataList) + private void callSqlMark(List> srcDataList, List> originDataList,boolean isSuccess) throws Exception { if (originDataList != null) { - saveSrcData(originDataList); + saveSrcData(originDataList,isSuccess); } else { - saveSrcData(srcDataList); + saveSrcData(srcDataList,isSuccess); } } @@ -243,7 +229,7 @@ public class WmsSAPDbWriter extends WmsSAPDbSyncBase { * @param srcDataList * @throws Exception */ - private void saveSrcData(List> srcDataList) throws Exception { + private void saveSrcData(List> srcDataList,boolean isSuccess) throws Exception { if (srcDataList == null || srcDataList.size() == 0) { LOGGER.error("no data in src datalist!"); throw new IllegalArgumentException("no data in src datalist!"); @@ -275,7 +261,7 @@ public class WmsSAPDbWriter extends WmsSAPDbSyncBase { } // 把来源表的数据行放到表达式中,确保表达式可以引用 - HashMap updateValueMap = getUpdateSyncMap(srcRow); + HashMap updateValueMap = getUpdateSyncMap(srcRow,isSuccess); // 存在来源表不需要更新同步标志的情况 if (updateValueMap.size() > 0) { // 拼接更新来源表同步标志的 SQL LIST @@ -345,7 +331,7 @@ public class WmsSAPDbWriter extends WmsSAPDbSyncBase { * * @return */ - private HashMap getUpdateSyncMap(Map srcRow) throws Exception { + private HashMap getUpdateSyncMap(Map srcRow,boolean isSuccess) throws Exception { HashMap updateSyncMap = new HashMap<>(); if (this.getSrcUpdateSync() == null) { @@ -354,9 +340,12 @@ public class WmsSAPDbWriter extends WmsSAPDbSyncBase { for (UpdateSyncItem item : this.getSrcUpdateSync()) { Object updateValue = item.getUpdateValue(); + if(!StringUtils.isEmpty(item.getUpdateValue()) && item.getUpdateValue().contains(MesExtConstWords.COLON)){ + updateValue = isSuccess ? item.getUpdateValue().split(MesExtConstWords.COLON)[0]:item.getUpdateValue().split(MesExtConstWords.COLON)[1]; + } // 如果包含表达式,则计算后赋值 - if (item.getUpdateValue().indexOf("#") != -1) { + if (item.getUpdateValue().contains("#")) { updateValue = wmsSAPDbExpression.parse(item.getUpdateValue(), srcRow); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEnumExtService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEnumExtService.java index 4b40bc3..80e69e9 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEnumExtService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEnumExtService.java @@ -11,6 +11,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesEnum; import cn.estsh.i3plus.pojo.mes.bean.MesEnumDetail; +import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceEnumUtil; import cn.estsh.i3plus.pojo.mes.repository.MesEnumDetailRepository; import cn.estsh.i3plus.pojo.mes.repository.MesEnumRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; @@ -75,6 +76,7 @@ public class MesEnumExtService extends BaseMesService implements IMesEn Map enumMap = getEnumMap(organizeCode, enumName); if (CollectionUtils.isEmpty(enumMap)) enumMap = getEnumByClazzEnum(enumName, MesExtEnumUtil.class); if (CollectionUtils.isEmpty(enumMap)) enumMap = getEnumByClazzEnum(enumName, MesEnumUtil.class); + if (CollectionUtils.isEmpty(enumMap)) enumMap = getEnumByClazzEnum(enumName, MesInterfaceEnumUtil.class); return enumMap; } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesInterfaceDataMapperServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesInterfaceDataMapperServiceImpl.java new file mode 100644 index 0000000..dd1dfad --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesInterfaceDataMapperServiceImpl.java @@ -0,0 +1,68 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; + +import cn.estsh.i3plus.ext.mes.api.base.IMesInterfaceDataMapperService; +import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description : 接口数据映射 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/8/22 10:04 + * @Modify: + **/ +@Service +@Slf4j +public class MesInterfaceDataMapperServiceImpl extends BaseMesService implements IMesInterfaceDataMapperService { + + @Override + protected void onInsertBean(MesInterfaceDataMapper item) { + // 数据校验 + ValidatorBean.checkNotNull(item.getSrcTableName(), "来源表名不能为空"); + ValidatorBean.checkNotNull(item.getSrcWhere(), "来源表的查询条件不能为空"); + ValidatorBean.checkNotNull(item.getDestBeanName(), "目标实体对象的名字不能为空"); + + DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getSrcTableName(), "srcTableName", seriesPackBean); + DdlPreparedPack.getStringEqualPack(item.getSrcWhere(), "srcWhere", seriesPackBean); + DdlPreparedPack.getStringEqualPack(item.getDestBeanName(), "destBeanName", seriesPackBean); + if (baseRDao.isExitByHql(seriesPackBean)) { + MesException.throwMesBusiException("来源表名为【%s】、查询条件为【%s】、目标实体对象为【%s】接口映射信息已存在", + item.getSrcTableName(), item.getSrcWhere(), item.getDestBeanName()); + } + + } + + @Override + protected void onUpdateBean(MesInterfaceDataMapper item) { + // 数据校验 + ValidatorBean.checkNotNull(item.getSrcTableName(), "来源表名不能为空"); + ValidatorBean.checkNotNull(item.getSrcWhere(), "来源表的查询条件不能为空"); + ValidatorBean.checkNotNull(item.getDestBeanName(), "目标实体对象的名字不能为空"); + + DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getSrcTableName(), "srcTableName", seriesPackBean); + DdlPreparedPack.getStringEqualPack(item.getSrcWhere(), "srcWhere", seriesPackBean); + DdlPreparedPack.getStringEqualPack(item.getDestBeanName(), "destBeanName", seriesPackBean); + DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", seriesPackBean); + if (baseRDao.isExitByHql(seriesPackBean)) { + MesException.throwMesBusiException("来源表名为【%s】、查询条件为【%s】、目标实体对象为【%s】接口映射信息已存在", + item.getSrcTableName(), item.getSrcWhere(), item.getDestBeanName()); + } + } + + @Override + protected void setPackQueryBean(MesInterfaceDataMapper bean, DdlPackBean packBean) { + DdlPreparedPack.getStringLikerPack(bean.getSrcTableName(), "srcTableName", packBean); + DdlPreparedPack.getStringLikerPack(bean.getDestBeanName(), "destBeanName", packBean); + DdlPreparedPack.getStringLikerPack(bean.getBusiRoute(), "busiRoute", packBean); + DdlPreparedPack.getStringLikerPack(bean.getGroupName(), "groupName", packBean); + DdlPreparedPack.getStringLikerPack(bean.getInterfaceName(), "interfaceName", packBean); + } + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesScriptPersistenceServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesScriptPersistenceServiceImpl.java new file mode 100644 index 0000000..b747af8 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesScriptPersistenceServiceImpl.java @@ -0,0 +1,58 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; + +import cn.estsh.i3plus.ext.mes.api.base.IMesScriptPersistenceService; +import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesScriptPersistence; +import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description : 动态脚本 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/8/22 10:04 + * @Modify: + **/ +@Service +@Slf4j +public class MesScriptPersistenceServiceImpl extends BaseMesService implements IMesScriptPersistenceService { + + @Override + protected void onInsertBean(MesScriptPersistence item) { + // 数据校验 + ValidatorBean.checkNotNull(item.getScriptNo(), "脚本编号不能为空"); + + DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getScriptNo(), "scriptNo", seriesPackBean); + if (baseRDao.isExitByHql(seriesPackBean)) { + MesException.throwMesBusiException("脚本编号【%s】已存在", item.getScriptNo()); + } + + } + + @Override + protected void onUpdateBean(MesScriptPersistence item) { + // 数据校验 + ValidatorBean.checkNotNull(item.getScriptNo(), "脚本编号不能为空"); + + DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getScriptNo(), "scriptNo", seriesPackBean); + DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", seriesPackBean); + if (baseRDao.isExitByHql(seriesPackBean)) { + MesException.throwMesBusiException("脚本编号【%s】已存在", item.getScriptNo()); + } + } + + @Override + protected void setPackQueryBean(MesScriptPersistence bean, DdlPackBean packBean) { + DdlPreparedPack.getStringLikerPack(bean.getScriptNo(), "scriptNo", packBean); + DdlPreparedPack.getStringRightLikerPack(bean.getScriptName(), "scriptName", packBean); + DdlPreparedPack.getNumEqualPack(bean.getScriptType(), "scriptType", packBean); + DdlPreparedPack.getNumEqualPack(bean.getLanguageType(), "languageType", packBean); + } + +}