From 16335c0ebdbb00381a7c008ccaa387ceadcfd45b Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期一, 14 九月 2026 17:37:01 +0800
Subject: [PATCH] 【景宁】景宁 定时发送异常信息-景宁

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java                             |   42 +++++++
 ruoyi-common/src/main/java/com/ruoyi/common/dx/MessageSend.java                          |    7 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/tools/DingTalkController.java |   14 ++
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DingAsyncSendMsgReq.java         |   18 +++
 smartor/src/main/java/com/smartor/service/DingTalkService.java                           |   15 ++
 ruoyi-common/src/main/java/com/ruoyi/common/utils/DingTalkUtils.java                     |   79 +++++++++++++
 smartor/src/main/java/com/smartor/service/impl/DingTalkServiceImpl.java                  |  108 ++++++++++++++++++
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java      |   33 ++++
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DingAsyncSendMsgResp.java        |   11 +
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DingTokenResp.java               |   11 +
 ruoyi-common/src/main/java/com/ruoyi/common/core/service/IDingTalkService.java           |   15 ++
 11 files changed, 347 insertions(+), 6 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/tools/DingTalkController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/tools/DingTalkController.java
index 5e1689d..5d6f356 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/tools/DingTalkController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/tools/DingTalkController.java
@@ -48,5 +48,19 @@
         return aBoolean;
     }
 
+    /**
+     * 鍙戦�侀拤閽夋秷鎭�
+     *
+     * @param dingTalkReqVo 鍙戦�佸唴瀹�
+     * @throws ApiException
+     */
+    @ApiOperation("鍙戦�侀拤閽夋秷鎭�")
+    @PostMapping("/sendDingTalkText")
+    public void sendDingTalkText(@RequestBody DingTalkReqVo dingTalkReqVo) throws Exception {
+//        String userid = dingTalkService.getDingTalkUserByMobile(dingTalkReqVo.getNumber());
+        String userid = "214563391024684607";
+        dingTalkService.sendDingTalkText("鏅畞鍙戦�侀拤閽夋秷鎭祴璇�", userid);
+    }
+
 }
 
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DingAsyncSendMsgReq.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DingAsyncSendMsgReq.java
new file mode 100644
index 0000000..eda3e96
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DingAsyncSendMsgReq.java
@@ -0,0 +1,18 @@
+package com.ruoyi.common.core.domain;
+
+import lombok.Data;
+import java.util.Map;
+
+@Data
+public class DingAsyncSendMsgReq {
+    /** 搴旂敤agentId */
+    private Long agent_id;
+    /** 鎺ユ敹浜簎serid鍒楄〃锛屽涓�楀彿鍒嗛殧锛涗笌dept_id_list浜岄�変竴 */
+    private String userid_list;
+    /** 鎺ユ敹閮ㄩ棬id鍒楄〃锛屽涓�楀彿鍒嗛殧 */
+    private String dept_id_list;
+    /** 鏄惁鍙戦�佺粰鎵�鏈夊憳宸ワ紝true鍒檜serid_list銆乨ept_id_list澶辨晥 */
+    private Boolean to_all_user;
+    /** 娑堟伅浣� */
+    private Map<String, Object> msg;
+}
\ No newline at end of file
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DingAsyncSendMsgResp.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DingAsyncSendMsgResp.java
new file mode 100644
index 0000000..52cc925
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DingAsyncSendMsgResp.java
@@ -0,0 +1,11 @@
+package com.ruoyi.common.core.domain;
+
+import lombok.Data;
+
+@Data
+public class DingAsyncSendMsgResp {
+    private Integer errcode;
+    private String errmsg;
+    /** 浠诲姟id锛屽悗缁洖璋冧細甯﹀洖杩欎釜task_id */
+    private Long task_id;
+}
\ No newline at end of file
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DingTokenResp.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DingTokenResp.java
new file mode 100644
index 0000000..fce4bf5
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DingTokenResp.java
@@ -0,0 +1,11 @@
+package com.ruoyi.common.core.domain;
+
+import lombok.Data;
+
+@Data
+public class DingTokenResp {
+    private Integer errcode;
+    private String errmsg;
+    private String access_token;
+    private Long expires_in;
+}
\ No newline at end of file
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/IDingTalkService.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/IDingTalkService.java
index a36cbe4..39c3a82 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/IDingTalkService.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/IDingTalkService.java
@@ -13,4 +13,19 @@
      * @return 鏄惁鎴愬姛
      */
     Boolean sendNotification(DingTalkReqVo dingTalkReqVo);
