From f0a09ee996ab2605869844d6a3d812709e2bf0fa Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 16 十月 2026 16:07:25 +0800
Subject: [PATCH] 任务模块、电话模块
---
ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java | 650 ++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 399 insertions(+), 251 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
index af23628..1eeec66 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
@@ -1,26 +1,25 @@
package com.ruoyi.web.component;
import com.alibaba.fastjson2.JSONObject;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
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.WxGZHEnum;
-import com.ruoyi.common.exception.base.BaseException;
-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.*;
+import com.ruoyi.message.MessageChannel;
+import com.ruoyi.message.SendResult;
+import com.ruoyi.message.sms.SmsSendRequest;
+import com.ruoyi.message.sms.SmsSenderFactory;
+import com.ruoyi.message.wechat.WechatSendRequest;
+import com.ruoyi.message.wechat.WechatSenderFactory;
+import com.ruoyi.system.domain.SysConfig;
+import com.ruoyi.system.mapper.SysConfigMapper;
import com.ruoyi.system.service.ISysConfigService;
-import com.smartor.common.LSHospTokenUtil;
import com.smartor.domain.*;
import com.smartor.mapper.*;
import com.smartor.service.IBaseSmsaccountService;
-import com.smartor.service.IServiceOutPathService;
import com.smartor.service.IServiceSubtaskRecordService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@@ -32,17 +31,25 @@
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.stereotype.Component;
-import java.io.IOException;
-import java.security.MessageDigest;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
+import java.net.URLEncoder;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
-import static cn.hutool.core.convert.Convert.toHex;
-
+import com.ruoyi.template.domain.HeLibrary;
+import com.ruoyi.template.api.TemplateFacade;
+import com.ruoyi.common.core.domain.entity.PatArchive;
+import com.ruoyi.task.domain.entity.ServiceSubtaskEntity;
+import com.ruoyi.task.domain.ServiceSubtask;
+import com.ruoyi.task.domain.ServiceSubtaskRecord;
+import com.ruoyi.task.domain.ServiceTask;
+import com.ruoyi.task.mapper.ServiceSubtaskMapper;
+import com.ruoyi.task.mapper.ServiceTaskMapper;
+import com.ruoyi.task.domain.ServiceOutPath;
+import com.ruoyi.task.service.IServiceOutPathService;
+import com.ruoyi.task.domain.ServiceSubtaskPreachform;
+import com.ruoyi.task.domain.SendMagParam;
@Slf4j
@Component//鐩戝惉姝ら槦鍒�
public class RedisMqReceiver extends KeyExpirationEventMessageListener {
@@ -62,12 +69,26 @@
@Autowired
private IServiceOutPathService iServiceOutPathService;
+ /**
+ * 妯℃澘鏁版嵁涓�寰嬬粡 ruoyi-template 鐨勯棬闈㈠彇鐢紙璺ㄦā鍧楁暟鎹闂師鍒欙級銆�
+ */
+ @Autowired
+ private TemplateFacade templateFacade;
+
+ /**
+ * 瀹f暀妯″潡鐨�<b>甯搁┗闂ㄩ潰</b>锛岀敤浜庡垽 {@code sys_config: publicity.enabled}銆�
+ * <p>
+ * 鈿狅笍 2025 淇锛氭湰绫诲師鏈�<b>瀹屽叏娌¤瀹f暀寮�鍏�</b> 鈥斺��
+ * {@code tsakHandle} 鐨勫叕浼楀彿 {@code type == 3} 鍒嗘敮锛圠518銆�//瀹f暀銆嶏級
+ * 鐓у父鎷煎鏁欓摼鎺ュ苟鍙戦�侊紝鎵�浠ュ叧鎺� {@code publicity.enabled} 涔熸嫤涓嶄綇杩欐潯璺��
+ */
+ @Autowired
+ private com.ruoyi.publicity.api.PublicityFacade publicityFacade;
+
@Autowired
private ServiceSubtaskMapper ivrTaskcallMapper;
- @Autowired
- private HeLibraryMapper heLibraryMapper;
@Autowired
private ServiceTaskMapper ivrTaskMapper;
@@ -79,7 +100,7 @@
private RedisCache redisCache;
@Autowired
- private ServiceTaskMapper svyTaskMapper;
+ private ServiceTaskMapper serviceTaskMapper;
@Autowired
private ServiceSubtaskMapper serviceSubtaskMapper;
@@ -93,23 +114,28 @@
@Autowired
IBaseSmsaccountService baseSmsaccountService;
- @Value("${xhsmsPath}")
- private String xhsmsPath;
-
- @Value("${visitHosp}")
- private Integer visitHosp;
-
@Value("${server.port}")
private String port;
+
+ /**
+ * 娑堟伅鍙戦�佹柟宸ュ巶锛堢煭淇�/寰俊鍏紬鍙凤級銆�
+ * <p>
+ * 鍘熸潵鐭俊涓庡叕浼楀彿鐨勫彂閫侀�昏緫鍦ㄦ湰绫婚噷鐢� {@code if (active.equals("xx"))} 纭垎鏀簡绾� 300 琛岋紝
+ * 鐜板凡鏀跺彛鍒� {@code ruoyi-message} 妯″潡锛岃繖閲屽彧璐熻矗鎸� {@code active} 璺敱銆�
+ */
+ @Autowired
+ private SmsSenderFactory smsSenderFactory;
+
+ @Autowired
+ private WechatSenderFactory wechatSenderFactory;
@Value("${spring.profiles.active}")
private String active;
@Autowired
private ISysConfigService configService;
-
- // 鍒涘缓鍥哄畾澶у皬鐨勭嚎绋嬫睜
- private static final ExecutorService executorService = Executors.newFixedThreadPool(10);
+ @Autowired
+ private SysConfigMapper sysConfigMapper;
public RedisMqReceiver(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
@@ -141,9 +167,13 @@
//灏嗙姸鎬佹敼鎴愬畬鎴�
ServiceTask serviceTask = new ServiceTask();
serviceTask.setTaskid(Long.valueOf(commonTaskcallMQ.getTaskid()));
- serviceTask.setSendState(5L);
- serviceTask.setFail(1L);
- svyTaskMapper.updateServiceTask(serviceTask);
+
+// //鍦ㄩ棶鍗蜂腑锛岄�変腑鏌愪釜閫夐」瑕佽繘琛屾湇鍔¤ˉ鍋挎椂锛屽彧鏄�熺敤璇ユ湇鍔$殑澶栧3锛屼笉瀵硅鏈嶅姟鏈変换鍔″奖鍝�
+// if (commonTaskcallMQ.getUpdateSendstate() == null || commonTaskcallMQ.getUpdateSendstate() == 1) {
+// serviceTask.setSendState(5L);
+// serviceTask.setFail(1L);
+// serviceTaskMapper.updateServiceTask(serviceTask);
+// }
} catch (Exception e) {
Integer integer = redisCache.getCacheObject(commonTaskcallMQ.getTaskid().toString());
if (integer != null && integer == 3) {
@@ -151,7 +181,7 @@
ServiceTask serviceTask = new ServiceTask();
serviceTask.setTaskid(Long.valueOf(commonTaskcallMQ.getTaskid().toString()));
serviceTask.setFail(0L);
- svyTaskMapper.updateServiceTask(serviceTask);
+ serviceTaskMapper.updateServiceTask(serviceTask);
//灏嗘秷鎭粠闃熷垪涓垹闄�
} else if (integer == null) {
redisCache.setCacheObject(commonTaskcallMQ.getTaskid().toString(), 1, 120, TimeUnit.MINUTES);
@@ -164,7 +194,7 @@
}
/**
- * 浠诲姟澶勭悊
+ * 浠诲姟澶勭悊 鍗曟闅忚
*
* @param commonTaskcallMQ
*/
@@ -174,7 +204,7 @@
ServiceTask ivrTask1 = ivrTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());
//閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
- ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+ ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
serviceSubtaskVO.setTaskid(commonTaskcallMQ.getTaskid());
serviceSubtaskVO.setSendstate(2L);
List<ServiceSubtask> selectServiceSubtaskList = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtaskVO);
@@ -203,6 +233,22 @@
continue;
}
String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(sendPreachform));
+
+ // 鈿狅笍 2025 淇锛堝鏁欏紑鍏冲け鏁堬級锛歵ype == 3 鏄�**瀹f暀/閫氱煡**锛堢函鍙戦�併�佹棤浣滅瓟锛�
+ // 瑙� setFailPreachForm 閲屻�屽鏁欐垨閫氱煡鈥︾洿鎺ユ敼鎴� 9銆嶇殑鍒ゅ畾锛夛紝鏁存潯娲惧彂鐨勬墍鏈夐�氶亾
+ // 锛堢數璇�/鐭俊/鍏紬鍙�/浜哄伐锛夊彂鐨勯兘鏄鏁欏唴瀹广�傛墍浠ュ叧鎺� publicity.enabled 鏃�
+ // 搴斿綋**涓�涓�氶亾閮戒笉鍙�**锛岃�屼笉鏄彧鎷﹀叾涓竴娈点��
+ //
+ // 鈿狅笍 鍒绘剰**涓嶆帹杩� subtask 鐘舵�併�佷篃涓嶈澶辫触**锛氬叧闂槸"鏆傛椂涓嶅彂"锛�
+ // 涓嶆槸"杩欎釜鎮h�呬笉闇�瑕佸鏁�"銆傝嫢鏍囨垚澶辫触/涓嶉渶瑕侊紝寮�鍏虫仮澶嶅悗杩欐潯瀹f暀灏辨案杩滀涪浜嗐��
+ // 淇濇寔 sendstate=2 涓嶅姩锛屽紑鍏虫墦寮�鍚庝笅涓�娆℃淳鍙戜細鐓у父鍙戝嚭銆�
+ // 锛堟湰鏂规硶鐨勮皟鐢ㄦ柟 onMessage 澶勭悊瀹屽嵆鍒� Redis 娑堟伅銆佷笉閲嶆姇锛屾墍浠ヤ笉浼氶�犳垚閲嶆姇椋庢毚銆傦級
+ if (type != null && type == 3 && !publicityFacade.isEnabled()) {
+ log.warn("銆愬鏁欍�戞ā鍧楁湭鍚敤锛堝弬鏁伴厤缃� publicity.enabled=false锛夛紝璺宠繃瀹f暀鍙戦�併�俿ubtaskId={}, patid={}",
+ serviceSubtask.getId(), serviceSubtask.getPatid());
+ continue;
+ }
+
if (descByCode.equals("鐢佃瘽")) {
try {
ServiceTask ivrTask = ivrTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
@@ -264,6 +310,7 @@
serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
} else if (descByCode.equals("鐭俊")) {
+ log.info("----active鐨勫�间负锛歿}", active);
//鐭俊
//瀵箄rl涓袱涓弬鏁板姞瀵�
RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
@@ -286,19 +333,33 @@
serviceOutPath.setParam2(patid);
serviceOutPath.setParam6(subId);
serviceOutPath.setCreateTime(new Date());
+ serviceOutPath.setOrgid(serviceSubtask.getOrgid());
+ serviceOutPath.setDeptCode(serviceSubtask.getDeptcode());
+ serviceOutPath.setWardCode(serviceSubtask.getLeavehospitaldistrictcode());
+ serviceOutPath.setDeptName(serviceSubtask.getDeptname());
+ serviceOutPath.setWardName(serviceSubtask.getLeavehospitaldistrictname());
iServiceOutPathService.insertServiceOutPath(serviceOutPath);
// sendMagParam.setUrl(ip + ":" + req_path + "/followvisit/particty?param1=" + taskId + "¶m2=" + patid + "¶m5=false");
//杞垚16杩涘埗
String format = String.format("%03X", serviceOutPath.getId());
serviceOutPath.setRadix(format);
serviceOutPath.setUpdateTime(new Date());
+ serviceOutPath.setUrl(ip + ":" + req_path + "/sf?p=" + format);
iServiceOutPathService.updateServiceOutPath(serviceOutPath);
sendMagParam.setPhone(serviceSubtask.getPhone());
sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format);
- if (visitHosp == 2) {
- sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
- } else if (visitHosp == 1) {
- sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
+ SysConfig sysConfig = new SysConfig();
+ if (StringUtils.isNotEmpty(serviceSubtask.getServiceType()) && serviceSubtask.getServiceType().equals("6")) {
+ sysConfig = sysConfigMapper.checkConfigKeyUnique("zymyd.sms.template");
+ } else if (StringUtils.isNotEmpty(serviceSubtask.getServiceType()) && serviceSubtask.getServiceType().equals("14")) {
+ sysConfig = sysConfigMapper.checkConfigKeyUnique("mzmyd.sms.template");
+ } else {
+ sysConfig = sysConfigMapper.checkConfigKeyUnique("wj.sms.template");
+ }
+ if (!Objects.isNull(sysConfig)) {
+ String smsContemt = sysConfig.getConfigValue();
+// sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
+ sendMagParam.setContent(smsContemt.replace("${wjurl}", sendMagParam.getUrl()));
}
} else if (type == 2) {
@@ -310,21 +371,37 @@
// serviceOutPath.setParam3(URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()));
serviceOutPath.setParam3(ivrTask1.getTaskName());
serviceOutPath.setCreateTime(new Date());
+ serviceOutPath.setOrgid(serviceSubtask.getOrgid());
+ serviceOutPath.setDeptCode(serviceSubtask.getDeptcode());
+ serviceOutPath.setWardCode(serviceSubtask.getLeavehospitaldistrictcode());
+ serviceOutPath.setDeptName(serviceSubtask.getDeptname());
+ serviceOutPath.setWardName(serviceSubtask.getLeavehospitaldistrictname());
iServiceOutPathService.insertServiceOutPath(serviceOutPath);
String format = String.format("%03X", serviceOutPath.getId());
serviceOutPath.setRadix(format);
serviceOutPath.setUpdateTime(new Date());
+ serviceOutPath.setUrl(StringUtils.isNotEmpty(req_path) ? ip + ":" + req_path + "/wt?p=" + format : ip + "/wt?p=" + format);
iServiceOutPathService.updateServiceOutPath(serviceOutPath);
// sendMagParam.setUrl(ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "¶m2=" + patid + "¶m3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "¶m5=false");
sendMagParam.setPhone(serviceSubtask.getPhone());
- sendMagParam.setUrl(ip + ":" + req_path + "/wt?p=" + format);
+ sendMagParam.setUrl(StringUtils.isNotEmpty(req_path) ? ip + ":" + req_path + "/wt?p=" + format : ip + "/wt?p=" + format);
+ log.info("sendMagParam鐨勫�间负锛歿}", sendMagParam);
//濡傛灉type鏄闊抽殢璁跨殑璇濓紙璇存槑琛ュ伩鍙戦�佹柟寮忎腑鏈夌數璇濋殢璁跨殑鏂瑰紡锛岃繖閲岀殑澶栭摼灏卞湴鍧�鍙兘鐢�/sf锛�
if (serviceSubtask.getType().equals("1"))
- sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format);
- if (visitHosp == 2) {
- sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
- } else if (visitHosp == 1) {
- sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
+ sendMagParam.setUrl(StringUtils.isNotEmpty(req_path) ? ip + ":" + req_path + "/sf?p=" + format : ip + "/sf?p=" + format);
+
+ SysConfig sysConfig = new SysConfig();
+ if (StringUtils.isNotEmpty(serviceSubtask.getServiceType()) && serviceSubtask.getServiceType().equals("6")) {
+ sysConfig = sysConfigMapper.checkConfigKeyUnique("zymyd.sms.template");
+ } else if (StringUtils.isNotEmpty(serviceSubtask.getServiceType()) && serviceSubtask.getServiceType().equals("14")) {
+ sysConfig = sysConfigMapper.checkConfigKeyUnique("mzmyd.sms.template");
+ } else {
+ sysConfig = sysConfigMapper.checkConfigKeyUnique("wj.sms.template");
+ }
+ if (!Objects.isNull(sysConfig)) {
+ String smsContemt = sysConfig.getConfigValue();
+// sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
+ sendMagParam.setContent(smsContemt.replace("${wjurl}", sendMagParam.getUrl()));
}
} else if (type == 3) {
//瀹f暀
@@ -334,76 +411,56 @@
serviceOutPath.setParam6(subId);
serviceOutPath.setParam3(ivrTask1.getTaskName());
serviceOutPath.setCreateTime(new Date());
+ serviceOutPath.setOrgid(serviceSubtask.getOrgid());
+ serviceOutPath.setDeptCode(serviceSubtask.getDeptcode());
+ serviceOutPath.setWardCode(serviceSubtask.getLeavehospitaldistrictcode());
+ serviceOutPath.setDeptName(serviceSubtask.getDeptname());
+ serviceOutPath.setWardName(serviceSubtask.getLeavehospitaldistrictname());
iServiceOutPathService.insertServiceOutPath(serviceOutPath);
+ String url = "";
String format = String.format("%03X", serviceOutPath.getId());
- serviceOutPath.setRadix(format);
- serviceOutPath.setUpdateTime(new Date());
- iServiceOutPathService.updateServiceOutPath(serviceOutPath);
//闇�瑕侀�氳繃妯℃澘ID鍘诲垽鏂鍙戠殑鍐呭鏄鏁欒繕鏄�氱煡
- HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid());
+ // 鈿狅笍 涓� RyTask 鍚屽彛寰勶細**鍒绘剰涓�**涓� TemplateModuleDisabledException 闄嶇骇 鈥斺��
+ // 妯℃澘妯″潡鍏抽棴鏃跺鏁欏唴瀹瑰彇涓嶅埌銆佺煭淇$‘瀹炲彂涓嶅嚭鍘伙紝澶栧眰 try-catch 濡傚疄璁板け璐�
+ // 骞惰蛋鏃㈡湁鐨勯�氶亾鍗囩骇鏈哄埗銆傜‖璁版垚鍔熺瓑浜庣敤鍋囪褰曟帺鐩�"娌″彂鍑哄幓"銆�
+ HeLibrary heLibrary = templateFacade.findHeLibraryById(serviceSubtask.getLibtemplateid());
if (heLibrary.getHetype().equals("1")) {
sendMagParam.setPhone(serviceSubtask.getPhone());
- sendMagParam.setUrl(ip + ":" + req_path + "/xj?p=" + format);
- if (visitHosp == 2) {
- sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
- } else if (visitHosp == 1) {
- sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
+ url = StringUtils.isNotEmpty(req_path) ? ip + ":" + req_path + "/xj?p=" + format : ip + "/xj?p=" + format;
+ sendMagParam.setUrl(url);
+
+
+ SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique("xj.sms.template");
+ if (!Objects.isNull(sysConfig)) {
+ String smsContemt = sysConfig.getConfigValue();
+// sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
+ sendMagParam.setContent(smsContemt.replace("${xjurl}", sendMagParam.getUrl()));
+
}
- } else {
+// if (active.equals("ls") || active.equals("sltd") || active.equals("nhfy")) {
+// sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
+// } else if (active.equals("xh")) {
+// sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
+// } else if (active.equals("hzszlyy")) {
+// sendMagParam.setContent("銆愭澀宸炲競绗竴浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
+// }
+ } else if (heLibrary.getHetype().equals("2")) {
//閫氱煡
+ String sc = getSC(serviceSubtask, heLibrary.getPreachcontent());
sendMagParam.setPhone(serviceSubtask.getPhone());
- sendMagParam.setContent(heLibrary.getPreachcontent());
+ sendMagParam.setContent(sc);
}
+ serviceOutPath.setRadix(format);
+ serviceOutPath.setUpdateTime(new Date());
+ serviceOutPath.setUrl(url);
+ iServiceOutPathService.updateServiceOutPath(serviceOutPath);
}
- //鐭俊杩橀渶瑕佹ā鏉�
- String s = null;
- if (visitHosp == 1) {
- //鏂板崕鐨勭煭淇″彂閫佹柟寮�
- Map<String, String> req = new HashMap<>();
- req.put("phone", sendMagParam.getPhone());
- req.put("content", sendMagParam.getContent());
- s = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));
- } else if (visitHosp == 2) {
- String url = configService.selectConfigByKey("token.360", serviceSubtask.getOrgid());
- log.info("-------00token.360鐨刄RL涓猴細{}", url);
- //涓芥按鐨勭煭淇″彂閫佹柟寮�
- Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());
- log.info("-----------map鐨勫�间负锛歿}", map);
- String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(), url);
- log.info("-----------token鐨勫�间负锛歿}", token);
- if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) {
- serviceSubtask.setCurrentPreachform(sendPreachform);
- serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
- setFailPreachForm(serviceSubtask, descByCode, "鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�", "5");
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- continue;
- }
- log.info("---------mq涓芥按鐭俊鍙戦�佸叆鍙俛ddress锛歿}, sendMagParam:{}, orgid:{}-------", 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("---------涓芥按鐭俊鍙戦�佺粨鏋滐細{}-------", dxCode);
- ObjectMapper objectMapper = new ObjectMapper();
- Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);
- log.info("---------涓芥按鐭俊鍙戦�佺粨鏋�--textParam鐨勫�间负锛歿}-------", textParam);
- String code = textParam.get("Code").toString();
- if (code.equals("0")) {
- s = "true";
- } else {
- setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5");
- throw new BaseException("鐭俊鍙戦�佸け璐�");
- }
- } else if (visitHosp == 3) {
- //鐪佺珛鍚屽痉鐨勭煭淇″彂閫佹柟寮�
- 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")) {
- s = "true";
- } else {
- setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5");
- throw new BaseException("鐭俊鍙戦�佸け璐�");
- }
- }
- if (s.equals("true")) {
+ //鐭俊鍙戦�侊細鍚勭珯鐐瑰鎺ユ柟寮忓樊寮傝緝澶э紙鎶ユ枃/绛惧悕/token/杩斿洖鍒ゅ畾閮戒笉鍚岋級锛�
+ //宸叉敹鍙e埌 ruoyi-message 妯″潡锛岃繖閲屽彧璐熻矗缁勮鍏ュ弬骞惰矾鐢�
+ log.info("----active鐨勫�间负锛歿}", active);
+ SendResult smsSendResult = sendSmsByActive(serviceSubtask, sendMagParam);
+ if (smsSendResult.isOk()) {
//鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佹垚鍔�", "2");
//浠诲姟鍙戦�佽褰�
@@ -417,10 +474,10 @@
serviceSubtaskRecord.setResult("success");
serviceSubtaskRecord.setRemark("鐭俊鍙戦�佹垚鍔�");
serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
- log.error("serviceSubtaskRecord淇濆瓨鎴愬姛浜嗗悧锛燂細{}", serviceSubtaskRecord);
} else {
//鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5");
+ continue;
}
} catch (Exception e) {
ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
@@ -443,7 +500,7 @@
RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
-
+ String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
try {
SendMagParam sendMagParam = new SendMagParam();
sendMagParam.setType("5");
@@ -454,78 +511,94 @@
ServiceOutPath serviceOutPath = new ServiceOutPath();
serviceOutPath.setParam1(taskId);
serviceOutPath.setParam2(patid);
+ serviceOutPath.setParam6(subId);
serviceOutPath.setCreateTime(new Date());
+ serviceOutPath.setOrgid(serviceSubtask.getOrgid());
+ serviceOutPath.setDeptCode(serviceSubtask.getDeptcode());
+ serviceOutPath.setWardCode(serviceSubtask.getLeavehospitaldistrictcode());
+ serviceOutPath.setDeptName(serviceSubtask.getDeptname());
+ serviceOutPath.setWardName(serviceSubtask.getLeavehospitaldistrictname());
iServiceOutPathService.insertServiceOutPath(serviceOutPath);
String format = String.format("%03X", serviceOutPath.getId());
serviceOutPath.setRadix(format);
serviceOutPath.setUpdateTime(new Date());
- iServiceOutPathService.updateServiceOutPath(serviceOutPath);
url = ip + ":" + req_path + "/sf?p=" + format;
+ serviceOutPath.setUrl(url);
+ iServiceOutPathService.updateServiceOutPath(serviceOutPath);
} else if (type == 2) {
//闂埜
ServiceOutPath serviceOutPath = new ServiceOutPath();
serviceOutPath.setParam1(taskId);
serviceOutPath.setParam2(patid);
serviceOutPath.setParam3(ivrTask1.getTaskName());
+ serviceOutPath.setParam6(subId);
serviceOutPath.setCreateTime(new Date());
+ serviceOutPath.setOrgid(serviceSubtask.getOrgid());
+ serviceOutPath.setDeptCode(serviceSubtask.getDeptcode());
+ serviceOutPath.setWardCode(serviceSubtask.getLeavehospitaldistrictcode());
+ serviceOutPath.setDeptName(serviceSubtask.getDeptname());
+ serviceOutPath.setWardName(serviceSubtask.getLeavehospitaldistrictname());
iServiceOutPathService.insertServiceOutPath(serviceOutPath);
String format = String.format("%03X", serviceOutPath.getId());
- serviceOutPath.setRadix(format);
- serviceOutPath.setUpdateTime(new Date());
- iServiceOutPathService.updateServiceOutPath(serviceOutPath);
- url = ip + ":" + req_path + "/wt?p=" + format;
+
+ url = StringUtils.isNotEmpty(req_path) ? ip + ":" + req_path + "/wt?p=" + format : ip + "/wt?p=" + format;
//濡傛灉type鏄闊抽殢璁跨殑璇濓紙璇存槑琛ュ伩鍙戦�佹柟寮忎腑鏈夌數璇濋殢璁跨殑鏂瑰紡锛岃繖閲岀殑澶栭摼灏卞湴鍧�鍙兘鐢�/sf锛�
if (serviceSubtask.getType().equals("1"))
sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format);
+
+ serviceOutPath.setRadix(format);
+ serviceOutPath.setUrl(url);
+ serviceOutPath.setUpdateTime(new Date());
+ iServiceOutPathService.updateServiceOutPath(serviceOutPath);
} else if (type == 3) {
//瀹f暀
ServiceOutPath serviceOutPath = new ServiceOutPath();
serviceOutPath.setParam1(taskId);
serviceOutPath.setParam2(patid);
serviceOutPath.setParam3(ivrTask1.getTaskName());
+ serviceOutPath.setParam6(subId);
serviceOutPath.setCreateTime(new Date());
+ serviceOutPath.setDeptCode(serviceSubtask.getDeptcode());
+ serviceOutPath.setWardCode(serviceSubtask.getLeavehospitaldistrictcode());
+ serviceOutPath.setDeptName(serviceSubtask.getDeptname());
+ serviceOutPath.setWardName(serviceSubtask.getLeavehospitaldistrictname());
+ serviceOutPath.setOrgid(serviceSubtask.getOrgid());
iServiceOutPathService.insertServiceOutPath(serviceOutPath);
String format = String.format("%03X", serviceOutPath.getId());
+
+ //闇�瑕侀�氳繃妯℃澘ID鍘诲垽鏂鍙戠殑鍐呭鏄鏁欒繕鏄�氱煡
+// HeLibrary heLibrary = templateFacade.findHeLibraryById(serviceSubtask.getLibtemplateid());
+// if (heLibrary.getHetype().equals("1")) {
+// sendMagParam.setPhone(serviceSubtask.getPhone());
+// sendMagParam.setUrl(ip + ":" + req_path + "/xj?p=" + format);
+// if (active.equals("ls") || active.equals("sltd")) {
+// sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
+// } else if (active.equals("xh")) {
+// sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
+// }
+// } else if (heLibrary.getHetype().equals("2")) {
+// //閫氱煡
+// String sc = getSC(serviceSubtask, heLibrary.getPreachcontent());
+// sendMagParam.setPhone(serviceSubtask.getPhone());
+// sendMagParam.setContent(sc);
+// }
+
+ url = ip + ":" + req_path + "/xj?p=" + format;
serviceOutPath.setRadix(format);
serviceOutPath.setUpdateTime(new Date());
+ serviceOutPath.setUrl(url);
iServiceOutPathService.updateServiceOutPath(serviceOutPath);
- url = ip + ":" + req_path + "/xj?p=" + format;
}
- if (StringUtils.isEmpty(patArchive.getPatidHis())) {
- serviceSubtask.setCurrentPreachform(sendPreachform);
- serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- //澶辫触璁板綍
- setFailPreachForm(serviceSubtask, sendPreachform, "鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖", "5");
- continue;
- }
-
- //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D
+ //鏈烘瀯閰嶇疆鏍¢獙锛圵xGZHEnum锛変笌 his 鎮h�卛d 鏍¢獙宸叉敹鍙e埌
+ //ruoyi-message 鐨� WechatMpConfigProvider / XinHuaMpSender锛岃皟鐢ㄧ偣涓嶅啀閲嶅鏍¢獙
log.error("鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D锛歿}", patArchive.getOrgid());
- List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());
- if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {
- serviceSubtask.setCurrentPreachform(sendPreachform);
- serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-
- //澶辫触璁板綍
- setFailPreachForm(serviceSubtask, sendPreachform, "璇ユ満鏋勭殑鍏紬鍙烽厤缃俊鎭笉鍏紝鏃犳硶閫氳繃鍏紬鍙峰彂閫�", "5");
- continue;
- }
-
-
- String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskName(), patArchive.getTelcode(), patArchive.getName(), patArchive.getPatidHis(), wxqqxx);
- log.error("wxCode鐨勫�间负:{}", wxCode);
- Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);
- log.error("map鐨勫�间负:{}", map);
- if (!map.isEmpty()) {
- serviceSubtask.setResult("success");
- serviceSubtask.setSendstate(3L);
- log.error("aBoolean鐨勫�间负:{}", aBoolean);
- if (map.get("succ").toString().equals("true")) {
- aBoolean = true;
- }
- if (aBoolean == false) {
+ if (!"xh".equals(active)) {
+ //甯備竴锛氳蛋鑷湁鍏紬鍙风綉鍏筹紙涓嶅仛鏈烘瀯閰嶇疆鏍¢獙銆乭is鎮h�卛d鏍¢獙锛屼笌鍘熷疄鐜颁竴鑷达級
+ sendWechatByActive(serviceSubtask, patArchive, url);
+ } else {
+ //鏂板崕锛歨is鎮h�卛d鏍¢獙澶辫触鍗宠褰曞苟杩涘叆涓嬩竴绉嶅彂閫佹柟寮�
+ SendResult wechatSendResult = sendWechatByActive(serviceSubtask, patArchive, url);
+ if (!wechatSendResult.isOk()) {
ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
@@ -533,7 +606,7 @@
serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
serviceSubtaskRecord.setPreachform("5");
serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
- serviceSubtaskRecord.setRemark(ObjectUtils.isNotEmpty(map.get("msg")) ? map.get("msg").toString() : null);
+ serviceSubtaskRecord.setRemark(wechatSendResult.getMessage());
serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
//鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
setFailPreachForm(serviceSubtask, sendPreachform, "鍏紬鍙峰彂閫佸け璐�", "5");
@@ -570,10 +643,84 @@
serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
} else if (descByCode.equals("浜哄伐")) {
- setFailPreachForm(serviceSubtask, sendPreachform, "浜哄伐寰呮墽琛�", "2");
+ setFailPreachForm(serviceSubtask, sendPreachform, "浜哄伐瓒呮椂", "7");
+ } else if (descByCode.equals("寰俊灏忕▼搴�")) {
+ setFailPreachForm(serviceSubtask, sendPreachform, "寰俊灏忕▼搴忓緟鎵ц", "2");
}
}
+ }
+
+ /**
+ * 鎸� {@code active}锛堢珯鐐癸級璺敱鍒板搴旂殑鐭俊鍙戦�佹柟銆�
+ * <p>
+ * 鍏ュ弬娌跨敤鍘熷垎鏀噷宸茬粡缁勮濂界殑 {@code SendMagParam}锛屼繚璇佸唴瀹逛笌绾夸笂瀹屽叏涓�鑷淬��
+ * 鍚勭珯鐐瑰樊寮傝 {@code ruoyi-message} 妯″潡鍚勫疄鐜扮被銆�
+ * <p>
+ * 鈿狅笍 鏂板崕锛坽@code xh}锛夊湪鏈叆鍙e師鏈蛋銆孶RL 缂栫爜琛ㄥ崟銆嶏紝
+ * 涓� {@code RyTask}锛堝彂绌烘姤鏂囷級/ {@code smsSubTask}锛圝SON锛夊苟涓嶄竴鑷达紱
+ * 杩欓噷鎸夊師鏍疯蛋 {@code XinHuaSmsSender#sendForm}锛堣〃鍗曟ā寮忥級銆�
+ */
+ private SendResult sendSmsByActive(ServiceSubtask serviceSubtask, SendMagParam sendMagParam) {
+ SmsSendRequest request = SmsSendRequest.of(
+ sendMagParam.getPhone(), sendMagParam.getContent(), serviceSubtask.getOrgid());
+ return smsSenderFactory.send(active, request);
+ }
+
+ /**
+ * 鎸� {@code active}锛堢珯鐐癸級璺敱鍒板搴旂殑寰俊鍏紬鍙峰彂閫佹柟銆�
+ * <p>
+ * 鈿狅笍 绔欑偣宸紓锛堜笌鍘熷疄鐜颁竴涓�瀵瑰簲锛夛細
+ * <ul>
+ * <li>甯備竴锛坽@code hzszlyy}锛夛細涓嶅仛 his 鎮h�卛d 鏍¢獙锛屾爣棰�/鍐呭閮藉彇浠诲姟鍚嶇О锛�</li>
+ * <li>鏂板崕锛坽@code xh}锛夛細瑕佹眰 his 鎮h�卛d 闈炵┖锛屾偅鑰呭鍚嶅彇 {@code patArchive.getName()}锛�</li>
+ * <li>鏂板崕鐨� JSON 鎶ユ枃浣撻渶瑕� {@code disableHtmlEscaping}锛屼笌 {@code RyTask} 涓嶅悓銆�</li>
+ * </ul>
+ */
+ private SendResult sendWechatByActive(ServiceSubtask serviceSubtask, PatArchive patArchive, String url) {
+ if (StringUtils.isEmpty(patArchive.getPatidHis())) {
+ return SendResult.fail(active, MessageChannel.WECHAT,
+ "鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖", null);
+ }
+ WechatSendRequest request = new WechatSendRequest();
+ request.setOrgid(patArchive.getOrgid());
+ request.setIdCard(serviceSubtask.getSfzh());
+ request.setUrl(url);
+ request.setTitle(serviceSubtask.getTaskName());
+ //鍘熷疄鐜版爣棰樹笌鍐呭閮戒紶 serviceSubtask.getTaskName()
+ request.setContent(serviceSubtask.getTaskName());
+ request.setPhone(patArchive.getTelcode());
+ request.setPatientName(patArchive.getName());
+ request.setPatidHis(patArchive.getPatidHis());
+ //鍘� RedisMqReceiver.getWXCode 浣跨敤 disableHtmlEscaping锛屼笌 RyTask 涓嶅悓锛屾澶勪繚鎸�
+ request.setDisableHtmlEscaping(true);
+ return wechatSenderFactory.send(active, request);
+ }
+
+ private String getSC(ServiceSubtask serviceSubtask, String scriptContent) {
+ Map<String, Map<String, String>> param = getParam(serviceSubtask.getTaskid());
+ for (Map<String, String> map : param.values()) {
+ for (String key : map.keySet()) {
+ scriptContent = scriptContent.replace(key, org.apache.commons.lang3.StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : "");
+ }
+ }
+ scriptContent = scriptContent.replace("${name}", org.apache.commons.lang3.StringUtils.isNotEmpty(serviceSubtask.getSendname()) ? serviceSubtask.getSendname() : "");
+ scriptContent = scriptContent.replace("${dzz}", org.apache.commons.lang3.StringUtils.isNotEmpty(serviceSubtask.getAddr()) ? serviceSubtask.getAddr() : "");
+ scriptContent = scriptContent.replace("${phone}", org.apache.commons.lang3.StringUtils.isNotEmpty(serviceSubtask.getTelcode()) ? serviceSubtask.getTelcode() : "");
+
+ return scriptContent;
+ }
+
+ private Map<String, Map<String, String>> getParam(Long taskId) {
+ ServiceTask serviceTask = serviceTaskMapper.selectServiceTaskByTaskid(taskId);
+ ObjectMapper objectMapper = new ObjectMapper();
+ Map<String, Map<String, String>> serviceTaskMap = null;
+ try {
+ serviceTaskMap = objectMapper.readValue(serviceTask.getTextParam(), Map.class);
+ } catch (JsonProcessingException e) {
+ e.printStackTrace();
+ }
+ return serviceTaskMap;
}
private Date getNextVisitTime(Long subid, Long taskid, Date visitTime, String currentPreachform) {
@@ -599,10 +746,23 @@
private String getSendPreachform(ServiceSubtaskPreachform serviceSubtaskPreachform, ServiceSubtask serviceSubtask) {
log.info("-----getSendPreachform鐨剆erviceSubtaskPreachform鍏ュ弬锛歿},------serviceSubtask:{}", serviceSubtaskPreachform, serviceSubtask);
List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+ if (CollectionUtils.isEmpty(serviceSubtaskPreachforms)) {
+ //濡傛灉serviceSubtaskPreachforms涓虹┖鐨勮瘽锛屽垯闇�瑕佽繘琛屾柊澧炰竴涓�
+ List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = addServiceSubtaskPreachform(serviceSubtask, "1");
+ if (CollectionUtils.isEmpty(serviceSubtaskPreachformList)) {
+ log.error("鍙戦�佹柟寮忓け璐ヤ簡serviceSubtask鐨勫叆鍙備负锛歿}", serviceSubtask);
+ return null;
+ }
+ serviceSubtaskPreachforms = serviceSubtaskPreachformList;
+ }
// 鎯呭喌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 firstPreachform = serviceSubtaskPreachforms.stream().filter(item -> item.getSort() == 1L).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse(null);
+ serviceSubtaskPreachform.setPreachform(firstPreachform);
+ serviceSubtaskPreachform.setCurrentSendTime(new Date());
+ serviceSubtaskPreachformMapper.updateSSPByCondition(serviceSubtaskPreachform);
+ return firstPreachform;
}
// 鎯呭喌2锛歝urrentPreachform涓嶄负绌猴紝鎵句笅涓�涓猻ort
@@ -617,6 +777,8 @@
if (allSendStateNot1AndNot9) {
//璇存槑鍏ㄥ彂閫佸け璐ヤ簡
serviceSubtask.setSendstate(5L);
+ serviceSubtask.setUpdateTime(new Date());
+ serviceSubtask.setRemark("-----getSendPreachform,鍙戦�佹柟寮忓叏閮ㄥけ璐�");
serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
}
return "-1";
@@ -632,6 +794,35 @@
return null;
}
+ private List<ServiceSubtaskPreachform> addServiceSubtaskPreachform(ServiceSubtask serviceSubtask, String sendstate) {
+ //灏唒reachformDesc鐨刯son瀵硅薄锛屾斁鍒發ist闆嗗悎涓�
+ ServiceTask serviceTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+ String preachformDesc = serviceTask.getPreachformDesc();
+
+ List<ServiceSubtaskPreachform> sspl = null;
+ ObjectMapper objectMapper = new ObjectMapper();
+ if (org.apache.commons.lang3.StringUtils.isNotEmpty(preachformDesc)) {
+ try {
+ sspl = objectMapper.readValue(preachformDesc, new TypeReference<List<ServiceSubtaskPreachform>>() {
+ });
+ } catch (JsonProcessingException e) {
+ log.error("mq--preachform杞琇ist<ServiceSubtaskPreachform>鎶ラ敊浜嗭細{}", e.getMessage());
+ }
+ for (ServiceSubtaskPreachform serviceSubtaskPreachform : sspl) {
+ serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
+ serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
+ //杩欎釜sendstate闇�瑕佸湪鏁版嵁搴撹缃竴涓粯璁ゅ�间负鈥�1鈥�
+ serviceSubtaskPreachform.setSendstate("1");
+ if (StringUtils.isNotEmpty(sendstate)) serviceSubtaskPreachform.setSendstate(sendstate);
+
+ serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
+ serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
+ }
+
+ }
+
+ return sspl;
+ }
/**
* @param serviceSubtask
@@ -649,7 +840,13 @@
serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
serviceSubtaskPreachform.setSendstate(failSendstate);
+ serviceSubtaskPreachform.setCurrentSendTime(new Date());
+ if (serviceSubtask.getType().equals("3") || serviceSubtask.getType().equals("4")) {
+ //濡傛灉鏄鏁欐垨閫氱煡锛屽苟涓斿彂閫佹垚鍔燂紝鐩存帴灏嗗彂閫佺姸鎬佹敼鎴�9
+ if (failSendstate.equals("2")) serviceSubtaskPreachform.setSendstate("9");
+ }
serviceSubtaskPreachformMapper.updateSSPByCondition(serviceSubtaskPreachform);
+
return true;
}
@@ -660,11 +857,13 @@
serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
//鑾峰彇璇ユ偅鑰呯殑鍙戦�佹柟寮忔�绘暟
List<ServiceSubtaskPreachform> spSize = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-
+ log.error("-------spSize鐨勫�间负锛歿}", spSize);
serviceSubtaskPreachform.setPreachform(preachform);
//1:鏈彂閫佺姸鎬�
serviceSubtaskPreachform.setSendstate("1");
+ log.info("---serviceSubtaskPreachform鍏ュ弬涓猴細{}", serviceSubtaskPreachform);
List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+ log.info("---serviceSubtaskPreachform杩斿弬涓猴細{}", serviceSubtaskPreachforms);
//鐢佃瘽鐨勬湭鍙戦�佺姸鎬侊紝闇�瑕佹煡2锛屽洜涓猴紝鏁版嵁鍙兘鍗″湪闃熷垪閲屼簡(涔熸湁鍙兘娌℃湁鎷夊彇锛宻endstate=1,鎵�浠ュ鏋滄槸鐢佃瘽鐘舵�佸垽鏂璼erviceSubtaskPreachforms鏄笉鏄负绌�)
if (preachform.equals("3") && CollectionUtils.isEmpty(serviceSubtaskPreachforms)) {
serviceSubtaskPreachform.setSendstate("2");
@@ -673,14 +872,21 @@
if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0);
serviceSubtaskPreachform1.setSendstate(failSendstate);
+ if (serviceSubtask.getType().equals("3") || serviceSubtask.getType().equals("4")) {
+ //濡傛灉鏄鏁欐垨閫氱煡锛屽苟涓斿彂閫佹垚鍔燂紝鐩存帴灏嗗彂閫佺姸鎬佹敼鎴�9
+ if (failSendstate.equals("2")) serviceSubtaskPreachform1.setSendstate("9");
+ }
serviceSubtaskPreachform1.setRemark(remark);
serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
//濡傛灉褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡,骞朵笖鏈杩樻槸鍙戦�佸け璐ワ紝閭g洿鎺ュ皢serviceSubtask鐨剆endstate鐘舵�佹敼鎴�5灏辫浜�(鍏ㄥけ璐ヤ簡)
- if (serviceSubtaskPreachform1.getSort() == spSize.size()) {
+ if (CollectionUtils.isNotEmpty(spSize) && serviceSubtaskPreachform1.getSort() == spSize.size()
+ && isSubtaskDeadline(serviceSubtask, serviceSubtaskPreachforms)) {
if (serviceSubtaskPreachform1.getSort() == spSize.size()) {
if (failSendstate.equals("4") || failSendstate.equals("5")) {
serviceSubtask.setCurrentPreachform(preachform);
- serviceSubtask.setSendstate(5L);
+ serviceSubtask.setSendstate(7L);
+ serviceSubtask.setFinishtime(null);
+ serviceSubtask.setRemark("澶勭悊琛ュ伩浠诲姟,褰撳墠澶勭悊鏈�鍚庤ˉ鍋匡紝鍏ㄩ儴鎵ц澶辫触(瓒呮椂)");
serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
return true;
}
@@ -694,6 +900,12 @@
serviceSubtask.setCurrentPreachform(preachform);
serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
serviceSubtask.setSendstate(3L);
+ if (serviceSubtask.getType().equals("3") || serviceSubtask.getType().equals("4")) {
+ //濡傛灉鏄鏁欐垨閫氱煡锛屽苟涓斿彂閫佹垚鍔燂紝鍒欑洿鎺ュ皢serviceSubtask鐘舵�佹敼鎴�6L锛堣繖涓偅鑰呮槸娌℃湁棰樺仛鐨勶紝涓嶄細鍐嶈Е鍙戞帴鍙h繘琛岀姸鎬佷慨鏀癸級
+ if (failSendstate.equals("2")) {
+ serviceSubtask.setSendstate(6L);
+ }
+ }
serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
return true;
}
@@ -720,105 +932,41 @@
return targetKey;
}
-// private String getKey() {
-// Map<String, List> map = new HashMap<>();
-// for (int i = 0; i < 6; i++) {
-// Boolean aBoolean = redisCache.hasKey("cache-" + i);
-// if (!aBoolean) {
-// redisCache.setCacheList("cache-" + i, new ArrayList<String>());
-// map.put("cache-" + i, new ArrayList<String>());
-// } else {
-// map.put("cache-" + i, redisCache.getCacheObject("cache-" + i));
-// }
-// }
-//
-// String key = null;
-// List<String> value = new ArrayList<String>();
-// for (Map.Entry<String, List> entry : map.entrySet()) {
-// if (CollectionUtils.isEmpty(value)) {
-// value = entry.getValue();
-// key = entry.getKey();
-// } else {
-// value = entry.getValue();
-// key = entry.getKey();
-// }
-// }
-// return key;
-// }
+ // ---------------------------------------------------------------------
+ // 璇存槑锛氬師 getWXCode / getDXCode / encode 涓変釜绉佹湁鏂规硶宸查殢鍙戦�佹柟涓�璧锋敹鍙e埌
+ // ruoyi-message 妯″潡锛圶inHuaMpApi / LishuiSmsSender锛夛紝姝ゅ宸插垹闄わ紝閬垮厤閲嶅瀹炵幇銆�
+ // 娉ㄦ剰锛氭湰绫荤殑 getWXCode 鍘熶娇鐢� new GsonBuilder().disableHtmlEscaping()锛�
+ // 涓� RyTask.getWXCode 鐨� new Gson() 涓嶅悓锛岃宸紓宸插湪 XinHuaMpApi 涓寜绔欑偣淇濈暀銆�
+ // ---------------------------------------------------------------------
- private String getWXCode(String idcard, String url, String taskName, String taskDesc, String phone, String patientname, String setPatientid, List<String> wxqqxx) {
- XinHuaWXReq xinHuaWXReq = new XinHuaWXReq();
- xinHuaWXReq.setIdcard(idcard);
- xinHuaWXReq.setUrl(url);
- xinHuaWXReq.setPatientid(setPatientid);
- xinHuaWXReq.setPatientname(patientname);
- xinHuaWXReq.setMobile(phone);
- xinHuaWXReq.setMedcardno(null);
- xinHuaWXReq.setTitlename(taskName);
- xinHuaWXReq.setContent(taskDesc);
- xinHuaWXReq.setAppid(wxqqxx.get(1));
- log.error("-----寰俊鍏紬鍙风殑鍑哄弬涓�----锛歿}", xinHuaWXReq);
-// new Gson().toJson(xinHuaWXReq);
- GsonBuilder gb = new GsonBuilder();
- gb.disableHtmlEscaping();
- String body = gb.create().toJson(xinHuaWXReq);
-
- log.error("encode鐨勫叆鍙備负wxqqxx 锛歿}, body:{}", wxqqxx.get(2), body);
- String encode = encode(wxqqxx.get(2).concat(body));
- log.error("--------encode鐨勫�间负锛歿}-----", encode);
- Map<String, String> headerMap = new HashMap<>();
- headerMap.put("sign", encode);
- String result = HttpUtils.sendPostByHeader(wxqqxx.get(3), body, headerMap);
- log.error("--------result鐨勫�间负锛歿}-----", result);
-
- JSONObject jsonObject = JSONObject.parseObject(result);
- String code = (String) jsonObject.toString();
- return code;
- }
-
-
- 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();
+ /**
+ * 闅忚浠诲姟鏄惁瓒呮椂
+ * @param serviceSubtask
+ * @param serviceSubtaskPreachforms
+ * @return
+ */
+ public boolean isSubtaskDeadline(ServiceSubtask serviceSubtask, List<ServiceSubtaskPreachform> serviceSubtaskPreachforms){
+ if (ObjectUtils.isNotEmpty(serviceSubtask)) {
+ //鍙湁鍑洪櫌闅忚鍜屼笓鐥呴殢璁挎湁瓒呮椂
+ if(StringUtils.isNotEmpty(serviceSubtask.getServiceType()) &&
+ !serviceSubtask.getServiceType().equals("2") && !serviceSubtask.getServiceType().equals("13")){
+ return true;
+ }
}
- log.error("--------result鐨勫�间负锛歿}-----", result);
-
- JSONObject jsonObject = JSONObject.parseObject(result);
- String code = (String) jsonObject.toString();
- return code;
- }
-
-
- public String encode(String arg) {
- if (arg == null) {
- arg = "";
+ if (Objects.isNull(serviceSubtask) || CollectionUtils.isEmpty(serviceSubtaskPreachforms)) {
+ return false;
}
- MessageDigest md5 = null;
- try {
- md5 = MessageDigest.getInstance("MD5");
- md5.update(arg.getBytes("UTF-8"));
- } catch (Exception e) {
- e.printStackTrace();
- }
- return toHex(md5.digest());
+ // 鍩哄噯鏃跺埢锛氬嚭闄㈡椂闂� + 鍙戦�佹棩锛坰endDay 缂虹渷鎸� 1锛夛紝骞跺厹搴曢伩鍏� NPE/鑴忔暟鎹�
+ ServiceTask serviceTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+ int sendDay = serviceTask != null && serviceTask.getSendDay() != null ? serviceTask.getSendDay().intValue() : 1;
+ Date deadline = DateUtils.addDays(serviceSubtask.getEndtime(), sendDay);
+ int sumCompensateTime = CollectionUtils.isEmpty(serviceSubtaskPreachforms) ? 0 : serviceSubtaskPreachforms.stream()
+ .mapToInt(x -> x.getCompensateTime() == null ? 0 : Integer.parseInt(x.getCompensateTime()))
+ .sum();
+ sumCompensateTime = sumCompensateTime + 1;
+ // 鍙ˉ鍋挎渶鍚庝竴姝ヨ嚜韬殑琛ュ伩鏃堕棿锛堝ぉ锛夛紝鑴忓�间竴寰嬫寜 0 鍏滃簳
+ deadline = DateUtils.addDays(deadline, sumCompensateTime);
+ // 鍑洪櫌(鍙戦��)鏃堕棿 + 鏈琛ュ伩鏃堕棿 灏忎簬褰撳墠鏃堕棿 -> 瓒呮椂
+ return deadline.getTime() < new Date().getTime();
}
}
--
Gitblit v1.9.3