From 99ac94a7cf412d9f0081c1d84b520eab051bb0fd Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期五, 24 四月 2026 11:08:21 +0800
Subject: [PATCH] feat(production): 重构生产计划模块,新增和优化生产计划功能
---
src/main/java/com/ruoyi/production/service/impl/ProductionOrderServiceImpl.java | 79 +++++++++++----------------------------
1 files changed, 22 insertions(+), 57 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderServiceImpl.java
index e48509e..5ec666b 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderServiceImpl.java
@@ -2,6 +2,7 @@
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -15,60 +16,24 @@
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.production.bean.dto.ProductionOrderDto;
import com.ruoyi.production.bean.vo.ProductionOrderVo;
-import com.ruoyi.production.mapper.ProductionBomStructureMapper;
-import com.ruoyi.production.mapper.ProductionOperationTaskMapper;
-import com.ruoyi.production.mapper.ProductionOrderBomMapper;
-import com.ruoyi.production.mapper.ProductionOrderMapper;
-import com.ruoyi.production.mapper.ProductionOrderPickMapper;
-import com.ruoyi.production.mapper.ProductionOrderPickRecordMapper;
-import com.ruoyi.production.mapper.ProductionOrderRoutingMapper;
-import com.ruoyi.production.mapper.ProductionOrderRoutingOperationMapper;
-import com.ruoyi.production.mapper.ProductionOrderRoutingOperationParamMapper;
-import com.ruoyi.production.mapper.ProductionPlanMapper;
-import com.ruoyi.production.mapper.ProductionProductMainMapper;
-import com.ruoyi.production.pojo.ProductionOrderPick;
-import com.ruoyi.production.pojo.ProductionOrderPickRecord;
-import com.ruoyi.production.pojo.ProductionBomStructure;
-import com.ruoyi.production.pojo.ProductionOperationTask;
-import com.ruoyi.production.pojo.ProductionOrder;
-import com.ruoyi.production.pojo.ProductionOrderBom;
-import com.ruoyi.production.pojo.ProductionOrderRouting;
-import com.ruoyi.production.pojo.ProductionOrderRoutingOperation;
-import com.ruoyi.production.pojo.ProductionOrderRoutingOperationParam;
-import com.ruoyi.production.pojo.ProductionPlan;
-import com.ruoyi.production.pojo.ProductionProductMain;
import com.ruoyi.production.enums.ProductOrderStatusEnum;
+import com.ruoyi.production.mapper.*;
+import com.ruoyi.production.pojo.*;
+import com.ruoyi.production.service.ProductionOrderService;
import com.ruoyi.sales.mapper.SalesLedgerMapper;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
-import com.ruoyi.production.service.ProductionOrderService;
-import com.ruoyi.technology.mapper.TechnologyBomMapper;
-import com.ruoyi.technology.mapper.TechnologyBomStructureMapper;
-import com.ruoyi.technology.mapper.TechnologyRoutingMapper;
-import com.ruoyi.technology.mapper.TechnologyRoutingOperationMapper;
-import com.ruoyi.technology.mapper.TechnologyRoutingOperationParamMapper;
-import com.ruoyi.technology.pojo.TechnologyBom;
-import com.ruoyi.technology.pojo.TechnologyBomStructure;
-import com.ruoyi.technology.pojo.TechnologyRouting;
-import com.ruoyi.technology.pojo.TechnologyRoutingOperation;
-import com.ruoyi.technology.pojo.TechnologyRoutingOperationParam;
+import com.ruoyi.technology.mapper.*;
+import com.ruoyi.technology.pojo.*;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDate;
-import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
import java.util.stream.Collectors;
@Service
@@ -98,7 +63,7 @@
private final FileUtil fileUtil;
@Override
- public com.baomidou.mybatisplus.core.metadata.IPage<ProductionOrderVo> pageProductionOrder(Page<ProductionOrderDto> page, ProductionOrderDto dto) {
+ public IPage<ProductionOrderVo> pageProductionOrder(Page<ProductionOrderDto> page, ProductionOrderDto dto) {
Page<ProductionOrderVo> result = (Page<ProductionOrderVo>) baseMapper.pageProductionOrder(page, dto);
fillProductImages(result.getRecords());
return result;
@@ -395,18 +360,18 @@
if (defaultDecimal(productionOrder.getQuantity()).compareTo(BigDecimal.ZERO) <= 0) {
throw new ServiceException("quantity must be greater than 0");
}
- if (productionOrder.getTechnologyRoutingId() == null) {
- // 鏈樉寮忔寚瀹氬伐鑹鸿矾绾挎椂锛屾寜浜у搧瑙勬牸閫夋渶鏂颁竴鏉″伐鑹轰綔涓洪粯璁よ矾绾裤��
- TechnologyRouting technologyRouting = technologyRoutingMapper.selectOne(
- Wrappers.<TechnologyRouting>lambdaQuery()
- .eq(TechnologyRouting::getProductModelId, productionOrder.getProductModelId())
- .orderByDesc(TechnologyRouting::getId)
- .last("limit 1"));
- if (technologyRouting == null) {
- throw new ServiceException("No technology routing found for the product model");
- }
- productionOrder.setTechnologyRoutingId(technologyRouting.getId());
- }
+// if (productionOrder.getTechnologyRoutingId() == null) {
+// // 鏈樉寮忔寚瀹氬伐鑹鸿矾绾挎椂锛屾寜浜у搧瑙勬牸閫夋渶鏂颁竴鏉″伐鑹轰綔涓洪粯璁よ矾绾裤��
+// TechnologyRouting technologyRouting = technologyRoutingMapper.selectOne(
+// Wrappers.<TechnologyRouting>lambdaQuery()
+// .eq(TechnologyRouting::getProductModelId, productionOrder.getProductModelId())
+// .orderByDesc(TechnologyRouting::getId)
+// .last("limit 1"));
+// if (technologyRouting == null) {
+// throw new ServiceException("No technology routing found for the product model");
+// }
+// productionOrder.setTechnologyRoutingId(technologyRouting.getId());
+// }
if (oldOrder != null && ProductOrderStatusEnum.isStarted(oldOrder.getStatus())) {
// 寮�宸ュ悗鍙厑璁镐慨姝i潪鏍稿績瀛楁锛屾牳蹇冪敓浜т緷鎹攣瀹氥��
if (!Objects.equals(oldOrder.getProductModelId(), productionOrder.getProductModelId())
@@ -591,10 +556,10 @@
return null;
}
if (productionPlan.getPromisedDeliveryDate() != null) {
- return productionPlan.getPromisedDeliveryDate().toLocalDate();
+ return productionPlan.getPromisedDeliveryDate();
}
if (productionPlan.getRequiredDate() != null) {
- return productionPlan.getRequiredDate().toLocalDate();
+ return productionPlan.getRequiredDate();
}
return null;
}
--
Gitblit v1.9.3