+
+    /**
+     * 鍙戦�侀拤閽夋秷鎭�-鏅畞
+     * @param sMessageContent
+     * @throws Exception
+     */
+    void sendDingTalkText(String sMessageContent, String userId) throws Exception;
+
+    /**
+     * 鏍规嵁鐢佃瘽鑾峰彇鐢ㄦ埛
+     * @param mobile
+     * @return
+     * @throws Exception
+     */
+    String getDingTalkUserByMobile(String mobile) throws Exception;
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/dx/MessageSend.java b/ruoyi-common/src/main/java/com/ruoyi/common/dx/MessageSend.java
index fb3a9f5..fdf267a 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/dx/MessageSend.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/dx/MessageSend.java
@@ -1,5 +1,9 @@
 package com.ruoyi.common.dx;
 
+import com.dingtalk.api.DefaultDingTalkClient;
+import com.dingtalk.api.DingTalkClient;
+import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
+import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
 import com.ruoyi.common.utils.uuid.UUID;
 import lombok.extern.slf4j.Slf4j;
 
@@ -31,7 +35,8 @@
                 result = soap.i5GSend("202508291634227086", "T202508291635259440", UUID.randomUUID().toString(), sMessageContent, sMessageType, sUserNumber, sScheduleTime);
                 log.info("----鐭俊杩斿洖鐨勬暟鎹负锛歿},    ----sMessageContent 鐨勫�间负:{}", result,UUID.randomUUID().toString());
             } else if ("7".equals(sMessageType)) {
-                result = soap.i5GSend("202508291634227086", "T202607211306131891", UUID.randomUUID().toString(), sMessageContent, sMessageType, sUserNumber, sScheduleTime);
+                result = soap.i5GSend("202508291634227086", "T202607211306131891",
+                        UUID.randomUUID().toString(), sMessageContent, sMessageType, sUserNumber, sScheduleTime);
                 log.info("----閽夐拤杩斿洖鐨勫師濮嬫暟鎹负锛歿}", result);
 
             } else {
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DingTalkUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DingTalkUtils.java
new file mode 100644
index 0000000..01c6202
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DingTalkUtils.java
@@ -0,0 +1,79 @@
+package com.ruoyi.common.utils;
+
+import com.alibaba.fastjson2.JSON;
+import com.ruoyi.common.core.domain.DingAsyncSendMsgReq;
+import com.ruoyi.common.core.domain.DingAsyncSendMsgResp;
+import com.ruoyi.common.core.domain.DingTokenResp;
+import okhttp3.*;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+public class DingTalkUtils {
+
+    private static final OkHttpClient HTTP_CLIENT = new OkHttpClient.Builder()
+            .connectTimeout(10, TimeUnit.SECONDS)
+            .readTimeout(10, TimeUnit.SECONDS)
+            .build();
+
+    /**
+     * 鑾峰彇浼佷笟access_token
+     * @param corpid 浼佷笟ID
+     * @param corpsecret 搴旂敤鐨勫嚟璇佸瘑閽�
+     * @return DingTokenResp
+     */
+    public static DingTokenResp getAccessToken(String corpid, String corpsecret) throws IOException {
+        String url = "https://oapi.dingtalk.com/gettoken?corpid=" + corpid + "&corpsecret=" + corpsecret;
+        Request request = new Request.Builder()
+                .url(url)
+                .get()
+                .build();
+        try (Response response = HTTP_CLIENT.newCall(request).execute()) {
+            String body = response.body().string();
+            return JSON.parseObject(body, DingTokenResp.class);
+        }
+    }
+
+    /**
+     * 寮傛鍙戦�佷紒涓氫細璇濇秷鎭� asyncsend_v2
+     */
+    public static DingAsyncSendMsgResp asyncSendCorpMsg(String accessToken, DingAsyncSendMsgReq req) throws IOException {
+        String url = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + accessToken;
+
+        String jsonBody = JSON.toJSONString(req);
+        RequestBody body = RequestBody.create(jsonBody, MediaType.get("application/json; charset=utf-8"));
+
+        Request request = new Request.Builder()
+                .url(url)
+                .post(body)
+                .build();
+
+        try (Response response = HTTP_CLIENT.newCall(request).execute()) {
+            String respBody = response.body().string();
+            return JSON.parseObject(respBody, DingAsyncSendMsgResp.class);
+        }
+    }
+
+    // ========== 鏋勫缓娑堟伅绀轰緥锛氭枃鏈秷鎭� ==========
+    public static Map<String, Object> buildTextMsg(String content) {
+        Map<String, Object> msgMap = new HashMap<>();
+        msgMap.put("msgtype", "text");
+        Map<String, Object> text = new HashMap<>();
+        text.put("content", content);
+        msgMap.put("text", text);
+        return msgMap;
+    }
+
+    // ========== 鏋勫缓娑堟伅绀轰緥锛歮arkdown娑堟伅 ==========
+    public static Map<String, Object> buildMarkdownMsg(String title, String text) {
+        Map<String, Object> msgMap = new HashMap<>();
+        msgMap.put("msgtype", "markdown");
+        Map<String, Object> markdown = new HashMap<>();
+        markdown.put("title", title);
+        markdown.put("text", text);
+        msgMap.put("markdown", markdown);
+        return msgMap;
+    }
+}
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
index 2f047a7..55c1971 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -9,6 +9,7 @@
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.core.service.IDingTalkService;
 import com.ruoyi.common.dx.MessageSend;
 import com.ruoyi.common.enums.MsgLSEnum;
 import com.ruoyi.common.enums.ServiceFromEnum;
@@ -104,6 +105,9 @@
 
     @Autowired
     private ISysConfigService configService;
+
+    @Autowired
+    private IDingTalkService dingTalkService;
 
 
     @Value("${localIP}")
@@ -270,6 +274,44 @@
         }
     }
 
