From a4bc7ba7a708cf2867f3027f593ef72c0d8acf78 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期六, 06 九月 2025 17:46:14 +0800
Subject: [PATCH] 单点登陆白名单访问功能
---
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java | 565 +++++++++++++++++++++++++++-----------------------------
1 files changed, 274 insertions(+), 291 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 63b3176..30ae035 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,48 +1,40 @@
package com.ruoyi.quartz.task;
-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.MsgLSEnum;
import com.ruoyi.common.enums.ServiceFromEnum;
-import com.ruoyi.common.utils.DtoConversionUtils;
+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.smartor.common.SendService;
+import com.ruoyi.quartz.service.ICollectHISService;
+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.service.*;
-import com.sun.org.apache.bcel.internal.generic.NEW;
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.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.security.MessageDigest;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
@@ -50,6 +42,8 @@
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
+
+import static cn.hutool.core.convert.Convert.toHex;
/**
* 瀹氭椂浠诲姟璋冨害娴嬭瘯
@@ -72,6 +66,9 @@
private IPatMedInhospService iPatMedInhospService;
@Autowired
+ private IPatMedOuthospService iPatMedOuthospService;
+
+ @Autowired
private IPatMedOperationService iPatMedOperationService;
@Autowired
@@ -81,10 +78,17 @@
private IServicePatientTempService iServicePatientTempService;
@Autowired
- private PlatformTransactionManager transactionManager;
+ private IHNGatherPatArchiveService ihnGatherPatArchiveService;
@Autowired
private SysUserImportMapper sysUserImportMapper;
+
+ @Autowired
+ private HeLibraryMapper heLibraryMapper;
+
+ @Autowired
+ private ICollectHISService ichService;
+
@Value("${localIP}")
private String localIP;
@@ -95,11 +99,11 @@
@Value("${pub_key}")
private String pub_key;
- @Value("${thirdWXUrl}")
- private String thirdWXUrl;
-
@Value("${req_path}")
private String req_path;
+
+ @Value("${visitHosp}")
+ private Integer visitHosp;
@Autowired
private ServiceTaskMapper serviceTaskMapper;
@@ -119,8 +123,6 @@
@Autowired
IPatArchiveService patArchiveService;
- @Autowired
- IPatMedInhospService patMedInhospService;
@Autowired
IPatMedOuthospService patMedOuthospService;
@@ -131,8 +133,22 @@
@Autowired
IIvrTaskTemplateService iIvrTaskTemplateService;
- @Value("${hosp_info_url}")
- private String hospInfoUrl;
+ @Autowired
+ IXHGatherPatArchiveService ixhGatherPatArchiveService;
+
+ @Autowired
+ ICollectHISService icollectHis;
+
+
+ @Value("${appid}")
+ private String appid;
+
+ @Value("${server.port}")
+ private String port;
+
+
+ @Value("${spring.profiles.active}")
+ private String active;
public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) {
System.out.println(StringUtils.format("鎵ц澶氬弬鏂规硶锛� 瀛楃涓茬被鍨媨}锛屽竷灏旂被鍨媨}锛岄暱鏁村瀷{}锛屾诞鐐瑰瀷{}锛屾暣褰}", s, b, l, d, i));
@@ -194,31 +210,49 @@
/**
- * 澶勭悊his鏁版嵁
+ * 澶勭悊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);
+ log.info("銆恉ealHisData銆戝紑濮嬫墽琛孒IS鏁版嵁閲囬泦浠诲姟");
+ // 鑾峰彇鏄ㄥぉ0鐐瑰埌浠婂ぉ0鐐圭殑鏃堕棿鑼冨洿
+ LocalDateTime todayZero = LocalDateTime.now().with(LocalTime.MIN);
+ LocalDateTime yesterdayZero = todayZero.minusDays(1);
+ log.info("銆恉ealHisData銆戦噰闆嗘椂闂磋寖鍥达細{} ~ {}", yesterdayZero, todayZero);
- //璋冪敤dealOupHospInfo鏁版嵁澶勭悊鏂规硶锛屽鐞嗗畬鍚庯紝灏嗏�滃嚭闄㈣〃鐨刢heck_flag=1鈥�
- //鑾峰彇褰撳墠鏃ユ湡 锛堢簿纭埌澶╋級寰�鍓嶆帹鐩稿簲澶╂暟锛堝湪鎸囧畾鐨勫熀纭�妯℃澘涓壘瀵瑰簲鐨勫ぉ鏁帮級锛�
- //寰幆鎮h�呬俊鎭紝鏍规嵁鎮h��"鍑洪櫌璇婃柇ICD鍊尖�濊幏鍙栧埌鐩稿綋鐨勬ā鏉匡紙鑾峰彇鍙栫浉搴旂殑澶╂暟锛�;
- //鏍规嵁鏌ヨ鍑烘潵鐨勬ā鏉匡紝鍘诲浐瀹氫换鍔★紙鍥哄畾浠诲姟锛屽凡缁忓皢妯℃澘涔熷浐瀹氫簡锛夊幓鍖归厤妯℃澘
- //鏍规嵁鍖归厤鍑烘潵鐨勬ā鏉垮拰浠诲姟涓庢偅鑰呬俊鎭紝灏嗘暟鎹彃鍏ュ埌瀛愪换鍔¤〃涓�
+ if (active.trim().equals("xh")) {
+ try {
+ // 閲囬泦鍏ラ櫌鏁版嵁
+ log.info("銆恉ealHisData銆戞柊鍗庡紑濮嬮噰闆嗗叆闄㈡暟鎹�");
+ ixhGatherPatArchiveService.getInHospDataGather("0", yesterdayZero, todayZero);
+ log.info("銆恉ealHisData銆戞柊鍗庡叆闄㈡暟鎹噰闆嗗畬鎴�");
+
+ // 閲囬泦鍑洪櫌鏁版嵁
+ log.info("銆恉ealHisData銆戞柊鍗庡紑濮嬮噰闆嗗嚭闄㈡暟鎹�");
+ ixhGatherPatArchiveService.getInHospDataGather("1", yesterdayZero, todayZero);
+ log.info("銆恉ealHisData銆戞柊鍗庡嚭闄㈡暟鎹噰闆嗗畬鎴�");
+
+ } catch (Exception e) {
+ log.error("銆恉ealHisData銆戞柊鍗庢暟鎹噰闆嗗紓甯�", e);
+ }
+ } else if (active.trim().equals("hn")) {
+ try {
+ // 娌冲崡鏁版嵁閲囬泦
+ HnDataGatherVO hnDataGatherVO = new HnDataGatherVO();
+ log.info("銆恉ealHisData銆戞渤鍗楀紑濮嬮噰闆嗘暟鎹�");
+ ihnGatherPatArchiveService.hnDataGather(hnDataGatherVO);
+ log.info("銆恉ealHisData銆戞渤鍗楃粨鏉熼噰闆嗘暟鎹�");
+ } catch (Exception e) {
+ log.error("銆恉ealHisData銆戞渤鍗楁暟鎹噰闆嗗紓甯�", e);
+ }
+ }
}
+ /**
+ * 杩欎釜鍙槸鏂板崕涓存椂浣跨敤锛屽钩鏃剁敤涓嶅埌
+ */
public void dealHisData2() {
- //灏嗘偅鑰呬俊鎭�佸嚭闄€�侀棬璇婃暟鎹叏閮ㄩ噰闆�
+ //灏嗘偅鑰呬俊鎭�佸嚭鍏ラ櫌鏁版嵁鍏ㄩ儴閲囬泦
// 鎸囧畾鐨勫紑濮嬫棩鏈�
LocalDate endDate = LocalDate.of(2025, 3, 3);
// 褰撳墠鏃ユ湡
@@ -229,8 +263,8 @@
// 浠庡紑濮嬫棩鏈熷埌褰撳墠鏃ユ湡閫愬ぉ鎵撳嵃
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());
+ ixhGatherPatArchiveService.getInHospDataGather("0", date.minusDays(1).atStartOfDay(), date.atStartOfDay());
+ ixhGatherPatArchiveService.getInHospDataGather("1", date.minusDays(1).atStartOfDay(), date.atStartOfDay());
}
}
@@ -239,7 +273,14 @@
* 澶勭悊鎮h�呬俊鎭紝杩涘叆瀛愪换鍔¤〃
*/
public void dealOutHospInfo() {
- iPatMedInhospService.dealOutHospInfo();
+ if (port.equals("8095")) {
+ //鍑洪櫌琛�
+ iPatMedInhospService.dealOutHospInfo();
+ //闂ㄨ瘖琛�
+ if (visitHosp != 1) {
+ iPatMedOuthospService.dealOutpatientInfo();
+ }
+ }
}
@@ -247,22 +288,24 @@
* 澶勭悊鎵嬫湳淇℃伅锛岃繘鍏ュ瓙浠诲姟琛�
*/
public void dealOperationInfo() {
- iPatMedOperationService.dealOperationInfo();
+ if (port.equals("8095")) iPatMedOperationService.dealOperationInfo();
+
}
/**
* 澶勭悊鎮h�呬俊鎭紝杩涘叆瀛愪换鍔¤〃(寰俊灏忕▼搴�)
*/
public void dealOutHospInfoXHC() {
- PatMedInhosp patMedInhosp = new PatMedInhosp();
- //鑾峰彇鏈鐞嗙殑鏁版嵁
- List<ServicePatientTemp> servicePatientTemps = iServicePatientTempService.selectServicePatientTempList(new ServicePatientTemp());
-
+ if (port.equals("8095")) {
+ PatMedInhosp patMedInhosp = new PatMedInhosp();
+ //鑾峰彇鏈鐞嗙殑鏁版嵁
+ List<ServicePatientTemp> servicePatientTemps = iServicePatientTempService.selectServicePatientTempList(new ServicePatientTemp());
+ }
}
/**
- * 闀挎湡浠诲姟鎵ц锛堢數璇濓級
+ * 闀挎湡浠诲姟鎵ц
*/
public void longTaskSend() {
//鑾峰彇浠诲姟淇℃伅
@@ -270,7 +313,7 @@
st.setDelFlag("0");
st.setLongTask(1);
List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);
- log.error("serviceTasks杩涙潵浜嗗悧锛焮}", serviceTasks);
+ log.info("銆恖ongTaskSend銆戣幏鍙栧埌{}涓暱鏈熶换鍔�", serviceTasks.size());
for (ServiceTask serviceTask : serviceTasks) {
CommonTaskcallMQ commonTaskcallMQ = new CommonTaskcallMQ();
commonTaskcallMQ.setTaskid(serviceTask.getTaskid());
@@ -287,34 +330,26 @@
* @return
*/
public boolean isDateToday(Date date) {
- //濡傛灉缁欑殑鏃ユ湡灏忎簬褰撳墠鏃ユ湡锛屼篃鐩存帴鍙戦��
- LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
- if (localDateTime.isBefore(LocalDateTime.now())) {
- return true;
+ if (date == null) {
+ return false;
}
- // 鑾峰彇褰撳墠鏃ユ湡
- 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);
+ // 灏� Date 杞负 LocalDate
+ LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+ // 鑾峰彇浠婂ぉ鐨� LocalDate
+ LocalDate today = LocalDate.now();
+ // 濡傛灉鏃ユ湡鏃╀簬鎴栫瓑浜庝粖澶╋紝杩斿洖 true
+ return !localDate.isAfter(today);
}
public void sfHandlle(CommonTaskcallMQ commonTaskcallMQ, String ip) {
- log.error("sfHandlle杩涙潵浜嗗悧锛焮}", commonTaskcallMQ);
+ 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.error("split杩涙潵浜嗗悧锛焮}", split);
+ log.info("銆恠fHandlle銆戜换鍔″彂閫佹柟寮忥細{}", Arrays.toString(split));
for (String serviceFrom : split) {
String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom));
//閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
@@ -322,6 +357,26 @@
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());
@@ -332,14 +387,14 @@
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());
+// serviceSubtask.setFinishtime(new Date());
serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
continue;
}
@@ -371,6 +426,7 @@
if (list.size() > 0) {
// redisCache.setCacheListLeft("cache-0", list);
redisCache.setCacheListLeftAndDistinct("cache-0", list);
+ log.info("銆恠fHandlle銆戠數璇濅换鍔″凡鍔犲叆闃熷垪锛屾暟閲忥細{}", list.size());
}
} else if (descByCode.equals("澶氬獟浣�")) {
//澶氬獟浣�
@@ -378,7 +434,7 @@
//绾歌川
} else if (descByCode.equals("寰俊灏忕▼搴�")) {
//寰俊灏忕▼搴�
- log.error("ivrTask1鐨勫�间负锛歿}", ivrTask1);
+ log.info("銆恠fHandlle銆戝鐞嗗井淇″皬绋嬪簭浠诲姟锛屼换鍔′俊鎭細{}", ivrTask1);
if (ObjectUtils.isNotEmpty(ivrTask1) && ivrTask1.getPatCycle() == 1) {
//璇存槑璇ヤ换鍔$殑鎮h�呮槸寰幆鎵ц鐨�
ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
@@ -423,7 +479,7 @@
RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
- log.error("鐭俊闀挎湡浠诲姟鍙戦��---------杩涙潵浜嗗悧锛焮}", serviceSubtask);
+ log.info("銆恠fHandlle銆戝鐞嗙煭淇¢暱鏈熶换鍔★紝鎮h�匢D锛歿}", serviceSubtask.getPatid());
boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());
if (dateToday) {
try {
@@ -434,7 +490,6 @@
serviceSubtask.setResult("error");
serviceSubtask.setRemark(patArchive.getNotrequiredreason());
serviceSubtask.setSendstate(4L);
- serviceSubtask.setFinishtime(new Date());
iServiceSubtaskService.insertServiceSubtask(serviceSubtask);
continue;
}
@@ -453,13 +508,48 @@
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));
+ //鍏堝垽鏂竴涓嬪彂鐨勬槸涓嶆槸瀹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());
@@ -485,23 +575,21 @@
iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
} catch (Exception e) {
String guid = UUID.randomUUID().toString();
- log.error("闀挎湡浠诲姟锛岀煭淇″彂閫佸け璐ュ師鍥狅細{},{}", e.getMessage(), guid);
+ log.error("銆恠fHandlle銆戦暱鏈熶换鍔$煭淇″彂閫佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", 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);
+ log.info("銆恠fHandlle銆戝鐞嗗叕浼楀彿浠诲姟锛屼换鍔′俊鎭細{}", ivrTask1);
//鍏紬鍙�
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 {
@@ -512,16 +600,37 @@
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 + "¶m2=" + patid + "¶m3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "¶m5=false";
- String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), "鏃�");
- Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);
+ //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処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());
@@ -539,6 +648,7 @@
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());
@@ -546,11 +656,10 @@
iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
} catch (Exception e) {
String guid = UUID.randomUUID().toString();
- log.error("闀挎湡浠诲姟锛屽叕浼楀彿鍙戦�佸け璐ュ師鍥狅細{},{}", e.getMessage(), guid);
+ log.error("銆恠fHandlle銆戦暱鏈熶换鍔″叕浼楀彿鍙戦�佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid);
serviceSubtask.setResult("error");
serviceSubtask.setRemark("绯荤粺閿欒");
serviceSubtask.setSendstate(5L);
- serviceSubtask.setFinishtime(new Date());
serviceSubtask.setGuid(guid);
iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
}
@@ -561,190 +670,6 @@
}
}
}
-
-
- /**
- * 鑾峰嚭闄㈡偅鑰呬俊鎭�
- * 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\\HIS鏁版嵁閲囬泦\\" + 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())) {
- //濡傛灉涓�4灏辨槸姝讳骸
- patArchive.setNotrequiredFlag("1");
- patArchive.setNotrequiredreason("鍑洪櫌鏂瑰紡涓虹┖");
- }
- patArchive.setSex(thiedInhospInfo.getPatiRecordGender().equals("鐢�") ? 1L : 2L);
- patArchive.setNation(thiedInhospInfo.getPatiNation());
- patArchive.setNativePlace(thiedInhospInfo.getPatiNationality());
- patArchive.setPlaceOfResidence(StringUtils.isNotEmpty(thiedInhospInfo.getPatiHomeAddr()) ? thiedInhospInfo.getPatiHomeAddr().replace("null", "") : "");
- 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 = 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.getOutDate()))
- patMedInhosp.setEndtime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getOutDate()));
- } 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());
- patMedInhosp.setOrgid("1");
- //濡傛灉鏄嚭闄紝鍏堥�氳繃鎮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<>();
@@ -774,26 +699,84 @@
return key;
}
- private String getWXCode(String idcard, String url, String taskName, String taskDesc, String submitprompt) {
+ 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<>();
+
+ Map<String, Object> YeWuXX = new LinkedHashMap<>();
+ Map<String, Object> DuanXinXX = new LinkedHashMap<>();
+ DuanXinXX.put("ShouJiHM", ShouJiHM);
+ DuanXinXX.put("FaSongNR", FaSongNR);
+ DuanXinXX.put("FaSongRID", FaSongRID);
+ DuanXinXX.put("FaSongRXM", FaSongRXM);
+ YeWuXX.put("DuanXinXX", DuanXinXX);
+
+ map.put("XiaoXiTou", headerMap);
+ map.put("YeWuXX", YeWuXX);
+
+ String body = new Gson().toJson(map);
+
+// String result = HttpUtils.sendPost(address, body);
+ String result = null;
+ try {
+ result = OkHttpExample.sendPostRequest(address, body, token);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ log.info("銆恎etDXCode銆戠煭淇″彂閫佺粨鏋滐細{}", result);
+
+ JSONObject jsonObject = JSONObject.parseObject(result);
+ String code = (String) jsonObject.toString();
+ return code;
+ }
+
+
+ private String getWXCode(String idcard, String url, String taskName, String taskDesc, String phone, String setPatientname, String setPatientid, List<String> wxqqxx) {
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("鐤剧梾搴峰娉ㄦ剰浜嬮」");
+ xinHuaWXReq.setPatientid(setPatientid);
+ xinHuaWXReq.setPatientname(setPatientname);
+ xinHuaWXReq.setMobile(phone);
+ xinHuaWXReq.setMedcardno(null);
+ xinHuaWXReq.setTitlename(taskName);
+ xinHuaWXReq.setContent(taskDesc);
+ xinHuaWXReq.setAppid(wxqqxx.get(1));
+ log.info("銆恎etWXCode銆戝井淇″叕浼楀彿璇锋眰鍙傛暟锛歿}", xinHuaWXReq);
+ String body = new Gson().toJson(xinHuaWXReq);
+ String encode = encode(wxqqxx.get(2).concat(body));
+ Map<String, String> headerMap = new HashMap<>();
+ headerMap.put("sign", encode);
+ String result = HttpUtils.sendPostByHeader(wxqqxx.get(3), body, headerMap);
- 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();
+ String code = (String) jsonObject.toString();
+ return code;
}
-// 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);
-// }
+
+ public String encode(String arg) {
+ if (arg == null) {
+ arg = "";
+ }
+ MessageDigest md5 = null;
+ try {
+ md5 = MessageDigest.getInstance("MD5");
+ md5.update(arg.getBytes("UTF-8"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return toHex(md5.digest());
+ }
+
+ public void collectHIS() {
+ try {
+ // HIS鏁版嵁閲囬泦
+ HnDataGatherVO hnDataGatherVO = new HnDataGatherVO();
+ log.info("銆恉ealHisData銆慔IS寮�濮嬮噰闆嗘暟鎹�");
+ ichService.hnDataGather(hnDataGatherVO);
+ log.info("銆恉ealHisData銆慔IS缁撴潫閲囬泦鏁版嵁");
+ } catch (Exception e) {
+ log.error("銆恉ealHisData銆慔IS鏁版嵁閲囬泦寮傚父", e);
+ }
+ }
}
--
Gitblit v1.9.3