From 2be4bac6962a95c55313679daebf3c09fd200f7e Mon Sep 17 00:00:00 2001 From: sunjianxi <839419401@qq.com> Date: Fri, 20 Mar 2026 16:49:47 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E5=BC=80=E5=8F=91-sjx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WorkOrderServiceImpl.java | 57 ++++++++++++------- 1 file changed, 38 insertions(+), 19 deletions(-) diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java index 5ef32cf3..d0d4146b 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java @@ -674,7 +674,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl otherResourceList = equipResourceService.list(equipWrapper); - BigDecimal rate = equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(), 2, RoundingMode.HALF_UP); + BigDecimal rate = equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(), 4, RoundingMode.HALF_UP); for(EquipResourceEntity otherResource : otherResourceList){ otherResource.setRestCapacity(otherResource.getTotalCapacity().multiply(rate).setScale(0, RoundingMode.FLOOR)); otherResource.setIsUsed("1"); @@ -881,10 +881,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl list) { //判断待排产优先级,1级所有1级往后订单重新排产,2级订单重新排4/5级订单 List priorityList = list.stream().map(YieldOrderEntity::getPriorityAps).collect(Collectors.toList()); - if (priorityList.contains(1)) { + if (priorityList.contains(YieldOrderEnum.PRIORITY_APS_CRITICAL.getCode())) { //查询所有非一级的待生产订单 - List schedulingOrderList = yieldOrderService.list(Wrappers.lambdaQuery().ne(YieldOrderEntity::getPriorityAps, 1).eq(YieldOrderEntity::getStatus, 4)); + List schedulingOrderList = yieldOrderService.list(Wrappers.lambdaQuery().ne(YieldOrderEntity::getPriorityAps, 1).in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCode(),YieldOrderEnum.STATUS_PROCESS_WAITING.getCode())); //校验已排产订单资源占用情况 checkResource(schedulingOrderList); } - if (priorityList.contains(2)) { + if (priorityList.contains(YieldOrderEnum.PRIORITY_APS_HIGH.getCode())) { //查询4/5级的待生产订单 - List schedulingOrderList = yieldOrderService.list(Wrappers.lambdaQuery().in(YieldOrderEntity::getPriorityAps, Arrays.asList("4", "5")).eq(YieldOrderEntity::getStatus, 4)); + List schedulingOrderList = yieldOrderService.list(Wrappers.lambdaQuery().in(YieldOrderEntity::getPriorityAps, Arrays.asList("4", "5")).in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCode(),YieldOrderEnum.STATUS_PROCESS_WAITING.getCode())); checkResource(schedulingOrderList); } } @@ -1116,9 +1114,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl list) { if (CollectionUtils.isNotEmpty(list)) { //根据订单查询设备资源 - for (YieldOrderEntity yieldOrder : list) { + for (YieldOrderEntity order : list) { + BigDecimal sumCapacity = order.getYieldType() == YieldOrderEnum.YIELD_TYPE_1.getCode() ? order.getYpArea().multiply(BigDecimal.valueOf(order.getYpQty())) : BigDecimal.valueOf(order.getYpQty()); + //查询相关车间订单 - WorkOrderEntity workOrder = this.getOne(Wrappers.lambdaQuery().eq(WorkOrderEntity::getYoId, yieldOrder.getId())); + WorkOrderEntity workOrder = this.getOne(Wrappers.lambdaQuery().eq(WorkOrderEntity::getYoId, order.getId())); if (workOrder != null) { List schedulingPlanList = workPlanService.list(Wrappers.lambdaQuery().eq(WorkPlanEntity::getWoId, workOrder.getId())); if (CollectionUtils.isNotEmpty(schedulingPlanList)) { @@ -1127,12 +1127,30 @@ public class WorkOrderServiceImpl extends BaseServiceImpl updateWrapper = new LambdaUpdateWrapper<>(); + equipResource.setRestCapacity(equipResource.getRestCapacity().add(sumCapacity)); + equipResourceService.updateById(equipResource); + //同一个设备可能有多个工艺能力,同一时间只能做一个工艺能力的零件,所以需要把当前设备所有工艺能力的剩余产能都更新调 + LambdaQueryWrapper equipWrapper = new LambdaQueryWrapper<>(); + equipWrapper.eq(EquipResourceEntity::getEquipCode, equipResource.getEquipCode()); + equipWrapper.eq(EquipResourceEntity::getDateTime, equipResource.getDateTime()); + equipWrapper.eq(EquipResourceEntity::getPeriod, equipResource.getPeriod()); + equipWrapper.ne(BaseEntity::getId,equipResource.getId()); + List otherResourceList = equipResourceService.list(equipWrapper); + BigDecimal rate = equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(), 4, RoundingMode.HALF_UP); + for(EquipResourceEntity otherResource : otherResourceList){ + otherResource.setRestCapacity(otherResource.getTotalCapacity().multiply(rate).setScale(0, RoundingMode.FLOOR)); + otherResource.setIsUsed("0"); + otherResource.setGlassCode(null); + equipResourceService.updateById(otherResource); + } + //该设备后续所有开始时间小于当前结束时间的时间段都变为不可用 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper(); + updateWrapper.lt(EquipResourceEntity::getStartTime, equipResource.getEndTime()); + updateWrapper.gt(EquipResourceEntity::getStartTime, equipResource.getStartTime()); updateWrapper.eq(EquipResourceEntity::getEquipCode, equipResource.getEquipCode()); - updateWrapper.eq(EquipResourceEntity::getDateTime, equipResource.getDateTime()); - updateWrapper.eq(EquipResourceEntity::getPeriod, equipResource.getPeriod()); - equipResourceService.update(equipResource, updateWrapper); + EquipResourceEntity equipResource1 = new EquipResourceEntity(); + equipResource1.setIsUsed("0"); + equipResourceService.update(equipResource1, updateWrapper); } //还原人力资源 @@ -1153,8 +1171,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl otherResourceList = equipResourceService.list(equipWrapper); - BigDecimal rate = equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(), 2, RoundingMode.HALF_UP); + BigDecimal rate = equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(), 4, RoundingMode.HALF_UP); for(EquipResourceEntity otherResource : otherResourceList){ otherResource.setRestCapacity(otherResource.getTotalCapacity().multiply(rate).setScale(0, RoundingMode.FLOOR)); equipResourceService.updateById(otherResource); } + isSameFurnace = true; prevProcessEnd = workPlan.getPlanEndTime(); } From 698236ec0b8252413e17fd3594966932bdc55948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=ABUmbrella?= <2539020564@qq.com> Date: Fri, 20 Mar 2026 18:00:55 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/logistics/mapper/OrderBindMapper.xml | 12 ++++++------ .../springblade/desk/logistics/mapper/TaskMapper.xml | 9 ++++----- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/OrderBindMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/OrderBindMapper.xml index b6c44fd1..d8b2b85a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/OrderBindMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/OrderBindMapper.xml @@ -8,15 +8,15 @@ SELECT O.*, Y.CARD_NO AS cardNo FROM LM_ORDER_BIND O - left join MES_YIELD_ORDER Y - on O.ORDER_ID=Y.ID - WHERE O.IS_DELETED = 0 - + LEFT JOIN MES_YIELD_ORDER Y ON O.ORDER_ID = Y.ID + WHERE O.IS_DELETED = 0 + - AND O.BOX_BARCODE LIKE CONCAT('%', #{orderBindDto.boxBarcode}, '%') + AND O.BOX_BARCODE LIKE '%' || #{orderBindDto.boxBarcode} || '%' + - AND O.BINDING_STATUS = #{bindingStatus.bindingStatus} + AND O.BINDING_STATUS = #{orderBindDto.bindingStatus} AND O.CREATE_TIME >= #{orderBindDto.startTime} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/TaskMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/TaskMapper.xml index 0e3b65f5..9cb08745 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/TaskMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/TaskMapper.xml @@ -17,12 +17,11 @@ SELECT l.*, b.WC_NAME AS wcName FROM LM_TASK l - left join BS_WORK_CENTER b - on l.WC_ID = b.ID - WHERE l.IS_DELETED = 0 - + LEFT JOIN BS_WORK_CENTER b ON l.WC_ID = b.ID + WHERE l.IS_DELETED = 0 + - AND l.BOX_BARCODE LIKE CONCAT('%', #{taskDto.boxBarcode}, '%') + AND l.BOX_BARCODE LIKE '%' || #{taskDto.boxBarcode} || '%' AND l.WC_ID = #{taskDto.wcId}