From c80a342eacd6b639c486eb47afdf04984d54183e Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期二, 03 二月 2026 13:25:13 +0800
Subject: [PATCH] 不合格管理:重新提交oa功能调整3

---
 ruoyi-admin-ztns/src/main/resources/application-ztns.yml                                           |    3 +
 inspect-server/src/main/java/com/ruoyi/inspect/dto/PushOADto.java                                  |    6 +++
 inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml                                    |   27 ++++++-------
 inspect-server/src/main/resources/mapper/InsSampleUserMapper.xml                                   |    3 +
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java               |    6 +-
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java |    3 +
 ruoyi-common/src/main/java/com/ruoyi/common/enums/ContractType.java                                |   21 ++++++++++
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java  |   14 ++++---
 ruoyi-admin-ztns/src/main/resources/application-druid.yml                                          |    3 +
 ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProperty.java                                     |    7 +++
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java           |   18 --------
 11 files changed, 65 insertions(+), 46 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/PushOADto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/PushOADto.java
index 3fabfcd..f84fba0 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/dto/PushOADto.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/PushOADto.java
@@ -21,4 +21,10 @@
     @ApiModelProperty(value = "闄勪欢url")
     private String fileUrl;
 
+    /**
+     * IFS鍩�
+     */
+    @ApiModelProperty(value = "IFS鍩�")
+    private String contract;
+
 }
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java
index d20c20b..d9ffc28 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java
@@ -15,6 +15,7 @@
 import com.deepoove.poi.config.ConfigureBuilder;
 import com.deepoove.poi.data.Pictures;
 import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.enums.ContractType;
 import com.ruoyi.common.utils.DateImageUtil;
 import com.ruoyi.common.utils.api.IfsApiUtils;
 import com.ruoyi.common.utils.QueryWrappers;
@@ -82,7 +83,7 @@
         jresult.put("data", new JSONArray());
         JSONObject jsonObject = new JSONObject();
         generateIfsStockQueryParams(jsonObject, ifsStockQueryDTO, ifsStockQueryDTO.getPage(), ifsStockQueryDTO.getLimit());
