From 4b2a52eecd3b425bfe592ff7fc2959ef7391b4b6 Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期五, 24 四月 2026 14:14:41 +0800
Subject: [PATCH] 发货文件上传修改

---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java |  104 ++++++++++++++++-----------------------------------
 1 files changed, 33 insertions(+), 71 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 56cfbb0..cf333a2 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -6,20 +6,14 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
-import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.procurementrecord.utils.StockUtils;
 import com.ruoyi.production.mapper.*;
-import com.ruoyi.production.pojo.ProductionAccount;
-import com.ruoyi.production.pojo.ProductionOperationTask;
-import com.ruoyi.production.pojo.ProductionOrder;
-import com.ruoyi.production.pojo.ProductionProductMain;
+import com.ruoyi.production.pojo.ProductionPlan;
 import com.ruoyi.production.service.ProductionOrderService;
 import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
 import com.ruoyi.purchase.pojo.PurchaseLedger;
 import com.ruoyi.quality.mapper.QualityInspectMapper;
-import com.ruoyi.quality.pojo.QualityInspect;
 import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
 import com.ruoyi.sales.dto.SalesLedgerProductDto;
 import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper;
@@ -68,7 +62,7 @@
     private final ProductionAccountMapper productionAccountMapper;
     private final SalesLedgerMapper salesLedgerMapper;
     private final PurchaseLedgerMapper purchaseLedgerMapper;
-    private final ProductionOrderMapper productionOrderMapper;
+    private final ProductionPlanMapper productionPlanMapper;
     private final ProductionOperationTaskMapper productionOperationTaskMapper;
     private final ProductionOrderService productionOrderService;
     private final TechnologyRoutingMapper technologyRoutingMapper;
@@ -256,70 +250,38 @@
      * 鏂板鐢熶骇鏁版嵁
      */
     public void addProductionData(SalesLedgerProduct salesLedgerProduct) {
-        ProductionOrder productionOrder = new ProductionOrder();
-        productionOrder.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId());
-        productionOrder.setProductModelId(salesLedgerProduct.getProductModelId());
-        productionOrder.setSaleLedgerProductId(salesLedgerProduct.getId().intValue());
-        productionOrder.setNpsNo(generateNextOrderNo(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))));
-        productionOrder.setQuantity(salesLedgerProduct.getQuantity());
-        productionOrder.setCompleteQuantity(BigDecimal.ZERO);
+        //鍏堝垽鏂浜у搧鏄惁闇�瑕佺敓浜�
+        if (!salesLedgerProduct.getIsProduction()) {
+            return;
+        }
+        ProductionPlan productionPlan = new ProductionPlan();
+        productionPlan.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId());
+        productionPlan.setSalesLedgerProductId(salesLedgerProduct.getId());
+        productionPlan.setMpsNo(generateNextPlanNo(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))));
+        productionPlan.setProductModelId(salesLedgerProduct.getProductModelId());
+        productionPlan.setQtyRequired(salesLedgerProduct.getQuantity());
+        productionPlan.setSource("閿�鍞�");
+        productionPlan.setStatus(0);
+        productionPlanMapper.insert(productionPlan);
 
