From 24166f2d9ae0bb72f061a38b96a113b1b6e44fbc Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 02 二月 2026 17:17:52 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java |  237 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 227 insertions(+), 10 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
index c82b7cf..e1a9e99 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -9,6 +9,7 @@
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.*;
 import com.smartor.common.FtpService;
+import com.smartor.common.RandomStringGenerator;
 import com.smartor.common.SendService;
 import com.smartor.config.PhoneUtils;
 import com.smartor.domain.*;
@@ -58,9 +59,6 @@
     private IServiceTaskService serviceTaskService;
 
     @Autowired
-    private IvrTaskTemplateTargetoptionMapper serviceTaskScriptTargetoptionMapper;
-
-    @Autowired
     private IvrTaskVisitResultMapper serviceTaskVisitResultMapper;
 
     @Autowired
@@ -74,12 +72,18 @@
 
     @Autowired
     private IIvrTaskTemplateService ivrTaskTemplateService;
+    @Autowired
+    private IIvrTaskTemplateScriptService iIvrTaskTemplateScriptService;
+    @Autowired
+    private IvrTaskTemplateTargetoptionMapper serviceTaskScriptTargetoptionMapper;
 
     @Autowired
     private ISvyTaskTemplateService svyTaskTemplateService;
-
     @Autowired
-    private IIvrTaskTemplateScriptService iIvrTaskTemplateScriptService;
+    private ISvyLibTemplateScriptService svyLibTemplateScriptService;
+    @Autowired
+    private ISvyLibTemplateTargetoptionService svyLibTemplateTargetoptionService;
+
 
     @Autowired
     private IServiceOutPathService iServiceOutPathService;
@@ -98,9 +102,6 @@
 
     @Value("${ASRCallBackPath}")
     private String ASRCallBackPath;
-
-    @Autowired
-    private SendService sendService;
 
     @Value("${hangup}")
     private String hangup;
@@ -125,6 +126,7 @@
 
     @Value("${phoneUpEveryHour}")
     private Integer phoneUpEveryHour;
+
     @Value("${phoneEndHour}")
     private Integer phoneEndHour;
 
@@ -251,7 +253,36 @@
     @Override
     public List<ServiceSubtask> patItem(ServiceSubtaskVO serviceSubtaskVO) {
         List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);
-        return selectServiceSubtaskList;
+        List<ServiceSubtask> serviceSubtaskList = new ArrayList<>();
+        //鑾峰彇鍒嗘暟
+        for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
+            //璁$畻鎮h�呯殑鍒嗘暟
+            if (serviceSubtask.getScore() == null || BigDecimal.ZERO.equals(serviceSubtask.getScore())) {
+                //濡傛灉涓虹┖鐨勮瘽锛屽幓detail閲屾嬁鍒版瘡涓鐨勯�夐」鍒嗭紝濡傛灉鏄綔绛旈锛岀洿鎺ユ嬁棰樼洰鍒嗭紙鍓嶉锛岃妯℃澘鏄垎鏁扮被鍨嬶級
+                Map<String, Object> map = getScore(serviceSubtask, serviceSubtaskVO.getDetailResult());
+                serviceSubtask.setScore((BigDecimal) map.get("score"));
+                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                if ((Boolean) map.get("isExist") == true) {
+                    //娴嬭瘯瀹屽垹闄わ紙搴斾粯娴嬭瘯鐢ㄧ殑锛�
+                    serviceSubtaskList.add(serviceSubtask);
+                }
+            } else {
+                //娴嬭瘯瀹屽垹闄わ紙搴斾粯娴嬭瘯鐢ㄧ殑锛�
+                if (!StringUtils.isEmpty(serviceSubtaskVO.getDetailResult())) {
+                    ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();
+                    serviceSubtaskDetail.setSubId(serviceSubtask.getId());
+                    List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(serviceSubtaskDetail);
+                    for (ServiceSubtaskDetail ssd : serviceSubtaskDetails) {
+                        if (ssd.getAsrtext().equals(serviceSubtaskVO.getDetailResult())) {
+                            serviceSubtaskList.add(serviceSubtask);
+                        }
+                    }
+                }else {
+                    serviceSubtaskList.add(serviceSubtask);
+                }
+            }
+        }
+        return serviceSubtaskList;
     }
 
     @Override
