From 10aaa035f5be0312304d20f022bdb714a8f4900a Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期三, 11 十二月 2024 22:16:23 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java |  724 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 718 insertions(+), 6 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 4179ed5..dd4509f 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
@@ -1,25 +1,133 @@
 package com.ruoyi.quartz.task;
 
-import com.smartor.domain.ServiceThirdData;
-import com.smartor.service.IServiceSubtaskAnswerService;
-import com.smartor.service.IServiceThirdDataService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.enums.ServiceFromEnum;
+import com.ruoyi.common.utils.DtoConversionUtils;
+import com.ruoyi.common.utils.HttpUtil;
+import com.ruoyi.common.utils.RSAPublicKeyExample;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.http.HttpUtils;
+import com.smartor.common.SendService;
+import com.smartor.domain.*;
+import com.smartor.mapper.ServiceSubtaskMapper;
+import com.smartor.mapper.ServiceTaskMapper;
+import com.smartor.mapper.SysUserImportMapper;
+import com.smartor.service.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Date;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Type;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
 
 /**
  * 瀹氭椂浠诲姟璋冨害娴嬭瘯
  *
  * @author ruoyi
  */
+@Slf4j
 @Component("ryTask")
 public class RyTask {
     @Autowired
     private IServiceThirdDataService iServiceThirdDataService;
+
+    @Autowired
+    private IServiceOutPathService iServiceOutPathService;
+
     @Autowired
     private IServiceSubtaskAnswerService serviceSubtaskAnswerService;
+
+    @Autowired
+    private IPatMedInhospService iPatMedInhospService;
+
+    @Autowired
+    private IServiceSubtaskService iServiceSubtaskService;
+
+    @Autowired
+    private IServicePatientTempService iServicePatientTempService;
+
+    @Autowired
+    private PlatformTransactionManager transactionManager;
+
+    @Autowired
+    private SysUserImportMapper sysUserImportMapper;
+
+    @Value("${localIP}")
+    private String localIP;
+
+    @Value("${xhsmsPath}")
+    private String xhsmsPath;
+
+    @Value("${pub_key}")
+    private String pub_key;
+
+    @Value("${thirdWXUrl}")
+    private String thirdWXUrl;
+
+    @Value("${req_path}")
+    private String req_path;
+
+    @Autowired
+    private ServiceTaskMapper serviceTaskMapper;
+
+    @Autowired
+    private ServiceSubtaskMapper serviceSubtaskMapper;
+
+    @Autowired
+    private RedisCache redisCache;
+
+    @Autowired
+    private IServiceSubtaskRecordService serviceSubtaskRecordService;
+
+    @Autowired
+    IBaseSmsaccountService baseSmsaccountService;
+
+    @Autowired
+    IPatArchiveService patArchiveService;
+
+    @Autowired
+    IPatMedInhospService patMedInhospService;
+
+    @Autowired
+    IPatMedOuthospService patMedOuthospService;
+
+    @Autowired
+    ISvyTaskTemplateService svyTaskTemplateService;
+
+    @Autowired
+    IIvrTaskTemplateService iIvrTaskTemplateService;
+
+    @Value("${hosp_info_url}")
+    private String hospInfoUrl;
 
     public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) {
         System.out.println(StringUtils.format("鎵ц澶氬弬鏂规硶锛� 瀛楃涓茬被鍨媨}锛屽竷灏旂被鍨媨}锛岄暱鏁村瀷{}锛屾诞鐐瑰瀷{}锛屾暣褰}", s, b, l, d, i));
@@ -31,6 +139,34 @@
 
     public void ryNoParams() {
         System.out.println("鎵ц鏃犲弬鏂规硶");
+    }
+
+    public void importData() {
+        String filePath = "C:\\Users\\86176\\Desktop\\鏂板缓鏂囨湰鏂囨。 4.txt"; // 鏇挎崲涓轰綘鐨勬枃浠惰矾寰�
+
+        try {
+            // 璇诲彇鏂囦欢鍐呭
+            String jsonContent = new String(Files.readAllBytes(Paths.get(filePath)), StandardCharsets.UTF_8);
+
+            // 鍒涘缓ObjectMapper瀵硅薄
+            ObjectMapper objectMapper = new ObjectMapper();
+            // 瑙f瀽JSON涓篔sonNode
+            JsonNode rootNode = objectMapper.readTree(jsonContent);
+            // 鑾峰彇resultList
+            JsonNode resultListNode = rootNode.path("results").path("resultList");
+            // 閬嶅巻resultList涓殑姣忎釜瀵硅薄
+            for (JsonNode item : resultListNode) {
+
+                SysUserImport person = objectMapper.treeToValue(item, SysUserImport.class);
+                person.setStaffPhoto("");
+                sysUserImportMapper.insertSysUserImport(person);
+
+            }
+
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
     }
 
     public void analysisData() {
@@ -50,4 +186,580 @@
     public void runServiceSubTaskAnswer() {
         serviceSubtaskAnswerService.saveQuestionAnswer(null);
     }
+
+
+    /**
+     * 澶勭悊his鏁版嵁
+     */
+    public void dealHisData() {
+        //灏嗘偅鑰呬俊鎭�佸嚭闄€�侀棬璇婃暟鎹叏閮ㄩ噰闆�
+        // 鑾峰彇褰撳墠鏃ユ湡鍜屾椂闂�
+        LocalDateTime endTime = LocalDateTime.now();
+        endTime = endTime.with(LocalTime.MIN);
+//        String dateStr = "2024/11/30 00:00:00";
+//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
+//        LocalDateTime endTime = LocalDateTime.parse(dateStr, formatter);
+        // 鑾峰彇鍓嶄竴澶╃殑鏃ユ湡鍜屾椂闂�
+        LocalDateTime startTime = endTime.minusDays(1);
+        startTime = startTime.with(LocalTime.MIN);
+        getInHospInfo("0", startTime, endTime);
+        getInHospInfo("1", startTime, endTime);
+
+        //璋冪敤dealOupHospInfo鏁版嵁澶勭悊鏂规硶锛屽鐞嗗畬鍚庯紝灏嗏�滃嚭闄㈣〃鐨刢heck_flag=1鈥�
+        //鑾峰彇褰撳墠鏃ユ湡 锛堢簿纭埌澶╋級寰�鍓嶆帹鐩稿簲澶╂暟锛堝湪鎸囧畾鐨勫熀纭�妯℃澘涓壘瀵瑰簲鐨勫ぉ鏁帮級锛�
+        //寰幆鎮h�呬俊鎭紝鏍规嵁鎮h��"鍑洪櫌璇婃柇ICD鍊尖�濊幏鍙栧埌鐩稿綋鐨勬ā鏉匡紙鑾峰彇鍙栫浉搴旂殑澶╂暟锛�;
+        //鏍规嵁鏌ヨ鍑烘潵鐨勬ā鏉匡紝鍘诲浐瀹氫换鍔★紙鍥哄畾浠诲姟锛屽凡缁忓皢妯℃澘涔熷浐瀹氫簡锛夊幓鍖归厤妯℃澘
+        //鏍规嵁鍖归厤鍑烘潵鐨勬ā鏉垮拰浠诲姟涓庢偅鑰呬俊鎭紝灏嗘暟鎹彃鍏ュ埌瀛愪换鍔¤〃涓�
+    }
+
+    public void dealHisData2() {
+        //灏嗘偅鑰呬俊鎭�佸嚭闄€�侀棬璇婃暟鎹叏閮ㄩ噰闆�
+        // 鎸囧畾鐨勫紑濮嬫棩鏈�
+        LocalDate endDate = LocalDate.of(2024, 9, 1);
+        // 褰撳墠鏃ユ湡
+        LocalDate currentDate = LocalDate.now();
+        // 瀹氫箟鏃ユ湡鏍煎紡
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd ");
+
+        // 浠庡紑濮嬫棩鏈熷埌褰撳墠鏃ユ湡閫愬ぉ鎵撳嵃
+        for (LocalDate date = endDate; !date.isAfter(currentDate); date = date.plusDays(1)) {
+            System.out.println(date.format(formatter));
+            getInHospInfo("0", date.minusDays(1).atStartOfDay(), date.atStartOfDay());
+            getInHospInfo("1", date.minusDays(1).atStartOfDay(), date.atStartOfDay());
+        }
+
+    }
+
+    /**
+     * 澶勭悊鎮h�呬俊鎭紝杩涘叆瀛愪换鍔¤〃
+     */
+    public void dealOutHospInfo() {
+        iPatMedInhospService.dealOutHospInfo();
+    }
+
+    /**
+     * 澶勭悊鎮h�呬俊鎭紝杩涘叆瀛愪换鍔¤〃(寰俊灏忕▼搴�)
+     */
+    public void dealOutHospInfoXHC() {
+        PatMedInhosp patMedInhosp = new PatMedInhosp();
+        //鑾峰彇鏈鐞嗙殑鏁版嵁
+        List<ServicePatientTemp> servicePatientTemps = iServicePatientTempService.selectServicePatientTempList(new ServicePatientTemp());
+
+    }
+
+
+    /**
+     * 闀挎湡浠诲姟鎵ц锛堢數璇濓級
+     */
+    public void longTaskSend() {
+        //鑾峰彇浠诲姟淇℃伅
+        ServiceTask st = new ServiceTask();
+        st.setDelFlag("0");
+        st.setLongTask(1);
+        List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);
+        log.error("serviceTasks杩涙潵浜嗗悧锛焮}", serviceTasks);
+        for (ServiceTask serviceTask : serviceTasks) {
+            CommonTaskcallMQ commonTaskcallMQ = new CommonTaskcallMQ();
+            commonTaskcallMQ.setTaskid(serviceTask.getTaskid());
+            commonTaskcallMQ.setPreachform(serviceTask.getPreachform());
+            commonTaskcallMQ.setSendType("2");
+            sfHandlle(commonTaskcallMQ, localIP);
+        }
+    }
+
+    /**
+     * 鍒ゆ柇鏃ユ湡鏄惁鏄粖澶�
+     *
+     * @param date
+     * @return
+     */
+    public boolean isDateToday(Date date) {
+        //濡傛灉缁欑殑鏃ユ湡灏忎簬褰撳墠鏃ユ湡锛屼篃鐩存帴鍙戦��
+        LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+        if (localDateTime.isBefore(LocalDateTime.now())) {
+            return true;
+        }
+        // 鑾峰彇褰撳墠鏃ユ湡
+        Calendar calendarNow = Calendar.getInstance();
+        int todayYear = calendarNow.get(Calendar.YEAR);
+        int todayMonth = calendarNow.get(Calendar.MONTH);
+        int todayDay = calendarNow.get(Calendar.DAY_OF_MONTH);
+
+        // 鍒涘缓涓�涓� Calendar 瀹炰緥鐢ㄤ簬妫�鏌ョ殑鏃ユ湡
+        Calendar calendarToCheck = Calendar.getInstance();
+        calendarToCheck.setTime(date);
+
+        // 姣旇緝骞淬�佹湀鍜屾棩
+        return (calendarToCheck.get(Calendar.YEAR) == todayYear && calendarToCheck.get(Calendar.MONTH) == todayMonth && calendarToCheck.get(Calendar.DAY_OF_MONTH) == todayDay);
+    }
+
+    public void sfHandlle(CommonTaskcallMQ commonTaskcallMQ, String ip) {
+        log.error("sfHandlle杩涙潵浜嗗悧锛焮}", commonTaskcallMQ);
+        //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜�
+        ServiceTask ivrTask1 = serviceTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());
+
+        if (StringUtils.isNotEmpty(commonTaskcallMQ.getPreachform())) {
+            //濡備綍浠诲姟鍙戦�佹柟寮忎笉涓虹┖
+            String[] split = commonTaskcallMQ.getPreachform().split(",");
+            log.error("split杩涙潵浜嗗悧锛焮}", 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> selectServiceSubtaskList = iServiceSubtaskService.selectServiceSubtaskList(ivrTaskcall);
+                if (descByCode.equals("鐢佃瘽")) {
+                    String value = "";
+                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
+                        ServiceTask ivrTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+                        if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {
+                            //濡備綍浠诲姟琚�滄殏鍋溾�濇垨鈥滅粓姝⑩��
+                            break;
+                        }
+                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());
+                        //璇存槑鏄珛鍗冲彂閫�(鍏堟妸娑堟伅鏀惧埌cache-0涓紝   displayNo涓嶇煡閬撴�庝箞閰嶇疆)
+                        if (dateToday) {
+                            try {
+//                                ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO();
+//                                serviceSubtask1.setTaskid(ivrTask.getTaskid());
+//                                List<ServiceSubtask> selectServiceSubtaskList1 = iServiceSubtaskService.selectServiceSubtaskList(serviceSubtask1);
+//                                for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) {
+                                if (StringUtils.isEmpty(value)) {
+                                    value = "," + serviceSubtask.getId().toString() + ",";
+                                } else {
+                                    if (!value.contains("," + serviceSubtask.getId().toString()))
+                                        value = value + "," + serviceSubtask.getId().toString() + ",";
+                                }
+//                                }
+                            } catch (Exception e) {
+                                String guid = UUID.randomUUID().toString();
+                                log.error("闀挎湡浠诲姟锛岀數璇濆彂閫佸け璐ュ師鍥狅細{},{}", e.getMessage(), guid);
+                                serviceSubtask.setResult("error");
+                                serviceSubtask.setRemark("绯荤粺閿欒");
+                                serviceSubtask.setSendstate(3L);
+                                serviceSubtask.setFinishtime(new Date());
+                                serviceSubtask.setGuid(guid);
+                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
+                            }
+
+                            //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
+                            String uuid = UUID.randomUUID().toString();
+                            serviceSubtask.setResult("success");
+                            serviceSubtask.setRemark("闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔�");
+                            serviceSubtask.setGuid(uuid);
+                            serviceSubtask.setSendstate(3L);
+                            serviceSubtask.setFinishtime(new Date());
+                            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);
+
+                        }
+//                        //閫氳繃澶氱嚎绋嬬殑鏂瑰紡鍘绘墦鐢佃瘽锛堣繖涓槸涓婃捣鐨勬柟娉曪級
+//                        executorService.submit(new PhoneTask(serviceSubtask, ivrTaskTemplateVO1, redisCache, sendService, phonePath, robotPhoneUtils));
+                    }
+                    //灏嗚鎵ц鐨勬斁鍒扮紦瀛樹腑
+                    String cache0 = redisCache.getCacheObject("cache-0");
+                    if (StringUtils.isNotEmpty(cache0)) {
+                        redisCache.setCacheObject("cache-0", cache0 + value);
+                    } else if (StringUtils.isEmpty(cache0) && StringUtils.isNotEmpty(value)) {
+                        redisCache.setCacheObject("cache-0", value);
+                    }
+                } else if (descByCode.equals("澶氬獟浣�")) {
+                    //澶氬獟浣�
+                } else if (descByCode.equals("绾歌川")) {
+                    //绾歌川
+                } else if (descByCode.equals("寰俊灏忕▼搴�")) {
+                    //寰俊灏忕▼搴�
+                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
+                        log.error("寰俊灏忕▼搴忔湡浠诲姟鍙戦��---------杩涙潵浜嗗悧锛焮}", serviceSubtask);
+
+
+                    }
+                } else if (descByCode.equals("鐭俊")) {
+                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
+                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
+                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
+                        log.error("鐭俊闀挎湡浠诲姟鍙戦��---------杩涙潵浜嗗悧锛焮}", serviceSubtask);
+                        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);
+                                    serviceSubtask.setFinishtime(new Date());
+                                    iServiceSubtaskService.insertServiceSubtask(serviceSubtask);
+                                    continue;
+                                }
+                                String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().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.setCreateTime(new Date());
+                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
+                                String format = String.format("%03X", serviceOutPath.getId());
+                                serviceOutPath.setRadix(format);
+                                serviceOutPath.setUpdateTime(new Date());
+                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
+                                sendMagParam.setPhone(serviceSubtask.getPhone());
+                                sendMagParam.setUrl(ip + ":" + req_path + "/wt?p=" + format);
+                                sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
+                                Map<String, String> req = new HashMap<>();
+                                req.put("phone", sendMagParam.getPhone());
+                                req.put("content", sendMagParam.getContent());
+                                String isSuccess = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));
+                                //浠诲姟鍙戦�佽褰�
+                                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("闀挎湡浠诲姟锛岀煭淇″彂閫佸け璐ュ師鍥狅細{},{}", e.getMessage(), guid);
+                                serviceSubtask.setResult("error");
+                                serviceSubtask.setRemark("绯荤粺閿欒");
+                                serviceSubtask.setSendstate(5L);
+                                serviceSubtask.setFinishtime(new Date());
+                                serviceSubtask.setGuid(guid);
+                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
+                            }
+                        }
+                    }
+                } else if (descByCode.equals("鍏紬鍙�")) {
+                    log.error("鍏紬鍙疯繘鏉ヤ簡鍚楋紵{}", descByCode);
+                    //鍏紬鍙�
+                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
+                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
+                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
+                        log.error("serviceSubtask---------杩涙潵浜嗗悧锛焮}", serviceSubtask);
+                        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);
+                                    serviceSubtask.setFinishtime(new Date());
+                                    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";
+                                String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), "鏃�");
+                                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 {
+                                    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("闀挎湡浠诲姟锛屽叕浼楀彿鍙戦�佸け璐ュ師鍥狅細{},{}", e.getMessage(), guid);
+                                serviceSubtask.setResult("error");
+                                serviceSubtask.setRemark("绯荤粺閿欒");
+                                serviceSubtask.setSendstate(5L);
+                                serviceSubtask.setFinishtime(new Date());
+                                serviceSubtask.setGuid(guid);
+                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
+                            }
+                        }
+                    }
+                }
+                //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
+            }
+        }
+    }
+
+
+    /**
+     * 鑾峰嚭闄㈡偅鑰呬俊鎭�
+     * cry    鍑哄叆闄細 0 鍏ラ櫌   1 鍑洪櫌
+     */
+    @Transactional
+    public void getInHospInfo(String cry, LocalDateTime startTime, LocalDateTime endTime) {
+        // 瀹氫箟鏃ユ湡鏃堕棿鏍煎紡
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S");
+        Map<String, String> req = new HashMap<>();
+        if (cry.equals("1")) {
+            req.put("cashStartDate", startTime.format(formatter));
+            req.put("cashEndDate", endTime.format(formatter));
+            req.put("currStatus", "4");
+        } else if (cry.equals("0")) {
+            req.put("admissStartDate", startTime.format(formatter));
+            req.put("admissEndDate", endTime.format(formatter));
+            req.put("currStatus", "2");
+        }
+        Map<String, String> header = new HashMap<>();
+        header.put("x-hcsb-serviceno", "IS002347");
+        header.put("x-hcsb-version", "2.0");
+        header.put("x-hcsb-sourcesyscode", "14");
+        header.put("x-hcsb-token", "ArGE2JnHtxG/Zx5nrnGY4eOfMUJGGJokAJHigG1BrCY=");
+        header.put("x-hcsb-msgdate", startTime.format(formatter));
+        String result = HttpUtils.sendPostByHeader(hospInfoUrl, new Gson().toJson(req), header);
+        //鏁版嵁瑙f瀽
+        Gson gson = new Gson();
+        JsonObject jsonObject = gson.fromJson(result, JsonObject.class);
+        JsonArray resultArray = jsonObject.getAsJsonObject("data").getAsJsonArray("result");
+        Type resultType = new TypeToken<List<ThiedInhospInfo>>() {
+        }.getType();
+        List<ThiedInhospInfo> thiedInhospInfoList = gson.fromJson(resultArray, resultType);
+
+        // 鍒涘缓涓�涓柊鏂囦欢
+        String filename = null;
+        if (cry.equals("0")) filename = "鍏ラ櫌淇℃伅" + System.currentTimeMillis();
+        if (cry.equals("1")) filename = "鍑洪櫌淇℃伅" + System.currentTimeMillis();
+        File file = new File("D:\\public\\鍗庡崜闆嗘垚骞冲彴鏁版嵁\\" + filename);
+        if (!file.exists()) {
+            // 濡傛灉鏂囦欢涓嶅瓨鍦紝鍒欏垱寤烘柊鏂囦欢
+            try {
+                if (file.createNewFile()) {
+                    System.out.println("鎴愬姛鍒涘缓浜嗘柊鏂囦欢!");
+                } else {
+                    System.out.println("澶辫触锛佹枃浠舵棤娉曞垱寤猴紒");
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        // 灏嗘暟鎹啓鍏ュ埌鏂囦欢涓�
+        try {
+            FileWriter writer = new FileWriter(file);
+            writer.write(result);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        if (CollectionUtils.isNotEmpty(thiedInhospInfoList)) {
+            for (ThiedInhospInfo thiedInhospInfo : thiedInhospInfoList) {
+                //閫氳繃韬唤璇佸彿鏌ヨ璇ユ偅鑰呭湪鎮h�呰〃鏄惁瀛樺湪
+                PatArchive patArchive = new PatArchive();
+                List<PatArchive> patArchives = null;
+                patArchive.setIdcardno(thiedInhospInfo.getPatiIdCardNo().trim());
+                if (StringUtils.isNotEmpty(thiedInhospInfo.getPatiIdCardNo().trim())) {
+                    patArchives = patArchiveService.selectPatArchiveList(patArchive);
+                } else {
+                    //鎮h�呬俊鎭负绌猴紝鐩存帴 涓嬩竴涓�
+                    continue;
+                }
+                if (CollectionUtils.isEmpty(patArchives) || patArchives.size() == 0) {
+                    patArchive.setPatientno(thiedInhospInfo.getPatiMediaNo());
+                    patArchive.setSourcefrom(2);
+                    patArchive.setPattype("2");
+                    if (StringUtils.isNotEmpty(thiedInhospInfo.getOutWayId()) && thiedInhospInfo.getOutWayId().equals("4")) {
+                        //濡傛灉涓�4灏辨槸姝讳骸
+                        patArchive.setNotrequiredFlag("1");
+                        patArchive.setNotrequiredreason(thiedInhospInfo.getOutWayName());
+                    }
+                    if (cry.equals("1") && StringUtils.isEmpty(thiedInhospInfo.getOutWayId())) {
+                        //鍑洪櫌鏂瑰紡涓虹┖
+                        patArchive.setNotrequiredFlag("1");
+                        patArchive.setNotrequiredreason("鍑洪櫌鏂瑰紡涓虹┖");
+                    }
+                    patArchive.setSex(thiedInhospInfo.getPatiRecordGender().equals("鐢�") ? 1L : 2L);
+                    patArchive.setNation(thiedInhospInfo.getPatiNation());
+                    patArchive.setNativePlace(thiedInhospInfo.getPatiNationality());
+                    patArchive.setPlaceOfResidence(thiedInhospInfo.getPatiHomeAddr());
+                    try {
+                        if (StringUtils.isNotEmpty(thiedInhospInfo.getPatiBirthday()))
+                            patArchive.setBirthdate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getPatiBirthday()));
+                    } catch (ParseException e) {
+                        e.printStackTrace();
+                    }
+                    if (thiedInhospInfo.getTreateAge() != null) {
+                        patArchive.setAge(Long.valueOf(thiedInhospInfo.getTreateAge()));
+                    } else {
+                        patArchive.setAge(null);
+                    }
+                    patArchive.setAgeUnit(thiedInhospInfo.getTreatAgeunit());
+                    patArchive.setTelcode(thiedInhospInfo.getCompanyTelNum());
+                    patArchive.setRelativetelcode(thiedInhospInfo.getContactPersonPhone());
+                    patArchive.setDelFlag("0");
+                    patArchive.setCreateTime(new Date());
+                    patArchive.setUpdateTime(new Date());
+                    patArchive.setName(thiedInhospInfo.getPatiRecordName());
+                    patArchiveService.insertPatArchive(patArchive);
+                } else {
+                    patArchive.setId(patArchives.get(0).getId());
+                    patArchiveService.update(patArchive);
+//                    patArchive = patArchives.get(0);
+                }
+
+                log.error("鍏ュ弬鐨刾atArchive锛歿}", patArchive);
+                PatMedInhosp patMedInhosp = new PatMedInhosp();
+                patMedInhosp.setPatid(patArchive.getId());
+                patMedInhosp.setPatno(patArchive.getPatientno());
+                patMedInhosp.setPatname(patArchive.getName());
+                patMedInhosp.setNurseId(thiedInhospInfo.getNurseId());
+                patMedInhosp.setNurseName(thiedInhospInfo.getNurseName());
+                patMedInhosp.setSerialnum(thiedInhospInfo.getInpatientId());
+                if (cry.equals("0")) {
+                    patMedInhosp.setInhospstate("0");
+                } else if (cry.equals("1")) {
+                    patMedInhosp.setInhospstate("1");
+                }
+                patMedInhosp.setHospitalcode(thiedInhospInfo.getAreaId());
+                patMedInhosp.setIcd10code(thiedInhospInfo.getDiagIcd10());
+                patMedInhosp.setDiagname(thiedInhospInfo.getDiagName());
+                try {
+                    if (StringUtils.isNotEmpty(thiedInhospInfo.getAdmissDate()))
+                        patMedInhosp.setStarttime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getAdmissDate()));
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+                try {
+                    if (StringUtils.isNotEmpty(thiedInhospInfo.getCashDate()))
+                        patMedInhosp.setEndtime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getCashDate()));
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+                patMedInhosp.setDeptcode(thiedInhospInfo.getAdmissDeptId());
+                patMedInhosp.setDeptid(thiedInhospInfo.getAdmissDeptId());
+                patMedInhosp.setDeptname(thiedInhospInfo.getAdmissDeptName());
+                patMedInhosp.setBedNo(thiedInhospInfo.getAdmissBedNo());
+                patMedInhosp.setDelFlag("0");
+//                patMedInhosp.setLeaveldeptcode(thiedInhospInfo.getCurrDeptCode());
+                patMedInhosp.setLeaveldeptcode(thiedInhospInfo.getCurrDeptId());
+                patMedInhosp.setLeaveldeptname(thiedInhospInfo.getCurrDeptName());
+                patMedInhosp.setLeavediagname(thiedInhospInfo.getDiagName());
+                patMedInhosp.setLeaveicd10code(thiedInhospInfo.getDiagIcd10());
+                patMedInhosp.setDrname(thiedInhospInfo.getDoctName());
+                patMedInhosp.setDrcode(thiedInhospInfo.getDoctId());
+                patMedInhosp.setOutWayId(thiedInhospInfo.getOutWayId());
+                patMedInhosp.setOutWayName(thiedInhospInfo.getOutWayName());
+                if (cry.equals("0")) {
+                    patMedInhosp.setSchemestatus(1L);
+                } else if (cry.equals("1")) {
+                    patMedInhosp.setSchemestatus(2L);
+                }
+                patMedInhosp.setLeavehospitaldistrictid(thiedInhospInfo.getCurrWardCode());
+                patMedInhosp.setLeavehospitaldistrictcode(thiedInhospInfo.getCurrWardId());
+                patMedInhosp.setLeavehospitaldistrictname(thiedInhospInfo.getCurrWardName());
+                patMedInhosp.setLeaveldeptid(thiedInhospInfo.getCurrDeptCode());
+                //濡傛灉鏄嚭闄紝鍏堥�氳繃鎮h�呯紪鍙峰拰娴佹按鍙峰幓鏌ヤ竴涓嬶紝鎮h�呮槸鍚﹀瓨鍦紝濡傛灉瀛樺湪锛屽垯杩涜淇敼
+                PatMedInhosp inhosp = new PatMedInhosp();
+                inhosp.setPatno(patArchive.getPatientno());
+                inhosp.setSerialnum(patMedInhosp.getSerialnum());
+                List<PatMedInhosp> patMedInhosps = patMedInhospService.selectPatMedInhospList(inhosp);
+                log.error("鏄惁闇�瑕佹洿鏂帮細{}", patMedInhosps.size());
+                if (CollectionUtils.isNotEmpty(patMedInhosps)) {
+                    patMedInhosp.setInhospid(patMedInhosps.get(0).getInhospid());
+                    log.error("------鎮h�呭嚭鍏ラ櫌淇敼淇℃伅锛歿}", patMedInhosp);
+                    patMedInhospService.updatePatMedInhosp(patMedInhosp);
+                } else {
+                    log.error("----鎮h�呭嚭鍏ラ櫌鏂板淇℃伅锛歿}", patMedInhosp);
+                    patMedInhospService.insertPatMedInhosp(patMedInhosp);
+                }
+
+            }
+        }
+    }
+
+
+    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));
+            }
+        }
+
+        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();
+                }
+            }
+        }
+        return key;
+    }
+
+    private String getWXCode(String idcard, String url, String taskName, String taskDesc, String submitprompt) {
+        XinHuaWXReq xinHuaWXReq = new XinHuaWXReq();
+        xinHuaWXReq.setIdcard(idcard);
+        xinHuaWXReq.setUrl(url);
+        xinHuaWXReq.setKeyword1("娴欎腑鍖诲ぇ浜岄櫌鍑洪櫌闅忚");
+        xinHuaWXReq.setKeyword2(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        xinHuaWXReq.setKeyword3(taskName);
+        xinHuaWXReq.setKeyword4("鐤剧梾搴峰娉ㄦ剰浜嬮」");
+
+        String result = HttpUtils.sendPost(thirdWXUrl, new Gson().toJson(xinHuaWXReq));
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        log.error("jsonObject鐨勬暟鎹负锛歿}", jsonObject.toString());
+//        String code = (String) jsonObject.get("code");
+        return jsonObject.toString();
+    }
+
+//    public static void main(String[] args) {
+//        LocalDateTime originalDateTime = LocalDateTime.now();
+//        LocalDateTime startOfDay = originalDateTime.with(LocalTime.MIN);
+//        System.out.println("Original DateTime: " + originalDateTime);
+//        System.out.println("Start of Day: " + startOfDay);
+//    }
 }

--
Gitblit v1.9.3