From e77728aaf2721e4777775134e223d4c90eadf7e9 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期二, 25 三月 2025 16:00:09 +0800
Subject: [PATCH] 根据报工转移的状态限制报工删除和修改

---
 north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java |  231 ++++++++++++++++++++++++++++++---------------------------
 1 files changed, 122 insertions(+), 109 deletions(-)

diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
index 1ab73e9..f0b1fc5 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -485,73 +485,79 @@
         JSONObject reportingWorkJson = new JSONObject(reportingWorkMap);
         ReportingWork reportingWork = JSONObject.parseObject(JSONObject.toJSONString(reportingWorkJson.get("title")), ReportingWork.class);
         List<ReportingWorkDetail> reportingWorkDetails = JSONArray.parseArray(JSONObject.toJSONString(reportingWorkJson.get("detail")), ReportingWorkDetail.class);
+        //鏌ヨ璇ユ姤宸ユ槸鍚︿负鎶ュ伐杞Щ璁㈠崟
+        Integer transferState = reportingWorkMapper.selectReviewedState(reportingWork.getReportingWorkId());
+        if (transferState !=3){
+            //鍒犻櫎鍒虹牬鏄庣粏琛ㄥ埡鐮存暟鎹�
+            damageDetailsMapper.delete(
+                    new LambdaQueryWrapper<DamageDetails>()
+                            .eq(DamageDetails::getReportingWorkId, reportingWork.getReportingWorkId())
+            );
+            //淇敼灏忕墖娴佺▼琛ㄦ暟閲�
+            orderProcessDetailMapper.updateQuantity(reportingWork.getReportingWorkId(), reportingWork.getThisProcess(), "delete");
+            //鍒犻櫎鎶ュ伐鏄庣粏琛ㄦ暟鎹�
+            reportingWorkDetailMapper
+                    .delete(new LambdaQueryWrapper<ReportingWorkDetail>()
+                            .eq(ReportingWorkDetail::getReportingWorkId, reportingWork.getReportingWorkId()));
 
-        //鍒犻櫎鍒虹牬鏄庣粏琛ㄥ埡鐮存暟鎹�
-        damageDetailsMapper.delete(
-                new LambdaQueryWrapper<DamageDetails>()
-                        .eq(DamageDetails::getReportingWorkId, reportingWork.getReportingWorkId())
-        );
-        //淇敼灏忕墖娴佺▼琛ㄦ暟閲�
-        orderProcessDetailMapper.updateQuantity(reportingWork.getReportingWorkId(), reportingWork.getThisProcess(), "delete");
-        //鍒犻櫎鎶ュ伐鏄庣粏琛ㄦ暟鎹�
-        reportingWorkDetailMapper
-                .delete(new LambdaQueryWrapper<ReportingWorkDetail>()
-                        .eq(ReportingWorkDetail::getReportingWorkId, reportingWork.getReportingWorkId()));
-
-        //鏇存柊鎶ュ伐涓昏〃
-        int qualityInsStatus = (int) reportingWorkJson.get("qualityInsStatus");
-        reportingWorkMapper.updateById(reportingWork);
-        reportingWorkDetails.forEach(reportingWorkDetail -> {
-            reportingWorkDetail.setReportingWorkId(reportingWork.getReportingWorkId());
-            List<DamageDetails> damageDetails = reportingWorkDetail.getDamageDetails();
-            //姣忎竴鏉℃姤宸ユ暟鎹惊鐜彃鍏ユ鐮存槑缁嗚〃
-            if (damageDetails != null && !damageDetails.isEmpty()) {
-                damageDetails.forEach(damageDetail -> {
-                    damageDetail.setReportingWorkId(reportingWork.getReportingWorkId());
-                    damageDetail.setProcessId(reportingWork.getProcessId());
-                    damageDetail.setOrderNumber(reportingWorkDetail.getOrderNumber());
-                    damageDetail.setTechnologyNumber(reportingWorkDetail.getTechnologyNumber());
-                    //鏄惁淇敼璐ㄦ鐘舵��
-                    if (!Objects.equals(reportingWork.getThisProcess(), damageDetail.getResponsibleProcess()) && qualityInsStatus==2) {
-                        damageDetail.setQualityInsStatus(1);
-                    }
-                    if (Objects.equals(reviewState, "review")) {
-                        damageDetail.setQualityInsStatus(2);
-                    }
-
-                    damageDetailsMapper.insert(damageDetail);
-                });
-            }
-            //鎻掑叆鎶ュ伐鏁版嵁
-            reportingWorkDetailMapper.insert(reportingWorkDetail);
-            orderProcessDetailMapper.insertByReportingWorkDetail(reportingWorkDetail,reportingWork.getProcessId(),reportingWork.getThisProcess());
-            //淇敼鍖呰鏃朵慨鏀瑰簱瀛樻暟閲�
-            if (reportingWork.getNextProcess()==null || reportingWork.getNextProcess().isEmpty()){
-                //鑾峰彇璇ユ姤宸ヤ慨鏀瑰悗鐨勫彲鍏ュ簱鏁伴噺
-                Integer  inventory = reportingWorkDetailMapper.selectInventory(reportingWork.getProcessId(),Integer.parseInt(reportingWorkDetail.getOrderNumber()),Integer.parseInt(reportingWorkDetail.getTechnologyNumber()),reportingWork.getThisProcess());
-                //淇敼娴佺▼鍗¤〃搴撳瓨鏁伴噺
-                flowCardMapper.updateInventory(reportingWork.getProcessId(),reportingWorkDetail.getOrderNumber(),reportingWorkDetail.getTechnologyNumber(),inventory);
-            }
-        });
-        //鑾峰彇璐ㄦ鏃堕棿
-        if (Objects.equals(reviewState, "review")) {
-            LocalDateTime
-                    currentDate = LocalDateTime.now();
-            reportingWork.setQualityInsTime(currentDate);
+            //鏇存柊鎶ュ伐涓昏〃
+            int qualityInsStatus = (int) reportingWorkJson.get("qualityInsStatus");
             reportingWorkMapper.updateById(reportingWork);
+            reportingWorkDetails.forEach(reportingWorkDetail -> {
+                reportingWorkDetail.setReportingWorkId(reportingWork.getReportingWorkId());
+                List<DamageDetails> damageDetails = reportingWorkDetail.getDamageDetails();
+                //姣忎竴鏉℃姤宸ユ暟鎹惊鐜彃鍏ユ鐮存槑缁嗚〃
+                if (damageDetails != null && !damageDetails.isEmpty()) {
+                    damageDetails.forEach(damageDetail -> {
+                        damageDetail.setReportingWorkId(reportingWork.getReportingWorkId());
+                        damageDetail.setProcessId(reportingWork.getProcessId());
+                        damageDetail.setOrderNumber(reportingWorkDetail.getOrderNumber());
+                        damageDetail.setTechnologyNumber(reportingWorkDetail.getTechnologyNumber());
+                        //鏄惁淇敼璐ㄦ鐘舵��
+                        if (!Objects.equals(reportingWork.getThisProcess(), damageDetail.getResponsibleProcess()) && qualityInsStatus==2) {
+                            damageDetail.setQualityInsStatus(1);
+                        }
+                        if (Objects.equals(reviewState, "review")) {
+                            damageDetail.setQualityInsStatus(2);
+                        }
+
+                        damageDetailsMapper.insert(damageDetail);
+                    });
+                }
+                //鎻掑叆鎶ュ伐鏁版嵁
+                reportingWorkDetailMapper.insert(reportingWorkDetail);
+                orderProcessDetailMapper.insertByReportingWorkDetail(reportingWorkDetail,reportingWork.getProcessId(),reportingWork.getThisProcess());
+                //淇敼鍖呰鏃朵慨鏀瑰簱瀛樻暟閲�
+                if (reportingWork.getNextProcess()==null || reportingWork.getNextProcess().isEmpty()){
+                    //鑾峰彇璇ユ姤宸ヤ慨鏀瑰悗鐨勫彲鍏ュ簱鏁伴噺
+                    Integer  inventory = reportingWorkDetailMapper.selectInventory(reportingWork.getProcessId(),Integer.parseInt(reportingWorkDetail.getOrderNumber()),Integer.parseInt(reportingWorkDetail.getTechnologyNumber()),reportingWork.getThisProcess());
+                    //淇敼娴佺▼鍗¤〃搴撳瓨鏁伴噺
+                    flowCardMapper.updateInventory(reportingWork.getProcessId(),reportingWorkDetail.getOrderNumber(),reportingWorkDetail.getTechnologyNumber(),inventory);
+                }
+            });
+            //鑾峰彇璐ㄦ鏃堕棿
+            if (Objects.equals(reviewState, "review")) {
+                LocalDateTime
+                        currentDate = LocalDateTime.now();
+                reportingWork.setQualityInsTime(currentDate);
+                reportingWorkMapper.updateById(reportingWork);
+            }
+
+            //淇敼灏忕墖娴佺▼琛ㄦ暟閲忎负鎶ュ伐鏄庣粏琛ㄦ暟閲�
+            //orderProcessDetailMapper.updateQuantity(reportingWork.getReportingWorkId(), reportingWork.getThisProcess(), "add");
+            //淇濆瓨鏃ュ織
+            Log log = new Log();
+            log.setContent(reportingWorkMap.toString());
+            log.setFunction("updateReportingWork鎶ュ伐淇敼");
+            log.setOperatorId((String) reportingWorkJson.get("userId"));
+            log.setOperator((String) reportingWorkJson.get("userName"));
+            logService.saveLog(log);
+
+            return true;
+        } else {
+            return false;
         }
 
-        //淇敼灏忕墖娴佺▼琛ㄦ暟閲忎负鎶ュ伐鏄庣粏琛ㄦ暟閲�
-        //orderProcessDetailMapper.updateQuantity(reportingWork.getReportingWorkId(), reportingWork.getThisProcess(), "add");
-        //淇濆瓨鏃ュ織
-        Log log = new Log();
-        log.setContent(reportingWorkMap.toString());
-        log.setFunction("updateReportingWork鎶ュ伐淇敼");
-        log.setOperatorId((String) reportingWorkJson.get("userId"));
-        log.setOperator((String) reportingWorkJson.get("userName"));
-        logService.saveLog(log);
-
-        return true;
     }
 
     //鎶ュ伐绠$悊鏌ヨ