@@ -490,6 +521,16 @@
                     }
                     if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)
                         serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
+
+                    //鐢熸垚澶栭摼鍦板潃
+                    String outPath = null;
+                    if (serviceTaskVO.getType().equals("1"))
+                        outPath = getOutPath(serviceSubtask.getPhone(), serviceSubtask.getTaskid(), serviceSubtask.getTaskName(), serviceSubtask.getPatid(), 1);
+                    else if (serviceTaskVO.getType().equals("2"))
+                        outPath = getOutPath(serviceSubtask.getPhone(), serviceSubtask.getTaskid(), serviceSubtask.getTaskName(), serviceSubtask.getPatid(), 2);
+                    else if (serviceTaskVO.getType().equals("3"))
+                        outPath = getOutPath(serviceSubtask.getPhone(), serviceSubtask.getTaskid(), serviceSubtask.getTaskName(), serviceSubtask.getPatid(), 3);
+                    serviceSubtask.setOutPath(outPath);
                     serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
                     serviceSubtask.getId().intValue();
                 }
@@ -604,6 +645,15 @@
                     serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
                     serviceSubtask.setVisitTime(patTaskRelevance.getVisitTime());
                     serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));
+                    //鐢熸垚澶栭摼鍦板潃
+                    String outPath = null;
+                    if (serviceTaskVO.getType().equals("1"))
+                        outPath = getOutPath(serviceSubtask.getPhone(), serviceSubtask.getTaskid(), serviceSubtask.getTaskName(), serviceSubtask.getPatid(), 1);
+                    else if (serviceTaskVO.getType().equals("2"))
+                        outPath = getOutPath(serviceSubtask.getPhone(), serviceSubtask.getTaskid(), serviceSubtask.getTaskName(), serviceSubtask.getPatid(), 2);
+                    else if (serviceTaskVO.getType().equals("3"))
+                        outPath = getOutPath(serviceSubtask.getPhone(), serviceSubtask.getTaskid(), serviceSubtask.getTaskName(), serviceSubtask.getPatid(), 3);
+
                     if (patTaskRelevance.getIsoperation() != null) {
                         if (patTaskRelevance.getIsoperation() == 2) serviceSubtask.setUpdateTime(new Date());
                         serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
@@ -2009,7 +2059,6 @@
     }
 
 
-
     private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList) {
         log.error("-------------serviceSubtaskList鐨勫�间负锛歿}", serviceSubtaskList);
         ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
@@ -2173,4 +2222,172 @@
         int remainingCalls = (int) (remainingHours * phoneUpEveryHour);
         return remainingCalls;
     }
