From f350465db70d6f9db9494483ee0cec7793a9007b Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 19 八月 2026 17:47:57 +0800
Subject: [PATCH] feat(approve): 实现审批流程或签会签功能并优化数据库配置
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | 97 +++++++++++++++++++++++++-----------------------
1 files changed, 50 insertions(+), 47 deletions(-)
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index b830a96..e8de010 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -18,6 +18,7 @@
import com.ruoyi.production.pojo.*;
import com.ruoyi.production.service.ProductProcessService;
import com.ruoyi.production.service.ProductWorkOrderService;
+import com.ruoyi.production.service.ProductionProductMainService;
import com.ruoyi.production.service.impl.ProductOrderServiceImpl;
import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
import com.ruoyi.purchase.pojo.PurchaseLedger;
@@ -63,8 +64,10 @@
private final ProductWorkOrderService productWorkOrderService;
private final ProductProcessService productProcessService;
+ private ProductionProductMainService productionProductMainService;
private SalesLedgerProductMapper salesLedgerProductMapper;
private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
+ private ProductionReportPersonMapper productionReportPersonMapper;
private SalesLedgerMapper salesLedgerMapper;
private PurchaseLedgerMapper purchaseLedgerMapper;
private ProductOrderMapper productOrderMapper;
@@ -280,7 +283,7 @@
productOrder.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId());
productOrder.setProductModelId(salesLedgerProduct.getProductModelId());
productOrder.setSaleLedgerProductId(salesLedgerProduct.getId());
- String string = productOrderServiceImpl.generateNextOrderByContractNo(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")), salesLedger.getSalesContractNo());
+ String string = productOrderServiceImpl.generateNextOrderByContractNo(salesLedger.getSalesContractNo());
productOrder.setNpsNo(string);
productOrder.setQuantity(salesLedgerProduct.getQuantity());//闇�姹傛暟閲�
productOrder.setCompleteQuantity(BigDecimal.ZERO);//瀹屾垚鏁伴噺
@@ -316,6 +319,7 @@
productProcessRouteItem.setProductOrderId(productOrder.getId());
productProcessRouteItem.setProductRouteId(productProcessRoute.getId());
productProcessRouteItem.setDragSort(processRouteItem.getDragSort());
+ productProcessRouteItem.setIsQuality(processRouteItem.getIsQuality());
int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
if (insert > 0) {
ProductWorkOrder productWorkOrder = new ProductWorkOrder();
@@ -329,6 +333,8 @@
}
}
+ // 鎺掍骇涓嬭揪鍚庤嚜鍔ㄨЕ鍙戠涓�閬撻渶璐ㄦ宸ュ簭鐨勮繃绋嬫楠�
+ productionProductMainService.preGenerateQualityInspectForOrder(productOrder.getId());
productOrder.setRouteId(processRoute.getId());
productOrderMapper.updateById(productOrder);
}
@@ -363,59 +369,56 @@
// 鏌ヨ鍏宠仈鐨勫伐鍗旾D
List<ProductWorkOrder> workOrders = productWorkOrderMapper.selectList(
new LambdaQueryWrapper<ProductWorkOrder>()
- .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds)
+ .in(ProductWorkOrder::getProductOrderId, orderIds)
);
- if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(workOrders)) {
- List<Long> workOrderIds = workOrders.stream()
- .map(ProductWorkOrder::getId)
- .collect(Collectors.toList());
+ List<Long> workOrderIds = workOrders.stream()
+ .map(ProductWorkOrder::getId)
+ .collect(Collectors.toList());
- // 鏌ヨ鍏宠仈鐨勭敓浜т富琛↖D
- List<ProductionProductMain> productMains = productionProductMainMapper.selectList(
- new LambdaQueryWrapper<ProductionProductMain>()
- .in(ProductionProductMain::getWorkOrderId, workOrderIds)
+ // 鏌ヨ鍏宠仈鐨勭敓浜т富琛↖D
+ List<ProductionProductMain> productMains = productionProductMainMapper.selectList(
+ new LambdaQueryWrapper<ProductionProductMain>()
+ .in(ProductionProductMain::getWorkOrderId, workOrderIds)
+ );
+ List<Long> productMainIds = productMains.stream()
+ .map(ProductionProductMain::getId)
+ .collect(Collectors.toList());
+
+ // 鍒犻櫎浜у嚭琛ㄣ�佹姇鍏ヨ〃鏁版嵁
+ if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(productMainIds)) {
+ productionProductOutputMapper.deleteByProductMainIds(productMainIds);
+ productionProductInputMapper.deleteByProductMainIds(productMainIds);
+ List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(
+ new LambdaQueryWrapper<QualityInspect>()
+ .in(QualityInspect::getProductMainId, productMainIds)
);
- List<Long> productMainIds = productMains.stream()
- .map(ProductionProductMain::getId)
- .collect(Collectors.toList());
-
- // 鍒犻櫎浜у嚭琛ㄣ�佹姇鍏ヨ〃鏁版嵁
- if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(productMainIds)) {
- productionProductOutputMapper.deleteByProductMainIds(productMainIds);
- productionProductInputMapper.deleteByProductMainIds(productMainIds);
- List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(
- new LambdaQueryWrapper<QualityInspect>()
- .in(QualityInspect::getProductMainId, productMainIds)
- );
- //鍒犻櫎鍑哄簱璁板綍
- for (Long productMainId : productMainIds) {
- //鍒犻櫎鐢熶骇鍑哄簱璁板綍
- stockUtils.deleteStockOutRecord(productMainId, StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
- //鍒犻櫎鎶ュ簾鐨勫叆搴撹褰�
- stockUtils.deleteStockInRecord(productMainId, StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
+ qualityInspects.forEach(qualityInspect -> {
+ //inspectState=1 宸叉彁浜� 涓嶈兘鍒犻櫎
+ if (qualityInspect.getInspectState() == 1) {
+ throw new RuntimeException("宸叉彁浜ょ殑妫�楠屽崟涓嶈兘鍒犻櫎");
}
- qualityInspects.forEach(qualityInspect -> {
- //inspectState=1 宸叉彁浜� 涓嶈兘鍒犻櫎
- if (qualityInspect.getInspectState() == 1) {
- throw new RuntimeException("宸叉彁浜ょ殑妫�楠屽崟涓嶈兘鍒犻櫎");
- }
- });
- qualityInspectMapper.deleteByProductMainIds(productMainIds);
- salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
- .in(SalesLedgerProductionAccounting::getProductMainId, productMainIds));
+ });
+ //鍒犻櫎鍑哄叆搴撹褰�
+ for (Long productMainId : productMainIds) {
+ stockUtils.deleteStockOutRecord(productMainId, StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
+ stockUtils.deleteStockInRecord(productMainId, StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
}
-
- // 鍒犻櫎鐢熶骇涓昏〃鏁版嵁
- productionProductMainMapper.deleteByWorkOrderIds(workOrderIds);
-
- // 鍒犻櫎宸ュ崟鏁版嵁
- productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>()
- .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds));
+ qualityInspectMapper.deleteByProductMainIds(productMainIds);
+ salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
+ .in(SalesLedgerProductionAccounting::getProductMainId, productMainIds));
+ productionReportPersonMapper.delete(new LambdaQueryWrapper<ProductionReportPerson>()
+ .in(ProductionReportPerson::getProductMainId, productMainIds));
}
+
+ productionProductMainMapper.deleteByWorkOrderIds(workOrderIds);
+ // 娓呯悊鎺掍骇棰勭敓鎴愮殑璐ㄦ鍗�
+ productionProductMainService.cleanPreGeneratedQualityInspects(workOrderIds);
+
+ productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>()
+ .in(ProductWorkOrder::getProductOrderId, orderIds));
+ productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>()
+ .in(ProductProcessRouteItem::getId, routeItemIds));
}
- // 鎵归噺鍒犻櫎processRouteItem
- productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>()
- .in(ProductProcessRouteItem::getProductOrderId, orderIds));
// 鎵归噺鍒犻櫎productProcessRoute
productProcessRouteMapper.delete(new LambdaQueryWrapper<ProductProcessRoute>()
--
Gitblit v1.9.3