+    /**
+     * 瀹氭椂鍙戦�佸紓甯镐俊鎭�-鏅畞
+     */
+    public void sendExceptInfo() throws Exception {
+        //1.鑾峰彇鍙戦�佷汉宸ュ彿
+        ServiceSubtaskDetailTraceVO subtaskDetailTraceVO = new ServiceSubtaskDetailTraceVO();
+        subtaskDetailTraceVO.setHandleFlag("0");
+        List<ServiceSubtaskDetailTrace> serviceSubtaskDetailTraces =
+                serviceSubtaskDetailTraceService.selectServiceSubtaskDetailTtraceList(subtaskDetailTraceVO);
+        // 鎶� dutyDeptPersonCode 鏁寸悊鍒� list 涓紙濡傛灉澶氫釜浜虹敤閫楀彿鍒嗗壊锛屽垯灞曞紑骞跺幓閲嶏級
+        List<String> dutyDeptPersonCodeList = serviceSubtaskDetailTraces.stream()
+                .map(ServiceSubtaskDetailTrace::getDutyDeptPersonCode)
+                .filter(StringUtils::isNotBlank)
+                .flatMap(code -> Arrays.stream(code.split(",")))
+                .map(String::trim)
+                .filter(StringUtils::isNotBlank).distinct()  // 鍘婚噸
+                .collect(Collectors.toList());
+        // 鑾峰彇鈥滃紓甯稿唴瀹规彁閱�"
+        SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique("send.except.content");
+        String exceptContent = sysConfig.getConfigValue();
+
+        // 鑾峰彇鈥滃唴瀹规彁閱掓祴璇曚汉宸ュ彿鈥�
+        String testPerson = sysConfigMapper.checkConfigKeyUnique("send.test.person").getConfigValue();
+        if (StringUtils.isNotBlank(testPerson)) {
+            String[] split = testPerson.split(",");
+            if (CollectionUtils.isEmpty(dutyDeptPersonCodeList)) dutyDeptPersonCodeList = Arrays.asList(split);
+            else dutyDeptPersonCodeList.addAll(Arrays.asList(split));
+        }
+
+        if (CollectionUtils.isNotEmpty(dutyDeptPersonCodeList)) {
+            for (String dutyDeptPersonCode : dutyDeptPersonCodeList) {
+                log.info("銆恠endExceptInfo銆戝彂閫佷汉宸ュ彿锛歿}", dutyDeptPersonCode);
+                String dutyDeptPerson = dingTalkService.getDingTalkUserByMobile(dutyDeptPersonCode);
+                dingTalkService.sendDingTalkText(exceptContent, dutyDeptPerson);
+            }
+        }
+    }
+
 
     /**
      * 瀹氭椂澶勭悊澶栭摼鐨勬暟鎹�
diff --git a/smartor/src/main/java/com/smartor/service/DingTalkService.java b/smartor/src/main/java/com/smartor/service/DingTalkService.java
index cc7313f..56f5759 100644
--- a/smartor/src/main/java/com/smartor/service/DingTalkService.java
+++ b/smartor/src/main/java/com/smartor/service/DingTalkService.java
@@ -21,4 +21,19 @@
      * @param dingTalkReqVo
      */
     public Boolean sendNotification(DingTalkReqVo dingTalkReqVo);