-        Result result = ifsApiUtils.getIfsStock("ZTNS",jsonObject.toJSONString());
+        Result result = ifsApiUtils.getIfsStock(ContractType.ZTNS.getValue(),jsonObject.toJSONString());
         if (result.getCode() == 200) {
             JSONObject data = (JSONObject) JSON.toJSON(result.getData());
             JSONArray array = new JSONArray();
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
index b77a7fd..060cb87 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
@@ -1745,22 +1745,6 @@
     }
 
     /**
-     * 浣跨敤姝e垯琛ㄨ揪寮忓幓闄ゅ瓧绗︿覆鏈�鍚庝竴涓�"-"鍙婂叾鍚庨潰鐨勬墍鏈夊唴瀹�
-     * @param str 寰呭鐞嗙殑瀛楃涓诧紙鍏佽涓簄ull锛�
-     * @return 澶勭悊鍚庣殑瀛楃涓诧紝null杩斿洖null锛屾棤"-"杩斿洖鍘熷瓧绗︿覆
-     */
-    public static String removeLastHyphenAndContent(String str) {
-        // 绌哄�兼牎楠岋細閬垮厤NullPointerException
-        if (str == null || str.isEmpty()) {
-            return str;
-        }
-        // 姝e垯琛ㄨ揪寮忥細鍖归厤鏈�鍚庝竴涓�"-"鍙婂叾鍚庨潰鐨勬墍鏈夊唴瀹�
-        String regex = "-[^-]*$";
-        // 鏇挎崲鍖归厤鐨勫唴瀹逛负绌哄瓧绗︿覆
-        return str.replaceAll(regex, "");
-    }
-
-    /**
      * 灏忔姤鍛婄敓鎴�
      *
      * @param orderId
@@ -1828,7 +1812,7 @@
             //鏌ヨ妫�楠屽崟娑堟伅
             InsSampleUserVO insSampleUser = insSampleUserMapper.selectUserNameByOrderId(orderId);
             if (Objects.nonNull(insSampleUser)) {
-                enterFactoryReport.setPartDesc(removeLastHyphenAndContent(insSampleUser.getModel()));
+                enterFactoryReport.setPartDesc(insSampleUser.getModel());
                 enterFactoryReport.setInspector(insSampleUser.getInspector());
                 enterFactoryReport.setInspectDate(insSampleUser.getInspectDate());
             }
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
index 5370f98..d4ad615 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -439,16 +439,16 @@
     @Override
     public Map<String, Object> getInsOrder(Integer id) {
         Map<String, Object> map = new HashMap<>();
-        InsOrder insOrder = insOrderMapper.selectById(id);
+        IfsOrderVO ifsOrderVO = insOrderMapper.selectOrderInfoById(id);
         List<SampleProductDto> list;
         // 鍒ゆ柇鏄惁鏄繘鍘傛姤鍛婂厤妫�
-        if (insOrder.getIsExemption().equals(1)) {
+        if (ifsOrderVO.getIsExemption().equals(1)) {
             list = insSampleMapper.selectExemptionByOrderId(id);
         } else {
             list = insSampleMapper.selectSampleProductListByOrderId2(id);
         }
         Map<String, Object> map1 = insSampleMapper.selectInsOrder(id);
-        map.put("insOrder", insOrder);
+        map.put("insOrder", ifsOrderVO);
         map.put("sampleProduct", list);
         map.put("insOrderTemplate", map1);
         return map;
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 42e9deb..79490a1 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
@@ -14,6 +14,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.domain.Result;
 import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.enums.ContractType;
 import com.ruoyi.common.oa.OAProcess;
 import com.ruoyi.common.oa.OAProperty;
 import com.ruoyi.common.oa.OAResult;
@@ -125,10 +126,6 @@
         //鑾峰彇涓嶅悎鏍煎鐞嗚褰�
         UnqualifiedHandlerVO vo = baseMapper.findById(pushOADto.getHandlerId());
 
-//        if (vo.getRequestId() != null) {
-//            throw new ErrorException("璇ヤ笉鍚堟牸澶勭悊宸叉彁浜よ繃OA");
-//        }
-
         //鎻愪氦oa鐩稿叧瀛楁璧嬪��
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         Map<String, String> mainFields = new HashMap<>();
@@ -168,9 +165,13 @@
         boolean oa = false;
         try {
             log.info("鍙戣捣涓嶅悎鏍煎鐞哋A瀹℃牳娴佺▼");
-            String unqualifiedProcessId = oaProperty.getUnqualifiedProcessId();
+            //鏍规嵁IFS鍩熻幏鍙栧搴旂殑娴佺▼id
+            if(StringUtils.isBlank(pushOADto.getContract())){
+                throw new RuntimeException("IFS鍩熴��"+pushOADto.getContract()+"銆戜笉瀛樺湪锛孫A娴佺▼鎻愪氦澶辫触");
+            }
+            String unqualifiedProcessId = StringUtils.equals(ContractType.ZTNS.getValue(),pushOADto.getContract())?oaProperty.getUnqualifiedProcessId():oaProperty.getUnqualifiedProcessIdByKJNS();
             OAResult oaResult = OAProcess.start(mainFields, requestName, unqualifiedProcessId,SecurityUtils.getUsername());
-            log.info("涓嶅悎鏍煎鐞哋A瀹℃牳娴佺▼缁撴潫锛岃繑鍥炵粨鏋�->{}" + oaResult);
+            log.info("{}涓嶅悎鏍煎鐞哋A瀹℃牳娴佺▼缁撴潫锛岃繑鍥炵粨鏋�->{}",unqualifiedProcessId,oaResult);
             oa = oaResult.success();
             if (oa) {
                 String addWorkflowResult = oaResult.getAddWorkflowResult();
@@ -299,6 +300,7 @@
             //鎺ㄩ�丱A
             PushOADto pushOADto = new PushOADto();
             pushOADto.setHandlerId(unqualifiedHandlerDto.getId());
+            pushOADto.setContract(unqualifiedHandlerDto.getContract());
             pushOA(pushOADto);
         }
         return true;
diff --git a/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml b/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
index 40c572b..d678343 100644
--- a/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
+++ b/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
@@ -85,14 +85,15 @@
         SELECT
         DATE(io1.send_time) AS day,
         COUNT(*) AS total,
-        SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) AS qualified,
-        SUM(CASE WHEN iiq.inspect_status = 2 or iiq.inspect_status = 4 THEN 1 ELSE 0 END) AS unQualified
+        SUM(CASE WHEN iiq.inspect_status = 1 or (iiq.inspect_status = 4 AND iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
+        SUM(CASE WHEN iiq.inspect_status = 2 or (iiq.inspect_status = 4 AND 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
         AND io1.order_type = #{dto.orderType}
         AND io1.state != -1
         AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
+        LEFT JOIN ins_unqualified_handler iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT ins_order_id, MAX(sample) AS sample, MAX(model) AS model
         FROM ins_sample
@@ -159,14 +160,15 @@
         SELECT
         MONTH(io1.send_time) AS month,
         COUNT(*) AS total,
-        SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) AS qualified,
-        SUM(CASE WHEN iiq.inspect_status = 2 or iiq.inspect_status = 4 THEN 1 ELSE 0 END) AS unQualified
+        SUM(CASE WHEN iiq.inspect_status = 1 or (iiq.inspect_status = 4 AND iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
+        SUM(CASE WHEN iiq.inspect_status = 2 or (iiq.inspect_status = 4 AND 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
         AND io1.order_type = #{dto.orderType}
         AND io1.state != -1
         AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
+        LEFT JOIN ins_unqualified_handler iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT ins_order_id, MAX(sample) AS sample, MAX(model) AS model
         FROM ins_sample
@@ -202,17 +204,13 @@
         SELECT
         COUNT(*) AS sum,
         /* 鍚堟牸 */
