From 4bcd26a4975d6722bff65690e7a8331cd0afd520 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 31 三月 2026 17:46:19 +0800
Subject: [PATCH] yys 1.销售,采购台账产品反着来 2.产品图纸带到生产订单来
---
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java | 90 +++++++++++++++++++++++++++++++++++++++------
1 files changed, 78 insertions(+), 12 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 fe78782..dbd0f5c 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -15,6 +15,7 @@
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.dto.ProductOrderDto;
import com.ruoyi.production.dto.ProductStructureDto;
+import com.ruoyi.production.dto.ProductWorkOrderDto;
import com.ruoyi.production.mapper.*;
import com.ruoyi.production.pojo.*;
import com.ruoyi.production.service.ProductOrderService;
@@ -33,6 +34,7 @@
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@@ -101,8 +103,71 @@
// 闄勪欢
productOrderDto.setSalesLedgerFiles(commonFileService.getFileListByBusinessId(productOrderDto.getId()
, FileNameType.PRODUCT_ORDER.getValue()));
+ // 鑾峰彇瀵瑰簲宸ュ崟璁板綍
+ ProductWorkOrderDto productWorkOrder = new ProductWorkOrderDto();
+ productWorkOrder.setProductOrderId(productOrderDto.getId());
+ List<ProductWorkOrderDto> productWorkOrders = productWorkOrderMapper.getProductWorkOrderList(productWorkOrder);
+ if(CollectionUtils.isNotEmpty(productWorkOrders)){
+ productOrderDto.setProductWorkOrders(calculateColor(productWorkOrders));
+ }
+
});
return productOrderDtoIPage;
+ }
+
+ /**
+ * 鑷姩璁$畻棰滆壊锛堟牳蹇冩柟娉曪級
+ * @param productWorkOrders
+ */
+ public List<ProductWorkOrderDto> calculateColor(List<ProductWorkOrderDto> productWorkOrders) {
+ List<ProductWorkOrderDto> result = new java.util.ArrayList<>();
+ for (int i = 0; i < productWorkOrders.size(); i++) {
+ ProductWorkOrderDto current = productWorkOrders.get(i);
+ // 鍒ゆ柇鏄惁瀛樺湪涓嬩竴閬撳伐鍗� + 涓嬩竴閬撳伐鍗曟槸鍚︽湁瀹屾垚鏁伴噺
+ boolean nextOrderHasComplete = false; // 榛勮壊
+ boolean nextOrderHasScrap = false; // 绾㈣壊
+ // 濡傛灉涓嶆槸鏈�鍚庝竴鏉★紝灏卞彇涓嬩竴鏉″垽鏂�
+ for (int j = i + 1; j < productWorkOrders.size(); j++) {
+ if (i < productWorkOrders.size() - 1) {
+ ProductWorkOrderDto next = productWorkOrders.get(j);
+ BigDecimal nextComplete = next.getCompleteQuantity() == null ? BigDecimal.ZERO : next.getCompleteQuantity();
+ BigDecimal nextScrap = next.getPlanQuantity() == null ? BigDecimal.ZERO : next.getPlanQuantity();
+ // 涓嬩竴閬撳伐鍗曞畬鎴愭暟閲� > 0
+ nextOrderHasComplete = nextComplete.compareTo(BigDecimal.ZERO) > 0;
+
+ nextOrderHasScrap = nextComplete.compareTo(nextScrap) == 0;
+ break;
+ }
+ }
+ // =============== 鏍稿績锛氳绠楅鑹插苟璧嬪�� ===============
+ BigDecimal planQty = current.getPlanQuantity() == null ? BigDecimal.ZERO : current.getPlanQuantity();
+ BigDecimal completeQty = current.getCompleteQuantity() == null ? BigDecimal.ZERO : current.getCompleteQuantity();
+
+ // 1. 褰撳墠宸ュ簭瀹屾垚鏁伴噺绛変簬0 涓� 涓嬩竴閬撳伐搴忓凡瀹屾垚 鈫� 绾㈣壊(4)
+ if (completeQty.compareTo(BigDecimal.ZERO) == 0
+ && nextOrderHasScrap) {
+ current.setColor(4);
+ }
+ // 2. 闇�姹傛暟閲� > 瀹屾垚鏁伴噺锛堟湭瀹屾垚锛� 涓� 涓嬩竴閬撳伐搴忓畬鎴愭暟閲� > 0 鈫� 榛勮壊(2)
+ else if (planQty.compareTo(completeQty) > 0
+ && nextOrderHasComplete) {
+ current.setColor(2);
+ }
+ // 3. 瀹屾垚鏁伴噺=0 鈫� 鐏拌壊(1)
+ else if (completeQty.compareTo(BigDecimal.ZERO) == 0) {
+ current.setColor(1);
+ }
+ // 4. 瀹屾垚鏁伴噺=闇�姹傛暟閲� 鈫� 缁胯壊(3)
+ else if (completeQty.compareTo(planQty) == 0) {
+ current.setColor(3);
+ }
+ // 鍏朵粬鎯呭喌榛樿鐏拌壊锛堝彲閫夛級
+ else {
+ current.setColor(1);
+ }
+ result.add(current);
+ }
+ return result;
}
@Override
@@ -116,11 +181,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();
// 鐢熸垚褰撳墠鏃ユ湡鐨勫墠缂�锛氬勾鏈堟棩
@@ -137,8 +204,7 @@
ProductWorkOrder productWorkOrder = new ProductWorkOrder();
productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
productWorkOrder.setProductOrderId(productOrder.getId());
- ProductOrder order = productOrderMapper.selectById(productOrder.getId());
- productWorkOrder.setPlanQuantity(order.getQuantity());
+ productWorkOrder.setPlanQuantity(BigDecimal.valueOf(productProcessRouteItem.getPlanNum()));
productWorkOrder.setWorkOrderNo(workOrderNoStr);
productWorkOrder.setPlanStartTime(productProcessRouteItem.getPlanStartTime());
productWorkOrder.setPlanEndTime(productProcessRouteItem.getPlanEndTime());
@@ -197,14 +263,14 @@
@Override
@Transactional(rollbackFor = Exception.class)
- public Boolean delete(Long[] ids) {
+ public Boolean delete(Long[] idList) {
//鎵归噺鏌ヨproductOrder
List<ProductOrder> productOrders = productOrderMapper.selectList(
new LambdaQueryWrapper<ProductOrder>()
- .in(ProductOrder::getId, ids)
+ .in(ProductOrder::getId, Arrays.asList(idList))
);
if (!org.springframework.util.CollectionUtils.isEmpty(productOrders)) {
-
+ List<Long> ids = productOrders.stream().map(ProductOrder::getId).collect(Collectors.toList());
// 鎵归噺鏌ヨprocessRouteItems
List<ProductProcessRouteItem> allRouteItems = productProcessRouteItemMapper.selectList(
@@ -240,7 +306,7 @@
// 鍒犻櫎浜у嚭琛ㄣ�佹姇鍏ヨ〃鏁版嵁
if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(productMainIds)) {
productionProductOutputMapper.deleteByProductMainIds(productMainIds);
- productionProductInputMapper.deleteByProductMainIds(productMainIds);
+ productionProductInputMapper.deleteByProductMainIds(ids);
List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(
new LambdaQueryWrapper<QualityInspect>()
.in(QualityInspect::getProductMainId, productMainIds)
@@ -283,7 +349,7 @@
productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>()
.in(ProductOrder::getId, ids));
// 鍒犻櫎闄勪欢
- commonFileService.deleteByBusinessIds(Arrays.asList(ids), FileNameType.PRODUCT_ORDER.getValue());
+ commonFileService.deleteByBusinessIds(ids, FileNameType.PRODUCT_ORDER.getValue());
// 鍒犻櫎鐢熶骇璁㈠崟-鐗╂枡娓呭崟
productStructureRecordMapper.delete(new LambdaQueryWrapper<ProductStructureRecord>()
.in(ProductStructureRecord::getProductOrderId, ids));
--
Gitblit v1.9.3