From 1cffa4380a61635b0d99324fcab00e2e03e957c4 Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Fri, 14 Aug 2026 17:42:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=86=E5=88=87=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E6=B0=94=E8=83=80=E8=BD=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...dmBiSlittingproductionplanServiceImpl.java | 2 +- .../slitter/auto/AutoSendAirShaftAgvTask.java | 2 +- .../service/impl/SlitterServiceImpl.java | 178 +++++++++--------- .../tasks/slitter/util/SlitterTaskUtil.java | 14 +- 4 files changed, 108 insertions(+), 88 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/impl/PdmBiSlittingproductionplanServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/impl/PdmBiSlittingproductionplanServiceImpl.java index e7b7dce9f..cd8bd9f33 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/impl/PdmBiSlittingproductionplanServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/impl/PdmBiSlittingproductionplanServiceImpl.java @@ -261,7 +261,7 @@ public class PdmBiSlittingproductionplanServiceImpl extends ServiceImpl= DATE_SUB(CURDATE(), INTERVAL 1 DAY)") - .orderByAsc(PdmBiSlittingproductionplan::getCall_time, PdmBiSlittingproductionplan::getStatus); + .orderByAsc(PdmBiSlittingproductionplan::getStatus, PdmBiSlittingproductionplan::getWorkorder_id); return list(lam); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendAirShaftAgvTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendAirShaftAgvTask.java index cdf09d5b4..3228e1374 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendAirShaftAgvTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendAirShaftAgvTask.java @@ -195,7 +195,7 @@ public class AutoSendAirShaftAgvTask { List emptyPoint = slitterMapper.getEmptyAirShaftAgvPointNotTask( area, SlitterTaskUtil.getPointLocationInCutDeviceXn( - SlitterTaskUtil.getNumberByResourceCode(demoPlan.getResource_name())), + SlitterTaskUtil.getNumberByResourceCode(demoPlan.getResource_name()), area), deviceCut.getPlan()); if (emptyPoint.isEmpty()) { log.warn("当前分切机找不到空闲的对接位置!"); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java index eb9cdd87a..4719dffa5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java @@ -1818,7 +1818,7 @@ public class SlitterServiceImpl implements SlitterService { Deliverycachepointivt deliverycachepointivt = deliverycachepointivtService.getPintByCode(pointCode1, false); if (ObjectUtil.isNotEmpty(deliverycachepointivt)) { - String parentContainer = "临时" + TaskUtils.getDateTime("yyMMddHHmmSSS") + "*"; + String parentContainer = "临时虚拟" + TaskUtils.getDateTime("yyMMddHHmmSSS") + "*"; String qzzNo = resourceName.substring(0, 2) + resourceName.substring(resourceName.length() - 2) + "A" @@ -4204,102 +4204,112 @@ public class SlitterServiceImpl implements SlitterService { private void doBindNewPlanInfo(String shelfCode, String containerName, String force, String device) { Deliverycachepointivt shelf = deliverycachepointivtService.getPintByCode(shelfCode, true); StIvtCutpointivt cutDevice = cutpointivtService.getPintByExtCode(device, false); - if (ObjectUtil.isNotEmpty(shelf)) { - if (!"05".equals(shelf.getPoint_status())) { - throw new BadRequestException("点位" + shelfCode + "已经绑定过分切计划"); - } - if (!shelf.getProduct_area().equals(cutDevice.getProduct_area()) || !shelf.getPlan().equals(cutDevice.getPlan())) { - throw new BadRequestException("分切机的区域与架子不在同一个子区域!"); - } - List qzzs = slittingproductionplanService.getByQzzNoNotDeleted(shelf.getQzzno()); - log.info("{} 架子的气胀轴信息:{}", shelfCode, JSONObject.toJSONString(qzzs)); - PdmBiSlittingproductionplan planOne = slittingproductionplanService.getByContainerName(containerName); - if (ObjectUtil.isEmpty(planOne)) { - throw new BadRequestException("子卷:" + containerName + " 计划信息不存在!"); - } - // 判断子卷有没有绑定到分切对接位上 - List alreadyBindPlans = bcutpointivtService.list(new LambdaQueryWrapper() - .eq(BstIvtCutpointivt::getIs_used, true) - .and(l -> l.eq(BstIvtCutpointivt::getQzz_no1, planOne.getQzzno()).or() - .eq(BstIvtCutpointivt::getQzz_no2, planOne.getQzzno())) - ); - if (!alreadyBindPlans.isEmpty()) { - throw new BadRequestException("子卷:" + containerName + " 已经绑定过子卷到暂存架上!"); - } - // todo: 这台分切机已经绑定过其他子卷??? + if (ObjectUtil.isEmpty(shelf)) { + throw new BadRequestException("不存在气胀轴库:" + shelfCode); + } + if (!"05".equals(shelf.getPoint_status())) { + throw new BadRequestException("点位" + shelfCode + "已经绑定过分切计划"); + } + if (!shelf.getProduct_area().equals(cutDevice.getProduct_area()) || !shelf.getPlan().equals(cutDevice.getPlan())) { + throw new BadRequestException("分切机的区域与架子不在同一个子区域!"); + } + List xnPlans = slittingproductionplanService.getByQzzNoNotDeleted(shelf.getQzzno()); + log.info("{} 架子的气胀轴信息:{}", shelfCode, JSONObject.toJSONString(xnPlans)); + PdmBiSlittingproductionplan planOne = slittingproductionplanService.getByContainerName(containerName); + if (ObjectUtil.isEmpty(planOne)) { + throw new BadRequestException("子卷:" + containerName + " 计划信息不存在!"); + } + // 判断子卷有没有绑定到分切对接位上 + List alreadyBindPlans = bcutpointivtService.list(new LambdaQueryWrapper() + .eq(BstIvtCutpointivt::getIs_used, true) + .and(l -> l.eq(BstIvtCutpointivt::getQzz_no1, planOne.getQzzno()).or() + .eq(BstIvtCutpointivt::getQzz_no2, planOne.getQzzno())) + ); + if (!alreadyBindPlans.isEmpty()) { + throw new BadRequestException("子卷:" + containerName + " 已经绑定过子卷到暂存架上!"); + } + // todo: 这台分切机已经绑定过其他子卷??? - if (ObjectUtil.isNotEmpty(planOne.getQzzno())) { - // 判断是不是绑定过的,就查一下这个气胀轴编码在缓存架子上存不存在 - List list = deliverycachepointivtService.list(new LambdaQueryWrapper() - .eq(Deliverycachepointivt::getQzzno, planOne.getQzzno())); - if (!list.isEmpty()) { - throw new BadRequestException("子卷:" + containerName + "已经绑定过气胀轴"); - } + if (ObjectUtil.isNotEmpty(planOne.getQzzno())) { + // 判断是不是绑定过的,就查一下这个气胀轴编码在缓存架子上存不存在 + List list = deliverycachepointivtService.list(new LambdaQueryWrapper() + .eq(Deliverycachepointivt::getQzzno, planOne.getQzzno())); + if (!list.isEmpty()) { + throw new BadRequestException("子卷:" + containerName + "已经绑定过气胀轴"); } - String resourceName = planOne.getResource_name(); - LambdaQueryWrapper lam = new LambdaQueryWrapper() - .eq(PdmBiSlittingproductionplan::getResource_name, resourceName) - .eq(PdmBiSlittingproductionplan::getSplit_group, planOne.getSplit_group()) - .eq(PdmBiSlittingproductionplan::getUp_or_down, planOne.getUp_or_down()); - if ("1".equals(planOne.getPaper_tube_or_FRP())) { - lam.eq(PdmBiSlittingproductionplan::getParent_container_name, planOne.getParent_container_name()); - } else { - lam.eq(PdmBiSlittingproductionplan::getRestruct_container_name, planOne.getRestruct_container_name()); + } + String resourceName = planOne.getResource_name(); + LambdaQueryWrapper lam = new LambdaQueryWrapper() + .eq(PdmBiSlittingproductionplan::getResource_name, resourceName) + .eq(PdmBiSlittingproductionplan::getIs_delete, "0") + .ne(PdmBiSlittingproductionplan::getStatus, "99") + .eq(PdmBiSlittingproductionplan::getSplit_group, planOne.getSplit_group()) + .eq(PdmBiSlittingproductionplan::getUp_or_down, planOne.getUp_or_down()); + if ("1".equals(planOne.getOrder_type())) { + lam.eq(PdmBiSlittingproductionplan::getParent_container_name, planOne.getParent_container_name()); + } else { + lam.eq(PdmBiSlittingproductionplan::getRestruct_container_name, planOne.getRestruct_container_name()); + } + List list = slittingproductionplanService.list(lam); + if (list.size() > 2) { + throw new BadRequestException("数据异常!请联系管理员!"); + } + if (!"1".equals(force)) { + // 如果不强制绑定,就需要判断轴的规格对不对 + if (xnPlans.size() != list.size()) { + throw new BadRequestException("轴的卷数不匹配,不允许绑定!"); } - List list = slittingproductionplanService.list(lam); - if (!"1".equals(force)) { - // 如果不强制绑定,就需要判断轴的规格对不对 - if (qzzs.size() != list.size()) { - throw new BadRequestException("轴的卷数不匹配,不允许绑定!"); - } - for (int i = 0; i < list.size(); i++) { - PdmBiSlittingproductionplan needPlan = list.get(i); - for (PdmBiSlittingproductionplan qzz : qzzs) { - if (qzz.getLeft_or_right().equals(needPlan.getLeft_or_right())) { - if (needPlan.getPaper_tube_or_FRP().equals("1")) { - // 纸管 - if (!needPlan.getPaper_tube_material().equals(qzz.getPaper_tube_material())) { - throw new BadRequestException("管芯不匹配,无法绑定!"); - } - } else { - if (!needPlan.getFRP_material().equals(qzz.getFRP_material())) { - throw new BadRequestException("管芯不匹配,无法绑定!"); - } + for (int i = 0; i < list.size(); i++) { + PdmBiSlittingproductionplan needPlan = list.get(i); + for (PdmBiSlittingproductionplan qzz : xnPlans) { + if (qzz.getLeft_or_right().equals(needPlan.getLeft_or_right())) { + if (needPlan.getPaper_tube_or_FRP().equals("1")) { + // 纸管 + if (!needPlan.getPaper_tube_material().equals(qzz.getPaper_tube_material())) { + throw new BadRequestException("管芯不匹配,无法绑定!"); + } + } else { + if (!needPlan.getFRP_material().equals(qzz.getFRP_material())) { + throw new BadRequestException("管芯不匹配,无法绑定!"); } } } } } - - String qzzNo = resourceName.substring(0, 2) - + resourceName.substring(resourceName.length() - 2) - + list.get(0).getSplit_group() - + TaskUtils.getDateTime("yyMMddHHmmss") + "-" - + list.get(0).getUp_or_down(); - // 绑定气胀轴和纸管重量 - list.forEach(plan -> { - plan.setQzzno(qzzNo); - for (int i = 0; i < qzzs.size(); i++) { - PdmBiSlittingproductionplan shelfQzz = qzzs.get(i); + } + String qzzNo = resourceName.substring(0, 2) + + resourceName.substring(resourceName.length() - 2) + + list.get(0).getSplit_group() + + TaskUtils.getDateTime("yyMMddHHmmss") + "-" + + list.get(0).getUp_or_down(); + // 绑定气胀轴和纸管重量 + list.forEach(plan -> { + plan.setQzzno(qzzNo); + if (!"1".equals(force)) { + for (int i = 0; i < xnPlans.size(); i++) { + PdmBiSlittingproductionplan shelfQzz = xnPlans.get(i); if (plan.getLeft_or_right().equals(shelfQzz.getLeft_or_right())) { plan.setPaper_weight(shelfQzz.getPaper_weight()); } } - plan.setIs_call("1"); - plan.setStatus("03"); - plan.setUpdate_time(DateUtil.now()); - plan.setUpdate_optid(SecurityUtils.getCurrentUserId()); - plan.setUpdate_optname(SecurityUtils.getCurrentNickName()); - }); - slittingproductionplanService.updateBatchById(list); - slittingproductionplanService.deleteAll(qzzs.stream().map(PdmBiSlittingproductionplan::getWorkorder_id).collect(Collectors.toSet())); - shelf.setQzzno(qzzNo); - shelf.setPoint_status("03"); - shelf.setUpdate_optid(SecurityUtils.getCurrentUserId()); - shelf.setUpdate_optname(SecurityUtils.getCurrentNickName()); - shelf.setUpdate_time(DateUtil.now()); - deliverycachepointivtService.updateById(shelf); + } + plan.setIs_call("1"); + plan.setStatus("03"); + plan.setUpdate_time(DateUtil.now()); + plan.setUpdate_optid(SecurityUtils.getCurrentUserId()); + plan.setUpdate_optname(SecurityUtils.getCurrentNickName()); + }); + slittingproductionplanService.updateBatchById(list); + if (xnPlans.get(0).getContainer_name().contains("虚拟")) { + slittingproductionplanService.deleteAll(xnPlans.stream().map(PdmBiSlittingproductionplan::getWorkorder_id).collect(Collectors.toSet())); } + shelf.setQzzno(qzzNo); + shelf.setPoint_status("03"); + shelf.setUpdate_optid(SecurityUtils.getCurrentUserId()); + shelf.setUpdate_optname(SecurityUtils.getCurrentNickName()); + shelf.setUpdate_time(DateUtil.now()); + deliverycachepointivtService.updateById(shelf); + } public List getRedisListValue(String key) { diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/util/SlitterTaskUtil.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/util/SlitterTaskUtil.java index 75e794723..dee0eac0d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/util/SlitterTaskUtil.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/util/SlitterTaskUtil.java @@ -353,8 +353,18 @@ public class SlitterTaskUtil { return "1"; } - public static String getPointLocationInCutDeviceXn(int num) { - return num <= 2 ? "0" : "1"; + public static String getPointLocationInCutDeviceXn(int num, String area) { + if (area.equals(B1_AREA_CODE)) { + if (num <= 2) { + return "0"; + } + } + if (area.equals(B2_AREA_CODE)) { + if (num > 2) { + return "0"; + } + } + return "1"; } /**