From db2a00f5df9990e55ebbdf16cf8c68c3d64fe09d Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 28 七月 2026 16:26:43 +0800
Subject: [PATCH] Merge branch 'master' into master-任务组
---
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java | 203 ++++++++++++++++++++++++++------------------------
1 files changed, 105 insertions(+), 98 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 0422675..befb224 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
@@ -25,6 +25,7 @@
import com.smartor.common.MtSubmitSmUtil;
import com.smartor.common.QwenLLMUtil;
import com.smartor.domain.*;
+import com.smartor.domain.VO.ServiceSubtaskDetailTraceVO;
import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.mapper.*;
import com.smartor.service.*;
@@ -146,6 +147,9 @@
ISysDeptService sysDeptService;
@Autowired
+ IServiceSubtaskDetailTraceService serviceSubtaskDetailTraceService;
+
+ @Autowired
IPatMedOuthospService patMedOuthospService;
@Autowired
@@ -180,6 +184,9 @@
private String active;
@Autowired
private SysConfigMapper sysConfigMapper;
+
+ @Autowired
+ private IServiceTaskScheduleService serviceTaskScheduleService;
public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) {
System.out.println(StringUtils.format("鎵ц澶氬弬鏂规硶锛� 瀛楃涓茬被鍨媨}锛屽竷灏旂被鍨媨}锛岄暱鏁村瀷{}锛屾诞鐐瑰瀷{}锛屾暣褰}", s, b, l, d, i));
@@ -229,6 +236,38 @@
serviceThirdData.setCreateTime(new Date());
iServiceThirdDataService.queryList(serviceThirdData);
}
+
+ /**
+ * 瀹氭椂鍙戦�丼LTD婊℃剰搴﹀紓甯镐俊鎭�
+ */
+ public void sendSLTDMYDExceptInfo() {
+ //1.鑾峰彇鍙戦�佷汉宸ュ彿
+ ServiceSubtaskDetailTraceVO subtaskDetailTraceVO = new ServiceSubtaskDetailTraceVO();
+ subtaskDetailTraceVO.setHandleFlag("0");
+ List<ServiceSubtaskDetailTrace> serviceSubtaskDetailTraces = serviceSubtaskDetailTraceService.selectServiceSubtaskDetailTtraceList(subtaskDetailTraceVO);
+ // 鎶� dutyDeptPersonCode 鏁寸悊鍒� list 涓紙濡傛灉澶氫釜浜虹敤閫楀彿鍒嗗壊锛屽垯灞曞紑骞跺幓閲嶏級
+ List<String> dutyDeptPersonCodeList = serviceSubtaskDetailTraces.stream().map(ServiceSubtaskDetailTrace::getDutyDeptPersonCode).filter(StringUtils::isNotBlank).flatMap(code -> Arrays.stream(code.split(","))).map(String::trim).filter(StringUtils::isNotBlank).distinct() // 鍘婚噸
+ .collect(Collectors.toList());
+ // 鑾峰彇鈥滅渷绔嬪悓寰锋弧鎰忓害寮傚父鍐呭鎻愰啋"
+ SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique("sltd.myd.send.except.contont");
+ String exceptContent = sysConfig.getConfigValue();
+
+ // 鑾峰彇鈥滅渷绔嬪悓寰锋弧鎰忓害寮傚父鍐呭鎻愰啋娴嬭瘯浜哄伐鍙封��
+ String testPerson = sysConfigMapper.checkConfigKeyUnique("sltd.myd.send.test.person").getConfigValue();
+ if (StringUtils.isNotBlank(testPerson)) {
+ String[] split = testPerson.split(",");
+ if (CollectionUtils.isEmpty(dutyDeptPersonCodeList)) dutyDeptPersonCodeList = Arrays.asList(split);
+ else dutyDeptPersonCodeList.addAll(Arrays.asList(split));
+ }
+
+ if (CollectionUtils.isNotEmpty(dutyDeptPersonCodeList)) {
+ for (String dutyDeptPersonCode : dutyDeptPersonCodeList) {
+ log.info("銆恠endSLTDMYDExceptInfo銆戝彂閫佷汉宸ュ彿锛歿}", dutyDeptPersonCode);
+ String data = MessageSend.sendMsg(exceptContent, "7", dutyDeptPersonCode, LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
+ }
+ }
+ }
+
/**
* 瀹氭椂澶勭悊澶栭摼鐨勬暟鎹�
@@ -600,7 +639,7 @@
serviceSLTDInhospReqVO.setCurrent(outpPage);
serviceSLTDInhospReqVO.setSize(OUTP_PAGE_SIZE);
log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滆嵂鍝佹暟鎹�濋噰闆嗙{}椤垫暟鎹�", outpPage);
- Boolean b = serviceSLTDHealthcareRecordService.queryMedicationItemList(serviceSLTDInhospReqVO);
+ Boolean b = serviceSLTDHealthcareRecordService.queryMedicationItemList(serviceSLTDInhospReqVO);
log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滆嵂鍝佹暟鎹�濋噰闆嗙粨鏋滐細{}", b);
outpPage++;
}
@@ -678,17 +717,17 @@
}
/**
- * 澶勭悊鎮h�呬俊鎭紝杩涘叆瀛愪换鍔¤〃
+ * 澶勭悊鎮h�呬俊鎭紝杩涘叆瀛愪换鍔¤〃(浠诲姟缁�)
*/
- public void dealOutHospInfoByDimension() {
+ public void dealOutHospInfoBySchedule() {
String config = configService.selectConfigByKey("visit.early.day");
if (port.equals("8095")) {
//鍑洪櫌琛�
- iPatMedInhospService.dealOutHospInfoByDimension(config);
+ iPatMedInhospService.dealOutHospInfoBySchedule(config);
//闂ㄨ瘖琛�(鏂板崕鐨勬殏鏃朵笉鍋氶棬璇婇殢璁�)
- if (!active.equals("xh")) {
- //iPatMedOuthospService.dealOutpatientInfo();
- }
+// if (!active.equals("xh")) {
+// //iPatMedOuthospService.dealOutpatientInfo();
+// }
}
}
@@ -759,91 +798,16 @@
* 澶勭悊琛ュ伩浠诲姟
*/
public void compensateTask() {
- //鑾峰彇鍒皊endstate=3 骞朵笖 visit_time涓哄皬浜庣瓑浜庝粖澶╃殑subtask
+ //鑾峰彇鍒皊endstate=3銆�1 骞朵笖 visit_time涓哄皬浜庣瓑浜庝粖澶╃殑subtask
+ List<Long> list = Arrays.asList(3L, 1L);
ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
- serviceSubtaskVO.setSendstate(3L);
- serviceSubtaskVO.setVisitTime(new Date());
- List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.getCompensateServiceSubtaskList(serviceSubtaskVO);
- for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
- //鏍规嵁褰撳墠鐨勬墽琛屾柟寮忥紝鑾峰彇涓嬩竴绉嶆墽琛屾柟寮�
- ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
- serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
- serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
- serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
- List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
- //鑾峰彇褰撳墠鎵ц鏂瑰紡鐨勫簭鍙�
- Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst();
- Optional<Long> id = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getId).findFirst();
- if (currentSort.isPresent()) {
- //1鍏堟鏌ヤ竴涓嬶紝鏄笉鏄湁鎵ц鐘舵�佹槸瀹屾垚鐨勶紙鎬曚箣鍓嶅凡缁忔湁瀹岀殑浜嗭紝娌℃湁灏唖ervuce_subtask鐨勭姸鎬佹敼鎴愬姛锛岃繖閲屽啀妫�鏌ヤ竴涓嬶級
- boolean finishState = serviceSubtaskPreachforms.stream().allMatch(item -> item.getSendstate().equals("9"));
- if (finishState) {
- serviceSubtask.setSendstate(6L);
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- continue;
- }
-
- //2鍒ゆ柇涓�涓嬶紝褰撳墠鐨剆ort鏄笉鏄瓑浜庨渶瑕佹墽琛岀殑鎬讳釜鏁帮紝濡傛灉绛変簬鐨勮瘽锛岃鏄庢槸鏈�鍚庝竴涓紝鐩存帴灏唖ervuce_subtask鐨勭姸鎬佹敼鎴�5锛屾墽琛屽け璐ュ氨琛屼簡
- Long cs = currentSort.get();
- if (cs.equals(serviceSubtaskPreachforms.size())) {
- serviceSubtask.setSendstate(7L);
- serviceSubtask.setRemark("澶勭悊琛ュ伩浠诲姟,褰撳墠澶勭悊鏈�鍚庤ˉ鍋匡紝鍏ㄩ儴鎵ц澶辫触锛堣秴鏃讹級");
-
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- //淇敼鍙戦�佹柟寮忕殑鐘舵�佷负澶辫触
- serviceSubtaskPreachform.setSendstate("5");
- serviceSubtaskPreachform.setId(id.get());
-
- serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform);
- continue;
- }
-
- //3.涓嶆槸鏈�鍚庝竴涓紝鑾峰彇鍒颁笅涓�涓墽琛屾柟寮�(鍥犱负閮芥槸鍦ㄤ粖澶╂墽琛岋紝閭e氨鐩存帴鍙戝嚭鍘诲氨瀹屼簡)
- sfHandlle(serviceSubtask);
- }
- }
- }
-
- /**
- * 闀挎湡浠诲姟鍙戦��
- */
- public void longTaskSendTest(Long subId) {
- //鑾峰彇浠诲姟淇℃伅
- ServiceTask st = new ServiceTask();
- st.setDelFlag("0");
- st.setLongTask(1);
- List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);
- log.info("銆恖ongTaskSend銆戣幏鍙栧埌{}涓暱鏈熶换鍔�", serviceTasks.size());
- for (ServiceTask serviceTask : serviceTasks) {
- CommonTaskcallMQ commonTaskcallMQ = new CommonTaskcallMQ();
- commonTaskcallMQ.setTaskid(serviceTask.getTaskid());
- commonTaskcallMQ.setPreachform(serviceTask.getPreachform());
- commonTaskcallMQ.setSendType("2");
-
- //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�,骞朵笖闅忚鏃堕棿寰楁槸浠婂ぉ涔嬪墠鐨�
- ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
- serviceSubtaskVO.setTaskid(commonTaskcallMQ.getTaskid());
- serviceSubtaskVO.setSendstate(2L);
- serviceSubtaskVO.setIsVisitAgain(1);
- serviceSubtaskVO.setSubId(subId);
+ List<ServiceSubtask> serviceSubtaskList = new ArrayList<>();
+ for (Long sendstate : list) {
+ serviceSubtaskVO.setSendstate(sendstate);
serviceSubtaskVO.setVisitTime(new Date());
- List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.queryServiceSubtaskList(serviceSubtaskVO);
- for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
- sfHandlle(serviceSubtask);
- }
+ List<ServiceSubtask> compensateServiceSubtaskList = serviceSubtaskMapper.getCompensateServiceSubtaskList(serviceSubtaskVO);
+ serviceSubtaskList.addAll(compensateServiceSubtaskList);
}
- }
-
- /**
- * 澶勭悊琛ュ伩浠诲姟
- */
- public void compensateTaskTest(Long subId) {
- //鑾峰彇鍒皊endstate=3 骞朵笖 visit_time涓哄皬浜庣瓑浜庝粖澶╃殑subtask
- ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
- serviceSubtaskVO.setSendstate(3L);
- serviceSubtaskVO.setSubId(subId);
- serviceSubtaskVO.setVisitTime(new Date());
- List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.getCompensateServiceSubtaskList(serviceSubtaskVO);
for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
//鏍规嵁褰撳墠鐨勬墽琛屾柟寮忥紝鑾峰彇涓嬩竴绉嶆墽琛屾柟寮�
ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
@@ -1143,10 +1107,18 @@
//鐪佺珛鍚屽痉鐨勭煭淇″彂閫佹柟寮�
String data = MessageSend.sendMsg(sendMagParam.getContent(), "6", sendMagParam.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
if (StringUtils.isNotEmpty(data)) {
- ObjectMapper mapper = new ObjectMapper();
- JsonNode root = mapper.readTree(data);
- String status = root.get("result").get(0).get("status").asText();
- if (status.equals("00000")) {
+ // 瑙f瀽 result=0&description=鎴愬姛&faillist= 鏍煎紡锛坮esult=0鎴愬姛锛�1澶辫触锛�
+ log.info("銆恠fHandlle銆戠渷绔嬪悓寰风煭淇″彂閫佽繑鍥烇細{}", data);
+ String[] pairs = data.split("&");
+ String resultVal = null;
+ for (String pair : pairs) {
+ String[] kv = pair.split("=", 2);
+ if ("result".equals(kv[0])) {
+ resultVal = kv.length > 1 ? kv[1] : null;
+ break;
+ }
+ }
+ if ("0".equals(resultVal)) {
isSuccess = "true";
}
}
@@ -1231,11 +1203,7 @@
String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
String url = null;
- url = localIP + ":" + req_path + "/outsideChainwt?param1=" + taskId +
- "¶m2=" + patid +
- "¶m3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) +
- "¶m5=false" +
- "$param6=" + subId;
+ url = localIP + ":" + req_path + "/outsideChainwt?param1=" + taskId + "¶m2=" + patid + "¶m3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "¶m5=false" + "$param6=" + subId;
ServiceOutPath serviceOutPath = new ServiceOutPath();
serviceOutPath.setParam1(taskId);
@@ -1653,4 +1621,43 @@
int result = QwenLLMUtil.matchRegex(questionText, voiceText, value, regexText);
return result;
}
+
+ /**
+ * 浠诲姟缁勶紙appltype=5锛夐杞撼鍏ワ細鎵弿鏂板嚭闄㈡偅鑰咃紝鎸� schedule 缁戝畾鐨勭淮搴﹀尮閰嶄换鍔$粍锛�
+ * 涓哄懡涓殑鎮h�呮寜璁″垝鏄庣粏涓�娆℃�х敓鎴愮 0 杞� N 鏉� subtask锛屽苟缃� schedulecheck_flag=1銆�
+ * 鍚庣画杞鐢� {@link #rollTaskGroupCycle()} 璐熻矗銆�
+ * <p>
+ * 涓庝富鎵弿 dealOutHospInfo 鍒嗙锛屼簰涓嶅共鎵般�傚缓璁瘡 30 鍒嗛挓鎵ц涓�娆°��
+ */
+ public void dealTaskGroupOutHosp() {
+ log.info("銆恉ealTaskGroupOutHosp銆戝紑濮嬫壂鎻忎换鍔$粍鏂板嚭闄㈡偅鑰�");
+ if (!port.equals("8095")) {
+ return;
+ }
+ try {
+ String config = configService.selectConfigByKey("visit.early.day");
+ iPatMedInhospService.dealOutHospInfoBySchedule(config);
+ log.info("銆恉ealTaskGroupOutHosp銆戜换鍔$粍棣栬疆绾冲叆鎵弿瀹屾垚");
+ } catch (Exception e) {
+ log.error("銆恉ealTaskGroupOutHosp銆戜换鍔$粍鎵弿寮傚父", e);
+ }
+ }
+
+ /**
+ * 浠诲姟缁勶紙appltype=5锛夊惊鐜换鍔℃粴鍔ㄨ皟搴︺��
+ * <p>
+ * 鎵弿鎵�鏈� schedule_style=1 鐨勮鍒掞紝鑻ユ湰杞� subtask 鍏ㄩ儴 finalize锛坰endstate 鈭� 1/2/3锛夛紝
+ * 鍒欏厠闅嗘湰杞偅鑰呭埌涓嬩竴杞紝鎺ㄨ繘 current_loop_count 涓� visit_time銆�
+ * <p>
+ * 寤鸿姣忓皬鏃舵垨姣忓崐灏忔椂鎵ц涓�娆★紝閬垮厤杞绉帇銆�
+ */
+ public void rollTaskGroupCycle() {
+ log.info("銆恟ollTaskGroupCycle銆戝紑濮嬫壂鎻忓惊鐜换鍔$粍");
+ try {
+ int rolled = serviceTaskScheduleService.rollCycleTasks();
+ log.info("銆恟ollTaskGroupCycle銆戞湰娆℃帹杩� {} 涓鍒�", rolled);
+ } catch (Exception e) {
+ log.error("銆恟ollTaskGroupCycle銆戞粴鍔ㄨ皟搴﹀紓甯�", e);
+ }
+ }
}
--
Gitblit v1.9.3