From 37699ea54f50535e56e6811fd1b713ea02163c99 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期四, 29 一月 2026 18:07:39 +0800
Subject: [PATCH] feat(production): 添加生产核算功能和相关接口

---
 src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java |  144 ++++++++++++++++++++++++-----------------------
 1 files changed, 73 insertions(+), 71 deletions(-)

diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
index b33ba5c..0e8497a 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -63,82 +63,84 @@
     public int deal(QualityUnqualified qualityUnqualified) {
         QualityUnqualified unqualified = qualityUnqualifiedMapper.selectById(qualityUnqualified.getId());
         QualityInspect qualityInspect = qualityInspectService.getById(unqualified.getInspectId());
-        switch (qualityUnqualified.getDealResult()) {
-            case "杩斾慨":
-            case "杩斿伐":
-                //鍒ゆ柇璐ㄦ琛ㄦ槸鍚︽湁鐩稿叧鐨勬姤宸d,濡傛灉鏈夋姤宸d,閭d箞杩斿伐闇�瑕侀噸鏂板垱寤虹敓浜ц鍗曢噸鏂扮敓浜�
-                if (ObjectUtils.isNotNull(qualityInspect.getProductMainId())) {
-                    //杩斿伐闇�瑕侀噸鏂板垱寤虹敓浜ц鍗曢噸鏂扮敓浜�
-                    ProductOrder productOrder = productionProductMainMapper.getOrderByMainId(qualityInspect.getProductMainId());
-                    ProductOrder order = new ProductOrder();
-                    BeanUtils.copyProperties(productOrder, order);
-                    order.setId(null);
-                    order.setQuantity(unqualified.getQuantity());
-                    order.setCompleteQuantity(BigDecimal.ZERO);
-                    order.setStartTime(null);
-                    order.setEndTime(null);
-                    productOrderService.save(order);
-                    //鏂板鐢熶骇璁㈠崟涓嬬殑宸ヨ壓璺嚎涓昏〃
-                    ProductProcessRoute productProcessRoute = productProcessRouteMapper.selectList(Wrappers.<ProductProcessRoute>lambdaQuery().eq(ProductProcessRoute::getProductOrderId, productOrder.getId()).orderByDesc(ProductProcessRoute::getId)).get(0);
-                    ProductProcessRoute newProcessRoute = new ProductProcessRoute();
-                    BeanUtils.copyProperties(productProcessRoute, newProcessRoute);
-                    newProcessRoute.setId(null);
-                    newProcessRoute.setProductOrderId(order.getId());
-                    productProcessRouteMapper.insert(newProcessRoute);
-                    //鏂板鐢熶骇璁㈠崟涓嬬殑宸ヨ壓璺嚎瀛愯〃
-                    List<ProductProcessRouteItem> processRouteItems = productProcessRouteItemMapper.selectList(new QueryWrapper<ProductProcessRouteItem>().lambda().eq(ProductProcessRouteItem::getProductRouteId, productProcessRoute.getId()));
-                    // 鐢熸垚褰撳墠鏃ユ湡鐨勫墠缂�锛氬勾鏈堟棩
-                    String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
-                    for (ProductProcessRouteItem processRouteItem : processRouteItems) {
-                        ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem();
-                        BeanUtils.copyProperties(processRouteItem, productProcessRouteItem);
-                        productProcessRouteItem.setId(null);
-                        productProcessRouteItem.setProductRouteId(newProcessRoute.getId());
-                        int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
-                        if (insert > 0) {
-                            // 鏌ヨ浠婃棩宸插瓨鍦ㄧ殑鏈�澶у伐鍗曞彿
-                            QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>();
-                            queryWrapper.likeRight("work_order_no", datePrefix)
-                                    .orderByDesc("work_order_no")
-                                    .last("LIMIT 1");
-                            ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper);
-                            int sequenceNumber = 1; // 榛樿搴忓彿
-                            if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
-                                String lastNo = lastWorkOrder.getWorkOrderNo().toString();
-                                if (lastNo.startsWith(datePrefix)) {
-                                    String seqStr = lastNo.substring(datePrefix.length());
-                                    try {
-                                        sequenceNumber = Integer.parseInt(seqStr) + 1;
-                                    } catch (NumberFormatException e) {
-                                        sequenceNumber = 1;
+        if (ObjectUtils.isNotNull(qualityInspect) && qualityInspect.getInspectType()!=0) {
+            switch (qualityUnqualified.getDealResult()) {
+                case "杩斾慨":
+                case "杩斿伐":
+                    //鍒ゆ柇璐ㄦ琛ㄦ槸鍚︽湁鐩稿叧鐨勬姤宸d,濡傛灉鏈夋姤宸d,閭d箞杩斿伐闇�瑕侀噸鏂板垱寤虹敓浜ц鍗曢噸鏂扮敓浜�
+                    if (ObjectUtils.isNotNull(qualityInspect.getProductMainId())) {
+                        //杩斿伐闇�瑕侀噸鏂板垱寤虹敓浜ц鍗曢噸鏂扮敓浜�
+                        ProductOrder productOrder = productionProductMainMapper.getOrderByMainId(qualityInspect.getProductMainId());
+                        ProductOrder order = new ProductOrder();
+                        BeanUtils.copyProperties(productOrder, order);
+                        order.setId(null);
+                        order.setQuantity(unqualified.getQuantity());
+                        order.setCompleteQuantity(BigDecimal.ZERO);
+                        order.setStartTime(null);
+                        order.setEndTime(null);
+                        productOrderService.save(order);
+                        //鏂板鐢熶骇璁㈠崟涓嬬殑宸ヨ壓璺嚎涓昏〃
+                        ProductProcessRoute productProcessRoute = productProcessRouteMapper.selectList(Wrappers.<ProductProcessRoute>lambdaQuery().eq(ProductProcessRoute::getProductOrderId, productOrder.getId()).orderByDesc(ProductProcessRoute::getId)).get(0);
+                        ProductProcessRoute newProcessRoute = new ProductProcessRoute();
+                        BeanUtils.copyProperties(productProcessRoute, newProcessRoute);
+                        newProcessRoute.setId(null);
+                        newProcessRoute.setProductOrderId(order.getId());
+                        productProcessRouteMapper.insert(newProcessRoute);
+                        //鏂板鐢熶骇璁㈠崟涓嬬殑宸ヨ壓璺嚎瀛愯〃
+                        List<ProductProcessRouteItem> processRouteItems = productProcessRouteItemMapper.selectList(new QueryWrapper<ProductProcessRouteItem>().lambda().eq(ProductProcessRouteItem::getProductRouteId, productProcessRoute.getId()));
+                        // 鐢熸垚褰撳墠鏃ユ湡鐨勫墠缂�锛氬勾鏈堟棩
+                        String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+                        for (ProductProcessRouteItem processRouteItem : processRouteItems) {
+                            ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem();
+                            BeanUtils.copyProperties(processRouteItem, productProcessRouteItem);
+                            productProcessRouteItem.setId(null);
+                            productProcessRouteItem.setProductRouteId(newProcessRoute.getId());
+                            int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
+                            if (insert > 0) {
+                                // 鏌ヨ浠婃棩宸插瓨鍦ㄧ殑鏈�澶у伐鍗曞彿
+                                QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>();
+                                queryWrapper.likeRight("work_order_no", datePrefix)
+                                        .orderByDesc("work_order_no")
+                                        .last("LIMIT 1");
+                                ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper);
+                                int sequenceNumber = 1; // 榛樿搴忓彿
+                                if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
+                                    String lastNo = lastWorkOrder.getWorkOrderNo().toString();
+                                    if (lastNo.startsWith(datePrefix)) {
+                                        String seqStr = lastNo.substring(datePrefix.length());
+                                        try {
+                                            sequenceNumber = Integer.parseInt(seqStr) + 1;
+                                        } catch (NumberFormatException e) {
+                                            sequenceNumber = 1;
+                                        }
                                     }
                                 }
+                                // 鐢熸垚瀹屾暣鐨勫伐鍗曞彿
+                                String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber);
+                                ProductWorkOrder productWorkOrder = new ProductWorkOrder();
+                                productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
+                                productWorkOrder.setProductOrderId(order.getId());
+                                productWorkOrder.setPlanQuantity(order.getQuantity());
+                                productWorkOrder.setWorkOrderNo(workOrderNoStr);
+                                productWorkOrder.setStatus(1);
+                                productWorkOrderMapper.insert(productWorkOrder);
                             }
-                            // 鐢熸垚瀹屾暣鐨勫伐鍗曞彿
-                            String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber);
-                            ProductWorkOrder productWorkOrder = new ProductWorkOrder();
-                            productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
-                            productWorkOrder.setProductOrderId(order.getId());
-                            productWorkOrder.setPlanQuantity(order.getQuantity());
-                            productWorkOrder.setWorkOrderNo(workOrderNoStr);
-                            productWorkOrder.setStatus(1);
-                            productWorkOrderMapper.insert(productWorkOrder);
                         }
                     }
-                }
-                break;
-            case "鎶ュ簾":
-                //璋冪敤涓嶅悎鏍煎簱瀛樻帴鍙� 鍏ヤ笉鍚堟牸搴�
-                stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(),unqualified.getId());
-                break;
-            case "璁╂鏀捐":
-                //璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
-                stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(),unqualified.getId());
-                qualityInspect.setCheckResult("鍚堟牸");
-                qualityInspectService.submit(qualityInspect);
-                break;
-            default:
-                break;
+                    break;
+                case "鎶ュ簾":
+                    //璋冪敤涓嶅悎鏍煎簱瀛樻帴鍙� 鍏ヤ笉鍚堟牸搴�
+                    stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
+                    break;
+                case "璁╂鏀捐":
+                    //璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
+                    stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
+                    qualityInspect.setCheckResult("鍚堟牸");
+                    qualityInspectService.submit(qualityInspect);
+                    break;
+                default:
+                    break;
+            }
         }
         qualityUnqualified.setInspectState(1);//宸插鐞�
         return qualityUnqualifiedMapper.updateById(qualityUnqualified);

--
Gitblit v1.9.3