From c7ef5f837fe90766574cee9d0eae9e89e34af263 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期四, 09 十月 2025 09:46:56 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java |  871 ++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 514 insertions(+), 357 deletions(-)

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 30ae035..710bae5 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
@@ -5,22 +5,21 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.gson.Gson;
 import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.dx.MessageSend;
 import com.ruoyi.common.enums.MsgLSEnum;
 import com.ruoyi.common.enums.ServiceFromEnum;
-import com.ruoyi.common.enums.VisitSendStateEnum;
 import com.ruoyi.common.enums.WxGZHEnum;
 import com.ruoyi.common.utils.HttpUtil;
 import com.ruoyi.common.utils.OkHttpExample;
 import com.ruoyi.common.utils.RSAPublicKeyExample;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.http.HttpUtils;
+import com.ruoyi.common.utils.sms.smsUtils;
 import com.ruoyi.quartz.service.ICollectHISService;
+import com.ruoyi.system.service.ISysConfigService;
 import com.smartor.common.LSHospTokenUtil;
 import com.smartor.domain.*;
-import com.smartor.mapper.HeLibraryMapper;
-import com.smartor.mapper.ServiceSubtaskMapper;
-import com.smartor.mapper.ServiceTaskMapper;
-import com.smartor.mapper.SysUserImportMapper;
+import com.smartor.mapper.*;
 import com.smartor.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
@@ -81,6 +80,9 @@
     private IHNGatherPatArchiveService ihnGatherPatArchiveService;
 
     @Autowired
+    private IServiceSLTDHealthcareRecordService serviceSLTDHealthcareRecordService;
+
+    @Autowired
     private SysUserImportMapper sysUserImportMapper;
 
     @Autowired
@@ -89,12 +91,20 @@
     @Autowired
     private ICollectHISService ichService;
 
+    @Autowired
+    private ISysConfigService configService;
 
     @Value("${localIP}")
     private String localIP;
 
     @Value("${xhsmsPath}")
     private String xhsmsPath;
+
+    @Value("${xhsmsAccount}")
+    private String xhsmsAccount;
+
+    @Value("${xhsmsPwd}")
+    private String xhsmsPwd;
 
     @Value("${pub_key}")
     private String pub_key;
@@ -135,6 +145,9 @@
 
     @Autowired
     IXHGatherPatArchiveService ixhGatherPatArchiveService;
+
+    @Autowired
+    ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
 
     @Autowired
     ICollectHISService icollectHis;
@@ -240,10 +253,59 @@
                 // 娌冲崡鏁版嵁閲囬泦
                 HnDataGatherVO hnDataGatherVO = new HnDataGatherVO();
                 log.info("銆恉ealHisData銆戞渤鍗楀紑濮嬮噰闆嗘暟鎹�");
+                Date startTime = Date.from(yesterdayZero.atZone(ZoneId.systemDefault()).toInstant());
+                Date endTime = Date.from(todayZero.atZone(ZoneId.systemDefault()).toInstant());
+
+                hnDataGatherVO.setStartTime(startTime);
+                hnDataGatherVO.setEndTime(endTime);
                 ihnGatherPatArchiveService.hnDataGather(hnDataGatherVO);
                 log.info("銆恉ealHisData銆戞渤鍗楃粨鏉熼噰闆嗘暟鎹�");
             } catch (Exception e) {
                 log.error("銆恉ealHisData銆戞渤鍗楁暟鎹噰闆嗗紓甯�", e);
+            }
+        } else if (active.trim().equals("sltd")) {
+            try {
+                // 鐪佺珛鍚屽痉鏁版嵁閲囬泦
+                log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滃叆闄⑩�濆紑濮嬮噰闆嗘暟鎹�");
+                String yesterday = LocalDate.now().minusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                ServiceSLTDInhospReqVO serviceSLTDInhospReqVO = new ServiceSLTDInhospReqVO();
+                serviceSLTDInhospReqVO.setOrgId("20001001");
+                serviceSLTDInhospReqVO.setCampusId(30001002L);
+                serviceSLTDInhospReqVO.setStartHeadTime(yesterday);
+                serviceSLTDInhospReqVO.setStartTailTime(yesterday);
+                List<String> list = new ArrayList<>();
+                list.add("FH0108.02");
+                serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list);
+                serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
+                log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滃叆闄⑩�濈祼鏉熼噰闆嗘暟鎹�");
+
+                log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滈棬鎬ヨ瘖鈥濆紑濮嬮噰闆嗘暟鎹�");
+                serviceSLTDInhospReqVO.setStartHeadTime(null);
+                serviceSLTDInhospReqVO.setStartTailTime(null);
+                serviceSLTDInhospReqVO.setEncounterTimeStart(yesterday);
+                serviceSLTDInhospReqVO.setEncounterTimeEnd(yesterday);
+                List<String> list1 = new ArrayList<>();
+                list1.add("FH0108.01");
+                list1.add("FH0108.03");
+                serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list1);
+                serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
+                log.info("銆恉ealHisData銆戞渤鍗楃粨鈥滈棬鎬ヨ瘖鈥濇潫閲囬泦鏁版嵁");
+
+                log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滃嚭闄⑩�濆紑濮嬮噰闆嗘暟鎹�");
+                serviceSLTDInhospReqVO.setStartHeadTime(null);
+                serviceSLTDInhospReqVO.setStartTailTime(null);
+                serviceSLTDInhospReqVO.setEncounterTimeStart(null);
+                serviceSLTDInhospReqVO.setEncounterTimeEnd(null);
+                serviceSLTDInhospReqVO.setPreOutHospitalHeadDate(yesterday);
+                serviceSLTDInhospReqVO.setPreOutHospitalTailDate(yesterday);
+                List<String> list2 = new ArrayList<>();
+                list2.add("FH0108.02");
+                serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list2);
+                serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
+                log.info("銆恉ealHisData銆戞渤鍗楃粨鈥滃嚭闄⑩�濇潫閲囬泦鏁版嵁");
+
+            } catch (Exception e) {
+                log.error("銆恉ealHisData銆戠渷绔嬪悓寰锋暟鎹噰闆嗗紓甯�", e);
             }
         }
     }