-        TechnologyRouting routing = technologyRoutingMapper.selectOne(
-                new QueryWrapper<TechnologyRouting>().lambda()
-                        .eq(TechnologyRouting::getProductModelId, salesLedgerProduct.getProductModelId())
-                        .orderByDesc(TechnologyRouting::getCreateTime)
-                        .last("LIMIT 1"));
-        if (routing != null) {
-            productionOrder.setTechnologyRoutingId(routing.getId());
-        }
-        productionOrderMapper.insert(productionOrder);
-        if (productionOrder.getTechnologyRoutingId() != null) {
-            productionOrderService.syncProductionOrderSnapshot(productionOrder.getId());
-        }
     }
 
     /**
-     * 鍒犻櫎鐢熶骇鏁版嵁
+     * 鍒犻櫎鐢熶骇璁″垝
      */
     public void deleteProductionData(List<Long> productIds) {
-        List<ProductionOrder> productionOrders = productionOrderMapper.selectList(
-                new LambdaQueryWrapper<ProductionOrder>()
-                        .in(ProductionOrder::getSaleLedgerProductId, productIds.stream().map(Long::intValue).collect(Collectors.toList())));
-        if (org.springframework.util.CollectionUtils.isEmpty(productionOrders)) {
+        List<ProductionPlan> productionPlans = productionPlanMapper.selectList(
+                new LambdaQueryWrapper<ProductionPlan>()
+                        .in(ProductionPlan::getSalesLedgerProductId, productIds.stream().map(Long::intValue).collect(Collectors.toList())));
+        if (org.springframework.util.CollectionUtils.isEmpty(productionPlans)) {
             return;
         }
-        List<Long> orderIds = productionOrders.stream().map(ProductionOrder::getId).collect(Collectors.toList());
-        List<Long> taskIds = productionOperationTaskMapper.selectList(
-                        new LambdaQueryWrapper<ProductionOperationTask>()
-                                .in(ProductionOperationTask::getProductionOrderId, orderIds))
-                .stream().map(ProductionOperationTask::getId).collect(Collectors.toList());
-        if (!taskIds.isEmpty()) {
-            List<ProductionProductMain> productMains = productionProductMainMapper.selectList(
-                    new LambdaQueryWrapper<ProductionProductMain>()
-                            .in(ProductionProductMain::getProductionOperationTaskId, taskIds));
-            List<Long> productMainIds = productMains.stream().map(ProductionProductMain::getId).collect(Collectors.toList());
-            if (!productMainIds.isEmpty()) {
-                List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(
-                        new LambdaQueryWrapper<QualityInspect>().in(QualityInspect::getProductMainId, productMainIds));
-                qualityInspects.forEach(qualityInspect -> {
-                    if (qualityInspect.getInspectState() == 1) {
-                        throw new RuntimeException("宸叉彁浜ょ殑妫�楠屽崟涓嶈兘鍒犻櫎");
-                    }
-                });
-                productionProductOutputMapper.deleteByProductMainIds(productMainIds);
-                productionProductInputMapper.deleteByProductMainIds(productMainIds);
-                qualityInspectMapper.deleteByProductMainIds(productMainIds);
-                productionAccountMapper.delete(new LambdaQueryWrapper<ProductionAccount>()
-                        .in(ProductionAccount::getProductionProductMainId, productMainIds));
-                for (Long productMainId : productMainIds) {
-                    stockUtils.deleteStockOutRecord(productMainId, StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
-                    stockUtils.deleteStockInRecord(productMainId, StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
-                }
-            }
-            productionProductMainMapper.delete(new LambdaQueryWrapper<ProductionProductMain>()
-                    .in(ProductionProductMain::getProductionOperationTaskId, taskIds));
+        //濡傛灉鐢熶骇璁″垝宸蹭笅鍙戝垯涓嶈兘鍒犻櫎
+        if (productionPlans.stream().anyMatch(productionPlan -> productionPlan.getStatus() != 0)) {
+            throw new RuntimeException("鐢熶骇璁″垝宸蹭笅鍙戯紝涓嶈兘鍒犻櫎璇ラ攢鍞骇鍝�");
         }
-        productionOrderService.removeProductionOrder(orderIds);
+        List<Long> ids = productionPlans.stream().map(ProductionPlan::getId).collect(Collectors.toList());
+        productionPlanMapper.deleteByIds(ids);
     }
 
     @Override
@@ -432,21 +394,21 @@
         return R.ok();
     }
 
-    private String generateNextOrderNo(String datePrefix) {
-        QueryWrapper<ProductionOrder> queryWrapper = new QueryWrapper<>();
-        queryWrapper.likeRight("nps_no", "SC" + datePrefix);
-        queryWrapper.orderByDesc("nps_no");
+    private String generateNextPlanNo(String datePrefix) {
+        QueryWrapper<ProductionPlan> queryWrapper = new QueryWrapper<>();
+        queryWrapper.likeRight("mps_no", "JH" + datePrefix);
+        queryWrapper.orderByDesc("mps_no");
         queryWrapper.last("LIMIT 1");
-        ProductionOrder latestOrder = productionOrderMapper.selectOne(queryWrapper);
+        ProductionPlan latestPlan = productionPlanMapper.selectOne(queryWrapper);
         int sequence = 1;
-        if (latestOrder != null && latestOrder.getNpsNo() != null && !latestOrder.getNpsNo().isEmpty()) {
-            String sequenceStr = latestOrder.getNpsNo().substring(("SC" + datePrefix).length());
+        if (latestPlan != null && latestPlan.getMpsNo() != null && !latestPlan.getMpsNo().isEmpty()) {
+            String sequenceStr = latestPlan.getMpsNo().substring(("JH" + datePrefix).length());
             try {
                 sequence = Integer.parseInt(sequenceStr) + 1;
             } catch (NumberFormatException e) {
                 sequence = 1;
             }
         }
-        return "SC" + datePrefix + String.format("%04d", sequence);
+        return "JH" + datePrefix + String.format("%04d", sequence);
     }
 }

--
Gitblit v1.9.3