@@ -578,38 +584,65 @@
             String lastProcess = reportingWorkMapper.selectLastProcess(processId);
             //鑾峰彇鏄惁鏈夊凡琛ョ墖鎴栬繑宸�
             Integer countStates= Integer.valueOf(reportingWorkMapper.getPatchConditionMp(reportingWorkId));
-            //鍒ゆ柇鏄惁鏈夎ˉ鐗囪繑宸ユ暟鎹�
-            if (countStates==0){
-                //鍒ゆ柇鏄惁鏄叆搴撳伐搴�
-                if (lastProcess.equals(thisProcess)) {//鏄叆搴撳伐搴�
-                    //鏌ヨ璇ユ祦绋嬪崱鏁伴噺銆佸彲鍏ュ簱鏁伴噺銆佸凡鍏ュ簱鏁伴噺
-                    Map<String, Object> list = reportingWorkMapper.selectReceiptQuantity(processId);
-                    if (list.get("quantity") == list.get("receiptQuantity")) {
-                        return false;
-                    } else {
-                        //杞崲绫诲瀷:宸插叆搴撴暟閲�
-                        Integer receiptQuantity = Integer.parseInt(list.get("receivedQuantity").toString());
-                        //杞崲绫诲瀷:鍙叆搴撴暟閲�
-                        Integer inventoryQuantity = Integer.parseInt(list.get("inventoryQuantity").toString());
-                        //鏌ヨ璇ユ姤宸ョ紪鍙锋湰宸ュ簭瀹屽伐鏁伴噺
-                        Integer completedQuantity = reportingWorkMapper.selectCompletedQuantity(reportingWorkId);
-                        //褰撹宸ュ簭瀹屽伐鏁伴噺灏忎簬绛変簬宸插叆搴撴暟閲忔椂
-                        //鍙叆搴撴暟閲�-宸插叆搴撴暟閲�>=鎶ュ伐缂栧彿鏈伐搴忓畬宸ユ暟閲�
-                        if (inventoryQuantity - receiptQuantity >= completedQuantity) {
+            //鏌ヨ璇ユ姤宸ユ槸鍚︿负鎶ュ伐杞Щ璁㈠崟
+            Integer transferState = reportingWorkMapper.selectReviewedState(reportingWorkId);
+            if (transferState !=3){
+                //鍒ゆ柇鏄惁鏈夎ˉ鐗囪繑宸ユ暟鎹�
+                if (countStates==0){
+                    //鍒ゆ柇鏄惁鏄叆搴撳伐搴�
+                    if (lastProcess.equals(thisProcess)) {//鏄叆搴撳伐搴�
+                        //鏌ヨ璇ユ祦绋嬪崱鏁伴噺銆佸彲鍏ュ簱鏁伴噺銆佸凡鍏ュ簱鏁伴噺
+                        Map<String, Object> list = reportingWorkMapper.selectReceiptQuantity(processId);
+                        if (list.get("quantity") == list.get("receiptQuantity")) {
+                            return false;
+                        } else {
+                            //杞崲绫诲瀷:宸插叆搴撴暟閲�
+                            Integer receiptQuantity = Integer.parseInt(list.get("receivedQuantity").toString());
+                            //杞崲绫诲瀷:鍙叆搴撴暟閲�
+                            Integer inventoryQuantity = Integer.parseInt(list.get("inventoryQuantity").toString());
+                            //鏌ヨ璇ユ姤宸ョ紪鍙锋湰宸ュ簭瀹屽伐鏁伴噺
+                            Integer completedQuantity = reportingWorkMapper.selectCompletedQuantity(reportingWorkId);
+                            //褰撹宸ュ簭瀹屽伐鏁伴噺灏忎簬绛変簬宸插叆搴撴暟閲忔椂
+                            //鍙叆搴撴暟閲�-宸插叆搴撴暟閲�>=鎶ュ伐缂栧彿鏈伐搴忓畬宸ユ暟閲�
+                            if (inventoryQuantity - receiptQuantity >= completedQuantity) {
+                                //鏌ヨ褰撳墠鎶ュ伐缂栧彿瀹屽伐娆$牬鏁伴噺鐨勬暟鎹�
+                                List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId);
+                                for (Map<String, Object> item : workDateList) {
+                                    //鏇存柊娴佺▼鍗″彲鍏ュ簱鏁伴噺
+                                    reportingWorkMapper.updateInventoryQuantity(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"));
+                                    //鏇存柊鎶ュ伐娴佺▼琛ㄦ暟鎹�
+                                    reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess);
+                                }
+                                //鍒犻櫎鎶ュ伐锛屽皢瀹℃牳鐘舵�佹敼涓�-1
+                                reportingWorkMapper.deleteWork(reportingWorkId);
+                                //淇濆瓨鏃ュ織
+                                Log log = new Log();
+                                log.setContent(reportingWorkId+"-"+processId+"-"+thisProcess);
+                                log.setFunction("deleteWork鎶ュ伐鍏ュ簱鍒犻櫎");
+                                log.setOperatorId(userId);
+                                log.setOperator(userName);
+                                logService.saveLog(log);
+                                return true;
+                            } else {
+                                return false;
+                            }
+                        }
+
+                    } else {//涓嶆槸鍏ュ簱宸ュ簭
+                        if (count == 0) {
                             //鏌ヨ褰撳墠鎶ュ伐缂栧彿瀹屽伐娆$牬鏁伴噺鐨勬暟鎹�
                             List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId);
                             for (Map<String, Object> item : workDateList) {
-                                //鏇存柊娴佺▼鍗″彲鍏ュ簱鏁伴噺
-                                reportingWorkMapper.updateInventoryQuantity(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"));
                                 //鏇存柊鎶ュ伐娴佺▼琛ㄦ暟鎹�
                                 reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess);
                             }
                             //鍒犻櫎鎶ュ伐锛屽皢瀹℃牳鐘舵�佹敼涓�-1
                             reportingWorkMapper.deleteWork(reportingWorkId);
+
                             //淇濆瓨鏃ュ織
                             Log log = new Log();
                             log.setContent(reportingWorkId+"-"+processId+"-"+thisProcess);
-                            log.setFunction("deleteWork鎶ュ伐鍏ュ簱鍒犻櫎");
+                            log.setFunction("deleteWork鎶ュ伐鍒犻櫎");
                             log.setOperatorId(userId);
                             log.setOperator(userName);
                             logService.saveLog(log);
@@ -618,35 +651,15 @@
                             return false;
                         }
                     }
-
-                } else {//涓嶆槸鍏ュ簱宸ュ簭
-                    if (count == 0) {
-                        //鏌ヨ褰撳墠鎶ュ伐缂栧彿瀹屽伐娆$牬鏁伴噺鐨勬暟鎹�
-                        List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId);
-                        for (Map<String, Object> item : workDateList) {
-                            //鏇存柊鎶ュ伐娴佺▼琛ㄦ暟鎹�
-                            reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess);
-                        }
-                        //鍒犻櫎鎶ュ伐锛屽皢瀹℃牳鐘舵�佹敼涓�-1
-                        reportingWorkMapper.deleteWork(reportingWorkId);
-
-                        //淇濆瓨鏃ュ織
-                        Log log = new Log();
-                        log.setContent(reportingWorkId+"-"+processId+"-"+thisProcess);
-                        log.setFunction("deleteWork鎶ュ伐鍒犻櫎");
-                        log.setOperatorId(userId);
-                        log.setOperator(userName);
-                        logService.saveLog(log);
-                        return true;
-                    } else {
-                        return false;
-                    }
                 }
-            }
-            else {
+                else {
+                    return false;
+                }
+            } else {
                 return false;
             }
 
+
         } else {
             return false;
         }

--
Gitblit v1.8.0