From 2d3b575ed96eee7ccd5b324baa3135d2236934ac Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期五, 13 十一月 2026 16:39:37 +0800
Subject: [PATCH] 【市一】1、登录服务问题处理 2、电话挂断问题处理 3、查询报错问题处理
---
ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java | 86 +++++++++++++++++++++++++++++++++++--------
1 files changed, 70 insertions(+), 16 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 e8da574..e889ed6 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
@@ -44,8 +44,12 @@
import com.ruoyi.task.domain.ServiceSubtask;
import com.ruoyi.task.domain.ServiceSubtaskRecord;
import com.ruoyi.task.domain.ServiceTask;
+import com.ruoyi.task.domain.ServiceTaskSchedule;
+import com.ruoyi.task.domain.ServiceTaskScheduleDetail;
import com.ruoyi.task.mapper.ServiceSubtaskMapper;
import com.ruoyi.task.mapper.ServiceTaskMapper;
+import com.ruoyi.task.mapper.ServiceTaskScheduleMapper;
+import com.ruoyi.task.mapper.ServiceTaskScheduleDetailMapper;
import com.ruoyi.task.domain.ServiceOutPath;
import com.ruoyi.task.service.IServiceOutPathService;
import com.ruoyi.task.domain.ServiceSubtaskPreachform;
@@ -110,6 +114,12 @@
@Autowired
private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
+
+ @Autowired
+ private ServiceTaskScheduleMapper serviceTaskScheduleMapper;
+
+ @Autowired
+ private ServiceTaskScheduleDetailMapper serviceTaskScheduleDetailMapper;
@Autowired
private IServiceSubtaskRecordService serviceSubtaskRecordService;
@@ -344,7 +354,7 @@
iServiceOutPathService.insertServiceOutPath(serviceOutPath);
// sendMagParam.setUrl(ip + ":" + req_path + "/followvisit/particty?param1=" + taskId + "¶m2=" + patid + "¶m5=false");
//杞垚16杩涘埗
- String format = String.format("%03X", serviceOutPath.getId());
+ String format = ShortCode.encode(serviceOutPath.getId());
serviceOutPath.setRadix(format);
serviceOutPath.setUpdateTime(new Date());
serviceOutPath.setUrl(ip + ":" + req_path + "/sf?p=" + format);
@@ -380,7 +390,7 @@
serviceOutPath.setDeptName(serviceSubtask.getLeaveldeptname());
serviceOutPath.setWardName(serviceSubtask.getLeavehospitaldistrictname());
iServiceOutPathService.insertServiceOutPath(serviceOutPath);
- String format = String.format("%03X", serviceOutPath.getId());
+ String format = ShortCode.encode(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);
@@ -421,7 +431,7 @@
serviceOutPath.setWardName(serviceSubtask.getLeavehospitaldistrictname());
iServiceOutPathService.insertServiceOutPath(serviceOutPath);
String url = "";
- String format = String.format("%03X", serviceOutPath.getId());
+ String format = ShortCode.encode(serviceOutPath.getId());
//闇�瑕侀�氳繃妯℃澘ID鍘诲垽鏂鍙戠殑鍐呭鏄鏁欒繕鏄�氱煡
// 鈿狅笍 涓� RyTask 鍚屽彛寰勶細**鍒绘剰涓�**涓� TemplateModuleDisabledException 闄嶇骇 鈥斺��
// 妯℃澘妯″潡鍏抽棴鏃跺鏁欏唴瀹瑰彇涓嶅埌銆佺煭淇$‘瀹炲彂涓嶅嚭鍘伙紝澶栧眰 try-catch 濡傚疄璁板け璐�
@@ -522,7 +532,7 @@
serviceOutPath.setDeptName(serviceSubtask.getLeaveldeptname());
serviceOutPath.setWardName(serviceSubtask.getLeavehospitaldistrictname());
iServiceOutPathService.insertServiceOutPath(serviceOutPath);
- String format = String.format("%03X", serviceOutPath.getId());
+ String format = ShortCode.encode(serviceOutPath.getId());
serviceOutPath.setRadix(format);
serviceOutPath.setUpdateTime(new Date());
url = ip + ":" + req_path + "/sf?p=" + format;
@@ -542,7 +552,7 @@
serviceOutPath.setDeptName(serviceSubtask.getLeaveldeptname());
serviceOutPath.setWardName(serviceSubtask.getLeavehospitaldistrictname());
iServiceOutPathService.insertServiceOutPath(serviceOutPath);
- String format = String.format("%03X", serviceOutPath.getId());
+ String format = ShortCode.encode(serviceOutPath.getId());
url = StringUtils.isNotEmpty(req_path) ? ip + ":" + req_path + "/wt?p=" + format : ip + "/wt?p=" + format;
//濡傛灉type鏄闊抽殢璁跨殑璇濓紙璇存槑琛ュ伩鍙戦�佹柟寮忎腑鏈夌數璇濋殢璁跨殑鏂瑰紡锛岃繖閲岀殑澶栭摼灏卞湴鍧�鍙兘鐢�/sf锛�
@@ -567,7 +577,7 @@
serviceOutPath.setWardName(serviceSubtask.getLeavehospitaldistrictname());
serviceOutPath.setOrgid(serviceSubtask.getOrgid());
iServiceOutPathService.insertServiceOutPath(serviceOutPath);
- String format = String.format("%03X", serviceOutPath.getId());
+ String format = ShortCode.encode(serviceOutPath.getId());
//闇�瑕侀�氳繃妯℃澘ID鍘诲垽鏂鍙戠殑鍐呭鏄鏁欒繕鏄�氱煡
// HeLibrary heLibrary = templateFacade.findHeLibraryById(serviceSubtask.getLibtemplateid());
@@ -1033,21 +1043,65 @@
if (Objects.isNull(serviceSubtask) || CollectionUtils.isEmpty(serviceSubtaskPreachforms)) {
return false;
}
- // 鍩哄噯鏃跺埢锛氬嚭闄㈡椂闂� + 鍙戦�佹棩锛坰endDay 缂虹渷鎸� 1锛夛紝骞跺厹搴曢伩鍏� NPE/鑴忔暟鎹�
- if (serviceSubtask.getEndtime() == null) {
- log.warn("銆恑sSubtaskDeadline銆憇ubid锛歿} endtime涓虹┖锛屾棤娉曡绠楄秴鏃讹紝鎸夋湭瓒呮椂澶勭悊", serviceSubtask.getId());
- return false;
- }
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()
+ 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());
+ }
}
--
Gitblit v1.9.3