From 470aff1fd6bb47bbf210fcb0e5e9f2ba7c45abe8 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Tue, 18 Mar 2025 20:26:45 +0800 Subject: [PATCH 1/7] =?UTF-8?q?45573=20PCN-=E6=89=93=E5=8D=B0=E6=96=B9?= =?UTF-8?q?=E6=B3=95=EF=BC=9AcustomFieldPrintStrategy=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E6=89=93=E5=8D=B0=E5=87=BA=E5=85=AB=E4=BD=8D?= =?UTF-8?q?=E5=B9=B4=E6=9C=88=E6=97=A5=E7=9A=84=E6=97=A5=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/print/strategy/CustomFieldPrintStrategy.java | 2 ++ .../cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/CustomFieldPrintStrategy.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/CustomFieldPrintStrategy.java index 18a8169..49c347d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/CustomFieldPrintStrategy.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/CustomFieldPrintStrategy.java @@ -142,6 +142,8 @@ public class CustomFieldPrintStrategy implements IPrintTemplateStrategyService { result.put(MesPcnExtConstWords.PRINT_BAR_CODE, produceSn.getProductSn()); result.put(MesPcnExtConstWords.PRINT_DATE, TimeTool.getNowTime(true)); result.put(MesPcnExtConstWords.USER_NAME, produceSn.getCreateUser()); + result.put(MesPcnExtConstWords.PRODUCT_DATE, TimeTool.getToday()); + result.put(MesPcnExtConstWords.PRODUCT_TIME, TimeTool.getTimeShortWithColon()); return result; } 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 076b45f..a5cffb4 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 @@ -745,6 +745,10 @@ public class MesPcnExtConstWords { public static final String FG_PART_NO = "fgPartNo"; // 打印日期 public static final String PRINT_DATE = "printDate"; + // 生产日期 + public static final String PRODUCT_DATE = "productDate"; + // 生产日期 + public static final String PRODUCT_TIME = "productTime"; // 打印时间 public static final String PRINT_TIME = "printTime"; //替换数 From 27e636b1e5e172e9c0d41060261b8ed18b33625a Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Thu, 27 Mar 2025 12:31:10 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=B0=8F=E9=B9=8F=E6=96=B0=E7=BC=96?= =?UTF-8?q?=E7=A0=81=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../XiaoPengNumberRule2StrategyService.java | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/XiaoPengNumberRule2StrategyService.java diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/XiaoPengNumberRule2StrategyService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/XiaoPengNumberRule2StrategyService.java new file mode 100644 index 0000000..ebe7328 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/XiaoPengNumberRule2StrategyService.java @@ -0,0 +1,67 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.numberrule; + +import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.mes.pcn.api.iservice.busi.INumberRulePackAttributeStrategyService; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart; +import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; +import cn.estsh.i3plus.pojo.mes.repository.MesCustomerPartRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.util.Date; +import java.util.Map; + +@Component +public class XiaoPengNumberRule2StrategyService implements INumberRulePackAttributeStrategyService { + + @Autowired + private MesCustomerPartRepository customerPartRepository; + + @Override + public GenSerialNoModel execute(GenSerialNoModel genSerialNoModel) { + + Map dataMap = genSerialNoModel.getDataMap(); + MesCustomerPart customerPart = (!CollectionUtils.isEmpty(dataMap) && dataMap.containsKey(MesCustomerPart.class.getSimpleName())) ? + (MesCustomerPart)dataMap.get(MesCustomerPart.class.getSimpleName()) : getMesCustomerPart(genSerialNoModel.getOrganizeCode(), genSerialNoModel.getPartNo()); + if (null != customerPart) { + genSerialNoModel.setCustPartNo(customerPart.getCustPartNo()); + }else { + MesPcnException.throwMesBusiException("请检查客户零件信息,零件[%s]客户零件关系未维护", genSerialNoModel.getPartNo()); + } + + //年月日缩写 + Date date = new Date(); + genSerialNoModel.setYear(getYearShort(date)); + genSerialNoModel.setMonth(getMonthShort(date)); + genSerialNoModel.setDay(getDayShort(date)); + return genSerialNoModel; + } + + private String getYearShort(Date date) { + return MesExtEnumUtil.YEAR_SHORT2.valueOfDescription(Integer.parseInt(TimeTool.getYear(date))); + } + + private String getMonthShort(Date date) { + return MesExtEnumUtil.MONTH_SHORT2.valueOfDescription(Integer.parseInt(TimeTool.getMonth(date))); + } + + private String getDayShort(Date date) { + return MesExtEnumUtil.DAY_SHORT2.valueOfDescription(Integer.parseInt(TimeTool.getDay(date))); + } + + private MesCustomerPart getMesCustomerPart(String orgaizeCode, String partNo) { + if (StringUtils.isEmpty(orgaizeCode) || StringUtils.isEmpty(partNo)) return null; + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(orgaizeCode); + DdlPreparedPack.getStringEqualPack(partNo, MesPcnExtConstWords.ERP_PART_NO, ddlPackBean); + MesCustomerPart customerPart = customerPartRepository.getByProperty(ddlPackBean); + return customerPart; + } + +} From 11ffcf11744bcdd69c6896c137974b91e2172a83 Mon Sep 17 00:00:00 2001 From: jason Date: Wed, 2 Apr 2025 15:17:48 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E5=AE=81=E5=BE=B7=E4=BA=8C=E6=AC=A1?= =?UTF-8?q?=E8=A3=85=E7=AE=B1=E9=98=B2=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../busi/MesBoxingErrorProofingController.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesBoxingErrorProofingController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesBoxingErrorProofingController.java index 1e43637..3c5a6ed 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesBoxingErrorProofingController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesBoxingErrorProofingController.java @@ -82,6 +82,23 @@ public class MesBoxingErrorProofingController { } } + @GetMapping("/do-second-scan") + @ApiOperation(value = "二次装箱扫描") + public ResultBean doSecondScan(MesPackageDetail mesPackageDetail) { + + try { + ValidatorBean.checkNotNull(mesPackageDetail.getPackageNo(), "箱条码不能为空"); + + mesPackageDetail.setOrganizeCode(!StringUtils.isEmpty(mesPackageDetail.getOrganizeCode())?mesPackageDetail.getOrganizeCode():AuthUtil.getOrganizeCode()); + ConvertBean.serviceModelInitialize(mesPackageDetail,!StringUtils.isEmpty(mesPackageDetail.getModifyUser())?mesPackageDetail.getModifyUser():AuthUtil.getSessionUser().getUserName()); + return mesBoxingErrorProofingService.doScan(mesPackageDetail); + } catch (ImppBusiException imppException) { + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + @PostMapping("/mes-package-details/saveAll") @ApiOperation(value = "保存包装明细") From f4069c469898f3cffd7630590caf1b40ff977486 Mon Sep 17 00:00:00 2001 From: jason Date: Tue, 8 Apr 2025 12:43:16 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E5=AE=81=E5=BE=B7=E4=BA=8C=E6=AC=A1?= =?UTF-8?q?=E8=A3=85=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/busi/MesBoxingErrorProofingService.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java index 2ca04dc..913ba2f 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java @@ -149,7 +149,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer //校验包装条码信息 MesPackage mesPackage = getMesPackageAndCheck(mesPackageDetail.getPackageNo(), mesPackageDetail.getOrganizeCode()); //校验是否已关闭 - if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed() ) { + if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed() && !Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), packingDefine.getIsConfirmCheck())) { List produceSnList = mesProduceSnExtService.getProduceSnList(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getSerialNumber()); //1.查询包装明细是否包含此零件 List defineDetails = getMesPackingDefineDetailsNew(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn(), mesPackage.getPartNo()); @@ -171,7 +171,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer //保存包装明细 mesPackageDetailRDao.insert(saveMesPackageDetail); //更新包装表 - updateMesPackage(mesPackage, mesPackageDetail.getModifyUser(), 1d, false); + updateMesPackage(mesPackage, mesPackageDetail.getModifyUser(), 1d, false, packingDefine); } //缓存是否记忆开关 saveRedis(getKey(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getModifyUser()),mesPackageDetail.getIsMemory()); @@ -200,7 +200,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer mesPackageDetailRDao.saveAll(saveMesPackageDetailList); int qty = saveMesPackageDetailList.size(); //更新包装表 - updateMesPackage(mesPackage, userName, qty, false); + updateMesPackage(mesPackage, userName, qty, false, null); } if(mesPackage.getIsSealed() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){ return ResultBean.success("当前箱条码已完成装箱,请扫描下一个箱条码!").setResultObject(mesPackage); @@ -227,7 +227,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer MesPcnException.throwMesBusiException("箱条码[%s]下不存在零件条码,不允许关箱,请检查数据!", mesPackage.getPackageNo()); } //关箱 - updateMesPackage(mesPackageDb, mesPackage.getModifyUser(), 0d, true); + updateMesPackage(mesPackageDb, mesPackage.getModifyUser(), 0d, true, null); return ResultBean.success("关箱成功!"); } else { if (CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == mesPackageDb.getIsSealed()) { @@ -387,13 +387,15 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer } - private void updateMesPackage(MesPackage mesPackage, String userName, double qty, boolean close) { + private void updateMesPackage(MesPackage mesPackage, String userName, double qty, boolean close, MesPackingDefine packingDefine) { mesPackage.setQty(MathOperation.add(mesPackage.getQty(), qty)); if (mesPackage.getPackSpecQty() <= mesPackage.getQty() || close) { mesPackage.setIsSealed(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); mesPackage.setLotNo(TimeTool.getToday()); //数据写入接口表回传wms - saveMesPackageResult(mesPackage, userName); + if (packingDefine == null || !Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), packingDefine.getIsConfirmCheck())) { + saveMesPackageResult(mesPackage, userName); + } } ConvertBean.serviceModelUpdate(mesPackage, userName); mesPackageRDao.update(mesPackage); From 9528d539c0b83dfdc5709eba977809da25836d6b Mon Sep 17 00:00:00 2001 From: jason Date: Wed, 9 Apr 2025 14:09:53 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E5=AE=81=E5=BE=B7=E4=BA=8C=E6=AC=A1?= =?UTF-8?q?=E8=A3=85=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../busi/MesBoxingErrorProofingService.java | 42 +++++++++++++--------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java index 913ba2f..979c58a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java @@ -149,7 +149,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer //校验包装条码信息 MesPackage mesPackage = getMesPackageAndCheck(mesPackageDetail.getPackageNo(), mesPackageDetail.getOrganizeCode()); //校验是否已关闭 - if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed() && !Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), packingDefine.getIsConfirmCheck())) { + if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed()) { List produceSnList = mesProduceSnExtService.getProduceSnList(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getSerialNumber()); //1.查询包装明细是否包含此零件 List defineDetails = getMesPackingDefineDetailsNew(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn(), mesPackage.getPartNo()); @@ -166,7 +166,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer //校验条码规则 MesPart mesPart = getMesPartNew(mesPackageDetail, mesPackage, packingDefine); //包装规格明细 - MesPackageDetail saveMesPackageDetail = getPackageDetail(mesPackageDetail, mesPart); + MesPackageDetail saveMesPackageDetail = getPackageDetail(mesPackageDetail, mesPart, packingDefine); if (mesPackageDetail.getIsMemoryBoolean()) { //保存包装明细 mesPackageDetailRDao.insert(saveMesPackageDetail); @@ -294,31 +294,34 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer } } - private MesPart getMesPart(MesPackageDetail mesPackageDetail, MesPackage mesPackage, MesPackingDefine packingDefine) { - //校验是否重复扫描 - checkSerialNumber(mesPackageDetail); - //获取包装定义明细 - List defineDetails = getMesPackingDefineDetails(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn()); - //校验是否包含 -// String partNo = getPartNo(mesPackageDetail, mesPackage, defineDetails); - //校验条码信息 - String partNo = checkSn(mesPackageDetail, packingDefine, mesPackage, defineDetails); - //物料信息 - return getPart(mesPackageDetail.getOrganizeCode(), partNo); - } +// private MesPart getMesPart(MesPackageDetail mesPackageDetail, MesPackage mesPackage, MesPackingDefine packingDefine) { +// //校验是否重复扫描 +// checkSerialNumber(mesPackageDetail); +// //获取包装定义明细 +// List defineDetails = getMesPackingDefineDetails(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn()); +// //校验是否包含 +//// String partNo = getPartNo(mesPackageDetail, mesPackage, defineDetails); +// //校验条码信息 +// String partNo = checkSn(mesPackageDetail, packingDefine, mesPackage, defineDetails); +// //物料信息 +// return getPart(mesPackageDetail.getOrganizeCode(), partNo); +// } private MesPart getMesPartNew(MesPackageDetail mesPackageDetail, MesPackage mesPackage, MesPackingDefine packingDefine) { //校验是否重复扫描 - checkSerialNumber(mesPackageDetail); + checkSerialNumber(mesPackageDetail, packingDefine); //校验条码信息 String partNo = checkSnNew(mesPackageDetail, packingDefine, mesPackage); //物料信息 return getPart(mesPackageDetail.getOrganizeCode(), partNo); } - private void checkSerialNumber(MesPackageDetail mesPackageDetail) { + private void checkSerialNumber(MesPackageDetail mesPackageDetail, MesPackingDefine packingDefine) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPackageDetail.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(mesPackageDetail.getSerialNumber(), MesPcnExtConstWords.SERIAL_NUMBER, ddlPackBean); + if (Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), packingDefine.getIsConfirmCheck())) { + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isSecondPack", ddlPackBean); + } if (mesPackageDetailRDao.isExitByHql(ddlPackBean)) { MesPcnException.throwMesBusiException("零件条码[%s]已装箱,请检查数据!", mesPackageDetail.getSerialNumber()); } @@ -420,7 +423,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer return mesPackageDetails; } - private MesPackageDetail getPackageDetail(MesPackageDetail mesPackageDetail, MesPart mesPart) { + private MesPackageDetail getPackageDetail(MesPackageDetail mesPackageDetail, MesPart mesPart, MesPackingDefine packingDefine) { MesPackageDetail saveMesPackageDetail = new MesPackageDetail(); saveMesPackageDetail.setPackageNo(mesPackageDetail.getPackageNo()); saveMesPackageDetail.setSerialNumber(mesPackageDetail.getSerialNumber()); @@ -428,6 +431,11 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer saveMesPackageDetail.setPartName(mesPart.getPartName()); saveMesPackageDetail.setQty(1d); saveMesPackageDetail.setOrganizeCode(mesPackageDetail.getOrganizeCode()); + if (packingDefine != null && Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), packingDefine.getIsConfirmCheck())) { + saveMesPackageDetail.setIsSecondPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + } else { + saveMesPackageDetail.setIsSecondPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + } ConvertBean.serviceModelInitialize(saveMesPackageDetail, mesPackageDetail.getCreateUser()); return saveMesPackageDetail; } From 2d06f12771fdc1048d155c6840f7055ab5965a49 Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Mon, 12 May 2025 09:39:07 +0800 Subject: [PATCH 6/7] =?UTF-8?q?46850=20=E6=8E=92=E5=BA=8F=E6=8A=A5?= =?UTF-8?q?=E5=B7=A5=E6=85=A2=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/busi/MesNcProcessingService.java | 4 ++-- .../serviceimpl/busi/MesWorkOrderService.java | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java index b219e37..61fe8ed 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java @@ -773,7 +773,7 @@ public class MesNcProcessingService implements IMesNcProcessingService { mesPartInspectionPerson.setPid(model.getPartInspection().getId()); DdlPackBean partyPackBean = DdlPackBean.getDdlPackBean(org); - DdlPreparedPack.getStringEqualPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean); + DdlPreparedPack.getStringLikerPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean); MesOrg mesOrg = mesOrgRDao.getByProperty(partyPackBean); mesPartInspectionPerson.setResponsibleParty(mesOrg.getResponsibleParty()); @@ -850,7 +850,7 @@ public class MesNcProcessingService implements IMesNcProcessingService { mesPartInspectionPerson.setPid(model.getPartInspection().getId()); DdlPackBean partyPackBean = DdlPackBean.getDdlPackBean(org); - DdlPreparedPack.getStringEqualPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean); + DdlPreparedPack.getStringLikerPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean); MesOrg mesOrg = mesOrgRDao.getByProperty(partyPackBean); if (mesOrg ==null) { throw new ImppBusiException(String.format("责任人【%s】不存在", mesNcPersonModel.getOnlyPerson())); 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..ab18e28 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 @@ -1195,6 +1195,8 @@ public class MesWorkOrderService implements IMesWorkOrderService { try { //加工记录 MesProductionRecord record = model.getMesProductionRecordMap().get(orderNo).iterator().next(); + LOGGER.info("排序报工开始,报工条码={}",record.getProductSn()); + //工单信息 MesWorkOrder workOrder = getMesWorkOrder(model.getMesWorkOrderMap(), record.getWorkOrderNo()); //生产版本 @@ -1244,11 +1246,23 @@ public class MesWorkOrderService implements IMesWorkOrderService { //更新加工记录 productionRecordService.updateProductionRecord(model.getMesProductionRecordMap().get(orderNo), userName, MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue(), ""); //更新工单汇报数量 - workOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + /* workOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); workOrder.setReportedQty(workOrder.getReportedQty()+MesPcnExtConstWords.ONE); workOrder.setModifyDatetime((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")).format(new Date())); workOrder.setModifyUser(userName); - workOrderExtService.update(workOrder); + workOrderExtService.update(workOrder);*/ + double qty = workOrder.getReportedQty()+MesPcnExtConstWords.ONE; + DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(workOrder.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(workOrder.getId(),"id", orderPackBean); + + workOrderRepository.updateByPropertiesNoSync( + new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, "reportedQty"}, + new Object[]{userName, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), qty}, + orderPackBean); + + LOGGER.info("修改工单数量完成,报工前数量:{},报工后数量:{},工单号【{}】",workOrder.getReportedQty(),qty,workOrder.getWorkOrderNo()); + + } catch (Exception e) { String msg = e.getMessage(); if (e instanceof ImppBusiException) { From beee1d62775beb8b0c00116290a203b3801d699c Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 15 May 2025 22:31:30 +0800 Subject: [PATCH 7/7] =?UTF-8?q?46881=20PCN=EF=BC=9A=E5=8F=91=E8=BF=90?= =?UTF-8?q?=E7=9C=8B=E6=9D=BF=E5=BC=80=E5=90=AF=E5=A4=9A=E4=B8=AA=E5=AF=BC?= =?UTF-8?q?=E8=87=B4CPU=E5=BE=88=E9=AB=98=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2SQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../busi/MesShippingKanbanCfgServiceImpl.java | 431 ++++++++++++--------- .../pcn/pojo/model/ShippingKanbanCacheModel.java | 12 + 2 files changed, 260 insertions(+), 183 deletions(-) create mode 100644 modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/ShippingKanbanCacheModel.java 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 eaabab6..e59056a 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 @@ -4,29 +4,24 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesShippingKanbanCfgService; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesShippingKanbanCfgModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesShippingKanbanModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesShippingKanbanViewModel; -import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ShippingKanbanCacheModel; import cn.estsh.i3plus.mes.pcn.util.DateUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; -import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import cn.estsh.i3plus.pojo.mes.bean.seres.MesCimSeresJisVinOverPoint; -import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingListDetail; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingKanbanCfg; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingKanbanCfgDetail; -import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement; import cn.estsh.i3plus.pojo.mes.repository.MesPartShippingGroupRepository; import cn.estsh.i3plus.pojo.mes.repository.MesShippingKanbanCfgDetailRepository; import cn.estsh.i3plus.pojo.mes.repository.MesShippingKanbanCfgRepository; import cn.estsh.i3plus.pojo.mes.repository.seres.IMesCimSeresJisVinOverPointRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.NumberUtil; -import cn.hutool.core.util.StrUtil; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -40,6 +35,7 @@ import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; +@Slf4j @Service public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgService { @Autowired @@ -165,6 +161,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer cfgDetailMap = cfgModel.getDetails().stream().collect(Collectors.toMap(MesShippingKanbanCfgDetail::getDetailCode, v -> v)); } + ShippingKanbanCacheModel cacheModel = new ShippingKanbanCacheModel(); for (MesExtEnumUtil.SHIPPING_KANBAN_DETAIL_INDEX index : MesExtEnumUtil.SHIPPING_KANBAN_DETAIL_INDEX.values()) { MesShippingKanbanCfgDetail cfgDetail = cfgDetailMap != null ? cfgDetailMap.get(index.getValue()) : null; if (cfgDetail == null || cfgDetail.getIsShow() == null || cfgDetail.getIsShow() != CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() || cfgDetail.getOrderNumber() == null) { @@ -188,49 +185,49 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer List values = null; switch (index) { case CLIENT_STOCK_QTY: - values = getClientStockQty(cfg, cfgDetail); + values = getClientStockQty(cfg, cacheModel); break; case WAIT_SHIPPING_QTY: - values = getWaitShippingQty(cfg, cfgDetail); + values = getWaitShippingQty(cfg); break; case CP_WAIT_SHIPPING_QTY: - values = getCPWaitShippingQty(cfg, cfgDetail); + values = getCPWaitShippingQty(cfg); break; case WAIT_PRODUCT_QTY: - values = getWaitProductQty(cfg, cfgDetail); + values = getWaitProductQty(cfg); break; case LAST_SHIPPING_TIME: - values = getLastShippingTime(cfg, cfgDetail); + values = getLastShippingTime(cfg); break; case CP_LAST_SHIPPING_TIME: - values = getCPLastShippingTime(cfg, cfgDetail); + values = getCPLastShippingTime(cfg); break; case NEXT_SHIPPING_TIME: - values = getNextShippingTime(cfg, cfgDetail); + values = getNextShippingTime(cfg, cacheModel); break; case TREE_STOP_WARNING: - values = getTreeStopWarning(cfg, cfgDetail); + values = getTreeStopWarning(cfg, cacheModel); break; case SHIPPING_VIN: - values = getShippingVin(cfg, cfgDetail); + values = getShippingVin(cfg); break; case CP_SHIPPING_VIN: - values = getCPShippingVin(cfg, cfgDetail); + values = getCPShippingVin(cfg); break; case TODAY_ONLINE: - values = getTodayOnline(cfg, cfgDetail); + values = getTodayOnline(cfg); break; case TODAY_SHIPPING: - values = getTodayShipping(cfg, cfgDetail); + values = getTodayShipping(cfg); break; case TODAY_CAR: - values = getTodayCar(cfg, cfgDetail); + values = getTodayCar(cfg); break; case CLIENT_JPH: - values = getClientJPH(cfg, cfgDetail); + values = getClientJph(cfg); break; case PRODUCT_JPH: - values = getProductJPH(cfg, cfgDetail); + values = getProductJph(cfg); break; } if (values == null) { @@ -306,17 +303,25 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select sd.vin"); hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); hql.append(" and s.status in (:status) "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (shippingGroupCodes.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" ORDER BY sd.id desc"); try { - return entityManager.createQuery(hql.toString(), String.class) - .setParameter("organizeCode", organizeCode) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", status) - .setParameter("shippingGroupCode", shippingGroupCodes) - .setMaxResults(1) - .getSingleResult(); + Query query = entityManager.createQuery(hql.toString(), String.class); + query.setParameter("organizeCode", organizeCode); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", status); + if (shippingGroupCodes.size() == 1) { + query.setParameter("shippingGroupCode", shippingGroupCodes.get(0)); + } else { + query.setParameter("shippingGroupCode", shippingGroupCodes); + } + query.setMaxResults(1); + return query.getSingleResult().toString(); } catch (NoResultException e) { return ""; } @@ -324,9 +329,6 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 最新下线的排序发运单客户流水号 - * @param organizeCode - * @param shippingGroupCodes - * @return */ private String getMaxOffNumber(String organizeCode, List shippingGroupCodes) { String vinCode = getMesShippingVin(organizeCode, shippingGroupCodes, Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); @@ -334,7 +336,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer return ""; } StringBuilder offNumberHql = new StringBuilder(); - offNumberHql.append("select max(serialNumber) from " + MesCimSeresJisVinOverPoint.class.getName()); + offNumberHql.append("select max(serialNumber) from ").append(MesCimSeresJisVinOverPoint.class.getName()); offNumberHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid "); offNumberHql.append(" and vin = :vin "); try { @@ -352,11 +354,12 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 客户端库存 * 最新下线的排序发运单客户流水号(SERIAL_NUMBER)- 赛力斯上线的最新流水号+调整值。 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getClientStockQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getClientStockQty(MesShippingKanbanCfg cfg, ShippingKanbanCacheModel cacheModel) { + if (cacheModel.getClientStockQty() != null) { + return cacheModel.getClientStockQty(); + } List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { @@ -368,7 +371,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer String onNumber = ""; if (!StringUtils.isEmpty(cfg.getOnlinePoint())) { StringBuilder onNumberHql = new StringBuilder(); - onNumberHql.append("select max(serialNumber) from " + MesCimSeresJisVinOverPoint.class.getName()); + onNumberHql.append("select max(serialNumber) from ").append(MesCimSeresJisVinOverPoint.class.getName()); onNumberHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid "); onNumberHql.append(" and overPoint = :overPoint "); try { @@ -393,17 +396,16 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer int adjustValue = cfg.getAdjustValue() != null ? cfg.getAdjustValue() : 0; int result = Integer.parseInt(offNumber) - Integer.parseInt(onNumber) + adjustValue; values.add(String.valueOf(result)); + cacheModel.setClientStockQty(values); return values; } /** * 待发运数量 * 排序单装箱扫描流水号-发运扫描流水号,精排最新流水号-辊道线下件流水号(cockpit) - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getWaitShippingQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getWaitShippingQty(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { @@ -445,15 +447,23 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, COUNT(sd.id) as COUNT)"); hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); hql.append(" and s.status = :status "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" group by s.shippingGroupCode"); - List ddd = entityManager.createQuery(hql.toString()) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()) - .setParameter("shippingGroupCode", strShippingGroupList) - .getResultList(); + Query query = entityManager.createQuery(hql.toString()); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + List ddd = query.getResultList(); Map shippingGroupCount = new HashMap<>(); if (!CollectionUtils.isEmpty(ddd)) { for (Map dd : ddd) { @@ -470,7 +480,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer return values; } - private List getCPWaitShippingQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getCPWaitShippingQty(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { @@ -517,11 +527,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 待生产/装箱数量 * 精排最新流水号-排序单装箱扫描流水号 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getWaitProductQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getWaitProductQty(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { @@ -557,15 +565,23 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, max(sd.custInfoSeq) as custInfoSeq)"); hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); hql.append(" and s.status in (:status) "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" group by s.shippingGroupCode"); - List ddd = entityManager.createQuery(hql.toString()) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())) - .setParameter("shippingGroupCode", strShippingGroupList) - .getResultList(); + Query query = entityManager.createQuery(hql.toString()); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + List ddd = query.getResultList(); Map shippingGroupCount = new HashMap<>(); if (!CollectionUtils.isEmpty(ddd)) { for (Map dd : ddd) { @@ -589,11 +605,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 距离上一次发运时间(Min) * 当前时间-最近一次发运扫描时间 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getLastShippingTime(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getLastShippingTime(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { @@ -605,16 +619,24 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select max(s.endScanTime)"); hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); hql.append(" and s.status in (:status) "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } String strScanEndTime = ""; try { - strScanEndTime = entityManager.createQuery(hql.toString(), String.class) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())) - .setParameter("shippingGroupCode", strShippingGroupList) - .getSingleResult(); + Query query = entityManager.createQuery(hql.toString(), String.class); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + strScanEndTime = query.getSingleResult().toString(); } catch (NoResultException ignored) { } @@ -627,15 +649,23 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, max(l.endScanTime) as endScanTime)"); hql.append(" from MesLoadingList l inner join MesLoadingListDetail ld on l.id = ld.pid inner join MesShippingOrderManagement s on s.id = ld.shippingId and l.organizeCode = :organizeCode and l.isDeleted=:isDeleted and l.isValid=:isValid "); hql.append(" and l.status in (:status) "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" group by s.shippingGroupCode"); - List ddd = entityManager.createQuery(hql.toString()) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue(), MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue())) - .setParameter("shippingGroupCode", strShippingGroupList) - .getResultList(); + Query query = entityManager.createQuery(hql.toString()); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue(), MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue())); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + List ddd = query.getResultList(); Map shippingGroupCount = new HashMap<>(); if (!CollectionUtils.isEmpty(ddd)) { for (Map dd : ddd) { @@ -660,7 +690,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer return values; } - private List getCPLastShippingTime(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getCPLastShippingTime(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); DdlPackBean packBean = DdlPackBean.getDdlPackBean(cfg.getOrganizeCode()); List shippingGroups = partShippingGroupRDao.findByHqlWhere(packBean); @@ -675,16 +705,24 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select max(s.endScanTime)"); hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); hql.append(" and s.status in (:status) "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } String strScanEndTime = ""; try { - strScanEndTime = entityManager.createQuery(hql.toString(), String.class) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())) - .setParameter("shippingGroupCode", strShippingGroupList) - .getSingleResult(); + Query query = entityManager.createQuery(hql.toString(), String.class); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + strScanEndTime = query.getSingleResult().toString(); } catch (NoResultException ignored) { } if (!StringUtils.isEmpty(strScanEndTime)) { @@ -700,21 +738,24 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 下一车最晚发运时间 * 当前时间+客户端库存/客户JPH-在途时间 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getNextShippingTime(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getNextShippingTime(MesShippingKanbanCfg cfg, ShippingKanbanCacheModel cacheModel) { + if (cacheModel.getCacheNextShipping() != null) { + return cacheModel.getCacheNextShipping(); + } List values = new ArrayList<>(); Date nowTime = DateUtil.now(); //获取客户端库存 - List clientStockValue = getClientStockQty(cfg, cfgDetail); + List clientStockValue = getClientStockQty(cfg, cacheModel); if (StringUtils.isEmpty(clientStockValue)) { + cacheModel.setCacheNextShipping(values); return values; } //获取客户JPH - List customerJPHValue = getClientJPH(cfg, cfgDetail); + List customerJPHValue = getClientJph(cfg); if (CollectionUtils.isEmpty(customerJPHValue)) { + cacheModel.setCacheNextShipping(values); return values; } double clientStock = Double.parseDouble(clientStockValue.get(0)); @@ -730,20 +771,19 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer int minutes = (int)(customerJPHInt * 60); Date newDate = DateUtil.addMinutes(nowTime, minutes - onTheWayDate); values.add(DateUtil.formatDate(DateUtil.BASE_FORMAT3, newDate)); + cacheModel.setCacheNextShipping(values); return values; } /** * 三级停线预警(Min) * 当前时间+客户端库存/客户JPH-在途时间 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getTreeStopWarning(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getTreeStopWarning(MesShippingKanbanCfg cfg, ShippingKanbanCacheModel cacheModel) { List values = new ArrayList<>(); //获取下一车最晚发运时间 - List nextShippingTimeValue = getNextShippingTime(cfg, cfgDetail); + List nextShippingTimeValue = getNextShippingTime(cfg, cacheModel); if (StringUtils.isEmpty(nextShippingTimeValue)) { values.add("0"); return values; @@ -757,11 +797,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 最近发运VIN/流水号,客户排序信息序号,截取后6位 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getShippingVin(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getShippingVin(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { @@ -774,19 +812,28 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select sd.custInfoSeq"); hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); hql.append(" and s.status in (:status) "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" ORDER BY sd.id DESC"); Long custInfoSeq = null; try { - custInfoSeq = entityManager.createQuery(hql.toString(), Long.class) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())) - .setParameter("shippingGroupCode", strShippingGroupList) - .setMaxResults(1) - .getSingleResult(); + Query query = entityManager.createQuery(hql.toString(), Long.class); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + query.setMaxResults(1); + custInfoSeq = (Long) query.getSingleResult(); } catch (NoResultException e) { + log.error("", e); } String strCustInfoSeq = custInfoSeq != null ? Long.toString(custInfoSeq) : ""; if (strCustInfoSeq.length() >= 5) { @@ -799,16 +846,23 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, max(sd.custInfoSeq) as custInfoSeq)"); hql.append(" from MesLoadingList l inner join MesLoadingListDetail ld on l.id = ld.pid inner join MesShippingOrderManagement s on s.id = ld.shippingId inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and l.organizeCode = :organizeCode and l.isDeleted=:isDeleted and l.isValid=:isValid "); hql.append(" and l.status in (:status) "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" group by s.shippingGroupCode"); - List ddd = entityManager.createQuery(hql.toString()) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue(), MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue())) - .setParameter("shippingGroupCode", strShippingGroupList) - .getResultList(); - + Query query = entityManager.createQuery(hql.toString()); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue(), MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue())); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + List ddd = query.getResultList(); Map shippingGroupCount = new HashMap<>(); if (!CollectionUtils.isEmpty(ddd)) { for (Map dd : ddd) { @@ -839,11 +893,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 最近发运VIN/流水号,客户排序信息序号,截取后6位 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getCPShippingVin(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getCPShippingVin(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); DdlPackBean packBean = DdlPackBean.getDdlPackBean(cfg.getOrganizeCode()); List shippingGroups = partShippingGroupRDao.findByHqlWhere(packBean); @@ -859,19 +911,27 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select sd.custInfoSeq"); hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); hql.append(" and s.status in (:status) "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" ORDER BY sd.id DESC"); Long custInfoSeq = null; try { - custInfoSeq = entityManager.createQuery(hql.toString(), Long.class) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())) - .setParameter("shippingGroupCode", strShippingGroupList) - .setMaxResults(1) - .getSingleResult(); - } catch (NoResultException e) { + Query query = entityManager.createQuery(hql.toString(), Long.class); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + query.setMaxResults(1); + custInfoSeq = (Long) query.getSingleResult(); + } catch (NoResultException ignored) { } String strCustInfoSeq = custInfoSeq != null ? Long.toString(custInfoSeq) : ""; @@ -890,11 +950,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer * 当天上线数,要设置客户开班时间、信息点 * 基于信息点到当前时间过点数量。按天显示。 * 当天上线数/当班上线数 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getTodayOnline(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getTodayOnline(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); if (StringUtils.isEmpty(cfg.getCustStartShift()) || StringUtils.isEmpty(cfg.getOnlinePoint())) { values.add("0"); @@ -936,11 +994,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 当天发运数 * 设置内部开班时间,显示已发运数、已装车数,发运单状态为已发运及已装车。 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getTodayShipping(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getTodayShipping(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList) || StringUtils.isEmpty(cfg.getInterStartShift())) { @@ -968,17 +1024,25 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); hql.append(" and s.status in (:status) "); hql.append(" and s.modifyDatetime BETWEEN :startDateTime AND :endDateTime "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" group by s.shippingGroupCode"); - List ddd = entityManager.createQuery(hql.toString()) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())) - .setParameter("startDateTime", startDateTime) - .setParameter("endDateTime", endDateTime) - .setParameter("shippingGroupCode", strShippingGroupList) - .getResultList(); + Query query = entityManager.createQuery(hql.toString()); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); + query.setParameter("startDateTime", startDateTime); + query.setParameter("endDateTime", endDateTime); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + List ddd = query.getResultList(); Map shippingGroupCount = new HashMap<>(); if (!CollectionUtils.isEmpty(ddd)) { for (Map dd : ddd) { @@ -997,11 +1061,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 当天装车数 * 设置内部开班时间,显示已装车数,装车单状态为已扫描。 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getTodayCar(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getTodayCar(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList) || StringUtils.isEmpty(cfg.getInterStartShift())) { @@ -1029,18 +1091,25 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append(" from MesLoadingList l inner join MesLoadingListDetail ld on l.id = ld.pid inner join MesShippingOrderManagement s on s.id = ld.shippingId inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and l.organizeCode = :organizeCode and l.isDeleted=:isDeleted and l.isValid=:isValid "); hql.append(" and l.status = :status "); hql.append(" and l.modifyDatetime BETWEEN :startDateTime AND :endDateTime "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" group by s.shippingGroupCode "); - List dataList = entityManager.createQuery(hql.toString()) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue()) - .setParameter("startDateTime", startDateTime) - .setParameter("endDateTime", endDateTime) - .setParameter("shippingGroupCode", strShippingGroupList) - .getResultList(); - + Query query = entityManager.createQuery(hql.toString()); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue()); + query.setParameter("startDateTime", startDateTime); + query.setParameter("endDateTime", endDateTime); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + List dataList = query.getResultList(); Map shippingGroupCount = new HashMap<>(); if (!CollectionUtils.isEmpty(dataList)) { for (Map data : dataList) { @@ -1059,11 +1128,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 客户端JPH * 上线点,当前时间往前一小时的过点总数维护默认值,当数值为0时,显示为默认值 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getClientJPH(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getClientJph(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { @@ -1074,7 +1141,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer Date prevHourTime = DateUtil.addMinutes(nowTime, -60); StringBuilder offNumberHql = new StringBuilder(); - offNumberHql.append("select count(1) from " + MesCimSeresJisVinOverPoint.class.getName()); + offNumberHql.append("select count(1) from ").append(MesCimSeresJisVinOverPoint.class.getName()); offNumberHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid "); offNumberHql.append(" and createDatetime BETWEEN :startDateTime AND :endDateTime "); offNumberHql.append(" and overPoint = :overPoint "); @@ -1105,11 +1172,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 生产JPH * 当前时间往前一小时的完成数/下线数 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getProductJPH(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getProductJph(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List partShippingGroups = getShippingGroups(cfg); if (CollectionUtils.isEmpty(partShippingGroups)) { diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/ShippingKanbanCacheModel.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/ShippingKanbanCacheModel.java new file mode 100644 index 0000000..982427a --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/ShippingKanbanCacheModel.java @@ -0,0 +1,12 @@ +package cn.estsh.i3plus.ext.mes.pcn.pojo.model; + +import lombok.Data; + +import java.util.List; + +@Data +public class ShippingKanbanCacheModel { + private List clientStockQty; + private List cacheNextShipping; + +}