From 80155f95799dfd1c457e32252cbe43dfbb01c05a Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期六, 25 四月 2026 13:30:00 +0800
Subject: [PATCH] feat(production): 优化生产产品主记录的时间设置逻辑
---
src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java | 81 ++++++++++++++++------------------------
1 files changed, 32 insertions(+), 49 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
index 4db1c0c..081ff3b 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
@@ -6,9 +6,13 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.production.dto.ProductProcessRouteItemDto;
+import com.ruoyi.production.dto.ProductionProductMainDto;
import com.ruoyi.production.mapper.*;
import com.ruoyi.production.pojo.*;
import com.ruoyi.production.service.ProductProcessRouteItemService;
+import com.ruoyi.production.service.ProductProcessService;
+import com.ruoyi.production.service.ProductWorkOrderService;
+import com.ruoyi.production.service.ProductionProductMainService;
import com.ruoyi.quality.mapper.QualityInspectMapper;
import com.ruoyi.quality.pojo.QualityInspect;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
@@ -16,10 +20,12 @@
import lombok.AllArgsConstructor;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
+import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
@@ -33,16 +39,13 @@
@AllArgsConstructor
public class ProductProcessRouteItemServiceImpl extends ServiceImpl<ProductProcessRouteItemMapper, ProductProcessRouteItem> implements ProductProcessRouteItemService {
+ @Autowired
+ @Lazy
+ private ProductionProductMainService productionProductMainService;
private ProductProcessRouteItemMapper productProcessRouteItemMapper;
private ProductionProductMainMapper productionProductMainMapper;
-
- private ProductionProductInputMapper productionProductInputMapper;
-
- private ProductionProductOutputMapper productionProductOutputMapper;
-
- private QualityInspectMapper qualityInspectMapper;
private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
@@ -50,9 +53,9 @@
private ProductOrderMapper productOrderMapper;
- private ProductProcessRouteMapper productProcessRouteMapper;
+ private final ProductWorkOrderService productWorkOrderService;
- private SalesLedgerProductMapper salesLedgerProductMapper;
+ private final ProductProcessService productProcessService;
@Override
@@ -73,6 +76,9 @@
if (productWorkOrder == null) {
throw new RuntimeException("鍒犻櫎澶辫触锛氭湭鎵惧埌鍏宠仈鐨勭敓浜у伐鍗�");
}
+ if (BigDecimal.ZERO.compareTo(productWorkOrder.getCompleteQuantity()) < 0) {
+ throw new RuntimeException("鍒犻櫎澶辫触锛氳宸ュ崟宸插紑濮嬬敓浜э紝璇峰厛鍒犻櫎鐢熶骇鎶ュ伐");
+ }
Long workOrderId = productWorkOrder.getId();
Long productOrderId = productWorkOrder.getProductOrderId();
// 鏌ヨ鐢熶骇涓昏〃
@@ -83,27 +89,23 @@
if (!productionProductMains.isEmpty()) {
// 鎵归噺鍒犻櫎瀛愯〃
for (ProductionProductMain main : productionProductMains) {
- Long mainId = main.getId();
- // 鍒犻櫎鎶曞叆
- productionProductInputMapper.delete(new LambdaQueryWrapper<ProductionProductInput>()
- .eq(ProductionProductInput::getProductMainId, mainId));
- // 鍒犻櫎浜у嚭
- productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>()
- .eq(ProductionProductOutput::getProductMainId, mainId));
- // 鍒犻櫎璐ㄦ
- qualityInspectMapper.delete(new LambdaQueryWrapper<QualityInspect>()
- .eq(QualityInspect::getProductMainId, mainId));
+ productionProductMainService.removeProductMain(main.getId());
+// Long mainId = main.getId();
+// // 鍒犻櫎鎶曞叆
+// productionProductInputMapper.delete(new LambdaQueryWrapper<ProductionProductInput>()
+// .eq(ProductionProductInput::getProductMainId, mainId));
+// // 鍒犻櫎浜у嚭
+// productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>()
+// .eq(ProductionProductOutput::getProductMainId, mainId));
+// // 鍒犻櫎璐ㄦ
+// qualityInspectMapper.delete(new LambdaQueryWrapper<QualityInspect>()
+// .eq(QualityInspect::getProductMainId, mainId));
+ salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
+ .eq(SalesLedgerProductionAccounting::getProductMainId, main.getId()));
}
}
- // 鍒犻櫎鎶ュ伐锛堢敓浜т富琛級
- productionProductMainMapper.delete(new LambdaQueryWrapper<ProductionProductMain>()
- .eq(ProductionProductMain::getWorkOrderId, workOrderId));
// 鏌ヨ璁㈠崟 + 鍒犻櫎鏍哥畻
- ProductOrder productOrder = productOrderMapper.selectById(productOrderId);
- if (productOrder != null && productOrder.getSalesLedgerId() != null) {
- salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
- .eq(SalesLedgerProductionAccounting::getSalesLedgerId, productOrder.getSalesLedgerId()));
- }
+
// 鍒犻櫎鍏宠仈宸ュ崟
productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>()
.eq(ProductWorkOrder::getProductProcessRouteItemId, routeItemId));
@@ -134,35 +136,16 @@
@Override
public R addRouteItem(ProductProcessRouteItem productProcessRouteItem) {
ProductOrder productOrder = productOrderMapper.selectById(productProcessRouteItem.getProductOrderId());
+ ProductProcess productProcess = productProcessService.getById(productProcessRouteItem.getProcessId());
int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
- // 鐢熸垚褰撳墠鏃ユ湡鐨勫墠缂�锛氬勾鏈堟棩
- String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+
if (insert > 0) {
- // 鏌ヨ浠婃棩宸插瓨鍦ㄧ殑鏈�澶у伐鍗曞彿
- QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>();
- queryWrapper.likeRight("work_order_no", datePrefix)
- .orderByDesc("work_order_no")
- .last("LIMIT 1");
- ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper);
- int sequenceNumber = 1; // 榛樿搴忓彿
- if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
- String lastNo = lastWorkOrder.getWorkOrderNo().toString();
- if (lastNo.startsWith(datePrefix)) {
- String seqStr = lastNo.substring(datePrefix.length());
- try {
- sequenceNumber = Integer.parseInt(seqStr) + 1;
- } catch (NumberFormatException e) {
- sequenceNumber = 1;
- }
- }
- }
- // 鐢熸垚瀹屾暣鐨勫伐鍗曞彿
- String workOrderNoStr = "GD" +String.format("%s%03d", datePrefix, sequenceNumber);
+
ProductWorkOrder productWorkOrder = new ProductWorkOrder();
productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
productWorkOrder.setProductOrderId(productProcessRouteItem.getProductOrderId());
productWorkOrder.setPlanQuantity(productOrder.getQuantity());
- productWorkOrder.setWorkOrderNo(workOrderNoStr);
+ productWorkOrder.setWorkOrderNo(productWorkOrderService.generateProductWorkOrder(null,productProcess.getName(),productOrder.getNpsNo()));
productWorkOrder.setStatus(1);
productWorkOrderMapper.insert(productWorkOrder);
}
--
Gitblit v1.9.3