-        SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) AS qualified,
+        SUM(CASE WHEN iiq.inspect_status = 1 or (iiq.inspect_status = 4 AND iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
         /* 涓嶅悎鏍� */
-        SUM(CASE WHEN iiq.inspect_status = 2 or iiq.inspect_status = 4 THEN 1 ELSE 0 END) AS unQualified,
-        ROUND(
-        SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END)
-        / COUNT(*) * 100,
-        2
-        ) AS passRate
+        SUM(CASE WHEN iiq.inspect_status = 2 or (iiq.inspect_status = 4 AND 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 ins_unqualified_handler iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT
         is2.ins_order_id,
@@ -249,17 +247,16 @@
     <select id="getMaterialPropTable" resultType="com.ruoyi.inspect.dto.MaterialPropTableDTO">
         SELECT
         iiq.supplier_name AS supplierName,
-        COUNT(*) AS totalBatch,
-        SUM(CASE WHEN iiq.inspect_status = 2 or iiq.inspect_status = 4 THEN 1 ELSE 0 END) AS unqualifiedBatch,
+        COUNT(iiq.id) AS totalBatch,
+        SUM(CASE WHEN iiq.inspect_status = 2 or (iiq.inspect_status = 4 AND iuh.id is not null) THEN 1 ELSE 0 END) AS unqualifiedBatch,
         ROUND(SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) / COUNT(*)* 100, 2 ) AS passRate
-
         FROM ifs_inventory_quantity iiq
         INNER JOIN ins_order io1
         ON io1.ifs_inventory_id = iiq.id
         AND io1.order_type = #{dto.orderType}
         AND io1.state != -1
         AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
-
+        LEFT JOIN ins_unqualified_handler iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT
         ins_order_id,
diff --git a/inspect-server/src/main/resources/mapper/InsSampleUserMapper.xml b/inspect-server/src/main/resources/mapper/InsSampleUserMapper.xml
index aaf0cb2..3a2d6dd 100644
--- a/inspect-server/src/main/resources/mapper/InsSampleUserMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsSampleUserMapper.xml
@@ -5,9 +5,10 @@
         select
             group_concat(DISTINCT u.name separator ',') AS inspector,
             date_format(isu.create_time,'%Y-%m-%d') AS inspect_date,
-            isa.model
+            ip.model
         from ins_sample_user isu
             left join ins_sample isa on isu.ins_sample_id = isa.ins_order_id
+            inner join ins_product ip on isa.id = ip.ins_sample_id
             left join user u on isu.user_id=u.id
         where isu.ins_sample_id=#{orderId} and isu.state=0
         group by isu.ins_sample_id
diff --git a/ruoyi-admin-ztns/src/main/resources/application-druid.yml b/ruoyi-admin-ztns/src/main/resources/application-druid.yml
index 241c5b3..aa0059c 100644
--- a/ruoyi-admin-ztns/src/main/resources/application-druid.yml
+++ b/ruoyi-admin-ztns/src/main/resources/application-druid.yml
@@ -131,7 +131,8 @@
 oa:
     oaHost:
     prodIp:
-    unqualifiedProcessId:
+    unqualifiedProcessId: 1
+    unqualifiedProcessIdByKJNS: 2 #KJNS鍩烵A娴佺▼id
 
 # 浜轰簨绯荤粺
 personnel:
diff --git a/ruoyi-admin-ztns/src/main/resources/application-ztns.yml b/ruoyi-admin-ztns/src/main/resources/application-ztns.yml
index 57e1c97..1e038ad 100644
--- a/ruoyi-admin-ztns/src/main/resources/application-ztns.yml
+++ b/ruoyi-admin-ztns/src/main/resources/application-ztns.yml
@@ -132,7 +132,8 @@
 oa:
   oaHost: http://192.168.0.49:8000/oa_workflowrequest.asmx?wsdl
   prodIp: http://192.168.21.53:7002/lims
-  unqualifiedProcessId: 715114
+  unqualifiedProcessId: 715114 #ZTNS鍩烵A娴佺▼id
+  unqualifiedProcessIdByKJNS: 861617 #KJNS鍩烵A娴佺▼id
 
 # 浼佷笟寰俊鎺ㄩ��
 wechat:
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/ContractType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/ContractType.java
new file mode 100644
index 0000000..74de12d
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/ContractType.java
@@ -0,0 +1,21 @@
+package com.ruoyi.common.enums;
+
+import lombok.Getter;
+
+/**
+ * IFS鍩�
+ */
+@Getter
+public enum ContractType {
+
+    ZTNS("涓ぉ鑰愪笣鍩�","ZTNS"),
+    KJNS("绉戞妧鑰愪笣鍩�","KJNS");
+
+    ContractType(String name, String value) {
+        this.name = name;
+        this.value = value;
+    }
+
+    private final String name;
+    private final String value;
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProperty.java b/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProperty.java
index 48a07e0..072e7be 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProperty.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProperty.java
@@ -23,9 +23,14 @@
 	private String prodIp;
 
 	/**
-	 * 瑁呭鐢电紗锛氫笉鍚堟牸瀹℃壒oa鐨刬d
+	 * 涓ぉ鑰愪笣锛氫笉鍚堟牸瀹℃壒oa鐨刬d
 	 */
 	private String unqualifiedProcessId;
 
+	/**
+	 * 涓ぉ绉戞妧锛氫笉鍚堟牸瀹℃壒oa鐨刬d
+	 */
+	private String unqualifiedProcessIdByKJNS;
+
 
 }

--
Gitblit v1.9.3