+
+    private String getOutPath(String phone, Long tid, String taskName, Long pId, Integer type) {
+        //瀵箄rl涓袱涓弬鏁板姞瀵�
+        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
+        String taskId = rsaPublicKeyExample.encryptedData(tid.toString(), pub_key);
+        String outpath = null;
+        try {
+            String patid = rsaPublicKeyExample.encryptedData(pId.toString(), pub_key);
+            SendMagParam sendMagParam = new SendMagParam();
+            sendMagParam.setType("4");
+            if (type == 1) {
+                //闅忚
+                ServiceOutPath serviceOutPath = new ServiceOutPath();
+                serviceOutPath.setParam1(taskId);
+                serviceOutPath.setParam2(patid);
+                serviceOutPath.setCreateTime(new Date());
+                serviceOutPath.setType(1);
+                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
+                //杞垚16杩涘埗
+                String format = String.format("%03X", serviceOutPath.getId()) + RandomStringGenerator.generateRandomString();
+                serviceOutPath.setRadix(format);
+                outpath = localIP + ":" + req_path + "/sf?p=" + format;
+                serviceOutPath.setUpdateTime(new Date());
+                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
+                sendMagParam.setPhone(phone);
+                sendMagParam.setUrl(outpath);
+                sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "   濉啓銆傛劅璋㈡偍閰嶅悎锛�");
+            } else if (type == 2) {
+                //闂埜锛堥棶棰橈級
+                ServiceOutPath serviceOutPath = new ServiceOutPath();
+                serviceOutPath.setParam1(taskId);
+                serviceOutPath.setParam2(patid);
+                serviceOutPath.setParam3(taskName);
+                serviceOutPath.setCreateTime(new Date());
+                serviceOutPath.setType(2);
+                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
+                String format = String.format("%03X", serviceOutPath.getId()) + RandomStringGenerator.generateRandomString();
+                serviceOutPath.setRadix(format);
+                serviceOutPath.setUpdateTime(new Date());
+                outpath = localIP + ":" + req_path + "/wt?p=" + format;
+                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
+
+//                                sendMagParam.setUrl(ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "&param5=false");
+                sendMagParam.setPhone(phone);
+                sendMagParam.setUrl(outpath);
+                sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "   濉啓銆傛劅璋㈡偍閰嶅悎锛�");
+                log.info("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�,{}", sendMagParam.getUrl());
+            } else if (type == 3) {
+                //瀹f暀
+                ServiceOutPath serviceOutPath = new ServiceOutPath();
+                serviceOutPath.setParam1(taskId);
+                serviceOutPath.setParam2(patid);
+                serviceOutPath.setParam3(taskName);
+                serviceOutPath.setCreateTime(new Date());
+                serviceOutPath.setType(3);
+                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
+                String format = String.format("%03X", serviceOutPath.getId()) + RandomStringGenerator.generateRandomString();
+                serviceOutPath.setRadix(format);
+                serviceOutPath.setUpdateTime(new Date());
+                outpath = localIP + ":" + req_path + "/xj?p=" + format;
+                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
+                sendMagParam.setPhone(phone);
+                sendMagParam.setUrl(outpath);
+                sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
+                log.info("-----------sendMagParam鐨勫�间负锛歿}", sendMagParam);
+            }
+        } catch (Exception e) {
+            log.error("鐢熸垚澶辫触浜嗭細{}", e.getMessage());
+        }
+        return outpath;
+    }
+
+    private Map<String, Object> getScore(ServiceSubtask serviceSubtask, String detailResult) {
+        Map<String, Object> map = new HashMap<>();
+        Boolean isExist = false;
+        //缁熻鎬诲垎
+        BigDecimal bigDecimal = BigDecimal.ZERO;
+        if (serviceSubtask.getScore() != null && !BigDecimal.ZERO.equals(serviceSubtask.getScore())) {
+            //濡傛灉鏈夊垎鏁帮紝鐩存帴杩斿洖
+            map.put("score", serviceSubtask.getScore());
+            //isExist搴斾粯娴嬭瘯鐢ㄧ殑锛屾祴璇曞畬鍚庡垹闄�
+            map.put("isExist", true);
+            return map;
+        }
+
+        if (serviceSubtask.getScore() == null || BigDecimal.ZERO.equals(serviceSubtask.getScore())) {
+            //濡傛灉涓虹┖鐨勮瘽锛屽幓detail閲屾嬁鍒版瘡涓鐨勯�夐」鍒嗭紝濡傛灉鏄綔绛旈锛岀洿鎺ユ嬁棰樼洰鍒嗭紙鍓嶉锛岃妯℃澘鏄垎鏁扮被鍨嬶級
+            ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+            if (serviceTask.getType().equals("1")) {
+                //濡傛灉鏄満鍣ㄤ汉璇煶
+                IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceTask.getTemplateid());
+                //鍒ゆ柇鏄笉鏄瘎鍒�
+                if (StringUtils.isNotEmpty(ivrTaskTemplate.getScoreType()) && ivrTaskTemplate.getScoreType().equals("1")) {
+                    ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();
+                    serviceSubtaskDetail.setSubId(serviceSubtask.getId());
+                    List<ServiceSubtaskDetail> serviceSubtaskDetailList = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(serviceSubtaskDetail);
+                    for (ServiceSubtaskDetail serviceSubtaskDetail1 : serviceSubtaskDetailList) {
+                        Long scriptid = serviceSubtaskDetail1.getScriptid();
+                        IvrTaskTemplateScript ivrTaskTemplateScript = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptByID(scriptid);
+                        if (StringUtils.isNotEmpty(ivrTaskTemplateScript.getScriptType())) {
+                            if (ivrTaskTemplateScript.getScriptType().equals("3") || ivrTaskTemplateScript.getScriptType().equals("4")) {
+                                if (StringUtils.isNotEmpty(serviceSubtaskDetail1.getAsrtext())) {
+                                    //涓嶆槸閫夋嫨棰橈紝鐩存帴鎷块鐩垎
+                                    bigDecimal = bigDecimal.add(ivrTaskTemplateScript.getScore());
+                                }
+                            } else if (ivrTaskTemplateScript.getScriptType().equals("1") || ivrTaskTemplateScript.getScriptType().equals("2")) {
+                                IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption = new IvrTaskTemplateTargetoption();
+                                ivrTaskTemplateTargetoption.setScriptid(scriptid);
+                                List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = serviceTaskScriptTargetoptionMapper.selectIvrTaskTemplateTargetoptionList(ivrTaskTemplateTargetoption);
+                                //鑾峰彇閫夐」锛岀敤閫変腑鐨勫�煎幓閫夐」閲屽尮閰嶏紝鎷垮埌閫夐」鍒�
+                                for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption1 : ivrTaskTemplateTargetoptions) {
+                                    if (ivrTaskTemplateTargetoption1.getTargetvalue().equals(serviceSubtaskDetail1.getMatchedtext())) {
+                                        bigDecimal = bigDecimal.add(ivrTaskTemplateTargetoption1.getScore());
+                                        //娴嬭瘯瀹屽垹闄�
+                                        if (StringUtils.isEmpty(detailResult) || ivrTaskTemplateTargetoption1.getTargetvalue().equals(detailResult)) {
+                                            isExist = true;
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            if (serviceTask.getType().equals("2")) {
+                //濡傛灉鏄棶鍗�
+                SvyTaskTemplate svyTaskTemplate = svyTaskTemplateService.selectSvyTaskTemplateBySvyid(serviceTask.getTemplateid());
+                //鍒ゆ柇鏄笉鏄瘎鍒�
+                if (StringUtils.isNotEmpty(svyTaskTemplate.getScoreType()) && svyTaskTemplate.getScoreType().equals("1")) {
+                    ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();
+                    serviceSubtaskDetail.setSubId(serviceSubtask.getId());
+                    List<ServiceSubtaskDetail> serviceSubtaskDetailList = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(serviceSubtaskDetail);
+                    for (ServiceSubtaskDetail serviceSubtaskDetail1 : serviceSubtaskDetailList) {
+                        Long scriptid = serviceSubtaskDetail1.getScriptid();
+                        SvyLibTemplateScript svyLibTemplateScript = svyLibTemplateScriptService.selectSvyLibTemplateScriptByTopicid(scriptid);
+                        if (StringUtils.isNotEmpty(svyLibTemplateScript.getScriptType())) {
+                            if (svyLibTemplateScript.getScriptType().equals("3") || svyLibTemplateScript.getScriptType().equals("4")) {
+                                if (StringUtils.isNotEmpty(serviceSubtaskDetail1.getAsrtext())) {
+                                    //涓嶆槸閫夋嫨棰橈紝鐩存帴鎷块鐩垎
+                                    bigDecimal = bigDecimal.add(svyLibTemplateScript.getScore());
+                                }
+                            } else if (svyLibTemplateScript.getScriptType().equals("1") || svyLibTemplateScript.getScriptType().equals("2")) {
+                                SvyLibTemplateTargetoption svyLibTemplateTargetoption = new SvyLibTemplateTargetoption();
+                                svyLibTemplateTargetoption.setScriptid(scriptid);
+                                List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateTargetoptionService.selectSvyLibTemplateTargetoptionList(svyLibTemplateTargetoption);
+                                //鑾峰彇閫夐」锛岀敤閫変腑鐨勫�煎幓閫夐」閲屽尮閰嶏紝鎷垮埌閫夐」鍒�
+                                for (SvyLibTemplateTargetoption svyLibTemplateTargetoption1 : svyLibTemplateTargetoptions) {
+                                    if (svyLibTemplateTargetoption1.getOptioncontent().equals(serviceSubtaskDetail1.getAsrtext())) {
+                                        bigDecimal = bigDecimal.add(svyLibTemplateTargetoption1.getScore());
+                                        //娴嬭瘯瀹屽垹闄�
+                                        if (StringUtils.isEmpty(detailResult) || svyLibTemplateTargetoption1.getOptioncontent().equals(detailResult)) {
+                                            isExist = true;
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+
+            }
+
+        }
+        map.put("score", bigDecimal);
+        map.put("isExist", isExist);
+        return map;
+    }
+
 }

--
Gitblit v1.9.3