From cc84bd5b50e424afc0753443275a778fdf8792a1 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Sun, 16 Feb 2025 10:37:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=BC=94=E7=A4=BA=20=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/MesFunctionPackageProgressService.java | 4 ++++ .../step/MesPackageNoGenerateStepService.java | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackageProgressService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackageProgressService.java index 96f7ef3..65910ae 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackageProgressService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackageProgressService.java @@ -135,6 +135,10 @@ public class MesFunctionPackageProgressService extends BaseSwsService implements return packResultMap(reqBean, resultBean, resultMap, String.format("生产线[%s]工位[%s]包装条码[%s]修改数量操作无效,请刷新重试!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), packageDataContext.getPackageNo())); } + if (MathOperation.compareTo(packageDataContext.getQty(), packageDataContext.getPackSpecQty()) > 0) { + return packResultMap(reqBean, resultBean, resultMap, String.format("生产线[%s]工位[%s]包装条码[%s]修改数量[%s]不能超过包装规格数量[%s],请刷新重试!", + reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), packageDataContext.getPackageNo(), packageDataContext.getQty(), packageDataContext.getPackSpecQty())); + } //修改包装信息的数量 packageNoGenerateStepService.savePackageData(reqBean, packageDb, packageDataContext.getQty()); //打包数据更新数量(判断是增加还是减少数量) 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 979f905..623e74c 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 @@ -302,9 +302,11 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements Integer cachedQty = CollectionUtils.isEmpty(packageDataContextList) ? MesPcnExtConstWords.ZERO : packageDataContextList.size(); //当前满足标包的差额数量 Integer needQty = packageRuleContext.getPackSpecQty().intValue() - cachedQty; + //如果缓存中的个数超过标包, needQty则为负数, 下面去截取条码的时候会下标越界, 所以此场景下将 needQty改为0 + if (needQty < 0) needQty = MesPcnExtConstWords.ZERO; //当前满足标包的差额条码 - List productSnList2Cur; + List productSnList2Cur = null; //除去当前满足标包的差额条码后的剩余条码 List productSnList2Remain = null; @@ -312,12 +314,18 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements if (productSnList.size() <= needQty) { productSnList2Cur = productSnList; } else { - productSnList2Cur = productSnList.subList(0, needQty); - productSnList2Remain = productSnList.subList(needQty, productSnList.size()); + //缓存中的个数已经等于或者超过标包,则不需要截取条码 + if (needQty.compareTo(MesPcnExtConstWords.ZERO) == 0) { + productSnList2Remain = productSnList; + } else { + //根据需要的个数进行截取条码 + productSnList2Cur = productSnList.subList(0, needQty); + productSnList2Remain = productSnList.subList(needQty, productSnList.size()); + } } //当前的实际打包数量 = 缓存的包装条码明细数量 + 当前满足标包的差额条码的个数 - Integer curQty = cachedQty + productSnList2Cur.size(); + Integer curQty = cachedQty + (CollectionUtils.isEmpty(productSnList2Cur) ? MesPcnExtConstWords.ZERO : productSnList2Cur.size()); MesPackage packageDb = null; //判断是否存在缓存的包装条码明细信息,如果进行递归则已无包装条码, 则重新生成信息的包装条码