From b5a1835f3ed1763b3d0b66f8ccff0bbd4d67dd5b Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 28 四月 2025 11:28:59 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java |  372 +++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 293 insertions(+), 79 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 d22dc99..47d2c90 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -69,6 +69,9 @@
     private IServiceTaskdiagService serviceTaskdiagService;
 
     @Autowired
+    private IServiceTaskoperService serviceTaskoperService;
+
+    @Autowired
     private RedisCache redisCache;
 
     @Autowired
@@ -88,6 +91,12 @@
 
     @Autowired
     private FtpService ftpService;
+
+    @Autowired
+    private PatMedInhospMapper patMedInhospMapper;
+
+    @Autowired
+    private PatArchiveMapper patArchiveMapper;
 
     @Value("${pri_key}")
     private String pri_key;
@@ -253,9 +262,7 @@
     @Override
     public List<ServiceSubtask> patItem(ServiceSubtaskVO serviceSubtaskVO) {
         List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);
-        //鏍规嵁鍑洪櫌 鏃堕棿鍊掑簭
-        List<ServiceSubtask> sortedServiceSubtaskList = selectServiceSubtaskList.stream().sorted(Comparator.comparing(ServiceSubtask::getEndtime, Comparator.nullsLast(Comparator.naturalOrder())).reversed()).collect(Collectors.toList());
-        return sortedServiceSubtaskList;
+        return selectServiceSubtaskList;
     }
 
     @Override
@@ -286,7 +293,7 @@
             if (serviceSubtask.getSendstate() == 4L) wzx = wzx + 1;
             else if (serviceSubtask.getSendstate() != 4L) ysf = ysf + 1;
             if (serviceSubtask.getSendstate() == 5L) fssb = fssb + 1;
-            if (serviceSubtask.getSendstate() == 3L) yfs = yfs + 1;
+            if (serviceSubtask.getSendstate() >= 3L || serviceSubtask.getSendstate() == 1L) yfs = yfs + 1;
             if (serviceSubtask.getSendstate() == 1L) blq = blq + 1;
             if (serviceSubtask.getExcep().equals("1")) yc = yc + 1;
         }
