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}
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();
}