From ddfbe5f0abd9da45dd3cd4a0d7b7ba042eb219a6 Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 24 Apr 2025 21:05:18 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=8C=E7=BB=B4?= =?UTF-8?q?=E7=A0=81=E6=89=93=E5=8D=B0=E4=B8=BAdataMatrix=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../print/strategy/ChengDuVolvoPartPrintStrategy.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/ChengDuVolvoPartPrintStrategy.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/ChengDuVolvoPartPrintStrategy.java index 0696dc4..b6d7766 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/ChengDuVolvoPartPrintStrategy.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/ChengDuVolvoPartPrintStrategy.java @@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesCustomerPartService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesPrintedSnLogService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.BarCodeUtils; import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintDataModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel; @@ -23,12 +24,17 @@ import cn.estsh.i3plus.pojo.mes.model.StepResult; import cn.estsh.i3plus.pojo.mes.repository.MesCustSoftInfoRepository; import cn.estsh.i3plus.pojo.mes.repository.edi.cd.MesCimVolvoJisRackIdDetailRepository; import cn.estsh.i3plus.pojo.mes.repository.edi.cd.MesCimVolvoJisRackIdRepository; +import com.google.zxing.WriterException; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.util.*; /** @@ -125,6 +131,19 @@ public class ChengDuVolvoPartPrintStrategy implements IPrintTemplateStrategyServ result.put(MesPcnExtConstWords.PRINT_BAR_CODE, produceSn.getCustSn()); result.put(MesPcnExtConstWords.PRINT_DATE, TimeTool.getNowTime(true)); result.put(MesPcnExtConstWords.USER_NAME, produceSn.getCreateUser()); + + // 客户条码 dataMatrix + ByteArrayOutputStream dataMatrixCode; + try { + dataMatrixCode = BarCodeUtils.createDataMatrixCode(workOrder.getCustSn()); + } catch (WriterException e) { + log.error("CustSnPrintStrategy --- execute --- 报错:{}", e.getMessage()); + return result; + } catch (IOException e) { + log.error("CustSnPrintStrategy --- execute --- 报错:{}", e.getMessage()); + return result; + } + result.put(MesPcnExtConstWords.CUST_SN_DATA_MATRIX, Base64.getEncoder().encodeToString(dataMatrixCode.toByteArray())); return result; } From 2e5f8e69194d8c8aca6d2eb3cf2d0f13ad5ef240 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Tue, 6 May 2025 21:50:21 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E5=90=88=E5=B9=B6=E9=BE=99=E5=85=B4?= =?UTF-8?q?=E5=8F=91=E8=BF=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/ext/mes/pcn/api/busi/IMesSortShippingCheckService.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesSortShippingCheckService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesSortShippingCheckService.java index 43a2ee8..596af44 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesSortShippingCheckService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesSortShippingCheckService.java @@ -39,9 +39,6 @@ public interface IMesSortShippingCheckService { void updateDetail(MesShippingOrderManagementDetail item); - @ApiOperation(value = "待发运列表") - MesSortShippingCheckModel getSortShippingQueueList(MesSortShippingCheckModel model); - void saveSecondShipScanOrder(MesSortShippingCheckModel model); @ApiOperation(value = "待发运列表") From b16fe77a0a333f7ca530845a32385e16498b6608 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Tue, 6 May 2025 21:54:27 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E5=90=88=E5=B9=B6=E9=BE=99=E5=85=B4?= =?UTF-8?q?=E5=8F=91=E8=BF=90=E7=9C=8B=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/serviceimpl/busi/MesShippingKanbanCfgServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingKanbanCfgServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingKanbanCfgServiceImpl.java index a6c6317..eaabab6 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingKanbanCfgServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingKanbanCfgServiceImpl.java @@ -1121,7 +1121,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer // Use a single query to fetch counts grouped by work center code List productionCounts = entityManager.createQuery( - "SELECT new map(pr.workCenterCode as workCenterCode, COUNT(DISTINCT(pr.productSn)) as totalCount) " + + "SELECT new map(pr.workCenterCode as workCenterCode, COUNT(DISTINCT pr.productSn) as totalCount) " + "FROM " + MesProductionRecord.class.getName() + " pr " + "WHERE pr.organizeCode = :organizeCode AND pr.isDeleted = :isDeleted AND pr.isValid = :isValid " + "AND pr.reportType = :reportType AND pr.createDatetime BETWEEN :startDateTime AND :endDateTime " + From 5f8b5d042e0aac2d36908e801f003b0d29335354 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Wed, 7 May 2025 11:13:11 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/pcn/api/base/IMesEquipmentLogService.java | 1 + .../apiservice/controller/busi/TestController.java | 27 ++++++++++++++-------- .../pcn/apiservice/daoimpl/MesEquipmentLogDao.java | 12 +++++----- .../serviceimpl/base/MesEquipmentLogService.java | 11 +++++++++ 4 files changed, 36 insertions(+), 15 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentLogService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentLogService.java index 56bff8f..e7e4f75 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentLogService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentLogService.java @@ -8,6 +8,7 @@ public interface IMesEquipmentLogService { void saveEquipmentLogToRedis(ActorMessage actorMessage); void saveEquipmentLogDetails(String organizeCode, String userInfo, Integer qty); + void saveEquipmentLogDetailsById(String organizeCode, String userInfo, Long id); void updateValue(EquipLogMqttMsg equipLogMqttMsg); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/TestController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/TestController.java index 226d67d..95766be 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/TestController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/TestController.java @@ -1,16 +1,13 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi; +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentLogService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesConfigService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService; import cn.estsh.i3plus.ext.mes.pcn.api.job.IMesWorkOrderOfflineRestoreService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob.MesReportNoSortJob; import cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob.MesReportWorkByPreDayJob; import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; -import cn.estsh.i3plus.platform.common.convert.ConvertBean; -import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; -import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; -import cn.estsh.i3plus.pojo.mes.bean.MesShift; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.pojo.mes.repository.MesProductionRecordRepository; import cn.estsh.i3plus.pojo.mes.repository.MesShiftRepository; import cn.estsh.impp.framework.boot.exception.ImppBusiException; @@ -18,13 +15,9 @@ import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; -import java.util.Arrays; -import java.util.List; import java.util.Map; -import java.util.stream.Collectors; @RestController @RequestMapping(MesCommonConstant.MES_YANFEN + "/test") @@ -51,6 +44,9 @@ public class TestController { @Autowired private IMesWorkOrderOfflineRestoreService workOrderOfflineRestoreService; + @Autowired + private IMesEquipmentLogService mesEquipmentLogService; + @GetMapping("/reportWorkByPreDayJob") @ApiOperation(value = "查询设备交互") public ResultBean queryReworkTaskByPager(String organizeCode) { @@ -96,4 +92,17 @@ public class TestController { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } + + @GetMapping("/testMesSaveVariableJob") + @ApiOperation(value = "保存工艺参数job") + public ResultBean testMesSaveVariableJob(Long id) { + try { + mesEquipmentLogService.saveEquipmentLogDetailsById("CF08", MesPcnExtConstWords.JOB, id); + return ResultBean.success("操作成功"); + } catch (ImppBusiException imppException) { + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java index 0100e4f..4d0c9b4 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java @@ -256,9 +256,9 @@ public class MesEquipmentLogDao implements IMesEquipmentLogDao { insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CREATE_DATE_TIME, index), nowTime); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.MODIFY_USER, index), userInfo); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.MODIFY_DATE_TIME, index), nowTime); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.DESCRIPTION, index), null); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.REMARK, index), null); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, index), null); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.DESCRIPTION, index), ""); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.REMARK, index), ""); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, index), ""); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, index), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.AREA_CODE, index), equipmentRecord.getAreaCode()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.WORK_CENTER_CODE, index), equipmentRecord.getWorkCenterCode()); @@ -271,13 +271,13 @@ public class MesEquipmentLogDao implements IMesEquipmentLogDao { insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.ORG_EQUIP_ID, index), orgEquipId); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_ID, index), equipId); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_ID, index), equipmentLog.getEquipVariableId()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_NAME, index), equipmentLog.getEquipVariableName()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_DESC, index), equipmentLog.getEquipVariableDesc()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_NAME, index), ""); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_DESC, index), ""); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.READ_WRITE_FLAG, index), equipmentLog.getReadWriteFlag()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.DATA_TYPE, index), equipmentLog.getDataType()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_VALUE, index), equipmentLog.getEquipVariableValue()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.VARIABLE_TYPE, index), equipmentLog.getVariableType()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CATEGORY_LEVEL_TWO, index), equipmentLog.getCategoryLevelTwo()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CATEGORY_LEVEL_TWO, index), ""); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.QUALITY, index), equipmentLog.getQuality()); index ++; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java index f023b9d..a1dd29a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java @@ -136,6 +136,17 @@ public class MesEquipmentLogService implements IMesEquipmentLogService { } + @Override + public void saveEquipmentLogDetailsById(String organizeCode, String userInfo, Long id) { + + MesEquipmentRecord equipmentRecord = mesEquipmentRecordRepository.getById(id); + + if (null == equipmentRecord) return; + + saveEquipmentLogDetail(organizeCode, userInfo, 50, equipmentRecord); + + } + private void saveEquipmentLogDetail(String organizeCode, String userInfo, Integer qty, MesEquipmentRecord mesEquipmentRecord) { String key = getKey(mesEquipmentRecord); From 60bd600fdea1c877e1852afffe1ad232d3918ba5 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Wed, 7 May 2025 14:42:17 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=2046751=20MES=EF=BC=9A=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=AE=9E=E6=97=B6=E5=80=BC=E6=9F=A5=E8=AF=A2=EF=BC=8C=E6=9D=A1?= =?UTF-8?q?=E7=A0=81=E5=AD=97=E6=AE=B5=E6=B2=A1=E6=9C=89=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/pcn/api/base/IMesEquipmentLogService.java | 1 - .../apiservice/controller/busi/TestController.java | 41 +- .../pcn/apiservice/daoimpl/MesEquipmentLogDao.java | 583 +++++++++++---------- .../serviceimpl/base/MesEquipmentLogService.java | 11 - 4 files changed, 305 insertions(+), 331 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentLogService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentLogService.java index e7e4f75..56bff8f 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentLogService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentLogService.java @@ -8,7 +8,6 @@ public interface IMesEquipmentLogService { void saveEquipmentLogToRedis(ActorMessage actorMessage); void saveEquipmentLogDetails(String organizeCode, String userInfo, Integer qty); - void saveEquipmentLogDetailsById(String organizeCode, String userInfo, Long id); void updateValue(EquipLogMqttMsg equipLogMqttMsg); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/TestController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/TestController.java index 95766be..5ce663f 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/TestController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/TestController.java @@ -1,13 +1,11 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi; -import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentLogService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesConfigService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService; import cn.estsh.i3plus.ext.mes.pcn.api.job.IMesWorkOrderOfflineRestoreService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob.MesReportNoSortJob; import cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob.MesReportWorkByPreDayJob; import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; -import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.pojo.mes.repository.MesProductionRecordRepository; import cn.estsh.i3plus.pojo.mes.repository.MesShiftRepository; import cn.estsh.impp.framework.boot.exception.ImppBusiException; @@ -44,28 +42,25 @@ public class TestController { @Autowired private IMesWorkOrderOfflineRestoreService workOrderOfflineRestoreService; - @Autowired - private IMesEquipmentLogService mesEquipmentLogService; - @GetMapping("/reportWorkByPreDayJob") @ApiOperation(value = "查询设备交互") public ResultBean queryReworkTaskByPager(String organizeCode) { return null; } - @GetMapping("/reportOrder") - @ApiOperation(value = "报工") - public void reportOrder() { - mesReportNoSortJob.executeMesJob(null, null); - - } +// @GetMapping("/reportOrder") +// @ApiOperation(value = "报工") +// public void reportOrder() { +// mesReportNoSortJob.executeMesJob(null, null); +// +// } - @GetMapping("/reportOrder1") - @ApiOperation(value = "报工") - public void reportOrder1() { - mesReportWorkByPreDayJob.executeMesJob(null, null); - - } +// @GetMapping("/reportOrder1") +// @ApiOperation(value = "报工") +// public void reportOrder1() { +// mesReportWorkByPreDayJob.executeMesJob(null, null); +// +// } @GetMapping("/MesReportSortJob") @ApiOperation(value = "排序工单汇报") @@ -93,16 +88,4 @@ public class TestController { } } - @GetMapping("/testMesSaveVariableJob") - @ApiOperation(value = "保存工艺参数job") - public ResultBean testMesSaveVariableJob(Long id) { - try { - mesEquipmentLogService.saveEquipmentLogDetailsById("CF08", MesPcnExtConstWords.JOB, id); - return ResultBean.success("操作成功"); - } catch (ImppBusiException imppException) { - return ResultBean.fail(imppException); - } catch (Exception e) { - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java index 4d0c9b4..f2f309b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java @@ -1,290 +1,293 @@ -package cn.estsh.i3plus.ext.mes.pcn.apiservice.daoimpl; - - -import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesEquipmentLogDao; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; -import cn.estsh.i3plus.platform.common.tool.TimeTool; -import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; -import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentRecord; -import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; - -import javax.persistence.EntityManager; -import javax.persistence.Query; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.StringJoiner; -import java.util.stream.Collectors; - -@Service -public class MesEquipmentLogDao implements IMesEquipmentLogDao { - - @Value("${mes.sharding.append.org:}") - public String mesShardingAppendOrg; - - @Autowired - private EntityManager entityManager; - - @Autowired - private SnowflakeIdMaker snowflakeIdMaker; - - private final static String TWO_S_APPEND = "%s_%s"; - - private final static String[] equipmentLogDetailFields = {MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED, - MesPcnExtConstWords.CREATE_USER, MesPcnExtConstWords.CREATE_DATE_TIME, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, - MesPcnExtConstWords.DESCRIPTION, MesPcnExtConstWords.REMARK, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, - MesPcnExtConstWords.AREA_CODE, MesPcnExtConstWords.WORK_CENTER_CODE, MesPcnExtConstWords.WORK_CELL_CODE, MesPcnExtConstWords.EQUIPMENT_CODE, - MesPcnExtConstWords.PROCESS_CODE, MesPcnExtConstWords.CRAFT_CODE, MesPcnExtConstWords.MOULD_RECORD_ID, MesPcnExtConstWords.EXTEND, - MesPcnExtConstWords.ORG_EQUIP_ID, MesPcnExtConstWords.EQUIP_ID, MesPcnExtConstWords.EQUIP_VARIABLE_ID, MesPcnExtConstWords.EQUIP_VARIABLE_NAME, - MesPcnExtConstWords.EQUIP_VARIABLE_DESC, MesPcnExtConstWords.READ_WRITE_FLAG, MesPcnExtConstWords.DATA_TYPE, MesPcnExtConstWords.EQUIP_VARIABLE_VALUE, - MesPcnExtConstWords.VARIABLE_TYPE, MesPcnExtConstWords.CATEGORY_LEVEL_TWO, MesPcnExtConstWords.QUALITY}; - - @Override - public List queryMesEquipmentLog(List equipmentVariableList, String organizeCode, Integer equipId, Integer variableType) { - - List equipVariableCollectContextList = generateEquipVariableCollectContextList(equipmentVariableList); - - if (CollectionUtils.isEmpty(equipmentVariableList) || StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || StringUtils.isEmpty(variableType)) return null; - - StringBuffer builder = new StringBuffer(); - - builder.append(" select e.equip_variable_id, e.equip_variable_value, e.equip_variable_status, e.quality, e.modify_date_time, e.id "); - builder.append(" from mes_equipment_log_"); - if (!StringUtils.isEmpty(mesShardingAppendOrg) && mesShardingAppendOrg.toUpperCase().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.name())) builder.append(organizeCode.toLowerCase()).append(MesPcnExtConstWords.E_UNDERLINE); - builder.append(equipId); - builder.append(" e where e.organize_code = :organizeCode and e.variable_type = :variableType "); - - Query query = entityManager.createNativeQuery(builder.toString()); - query.setParameter(MesPcnExtConstWords.ORGANIZE_CODE, organizeCode); - query.setParameter(MesPcnExtConstWords.VARIABLE_TYPE, variableType); - List list = query.getResultList(); - - if (CollectionUtils.isEmpty(list)) return equipVariableCollectContextList; - - List equipVariableIdList = equipmentVariableList.stream().filter(o -> null != o).map(o -> o.getId().toString()).collect(Collectors.toList()); - - for (Object equipmentLog : list) { - - if (null == equipmentLog) continue; - - Object[] equipmentLogArr = (Object[]) equipmentLog; - - if (null == equipmentLogArr || equipmentLogArr.length != 6 || StringUtils.isEmpty(equipmentLogArr[0]) || !equipVariableIdList.contains(equipmentLogArr[0].toString())) continue; - - equipVariableCollectContextList.stream().filter(o -> (null != o && o.getEquipVariableId().toString().equals(equipmentLogArr[0].toString()))).findFirst().get().copyValue(equipmentLogArr[1], equipmentLogArr[2], equipmentLogArr[3], equipmentLogArr[4], equipmentLogArr[5]); - - } - - return equipVariableCollectContextList; - } - - @Override - public void updateEquipVariableStatus(String organizeCode, Integer equipId, Map equipmentLogIdMap, Integer equipVariableStatus) { - - if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || CollectionUtils.isEmpty(equipmentLogIdMap) || StringUtils.isEmpty(equipVariableStatus)) return; - - StringBuffer builder = new StringBuffer(); - - for (int i = 0; i < equipmentLogIdMap.size(); i ++) { - - builder.append(" update mes_equipment_log_"); - if (!StringUtils.isEmpty(mesShardingAppendOrg) && mesShardingAppendOrg.toUpperCase().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.name())) builder.append(organizeCode.toLowerCase()).append(MesPcnExtConstWords.E_UNDERLINE); - builder.append(equipId); - builder.append(" set equip_variable_status = :equipVariableStatus_"); - builder.append(i); - builder.append(" where id = :id_"); - builder.append(i); - builder.append(" and modify_date_time = :modifyDatetime_"); - builder.append(i); - builder.append(" ;"); - - } - - Query update = entityManager.createNativeQuery(builder.toString()); - - Integer index = 0; - for (Map.Entry entry : equipmentLogIdMap.entrySet()) { - if (null == entry) continue; - update.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_STATUS, index), equipVariableStatus); - update.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.ID, index), entry.getKey()); - update.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.MODIFY_DATE_TIME, index), entry.getValue()); - index ++; - } - - update.executeUpdate(); - - } - - private List generateEquipVariableCollectContextList(List equipmentVariableList) { - List equipVariableCollectContextList = new ArrayList<>(); - if (CollectionUtils.isEmpty(equipmentVariableList)) return equipVariableCollectContextList; - equipmentVariableList.stream().filter(o -> null != o).forEach(o -> { - MesEquipVariableCollectContext equipVariableCollectContext = new MesEquipVariableCollectContext(o.getId()); - BeanUtils.copyProperties(o, equipVariableCollectContext); - equipVariableCollectContextList.add(equipVariableCollectContext); - }); - return equipVariableCollectContextList; - } - - @Override - public List queryMesEquipmentLog(String organizeCode, Integer equipId, Integer variableType, List equipVariableIdList) { - - if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || StringUtils.isEmpty(variableType) || CollectionUtils.isEmpty(equipVariableIdList)) return null; - - equipVariableIdList = equipVariableIdList.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()); - - StringBuffer builder = new StringBuffer(); - - builder.append(" select e.equip_variable_id, e.equip_variable_value, e.equip_variable_status, e.quality, e.modify_date_time, e.id "); - builder.append(" from mes_equipment_log_"); - if (!StringUtils.isEmpty(mesShardingAppendOrg) && mesShardingAppendOrg.toUpperCase().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.name())) builder.append(organizeCode.toLowerCase()).append(MesPcnExtConstWords.E_UNDERLINE); - builder.append(equipId); - builder.append(" e where e.organize_code = :organizeCode and e.variable_type = :variableType "); - if (equipVariableIdList.size() == 1) builder.append(" and e.equip_variable_id = :equipVariableId "); - else builder.append(" and e.equip_variable_id in (:equipVariableId) "); - - Query query = entityManager.createNativeQuery(builder.toString()); - query.setParameter(MesPcnExtConstWords.ORGANIZE_CODE, organizeCode); - query.setParameter(MesPcnExtConstWords.VARIABLE_TYPE, variableType); - if (equipVariableIdList.size() == 1) query.setParameter(MesPcnExtConstWords.EQUIP_VARIABLE_ID, equipVariableIdList.get(0)); - else query.setParameter(MesPcnExtConstWords.EQUIP_VARIABLE_ID, equipVariableIdList); - List list = query.getResultList(); - - return backEquipVariableCollectContextList(list); - } - - @Override - public List queryMesEquipmentLog(String organizeCode, Integer equipId, Integer variableType) { - - if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || StringUtils.isEmpty(variableType)) return null; - - StringBuffer builder = new StringBuffer(); - - builder.append(" select e.equip_variable_id, e.equip_variable_value, e.equip_variable_status, e.quality, e.modify_date_time, e.id "); - builder.append(" from mes_equipment_log_"); - if (!StringUtils.isEmpty(mesShardingAppendOrg) && mesShardingAppendOrg.toUpperCase().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.name())) builder.append(organizeCode.toLowerCase()).append(MesPcnExtConstWords.E_UNDERLINE); - builder.append(equipId); - builder.append(" e where e.organize_code = :organizeCode and e.variable_type = :variableType "); - - Query query = entityManager.createNativeQuery(builder.toString()); - query.setParameter(MesPcnExtConstWords.ORGANIZE_CODE, organizeCode); - query.setParameter(MesPcnExtConstWords.VARIABLE_TYPE, variableType); - List list = query.getResultList(); - - return backEquipVariableCollectContextList(list); - - } - - private List backEquipVariableCollectContextList(List list) { - - if (CollectionUtils.isEmpty(list)) return null; - - List equipVariableCollectContextList = new ArrayList<>(); - - for (Object equipmentLog : list) { - - if (null == equipmentLog) continue; - - Object[] equipmentLogArr = (Object[]) equipmentLog; - - if (null == equipmentLogArr || equipmentLogArr.length != 6 || StringUtils.isEmpty(equipmentLogArr[0])) continue; - - equipVariableCollectContextList.add(new MesEquipVariableCollectContext(Long.valueOf(equipmentLogArr[0].toString())).copyValue(equipmentLogArr[1], equipmentLogArr[2], equipmentLogArr[3], equipmentLogArr[4], equipmentLogArr[5])); - - } - - return equipVariableCollectContextList; - } - - @Override - public void insertBatchEquipmentLogDetail(String organizeCode, Integer equipId, String userInfo, MesEquipmentRecord equipmentRecord, List equipmentLogList) { - - StringBuffer builder = new StringBuffer(); - - Integer index = 0; - for (MesEquipVariableCollectContext equipmentLog : equipmentLogList) { - if (null == equipmentLog) continue; - - builder.append(" insert into mes_equipment_log_detail_"); - if (!StringUtils.isEmpty(mesShardingAppendOrg) && mesShardingAppendOrg.toUpperCase().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.name())) builder.append(organizeCode.toLowerCase()).append(MesPcnExtConstWords.E_UNDERLINE); - builder.append(equipId); - builder.append("( id, organize_code, is_valid, is_deleted, create_user, create_date_time, modify_user, modify_date_time,"); - builder.append(" description, remark, system_sync_date_time, system_sync_status,"); - builder.append(" area_code, work_center_code, work_cell_code, equipment_code, process_code, craft_code,"); - builder.append(" mould_record_id, extend, org_equip_id, equip_id, equip_variable_id, equip_variable_name, equip_variable_desc,"); - builder.append(" read_write_flag, data_type, equip_variable_value, variable_type, category_level_two, quality)"); - builder.append(" values ( "); - - for (int i = 0; i < equipmentLogDetailFields.length; i ++) { - if (StringUtils.isEmpty(equipmentLogDetailFields[i])) continue; - - builder.append(MesPcnExtConstWords.COLON); - builder.append(equipmentLogDetailFields[i]); - builder.append(MesPcnExtConstWords.E_UNDERLINE); - builder.append(index); - if (i != equipmentLogDetailFields.length - 1) builder.append(" , "); - } - - builder.append(" );"); - - index ++; - - } - - Query insert = entityManager.createNativeQuery(builder.toString()); - - String nowTime = TimeTool.getNowTime(true); - String orgEquipId = new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(organizeCode).add(equipId.toString()).toString(); - - index = 0; - for (MesEquipVariableCollectContext equipmentLog : equipmentLogList) { - if (null == equipmentLog) continue; - - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.ID, index), snowflakeIdMaker.nextId()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.ORGANIZE_CODE, index), organizeCode); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.IS_VALID, index), CommonEnumUtil.IS_VAILD.VAILD.getValue()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.IS_DELETED, index), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CREATE_USER, index), userInfo); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CREATE_DATE_TIME, index), nowTime); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.MODIFY_USER, index), userInfo); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.MODIFY_DATE_TIME, index), nowTime); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.DESCRIPTION, index), ""); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.REMARK, index), ""); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, index), ""); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, index), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.AREA_CODE, index), equipmentRecord.getAreaCode()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.WORK_CENTER_CODE, index), equipmentRecord.getWorkCenterCode()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.WORK_CELL_CODE, index), equipmentRecord.getWorkCellCode()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIPMENT_CODE, index), equipmentRecord.getEquipmentCode()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.PROCESS_CODE, index), equipmentRecord.getProcessCode()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CRAFT_CODE, index), equipmentRecord.getCraftCode()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.MOULD_RECORD_ID, index), equipmentRecord.getId()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EXTEND, index), equipmentRecord.getProduceSnJson()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.ORG_EQUIP_ID, index), orgEquipId); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_ID, index), equipId); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_ID, index), equipmentLog.getEquipVariableId()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_NAME, index), ""); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_DESC, index), ""); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.READ_WRITE_FLAG, index), equipmentLog.getReadWriteFlag()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.DATA_TYPE, index), equipmentLog.getDataType()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_VALUE, index), equipmentLog.getEquipVariableValue()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.VARIABLE_TYPE, index), equipmentLog.getVariableType()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CATEGORY_LEVEL_TWO, index), ""); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.QUALITY, index), equipmentLog.getQuality()); - - index ++; - } - - insert.executeUpdate(); - - } - -} +package cn.estsh.i3plus.ext.mes.pcn.apiservice.daoimpl; + + +import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesEquipmentLogDao; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentRecord; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.StringJoiner; +import java.util.stream.Collectors; + +@Service +public class MesEquipmentLogDao implements IMesEquipmentLogDao { + + @Value("${mes.sharding.append.org:}") + public String mesShardingAppendOrg; + + @Autowired + private EntityManager entityManager; + + @Autowired + private SnowflakeIdMaker snowflakeIdMaker; + + private final static String TWO_S_APPEND = "%s_%s"; + + private final static String[] equipmentLogDetailFields = {MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED, + MesPcnExtConstWords.CREATE_USER, MesPcnExtConstWords.CREATE_DATE_TIME, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, + MesPcnExtConstWords.DESCRIPTION, MesPcnExtConstWords.REMARK, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, + MesPcnExtConstWords.AREA_CODE, MesPcnExtConstWords.WORK_CENTER_CODE, MesPcnExtConstWords.WORK_CELL_CODE, MesPcnExtConstWords.EQUIPMENT_CODE, + MesPcnExtConstWords.PROCESS_CODE, MesPcnExtConstWords.CRAFT_CODE, MesPcnExtConstWords.MOULD_RECORD_ID, MesPcnExtConstWords.EXTEND, + MesPcnExtConstWords.ORG_EQUIP_ID, MesPcnExtConstWords.EQUIP_ID, MesPcnExtConstWords.EQUIP_VARIABLE_ID, MesPcnExtConstWords.EQUIP_VARIABLE_NAME, + MesPcnExtConstWords.EQUIP_VARIABLE_DESC, MesPcnExtConstWords.READ_WRITE_FLAG, MesPcnExtConstWords.DATA_TYPE, MesPcnExtConstWords.EQUIP_VARIABLE_VALUE, + MesPcnExtConstWords.VARIABLE_TYPE, MesPcnExtConstWords.CATEGORY_LEVEL_TWO, MesPcnExtConstWords.QUALITY}; + + @Override + public List queryMesEquipmentLog(List equipmentVariableList, String organizeCode, Integer equipId, Integer variableType) { + + List equipVariableCollectContextList = generateEquipVariableCollectContextList(equipmentVariableList); + + if (CollectionUtils.isEmpty(equipmentVariableList) || StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || StringUtils.isEmpty(variableType)) return null; + + StringBuffer builder = new StringBuffer(); + + builder.append(" select e.equip_variable_id, e.equip_variable_value, e.equip_variable_status, e.quality, e.modify_date_time, e.id "); + builder.append(" from mes_equipment_log_"); + if (!StringUtils.isEmpty(mesShardingAppendOrg) && mesShardingAppendOrg.toUpperCase().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.name())) builder.append(organizeCode.toLowerCase()).append(MesPcnExtConstWords.E_UNDERLINE); + builder.append(equipId); + builder.append(" e where e.organize_code = :organizeCode and e.variable_type = :variableType "); + + Query query = entityManager.createNativeQuery(builder.toString()); + query.setParameter(MesPcnExtConstWords.ORGANIZE_CODE, organizeCode); + query.setParameter(MesPcnExtConstWords.VARIABLE_TYPE, variableType); + List list = query.getResultList(); + + if (CollectionUtils.isEmpty(list)) return equipVariableCollectContextList; + + List equipVariableIdList = equipmentVariableList.stream().filter(o -> null != o).map(o -> o.getId().toString()).collect(Collectors.toList()); + + for (Object equipmentLog : list) { + + if (null == equipmentLog) continue; + + Object[] equipmentLogArr = (Object[]) equipmentLog; + + if (null == equipmentLogArr || equipmentLogArr.length != 6 || StringUtils.isEmpty(equipmentLogArr[0]) || !equipVariableIdList.contains(equipmentLogArr[0].toString())) continue; + + equipVariableCollectContextList.stream().filter(o -> (null != o && o.getEquipVariableId().toString().equals(equipmentLogArr[0].toString()))).findFirst().get().copyValue(equipmentLogArr[1], equipmentLogArr[2], equipmentLogArr[3], equipmentLogArr[4], equipmentLogArr[5]); + + } + + return equipVariableCollectContextList; + } + + @Override + public void updateEquipVariableStatus(String organizeCode, Integer equipId, Map equipmentLogIdMap, Integer equipVariableStatus) { + + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || CollectionUtils.isEmpty(equipmentLogIdMap) || StringUtils.isEmpty(equipVariableStatus)) return; + + StringBuffer builder = new StringBuffer(); + + for (int i = 0; i < equipmentLogIdMap.size(); i ++) { + + builder.append(" update mes_equipment_log_"); + if (!StringUtils.isEmpty(mesShardingAppendOrg) && mesShardingAppendOrg.toUpperCase().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.name())) builder.append(organizeCode.toLowerCase()).append(MesPcnExtConstWords.E_UNDERLINE); + builder.append(equipId); + builder.append(" set equip_variable_status = :equipVariableStatus_"); + builder.append(i); + builder.append(" where id = :id_"); + builder.append(i); + builder.append(" and modify_date_time = :modifyDatetime_"); + builder.append(i); + builder.append(" ;"); + + } + + Query update = entityManager.createNativeQuery(builder.toString()); + + Integer index = 0; + for (Map.Entry entry : equipmentLogIdMap.entrySet()) { + if (null == entry) continue; + update.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_STATUS, index), equipVariableStatus); + update.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.ID, index), entry.getKey()); + update.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.MODIFY_DATE_TIME, index), entry.getValue()); + index ++; + } + + update.executeUpdate(); + + } + + private List generateEquipVariableCollectContextList(List equipmentVariableList) { + List equipVariableCollectContextList = new ArrayList<>(); + if (CollectionUtils.isEmpty(equipmentVariableList)) return equipVariableCollectContextList; + equipmentVariableList.stream().filter(o -> null != o).forEach(o -> { + MesEquipVariableCollectContext equipVariableCollectContext = new MesEquipVariableCollectContext(o.getId()); + BeanUtils.copyProperties(o, equipVariableCollectContext); + equipVariableCollectContextList.add(equipVariableCollectContext); + }); + return equipVariableCollectContextList; + } + + @Override + public List queryMesEquipmentLog(String organizeCode, Integer equipId, Integer variableType, List equipVariableIdList) { + + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || StringUtils.isEmpty(variableType) || CollectionUtils.isEmpty(equipVariableIdList)) return null; + + equipVariableIdList = equipVariableIdList.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()); + + StringBuffer builder = new StringBuffer(); + + builder.append(" select e.equip_variable_id, e.equip_variable_value, e.equip_variable_status, e.quality, e.modify_date_time, e.id "); + builder.append(" from mes_equipment_log_"); + if (!StringUtils.isEmpty(mesShardingAppendOrg) && mesShardingAppendOrg.toUpperCase().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.name())) builder.append(organizeCode.toLowerCase()).append(MesPcnExtConstWords.E_UNDERLINE); + builder.append(equipId); + builder.append(" e where e.organize_code = :organizeCode and e.variable_type = :variableType "); + if (equipVariableIdList.size() == 1) builder.append(" and e.equip_variable_id = :equipVariableId "); + else builder.append(" and e.equip_variable_id in (:equipVariableId) "); + + Query query = entityManager.createNativeQuery(builder.toString()); + query.setParameter(MesPcnExtConstWords.ORGANIZE_CODE, organizeCode); + query.setParameter(MesPcnExtConstWords.VARIABLE_TYPE, variableType); + if (equipVariableIdList.size() == 1) query.setParameter(MesPcnExtConstWords.EQUIP_VARIABLE_ID, equipVariableIdList.get(0)); + else query.setParameter(MesPcnExtConstWords.EQUIP_VARIABLE_ID, equipVariableIdList); + List list = query.getResultList(); + + return backEquipVariableCollectContextList(list); + } + + @Override + public List queryMesEquipmentLog(String organizeCode, Integer equipId, Integer variableType) { + + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || StringUtils.isEmpty(variableType)) return null; + + StringBuffer builder = new StringBuffer(); + + builder.append(" select e.equip_variable_id, e.equip_variable_value, e.equip_variable_status, e.quality, e.modify_date_time, e.id "); + builder.append(" from mes_equipment_log_"); + if (!StringUtils.isEmpty(mesShardingAppendOrg) && mesShardingAppendOrg.toUpperCase().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.name())) builder.append(organizeCode.toLowerCase()).append(MesPcnExtConstWords.E_UNDERLINE); + builder.append(equipId); + builder.append(" e where e.organize_code = :organizeCode and e.variable_type = :variableType "); + + Query query = entityManager.createNativeQuery(builder.toString()); + query.setParameter(MesPcnExtConstWords.ORGANIZE_CODE, organizeCode); + query.setParameter(MesPcnExtConstWords.VARIABLE_TYPE, variableType); + List list = query.getResultList(); + + return backEquipVariableCollectContextList(list); + + } + + private List backEquipVariableCollectContextList(List list) { + + if (CollectionUtils.isEmpty(list)) return null; + + List equipVariableCollectContextList = new ArrayList<>(); + + for (Object equipmentLog : list) { + + if (null == equipmentLog) continue; + + Object[] equipmentLogArr = (Object[]) equipmentLog; + + if (null == equipmentLogArr || equipmentLogArr.length != 6 || StringUtils.isEmpty(equipmentLogArr[0])) continue; + + equipVariableCollectContextList.add(new MesEquipVariableCollectContext(Long.valueOf(equipmentLogArr[0].toString())).copyValue(equipmentLogArr[1], equipmentLogArr[2], equipmentLogArr[3], equipmentLogArr[4], equipmentLogArr[5])); + + } + + return equipVariableCollectContextList; + } + + @Override + public void insertBatchEquipmentLogDetail(String organizeCode, Integer equipId, String userInfo, MesEquipmentRecord equipmentRecord, List equipmentLogList) { + + StringBuffer builder = new StringBuffer(); + + Integer index = 0; + + builder.append(" insert into mes_equipment_log_detail_"); + if (!StringUtils.isEmpty(mesShardingAppendOrg) && mesShardingAppendOrg.toUpperCase().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.name())) builder.append(organizeCode.toLowerCase()).append(MesPcnExtConstWords.E_UNDERLINE); + builder.append(equipId); + builder.append("( id, organize_code, is_valid, is_deleted, create_user, create_date_time, modify_user, modify_date_time,"); + builder.append(" description, remark, system_sync_date_time, system_sync_status,"); + builder.append(" area_code, work_center_code, work_cell_code, equipment_code, process_code, craft_code,"); + builder.append(" mould_record_id, extend, org_equip_id, equip_id, equip_variable_id, equip_variable_name, equip_variable_desc,"); + builder.append(" read_write_flag, data_type, equip_variable_value, variable_type, category_level_two, quality) values "); + + for (MesEquipVariableCollectContext equipmentLog : equipmentLogList) { + if (null == equipmentLog) continue; + + builder.append(" ( "); + + for (int i = 0; i < equipmentLogDetailFields.length; i ++) { + if (StringUtils.isEmpty(equipmentLogDetailFields[i])) continue; + + builder.append(MesPcnExtConstWords.COLON); + builder.append(equipmentLogDetailFields[i]); + builder.append(MesPcnExtConstWords.E_UNDERLINE); + builder.append(index); + if (i != equipmentLogDetailFields.length - 1) builder.append(" , "); + } + + builder.append(" ) "); + if (index != equipmentLogList.size() - 1) builder.append(" , "); + + index ++; + + } + + Query insert = entityManager.createNativeQuery(builder.toString()); + + String nowTime = TimeTool.getNowTime(true); + String orgEquipId = new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(organizeCode).add(equipId.toString()).toString(); + + index = 0; + for (MesEquipVariableCollectContext equipmentLog : equipmentLogList) { + if (null == equipmentLog) continue; + + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.ID, index), snowflakeIdMaker.nextId()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.ORGANIZE_CODE, index), organizeCode); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.IS_VALID, index), CommonEnumUtil.IS_VAILD.VAILD.getValue()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.IS_DELETED, index), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CREATE_USER, index), userInfo); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CREATE_DATE_TIME, index), nowTime); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.MODIFY_USER, index), userInfo); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.MODIFY_DATE_TIME, index), nowTime); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.DESCRIPTION, index), ""); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.REMARK, index), ""); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, index), ""); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, index), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.AREA_CODE, index), equipmentRecord.getAreaCode()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.WORK_CENTER_CODE, index), equipmentRecord.getWorkCenterCode()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.WORK_CELL_CODE, index), equipmentRecord.getWorkCellCode()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIPMENT_CODE, index), equipmentRecord.getEquipmentCode()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.PROCESS_CODE, index), equipmentRecord.getProcessCode()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CRAFT_CODE, index), equipmentRecord.getCraftCode()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.MOULD_RECORD_ID, index), equipmentRecord.getId()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EXTEND, index), equipmentRecord.getProduceSnJson()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.ORG_EQUIP_ID, index), orgEquipId); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_ID, index), equipId); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_ID, index), equipmentLog.getEquipVariableId()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_NAME, index), ""); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_DESC, index), ""); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.READ_WRITE_FLAG, index), equipmentLog.getReadWriteFlag()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.DATA_TYPE, index), equipmentLog.getDataType()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_VALUE, index), equipmentLog.getEquipVariableValue()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.VARIABLE_TYPE, index), equipmentLog.getVariableType()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CATEGORY_LEVEL_TWO, index), ""); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.QUALITY, index), equipmentLog.getQuality()); + + index ++; + } + + insert.executeUpdate(); + + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java index a1dd29a..f023b9d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java @@ -136,17 +136,6 @@ public class MesEquipmentLogService implements IMesEquipmentLogService { } - @Override - public void saveEquipmentLogDetailsById(String organizeCode, String userInfo, Long id) { - - MesEquipmentRecord equipmentRecord = mesEquipmentRecordRepository.getById(id); - - if (null == equipmentRecord) return; - - saveEquipmentLogDetail(organizeCode, userInfo, 50, equipmentRecord); - - } - private void saveEquipmentLogDetail(String organizeCode, String userInfo, Integer qty, MesEquipmentRecord mesEquipmentRecord) { String key = getKey(mesEquipmentRecord); From 930acdd2afd06bc82650fae77f6704aec362b9ea Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Wed, 7 May 2025 14:42:25 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=2046751=20MES=EF=BC=9A=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=AE=9E=E6=97=B6=E5=80=BC=E6=9F=A5=E8=AF=A2=EF=BC=8C=E6=9D=A1?= =?UTF-8?q?=E7=A0=81=E5=AD=97=E6=AE=B5=E6=B2=A1=E6=9C=89=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java index f2f309b..558ef4c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java @@ -259,9 +259,9 @@ public class MesEquipmentLogDao implements IMesEquipmentLogDao { insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CREATE_DATE_TIME, index), nowTime); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.MODIFY_USER, index), userInfo); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.MODIFY_DATE_TIME, index), nowTime); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.DESCRIPTION, index), ""); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.REMARK, index), ""); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, index), ""); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.DESCRIPTION, index), null); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.REMARK, index), null); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, index), null); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, index), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.AREA_CODE, index), equipmentRecord.getAreaCode()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.WORK_CENTER_CODE, index), equipmentRecord.getWorkCenterCode()); @@ -274,13 +274,13 @@ public class MesEquipmentLogDao implements IMesEquipmentLogDao { insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.ORG_EQUIP_ID, index), orgEquipId); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_ID, index), equipId); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_ID, index), equipmentLog.getEquipVariableId()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_NAME, index), ""); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_DESC, index), ""); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_NAME, index), equipmentLog.getTagName()); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_DESC, index), equipmentLog.getTagAddress()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.READ_WRITE_FLAG, index), equipmentLog.getReadWriteFlag()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.DATA_TYPE, index), equipmentLog.getDataType()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.EQUIP_VARIABLE_VALUE, index), equipmentLog.getEquipVariableValue()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.VARIABLE_TYPE, index), equipmentLog.getVariableType()); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CATEGORY_LEVEL_TWO, index), ""); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CATEGORY_LEVEL_TWO, index), StringUtils.isEmpty(equipmentLog.getCategoryLevelTwo()) ? null : equipmentLog.getCategoryLevelTwo()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.QUALITY, index), equipmentLog.getQuality()); index ++; From 122cb3fa32d2b64ab4da89c3df1ae01c7df0906e Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Wed, 7 May 2025 15:48:41 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=2046751=20MES=EF=BC=9A=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=AE=9E=E6=97=B6=E5=80=BC=E6=9F=A5=E8=AF=A2=EF=BC=8C=E6=9D=A1?= =?UTF-8?q?=E7=A0=81=E5=AD=97=E6=AE=B5=E6=B2=A1=E6=9C=89=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java index 558ef4c..bc13065 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java @@ -256,9 +256,9 @@ public class MesEquipmentLogDao implements IMesEquipmentLogDao { insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.IS_VALID, index), CommonEnumUtil.IS_VAILD.VAILD.getValue()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.IS_DELETED, index), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CREATE_USER, index), userInfo); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CREATE_DATE_TIME, index), nowTime); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.CREATE_DATE_TIME, index), StringUtils.isEmpty(equipmentLog.getWriteDatetime()) ? nowTime : equipmentLog.getWriteDatetime()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.MODIFY_USER, index), userInfo); - insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.MODIFY_DATE_TIME, index), nowTime); + insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.MODIFY_DATE_TIME, index), StringUtils.isEmpty(equipmentLog.getWriteDatetime()) ? nowTime : equipmentLog.getWriteDatetime()); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.DESCRIPTION, index), null); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.REMARK, index), null); insert.setParameter(String.format(TWO_S_APPEND, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, index), null); From d8186cb52fb3059a6cc025491dd365df63e77aec Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Thu, 8 May 2025 16:55:37 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E7=A4=BC=E5=98=89=E7=BC=9D=E7=BA=AB?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=B1=87=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/busi/IMesFengRenBatchReportService.java | 15 ++ .../ext/mes/pcn/api/busi/IMesWorkOrderService.java | 3 + .../busi/MesFengRenBatchReportController.java | 73 ++++++ .../busi/MesFengRenBatchReportService.java | 265 +++++++++++++++++++++ .../serviceimpl/busi/MesWorkOrderService.java | 1 + .../function/MesFunctionQueueOrderPushService.java | 2 +- .../step/MesPackageNoGenerateStepService.java | 35 ++- .../method/IMesPackageNoGenerateStepService.java | 14 ++ .../ext/mes/pcn/pojo/util/MesPcnExtConstWords.java | 2 + 9 files changed, 396 insertions(+), 14 deletions(-) create mode 100644 modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesFengRenBatchReportService.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesFengRenBatchReportController.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesFengRenBatchReportService.java diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesFengRenBatchReportService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesFengRenBatchReportService.java new file mode 100644 index 0000000..6746da5 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesFengRenBatchReportService.java @@ -0,0 +1,15 @@ +package cn.estsh.i3plus.ext.mes.pcn.api.busi; + +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesPackageRuleContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderExtModel; +import io.swagger.annotations.ApiOperation; + +public interface IMesFengRenBatchReportService { + + @ApiOperation(value = "缝纫批量汇报获取默认标包") + MesPackageRuleContext queryPackSpecQtyFengRenBatchReport(String organizeCode, String partNo); + + @ApiOperation(value = "缝纫批量汇报") + MesProduceSnPrintModel doFengRenBatchReport(MesWorkOrderExtModel model); +} diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java index ff6731e..de67a36 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java @@ -76,4 +76,7 @@ public interface IMesWorkOrderService { @ApiOperation("根据客户条码查询工单信息") MesWorkOrder getWorkOrderNoByWorkOrderNo(String organizeCode,String workOrderNo); + + @ApiOperation("物料+生产版本获取bom信息") + List findBomList(String organizeCode, MesPart mesPart, String bomVersion); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesFengRenBatchReportController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesFengRenBatchReportController.java new file mode 100644 index 0000000..cfe547a --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesFengRenBatchReportController.java @@ -0,0 +1,73 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesFengRenBatchReportService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method.IMesPackageNoGenerateStepService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderExtModel; +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 com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StopWatch; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Api("缝纫批量汇报") +@Slf4j +@RestController +@RequestMapping(MesCommonConstant.MES_YANFEN) +public class MesFengRenBatchReportController { + + @Autowired + private IMesPackageNoGenerateStepService packageNoGenerateStepService; + + @Autowired + private IMesFengRenBatchReportService fengRenBatchReportService; + + @GetMapping("/feng-ren-batch-report/get-pack-spec-qty") + @ApiOperation(value = "缝纫批量汇报获取默认标包") + public ResultBean queryPackSpecQtyFengRenBatchReport(String organizeCode, String partNo) { + try { + ValidatorBean.checkNotNull(organizeCode, "工厂代码不能为空"); + ValidatorBean.checkNotNull(partNo, "零件编码不能为空"); + return ResultBean.success("查询成功").setResultObject(fengRenBatchReportService.queryPackSpecQtyFengRenBatchReport(organizeCode, partNo)); + } catch (ImppBusiException imppException) { + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @PostMapping("/feng-ren-batch-report/do") + @ApiOperation(value = "缝纫批量汇报") + public ResultBean doFengRenBatchReport(MesWorkOrderExtModel model) { + log.info("工厂{}缝纫批量汇报 --- START --- PARAM:{} --- {}", model.getOrganizeCode(), JSONObject.toJSONString(model), Thread.currentThread().getName()); + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + try { + ValidatorBean.checkNotNull(model.getOrganizeCode(), "工厂代码不能为空"); + ValidatorBean.checkNotNull(model.getModifyUser(), "操作人不能为空"); + ValidatorBean.checkNotNull(model.getPartNo(), "零件编码不能为空"); + ValidatorBean.checkNotNull(model.getWorkOrderNo(), "生产工单号不能为空"); + ValidatorBean.checkNotNull(model.getId(), "生产工单ID不能为空"); + return ResultBean.success("汇报成功").setResultObject(fengRenBatchReportService.doFengRenBatchReport(model)); + } catch (ImppBusiException imppException) { + log.info("工厂{}缝纫批量汇报 --- ImppBusiException --- {} --- {}", model.getOrganizeCode(), imppException.getErrorMsg(), Thread.currentThread().getName()); + return ResultBean.fail(imppException); + } catch (Exception e) { + log.info("工厂{}缝纫批量汇报 --- Exception --- {} --- {}", model.getOrganizeCode(), JSONObject.toJSONString(e), Thread.currentThread().getName()); + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } finally { + stopWatch.stop(); + log.info("工厂{}缝纫批量汇报 --- FINALLY --- 耗时:{} --- {}", model.getOrganizeCode(), stopWatch.getTotalTimeMillis(), Thread.currentThread().getName()); + } + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesFengRenBatchReportService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesFengRenBatchReportService.java new file mode 100644 index 0000000..2b1a9a7 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesFengRenBatchReportService.java @@ -0,0 +1,265 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService; +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesFengRenBatchReportService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductVersionService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method.IMesPackageNoGenerateStepService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesPackageDataContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesPackageRuleContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderExtModel; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.mes.pcn.api.iservice.base.IPartService; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.MathOperation; +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.base.util.StringUtil; +import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StepResult; +import cn.estsh.i3plus.pojo.mes.repository.MesPartProdGroupRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesProductOffLineRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderLogRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.impp.framework.boot.util.SpringContextsUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Slf4j +@Service +public class MesFengRenBatchReportService implements IMesFengRenBatchReportService { + + @Autowired + private IMesPackageNoGenerateStepService packageNoGenerateStepService; + + @Autowired + private IMesProdOrgExtService prodOrgExtService; + + @Autowired + private IPartService partService; + + @Autowired + private IMesProductVersionService productVersionService; + + @Autowired + private IMesWorkOrderService workOrderService; + + @Autowired + private IMesTemplateService templateService; + + @Autowired + private MesWorkOrderRepository workOrderRepository; + + @Autowired + private MesPartProdGroupRepository partProdGroupRepository; + + @Autowired + private MesWorkOrderLogRepository workOrderLogRepository; + + @Autowired + private MesProductOffLineRepository productOffLineRepository; + + @Override + public MesPackageRuleContext queryPackSpecQtyFengRenBatchReport(String organizeCode, String partNo) { + StepResult stepResult = StepResult.getSuccessComplete(); + StationRequestBean reqBean = new StationRequestBean(); + reqBean.setOrganizeCode(organizeCode); + return queryPackSpecQtyFengRenBatchReport(reqBean, stepResult, partNo); + } + + private MesPackageRuleContext queryPackSpecQtyFengRenBatchReport(StationRequestBean reqBean, StepResult stepResult, String partNo) { + + MesPackageRuleContext packageRuleContext = packageNoGenerateStepService.getPackageRuleContext(reqBean, stepResult, partNo, true); + if (null == packageRuleContext) MesPcnException.throwBusiException(!StringUtils.isEmpty(stepResult.getMsg()) ? stepResult.getMsg() : String.format("零件[%s]未维护有效的成品包装主数据!", partNo)); + return packageRuleContext; + } + + @Override + public MesProduceSnPrintModel doFengRenBatchReport(MesWorkOrderExtModel model) { + + //验证工单有效性 + MesWorkOrder workOrderDb = workOrderRepository.getByProperty( + new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID}, + new Object[]{model.getId(), model.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + if (null == workOrderDb) MesPcnException.throwBusiException("汇报失败:生产工单[%s]信息不存在!", model.getWorkOrderNo()); + + if (!StringUtils.isEmpty(workOrderDb.getOrderFlag()) && MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(workOrderDb.getOrderFlag())) + MesPcnException.throwBusiException("汇报失败:生产工单[%s]为试制工单!", model.getWorkOrderNo()); + + if (!MesExtEnumUtil.ORDER_STATUS.checkNosortAllowStatus(workOrderDb.getWorkOrderStatus())) + MesPcnException.throwBusiException("汇报失败:生产工单[%s]信息当前状态[%s]!", MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrderDb.getWorkOrderStatus())); + + //验证超工单 + Double reportQty = MathOperation.add(new Double(model.getNum()), workOrderDb.getReportedQty()); + Integer workOrderStatus = MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue(); + if (MathOperation.compareTo(reportQty, workOrderDb.getQty()) > 0) { + MesWorkCenter workCenter = prodOrgExtService.getWorkCenterDb(model.getOrganizeCode(), workOrderDb.getWorkCenterCode()); + + if (StringUtils.isEmpty(workCenter.getIsCheckOrderQty()) || workCenter.getIsCheckOrderQty().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0) + MesPcnException.throwMesBusiException("汇报失败:工单号[%s]计划数量[%s]已报工数量[%s],当前不允许超工单!", workOrderDb.getWorkOrderNo(), workOrderDb.getQty(), workOrderDb.getReportedQty()); + + Double rate = MathOperation.div((MathOperation.sub(reportQty, workOrderDb.getQty())), workOrderDb.getQty()); + if (MathOperation.compareTo(rate, MathOperation.div(workCenter.getOrderRate(), new Double(MesPcnExtConstWords.ONE_HUNDRED))) > 0) + MesPcnException.throwMesBusiException("汇报失败:请检查工单数量,工单号[%s]计划数量[%s]已报工数量[%s]超工单比例[%s]!", workOrderDb.getWorkOrderNo(), workOrderDb.getQty(), workOrderDb.getReportedQty(), workCenter.getOrderRate()); + + } + + //查询物料信息 + MesPart mesPart = partService.getPartByNo(workOrderDb.getOrganizeCode(), workOrderDb.getPartNo()); + if (null == mesPart) MesPcnException.throwBusiException( + "汇报失败:生产工单[%s]关联的零件编码[%s]信息不存在!", workOrderDb.getWorkOrderNo(), workOrderDb.getPartNo()); + + //获取生产版本 + MesProductVersion mesProductVersion = productVersionService.getMesProductVersion(workOrderDb.getOrganizeCode(), workOrderDb.getPartNo(), workOrderDb.getProductVersion()); + if (null == mesProductVersion) MesPcnException.throwBusiException( + "汇报失败:生产工单[%s]零件编码[%s]生产版本[%s]未维护生产版本信息!", workOrderDb.getWorkOrderNo(), workOrderDb.getPartNo(), workOrderDb.getProductVersion()); + + String bomVersion = mesProductVersion.getAlternativePartList(); + + // partProdGroupCode 不为空,查询的数据不为空,查询数据中的获取bom方式不为空且枚举是 基于默认BOM ,才bomversion = null 否则都是通过生产版本找bom + if (!StringUtil.isEmpty(workOrderDb.getPartProdGroupCode())) { + DdlPackBean partProdBean = DdlPackBean.getDdlPackBean(workOrderDb.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(workOrderDb.getPartProdGroupCode(), MesPcnExtConstWords.PART_PROD_GROUP_CODE, partProdBean); + List mesPartProdGroupList = partProdGroupRepository.findByHqlTopWhere(partProdBean, 1); + + // 没有零件生产组用默认找生产版本、有的话找获取bom方式枚举,枚举是基于默认BOM 则直接找 + MesPartProdGroup mesPartProdGroup = !CollectionUtils.isEmpty(mesPartProdGroupList) ? mesPartProdGroupList.get(0) : null; + if (null != mesPartProdGroup && !StringUtils.isEmpty(mesPartProdGroup.getEnableBomVersion()) && + mesPartProdGroup.getEnableBomVersion() == MesExtEnumUtil.ENABLE_BOM_VERSION.ENABLE_BOM_VERSION_2.getValue()) { + bomVersion = MesPcnExtConstWords.EMPTY; + } + } + + log.info("工厂{}缝纫批量汇报 --- PROCESS_INFO --- MesWorkOrderDB:{} --- MesProductVersion:{} --- bomVersion:{} --- {}", model.getOrganizeCode(), JSONObject.toJSONString(workOrderDb), JSONObject.toJSONString(mesProductVersion), bomVersion, Thread.currentThread().getName()); + + //物料+生产版本获取bom信息 + List mesBoms = workOrderService.findBomList(mesPart.getOrganizeCode(), mesPart, bomVersion); + + //获取标包, 编码规则, 模版代码 + StepResult stepResult = StepResult.getSuccessComplete(); + StationRequestBean reqBean = new StationRequestBean(); + reqBean.setOrganizeCode(model.getOrganizeCode()); + reqBean.setWorkCenterCode(workOrderDb.getWorkCenterCode()); + reqBean.setUserInfo(model.getModifyUser()); + reqBean.getDataMap().put(MesPcnExtConstWords.MESSAGE, "缝纫批量汇报"); + MesPackageDataContext packageDataContext = (MesPackageDataContext) queryPackSpecQtyFengRenBatchReport(reqBean, stepResult, model.getPartNo()); + + //计数 + Double unCompleteQty = MathOperation.sub(workOrderDb.getQty(), workOrderDb.getReportedQty()); + if (MathOperation.compareTo(unCompleteQty, new Double(0)) < 0) unCompleteQty = new Double(0); + if (MathOperation.compareTo(reportQty, workOrderDb.getQty()) < 0) workOrderStatus = MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue(); + + log.info("工厂{}缝纫批量汇报 --- PROCESS_INFO --- MesBomSize:{} --- MesPackageDataContext:{} --- workOrderStatus:{} --- reportQty:{} --- {}", model.getOrganizeCode(), mesBoms.size(), JSONObject.toJSONString(packageDataContext), workOrderStatus, reportQty, Thread.currentThread().getName()); + + //查询模版信息 + MesLabelTemplate labelTemplate = templateService.getLabelTemplate(packageDataContext.getPackageTemplate(), reqBean.getOrganizeCode()); + IPrintTemplateStrategyService strategyService = (null != labelTemplate && !StringUtils.isEmpty(labelTemplate.getMethodCode())) ? (IPrintTemplateStrategyService) SpringContextsUtil.getBean(labelTemplate.getMethodCode()) : null; + if (null == strategyService) MesPcnException.throwBusiException( + "汇报失败:生产工单[%s]关联的零件编码[%s]未配置有效的包装条码模版[%s]信息!", workOrderDb.getWorkOrderNo(), workOrderDb.getPartNo()); + + //生成箱条码集合 + packageDataContext.setGenerateType(MesExtEnumUtil.PACKING_RULE_GENERATE_TYPE.PACKAGE.getValue()); + packageDataContext.setPartPackWorkOrderNo(workOrderDb.getWorkOrderNo()); + packageNoGenerateStepService.doHandlePackagePrint(reqBean, stepResult, packageDataContext, null, packageNoGenerateStepService.generateVirtualPs(packageDataContext.getQty()), true); + //进行打印 + List packageList = (List) stepResult.getDataCollection(); + MesProduceSnPrintModel printModel = packageNoGenerateStepService.doPrintPackageNo(reqBean, null, stepResult, packageDataContext, labelTemplate, strategyService, packageList, true); + + //更新工单 + updateMesWorkOrder(workOrderDb, model, workOrderStatus, reportQty, unCompleteQty); + + //遍历写汇报 + List mesProductOffLineList = new ArrayList<>(); + for (MesPackage mesPackage : packageList) { + if (null == mesPackage) continue; + String nowTime = StringUtil.isEmpty(model.getDescription()) ? TimeTool.getNowTime(true) : model.getDescription(); + for (MesBom mesBom : mesBoms) { + mesProductOffLineList.add(creatMesProductOffLine(model.getModifyUser(), workOrderDb, mesProductVersion, mesPackage.getPackageOneCode(), mesPackage.getPackageNo(), mesPackage.getQty(), mesBom, nowTime, mesBoms.size())); + } + } + productOffLineRepository.saveAll(mesProductOffLineList); + + log.info("工厂{}缝纫批量汇报 --- PROCESS_INFO --- MesPackageList:{} --- {}", model.getOrganizeCode(), JSONObject.toJSONString(packageList), Thread.currentThread().getName()); + + return printModel; + } + + private void updateMesWorkOrder(MesWorkOrder mesWorkOrder, MesWorkOrderExtModel model, Integer workOrderStatus, Double reportQty, Double unCompleteQty) { + ConvertBean.serviceModelUpdate(mesWorkOrder, model.getModifyUser()); + String now = (new SimpleDateFormat(MesPcnExtConstWords.DATE_FORMAT_SSS)).format(new Date()); + workOrderRepository.updateByPropertiesNoSync( + new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE}, + new Object[]{mesWorkOrder.getId(), mesWorkOrder.getOrganizeCode()}, + new String[]{MesPcnExtConstWords.WORK_ORDER_STATUS, MesPcnExtConstWords.REPORT_QTY, MesPcnExtConstWords.COMPLETE_QTY, MesPcnExtConstWords.UN_COMPLETE_QTY, + MesPcnExtConstWords.DESCRIPTION, MesPcnExtConstWords.REMARK, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME}, + new Object[]{workOrderStatus, reportQty, reportQty, unCompleteQty, + model.getDescription(), model.getDescription(), now, model.getModifyUser(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.EMPTY}); + + MesWorkOrderLog workOrderLog = new MesWorkOrderLog(); + BeanUtils.copyProperties(mesWorkOrder, workOrderLog, MesPcnExtConstWords.ID, + MesPcnExtConstWords.CREATE_USER, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME); + workOrderLog.setType(MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT.getValue()); + workOrderLog.setModifyQty(new Double(model.getNum())); + workOrderLog.setDescription(model.getDescription()); + workOrderLog.setRemark(model.getDescription()); + workOrderLog.setWorkOrderStatus(workOrderStatus); + workOrderLog.setReportedQty(reportQty); + workOrderLog.setCompleteQty(reportQty); + workOrderLog.setUnCompleteQty(unCompleteQty); + workOrderLog.setCreateDatetime(model.getModifyUser()); + workOrderLog.setModifyUser(model.getModifyUser()); + workOrderLog.setCreateDatetime(now); + workOrderLog.setModifyDatetime(now); + workOrderLogRepository.insert(workOrderLog); + } + + private MesProductOffLine creatMesProductOffLine(String userName, MesWorkOrder workOrderDb, MesProductVersion mesProductVersion, + String reportSn, String serialNumber, Double num, MesBom mesBom, String nowTime, Integer bomTotalSize) { + MesProductOffLine newMesProductOffLine; + newMesProductOffLine = new MesProductOffLine(); + newMesProductOffLine.setReportPartNo(workOrderDb.getPartNo()); + newMesProductOffLine.setReportPartNameRdd(workOrderDb.getPartName()); + newMesProductOffLine.setReportSn(reportSn); + newMesProductOffLine.setSerialNumber(serialNumber); + newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo()); + newMesProductOffLine.setItemPartName(mesBom.getItemPartName()); + newMesProductOffLine.setItemQty(MathOperation.mul(num, mesBom.getItemQty())); + newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint()); + newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint()); + newMesProductOffLine.setQty(num); + newMesProductOffLine.setBomVersion(workOrderDb.getProductVersion()); + newMesProductOffLine.setUnit(mesBom.getUnit()); + newMesProductOffLine.setItemUnit(mesBom.getItemUnit()); + newMesProductOffLine.setWorkOrderNo(workOrderDb.getWorkOrderNo()); + newMesProductOffLine.setWorkOrderType(workOrderDb.getWorkOrderType()); + newMesProductOffLine.setWorkCenterCode(mesProductVersion.getWorkCenterCode()); + newMesProductOffLine.setWorkCellCode(workOrderDb.getWorkCellCode()); + newMesProductOffLine.setReportType(MesExtEnumUtil.MES_ALL_REPORT_TYPE.REPORT.getValue()); + newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode()); + newMesProductOffLine.setOrganizeCode(workOrderDb.getOrganizeCode()); + newMesProductOffLine.setDescription(nowTime); + newMesProductOffLine.setBomTotalSize(bomTotalSize); + newMesProductOffLine.setBomCode(mesBom.getBomCode()); + ConvertBean.serviceModelInitialize(newMesProductOffLine, userName); + return newMesProductOffLine; + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index b686f71..9a851d9 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -324,6 +324,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { mesWorkOrderLogRepository.insert(workOrderLog); } + @Override public List findBomList(String organizeCode, MesPart mesPart, String bomVersion) { List bomData = new ArrayList<>(); // 递归展开 BOM diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionQueueOrderPushService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionQueueOrderPushService.java index 4c419da..b0594f8 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionQueueOrderPushService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionQueueOrderPushService.java @@ -72,7 +72,7 @@ public class MesFunctionQueueOrderPushService extends BaseSwsService implements this.sendMessage(reqBean, new StationResultBean().writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PICK.getValue()), String.format("[%s]%s: %s", buttonDynamicModel.getButtonName(), BUSI_TYPE.valueOfDescription(paramMap.get(MesPcnExtConstWords.BUSI_TYPE)), JSONObject.toJSONString(paramMap)), - MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PICK.getValue()); resultMap.put(MesPcnExtConstWords.DATA_TYPE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT.getValue()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesPackageNoGenerateStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesPackageNoGenerateStepService.java index d4214bf..7dae7ba 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesPackageNoGenerateStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesPackageNoGenerateStepService.java @@ -295,7 +295,8 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements } //生成包装及明细, 根据标包数量判断是否执行打印 [递归] - private List doHandlePackagePrint(StationRequestBean reqBean, StepResult stepResult, MesPackageRuleContext packageRuleContext, + @Override + public List doHandlePackagePrint(StationRequestBean reqBean, StepResult stepResult, MesPackageRuleContext packageRuleContext, List packageDataContextList, List productSnList, Boolean isAsyn) { //缓存的包装条码明细数量 @@ -513,7 +514,8 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements this.sendMessage(reqBean, new StationResultBean().writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.ERROR.getValue()), webMsg, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); this.cacheException(reqBean, reqBean.getStepName(), webMsg, e, true); } else { - this.cacheException(reqBean, reqBean.getStepName(), webMsg, e, false); + if (!StringUtils.isEmpty(reqBean.getWorkCellCode())) this.cacheException(reqBean, reqBean.getStepName(), webMsg, e, false); + else log.info("工厂{}{} --- Exception --- {} --- {}", reqBean.getOrganizeCode(), reqBean.getDataMap().get(MesPcnExtConstWords.MESSAGE), JSONObject.toJSONString(e), Thread.currentThread().getName()); MesPcnException.throwBusiException(webMsg); } } @@ -521,7 +523,8 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements } //进行打印 - private void doPrintPackageNo(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesPackageRuleContext packageRuleContext, + @Override + public MesProduceSnPrintModel doPrintPackageNo(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesPackageRuleContext packageRuleContext, MesLabelTemplate labelTemplate, IPrintTemplateStrategyService strategyService, List packageList, Boolean isAsyn) { if (null == strategyService) { //查询模版信息 @@ -545,7 +548,7 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements MesProduceSnPrintModel printModel = null; try { - printModel = strategyService.execute(null, mesProduceSnPrintModel, null, stepResult, reqBean, true); + printModel = strategyService.execute(null, mesProduceSnPrintModel, null, stepResult, reqBean, !StringUtils.isEmpty(reqBean.getWorkCellCode())); } catch (ImppBusiException e) { if (!isAsyn) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), e.getErrorDetail()); else MesPcnException.throwBusiException(e.getErrorDetail()); @@ -556,23 +559,28 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements this.cacheException(reqBean, reqBean.getStepName(), webMsg, e, true); foundExThrowNoShowMsg(); } else { - this.cacheException(reqBean, reqBean.getStepName(), webMsg, e, false); + if (!StringUtils.isEmpty(reqBean.getWorkCellCode())) this.cacheException(reqBean, reqBean.getStepName(), webMsg, e, false); + else log.info("工厂{}{} --- Exception --- {} --- {}", reqBean.getOrganizeCode(), reqBean.getDataMap().get(MesPcnExtConstWords.MESSAGE), JSONObject.toJSONString(e), Thread.currentThread().getName()); MesPcnException.throwBusiException(webMsg); } } - if (CollectionUtils.isEmpty(printModel.getPrintContextList())) return; + if (CollectionUtils.isEmpty(printModel.getPrintContextList())) return printModel; //发送打印信息 - this.sendMessage(reqBean, new StationResultBean() - .busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.CUSTOM_COMPONENT.getValue()) - .dataType(MesPcnEnumUtil.STATION_DATA_TYPE.FILE.getValue()) - .customPageName(MesPcnExtConstWords.SORT_WORK_CENTER_PRINT) - .resultObj(printModel.getPrintContextList()) - ); + if (!StringUtils.isEmpty(reqBean.getWorkCellCode())){ + this.sendMessage(reqBean, new StationResultBean() + .busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.CUSTOM_COMPONENT.getValue()) + .dataType(MesPcnEnumUtil.STATION_DATA_TYPE.FILE.getValue()) + .customPageName(MesPcnExtConstWords.SORT_WORK_CENTER_PRINT) + .resultObj(printModel.getPrintContextList()) + ); + } //保存打印记录日志 printedSnLogRepository.saveAll(printModel.getMesPrintedSnLogList()); + + return printModel; } //强制打包业务处理 @@ -689,7 +697,8 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements } //生成虚拟条码,零件打包不写包装明细数据, 只是为了适配工步中的方法去递归生成包装条码 - private List generateVirtualPs(Double qty) { + @Override + public List generateVirtualPs(Double qty) { List virtualPsList = new ArrayList<>(); for (int i = 0; i < qty.intValue(); i ++) { virtualPsList.add(String.valueOf(i)); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/method/IMesPackageNoGenerateStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/method/IMesPackageNoGenerateStepService.java index ced96d8..24e9c58 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/method/IMesPackageNoGenerateStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/method/IMesPackageNoGenerateStepService.java @@ -1,7 +1,10 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesPackageDataContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesPackageRuleContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel; +import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate; import cn.estsh.i3plus.pojo.mes.bean.MesPackage; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; @@ -37,4 +40,15 @@ public interface IMesPackageNoGenerateStepService { @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = {ImppBusiException.class, Exception.class}) void doHandlePackagePart(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesPackageDataContext packageDataContext); + @ApiOperation(value = "生成包装及明细, 根据标包数量判断是否执行打印") + List doHandlePackagePrint(StationRequestBean reqBean, StepResult stepResult, MesPackageRuleContext packageRuleContext, + List packageDataContextList, List productSnList, Boolean isAsyn); + + @ApiOperation(value = "进行打印") + MesProduceSnPrintModel doPrintPackageNo(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesPackageRuleContext packageRuleContext, + MesLabelTemplate labelTemplate, IPrintTemplateStrategyService strategyService, List packageList, Boolean isAsyn); + + @ApiOperation(value = "生成虚拟条码,零件打包不写包装明细数据, 只是为了适配工步中的方法去递归生成包装条码") + List generateVirtualPs(Double qty); + } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index d97e1e8..539d135 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -116,6 +116,8 @@ public class MesPcnExtConstWords { public static final String EQUIP_VARIABLE_VALUE = "equipVariableValue"; // 模具号 public static final String MOULD_NO = "mouldNo"; + // 汇报数 + public static final String REPORT_QTY = "reportQty"; // 工单完成数 public static final String COMPLETE_QTY = "completeQty"; // 工单未完成数 From ce7e467540bd9738d29b84c9618b0fb0b1e665f0 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Thu, 8 May 2025 19:29:30 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E7=A4=BC=E5=98=89=E7=BC=9D=E7=BA=AB?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=B1=87=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../busi/MesFengRenBatchReportService.java | 28 ++++--- .../YfaiPackageNumberRuleStrategyService.java | 11 ++- .../YfaiPackageNoFengRenPrintStrategy.java | 97 ++++++++++++++++++++++ .../ext/mes/pcn/pojo/util/MesPcnExtConstWords.java | 2 +- 4 files changed, 123 insertions(+), 15 deletions(-) create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/YfaiPackageNoFengRenPrintStrategy.java diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesFengRenBatchReportService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesFengRenBatchReportService.java index 2b1a9a7..3feeaa5 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesFengRenBatchReportService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesFengRenBatchReportService.java @@ -108,15 +108,15 @@ public class MesFengRenBatchReportService implements IMesFengRenBatchReportServi MesPcnException.throwBusiException("汇报失败:生产工单[%s]信息当前状态[%s]!", MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrderDb.getWorkOrderStatus())); //验证超工单 - Double reportQty = MathOperation.add(new Double(model.getNum()), workOrderDb.getReportedQty()); + Double reportedQty = MathOperation.add(new Double(model.getNum()), workOrderDb.getReportedQty()); Integer workOrderStatus = MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue(); - if (MathOperation.compareTo(reportQty, workOrderDb.getQty()) > 0) { + if (MathOperation.compareTo(reportedQty, workOrderDb.getQty()) > 0) { MesWorkCenter workCenter = prodOrgExtService.getWorkCenterDb(model.getOrganizeCode(), workOrderDb.getWorkCenterCode()); if (StringUtils.isEmpty(workCenter.getIsCheckOrderQty()) || workCenter.getIsCheckOrderQty().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0) MesPcnException.throwMesBusiException("汇报失败:工单号[%s]计划数量[%s]已报工数量[%s],当前不允许超工单!", workOrderDb.getWorkOrderNo(), workOrderDb.getQty(), workOrderDb.getReportedQty()); - Double rate = MathOperation.div((MathOperation.sub(reportQty, workOrderDb.getQty())), workOrderDb.getQty()); + Double rate = MathOperation.div((MathOperation.sub(reportedQty, workOrderDb.getQty())), workOrderDb.getQty()); if (MathOperation.compareTo(rate, MathOperation.div(workCenter.getOrderRate(), new Double(MesPcnExtConstWords.ONE_HUNDRED))) > 0) MesPcnException.throwMesBusiException("汇报失败:请检查工单数量,工单号[%s]计划数量[%s]已报工数量[%s]超工单比例[%s]!", workOrderDb.getWorkOrderNo(), workOrderDb.getQty(), workOrderDb.getReportedQty(), workCenter.getOrderRate()); @@ -165,9 +165,9 @@ public class MesFengRenBatchReportService implements IMesFengRenBatchReportServi //计数 Double unCompleteQty = MathOperation.sub(workOrderDb.getQty(), workOrderDb.getReportedQty()); if (MathOperation.compareTo(unCompleteQty, new Double(0)) < 0) unCompleteQty = new Double(0); - if (MathOperation.compareTo(reportQty, workOrderDb.getQty()) < 0) workOrderStatus = MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue(); + if (MathOperation.compareTo(reportedQty, workOrderDb.getQty()) < 0) workOrderStatus = MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue(); - log.info("工厂{}缝纫批量汇报 --- PROCESS_INFO --- MesBomSize:{} --- MesPackageDataContext:{} --- workOrderStatus:{} --- reportQty:{} --- {}", model.getOrganizeCode(), mesBoms.size(), JSONObject.toJSONString(packageDataContext), workOrderStatus, reportQty, Thread.currentThread().getName()); + log.info("工厂{}缝纫批量汇报 --- PROCESS_INFO --- MesBomSize:{} --- MesPackageDataContext:{} --- workOrderStatus:{} --- reportedQty:{} --- {}", model.getOrganizeCode(), mesBoms.size(), JSONObject.toJSONString(packageDataContext), workOrderStatus, reportedQty, Thread.currentThread().getName()); //查询模版信息 MesLabelTemplate labelTemplate = templateService.getLabelTemplate(packageDataContext.getPackageTemplate(), reqBean.getOrganizeCode()); @@ -178,13 +178,15 @@ public class MesFengRenBatchReportService implements IMesFengRenBatchReportServi //生成箱条码集合 packageDataContext.setGenerateType(MesExtEnumUtil.PACKING_RULE_GENERATE_TYPE.PACKAGE.getValue()); packageDataContext.setPartPackWorkOrderNo(workOrderDb.getWorkOrderNo()); + packageDataContext.setQty(new Double(model.getNum())); + stepResult.setDataCollection(new ArrayList()); packageNoGenerateStepService.doHandlePackagePrint(reqBean, stepResult, packageDataContext, null, packageNoGenerateStepService.generateVirtualPs(packageDataContext.getQty()), true); //进行打印 List packageList = (List) stepResult.getDataCollection(); MesProduceSnPrintModel printModel = packageNoGenerateStepService.doPrintPackageNo(reqBean, null, stepResult, packageDataContext, labelTemplate, strategyService, packageList, true); //更新工单 - updateMesWorkOrder(workOrderDb, model, workOrderStatus, reportQty, unCompleteQty); + updateMesWorkOrder(workOrderDb, model, workOrderStatus, reportedQty, unCompleteQty); //遍历写汇报 List mesProductOffLineList = new ArrayList<>(); @@ -196,21 +198,22 @@ public class MesFengRenBatchReportService implements IMesFengRenBatchReportServi } } productOffLineRepository.saveAll(mesProductOffLineList); + log.info("工厂{}缝纫批量汇报 --- PROCESS_INFO --- MesProductOffLine:{} --- {}", model.getOrganizeCode(), JSONObject.toJSONString(mesProductOffLineList), Thread.currentThread().getName()); log.info("工厂{}缝纫批量汇报 --- PROCESS_INFO --- MesPackageList:{} --- {}", model.getOrganizeCode(), JSONObject.toJSONString(packageList), Thread.currentThread().getName()); return printModel; } - private void updateMesWorkOrder(MesWorkOrder mesWorkOrder, MesWorkOrderExtModel model, Integer workOrderStatus, Double reportQty, Double unCompleteQty) { + private void updateMesWorkOrder(MesWorkOrder mesWorkOrder, MesWorkOrderExtModel model, Integer workOrderStatus, Double reportedQty, Double unCompleteQty) { ConvertBean.serviceModelUpdate(mesWorkOrder, model.getModifyUser()); String now = (new SimpleDateFormat(MesPcnExtConstWords.DATE_FORMAT_SSS)).format(new Date()); workOrderRepository.updateByPropertiesNoSync( new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE}, new Object[]{mesWorkOrder.getId(), mesWorkOrder.getOrganizeCode()}, - new String[]{MesPcnExtConstWords.WORK_ORDER_STATUS, MesPcnExtConstWords.REPORT_QTY, MesPcnExtConstWords.COMPLETE_QTY, MesPcnExtConstWords.UN_COMPLETE_QTY, + new String[]{MesPcnExtConstWords.WORK_ORDER_STATUS, MesPcnExtConstWords.REPORTED_QTY, MesPcnExtConstWords.COMPLETE_QTY, MesPcnExtConstWords.UN_COMPLETE_QTY, MesPcnExtConstWords.DESCRIPTION, MesPcnExtConstWords.REMARK, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME}, - new Object[]{workOrderStatus, reportQty, reportQty, unCompleteQty, + new Object[]{workOrderStatus, reportedQty, reportedQty, unCompleteQty, model.getDescription(), model.getDescription(), now, model.getModifyUser(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.EMPTY}); MesWorkOrderLog workOrderLog = new MesWorkOrderLog(); @@ -221,8 +224,8 @@ public class MesFengRenBatchReportService implements IMesFengRenBatchReportServi workOrderLog.setDescription(model.getDescription()); workOrderLog.setRemark(model.getDescription()); workOrderLog.setWorkOrderStatus(workOrderStatus); - workOrderLog.setReportedQty(reportQty); - workOrderLog.setCompleteQty(reportQty); + workOrderLog.setReportedQty(reportedQty); + workOrderLog.setCompleteQty(reportedQty); workOrderLog.setUnCompleteQty(unCompleteQty); workOrderLog.setCreateDatetime(model.getModifyUser()); workOrderLog.setModifyUser(model.getModifyUser()); @@ -233,8 +236,7 @@ public class MesFengRenBatchReportService implements IMesFengRenBatchReportServi private MesProductOffLine creatMesProductOffLine(String userName, MesWorkOrder workOrderDb, MesProductVersion mesProductVersion, String reportSn, String serialNumber, Double num, MesBom mesBom, String nowTime, Integer bomTotalSize) { - MesProductOffLine newMesProductOffLine; - newMesProductOffLine = new MesProductOffLine(); + MesProductOffLine newMesProductOffLine = new MesProductOffLine(); newMesProductOffLine.setReportPartNo(workOrderDb.getPartNo()); newMesProductOffLine.setReportPartNameRdd(workOrderDb.getPartName()); newMesProductOffLine.setReportSn(reportSn); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/YfaiPackageNumberRuleStrategyService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/YfaiPackageNumberRuleStrategyService.java index ca660e1..073d2c0 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/YfaiPackageNumberRuleStrategyService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/YfaiPackageNumberRuleStrategyService.java @@ -44,6 +44,8 @@ public class YfaiPackageNumberRuleStrategyService implements INumberRulePackAttr //20241223 {YEAR}{MONTH}{DAY} //| {SPILTRULE} + private final static String DR_QTY = "DR_QTY"; + @Override public GenSerialNoModel execute(GenSerialNoModel genSerialNoModel) { Map dataMap = genSerialNoModel.getDataMap(); @@ -57,7 +59,8 @@ public class YfaiPackageNumberRuleStrategyService implements INumberRulePackAttr genSerialNoModel.setDynamicRule( new StringJoiner(MesPcnExtConstWords.COMMA) .add(((new SimpleDateFormat(MesPcnExtConstWords.DATE_FORMAT_SHORT)).format(new Date()))) - .add(String.format("%.1f", qty)) + //.add(String.format("%.1f", qty)) + .add(DR_QTY) .add(unit) .toString() ); @@ -78,6 +81,12 @@ public class YfaiPackageNumberRuleStrategyService implements INumberRulePackAttr } catch (Exception e) { packageOneCode = serialNo; } + + Map dataMap = genSerialNoModel.getDataMap(); + MesPackageRuleContext packageRuleContext = !CollectionUtils.isEmpty(dataMap) ? (MesPackageRuleContext) dataMap.get(MesPackageRuleContext.class.getSimpleName()) : null; + Double qty = (!CollectionUtils.isEmpty(dataMap) && dataMap.containsKey(MesPcnExtConstWords.QTY)) ? (Double) dataMap.get(MesPcnExtConstWords.QTY) : null; + if (StringUtils.isEmpty(qty)) qty = null != packageRuleContext ? packageRuleContext.getPackSpecQty() : new Double(1); + serialNo = serialNo.replace(DR_QTY, String.format("%.1f", qty)); genSerialNoModel.putDataMap(serialNo, packageOneCode); return serialNo; } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/YfaiPackageNoFengRenPrintStrategy.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/YfaiPackageNoFengRenPrintStrategy.java new file mode 100644 index 0000000..3c3558c --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/YfaiPackageNoFengRenPrintStrategy.java @@ -0,0 +1,97 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.strategy; + +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesCustomerPartService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart; +import cn.estsh.i3plus.pojo.mes.bean.MesNumberRule; +import cn.estsh.i3plus.pojo.mes.bean.MesPackage; +import cn.estsh.i3plus.pojo.mes.bean.MesPrintedSnLog; +import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StepResult; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.*; + +/** + * @Description : 包装条码打印 + * @Reference : + * @Author : wangjie + * @CreateDate : 2024/9/29 16:43 + * @Modify: + **/ +@Component +@Slf4j +public class YfaiPackageNoFengRenPrintStrategy implements IPrintTemplateStrategyService { + + @Autowired + private IMesCustomerPartService mesCustomerPartService; + + @Override + public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel model, + MesNumberRule numberRule, StepResult stepResult, StationRequestBean reqBean, + Boolean isStep) { + + MesCustomerPart customerPart = (!Objects.isNull(genSerialNoModel) && + !CollectionUtils.isEmpty(genSerialNoModel.getDataMap()) && genSerialNoModel.getDataMap().containsKey(MesCustomerPart.class.getSimpleName())) + ? (MesCustomerPart) genSerialNoModel.getDataMap().get(MesCustomerPart.class.getSimpleName()) + : mesCustomerPartService.getMesCustomerPart(model.getOrganizeCode(), model.getPartNo()); + + // 返回的结果集合 + List> printDataMapList = new ArrayList<>(); + if (!isStep) { + model.getPackageList().forEach(o -> printDataMapList.add(getPrintMap(model, o, customerPart))); + model.setPrintContextList(printDataMapList); + } else { + model.getPackageList().forEach(o -> printDataMapList.add(getPrintMap(model, o, customerPart))); + model.getPrintContextList().add(packResultMap(model, printDataMapList)); + } + + return model; + } + + private Map packResultMap(MesProduceSnPrintModel printModel, List> printTemplateDateList) { + Map resultMap = new HashMap<>(); + resultMap.put(MesPcnExtConstWords.LABEL_TEMPLATE, printModel.getMesLabelTemplate()); + resultMap.put(MesPcnExtConstWords.TEMPLATE_DATA, printTemplateDateList); + resultMap.put(MesPcnExtConstWords.TEMPLATE_CODE, printModel.getMesLabelTemplate().getTemplateCode()); + resultMap.put(MesPcnExtConstWords.PRINTER, printModel.getPrinter()); + return resultMap; + } + + private MesPrintedSnLog getMesPrintedSnLog(MesPackage packageDb, String userName, String printData) { + MesPrintedSnLog snLog = new MesPrintedSnLog(); + snLog.setBarcode(packageDb.getPackageNo()); + snLog.setPartNo(packageDb.getPartNo()); + snLog.setPartName(packageDb.getPartName()); + snLog.setPrintData(printData); + snLog.setOrganizeCode(packageDb.getOrganizeCode()); + ConvertBean.serviceModelInitialize(snLog, userName); + return snLog; + } + + private Map getPrintMap(MesProduceSnPrintModel model, MesPackage packageDb, MesCustomerPart customerPart) { + Map resultMap = new HashMap<>(); + resultMap.put(MesPcnExtConstWords.PART_NO, packageDb.getPartNo()); + resultMap.put(MesPcnExtConstWords.PART_NAME, packageDb.getPartName()); + resultMap.put(MesPcnExtConstWords.CUST_PART_NO, null == customerPart ? MesPcnExtConstWords.EMPTY : customerPart.getCustPartNo()); + resultMap.put(MesPcnExtConstWords.QR_CODE, packageDb.getPackageNo()); + resultMap.put(MesPcnExtConstWords.QTY, packageDb.getQty().intValue()); + resultMap.put(MesPcnExtConstWords.UNIT, packageDb.getUnit()); + resultMap.put(MesPcnExtConstWords.PACK_SPEC_QTY, packageDb.getPackSpecQty().intValue()); + resultMap.put(MesPcnExtConstWords.LOT_NO, packageDb.getLotNo().replaceAll(MesPcnExtConstWords.SEPARATOR, MesPcnExtConstWords.SLANT_R)); + resultMap.put(MesPcnExtConstWords.BAR_CODE, packageDb.getPackageOneCode()); + resultMap.put(MesPcnExtConstWords.MODIFY_DATE_TIME, packageDb.getModifyDatetime().replaceAll(MesPcnExtConstWords.SEPARATOR, MesPcnExtConstWords.SLANT_R)); + model.getMesPrintedSnLogList().add(getMesPrintedSnLog(packageDb, model.getUserName(), JSONObject.toJSONString(resultMap))); + return resultMap; + } + +} diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index 539d135..e59c27b 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -117,7 +117,7 @@ public class MesPcnExtConstWords { // 模具号 public static final String MOULD_NO = "mouldNo"; // 汇报数 - public static final String REPORT_QTY = "reportQty"; + public static final String REPORTED_QTY = "reportedQty"; // 工单完成数 public static final String COMPLETE_QTY = "completeQty"; // 工单未完成数