From 1a3f5db043fd381b60a0a5f40687136274a2cbd1 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 27 二月 2026 09:57:41 +0800
Subject: [PATCH] Merge branch 'refs/heads/dev_New' into dev_New_kthg
---
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 36 +++++++++++++++++++++++++-----------
1 files changed, 25 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
index 7a67d50..0759514 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -37,8 +37,10 @@
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
@Service
@AllArgsConstructor
@@ -60,6 +62,7 @@
private ProductModelMapper productModelMapper;
private QualityInspectMapper qualityInspectMapper;
+ private QualityUnqualifiedMapper qualityUnqualifiedMapper;
private ProductProcessMapper productProcessMapper;
private ProductProcessRouteMapper productProcessRouteMapper;
@@ -153,10 +156,8 @@
productionProductInput.setQuantity(productStructureDto.getUnitQuantity().multiply(dto.getQuantity()));
productionProductInput.setProductMainId(productionProductMain.getId());
productionProductInputMapper.insert(productionProductInput);
- stockUtils.substractStock(productStructureDto.getProductModelId(), productionProductInput.getQuantity(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode(), productionProductMain.getId());
-
- }
- /*鏂板鎶ュ伐浜у嚭琛�*/
+// stockUtils.substractStock(productStructureDto.getProductModelId(), productionProductInput.getQuantity(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode(), productionProductMain.getId());
+ } /*鏂板鎶ュ伐浜у嚭琛�*/
ProductionProductOutput productionProductOutput = new ProductionProductOutput();
productionProductOutput.setProductMainId(productionProductMain.getId());
productionProductOutput.setProductModelId(productProcessRouteItem.getProductModelId());
@@ -207,7 +208,7 @@
}
}else {
//鐩存帴鍏ュ簱
- stockUtils.addStock(productProcessRouteItem.getProductModelId(), productionProductOutput.getQuantity(), StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
+ stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
}
/*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId());
@@ -255,8 +256,16 @@
}
@Override
- @Transactional(rollbackFor = Exception.class)
public Boolean removeProductMain(Long id) {
+ //鍒ゆ柇璇ユ潯鎶ュ伐鏄惁涓嶅悎鏍煎鐞�,濡傛灉涓嶅悎鏍煎鐞嗕簡锛屽垯涓嶅厑璁稿垹闄�
+ List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(Wrappers.<QualityInspect>lambdaQuery().eq(QualityInspect::getProductMainId, id));
+ if (qualityInspects.size() > 0){
+ List<QualityUnqualified> qualityUnqualifieds = qualityUnqualifiedMapper.selectList(Wrappers.<QualityUnqualified>lambdaQuery()
+ .in(QualityUnqualified::getInspectId, qualityInspects.stream().map(QualityInspect::getId).collect(Collectors.toList())));
+ if (qualityUnqualifieds.size() > 0 && qualityUnqualifieds.get(0).getInspectState()==1) {
+ throw new ServiceException("璇ユ潯鎶ュ伐宸茬粡涓嶅悎鏍煎鐞嗕簡锛屼笉鍏佽鍒犻櫎");
+ }
+ }
ProductionProductMain productionProductMain = productionProductMainMapper.selectById(id);
//璇ユ姤宸ュ搴旂殑宸ヨ壓璺嚎璇︽儏
ProductProcessRouteItem productProcessRouteItem = productProcessRouteItemMapper.selectById(productionProductMain.getProductProcessRouteItemId());
@@ -281,17 +290,17 @@
} else {
throw new ServiceException("鎿嶄綔澶辫触锛氬伐鍗曚俊鎭垨浜у嚭璁板綍涓嶅瓨鍦�");
}
-
//鍒ゆ柇鏄惁鏄渶鍚庝竴閬撳伐搴�
List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
if (productProcessRouteItem.getDragSort() != null && productProcessRouteItems != null && productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
if (productOrder != null) {
BigDecimal orderCompleteQty = productOrder.getCompleteQuantity() == null ? BigDecimal.ZERO : productOrder.getCompleteQuantity();
- BigDecimal outputQty = productionProductOutput.getQuantity() != null
- ? productionProductOutput.getQuantity() : BigDecimal.ZERO;
-
- productOrder.setCompleteQuantity(orderCompleteQty.subtract(outputQty));
+ BigDecimal totalQty = productionProductOutput.getQuantity() != null ? productionProductOutput.getQuantity() : BigDecimal.ZERO;
+ BigDecimal scrapQty = productionProductOutput.getScrapQty() != null ? productionProductOutput.getScrapQty() : BigDecimal.ZERO;
+ BigDecimal actualQualifiedQty = totalQty.subtract(scrapQty);
+ BigDecimal newCompleteQty = orderCompleteQty.subtract(actualQualifiedQty);
+ productOrder.setCompleteQuantity(newCompleteQty.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : newCompleteQty);
productOrder.setEndTime(null);
productOrderMapper.updateById(productOrder);
} else {
@@ -331,4 +340,9 @@
public ArrayList<Long> listMain(List<Long> idList) {
return productionProductMainMapper.listMain(idList);
}
+
+ @Override
+ public IPage<HashMap<String, Object>> queryProductInputAndOutput(Page page, ProductionProductMainDto productionProductMainDto) {
+ return productionProductMainMapper.queryProductInputAndOutput(page, productionProductMainDto);
+ }
}
--
Gitblit v1.9.3