From af3ec57db40f80fba5903aaedae5e66bf46a7ed9 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 01 七月 2026 10:57:18 +0800
Subject: [PATCH] 【景宁】任务组开发
---
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 148 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 148 insertions(+), 0 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 9c5449b..14acb1a 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -116,6 +116,12 @@
private IServiceSubtaskDetailTraceService traceService;
@Autowired
+ private IServiceTaskScheduleService serviceTaskScheduleService;
+
+ @Autowired
+ private com.smartor.common.ScheduleSubtaskBuilder scheduleSubtaskBuilder;
+
+ @Autowired
private FtpService ftpService;
@Autowired
@@ -727,6 +733,24 @@
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());
+ log.info("----serviceTaskSchedule鐨勫�间负锛歿}", scheduleVO);
+ serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO);
+ // 缁戝畾缁村害鍐欐潯浠惰〃锛堜緵 HIS 鑷姩绾冲叆鍖归厤锛宭ongtask 鎭�=1锛�
+ bindDimensionCondition(serviceTask, serviceTaskVO);
} else {
ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
serviceTaskdept.setTaskId(serviceTask.getTaskid());
@@ -812,6 +836,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, schedule, detailList, patTaskRelevance, serviceSubtask);
+ continue;
+ }
+
serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
serviceSubtask.getId().intValue();
@@ -1026,6 +1064,23 @@
}
}
}
+ } 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.setCreateBy(serviceTask.getUpdateBy());
+ serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO);
+ // 鍏堟竻鏃х淮搴︽潯浠惰〃锛屽啀鎸夋渶鏂板叆鍙傞噸鍐欙紙闃茶繃鏈熺淮搴︽畫鐣欏鑷磋绾冲叆锛�
+ clearDimensionCondition(serviceTask.getTaskid());
+ bindDimensionCondition(serviceTask, serviceTaskVO);
}
}
if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {
@@ -1079,6 +1134,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, schedule, detailList, patTaskRelevance, serviceSubtask);
+ continue;
+ }
if (patTaskRelevance.getIsoperation() == 2) {
serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
@@ -1132,6 +1201,85 @@
return map;
}
+ /**
+ * 浠诲姟缁勶紙appltype=5锛夌粦瀹氱淮搴﹀啓鏉′欢琛紝渚� HIS 鑷姩绾冲叆鍖归厤銆�
+ * longtask 鎭�=1锛堝惁鍒欑嫭绔嬫壂鎻�/涓绘壂鎻忔寜 longtask=1 鏌ヤ笉鍒帮級銆�
+ * 澶嶇敤鐜版湁 service_taskdept锛堢瀹eptType=1/鐥呭尯deptType=2锛夈�乻ervice_taskdiag锛堢柧鐥咃級銆�
+ * 鎵嬫湳缁村害鏈湡涓嶅啓锛堟殏涓嶆敮鎸佽嚜鍔ㄧ撼鍏ワ級銆�
+ */
+ private void bindDimensionCondition(ServiceTask serviceTask, ServiceTaskVO vo) {
+ // 绉戝
+ if (StringUtils.isNotEmpty(vo.getDeptcode())) {
+ for (String deptCode : vo.getDeptcode().split(",")) {
+ if (StringUtils.isEmpty(deptCode)) continue;
+ ServiceTaskdept d = new ServiceTaskdept();
+ d.setTaskId(serviceTask.getTaskid());
+ d.setTaskName(serviceTask.getTaskName());
+ d.setOrgid(serviceTask.getOrgid());
+ d.setLongtask(1L);
+ d.setDeptCode(deptCode);
+ d.setDeptType("1");
+ d.setServiceType(vo.getServiceType());
+ serviceTaskdeptService.insertServiceTaskdept(d);
+ }
+ }
+ // 鐥呭尯
+ if (StringUtils.isNotEmpty(vo.getLeavehospitaldistrictcode())) {
+ for (String wardCode : vo.getLeavehospitaldistrictcode().split(",")) {
+ if (StringUtils.isEmpty(wardCode)) continue;
+ ServiceTaskdept d = new ServiceTaskdept();
+ d.setTaskId(serviceTask.getTaskid());
+ d.setTaskName(serviceTask.getTaskName());
+ d.setOrgid(serviceTask.getOrgid());
+ d.setLongtask(1L);
+ d.setDeptCode(wardCode);
+ d.setDeptType("2");
+ d.setServiceType(vo.getServiceType());
+ serviceTaskdeptService.insertServiceTaskdept(d);
+ }
+ }
+ // 鐤剧梾锛堢敤 split(",")锛屽嬁鐓ф妱 appltype=3 鐜扮綉鐨� split("$") bug锛�
+ if (StringUtils.isNotEmpty(vo.getIcd10code())) {
+ String[] codes = vo.getIcd10code().split(",");
+ String[] names = StringUtils.isNotEmpty(vo.getIcd10name()) ? vo.getIcd10name().split(",") : new String[0];
+ for (int i = 0; i < codes.length; i++) {
+ if (StringUtils.isEmpty(codes[i])) continue;
+ ServiceTaskdiag dg = new ServiceTaskdiag();
+ dg.setTaskId(serviceTask.getTaskid());
+ dg.setTaskName(serviceTask.getTaskName());
+ dg.setOrgid(serviceTask.getOrgid());
+ dg.setLongtask(1L);
+ dg.setServiceType(vo.getServiceType());
+ dg.setIcd10code(codes[i]);
+ dg.setIcd10name(i < names.length ? names[i] : null);
+ dg.setGuid(serviceTask.getGuid());
+ dg.setCreateTime(new Date());
+ serviceTaskdiagService.insertServiceTaskdiag(dg);
+ }
+ }
+ }
+
+ /**
+ * 浠诲姟缁勪慨鏀规椂锛屽厛杞垹璇� task 鏃х殑缁村害鏉′欢琛ㄨ褰曪紙闃茶繃鏈熺淮搴︽畫鐣欏鑷磋绾冲叆锛夈��
+ */
+ private void clearDimensionCondition(Long taskId) {
+ ServiceTaskdept dq = new ServiceTaskdept();
+ dq.setTaskId(taskId);
+ List<ServiceTaskdept> depts = serviceTaskdeptService.selectServiceTaskdeptList(dq);
+ if (CollectionUtils.isNotEmpty(depts)) {
+ for (ServiceTaskdept d : depts) {
+ serviceTaskdeptService.deleteServiceTaskdeptById(d.getId());
+ }
+ }
+ ServiceTaskdiag gq = new ServiceTaskdiag();
+ gq.setTaskId(taskId);
+ List<ServiceTaskdiag> diags = serviceTaskdiagService.selectServiceTaskdiagList(gq);
+ if (CollectionUtils.isNotEmpty(diags)) {
+ for (ServiceTaskdiag g : diags) {
+ serviceTaskdiagService.deleteServiceTaskdiagById(g.getId());
+ }
+ }
+ }
@Override
public void phoneCallBack(PhoneCallBackVO phoneCallBackVO) {
--
Gitblit v1.9.3