From 55d724ddd52b2acb6e7ee2d291e04e4b6d96ad19 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期一, 09 十一月 2026 16:06:47 +0800
Subject: [PATCH] sync: service_subtask 科室病区字段重命名对齐
---
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java | 295 +++++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 215 insertions(+), 80 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 7fca0e5..06bb890 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
@@ -17,7 +17,7 @@
import com.ruoyi.common.enums.WxGZHEnum;
import com.ruoyi.common.utils.*;
import com.ruoyi.common.utils.http.HttpUtils;
-import com.ruoyi.common.utils.sms.smsUtils;
+import com.ruoyi.common.utils.sms.SmsUtils;
import com.ruoyi.quartz.service.ICollectHISService;
import com.ruoyi.quartz.util.CreateDataTable;
import com.ruoyi.system.domain.SysConfig;
@@ -28,6 +28,7 @@
import com.smartor.common.LSHospTokenUtil;
import com.smartor.common.MtSubmitSmUtil;
import com.smartor.common.QwenLLMUtil;
+import com.smartor.common.SpecificArchiveConstants;
import com.smartor.domain.*;
import com.smartor.domain.VO.ServiceSubtaskDetailTraceVO;
import com.smartor.domain.entity.ServiceSubtaskEntity;
@@ -36,6 +37,7 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@@ -141,6 +143,12 @@
@Autowired
private ServiceSubtaskMapper serviceSubtaskMapper;
+
+ @Autowired
+ private ServiceTaskScheduleMapper serviceTaskScheduleMapper;
+
+ @Autowired
+ private ServiceTaskScheduleDetailMapper serviceTaskScheduleDetailMapper;
@Autowired
private RedisCache redisCache;
@@ -923,6 +931,13 @@
serviceSubtaskList.addAll(compensateServiceSubtaskList);
}
for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+ //currentPreachform涓虹┖锛岃鏄庤瀛愪换鍔¤繕娌℃湁鎵ц杩囦换浣曚竴绉嶅彂閫佹柟寮�(sendstate=1锛屽睘浜庨娆¤ˉ鍋�)锛�
+ //杩欓噷鐩存帴浜ょ粰sfHandlle澶勭悊锛屽畠浼氭寜sort=1鐨勭涓�绉嶅彂閫佹柟寮忓彂閫侊紝涓巊etSendPreachform涓殑澶勭悊淇濇寔涓�鑷�
+ if (StringUtils.isEmpty(serviceSubtask.getCurrentPreachform())) {
+ log.warn("銆恈ompensateTask銆憇ubid锛歿}锛宑urrentPreachform涓虹┖锛屾寜绗竴绉嶅彂閫佹柟寮忚ˉ鍋垮鐞�", serviceSubtask.getId());
+ sfHandlle(serviceSubtask);
+ continue;
+ }
//鏍规嵁褰撳墠鐨勬墽琛屾柟寮忥紝鑾峰彇涓嬩竴绉嶆墽琛屾柟寮�
ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
@@ -933,6 +948,25 @@
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()) {
+ // 鏂规B锛氬彧澶勭悊褰撳墠瀛愪换鍔♀�斺�斿叕浼楀彿宸查鍙�(service_subtask.sendstate=1 + current_preachform=5)
+ // 涓旀湭濉啓鏃讹紝鎸夐粯璁ら�夐」瀹屾垚锛岄伩鍏嶈繘鍏ヤ笅涓�绉嶅彂閫佹柟寮忔垨鏈�鍚庝竴姝ヨ秴鏃躲��
+ // 鍏堢敤鍐呭瓨瀛楁蹇�熻繃婊わ紝鍏朵粬鍖婚櫌/浠诲姟/鍙戦�佹柟寮忎笉浼氳繘鍏ヤ笅闈㈢殑榛樿瀹屾垚閫昏緫銆�
+ if (IServiceSubtaskService.WECHAT_DEFAULT_COMPLETE_ORGID.equals(serviceSubtask.getOrgid())
+ && "2".equals(serviceSubtask.getType())
+ && "5".equals(serviceSubtask.getCurrentPreachform())
+ && Long.valueOf(1L).equals(serviceSubtask.getSendstate())
+ && !Long.valueOf(1L).equals(serviceSubtask.getSubmit())) {
+ try {
+ if (iServiceSubtaskService.completeWechatClaimedByDefault(serviceSubtask)) {
+ log.info("銆恈ompensateTask銆憇ubid锛歿}锛屽井淇″叕浼楀彿宸查鍙栨湭濉啓锛屾寜榛樿閫夐」瀹屾垚", serviceSubtask.getId());
+ continue;
+ }
+ } catch (Exception e) {
+ // 鍗曚釜瀛愪换鍔″け璐ヤ笉褰卞搷鍏朵粬浠诲姟锛屽洖婊氬悗缁х画鍘熻ˉ鍋挎祦绋�
+ log.error("銆恈ompensateTask銆戝井淇″叕浼楀彿榛樿瀹屾垚澶辫触锛宻ubid锛歿}锛岀户缁師琛ュ伩娴佺▼", serviceSubtask.getId(), e);
+ }
+ }
+
//1鍏堟鏌ヤ竴涓嬶紝鏄笉鏄湁鎵ц鐘舵�佹槸瀹屾垚鐨勶紙鎬曚箣鍓嶅凡缁忔湁瀹岀殑浜嗭紝娌℃湁灏唖ervuce_subtask鐨勭姸鎬佹敼鎴愬姛锛岃繖閲屽啀妫�鏌ヤ竴涓嬶級
boolean finishState = serviceSubtaskPreachforms.stream().allMatch(item -> item.getSendstate().equals("9"));
if (finishState) {
@@ -993,6 +1027,24 @@
LocalDate today = LocalDate.now();
// 濡傛灉鏃ユ湡鏃╀簬鎴栫瓑浜庝粖澶╋紝杩斿洖 true
return !localDate.isAfter(today);
+ }
+
+ /**
+ * 鎸夋満鏋勬煡璇㈤厤缃�硷紙鍚屼竴 key 鍦ㄤ笉鍚屾満鏋勪笅鍙厤缃笉鍚屽�硷級
+ *
+ * @param configKey 閰嶇疆key
+ * @param orgid 鏈烘瀯ID
+ * @return 閰嶇疆鍊硷紝鏈厤缃繑鍥� null
+ */
+ private String getConfigValue(String configKey, String orgid) {
+ SysConfig query = new SysConfig();
+ query.setConfigKey(configKey);
+ query.setOrgid(orgid);
+ List<SysConfig> sysConfigs = configService.selectConfigList(query);
+ if (CollectionUtils.isNotEmpty(sysConfigs)) {
+ return sysConfigs.get(0).getConfigValue();
+ }
+ return null;
}
/**
@@ -1131,7 +1183,7 @@
} else {
sysConfig = sysConfigMapper.checkConfigKeyUnique("wj.sms.template");
}
- if (!Objects.isNull(sysConfig)) {
+ if (!Objects.isNull(sysConfig) && StringUtils.isNotEmpty(sysConfig.getConfigValue())) {
String smsContemt = sysConfig.getConfigValue();
// sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
sendMagParam.setContent(smsContemt.replace("${wjurl}", sendMagParam.getUrl()));
@@ -1145,7 +1197,7 @@
sendMagParam.setUrl(url);
SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique("xj.sms.template");
- if (!Objects.isNull(sysConfig)) {
+ if (!Objects.isNull(sysConfig) && StringUtils.isNotEmpty(sysConfig.getConfigValue())) {
String smsContemt = sysConfig.getConfigValue();
// sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
sendMagParam.setContent(smsContemt.replace("${xjurl}", sendMagParam.getUrl()));
@@ -1159,6 +1211,13 @@
sendMagParam.setContent(content);
}
+ }
+
+ //鍐呭涓虹┖璇存槑鐭俊妯℃澘鏈厤缃垨瀹f暀/閫氱煡鍐呭涓虹┖锛岀洿鎺ユ寜鍙戦�佸け璐ュ鐞嗭紝閬垮厤鍚庣画鍙戦�佹椂鍑虹幇绌烘寚閽�
+ if (StringUtils.isEmpty(sendMagParam.getContent())) {
+ log.error("銆恠fHandlle銆戦暱鏈熶换鍔$煭淇″唴瀹逛负绌猴紝鏃犳硶鍙戦�侊紝subid锛歿}锛宼askid锛歿}锛宼ype锛歿}锛屾満鏋処D锛歿}", serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getType(), serviceSubtask.getOrgid());
+ setSuccessPreachForm(serviceSubtask, sendPreachform, "闀挎湡浠诲姟鐭俊鍙戦�佸け璐�:鐭俊鍐呭涓虹┖(鐭俊妯℃澘鏈厤缃垨鍐呭涓虹┖), 鏃堕棿: " + now, "5");
+ return;
}
serviceOutPath.setRadix(format);
@@ -1196,33 +1255,48 @@
// String url = configService.selectConfigByKey("token.360", serviceSubtask.getOrgid());
// //涓芥按鐨勭煭淇″彂閫佹柟寮�
// Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());
- SysConfig config = new SysConfig();
- config.setConfigKey("ls.msg.info");
- config.setOrgid(serviceSubtask.getOrgid());
- List<SysConfig> sysConfigs = configService.selectConfigList(config);
- Map<String, String> msgInfo = new HashMap<>();
- if (CollectionUtils.isNotEmpty(sysConfigs)) {
- String configValue = sysConfigs.get(0).getConfigValue();
+ if ("47226079133110211G1001".equals(serviceSubtask.getOrgid())) {
+ // 濡囧辜涓浗绉诲姩浜慚AS锛屼笉渚濊禆 ls.msg.info 涓� token
+ SmsUtils.YunMasConfig yunMasConfig = SmsUtils.YunMasConfig.of(getConfigValue("ls.msg.yunmas", serviceSubtask.getOrgid()));
+ SmsUtils.SmsResult smsResult = SmsUtils.sendYunMasSms(yunMasConfig, sendMagParam.getPhone(), sendMagParam.getContent());
+ log.info("銆恠fHandlle銆戜簯MAS鐭俊鍙戦�佺粨鏋滐細ok={}锛宺spcod={}锛宮sgGroup={}锛宮essage={}",
+ smsResult.isOk(), smsResult.getRspcod(), smsResult.getMsgGroup(), smsResult.getMessage());
+ if (smsResult.isOk()) {
+ isSuccess = "true";
+ } else {
+ log.error("銆恠fHandlle銆戜簯MAS鐭俊鍙戦�佸け璐ワ紝subid锛歿}锛屾墜鏈哄彿锛歿}锛屽師鍥狅細{}",
+ serviceSubtask.getId(), sendMagParam.getPhone(), smsResult.getMessage());
+ }
+ } else {
+ SysConfig config = new SysConfig();
+ config.setConfigKey("ls.msg.info");
+ config.setOrgid(serviceSubtask.getOrgid());
+ List<SysConfig> sysConfigs = configService.selectConfigList(config);
+ Map<String, String> msgInfo = new HashMap<>();
+ if (CollectionUtils.isNotEmpty(sysConfigs)) {
+ String configValue = sysConfigs.get(0).getConfigValue();
+ ObjectMapper objectMapper = new ObjectMapper();
+ if (StringUtils.isNotEmpty(configValue)) {
+ msgInfo = objectMapper.readValue(configValue, Map.class);
+ }
+ }
+ log.info("-----------map鐨勫�间负锛歿}", msgInfo);
+ if (ObjectUtils.isEmpty(msgInfo) || StringUtils.isEmpty(msgInfo.get("address"))) {
+ setSuccessPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�, 鏃堕棿:" + now, "5");
+ return;
+ }
+ String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(), msgInfo.get("tokenUrl"));
+ log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫侊紝鍦板潃锛歿}锛屽弬鏁帮細{}锛屾満鏋処D锛歿}", msgInfo.get("address"), sendMagParam, serviceSubtask.getOrgid());
+ String dxCode = getDXCode(msgInfo.get("address"), sendMagParam.getPhone(), sendMagParam.getContent(), msgInfo.get("sendPersonId"), msgInfo.get("sendPersonName"), MsgLSEnum.getHeaderByCode(msgInfo), token);
+ log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫佺粨鏋滐細{}", dxCode);
ObjectMapper objectMapper = new ObjectMapper();
- if (StringUtils.isNotEmpty(configValue)) {
- msgInfo = objectMapper.readValue(configValue, Map.class);
+ Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);
+ String code = textParam.get("Code").toString();
+ if (code.equals("0")) {
+ isSuccess = "true";
}
}
- log.info("-----------map鐨勫�间负锛歿}", msgInfo);
- String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(), msgInfo.get("tokenUrl"));
- if (ObjectUtils.isNotEmpty(msgInfo) && StringUtils.isEmpty(msgInfo.get("address"))) {
- setSuccessPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�, 鏃堕棿:" + now, "5");
- return;
- }
- log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫侊紝鍦板潃锛歿}锛屽弬鏁帮細{}锛屾満鏋処D锛歿}", msgInfo.get("address"), sendMagParam, serviceSubtask.getOrgid());
- String dxCode = getDXCode(msgInfo.get("address"), sendMagParam.getPhone(), sendMagParam.getContent(), msgInfo.get("sendPersonId"), msgInfo.get("sendPersonName"), MsgLSEnum.getHeaderByCode(msgInfo), token);
- log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫佺粨鏋滐細{}", dxCode);
- ObjectMapper objectMapper = new ObjectMapper();
- Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);
- String code = textParam.get("Code").toString();
- if (code.equals("0")) {
- isSuccess = "true";
- }
+
} else if (active.equals("sltd") || active.equals("nhfy")) {
log.info("sltd杩涙潵浜嗗悧锛焮} ,---sendMagParam.getContent()鐨勫弬鏁颁负锛歿}", active, sendMagParam.getContent());
if (active.equals("sltd")) {
@@ -1255,10 +1329,10 @@
SysDept sysDeptVo = new SysDept();
List<SysDept> sysDepts = new ArrayList<>();
- if (ObjectUtils.isNotEmpty(serviceSubtask.getDeptcode())) {
+ if (ObjectUtils.isNotEmpty(serviceSubtask.getLeaveldeptcode())) {
sysDeptVo.setDeptType("1");
sysDeptVo.setOrgid(serviceSubtask.getOrgid());
- sysDeptVo.setDeptCode(serviceSubtask.getDeptcode());
+ sysDeptVo.setDeptCode(serviceSubtask.getLeaveldeptcode());
sysDeptService.selectDeptList(sysDeptVo);
} else if (ObjectUtils.isNotEmpty(serviceSubtask.getLeavehospitaldistrictcode())) {
sysDeptVo.setDeptType("2");
@@ -1270,13 +1344,13 @@
String campusid = ObjectUtils.isNotEmpty(sysDept) ? sysDept.getCampusid() : "2";
//婀栨花鍗曠嫭鍙戦�佹柟寮�
if ("1".equals(campusid)) {
- String result = smsUtils.sendSms1(xhsmsPath, xhsmsAccount, xhsmsPwd, sendMagParam.getPhone(), content);
+ String result = SmsUtils.sendSms1(xhsmsPath, xhsmsAccount, xhsmsPwd, sendMagParam.getPhone(), content);
//杩欓噷闇�瑕佹牴鎹畆esult杩斿洖鐨勫�煎幓鍒ゆ柇锛屾槸鍚︽垚鍔燂紝鐒跺悗灏嗗�艰祴鍊肩粰isSuccess
if (StringUtils.isNotEmpty(result) && result.contains("澶勭悊鎴愬姛")) {
isSuccess = "true";
}
} else {
- String result = smsUtils.sendSms(xhsmsPath, xhsmsAccount, xhsmsPwd, sendMagParam.getPhone(), content);
+ String result = SmsUtils.sendSms(xhsmsPath, xhsmsAccount, xhsmsPwd, sendMagParam.getPhone(), content);
//杩欓噷闇�瑕佹牴鎹畆esult杩斿洖鐨勫�煎幓鍒ゆ柇锛屾槸鍚︽垚鍔燂紝鐒跺悗灏嗗�艰祴鍊肩粰isSuccess
if (StringUtils.isNotEmpty(result) && result.contains("澶勭悊鎴愬姛")) {
isSuccess = "true";
@@ -1358,7 +1432,7 @@
//甯備竴鍖婚櫌
if (active.equals("hzszlyy")) {
//澶勭悊涓枃涔辩爜闂
- wxCode = smsUtils.sendChat(url, patArchive.getTelcode(), serviceSubtask.getSfzh());
+ wxCode = SmsUtils.sendChat(url, patArchive.getTelcode(), serviceSubtask.getSfzh());
} else {
wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), patArchive.getTelcode(), serviceSubtask.getSendname(), patArchive.getPatidHis(), wxqqxx);
}
@@ -1367,6 +1441,7 @@
//浠诲姟鍙戦�佽褰�
ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
+ serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
serviceSubtaskRecord.setPreachform("4");
@@ -1625,6 +1700,25 @@
}
}
+ /**
+ * 閲囬泦涓芥按甯傚骞间繚鍋ラ櫌闂ㄨ瘖鎺ヨ瘖瀹屾垚璁板綍锛屽苟鎸夐厤缃敓鎴愬绉�/鍎跨妗f銆�
+ * 瀹氭椂浠诲姟榛樿閲囬泦鏄ㄥぉ 00:00:00 ~ 浠婂ぉ 00:00:00銆�
+ */
+ public void collectMchArchive() {
+ try {
+ LocalDateTime todayZero = LocalDateTime.now().with(LocalTime.MIN);
+ LocalDateTime yesterdayZero = todayZero.minusDays(1);
+ Date startTime = Date.from(yesterdayZero.atZone(ZoneId.systemDefault()).toInstant());
+ Date endTime = Date.from(todayZero.atZone(ZoneId.systemDefault()).toInstant());
+ log.info("銆恈ollectMchArchive銆戝紑濮嬮噰闆嗕附姘村骞奸棬璇婃帴璇婂畬鎴愯褰�");
+ ichService.collectMchOuthospAndGenerateArchive(
+ SpecificArchiveConstants.LISHUI_MCH_ORG_ID, startTime, endTime);
+ log.info("銆恈ollectMchArchive銆戜附姘村骞奸棬璇婃帴璇婂畬鎴愯褰曢噰闆嗙粨鏉�");
+ } catch (Exception e) {
+ log.error("銆恈ollectMchArchive銆戜附姘村骞奸棬璇婃帴璇婂畬鎴愯褰曢噰闆嗗紓甯�", e);
+ }
+ }
+
public void collectHISYesterday() {
try {
// 鑾峰彇鏄ㄥぉ0鐐瑰埌浠婂ぉ0鐐圭殑鏃堕棿鑼冨洿
@@ -1748,14 +1842,15 @@
* @return
*/
private String getObject(ServiceSubtask serviceSubtask, String scriptContent) {
+ //鍐呭涓虹┖鏃剁洿鎺ヨ繑鍥烇紝閬垮厤涓嬮潰鐨剅eplace鍑虹幇绌烘寚閽�
+ if (StringUtils.isEmpty(scriptContent)) {
+ return 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, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : "");
}
- }
- if (StringUtils.isEmpty(scriptContent)) {
- return scriptContent;
}
scriptContent = scriptContent.replace("${name}", StringUtils.isNotEmpty(serviceSubtask.getSendname()) ? serviceSubtask.getSendname() : "");
scriptContent = scriptContent.replace("${dzz}", StringUtils.isNotEmpty(serviceSubtask.getAddr()) ? serviceSubtask.getAddr() : "");
@@ -1843,23 +1938,80 @@
if (Objects.isNull(serviceSubtask) || CollectionUtils.isEmpty(serviceSubtaskPreachforms)) {
return false;
}
- // 鍩哄噯鏃跺埢锛氬嚭闄㈡椂闂� + 鍙戦�佹棩锛坰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()))
+ Date deadline;
+ if (serviceTask != null && "5".equals(serviceTask.getAppltype())) {
+ // 浠诲姟缁勶細鍩哄噯 = schedule_benchmark 瑙f瀽鍑虹殑鏃堕棿 + day_offset锛屼笉鍙犲姞 send_day
+ deadline = resolveTaskGroupDeadlineBase(serviceSubtask);
+ if (deadline == null) {
+ log.warn("銆恑sSubtaskDeadline銆憇ubid锛歿} 浠诲姟缁勫熀鍑嗘椂闂翠负绌猴紝鏃犳硶璁$畻瓒呮椂锛屾寜鏈秴鏃跺鐞�", serviceSubtask.getId());
+ return false;
+ }
+ } else {
+ // 闈炰换鍔$粍锛氬熀鍑� = 鍑洪櫌鏃堕棿 + 鍙戦�佹棩锛坰endDay 缂虹渷鎸� 1锛�
+ if (serviceSubtask.getEndtime() == null) {
+ log.warn("銆恑sSubtaskDeadline銆憇ubid锛歿} endtime涓虹┖锛屾棤娉曡绠楄秴鏃讹紝鎸夋湭瓒呮椂澶勭悊", serviceSubtask.getId());
+ return false;
+ }
+ int sendDay = serviceTask != null && serviceTask.getSendDay() != null ? serviceTask.getSendDay().intValue() : 1;
+ deadline = DateUtils.addDays(serviceSubtask.getEndtime(), sendDay);
+ }
+ int sumCompensateTime = serviceSubtaskPreachforms.stream()
+ .mapToInt(x -> NumberUtils.toInt(x.getCompensateTime(), 0))
.sum();
sumCompensateTime = sumCompensateTime + 1;
- // 鍙ˉ鍋挎渶鍚庝竴姝ヨ嚜韬殑琛ュ伩鏃堕棿锛堝ぉ锛夛紝鑴忓�间竴寰嬫寜 0 鍏滃簳
+ // 琛ュ伩鏃堕棿鑴忓�间竴寰嬫寜 0 鍏滃簳锛屾渶鍚庡啀鍔� 1 澶╁闄�
deadline = DateUtils.addDays(deadline, sumCompensateTime);
- // 鍑洪櫌(鍙戦��)鏃堕棿 + 鏈琛ュ伩鏃堕棿 灏忎簬褰撳墠鏃堕棿 -> 瓒呮椂
return deadline.getTime() < new Date().getTime();
}
/**
+ * 浠诲姟缁勫熀鍑嗘椂闂达細鎸� schedule_benchmark 瑙f瀽鍚庡姞 day_offset銆�
+ * 0/鍏跺畠-鑷畾涔夋椂闂� 1-鍏ラ櫌 2-鍑洪櫌 3-灏辫瘖 4-鍏ョ粍
+ */
+ private Date resolveTaskGroupDeadlineBase(ServiceSubtask serviceSubtask) {
+ if (serviceSubtask.getScheduleId() == null || serviceSubtask.getScheduleDetailId() == null) {
+ return null;
+ }
+ ServiceTaskSchedule schedule = serviceTaskScheduleMapper.selectServiceTaskScheduleById(serviceSubtask.getScheduleId());
+ ServiceTaskScheduleDetail detail = serviceTaskScheduleDetailMapper.selectServiceTaskScheduleDetailById(serviceSubtask.getScheduleDetailId());
+ if (schedule == null || detail == null || detail.getDayOffset() == null) {
+ return null;
+ }
+ Date base;
+ Integer benchmark = schedule.getScheduleBenchmark() == null ? 0 : schedule.getScheduleBenchmark();
+ switch (benchmark) {
+ case 1:
+ base = serviceSubtask.getStarttime();
+ break;
+ case 2:
+ base = serviceSubtask.getEndtime();
+ break;
+ case 3:
+ base = serviceSubtask.getAdmindate();
+ break;
+ case 4:
+ base = serviceSubtask.getCreateTime();
+ break;
+ default:
+ base = schedule.getScheduleBenchmarkCustomTime();
+ break;
+ }
+ return base == null ? null : DateUtils.addDays(base, detail.getDayOffset());
+ }
+
+ /**
* 澶勭悊瓒呮椂闅忚浠诲姟
- * @return
+ * <p>
+ * 鎵弿銆屽嚭闄㈡弧 deadlineDay 澶╀粛鏈畬鎴愩�嶇殑棣栨闅忚浠诲姟锛坰endstate=7 + visit_count=1锛夛紝
+ * 鎸夊綋鍓嶄换鍔$殑 nexttaskid 鐢熸垚鍐嶆闅忚浠诲姟锛岀瀹ゅ浐瀹氫负闅忚涓績绉戝銆�
+ * <p>
+ * 娉ㄦ剰锛氭埅姝㈡椂闂村繀椤诲湪寰幆澶栬绠椾竴娆°�傚巻鍙插疄鐜版妸 {@code deadlineDay = -deadlineDay}
+ * 鍐欏湪寰幆浣撳唴锛屾瘡杞彇鍙嶄竴娆★紝瀵艰嚧鍋舵暟杞敤銆屼粖澶� + deadlineDay銆嶅仛鎴鏃堕棿锛�
+ * 鎶婂嚭闄笉婊� 28 澶╃殑瓒呮椂浠诲姟涔熸壂浜嗚繘鏉ャ��
+ *
+ * @param orgid 鏈烘瀯ID
+ * @param deadlineDay 鍑洪櫌婊″灏戝ぉ绠楄秴鏃讹紙姝f暟锛屽 28锛�
*/
public void dealSubtaskDeadline(String orgid, Integer deadlineDay){
//鑾峰彇浠诲姟淇℃伅
@@ -1869,9 +2021,17 @@
st.setNexttaskflag("1");
st.setOrgid(orgid);
List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);
+
+ // 鎴鏃堕棿鍙畻涓�娆★細鍑洪櫌鏃堕棿 <= 浠婂ぉ - deadlineDay
+ int days = Math.abs(ObjectUtils.isEmpty(deadlineDay) ? 28 : deadlineDay);
+ Date deadline = DateUtils.addDays(new Date(), -days);
+ log.info("銆恉ealSubtaskDeadline銆戝紑濮嬫壂鎻�, orgid={}, day={}, deadline={}, 浠诲姟鏁�={}",
+ orgid, days, deadline, serviceTasks.size());
+
for (ServiceTask serviceTask : serviceTasks) {
- deadlineDay = -deadlineDay;
- Date deadline = DateUtils.addDays(new Date(), deadlineDay);
+ if (ObjectUtils.isEmpty(serviceTask.getNexttaskid())) {
+ continue;
+ }
//閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�,骞朵笖闅忚鏃堕棿寰楁槸浠婂ぉ涔嬪墠鐨�
ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
serviceSubtaskVO.setOrgid(orgid);
@@ -1880,45 +2040,20 @@
serviceSubtaskVO.setVisitCount(1);
serviceSubtaskVO.setTaskid(serviceTask.getTaskid());
serviceSubtaskVO.setEndOutHospTime(deadline);
+
List<ServiceSubtask> serviceSubtaskList
= serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
log.info("銆恉ealSubtaskDeadline銆戣幏鍙栧埌{}涓秴鏃朵换鍔�, taskid={}", serviceSubtaskList.size(), serviceTask.getTaskid());
for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
- PatMedInhosp patMedInhospVo = new PatMedInhosp();
- patMedInhospVo.setOrgid(serviceSubtask.getOrgid());
- patMedInhospVo.setInhospid(serviceSubtask.getInhospid());
- List<PatMedInhosp> patMedInhospList = iPatMedInhospService.selectPatMedInhospList(patMedInhospVo);
- PatMedInhosp patMedInhosp = new PatMedInhosp();
- if (!patMedInhospList.isEmpty()) {
- patMedInhosp = patMedInhospList.get(0);
- }else {
- continue;
- }
- if(ObjectUtils.isEmpty(serviceTask.getNexttaskid())){
- continue;
- }
- ServiceTask nextServiceTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceTask.getNexttaskid());
- PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());
- String config = configService.selectConfigByKey("visit.early.day");
- Integer type = 1;
-
- //鏂板鍐嶆闅忚浠诲姟
- ServiceSubtask serviceSubtaskAgain = iPatMedInhospService.boxedServiceSubtask(nextServiceTask,
- patMedInhosp, patArchive, config, type);
- serviceSubtaskAgain.setId(null);
- serviceSubtaskAgain.setUpid(serviceSubtask.getId().intValue());
- serviceSubtaskAgain.setVisitCount(serviceSubtask.getVisitCount() + 1);
- serviceSubtaskAgain.setSendstate(2L);
- serviceSubtaskAgain.setCreateTime(new Date());
- serviceSubtaskAgain.setUpdateTime(new Date());
- serviceSubtaskAgain.setVisitType(serviceSubtask.getVisitType());
- serviceSubtaskAgain.setVisitDeptCode(serviceSubtask.getVisitDeptCode());
- serviceSubtaskAgain.setVisitDeptName(serviceSubtask.getVisitDeptName());
- int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtaskAgain);
- if (i == 1) {
- //鍐嶆闅忚浠诲姟鍒涘缓鎴愬姛鍚庯紝鍘熶换鍔℃敼涓哄け璐ョ姸鎬�
- serviceSubtask.setSendstate(5L);
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+ try {
+ // 鐢熸垚閫昏緫缁熶竴鏀跺彛鍒� service锛氶攣 + 骞傜瓑 + 浜嬪姟 + 鍙戦�佹柟寮忔槑缁嗗垵濮嬪寲
+ String result = iServiceSubtaskService.addSubTaskAgainByDeadline(serviceSubtask);
+ log.info("銆恉ealSubtaskDeadline銆戠敓鎴愬啀娆¢殢璁�, subId={}, taskid={}, 缁撴灉={}",
+ serviceSubtask.getId(), serviceTask.getTaskid(), result);
+ } catch (Exception e) {
+ // 鍗曟潯澶辫触涓嶅奖鍝嶅叾浠栨偅鑰�
+ log.error("銆恉ealSubtaskDeadline銆戠敓鎴愬啀娆¢殢璁垮け璐�, subId=" + serviceSubtask.getId()
+ + ", taskid=" + serviceTask.getTaskid(), e);
}
}
}
--
Gitblit v1.9.3