+
+    /**
+     * 鍙戦�侀拤閽夋秷鎭�-鏅畞
+     * @param sMessageContent
+     * @throws Exception
+     */
+    public void sendDingTalkText(String sMessageContent, String userId) throws Exception;
+
+    /**
+     * 鏍规嵁鐢佃瘽鑾峰彇鐢ㄦ埛
+     * @param mobile
+     * @return
+     * @throws Exception
+     */
+    public String getDingTalkUserByMobile(String mobile) throws Exception;
 }
diff --git a/smartor/src/main/java/com/smartor/service/impl/DingTalkServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/DingTalkServiceImpl.java
index 7a61278..35761ab 100644
--- a/smartor/src/main/java/com/smartor/service/impl/DingTalkServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/DingTalkServiceImpl.java
@@ -12,7 +12,11 @@
 import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
 import com.dingtalk.api.response.OapiUserListidResponse;
 import com.dingtalk.api.response.OapiV2UserGetbymobileResponse;
+import com.ruoyi.common.core.domain.DingAsyncSendMsgReq;
+import com.ruoyi.common.core.domain.DingAsyncSendMsgResp;
 import com.ruoyi.common.core.domain.DingTalkReqVo;
+import com.ruoyi.common.core.domain.DingTokenResp;
+import com.ruoyi.common.utils.DingTalkUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.smartor.service.DingTalkService;
 import com.taobao.api.ApiException;
@@ -40,6 +44,9 @@
 
     @Value("${dingAppSecret}")
     private String dingAppSecret;
+
+    @Value("${dingAppAgentId}")
+    private Long dingAppAgentId;
 
     @Override
     public Boolean sendNotification(DingTalkReqVo dingTalkReqVo) {
@@ -158,4 +165,105 @@
         OapiGettokenResponse response = client.execute(request);
         return response.getAccessToken();
     }