@@ -319,9 +381,69 @@
             commonTaskcallMQ.setTaskid(serviceTask.getTaskid());
             commonTaskcallMQ.setPreachform(serviceTask.getPreachform());
             commonTaskcallMQ.setSendType("2");
-            sfHandlle(commonTaskcallMQ, localIP);
+
+            //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�,骞朵笖闅忚鏃堕棿寰楁槸浠婂ぉ涔嬪墠鐨�
+            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+            serviceSubtaskVO.setTaskid(commonTaskcallMQ.getTaskid());
+            serviceSubtaskVO.setSendstate(2L);
+            serviceSubtaskVO.setVisitTime(new Date());
+            List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.queryServiceSubtaskList(serviceSubtaskVO);
+            for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
+                sfHandlle(serviceSubtask);
+            }
+
         }
     }
+
+    /**
+     * 澶勭悊琛ュ伩浠诲姟
+     */
+    public void compensateTask() {
+        //鑾峰彇鍒皊endstate=3 骞朵笖 visit_time涓轰粖澶╃殑subtask
+        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        serviceSubtaskVO.setSendstate(3L);
+        serviceSubtaskVO.setVisitTime(new Date());
+        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+            //鏍规嵁褰撳墠鐨勬墽琛屾柟寮忥紝鑾峰彇涓嬩竴绉嶆墽琛屾柟寮�
+            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
+            serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
+            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
+            serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
+            List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+            //鑾峰彇褰撳墠鎵ц鏂瑰紡鐨勫簭鍙�
+            Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst();
+            Optional<Long> id = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getId).findFirst();
+            if (currentSort.isPresent()) {
+                //1鍏堟鏌ヤ竴涓嬶紝鏄笉鏄湁鎵ц鐘舵�佹槸瀹屾垚鐨勶紙鎬曚箣鍓嶅凡缁忔湁瀹岀殑浜嗭紝娌℃湁灏唖ervuce_subtask鐨勭姸鎬佹敼鎴愬姛锛岃繖閲屽啀妫�鏌ヤ竴涓嬶級
+                boolean finishState = serviceSubtaskPreachforms.stream().allMatch(item -> item.getSendstate().equals("9"));
+                if (finishState) {
+                    serviceSubtask.setSendstate(6L);
+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                    continue;
+                }
+
+                //2鍒ゆ柇涓�涓嬶紝褰撳墠鐨剆ort鏄笉鏄瓑浜庨渶瑕佹墽琛岀殑鎬讳釜鏁帮紝濡傛灉绛変簬鐨勮瘽锛岃鏄庢槸鏈�鍚庝竴涓紝鐩存帴灏唖ervuce_subtask鐨勭姸鎬佹敼鎴�5锛屾墽琛屽け璐ュ氨琛屼簡
+                Long cs = currentSort.get();
+                if (cs.equals(serviceSubtaskPreachforms.size())) {
+                    serviceSubtask.setSendstate(5L);
+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                    //淇敼鍙戦�佹柟寮忕殑鐘舵�佷负澶辫触
+                    serviceSubtaskPreachform.setSendstate("5");
+                    serviceSubtaskPreachform.setId(id.get());
+                    serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform);
+                    continue;
+                }
+
+                //3.涓嶆槸鏈�鍚庝竴涓紝鑾峰彇鍒颁笅涓�涓墽琛屾柟寮�(鍥犱负閮芥槸鍦ㄤ粖澶╂墽琛岋紝閭e氨鐩存帴鍙戝嚭鍘诲氨瀹屼簡)
+                sfHandlle(serviceSubtask);
+
+            }
+
+        }
+
+    }
+
 
     /**
      * 鍒ゆ柇鏃ユ湡鏄惁鏄粖澶�
@@ -341,363 +463,342 @@
         return !localDate.isAfter(today);
     }
 
-    public void sfHandlle(CommonTaskcallMQ commonTaskcallMQ, String ip) {
-        log.info("銆恠fHandlle銆戝紑濮嬪鐞嗕换鍔★紝浠诲姟ID锛歿}", commonTaskcallMQ.getTaskid());
-        //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜�
-        ServiceTask ivrTask1 = serviceTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());
-
-        if (StringUtils.isNotEmpty(commonTaskcallMQ.getPreachform())) {
-            //濡備綍浠诲姟鍙戦�佹柟寮忎笉涓虹┖
-            String[] split = commonTaskcallMQ.getPreachform().split(",");
-            log.info("銆恠fHandlle銆戜换鍔″彂閫佹柟寮忥細{}", Arrays.toString(split));
-            for (String serviceFrom : split) {
-                String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom));
-                //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
-                ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO();
-                ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid());
-                ivrTaskcall.setSendstate(2L);
-                List<ServiceSubtask> subtaskList = iServiceSubtaskService.selectServiceSubtaskList(ivrTaskcall);
-                //涓芥按鏈夌殑鍖婚櫌杩樻病娉曞仛闀挎湡浠诲姟闅忚
-                List<ServiceSubtask> subtaskList2 = new ArrayList<>();
-                if (visitHosp == 2) {
-                    try {
-                        for (ServiceSubtask serviceSubtask : subtaskList) {
-                            Boolean b = VisitSendStateEnum.getDescByCode(serviceSubtask.getOrgid());
-
-                            if (b) subtaskList2.add(serviceSubtask);
-                        }
-                    } catch (Exception e) {
-                        log.error("-------闀挎湡浠诲姟寮傚父涓猴細", e);
-                        continue;
-                    }
-//                    for (ServiceSubtask serviceSubtask : subtaskList) {
-//                        Boolean b = VisitSendStateEnum.getDescByCode(serviceSubtask.getOrgid());
-//
-//                        if (b) subtaskList2.add(serviceSubtask);
-//                    }
-                    subtaskList = subtaskList2;
-                }
-
-                // 鎸夌収 endtime 绂诲綋鍓嶆椂闂存渶杩戠殑鎺掑簭
-                List<ServiceSubtask> selectServiceSubtaskList = subtaskList.stream().sorted(Comparator.comparing(subtask -> Math.abs(subtask.getEndtime().getTime() - new Date().getTime()))).collect(Collectors.toList());
-
-                if (descByCode.equals("鐢佃瘽")) {
-                    String value = "";
-                    List<String> list = new ArrayList<>();
-                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
-                        ServiceTask ivrTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                        if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {
-                            //濡備綍浠诲姟琚�"鏆傚仠"鎴�"缁堟"
-                            break;
-                        }
-                        if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) {
-                            serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
-                            serviceSubtask.setSendstate(4L);
-                            serviceSubtask.setResult("error");
-//                            serviceSubtask.setFinishtime(new Date());
-                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-                            continue;
-                        }
-                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());
-                        //璇存槑鏄珛鍗冲彂閫�(鍏堟妸娑堟伅鏀惧埌cache-0涓紝   displayNo涓嶇煡閬撴�庝箞閰嶇疆)
-                        if (dateToday) {
-                            list.add(serviceSubtask.getId().toString());
-                            //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
-                            String uuid = UUID.randomUUID().toString();
-                            serviceSubtask.setResult("success");
-                            serviceSubtask.setRemark("闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔�");
-                            serviceSubtask.setGuid(uuid);
-                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-
-                            //浠诲姟鍙戦�佽褰�
-                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-                            serviceSubtaskRecord.setUuid(uuid);
-                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-                            serviceSubtaskRecord.setPreachform("3");
-                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-                            serviceSubtaskRecord.setRemark("闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔�");
-                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-
-                        }
-                    }
-                    //灏嗚鎵ц鐨勬斁鍒扮紦瀛樹腑
-                    if (list.size() > 0) {
-//                        redisCache.setCacheListLeft("cache-0", list);
-                        redisCache.setCacheListLeftAndDistinct("cache-0", list);
-                        log.info("銆恠fHandlle銆戠數璇濅换鍔″凡鍔犲叆闃熷垪锛屾暟閲忥細{}", list.size());
-                    }
-                } else if (descByCode.equals("澶氬獟浣�")) {
-                    //澶氬獟浣�
-                } else if (descByCode.equals("绾歌川")) {
-                    //绾歌川
-                } else if (descByCode.equals("寰俊灏忕▼搴�")) {
-                    //寰俊灏忕▼搴�
-                    log.info("銆恠fHandlle銆戝鐞嗗井淇″皬绋嬪簭浠诲姟锛屼换鍔′俊鎭細{}", ivrTask1);
-                    if (ObjectUtils.isNotEmpty(ivrTask1) && ivrTask1.getPatCycle() == 1) {
-                        //璇存槑璇ヤ换鍔$殑鎮h�呮槸寰幆鎵ц鐨�
-                        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-                        serviceSubtaskVO.setTaskid(ivrTask1.getTaskid());
-                        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
-                        //杩欓噷闇�瑕佹牴鎹韩浠借瘉鍘婚噸
-                        List<ServiceSubtask> serviceSubtaskListFilter = new ArrayList<>();
-                        aa:
-                        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
-                            for (ServiceSubtask ss : serviceSubtaskListFilter) {
-                                if (ss.getSfzh().equals(serviceSubtask.getSfzh())) {
-                                    continue aa;
-                                }
-                            }
-                            serviceSubtaskListFilter.add(serviceSubtask);
-                        }
-                        for (ServiceSubtask serviceSubtask : serviceSubtaskListFilter) {
-                            //灏嗗瓙浠诲姟ID鍒犻櫎 銆乻endstate鏀规垚3
-                            serviceSubtask.setSendstate(3L);
-                            serviceSubtask.setId(null);
-                            serviceSubtask.setFinishtime(null);
-                            serviceSubtask.setCreateTime(new Date());
-                            serviceSubtask.setUpdateTime(new Date());
-                            //澶勭悊閲嶅鏂板闂锛屽厛鏌ヤ竴涓嬩粖澶╂槸涓嶆槸鏈夋柊澧炶繃锛屾柊澧炶繃灏变笉鏂板浜�
-                            ServiceSubtaskVO ssvo = new ServiceSubtaskVO();
-                            LocalDate today = LocalDate.now();
-                            LocalTime startOfDay = LocalTime.of(0, 0, 0);
-                            LocalTime endOfDay = LocalTime.of(23, 59, 59);
-                            Date startOfDayDate = Date.from(today.atTime(startOfDay).atZone(ZoneId.systemDefault()).toInstant());
-                            Date endOfDayDate = Date.from(today.atTime(endOfDay).atZone(ZoneId.systemDefault()).toInstant());
-                            ssvo.setCreateStartTime(startOfDayDate);
-                            ssvo.setCreateEndTime(endOfDayDate);
-                            ssvo.setCreateBy(serviceSubtask.getCreateBy());
-                            ssvo.setSendname(serviceSubtask.getSendname());
-                            ssvo.setSfzh(serviceSubtask.getSfzh());
-                            List<ServiceSubtask> serviceSubtaskListByCreateTime = serviceSubtaskMapper.selectServiceSubtaskListByCreateTime(ssvo);
-                            if (CollectionUtils.isEmpty(serviceSubtaskListByCreateTime))
-                                serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
-                        }
-                    }
-                } else if (descByCode.equals("鐭俊")) {
-                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
-                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
-                        log.info("銆恠fHandlle銆戝鐞嗙煭淇¢暱鏈熶换鍔★紝鎮h�匢D锛歿}", serviceSubtask.getPatid());
-                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());
-                        if (dateToday) {
-                            try {
-                                //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦��
-                                PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());
-                                if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") {
-                                    //涓嶉渶瑕佸彂閫�
-                                    serviceSubtask.setResult("error");
-                                    serviceSubtask.setRemark(patArchive.getNotrequiredreason());
-                                    serviceSubtask.setSendstate(4L);
-                                    iServiceSubtaskService.insertServiceSubtask(serviceSubtask);
-                                    continue;
-                                }
-                                String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
-                                String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
-                                SendMagParam sendMagParam = new SendMagParam();
-                                sendMagParam.setType("4");
-                                ServiceOutPath serviceOutPath = new ServiceOutPath();
-                                serviceOutPath.setParam1(taskId);
-                                serviceOutPath.setParam2(patid);
-                                serviceOutPath.setParam3(ivrTask1.getTaskName());
-                                serviceOutPath.setParam6(subId);
-                                serviceOutPath.setCreateTime(new Date());
-                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-                                String format = String.format("%03X", serviceOutPath.getId());
-                                serviceOutPath.setRadix(format);
-                                serviceOutPath.setUpdateTime(new Date());
-                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-                                //鍏堝垽鏂竴涓嬪彂鐨勬槸涓嶆槸瀹f暀
-                                if (!"3".equals(serviceSubtask.getType())) {
-                                    sendMagParam.setPhone(serviceSubtask.getPhone());
-                                    sendMagParam.setUrl(ip + ":" + req_path + "/wt?p=" + format);
-                                    sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
-                                } else {
-                                    HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid());
-                                    if ("2".equals(heLibrary.getHetype())) {
-                                        sendMagParam.setPhone(serviceSubtask.getPhone());
-                                        sendMagParam.setContent(heLibrary.getPreachcontent());
-                                    }
-                                }
-                                String isSuccess = null;
-                                if (visitHosp == 1) {
-                                    Map<String, String> req = new HashMap<>();
-                                    req.put("phone", sendMagParam.getPhone());
-                                    req.put("content", sendMagParam.getContent());
-                                    isSuccess = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));
-                                } else if (visitHosp == 2) {
-                                    //涓芥按鐨勭煭淇″彂閫佹柟寮�
-                                    Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());
-                                    String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid());
-                                    if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) {
-                                        ServiceSubtask ss = new ServiceSubtask();
-                                        ss.setResult("error");
-                                        ss.setRemark("鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�");
-                                        ss.setSendstate(5L);
-                                        ss.setId(serviceSubtask.getId());
-//                                        ss.setFinishtime(new Date());
-                                        serviceSubtaskMapper.updateServiceSubtask(ss);
-                                        continue;
-                                    }
-                                    log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫侊紝鍦板潃锛歿}锛屽弬鏁帮細{}锛屾満鏋処D锛歿}", map.get("address"), sendMagParam, serviceSubtask.getOrgid());
-                                    String dxCode = getDXCode(map.get("address"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get("sendPersonId"), map.get("sendPersonName"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token);
-                                    log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫佺粨鏋滐細{}", dxCode);
-                                    ObjectMapper objectMapper = new ObjectMapper();
-                                    Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);
-                                    String code = textParam.get("Code").toString();
-                                    if (code.equals("0")) {
-                                        isSuccess = "true";
-                                    }
-                                }
-                                //浠诲姟鍙戦�佽褰�
-                                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-                                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-                                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-                                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-                                serviceSubtaskRecord.setPreachform("4");
-                                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-                                serviceSubtaskRecord.setResult("success");
-                                if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals("true"))
-                                    serviceSubtaskRecord.setResult("error");
-                                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-
-                                //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬�
-                                serviceSubtask.setSendstate(3L);
-                                if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals("true")) {
-                                    serviceSubtask.setResult("success");
-                                    serviceSubtask.setRemark("鐭俊鍙戦�佹垚鍔�");
-                                } else {
-                                    serviceSubtask.setResult("error");
-                                    serviceSubtask.setSendstate(5L);
-                                    serviceSubtask.setRemark("鐭俊鍙戦�佸け璐�");
-                                }
-                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
-                            } catch (Exception e) {
-                                String guid = UUID.randomUUID().toString();
-                                log.error("銆恠fHandlle銆戦暱鏈熶换鍔$煭淇″彂閫佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid);
-                                serviceSubtask.setResult("error");
-                                serviceSubtask.setRemark("绯荤粺閿欒");
-                                serviceSubtask.setSendstate(5L);
-                                serviceSubtask.setGuid(guid);
-                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
-                            }
-                        }
-                    }
-                } else if (descByCode.equals("鍏紬鍙�")) {
-                    log.info("銆恠fHandlle銆戝鐞嗗叕浼楀彿浠诲姟锛屼换鍔′俊鎭細{}", ivrTask1);
-                    //鍏紬鍙�
-                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
-                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
-                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());
-                        if (dateToday) {
-                            try {
-                                //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦��
-                                PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());
-                                if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") {
-                                    //涓嶉渶瑕佸彂閫�
-                                    serviceSubtask.setResult("error");
-                                    serviceSubtask.setRemark(patArchive.getNotrequiredreason());
-                                    serviceSubtask.setSendstate(4L);
-                                    iServiceSubtaskService.insertServiceSubtask(serviceSubtask);
-                                    continue;
-                                }
-                                String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
-                                String url = null;
-                                url = ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "&param5=false";
-
-                                //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D
-                                List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());
-                                if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {
-                                    ServiceSubtask ss = new ServiceSubtask();
-                                    ss.setResult("error");
-                                    ss.setRemark("璇ユ満鏋勭殑鍏紬鍙烽厤缃俊鎭笉鍏紝鏃犳硶閫氳繃鍏紬鍙峰彂閫�");
-                                    ss.setSendstate(5L);
-                                    ss.setId(serviceSubtask.getId());
-                                    serviceSubtaskMapper.updateServiceSubtask(ss);
-                                    continue;
-                                }
-
-                                if (StringUtils.isEmpty(patArchive.getPatidHis())) {
-                                    ServiceSubtask ss = new ServiceSubtask();
-                                    ss.setResult("error");
-                                    ss.setRemark("鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖");
-                                    ss.setSendstate(5L);
-                                    ss.setId(serviceSubtask.getId());
-                                    serviceSubtaskMapper.updateServiceSubtask(ss);
-                                    continue;
-                                }
-                                String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), patArchive.getTelcode(), serviceSubtask.getSendname(), patArchive.getPatidHis(), wxqqxx);
-
-                                Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);
-                                //浠诲姟鍙戦�佽褰�
-                                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-                                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-                                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-                                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-                                serviceSubtaskRecord.setPreachform("4");
-                                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-                                serviceSubtaskRecord.setResult("success");
-                                if (!map.isEmpty() && (Boolean) map.get("succ") == false)
-                                    serviceSubtaskRecord.setResult("error");
-                                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-
-                                //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬�
-                                serviceSubtask.setSendstate(3L);
-                                if ((Boolean) map.get("succ") == true) {
-                                    serviceSubtask.setResult("success");
-                                } else {
-                                    log.error("銆恠fHandlle銆戝叕浼楀彿鍙戦�佸け璐ワ紝鎮h�呬俊鎭細{}锛岄敊璇俊鎭細{}", serviceSubtask, map.get("msg"));
-                                    serviceSubtask.setResult("error");
-                                    serviceSubtask.setSendstate(5L);
-                                    serviceSubtask.setRemark(map.get("msg").toString());
-                                }
-                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
-                            } catch (Exception e) {
-                                String guid = UUID.randomUUID().toString();
-                                log.error("銆恠fHandlle銆戦暱鏈熶换鍔″叕浼楀彿鍙戦�佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid);
-                                serviceSubtask.setResult("error");
-                                serviceSubtask.setRemark("绯荤粺閿欒");
-                                serviceSubtask.setSendstate(5L);
-                                serviceSubtask.setGuid(guid);
-                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
-                            }
-                        }
-                    }
-                }
-                //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
-            }
+    public void sfHandlle(ServiceSubtask serviceSubtask) {
+        //杩欓噷闇�瑕佹牴鎹韩浠借瘉鍘婚噸(缁欏井淇″皬绋嬪簭鐨勫浐瀹氫换鍔$敤鐨�)
+        List<ServiceSubtask> serviceSubtaskListFilter = new ArrayList<>();
+        ServiceTask ivrTask1 = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
+        serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
+        serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
+        //鑾峰彇鍙戦�佹柟寮�
+        String sendPreachform = getSendPreachform(serviceSubtaskPreachform, serviceSubtask);
+        if (sendPreachform.equals("-1") || serviceSubtask.getSendstate() == 6 || serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 4) {
+            //璇存槑宸茬粡鍏ㄩ儴閬嶅巻瀹屼簡锛屽綋鍓嶇殑鎵ц鏂瑰紡搴忓彿鏄渶鍚庝竴涓簡   鎴栬��  璇ユ偅鑰呭凡缁忛殢璁跨粨鏉燂紙鎴愬姛鎴栧け璐ヤ簡鎴栦笉鎵ц锛�
+            return;
         }
+        //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦��
+        PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());
+        if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") {
+            //涓嶉渶瑕佸彂閫�
+            serviceSubtask.setResult("鎮h�呬笉闇�瑕侀殢璁�");
+            serviceSubtask.setRemark(patArchive.getNotrequiredreason());
+            serviceSubtask.setSendstate(4L);
+            iServiceSubtaskService.insertServiceSubtask(serviceSubtask);
+            setSuccessPreachForm(serviceSubtask, "-1", "涓嶉渶瑕佹墽琛�", "6");
+            return;
+        }
+
+        String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(sendPreachform));
+        if (descByCode.equals("鐢佃瘽")) {
+            List<String> list = new ArrayList<>();
+            ServiceTask ivrTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+            if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {
+                //濡備綍浠诲姟琚�"鏆傚仠"鎴�"缁堟"
+                return;
+            }
+
+            if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) {
+                setSuccessPreachForm(serviceSubtask, sendPreachform, "鎵嬫満鍙蜂负绌�", "4");
+                return;
+            }
+            boolean dateToday = isDateToday(serviceSubtask.getVisitTime());
+            //璇存槑鏄珛鍗冲彂閫�(鍏堟妸娑堟伅鏀惧埌cache-0涓紝   displayNo涓嶇煡閬撴�庝箞閰嶇疆)
+            if (dateToday) {
+                list.add(serviceSubtask.getId().toString());
+                //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
+                setSuccessPreachForm(serviceSubtask, sendPreachform, "闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔�", "2");
+                //浠诲姟鍙戦�佽褰�
+                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
+                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
+                serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
+                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
+                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
+                serviceSubtaskRecord.setPreachform("3");
+                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
+                serviceSubtaskRecord.setRemark("闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔�");
+                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
+            }
+            //灏嗚鎵ц鐨勬斁鍒扮紦瀛樹腑
+            if (list.size() > 0) {
+                redisCache.setCacheListLeftAndDistinct("cache-0", list);
+                log.info("銆恠fHandlle銆戠數璇濅换鍔″凡鍔犲叆闃熷垪锛屾暟閲忥細{}", list.size());
+            }
+        } else if (descByCode.equals("寰俊灏忕▼搴�")) {
+            //寰俊灏忕▼搴�
+            if (ObjectUtils.isNotEmpty(ivrTask1) && ivrTask1.getPatCycle() == 1) {
+                //璇存槑璇ヤ换鍔$殑鎮h�呮槸寰幆鎵ц鐨�
+                //鍒ゆ柇鎮h�呰繃婊ら泦鍚堜腑锛屾槸鍚﹀瓨鍦ㄥ綋鍓嶆墽琛屾偅鑰呯殑韬唤璇�
+                boolean continutFlag = false;
+                for (ServiceSubtask ss : serviceSubtaskListFilter) {
+                    if (ss.getSfzh().equals(serviceSubtask.getSfzh())) {
+                        continutFlag = true;
+                    }
+                }
+                //濡傛灉瀛樺湪褰撳墠鎵ц鎮h�呯殑韬唤璇侊紝鍒欎笉鎵ц璇ユ偅鑰呬簡
+                if (continutFlag) {
+                    return;
+                }
+
+                //灏嗗瓙浠诲姟ID鍒犻櫎 銆乻endstate鏀规垚3锛堝惊鐜换鍔″氨鏄繖鏍凤級
+                serviceSubtask.setSendstate(3L);
+                serviceSubtask.setId(null);
+                serviceSubtask.setFinishtime(null);
+                serviceSubtask.setCreateTime(new Date());
+                serviceSubtask.setUpdateTime(new Date());
+                serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+
+                //灏嗗綋鍓嶈鎵ц鐨勬偅鑰呮斁鍒拌繃婊ゆ偅鑰呴泦鍚堜腑
+                serviceSubtaskListFilter.add(serviceSubtask);
+            }
+        } else if (descByCode.equals("鐭俊")) {
+            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
+            String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
+            log.info("銆恠fHandlle銆戝鐞嗙煭淇¢暱鏈熶换鍔★紝鎮h�匢D锛歿}", serviceSubtask.getPatid());
+            boolean dateToday = isDateToday(serviceSubtask.getVisitTime());
+            if (dateToday) {
+                try {
+                    String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
+                    String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
+                    SendMagParam sendMagParam = new SendMagParam();
+                    sendMagParam.setType("4");
+                    ServiceOutPath serviceOutPath = new ServiceOutPath();
+                    serviceOutPath.setParam1(taskId);
+                    serviceOutPath.setParam2(patid);
+                    serviceOutPath.setParam3(ivrTask1.getTaskName());
+                    serviceOutPath.setParam6(subId);
+                    serviceOutPath.setCreateTime(new Date());
+                    iServiceOutPathService.insertServiceOutPath(serviceOutPath);
+                    String format = String.format("%03X", serviceOutPath.getId());
+                    serviceOutPath.setRadix(format);
+                    serviceOutPath.setUpdateTime(new Date());
+                    iServiceOutPathService.updateServiceOutPath(serviceOutPath);
+                    //鍏堝垽鏂竴涓嬪彂鐨勬槸涓嶆槸瀹f暀
+                    if (!"3".equals(serviceSubtask.getType())) {
+                        sendMagParam.setPhone(serviceSubtask.getPhone());
+                        sendMagParam.setUrl(localIP + ":" + req_path + "/wt?p=" + format);
+                        //濡傛灉type鏄闊抽殢璁跨殑璇濓紙璇存槑琛ュ伩鍙戦�佹柟寮忎腑鏈夌數璇濋殢璁跨殑鏂瑰紡锛岃繖閲岀殑澶栭摼灏卞湴鍧�鍙兘鐢�/sf锛�
+                        if (serviceSubtask.getType().equals("1"))
+                            sendMagParam.setUrl(localIP + ":" + req_path + "/sf?p=" + format);
+                        sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
+                    } else {
+                        HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid());
+                        if ("2".equals(heLibrary.getHetype())) {
+                            sendMagParam.setPhone(serviceSubtask.getPhone());
+                            sendMagParam.setContent(heLibrary.getPreachcontent());
+                        }
+                    }
+                    String isSuccess = null;
+                    if (visitHosp == 1) {
+                        Map<String, String> req = new HashMap<>();
+                        req.put("phone", sendMagParam.getPhone());
+                        req.put("content", sendMagParam.getContent());
+                        isSuccess = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));
+                    } else if (visitHosp == 2) {
+                        String url = configService.selectConfigByKey("token.360", serviceSubtask.getOrgid());
+                        //涓芥按鐨勭煭淇″彂閫佹柟寮�
+                        Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());
+                        String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(), url);
+                        if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) {
+                            setSuccessPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�", "5");
+                            return;
+                        }
+                        log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫侊紝鍦板潃锛歿}锛屽弬鏁帮細{}锛屾満鏋処D锛歿}", map.get("address"), sendMagParam, serviceSubtask.getOrgid());
+                        String dxCode = getDXCode(map.get("address"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get("sendPersonId"), map.get("sendPersonName"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token);
+                        log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫佺粨鏋滐細{}", dxCode);
+                        ObjectMapper objectMapper = new ObjectMapper();
+                        Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);
+                        String code = textParam.get("Code").toString();
+                        if (code.equals("0")) {
+                            isSuccess = "true";
+                        }
+                    } else if (visitHosp == 4) {
+                        //鐪佺珛鍚屽痉鐨勭煭淇″彂閫佹柟寮�
+                        JSONObject data = MessageSend.sendMsg(sendMagParam.getContent(), "2", sendMagParam.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
+                        String code = data.get("code").toString();
+                        if (StringUtils.isNotEmpty(code) && code.equals("00000")) {
+                            isSuccess = "true";
+                        }
+                    } else if (visitHosp == 3) {//甯備竴鍖婚櫌
+                        String content = sendMagParam.getContent().replace("銆愭柊鍗庡尰闄€��", "");
+                        String result = smsUtils.sendSms(xhsmsPath, xhsmsAccount, xhsmsPwd, sendMagParam.getPhone(), content);
+                        //杩欓噷闇�瑕佹牴鎹畆esult杩斿洖鐨勫�煎幓鍒ゆ柇锛屾槸鍚︽垚鍔燂紝鐒跺悗灏嗗�艰祴鍊肩粰isSuccess
+
+
+                    }
+                    //浠诲姟鍙戦�佽褰�
+                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
+                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
+                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
+                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
+                    serviceSubtaskRecord.setPreachform("4");
+                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
+                    serviceSubtaskRecord.setResult("success");
+                    if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals("true"))
+                        serviceSubtaskRecord.setResult("error");
+                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
+
+                    //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬�
+                    serviceSubtask.setSendstate(3L);
+                    if (StringUtils.isNotEmpty(isSuccess) && isSuccess.equals("true")) {
+                        serviceSubtask.setResult("success");
+                        serviceSubtask.setRemark("鐭俊鍙戦�佹垚鍔�");
+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佹垚鍔�", "2");
+                    } else {
+                        serviceSubtask.setResult("error");
+                        serviceSubtask.setRemark("鐭俊鍙戦�佸け璐�");
+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5");
+                    }
+                } catch (Exception e) {
+                    String guid = UUID.randomUUID().toString();
+                    log.error("銆恠fHandlle銆戦暱鏈熶换鍔$煭淇″彂閫佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid);
+                    setSuccessPreachForm(serviceSubtask, sendPreachform, "闀挎湡浠诲姟鐭俊鍙戦�佸け璐�:绯荤粺閿欒", "5");
+                }
+            }
+
+        } else if (descByCode.equals("鍏紬鍙�")) {
+            log.info("銆恠fHandlle銆戝鐞嗗叕浼楀彿浠诲姟锛屼换鍔′俊鎭細{}", ivrTask1);
+            //鍏紬鍙�
+            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
+            String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
+            boolean dateToday = isDateToday(serviceSubtask.getVisitTime());
+            if (dateToday) {
+                try {
+                    String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
+                    String url = null;
+                    url = localIP + ":" + req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "&param5=false";
+
+                    //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D
+                    List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());
+                    if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {
+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戣鏈烘瀯鐨勫叕浼楀彿閰嶇疆淇℃伅涓嶅叏锛屾棤娉曢�氳繃鍏紬鍙峰彂閫�", "4");
+                        return;
+                    }
+
+                    if (StringUtils.isEmpty(patArchive.getPatidHis())) {
+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戝叕浼楀彿鍙戦�佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖", "5");
+                        return;
+                    }
+                    String wxCode = "";
+                    if (visitHosp == 3) {//甯備竴鍖婚櫌
+                        String urlTemp = "http://192.200.54.14:5003/sfjk/SendMessage?sfzh=" + serviceSubtask.getSfzh()
+                                + "&title=鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑诲~鍐欍��&content=鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑诲~鍐欍��&phone=" + patArchive.getTelcode()
+                                + "&url=" + url + "&key=ff76f8904f5f32b5ee1739e8ea46e60g";
+                        HttpUtils.sendGet(urlTemp);
+                    } else {
+                        wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), patArchive.getTelcode(), serviceSubtask.getSendname(), patArchive.getPatidHis(), wxqqxx);
+                    }
+
+                    Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);
+                    //浠诲姟鍙戦�佽褰�
+                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
+                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
+                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
+                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
+                    serviceSubtaskRecord.setPreachform("4");
+                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
+                    serviceSubtaskRecord.setResult("success");
+                    if (!map.isEmpty() && (Boolean) map.get("succ") == false) serviceSubtaskRecord.setResult("error");
+                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
+
+                    //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬�
+                    serviceSubtask.setSendstate(3L);
+                    if ((Boolean) map.get("succ") == true) {
+                        serviceSubtask.setResult("success");
+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戝叕浼楀彿鍙戦�佹垚鍔�", "2");
+                    } else {
+                        log.error("銆恠fHandlle銆戝叕浼楀彿鍙戦�佸け璐ワ紝鎮h�呬俊鎭細{}锛岄敊璇俊鎭細{}", serviceSubtask, map.get("msg"));
+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戝叕浼楀彿鍙戦�佸け璐�", "5");
+                    }
+                } catch (Exception e) {
+                    String guid = UUID.randomUUID().toString();
+                    log.error("銆恠fHandlle銆戦暱鏈熶换鍔″叕浼楀彿鍙戦�佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid);
+                    setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戦暱鏈熶换鍔″叕浼楀彿鍙戦�佸け璐ワ紝鍘熷洜锛�" + e.getMessage(), "5");
+                }
+            }
+        } else if (descByCode.equals("浜哄伐")) {
+            setSuccessPreachForm(serviceSubtask, sendPreachform, "浜哄伐寰呮墽琛�", "2");
+        }
+
     }
 
-    private String getKey() {
-        Map<String, String> map = new HashMap<>();
-        for (int i = 0; i < 6; i++) {
-            Boolean aBoolean = redisCache.hasKey("cache-" + i);
-            if (!aBoolean) {
-                redisCache.setCacheObject("cache-" + i, "");
-                map.put("cache-" + i, "");
-            } else {
-                map.put("cache-" + i, redisCache.getCacheObject("cache-" + i));
-            }
+
+    private Date getNextVisitTime(Long subid, Long taskid, Date visitTime) {
+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
+        serviceSubtaskPreachform.setSubid(subid);
+        serviceSubtaskPreachform.setTaskid(taskid);
+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
+            String compensateTime = serviceSubtaskPreachforms.get(0).getCompensateTime();
+            int hoursToAdd = Integer.valueOf(compensateTime) * 24;
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(visitTime);
+            calendar.add(Calendar.HOUR_OF_DAY, hoursToAdd);
+            Date newDate = calendar.getTime();
+            return newDate;
+        }
+        return visitTime;
+    }
+
+    private String getSendPreachform(ServiceSubtaskPreachform serviceSubtaskPreachform, ServiceSubtask serviceSubtask) {
+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+
+        // 鎯呭喌1锛歝urrentPreachform涓虹┖锛屽彇sort涓�1鐨刾reachform
+        if (StringUtils.isEmpty(serviceSubtask.getCurrentPreachform())) {
+            return serviceSubtaskPreachforms.stream().filter(item -> item.getSort() == 1L).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse(null);
         }
 
-        String key = null;
-        String value = "";
-        for (Map.Entry<String, String> entry : map.entrySet()) {
-            if (StringUtils.isEmpty(value)) {
-                value = entry.getValue();
-                key = entry.getKey();
-            } else {
-                if (entry.getValue().split(",").length < value.split(",").length) {
-                    value = entry.getValue();
-                    key = entry.getKey();
-                }
+        // 鎯呭喌2锛歝urrentPreachform涓嶄负绌猴紝鎵句笅涓�涓猻ort
+        Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst();
+
+        if (currentSort.isPresent()) {
+            // 妫�鏌ユ槸鍚︽墍鏈塻endstate涓嶇瓑浜�9
+            boolean allSendStateNot1AndNot9 = serviceSubtaskPreachforms.stream().allMatch(item -> !item.getSendstate().equals("9"));
+            if (!allSendStateNot1AndNot9) {
+                //璇存槑锛屽湪鏌愮鏂瑰紡鍙戦�佸け璐ュ悗锛屽張鎴愬姛浜嗭紙渚嬪鐭俊鎴栧叕浼楀彿锛屽湪瑙勫畾鏃堕棿澶栨偅鑰呭仛瀹屼簡锛岃繖涓椂鍊欙紝鐘舵�佹敼鎴愪簡9锛�
+                serviceSubtask.setSendstate(6L);
+                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                return "-1";
             }
+
+            // 褰搒ort绛変簬鍒楄〃size鏃讹紝骞朵笖鎵�鏈塻endstate閮戒笉绛変簬9锛屽垯杩斿洖-1
+            if (currentSort.get().equals((long) serviceSubtaskPreachforms.size())) {
+                if (allSendStateNot1AndNot9) {
+                    //璇存槑鍏ㄥ彂閫佸け璐ヤ簡
+                    serviceSubtask.setSendstate(5L);
+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                    //淇敼鍙戦�佺姸鎬�
+                    setFail(serviceSubtaskPreachforms, serviceSubtask);
+                }
+                return "-1";
+            }
+
+            // 褰搒ort绛変簬鍒楄〃size鏃讹紝涓嬩竴涓猻ort涓�-1
+            Long nextSort = currentSort.get() + 1;
+
+            //濡傛灉褰撳墠鐨勫彂閫佹柟寮忎笉涓虹┖锛屽苟涓斿紑濮嬪噯澶囪鐢ㄤ笅涓�绉嶆柟寮忓彂閫佷簡锛岄偅褰撳墠鐨勮偗瀹氭病鏈夊彂閫佹垚鍔燂紝闇�瑕佽缃け璐�
+            // (杩欓噷涓昏鏄紝浜哄伐濡傛灉娌℃湁闅忚锛岀劧鍚庡埌鍏紬鍙风殑鏃跺�欙紝灏变笉浼氬啀鍘荤浜哄伐鏄惁鎴愬姛锛屼汉宸ョ殑鐘舵�佷細涓�鐩村崱鍦�2鐨勭姸鎬佷笂)
+            if (StringUtils.isNotEmpty(serviceSubtask.getCurrentPreachform())) {
+                setFail(serviceSubtaskPreachforms, serviceSubtask);
+            }
+
+            // 鎵惧埌涓嬩竴涓猻ort瀵瑰簲鐨刾reachform
+            return serviceSubtaskPreachforms.stream().filter(item -> nextSort.equals(item.getSort())).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse("-1");
         }
-        return key;
+
+        return null;
     }
+
+    private Integer setFail(List<ServiceSubtaskPreachform> serviceSubtaskPreachforms, ServiceSubtask serviceSubtask) {
+        Optional<Long> id = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getId).findFirst();
+        if (id.isPresent()) {
+            ServiceSubtaskPreachform subtaskPreachform = new ServiceSubtaskPreachform();
+            subtaskPreachform.setSendstate("5");
+            subtaskPreachform.setId(id.get());
+            return serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(subtaskPreachform);
+        }
+        return 0;
+    }
+
 
     private String getDXCode(String address, String ShouJiHM, String FaSongNR, String FaSongRID, String FaSongRXM, Map<String, Object> headerMap, String token) {
         Map<String, Object> map = new LinkedHashMap<>();
@@ -771,12 +872,68 @@
     public void collectHIS() {
         try {
             // HIS鏁版嵁閲囬泦
-            HnDataGatherVO hnDataGatherVO = new HnDataGatherVO();
             log.info("銆恉ealHisData銆慔IS寮�濮嬮噰闆嗘暟鎹�");
-            ichService.hnDataGather(hnDataGatherVO);
+            ichService.sync();
             log.info("銆恉ealHisData銆慔IS缁撴潫閲囬泦鏁版嵁");
         } catch (Exception e) {
             log.error("銆恉ealHisData銆慔IS鏁版嵁閲囬泦寮傚父", e);
         }
     }
+
+    public Boolean setSuccessPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) {
+        if (preachform.equals("-1")) {
+            //璇存槑閮戒笉闇�瑕佹墽琛屼簡
+            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
+            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
+            serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
+            serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
+            serviceSubtaskPreachform.setSendstate(failSendstate);
+            serviceSubtaskPreachformMapper.updateSSPByCondition(serviceSubtaskPreachform);
+            return true;
+        }
+
+
+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
+        serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
+        serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
+        serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
+        List<ServiceSubtaskPreachform> sspCount = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+
+        serviceSubtaskPreachform.setPreachform(preachform);
+        //1:鏈彂閫佺姸鎬�
+        serviceSubtaskPreachform.setSendstate("1");
+        //鐢佃瘽鐨勬湭鍙戦�佺姸鎬侊紝闇�瑕佹煡2锛屽洜涓猴紝鏁版嵁鍙兘鍗″湪闃熷垪閲屼簡; 锛堟病杩涢槦鍒楋紝鐢佃瘽鐘舵�佽繕鏄�1锛�
+        if (preachform.equals("3") && StringUtils.isNotEmpty(failSendstate) && Long.valueOf(failSendstate) > 2)
+            serviceSubtaskPreachform.setSendstate("2");
+        //浜哄伐鐨勬湭鍙戦�佺姸鎬侊紝闇�瑕佹煡2
+        if (preachform.equals("1") && StringUtils.isNotEmpty(failSendstate) && Long.valueOf(failSendstate) > 2)
+            serviceSubtaskPreachform.setSendstate("2");
+
+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
+            ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0);
+            serviceSubtaskPreachform1.setSendstate(failSendstate);
+            serviceSubtaskPreachform1.setRemark(remark);
+            serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
+
+            //濡傛灉褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡锛岄偅鐩存帴灏唖erviceSubtask鐨剆endstate鐘舵�佹敼鎴�5灏辫浜�(鍏ㄥけ璐ヤ簡)
+            if (serviceSubtaskPreachform1.getSort() == sspCount.size()) {
+                if (failSendstate.equals("4") || failSendstate.equals("5")) {
+                    serviceSubtask.setCurrentPreachform(preachform);
+                    serviceSubtask.setSendstate(5L);
+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                    return true;
+                }
+            }
+        } else {
+            log.error("銆愬畾鏃朵换鍔′腑璇ユ偅鑰呮病鏈夋煡璇㈠埌灞炰簬浠栫殑鍙戦�佹柟寮忥紝subid锛歿},prechform:{},orgid:{}銆�", serviceSubtask.getId(), preachform, serviceSubtask.getOrgid());
+            return false;
+        }
+        //灏嗕笅涓�娆$殑闅忚鏃堕棿涓庡綋鍓嶆墽琛屾柟寮忚褰曚竴涓�
+        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime()));
+        serviceSubtask.setCurrentPreachform(preachform);
+        serviceSubtask.setSendstate(3L);
+        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+        return true;
+    }
 }

--
Gitblit v1.9.3