From fcb98e4558897945a316d04555923355b8e60605 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 21 七月 2026 10:16:56 +0800
Subject: [PATCH] Merge branch 'master' into master-任务组
---
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 107 insertions(+), 10 deletions(-)
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
index 4df6251..a0c8a9a 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -6,6 +6,7 @@
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
+import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.dx.MessageSend;
import com.ruoyi.common.exception.base.BaseException;
@@ -16,6 +17,7 @@
import com.ruoyi.system.mapper.SysConfigMapper;
import com.smartor.common.FtpService;
import com.smartor.common.MtSubmitSmUtil;
+import com.smartor.common.ScheduleSubtaskBuilder;
import com.smartor.config.PhoneUtils;
import com.smartor.domain.DTO.ServiceSubtaskDetailDTO;
import com.smartor.domain.*;
@@ -117,6 +119,12 @@
private IServiceSubtaskDetailTraceService traceService;
@Autowired
+ private IServiceTaskScheduleService serviceTaskScheduleService;
+
+ @Autowired
+ private ScheduleSubtaskBuilder scheduleSubtaskBuilder;
+
+ @Autowired
private FtpService ftpService;
@Autowired
@@ -177,6 +185,8 @@
@Autowired
private IPatMedOuthospService patMedOuthospService;
+ @Autowired
+ private SysDept2Mapper sysDept2Mapper;
@Value("${spring.profiles.active}")
private String active;
@@ -404,8 +414,8 @@
if (serviceSubtaskRes.getSendstate() == 6) serviceSubtaskRes.setSendstateView(2L);
if (serviceSubtaskRes.getSendstate() == 4) serviceSubtaskRes.setSendstateView(3L);
// 濉厖褰撳墠琛ュ伩
- if (StringUtils.isEmpty(serviceSubtask.getCurrentPreachform())){
- if(StringUtils.isNotEmpty(serviceSubtask.getPreachform())){
+ if (StringUtils.isEmpty(serviceSubtask.getCurrentPreachform())) {
+ if (StringUtils.isNotEmpty(serviceSubtask.getPreachform())) {
//榛樿鍙栫涓�涓�
serviceSubtaskRes.setCurrentPreachform(serviceSubtask.getPreachform().split(",")[0]);
}
@@ -685,7 +695,10 @@
serviceTask.setTemplatename(tempName);
}
serviceTask.setLeaveldeptcodes(serviceTaskVO.getLeaveldeptcodes());
- serviceTask.setLeavehospitaldistrictcode(serviceTask.getLeavehospitaldistrictcode());
+ if (StringUtils.isEmpty(serviceTask.getLeavehospitaldistrictname()) && StringUtils.isNotEmpty(serviceTask.getLeavehospitaldistrictcode())) {
+ SysDept sysDept = sysDept2Mapper.selectDeptByCode(serviceTask.getLeavehospitaldistrictcode(), null);
+ serviceTask.setLeavehospitaldistrictname(sysDept.getDeptName());
+ }
if (serviceTaskVO.getLongTask() == 1) serviceTask.setSendState(2L);
serviceTask.setCreateTime(new Date());
serviceTask.setUpdateTime(new Date());
@@ -711,8 +724,8 @@
//鍗楀崕闄勪竴鐨刬cd10code鏄湁閲嶅鐨勶紝鎵�浠ヤ笉鑳界敤鍗楀崕闄勪竴鐨刬cd10code鍘绘煡璇�
log.info("----serviceTaskdiag鐨勫�间负锛歿}", serviceTaskdiag);
if (!StringUtils.isEmpty(serviceTaskVO.getIcd10name())) {
- String[] Icd10Names = serviceTaskVO.getIcd10name().split("$");
- String[] Icd10codes = serviceTaskVO.getIcd10code().split("$");
+ String[] Icd10Names = serviceTaskVO.getIcd10name().split(",");
+ String[] Icd10codes = serviceTaskVO.getIcd10code().split(",");
for (int i = 0; i < Icd10Names.length; i++) {
serviceTaskdiag.setIcd10code(Icd10codes[i]);
serviceTaskdiag.setIcd10name(Icd10Names[i]);
@@ -745,6 +758,29 @@
serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
}
}
+
+ } else if (serviceTaskVO.getAppltype().equals("5")) {
+ // 浠诲姟缁勶細蹇呴』涓洪暱鏈熶换鍔★紙鍚﹀垯 findMatchingTaskIds 鎵笉鍒帮紝鏃犳硶鑷姩绾冲叆鏂板嚭闄㈡偅鑰咃級
+ if (serviceTaskVO.getLongTask() == null || serviceTaskVO.getLongTask() != 1) {
+ throw new BaseException("appltype=5 浠诲姟缁勫繀椤讳负闀挎湡浠诲姟锛坙ongTask=1锛�");
+ }
+ // 淇濆瓨璁″垝 + 鏄庣粏
+ ServiceTaskScheduleVO scheduleVO = serviceTaskVO.getServiceTaskScheduleVO();
+ if (scheduleVO == null) {
+ throw new BaseException("appltype=5 浠诲姟缁勶細serviceTaskScheduleVO 涓嶈兘涓虹┖");
+ }
+ scheduleVO.setTaskid(serviceTask.getTaskid());
+ scheduleVO.setOrgid(serviceTask.getOrgid());
+ scheduleVO.setCampusid(serviceTask.getCampusid());
+ scheduleVO.setCreateBy(serviceTask.getCreateBy());
+
+ scheduleVO.setDeptCodes(serviceTaskVO.getDeptcode());
+ scheduleVO.setWardCodes(serviceTaskVO.getLeavehospitaldistrictcode());
+ scheduleVO.setIcd10Codes(serviceTaskVO.getIcd10code());
+ scheduleVO.setOplevelCodes(serviceTaskVO.getOplevelcode());
+
+ log.info("----serviceTaskSchedule鐨勫�间负锛歿}", scheduleVO);
+ serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO);
} else {
ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
serviceTaskdept.setTaskId(serviceTask.getTaskid());
@@ -830,6 +866,20 @@
serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
serviceSubtask.setVisitTime(patTaskRelevance.getVisittime());
}
+
+ // ===== appltype=5 浠诲姟缁勶細鎸� schedule 鐨� detailList 娲剧敓澶氭潯 subtask =====
+ if ("5".equals(serviceTaskVO.getAppltype())) {
+ ServiceTaskSchedule schedule = serviceTaskScheduleService.selectByTaskid(serviceTask.getTaskid());
+ if (schedule == null) {
+ throw new BaseException("appltype=5 浠诲姟缁勶細鏈壘鍒� taskid=" + serviceTask.getTaskid() + " 鐨勮鍒�");
+ }
+ List<ServiceTaskScheduleDetail> detailList =
+ serviceTaskScheduleService.selectDetailByScheduleid(schedule.getId());
+ scheduleSubtaskBuilder.buildSubtasksForPatient(
+ serviceTask, serviceTaskVO.getPreachformList(), schedule, detailList, patTaskRelevance, serviceSubtask);
+ continue;
+ }
+
serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
serviceSubtask.getId().intValue();
@@ -1044,6 +1094,24 @@
}
}
}
+ } else if (serviceTaskVO.getAppltype().equals("5")) {
+ // 浠诲姟缁勪慨鏀癸細鍒犳棫 schedule + 鏄庣粏锛岄噸寤恒�俿ubtask 涓婇潰宸叉壒閲忔竻鐞嗐��
+ if (serviceTaskVO.getLongTask() == null || serviceTaskVO.getLongTask() != 1) {
+ throw new BaseException("appltype=5 浠诲姟缁勫繀椤讳负闀挎湡浠诲姟锛坙ongTask=1锛�");
+ }
+ ServiceTaskScheduleVO scheduleVO = serviceTaskVO.getServiceTaskScheduleVO();
+ if (scheduleVO == null) {
+ throw new BaseException("appltype=5 浠诲姟缁勶細serviceTaskScheduleVO 涓嶈兘涓虹┖");
+ }
+ scheduleVO.setTaskid(serviceTask.getTaskid());
+ scheduleVO.setOrgid(serviceTask.getOrgid());
+ scheduleVO.setCampusid(serviceTask.getCampusid());
+ scheduleVO.setDeptCodes(serviceTaskVO.getDeptcode());
+ scheduleVO.setWardCodes(serviceTaskVO.getLeavehospitaldistrictcode());
+ scheduleVO.setIcd10Codes(serviceTaskVO.getIcd10code());
+ scheduleVO.setOplevelCodes(serviceTaskVO.getOplevelcode());
+ scheduleVO.setCreateBy(serviceTask.getUpdateBy());
+ serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO);
}
}
if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {
@@ -1097,6 +1165,20 @@
serviceSubtask.setVisitTime(patTaskRelevance.getVisittime());
serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));
if (patTaskRelevance.getIsoperation() != null) {
+ // appltype=5 浠诲姟缁勶細杩藉姞鎮h�咃紙isoperation=1锛夎蛋璁″垝娲剧敓锛涗慨鏀癸紙2锛�/鍒犻櫎锛�3锛変粛璧板師閫昏緫
+ if ("5".equals(serviceTaskVO.getAppltype()) && patTaskRelevance.getIsoperation() == 1) {
+ ServiceTaskSchedule schedule = serviceTaskScheduleService.selectByTaskid(serviceTask.getTaskid());
+ if (schedule == null) {
+ throw new BaseException("appltype=5 浠诲姟缁勶細鏈壘鍒� taskid=" + serviceTask.getTaskid() + " 鐨勮鍒�");
+ }
+ List<ServiceTaskScheduleDetail> detailList =
+ serviceTaskScheduleService.selectDetailByScheduleid(schedule.getId());
+ serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
+ serviceSubtask.setCreateBy(serviceTask.getUpdateBy());
+ scheduleSubtaskBuilder.buildSubtasksForPatient(
+ serviceTask, serviceTaskVO.getPreachformList(), schedule, detailList, patTaskRelevance, serviceSubtask);
+ continue;
+ }
if (patTaskRelevance.getIsoperation() == 2) {
serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
@@ -1149,7 +1231,6 @@
map.put("taskId", serviceTask.getTaskid().intValue());
return map;
}
-
@Override
public void phoneCallBack(PhoneCallBackVO phoneCallBackVO) {
@@ -2360,7 +2441,6 @@
serviceSubtask.setRemark("鐢佃瘽鎺ラ�氭垚鍔燂紝鎮h�呮嫆缁濋殢璁�");
serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid()));
serviceSubtask.setSendstate(6L);
- serviceSubtask.setFinishtime(new Date());
serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
// int startIndex = phoneCallRecordVO.getRecord_path().indexOf("voice") + "voice".length() + 1; // 鍔�1鏄烦杩�/绗﹀彿
// int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf("/");
@@ -3699,7 +3779,7 @@
Map<String, String> map = new HashMap<>();
map.put("phone", serviceSubtask.getPhone());
map.put("content", sendMagParam.getContent());
- String result = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(map));
+ HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(map));
redisCache.setCacheObject(subTaskId + "recordAccept-hungup", "1", 10, TimeUnit.MINUTES);
if (StringUtils.isNotEmpty(serviceSubtask.getRemark()))
serviceSubtask.setRemark("鐢佃瘽鍙戦�佹嫆鎺�,鐭俊琛ュ伩鍙戦�佹垚鍔�");
@@ -4536,6 +4616,23 @@
@Override
public List<ServiceSubtask> gethelibraryCountHyperlink(HeLibraryCountVO heLibraryCountVO){
+ String hyperLinkInfoType = heLibraryCountVO.getHyperLinkInfoType();
+ if(StringUtils.isNotEmpty(hyperLinkInfoType)){
+ heLibraryCountVO.setSendstate(null);
+ heLibraryCountVO.setIsFinished(null);
+ switch (hyperLinkInfoType) {
+ case "totalCountInfo":
+ break;
+ case "sendSuccessCountInfo":
+ heLibraryCountVO.setSendstate(6L);
+ break;
+ case "readCountInfo":
+ heLibraryCountVO.setIsFinished("1");
+ break;
+ default:
+ break;
+ }
+ }
List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.gethelibraryCountHyperlink(heLibraryCountVO);
return serviceSubtasks;
}
@@ -4596,8 +4693,8 @@
}
@Override
- public List<ServiceSubtaskDetailRatioExport> statQuestionOption(List<Long> taskIds) {
- return serviceSubtaskMapper.statQuestionOption(taskIds);
+ public List<ServiceSubtaskDetailRatioExport> statQuestionOption(List<Long> taskIds, Date startOutHospTime, Date endOutHospTime) {
+ return serviceSubtaskMapper.statQuestionOption(taskIds, startOutHospTime, endOutHospTime);
}
private Boolean saveServiceSubtaskDetail(ServiceSubtask serviceSubtask) {
--
Gitblit v1.9.3