+
+    /**
+     * 鑾峰彇post access_token
+     */
+    private String getAccessTokenPost() throws ApiException {
+        DefaultDingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.com/v1.0/oauth2/{corpId}/token");
+        OapiGettokenRequest request = new OapiGettokenRequest();
+        //Appkey
+        request.setAppkey(dingAppid);
+        //Appsecret
+        request.setAppsecret(dingAppSecret);
+        /*璇锋眰鏂瑰紡*/
+        request.setHttpMethod("Post");
+        OapiGettokenResponse response = client.execute(request);
+        return response.getAccessToken();
+    }
+
+//    /**
+//     * 鍙戦�侀拤閽夋秷鎭�-鏅畞
+//     * @param sMessageContent
+//     * @throws Exception
+//     */
+//    public void sendDingTalkText(String sMessageContent) throws Exception {
+//        String CORP_ID = "浣犵殑浼佷笟corpid";
+//        String CORP_SECRET = "浼佷笟搴旂敤鐨刢orpsecret";
+//        Long AGENT_ID = 4992829038L; // 浣犵殑搴旂敤agentId
+//
+//        try {
+//            // 1. 鑾峰彇access_token
+//            DingTokenResp tokenResp = DingTalkUtils.getAccessToken(CORP_ID, CORP_SECRET);
+//            if (tokenResp.getErrcode() != 0) {
+//                System.err.println("鑾峰彇token澶辫触锛�" + tokenResp.getErrmsg());
+//                return;
+//            }
+//            String accessToken = tokenResp.getAccess_token();
+//            System.out.println("access_token=" + accessToken);
+//
+//            // 2. 缁勮鍙戦�佽姹�
+//            DingAsyncSendMsgReq sendReq = new DingAsyncSendMsgReq();
+//            sendReq.setAgent_id(AGENT_ID);
+//            sendReq.setUserid_list("user01,user02"); // 鎺ユ敹浜洪拤閽塽serId锛屽涓�楀彿
+//            sendReq.setTo_all_user(false);
+//            // 璁剧疆娑堟伅鍐呭锛岃繖閲岀敤鏂囨湰娑堟伅
+//            sendReq.setMsg(DingTalkUtils.buildTextMsg("浣犲ソ锛岃繖鏄紓姝ュ彂閫侀拤閽夋秷鎭祴璇�"));
+//
+//            // 3. 璋冪敤寮傛鍙戦�佹帴鍙�
+//            DingAsyncSendMsgResp sendResp = DingTalkUtils.asyncSendCorpMsg(accessToken, sendReq);
+//            if (sendResp.getErrcode() == 0) {
+//                System.out.println("鎻愪氦娑堟伅浠诲姟鎴愬姛锛宼ask_id=" + sendResp.getTask_id());
+//                System.out.println("娑堟伅瀹為檯鍙戦�佺粨鏋滐紝闇�瑕佸湪閽夐拤鍚庡彴閰嶇疆鍥炶皟鎺ユ敹");
+//            } else {
+//                System.err.println("鎻愪氦娑堟伅浠诲姟澶辫触锛歝ode=" + sendResp.getErrcode() + ",msg=" + sendResp.getErrmsg());
+//            }
+//
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//    }
+
+    /**
+     * 鍙戦�侀拤閽夋秷鎭�-鏅畞
+     * @param sMessageContent
+     * @throws Exception
+     */
+    @Override
+    public void sendDingTalkText(String sMessageContent, String userId) throws Exception {
+        Long agentId = dingAppAgentId;
+        String accessToken = getAccessToken();
+        DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");
+        OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();
+        request.setAgentId(agentId);
+        request.setUseridList(userId);
+        request.setToAllUser(false);
+
+        OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
+        msg.setMsgtype("text");
+        OapiMessageCorpconversationAsyncsendV2Request.Text text = new OapiMessageCorpconversationAsyncsendV2Request.Text();
+        text.setContent(sMessageContent);
+        msg.setText(text);
+        request.setMsg(msg);
+
+        OapiMessageCorpconversationAsyncsendV2Response rsp = client.execute(request, accessToken);
+        System.out.println(rsp.getBody());
+    }
+
+    /**
+     * 鏍规嵁鐢佃瘽鑾峰彇鐢ㄦ埛
+     * @param mobile
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public String getDingTalkUserByMobile(String mobile) throws Exception {
+        String accessToken = getAccessToken();
+        DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/getbymobile");
+        OapiV2UserGetbymobileRequest req = new OapiV2UserGetbymobileRequest();
+        req.setMobile(mobile);
+        OapiV2UserGetbymobileResponse rsp = client.execute(req, accessToken);
+        return rsp.getBody();
+    }
+
 }
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
index bd62a45..12c3f7e 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -1066,8 +1066,19 @@
             }
         }
 
+        String orgid = selectServiceSubtaskList.get(0).getOrgid();
+        //鏅畞-闅忚寮傚父鎻愮ず 鍏朵粬-寮傚父婊℃剰搴︽彁绀�
+        boolean addTrace = false;
+        if(StringUtils.isNotEmpty(orgid) && orgid.equals("47255004333112711A1001")){
+            if (stt != null) {
+                addTrace = Long.valueOf(1L).equals(stt.getIsabnormal());
+            }
+        }else {
+            addTrace = StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getIsMydException());
+        }
         //鍒ゆ柇涓�涓嬪綋鍓嶇殑闂鏄笉鏄弧鎰忓害闂锛屽苟涓� dutyDeptCode 鏄惁鏈夊�硷紝骞朵笖閫夐」鏄笉鏄紓甯搁�夐」锛屽鏋滃叏绗﹀悎锛屽垯寰�婊℃剰搴﹂棶棰樺紓甯歌〃鏂板
-        if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getDutyDeptCode()) && stt != null && Long.valueOf(1L).equals(stt.getIsabnormal()) || StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getDutyDeptCode()) && StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getIsMydException())) {
+        if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getDutyDeptCode()) && stt != null && Long.valueOf(1L).equals(stt.getIsabnormal()) || StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getDutyDeptCode())
+                && addTrace) {
             isabnormalFlag = 1L;
             ServiceSubtaskDetailTrace subtaskDetailTrace = new ServiceSubtaskDetailTrace();
             subtaskDetailTrace.setDetailId(serviceSubtaskDetail.getId());
@@ -1083,17 +1094,19 @@
             //鑾峰彇鎵�鏈夐�夐」
             subtaskDetailTrace.setTargetid(stt != null ? stt.getId() : null);
             subtaskDetailTrace.setTargetvalue(serviceSubtaskDetailVO.getTargetvalue());
-            subtaskDetailTrace.setMatchedtext(stt != null ? stt.getOptioncontent() : svyTaskTemplateScriptVO.getIsMydException());
             subtaskDetailTrace.setGuid(svyTaskTemplateScriptVO.getGuid());
             subtaskDetailTrace.setValueType(serviceSubtaskDetail.getValueType());
-            subtaskDetailTrace.setIsMydException(svyTaskTemplateScriptVO.getIsMydException());
             subtaskDetailTrace.setTemplateType(2);
 
             SvyLibScriptCategory svyLibScriptCategory = svyLibScriptCategoryMapper.selectSvyLibScriptCategoryById(svyTaskTemplateScriptVO.getCategoryid());
             subtaskDetailTrace.setType(svyLibScriptCategory != null ? svyLibScriptCategory.getType() : null);
 
             subtaskDetailTrace.setScriptid(svyTaskTemplateScriptVO.getId());
+            //闈炴弧鎰忓害鎰忚寮傚父鑷姩濉叆绌�
+            subtaskDetailTrace.setMatchedtext(stt != null ? stt.getOptioncontent() : svyTaskTemplateScriptVO.getIsMydException());
             subtaskDetailTrace.setAsrtext(stt != null ? stt.getOptioncontent() : svyTaskTemplateScriptVO.getIsMydException());
+            subtaskDetailTrace.setIsMydException(svyTaskTemplateScriptVO.getIsMydException());
+
             subtaskDetailTrace.setRecordpath(null);
             subtaskDetailTrace.setPatid(selectServiceSubtaskList.get(0).getPatid());
             JSONObject patdescJson1 = new JSONObject();
@@ -1341,9 +1354,19 @@
                 stt = ivrTaskTemplateTargetoption;
         }
 
-
+        String orgid = selectServiceSubtaskList.get(0).getOrgid();
+        //鏅畞-闅忚寮傚父鎻愮ず 鍏朵粬-寮傚父婊℃剰搴︽彁绀�
+        boolean addTrace = false;
+        if(StringUtils.isNotEmpty(orgid) && orgid.equals("47255004333112711A1001")){
+            if (stt != null) {
+                addTrace = Long.valueOf(1L).equals(stt.getIsabnormal());
+            }
+        }else {
+            addTrace = StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIsMydException());
+        }
         //鍒ゆ柇涓�涓嬪綋鍓嶇殑闂鏄笉鏄弧鎰忓害闂锛屽苟涓攄utyDeptCode鏄惁鏈夊�硷紝骞朵笖閫夐」鏄笉鏄紓甯搁�夐」锛屽鏋滃叏绗﹀悎锛屽垯寰�婊℃剰搴﹂棶棰樺紓甯歌〃鏂板
-        if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getDutyDeptCode()) && 1 == stt.getIsabnormal() || StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getDutyDeptCode()) && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIsMydException())) {
+        if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getDutyDeptCode()) && 1 == stt.getIsabnormal() || StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getDutyDeptCode())
+                && addTrace) {
             isabnormalFlag = "1";
             ServiceSubtaskDetailTrace subtaskDetailTrace = new ServiceSubtaskDetailTrace();
             subtaskDetailTrace.setDetailId(serviceSubtaskDetail.getId());

--
Gitblit v1.9.3