From f4d4d29368ccacb807f93e2033cd4a643a3ddade Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 30 三月 2026 10:20:28 +0800
Subject: [PATCH] yys 1.修改bug
---
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java | 12 +++--
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 76 +++++++++++++++++++-------------------
src/main/resources/static/work-order-template.docx | 0
3 files changed, 45 insertions(+), 43 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
index 39c4591..5cd4bbd 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -117,11 +117,13 @@
productProcessRoute.setBomId(processRoute.getBomId());
productProcessRouteMapper.insert(productProcessRoute);
// 缁戝畾鐢熶骇bom娓呭崟
- List<ProductStructureRecord> productStructureDtos = productOrder.getProductStructureRecords();
- productStructureDtos.forEach(item ->{
- item.setProductOrderId(productOrder.getId());
- productStructureRecordMapper.insert(item);
- });
+ if(CollectionUtils.isNotEmpty(productOrder.getProductStructureRecords())){
+ List<ProductStructureRecord> productStructureDtos = productOrder.getProductStructureRecords();
+ productStructureDtos.forEach(item ->{
+ item.setProductOrderId(productOrder.getId());
+ productStructureRecordMapper.insert(item);
+ });
+ }
//鏂板鐢熶骇璁㈠崟涓嬬殑宸ヨ壓璺嚎瀛愯〃
List<ProductProcessRouteItem> processRouteItems = productOrder.getProcessRouteItems();
// 鐢熸垚褰撳墠鏃ユ湡鐨勫墠缂�锛氬勾鏈堟棩
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 b249c31..9c55cbb 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -90,11 +90,10 @@
return productionProductMainMapper.listPageProductionProductMainDto(page, productionProductMainDto);
}
- public BigDecimal getRatio(List<ProductWorkOrder> productWorkOrderList){
+ public BigDecimal getRatio(List<ProductWorkOrder> productWorkOrderList,BigDecimal quantity){
// 鑾峰彇瀹屾垚鏁伴噺
BigDecimal completeQuantity = productWorkOrderList
.stream()
- .filter(item -> item.getStatus() == 3)
.map(ProductWorkOrder::getCompleteQuantity)
.reduce(BigDecimal.ZERO, BigDecimal::add);
// 鑾峰彇鎵�鏈夋暟閲�
@@ -102,13 +101,12 @@
.stream()
.map(ProductWorkOrder::getPlanQuantity)
.reduce(BigDecimal.ZERO, BigDecimal::add);
- // 鑾峰彇鏈畬鎴愭暟閲�
- BigDecimal unCompleteQuantity = totalQuantity.subtract(completeQuantity);
- if (unCompleteQuantity.compareTo(BigDecimal.ZERO) <= 0) {
+ completeQuantity = completeQuantity.add(quantity); // 鍔犱笂鎶ュ伐鏁伴噺
+ if (completeQuantity.compareTo(BigDecimal.ZERO) <= 0) {
return BigDecimal.ZERO;
}
// 璁$畻姣斾緥
- return unCompleteQuantity.divide(totalQuantity, 2, RoundingMode.HALF_UP);
+ return completeQuantity.divide(totalQuantity, 2, RoundingMode.HALF_UP);
}
@Override
@@ -126,7 +124,7 @@
if(CollectionUtils.isEmpty(productWorkOrderList)){
productWorkOrderList = new ArrayList<>();
}
- BigDecimal ratio = getRatio(productWorkOrderList);
+ BigDecimal ratio = getRatio(productWorkOrderList,dto.getQuantity().subtract(dto.getScrapQty() == null ? BigDecimal.ZERO : dto.getScrapQty()));
//褰撳墠鍏蜂綋宸ュ簭
ProductProcess productProcess = productProcessMapper.selectById(productProcessRouteItem.getProcessId());
@@ -260,16 +258,17 @@
}
// 閫氳繃姣斾緥璁$畻瀹屾垚鏁伴噺
productOrder.setCompleteQuantity(productOrder.getQuantity().multiply(ratio));
- if (productWorkOrderList.size() == productProcessRouteItems.size() - 1) {
- //濡傛灉鏄渶鍚庝竴閬撳伐搴忔姤宸ヤ箣鍚庣敓浜ц鍗曞畬鎴愭暟閲�+
- if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) == 0) {
- productOrder.setCompleteQuantity(productOrder.getQuantity());
- productOrder.setEndTime(LocalDateTime.now());//缁撴潫鏃堕棿
- productOrder.setStatus("宸插畬鎴�");
- // 鐢熶骇瀹屾垚鍏ュ簱
- stockUtils.addStock(productProcessRouteItem.getProductModelId(), productOrder.getCompleteQuantity(), StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
- }
+ //濡傛灉鏄渶鍚庝竴閬撳伐搴忔姤宸ヤ箣鍚庣敓浜ц鍗曞畬鎴愭暟閲�+
+ if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) == 0) {
+ productOrder.setCompleteQuantity(productOrder.getQuantity());
+ productOrder.setEndTime(LocalDateTime.now());//缁撴潫鏃堕棿
+ productOrder.setStatus("宸插畬鎴�");
+ // 鐢熶骇瀹屾垚鍏ュ簱
+ stockUtils.addStock(productProcessRouteItem.getProductModelId(), productOrder.getCompleteQuantity(), StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
}
+// if (productWorkOrderList.stream().filter(item -> item.getStatus() == 3).count() == productProcessRouteItems.size() - 1) {
+//
+// }
productOrderMapper.updateById(productOrder);
/*娣诲姞鐢熶骇鏍哥畻*/
SalesLedgerProductionAccounting salesLedgerProductionAccounting = SalesLedgerProductionAccounting.builder()
@@ -322,31 +321,32 @@
}
//鍒ゆ柇鏄惁鏄渶鍚庝竴閬撳伐搴�
- 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 totalQty = productionProductOutput.getQuantity() != null ? productionProductOutput.getQuantity() : BigDecimal.ZERO;
- BigDecimal scrapQty = productionProductOutput.getScrapQty() != null ? productionProductOutput.getScrapQty() : BigDecimal.ZERO;
+// 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 totalQty = productionProductOutput.getQuantity() != null ? productionProductOutput.getQuantity() : BigDecimal.ZERO;
+ BigDecimal scrapQty = productionProductOutput.getScrapQty() != null ? productionProductOutput.getScrapQty() : BigDecimal.ZERO;
- BigDecimal actualQualifiedQty = totalQty.subtract(scrapQty);
+ BigDecimal actualQualifiedQty = totalQty.subtract(scrapQty);
- BigDecimal newCompleteQty = orderCompleteQty.subtract(actualQualifiedQty);
- List<ProductWorkOrder> productWorkOrderList = productWorkOrderMapper.selectList(Wrappers.<ProductWorkOrder>lambdaQuery()
- .eq(ProductWorkOrder::getProductOrderId, productProcessRouteItem.getProductOrderId()));
- if(CollectionUtils.isEmpty(productWorkOrderList)){
- productWorkOrderList = new ArrayList<>();
- }
- BigDecimal ratio = getRatio(productWorkOrderList);
- productOrder.setCompleteQuantity(productOrder.getQuantity().multiply(ratio));
-
- productOrder.setEndTime(null);
- productOrder.setStatus("鐢熶骇涓�");
- productOrderMapper.updateById(productOrder);
- } else {
- throw new ServiceException("鍏宠仈鐨勭敓浜ц鍗曚笉瀛樺湪");
+ BigDecimal newCompleteQty = orderCompleteQty.subtract(actualQualifiedQty);
+ List<ProductWorkOrder> productWorkOrderList = productWorkOrderMapper.selectList(Wrappers.<ProductWorkOrder>lambdaQuery()
+ .eq(ProductWorkOrder::getProductOrderId, productProcessRouteItem.getProductOrderId()));
+ if(CollectionUtils.isEmpty(productWorkOrderList)){
+ productWorkOrderList = new ArrayList<>();
}
+ BigDecimal ratio = getRatio(productWorkOrderList,BigDecimal.ZERO);
+ productOrder.setCompleteQuantity(productOrder.getQuantity().multiply(ratio));
+
+ productOrder.setEndTime(null);
+ productOrder.setStatus("鐢熶骇涓�");
+ productOrderMapper.updateById(productOrder);
+ } else {
+ throw new ServiceException("鍏宠仈鐨勭敓浜ц鍗曚笉瀛樺湪");
}
//鍒犻櫎璐ㄦ
qualityInspectMapper.selectList(
diff --git a/src/main/resources/static/work-order-template.docx b/src/main/resources/static/work-order-template.docx
index bea2da4..21a63dc 100644
--- a/src/main/resources/static/work-order-template.docx
+++ b/src/main/resources/static/work-order-template.docx
Binary files differ
--
Gitblit v1.9.3