@@ -313,6 +320,49 @@
     }
 
     /**
+     * 鍐嶆鏂板鍗曚竴浠诲姟锛堥殢璁匡級
+     *
+     * @param serviceSubtask 鍐嶆鏂板鍗曚竴浠诲姟锛堥殢璁匡級
+     * @return 缁撴灉
+     */
+    @Override
+    public String addSubTaskAgain(ServiceSubtask serviceSubtask) {
+        ServiceSubtask serviceSubtask1 = selectServiceSubtaskById(serviceSubtask.getId());
+        PatMedInhosp patMedInhosp = new PatMedInhosp();
+        patMedInhosp.setPatid(serviceSubtask1.getPatid());
+        patMedInhosp.setInhospstate("0");
+        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask1.getPatid());
+
+        if (patMedInhospList.size() > 0) {
+            serviceSubtask1.setIsVisitAgain(2);
+            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
+            return "鏃犻渶鍐嶆闅忚锛屾偅鑰呭啀鍏ラ櫌浜�";
+        } else if (serviceSubtask1.getSendstate() == 4L) {
+            serviceSubtask1.setIsVisitAgain(2);
+            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
+            return "鏃犻渶鍐嶆闅忚锛屼换鍔¤鏍囪涓嶅湪鎵ц";
+        } else if (patArchive.getNotrequiredFlag().equals("1")) {
+            serviceSubtask1.setIsVisitAgain(2);
+            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
+            return "鏃犻渶鍐嶆闅忚锛屾偅鑰呰鏍囪涓嶉渶瑕佽鏈嶅姟";
+        }
+        //鏂板鍐嶆闅忚浠诲姟
+        ServiceSubtask serviceSubtask2 = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtask.class);
+        serviceSubtask2.setId(null);
+        serviceSubtask2.setVisitCount(serviceSubtask1.getVisitCount() + 1);
+        serviceSubtask2.setSendstate(2L);
+        int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask2);
+        if (i == 1) {
+            //鏂板鎴愬姛鍚庯紝闇�瑕佸皢涔嬪墠鐨勪换鍔¤缃负涓嶈鍐嶉殢璁匡紙闃叉閲嶅鐐癸紝鐒跺悗閲嶅鐢熸垚锛�
+            serviceSubtask1.setIsVisitAgain(2);
+            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
+            return "鍐嶆闅忚浠诲姟鍒涘缓鎴愬姛";
+        }
+        return "鍐嶆闅忚浠诲姟鍒涘缓澶辫触锛屽啀璇锋閲嶈瘯";
+    }
+
+    /**
      * 淇敼鍗曚竴浠诲姟锛堥殢璁匡級
      *
      * @param serviceSubtask 鍗曚竴浠诲姟锛堥殢璁匡級
@@ -321,6 +371,8 @@
     @Override
     public Boolean updateServiceSubtask(ServiceSubtask serviceSubtask) {
         serviceSubtask.setUpdateTime(DateUtils.getNowDate());
+        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 6)
+            serviceSubtask.setFinishtime(new Date());
         return serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
     }
 
@@ -371,26 +423,72 @@
             if (serviceTask.getSendState() == null) {
                 serviceTask.setSendState(1L);
                 serviceTaskVO.setSendState(1L);
+            } else {
+                serviceTask.setSendState(serviceTaskVO.getSendState());
             }
             if (StringUtils.isNotEmpty(serviceTaskVO.getLibtemplateid())) {
                 serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid());
                 serviceTask.setLibtemplatename(serviceTaskVO.getLibtemplatename());
             }
-            serviceTask.setTemplateid(tempid);
-            serviceTask.setTemplatename(tempName);
+            if (serviceTaskVO.getTemplateid() != null) {
+                serviceTask.setTemplateid(serviceTaskVO.getTemplateid());
+                serviceTask.setTemplatename(serviceTaskVO.getTemplatename());
+            } else {
+                serviceTask.setTemplateid(tempid);
+                serviceTask.setTemplatename(tempName);
+            }
             serviceTask.setLeaveldeptcodes(serviceTaskVO.getLeaveldeptcodes());
             serviceTask.setLeavehospitaldistrictcode(serviceTask.getLeavehospitaldistrictcode());
-            if (serviceTaskVO.getLongTask() == 1L) {
-                serviceTask.setSendState(2L);
-                serviceTaskService.insertServiceTask(serviceTask);
-                if (StringUtils.isEmpty(serviceTaskVO.getIcd10code())) {
+            if (serviceTaskVO.getLongTask() == 1) serviceTask.setSendState(2L);
+            serviceTask.setCreateTime(new Date());
+            serviceTask.setUpdateTime(new Date());
+            serviceTaskService.insertServiceTask(serviceTask);
+            log.error("----serviceTaskVO.getAppltype()鐨勫�间负锛歿}", serviceTaskVO.getAppltype());
+            if (StringUtils.isNotEmpty(serviceTaskVO.getAppltype())) {
+                if (serviceTaskVO.getAppltype().equals("3")) {
+                    ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
+                    serviceTaskdiag.setTaskId(serviceTask.getTaskid());
+                    serviceTaskdiag.setTaskName(serviceTask.getTaskName());
+                    serviceTaskdiag.setLongtask(0L);
+                    if (serviceTaskVO.getLongTask() == 1) serviceTaskdiag.setLongtask(1L);
+                    serviceTaskdiag.setIcd10code(serviceTaskVO.getIcd10code());
+                    serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name());
+                    serviceTaskdiag.setGuid(serviceTask.getGuid());
+                    serviceTaskdiag.setOrgid(serviceTask.getOrgid());
+                    serviceTaskdiag.setCreateTime(new Date());
+                    log.error("----serviceTaskdiag鐨勫�间负锛歿}", serviceTaskdiag);
+                    if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) {
+                        String[] Icd10codes = serviceTaskVO.getIcd10code().split(",");
+                        for (String icd10code : Icd10codes) {
+                            serviceTaskdiag.setIcd10code(icd10code);
+                            serviceTaskdiagService.insertServiceTaskdiag(serviceTaskdiag);
+                        }
+                    }
+                } else if (serviceTaskVO.getAppltype().equals("4")) {
+                    ServiceTaskoper serviceTaskoper = new ServiceTaskoper();
+                    serviceTaskoper.setOpcode(serviceTaskVO.getOpcode());
+                    serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());
+                    serviceTaskoper.setTaskId(serviceTask.getTaskid());
+                    serviceTaskoper.setTaskName(serviceTask.getTaskName());
+                    serviceTaskoper.setLongtask(0L);
+                    serviceTaskoper.setGuid(serviceTask.getGuid());
+                    serviceTaskoper.setOrgid(serviceTask.getOrgid());
+                    serviceTaskoper.setCreateTime(new Date());
+                    if (serviceTaskVO.getLongTask() == 1) serviceTaskoper.setLongtask(1L);
+                    if (StringUtils.isNotEmpty(serviceTaskVO.getOpcode())) {
+                        String[] opcodes = serviceTaskVO.getOpcode().split(",");
+                        for (String opcode : opcodes) {
+                            serviceTaskoper.setOpcode(opcode);
+                            log.error("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
+                            serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
+                        }
+                    }
+
+                } else {
                     ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
                     serviceTaskdept.setTaskId(serviceTask.getTaskid());
                     serviceTaskdept.setTaskName(serviceTask.getTaskName());
-                    serviceTaskdept.setLongtask(1L);
-                    serviceTaskdept.setGuid(serviceTask.getGuid());
-                    serviceTaskdept.setOrgid(serviceTask.getOrgid());
-                    serviceTaskdept.setOrgid(serviceTask.getOrgid());
+                    serviceTaskdept.setLongtask(0L);
                     if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
                     if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
                         String[] deptcodes = serviceTaskVO.getDeptcode().split(",");
@@ -410,25 +508,12 @@
                             serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);
                         }
                     }
-
-                } else {
-                    ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
-                    serviceTaskdiag.setTaskId(serviceTask.getTaskid());
-                    serviceTaskdiag.setTaskName(serviceTask.getTaskName());
-                    serviceTaskdiag.setLongtask(1L);
-                    serviceTaskdiag.setGuid(serviceTask.getGuid());
-                    serviceTaskdiag.setOrgid(serviceTask.getOrgid());
-                    if (serviceTaskVO.getLongTask() == 1) serviceTaskdiag.setLongtask(1L);
-                    serviceTaskdiagService.insertServiceTaskdiag(serviceTaskdiag);
-
                 }
-                if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1 && serviceTaskVO.getPatCycle() == 0L) {
-                    Map<String, Integer> map = new HashMap<>();
-                    map.put("taskId", serviceTask.getTaskid().intValue());
-                    return map;
-                }
-            } else {
-                serviceTaskService.insertServiceTask(serviceTask);
+            }
+            if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1 && serviceTaskVO.getPatCycle() == 0L) {
+                Map<String, Integer> map = new HashMap<>();
+                map.put("taskId", serviceTask.getTaskid().intValue());
+                return map;
             }
 
             //灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓�
@@ -464,6 +549,8 @@
                     serviceSubtask.setEndtime(patTaskRelevance.getEndtime());
                     serviceSubtask.setNurseId(patTaskRelevance.getNurseId());
                     serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
+                    serviceSubtask.setCreateBy(serviceTask.getCreateBy());
+                    serviceSubtask.setUpdateBy(serviceTask.getCreateBy());
                     if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)
                         serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
                     serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
@@ -477,53 +564,156 @@
                 serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
             //淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1
             ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid());
-            long l = serviceTask1.getStopState() + 1;
-            serviceTask.setStopState(l);
+//            long l = serviceTask1.getStopState() + 1;
+//            serviceTask.setStopState(l);
+            //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎
+            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+            serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());
+            serviceSubtaskVO.setSendstate(2L);
+            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+            serviceSubtaskVO.setSendstate(1L);
+            List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
+                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1);
+            } else {
+                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;
+            }
+            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
+                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+                    log.error("insertOrUpdateTask闇�瑕佺Щ闄ょ殑subId涓猴細{}", serviceSubtask.getId().toString());
+                    serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());
+                    redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString());
+                    redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString());
+                    redisCache.removeElementFromList("cache-1", serviceSubtask.getId().toString());
+                    redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString());
+                    redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString());
+                    redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString());
+                }
+            }
+
             if (serviceTaskVO.getLibtemplateid() != null)
                 serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid().toString());
             serviceTask.setTemplateid(serviceTaskVO.getTemplateid());
             serviceTask.setLongTask(serviceTaskVO.getLongTask());
+            serviceTask.setUpdateTime(new Date());
             serviceTaskService.updateServiceTask(serviceTask);
-            ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
-            serviceTaskdept.setTaskId(serviceTask.getTaskid());
-            serviceTaskdept.setTaskName(serviceTask.getTaskName());
-            serviceTaskdept.setLongtask(0L);
-            if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
-            if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
-                String[] deptcodes = serviceTaskVO.getDeptcode().split(",");
-                for (String deptCode : deptcodes) {
-                    serviceTaskdept.setDeptCode(deptCode);
-                    serviceTaskdept.setDeptType("1");
-                    serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
+            if (serviceTaskVO.getAppltype().equals("1") || serviceTaskVO.getAppltype().equals("2")) {
 
-                    ServiceTaskdept st = new ServiceTaskdept();
-                    st.setDeptCode(deptCode);
-                    st.setTaskId(serviceTask.getTaskid());
-                    List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptService.selectServiceTaskdeptList(st);
-                    if (CollectionUtils.isEmpty(serviceTaskdepts)) {
-                        serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);
-                    } else {
-                        serviceTaskdeptService.updateServiceTaskdept(serviceTaskdept);
+
+                if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
+                    String[] deptcodes = serviceTaskVO.getDeptcode().split(",");
+                    for (String deptCode : deptcodes) {
+                        ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
+                        serviceTaskdept.setTaskId(serviceTask.getTaskid());
+                        serviceTaskdept.setTaskName(serviceTask.getTaskName());
+                        serviceTaskdept.setLongtask(0L);
+                        serviceTaskdept.setOrgid(serviceTaskVO.getOrgid());
+                        if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
+                        serviceTaskdept.setDeptCode(deptCode);
+                        serviceTaskdept.setDeptType("1");
+                        serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
+                        ServiceTaskdept st = new ServiceTaskdept();
+                        st.setDeptCode(deptCode);
+                        st.setTaskId(serviceTask.getTaskid());
+                        List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptService.selectServiceTaskdeptList(st);
+                        if (CollectionUtils.isEmpty(serviceTaskdepts)) {
+                            serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);
+                        } else {
+                            serviceTaskdeptService.updateServiceTaskdept(serviceTaskdept);
+                        }
                     }
                 }
-            }
-            if (StringUtils.isNotEmpty(serviceTaskVO.getLeavehospitaldistrictcode())) {
-                String[] leavehospitaldistrictcodes = serviceTaskVO.getLeavehospitaldistrictcode().split(",");
-                for (String districtcode : leavehospitaldistrictcodes) {
-                    serviceTaskdept.setDeptCode(districtcode);
-                    serviceTaskdept.setDeptType("2");
-                    serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
-                    //鍏堥�氳繃浠诲姟ID銆侀儴闂╟ode,鍒ゆ柇ServiceTaskdept鏄惁瀛樺湪锛屼笉瀛樺湪鍒欐柊澧烇紝瀛樺湪鍒欎慨鏀�
-                    ServiceTaskdept st = new ServiceTaskdept();
-                    st.setDeptCode(districtcode);
-                    st.setTaskId(serviceTask.getTaskid());
-                    List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptService.selectServiceTaskdeptList(st);
-                    if (CollectionUtils.isEmpty(serviceTaskdepts)) {
-                        serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);
-                    } else {
-                        serviceTaskdeptService.updateServiceTaskdept(serviceTaskdept);
+                if (StringUtils.isNotEmpty(serviceTaskVO.getLeavehospitaldistrictcode())) {
+                    String[] leavehospitaldistrictcodes = serviceTaskVO.getLeavehospitaldistrictcode().split(",");
+                    for (String districtcode : leavehospitaldistrictcodes) {
+                        ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
+                        serviceTaskdept.setTaskId(serviceTask.getTaskid());
+                        serviceTaskdept.setTaskName(serviceTask.getTaskName());
+                        serviceTaskdept.setLongtask(0L);
+                        serviceTaskdept.setOrgid(serviceTaskVO.getOrgid());
+                        if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
+                        serviceTaskdept.setDeptCode(districtcode);
+                        serviceTaskdept.setDeptType("2");
+                        serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
+                        //鍏堥�氳繃浠诲姟ID銆侀儴闂╟ode,鍒ゆ柇ServiceTaskdept鏄惁瀛樺湪锛屼笉瀛樺湪鍒欐柊澧烇紝瀛樺湪鍒欎慨鏀�
+                        ServiceTaskdept st = new ServiceTaskdept();
+                        st.setDeptCode(districtcode);
+                        st.setTaskId(serviceTask.getTaskid());
+                        List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptService.selectServiceTaskdeptList(st);
+                        if (CollectionUtils.isEmpty(serviceTaskdepts)) {
+                            serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);
+                        } else {
+                            serviceTaskdeptService.updateServiceTaskdept(serviceTaskdept);
+                        }
                     }
                 }
+            } else if (serviceTaskVO.getAppltype().equals("3")) {
+                ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
+                serviceTaskdiag.setTaskId(serviceTask.getTaskid());
+                serviceTaskdiag.setTaskName(serviceTask.getTaskName());
+                if (StringUtils.isEmpty(serviceTaskVO.getIcd10code())) {
+                    throw new BaseException("鐤剧梾缂栫爜涓虹┖");
+                }
+//                serviceTaskdiag.setIcd10code(serviceTaskVO.getIcd10code());
+
+                serviceTaskdiag.setLongtask(1L);
+                serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name());
+                serviceTaskdiag.setGuid(serviceTask.getGuid());
+                serviceTaskdiag.setOrgid(serviceTask.getOrgid());
+                serviceTaskdiag.setUpdateTime(new Date());
+                if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) {
+                    String[] icd10codes = serviceTaskVO.getIcd10code().split(",");
+                    for (String icdcode : icd10codes) {
+                        //鍏堟煡璇竴涓嬫槸鍚﹀瓨鍦�
+                        ServiceTaskdiag serviceTaskdiag2 = new ServiceTaskdiag();
+                        serviceTaskdiag2.setTaskId(serviceTaskVO.getTaskid());
+                        serviceTaskdiag2.setIcd10code(icdcode);
+                        List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagService.selectServiceTaskdiagList(serviceTaskdiag2);
+                        serviceTaskdiag.setIcd10code(icdcode);
+                        log.error("----serviceTaskdiag鏇存柊鐨勫�间负锛歿}", serviceTaskdiag);
+                        if (CollectionUtils.isNotEmpty(serviceTaskdiags)) {
+                            serviceTaskdiag.setId(serviceTaskdiags.get(0).getId());
+                            serviceTaskdiagService.updateServiceTaskdiag(serviceTaskdiag);
+                        } else {
+                            serviceTaskdiagService.insertServiceTaskdiag(serviceTaskdiag);
+                        }
+                    }
+                }
+
+
+            } else if (serviceTaskVO.getAppltype().equals("4")) {
+                ServiceTaskoper serviceTaskoper = new ServiceTaskoper();
+                if (StringUtils.isEmpty(serviceTaskVO.getOpcode())) {
+                    throw new BaseException("鎵嬫湳缂栫爜涓虹┖");
+                }
+//                serviceTaskoper.setOpcode(serviceTaskVO.getOpcode());
+                serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());
+                serviceTaskoper.setTaskId(serviceTask.getTaskid());
+                serviceTaskoper.setTaskName(serviceTask.getTaskName());
+                serviceTaskoper.setLongtask(1L);
+                serviceTaskoper.setGuid(serviceTask.getGuid());
+                serviceTaskoper.setOrgid(serviceTask.getOrgid());
+                serviceTaskoper.setCreateTime(new Date());
+                if (StringUtils.isNotEmpty(serviceTaskVO.getOpcode())) {
+                    String[] opcodes = serviceTaskVO.getOpcode().split(",");
+                    for (String opcode : opcodes) {
+                        //鍏堟煡璇竴涓嬫槸鍚﹀瓨鍦�
+                        ServiceTaskoper serviceTaskoper2 = new ServiceTaskoper();
+                        serviceTaskoper2.setTaskId(serviceTaskVO.getTaskid());
+                        serviceTaskoper2.setOpcode(serviceTaskVO.getOpcode());
+                        List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(serviceTaskoper2);
+
+                        serviceTaskoper.setOpcode(opcode);
+                        log.error("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
+                        if (CollectionUtils.isNotEmpty(serviceTaskopers)) {
+                            serviceTaskoper.setId(serviceTaskopers.get(0).getId());
+                            serviceTaskoperService.updateServiceTaskoper(serviceTaskoper);
+                        } else {
+                            serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
+                        }
+                    }
+                }
+
             }
             if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {
                 IvrTaskTemplate ivrTaskTemplate = new IvrTaskTemplate();
@@ -569,9 +759,12 @@
                     serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));
                     if (patTaskRelevance.getIsoperation() != null) {
                         if (patTaskRelevance.getIsoperation() == 2)
-                            serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
+                            serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
+                        serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
                         if (patTaskRelevance.getIsoperation() == 1) {
                             serviceSubtask.setSendstate(1L);
+                            serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
+                            serviceSubtask.setCreateBy(serviceTask.getUpdateBy());
                             serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
                         }
                         if (patTaskRelevance.getIsoperation() == 3)
@@ -986,6 +1179,8 @@
                 double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
                 serviceSubtask.setScore(BigDecimal.valueOf(score));
                 serviceSubtask.setFinishtime(new Date());
+                serviceSubtask.setUpdateTime(new Date());
+                log.error("鍏堟洿鏂颁竴涓嬪垎鏁�,鐢佃瘽鐨剆erviceSubtask鐨勫�间负锛歿}", serviceSubtask);
                 serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                 Map<String, String> map = delRedisValue(null, id.toString());
                 if (ObjectUtils.isNotEmpty(map)) redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
@@ -1511,7 +1706,7 @@
             }
         }
         if (existList.size() != 0) redisCache.setCacheListRight("cache-exist", existList);
-        log.error("-----------瀹為檯鎷夊彇鐨勭數璇濇暟鎹噺锛歿}", pullTaskVOList.size());
+        log.error("-----------瀹為檯鎷夊彇鐨勭數璇濇暟鎹噺锛歿}", CollectionUtils.isNotEmpty(pullTaskVOList) ? pullTaskVOList.size() : null);
         return pullTaskVOList;
     }
 
@@ -1534,6 +1729,14 @@
                     log.error("璇ubId鏈夐棶棰橈紝鍦ㄨ〃涓煡璇笉鍒帮細{}", subId);
                     continue;
                 }
+                if (StringUtils.isEmpty(serviceSubtask.getPhone())) {
+                    serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
+                    serviceSubtask.setSendstate(4L);
+                    serviceSubtask.setResult("error");
+                    serviceSubtask.setFinishtime(new Date());
+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                    continue;
+                }
                 ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
                 IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());
                 if (ObjectUtils.isEmpty(ivrTaskTemplate)) continue;
@@ -1550,7 +1753,10 @@
                     }
                 }
                 //濡傛灉ivrTaskTemplateScript涓虹┖锛屼篃灏辨病鏈夊線涓嬫墽琛岀殑蹇呰浜�
-                if (ObjectUtils.isEmpty(ivrTaskTemplateScript)) return null;
+                if (ObjectUtils.isEmpty(ivrTaskTemplateScript)) {
+                    log.error("---------杩欎釜ivrTaskTemplate.getId()鐨勯棶棰樹负绌猴細{}", ivrTaskTemplate.getId());
+                    continue;
+                }
                 //鑾峰彇閫氶厤绗﹀尮閰嶈繃鍚庣殑闂
                 String scrContent = getObject(serviceSubtask, ivrTaskTemplateScript.getIvrtext());
                 String kcb = serviceTask.getKcb() + "," + scrContent;
@@ -1889,6 +2095,9 @@
             serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
             serviceSubtask.setSendstate(6L);
             serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid()));
+            serviceSubtask.setFinishtime(new Date());
+            serviceSubtask.setUpdateTime(new Date());
+            log.error("鐢佃瘽鎷ㄦ墦宸插畬鎴恠erviceSubtask鐨勫�间负:{}", serviceSubtask);
             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
             //涓嬭浇鏂囦欢
             ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
@@ -1901,10 +2110,11 @@
             serviceSubtask.setRemark("鐢佃瘽鎺ラ�氭垚鍔燂紝鎮h�呮嫆缁濋殢璁�");
             serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid()));
             serviceSubtask.setSendstate(6L);
+            serviceSubtask.setFinishtime(new Date());
             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-            int startIndex = phoneCallRecordVO.getRecord_path().indexOf("voice") + "voice".length() + 1;  // 鍔�1鏄烦杩�/绗﹀彿
-            int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf("/");
-            String result = phoneCallRecordVO.getRecord_path().substring(startIndex, endIndex);
+//            int startIndex = phoneCallRecordVO.getRecord_path().indexOf("voice") + "voice".length() + 1;  // 鍔�1鏄烦杩�/绗﹀彿
+//            int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf("/");
+//            String result = phoneCallRecordVO.getRecord_path().substring(startIndex, endIndex);
             //涓嬭浇鏂囦欢
             ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
             redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
@@ -2006,12 +2216,12 @@
                 serviceSubtaskStatistic.setYczs(serviceSubtaskStatistic.getYczs() + 1L);
             }
         }
-        //闅忚瀹屾垚鐜�=宸插彂閫�/闅忚鏁�
-        if (serviceSubtaskStatistic.getYfsCount() == 0 || CollectionUtils.isEmpty(serviceSubtaskList)) {
+        //闅忚瀹屾垚鐜�=宸插畬鎴�/搴旈殢璁块噺
+        if (serviceSubtaskStatistic.getYwcCount() == 0 || CollectionUtils.isEmpty(serviceSubtaskList)) {
             serviceSubtaskStatistic.setSfwcl("0");
         } else {
 //            BigDecimal multiply = BigDecimal.valueOf(serviceSubtaskStatistic.getYfsCount()).divide(BigDecimal.valueOf(serviceSubtaskList.size()), 2, BigDecimal.ROUND_HALF_UP);
-            BigDecimal multiply = new BigDecimal(serviceSubtaskStatistic.getYfsCount().toString()).divide(new BigDecimal(serviceSubtaskList.size() + ""), 2, BigDecimal.ROUND_HALF_UP);
+            BigDecimal multiply = new BigDecimal(serviceSubtaskStatistic.getYwcCount().toString()).divide(new BigDecimal(serviceSubtaskStatistic.getYsfCount().toString()), 2, BigDecimal.ROUND_HALF_UP);
             serviceSubtaskStatistic.setSfwcl(multiply.toString());
         }
 
@@ -2037,6 +2247,7 @@
             serviceSubtaskDetail.setTaskid(serviceSubtask1.getTaskid());
             serviceSubtaskDetail.setPatid(serviceSubtask1.getPatid());
         }
+        serviceSubtaskDetail.setTargetid(ivrTaskTemplateScriptVO.getTargetid() != null ? ivrTaskTemplateScriptVO.getTargetid().intValue() : null);
         serviceSubtaskDetail.setUuid(phoneCallReqYQVO.getUuid());
         serviceSubtaskDetail.setPhone(phoneCallReqYQVO.getPhone());
         serviceSubtaskDetail.setOperate(serviceSubtask.getCreateBy());
@@ -2051,12 +2262,13 @@
         serviceSubtaskDetail.setEndTime(System.currentTimeMillis());
         serviceSubtaskDetail.setSentEnd(1L);
         serviceSubtaskDetail.setTemplateid(ivrTaskTemplate.getId().toString());
-        serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId());
+        serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno());
         serviceSubtaskDetail.setQuestiontext(ivrTaskTemplateScriptVO.getIvrtext());
         serviceSubtaskDetail.setQuestionvoice(phoneCallReqYQVO.getRecordpath());
         serviceSubtaskDetail.setCategoryname(ivrTaskTemplateScriptVO.getScriptType());
         serviceSubtaskDetail.setTargetoptions(ivrTaskTemplateScriptVO.getTargetOptions());
         serviceSubtaskDetail.setExtemplateText(ivrTaskTemplateScriptVO.getExtemplateText());
+        serviceSubtaskDetail.setScriptid(ivrTaskTemplateScriptVO.getId());
 
         int i = 1;
         for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) {
@@ -2079,10 +2291,12 @@
         RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
         String taskId = rsaPublicKeyExample.encryptedData(serviceSubtask.getTaskid().toString(), pub_key);
         String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
+        String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
         ServiceOutPath serviceOutPath = new ServiceOutPath();
         serviceOutPath.setParam1(taskId);
         serviceOutPath.setParam2(patid);
         serviceOutPath.setCreateTime(new Date());
+        serviceOutPath.setParam6(subId);
         iServiceOutPathService.insertServiceOutPath(serviceOutPath);
         //杞垚16杩涘埗
         String format = String.format("%03X", serviceOutPath.getId());

--
Gitblit v1.9.3