From 288c8e2d24ee2db081ba818e6b42ea52eb9c4ca2 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 01 七月 2026 11:14:43 +0800
Subject: [PATCH] 不合格处理调整&合格率统计调整

---
 ruoyi-admin-ztns/src/main/resources/application-ztns.yml                                          |    2 
 inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml                                   |   66 ++++++---------------
 ruoyi-admin-ztns/src/main/resources/logback.xml                                                   |    2 
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java |   59 ++++++++++++-------
 inspect-server/src/main/java/com/ruoyi/inspect/pojo/CommonOa.java                                 |    2 
 5 files changed, 59 insertions(+), 72 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/CommonOa.java b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/CommonOa.java
index 54e3dc4..aa737b7 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/CommonOa.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/CommonOa.java
@@ -22,7 +22,7 @@
     private Long id;
 
     /**
-     * 鑺傜偣id
+     * OA绯荤粺瀹℃壒浜篿d
      */
     private Long operateId;
 
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
index d8b2c19..e252218 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
@@ -191,6 +191,25 @@
         return Result.success();
     }
 
+    /**
+     * 杩斿洖绗竴涓笉涓虹┖鐨勫瓧绗︿覆
+     * @param values
+     * @return
+     */
+    public static String firstNotBlank(String... values) {
+        if (values == null) {
+            return null;
+        }
+
+        for (String value : values) {
+            if (StringUtils.isNotBlank(value)) {
+                return value;
+            }
+        }
+
+        return null;
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void unqualifiedHandlerOACallback(Long oaWorkId, String checkResult, JSONObject response) {
@@ -218,30 +237,31 @@
         for (Object workflowRequestLog : workflowRequestLogs) {
             JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(workflowRequestLog));
             CommonOa oa = new CommonOa();
-            oa.setApprover(jsonObject.getString("operatorName"));
-            oa.setOperateId(jsonObject.getLong("operateId"));
-            oa.setWorkflowId(oaWorkId);
-            oa.setOperation(jsonObject.getString("operateType"));
-            oa.setApprovalDate(jsonObject.getString("operateDate"));
-            oa.setNodeName(jsonObject.getString("nodeName"));
-            oa.setApprovalTime(jsonObject.getString("operateTime"));
             //璁剧疆鍚勮妭鐐圭殑澶勭悊鎰忚
+            oa.setApprover(jsonObject.getString("operatorName"));//瀹℃壒浜�
+            oa.setOperateId(jsonObject.getLong("operateId"));//瀹℃壒浜篿d
+            oa.setWorkflowId(oaWorkId);//娴佺▼id
+            oa.setApprovalDate(jsonObject.getString("operateDate"));//瀹℃壒鏃ユ湡
+            oa.setNodeName(jsonObject.getString("nodeName"));//鑺傜偣鍚嶇О
+            oa.setApprovalTime(jsonObject.getString("operateTime"));//瀹℃壒鏃堕棿
             if(StringUtils.isNotBlank(oa.getNodeName())){
+                String operateType = jsonObject.getString("operateType");//鑺傜偣鎿嶄綔
+                String approvalOpinion = jsonObject.getString("remark");//澶勭悊鎰忚鎻忚堪
+                oa.setOperation(operateType);
+                oa.setApprovalOpinion(approvalOpinion);
                 if(oa.getNodeName().contains("璐ㄩ噺")){
-                    oa.setOperation(clcsMap.get(response.getString("clcs1")));
-                    oa.setApprovalOpinion(response.getString("dbhgcpdclyqdealwiththenonconfo"));//1.瀵逛笉鍚堟牸浜у搧鐨勫鐞嗚姹�
+                    oa.setOperation(firstNotBlank(clcsMap.get(response.getString("clcs1")),operateType));
+                    oa.setApprovalOpinion(firstNotBlank(response.getString("dbhgcpdclyqdealwiththenonconfo"),approvalOpinion));//1.瀵逛笉鍚堟牸浜у搧鐨勫鐞嗚姹�
                 }else if(oa.getNodeName().contains("宸ヨ壓")){
-                    oa.setApprovalOpinion(response.getString("gjyqimprovementrequirements"));//2.鏀硅繘瑕佹眰
+                    oa.setApprovalOpinion(firstNotBlank(response.getString("gjyqimprovementrequirements"),approvalOpinion));//2.鏀硅繘瑕佹眰
                 }else if(oa.getNodeName().contains("鎶�鏈�")){
-                    oa.setOperation(clcsMap.get(response.getString("clcs2")));
-                    oa.setApprovalOpinion(response.getString("csyqactionrequirement"));//3.鎺柦瑕佹眰
+                    oa.setOperation(firstNotBlank(clcsMap.get(response.getString("clcs2")),operateType));
+                    oa.setApprovalOpinion(firstNotBlank(response.getString("csyqactionrequirement"),approvalOpinion));//3.鎺柦瑕佹眰
                 }else if(oa.getNodeName().contains("鎬荤粡鐞�")){
-                    oa.setOperation(clcsMap.get(response.getString("clcs3")));
-                    oa.setApprovalOpinion(response.getString("zzclyqfinaltreatmentrequiremen"));//4.鏈�缁堝鐞嗚姹�
+                    oa.setOperation(firstNotBlank(clcsMap.get(response.getString("clcs3")),operateType));
+                    oa.setApprovalOpinion(firstNotBlank(response.getString("zzclyqfinaltreatmentrequiremen"),approvalOpinion));//4.鏈�缁堝鐞嗚姹�
                 }else if(oa.getNodeName().contains("鏍哥畻")){
-                    oa.setApprovalOpinion(response.getString("spyqcompensationrequirement"));//5.绱㈣禂瑕佹眰
-                }else{
-                    oa.setApprovalOpinion(jsonObject.getString("remark"));
+                    oa.setApprovalOpinion(firstNotBlank(response.getString("spyqcompensationrequirement"),approvalOpinion));//5.绱㈣禂瑕佹眰
                 }
             }
 
@@ -276,11 +296,6 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean addUnqualifiedHandler(UnqualifiedHandlerDto unqualifiedHandlerDto) {
-        long count = this.count(Wrappers.<InsUnqualifiedHandler>lambdaQuery()
-                .in(InsUnqualifiedHandler::getInsOrderId, unqualifiedHandlerDto.getSelectOrderIds()));
-        if (count > 0) {
-            throw new ErrorException("瀛樺湪宸叉彁浜よ繃涓嶅悎鏍煎鐞嗙殑璁㈠崟");
-        }
         //鐢熸垚鍒嗙粍id
         String groupId = insUnqualifiedHandlerNumberGenerator.generateNumberWithPrefix(6, "GROUP", InsUnqualifiedHandler::getGroupId);
         // 鍘熸潗鏂欑紪鍙峰垏鍓�
diff --git a/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml b/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
index dac3f18..d0b90ba 100644
--- a/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
+++ b/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
@@ -85,8 +85,8 @@
         SELECT
         DATE(io1.send_time) AS day,
         COUNT(*) AS total,
-        SUM(CASE WHEN iiq.inspect_status = 1 or (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
-        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
+        SUM(CASE WHEN iiq.inspect_status = 1 and (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
+        SUM(CASE WHEN iiq.inspect_status != 1 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
         FROM ifs_inventory_quantity iiq
         LEFT JOIN ins_order io1
         ON io1.ifs_inventory_id = iiq.id
@@ -95,18 +95,11 @@
         AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
         LEFT JOIN (
             SELECT
-                iuh.id,
-                coa.operation,
+                MAX(iuh.id) AS id,
                 iuh.inventory_quantity_id
             FROM ins_unqualified_handler iuh
-            LEFT JOIN (
-            SELECT
-            *,
-            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
-            FROM
-            common_oa
-            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
-            WHERE coa.operation !='閫�鍥�' AND coa.operation is not null
+            WHERE iuh.oa_state !=4 AND iuh.oa_state is not null
+            GROUP BY iuh.inventory_quantity_id
         ) iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT ins_order_id, MAX(sample) AS sample, MAX(model) AS model
@@ -174,8 +167,8 @@
         SELECT
         MONTH(io1.send_time) AS month,
         COUNT(*) AS total,
-        SUM(CASE WHEN iiq.inspect_status = 1 or (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
-        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
+        SUM(CASE WHEN iiq.inspect_status = 1 and (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
+        SUM(CASE WHEN iiq.inspect_status != 1 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
         FROM ifs_inventory_quantity iiq
         LEFT JOIN ins_order io1
         ON io1.ifs_inventory_id = iiq.id
@@ -184,18 +177,11 @@
         AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
         LEFT JOIN (
             SELECT
-            iuh.id,
-            coa.operation,
+            MAX(iuh.id) AS id,
             iuh.inventory_quantity_id
             FROM ins_unqualified_handler iuh
-            LEFT JOIN (
-            SELECT
-            *,
-            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
-            FROM
-            common_oa
-            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
-            WHERE coa.operation !='閫�鍥�' AND coa.operation is not null
+            WHERE iuh.oa_state !=4 AND iuh.oa_state is not null
+            GROUP BY iuh.inventory_quantity_id
         ) iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT ins_order_id, MAX(sample) AS sample, MAX(model) AS model
@@ -232,26 +218,19 @@
         SELECT
         COUNT(*) AS sum,
         /* 鍚堟牸 */
-        SUM(CASE WHEN iiq.inspect_status = 1 or (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
+        SUM(CASE WHEN iiq.inspect_status = 1 and (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
         /* 涓嶅悎鏍� */
-        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
+        SUM(CASE WHEN iiq.inspect_status != 1 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
         FROM ifs_inventory_quantity iiq
         INNER JOIN ins_order io1
         ON io1.ifs_inventory_id = iiq.id
         LEFT JOIN (
             SELECT
-            iuh.id,
-            coa.operation,
+            MAX(iuh.id) AS id,
             iuh.inventory_quantity_id
             FROM ins_unqualified_handler iuh
-            LEFT JOIN (
-            SELECT
-            *,
-            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
-            FROM
-            common_oa
-            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
-            WHERE coa.operation !='閫�鍥�' AND coa.operation is not null
+            WHERE iuh.oa_state !=4 AND iuh.oa_state is not null
+            GROUP BY iuh.inventory_quantity_id
         ) iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT
@@ -290,7 +269,7 @@
         SELECT
         iiq.supplier_name AS supplierName,
         COUNT(iiq.id) AS totalBatch,
-        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unqualifiedBatch,
+        SUM(CASE WHEN iiq.inspect_status != 1 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unqualifiedBatch,
         ROUND(SUM(CASE WHEN iiq.inspect_status = 1 and iuh.id is null THEN 1 ELSE 0 END) / COUNT(*)* 100, 2 ) AS passRate
         FROM ifs_inventory_quantity iiq
         INNER JOIN ins_order io1
@@ -300,18 +279,11 @@
         AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
         LEFT JOIN (
             SELECT
-            iuh.id,
-            coa.operation,
+            MAX(iuh.id) AS id,
             iuh.inventory_quantity_id
             FROM ins_unqualified_handler iuh
-            LEFT JOIN (
-            SELECT
-            *,
-            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
-            FROM
-            common_oa
-            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
-            WHERE coa.operation !='閫�鍥�' AND coa.operation is not null
+            WHERE iuh.oa_state !=4 AND iuh.oa_state is not null
+            GROUP BY iuh.inventory_quantity_id
         ) iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT
diff --git a/ruoyi-admin-ztns/src/main/resources/application-ztns.yml b/ruoyi-admin-ztns/src/main/resources/application-ztns.yml
index f167d4b..53fa09f 100644
--- a/ruoyi-admin-ztns/src/main/resources/application-ztns.yml
+++ b/ruoyi-admin-ztns/src/main/resources/application-ztns.yml
@@ -101,7 +101,7 @@
 
 # 鏃ュ織閰嶇疆
 logging:
-  file-location: /center-lims-ztns/after
+  file-location: /center-lims-ztns/after/logs
   level:
     com.ruoyi: info
     org.springframework: warn
diff --git a/ruoyi-admin-ztns/src/main/resources/logback.xml b/ruoyi-admin-ztns/src/main/resources/logback.xml
index dcefe7a..bb2f06b 100644
--- a/ruoyi-admin-ztns/src/main/resources/logback.xml
+++ b/ruoyi-admin-ztns/src/main/resources/logback.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
     <!-- 鏃ュ織瀛樻斁璺緞 -->
-    <springProperty scope="context" name="logs" source="logging.file-location" default="/logs"/>
+    <springProperty scope="context" name="logs" source="logging.file-location" default="/ztns-logs"/>
     <property name="log.path" value="${logs}"/>
 
     <!-- 鏃ュ織杈撳嚭鏍煎紡 -->

--
Gitblit v1.9.3