From 2013ea208bc8fa12fb6f8d22497f2a8b5f69855f Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 11 九月 2026 11:18:30 +0800
Subject: [PATCH] 1.省立同德的满意度功能处理 2.省立同德、南华采集时间缩短 3.给保存问卷接口,加一下防止重复提前的注解@RepeatSubmit 4.省立同德新增“报备科室责任人”字段 5.登陆接口加“用户类型”字段,不影响当前登陆逻辑
---
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 200 ++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 169 insertions(+), 31 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 06ffc4c..ad85650 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -22,9 +22,11 @@
import com.smartor.common.MtSubmitSmUtil;
import com.smartor.common.ScheduleSubtaskBuilder;
import com.smartor.config.PhoneUtils;
+import com.smartor.domain.DTO.QuestionResultDTO;
import com.smartor.domain.DTO.ServiceSubtaskDetailDTO;
import com.smartor.domain.*;
import com.smartor.domain.VO.HeLibraryCountVO;
+import com.smartor.domain.VO.QuestionResultVO;
import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
import com.smartor.domain.VO.TransferDeptVO;
import com.smartor.domain.entity.ServiceSubtaskEntity;
@@ -36,6 +38,7 @@
import org.apache.commons.lang3.ObjectUtils;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.junit.Test;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.Cacheable;
@@ -414,26 +417,7 @@
@Override
public List<ServiceSubtaskRes> patItem(ServiceSubtaskEntity serviceSubtaskEntity) {
- if (serviceSubtaskEntity.getSendstateView() != null) {
- // 1锛氬緟闅忚锛�1 琚鍙栥��2 寰呭彂閫併��3 宸插彂閫併��5 鍙戦�佸け璐ャ��7銆佽秴鏃讹級锛�2锛氬凡瀹屾垚锛� 6 宸插畬鎴愶級銆�3锛氭棤闇�闅忚锛�4 涓嶆墽琛岋級
- if (serviceSubtaskEntity.getSendstateView() == 1)
- serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 5L, 7L)));
- if (serviceSubtaskEntity.getSendstateView() == 2)
- serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(6L)));
- if (serviceSubtaskEntity.getSendstateView() == 3)
- serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(4L)));
- }
- //鎮h�呰幏鍙栭殢璁夸换鍔�-闇�瑕佹煡璇㈠悓涓偅鑰咃紙韬唤璇侊級鎵�鏈夌殑浠诲姟 鏅畞
- if (StringUtils.isNotEmpty(serviceSubtaskEntity.getOrgid()) && serviceSubtaskEntity.getOrgid().equals("47255004333112711A1001")) {
- if (ObjectUtils.isNotEmpty(serviceSubtaskEntity.getPatid())) {
- PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtaskEntity.getPatid());
- if (ObjectUtils.isNotEmpty(patArchive) && StringUtils.isNotEmpty(patArchive.getIdcardno())) {
- serviceSubtaskEntity.setPatid(null);
- serviceSubtaskEntity.setSfzh(patArchive.getIdcardno());
- }
- }
- }
- List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskEntity);
+ List<ServiceSubtask> selectServiceSubtaskList = getServiceSubtasks(serviceSubtaskEntity);
List<ServiceSubtaskRes> serviceSubtaskResList = new ArrayList<>();
for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
@@ -469,6 +453,30 @@
serviceSubtaskResList.add(serviceSubtaskRes);
}
return serviceSubtaskResList;
+ }
+
+ public List<ServiceSubtask> getServiceSubtasks(ServiceSubtaskEntity serviceSubtaskEntity) {
+ if (serviceSubtaskEntity.getSendstateView() != null) {
+ // 1锛氬緟闅忚锛�1 琚鍙栥��2 寰呭彂閫併��3 宸插彂閫併��5 鍙戦�佸け璐ャ��7銆佽秴鏃讹級锛�2锛氬凡瀹屾垚锛� 6 宸插畬鎴愶級銆�3锛氭棤闇�闅忚锛�4 涓嶆墽琛岋級
+ if (serviceSubtaskEntity.getSendstateView() == 1)
+ serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 5L, 7L)));
+ if (serviceSubtaskEntity.getSendstateView() == 2)
+ serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(6L)));
+ if (serviceSubtaskEntity.getSendstateView() == 3)
+ serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(4L)));
+ }
+ //鎮h�呰幏鍙栭殢璁夸换鍔�-闇�瑕佹煡璇㈠悓涓偅鑰咃紙韬唤璇侊級鎵�鏈夌殑浠诲姟 鏅畞
+ if (StringUtils.isNotEmpty(serviceSubtaskEntity.getOrgid()) && serviceSubtaskEntity.getOrgid().equals("47255004333112711A1001")) {
+ if (ObjectUtils.isNotEmpty(serviceSubtaskEntity.getPatid())) {
+ PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtaskEntity.getPatid());
+ if (ObjectUtils.isNotEmpty(patArchive) && StringUtils.isNotEmpty(patArchive.getIdcardno())) {
+ serviceSubtaskEntity.setPatid(null);
+ serviceSubtaskEntity.setSfzh(patArchive.getIdcardno());
+ }
+ }
+ }
+ List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskEntity);
+ return selectServiceSubtaskList;
}
@Override
@@ -636,14 +644,19 @@
*/
@Override
public Map<String, Object> insertServiceSubtask(ServiceSubtask serviceSubtask) {
+ List<ServiceSubtask> serviceSubtasks = null;
//鍏堟煡璇竴涓嬭鎮h�呮槸鍚﹀凡缁忓垱寤烘牴鎹畇erviceType,sendstate,inhospid,patid,orgid
- ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
- serviceSubtaskVO.setServiceType(serviceSubtask.getServiceType());
- serviceSubtaskVO.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 5L, 7L)));
- serviceSubtaskVO.setPatid(serviceSubtask.getPatid());
- serviceSubtaskVO.setOrgid(serviceSubtask.getOrgid());
- serviceSubtaskVO.setCampusid(serviceSubtask.getCampusid());
- List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+ //杩欐牱鍒ゆ柇涓昏鏄负浜嗘兂璁╂柊鍗庡尰闄㈢殑澶栭儴瀵煎叆鎮h�呭垱寤轰换鍔★紝涔熻兘鐢ㄨ繖涓帴鍙�
+ if (StringUtils.isEmpty(serviceSubtask.getPatfrom()) || !serviceSubtask.getPatfrom().equals("2")) {
+ ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
+ serviceSubtaskVO.setServiceType(serviceSubtask.getServiceType());
+ serviceSubtaskVO.setInhospid(serviceSubtask.getInhospid());
+ serviceSubtaskVO.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 5L, 7L)));
+ serviceSubtaskVO.setPatid(serviceSubtask.getPatid());
+ serviceSubtaskVO.setOrgid(serviceSubtask.getOrgid());
+ serviceSubtaskVO.setCampusid(serviceSubtask.getCampusid());
+ serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+ }
RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
String format = null;
if (CollectionUtils.isNotEmpty(serviceSubtasks)) {
@@ -657,8 +670,27 @@
serviceSubtask = serviceSubtask1;
} else {
//濡傛灉涓嶅瓨鍦紝鍒欐柊澧�
+ ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+ if (ObjectUtils.isNotEmpty(serviceTask)) {
+ serviceSubtask.setDeptcode(serviceTask.getDeptcode());
+ serviceSubtask.setTaskDesc(serviceTask.getTaskDesc());
+ serviceSubtask.setTaskName(serviceTask.getTaskName());
+ serviceSubtask.setDeptname(serviceTask.getDeptname());
+ serviceSubtask.setTemplatename(serviceTask.getTemplatename());
+ }
+
serviceSubtask.setCreateTime(DateUtils.getNowDate());
serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+ //淇敼浣忛櫌婊℃剰搴︾姸鎬侊紙閬垮厤閲嶅鏌ヨ锛�
+ if (serviceSubtask.getServiceType() != null && "6".equals(serviceSubtask.getServiceType())) {
+ Long inhospid = serviceSubtask.getInhospid();
+ if (inhospid != null) {
+ PatMedInhosp patMedInhosp = new PatMedInhosp();
+ patMedInhosp.setInhospMydFlag("1");
+ patMedInhosp.setInhospid(inhospid);
+ patMedInhospMapper.updatePatMedInhosp(patMedInhosp);
+ }
+ }
format = getOutPath(serviceSubtask, rsaPublicKeyExample);
}
@@ -4980,23 +5012,107 @@
}
@Override
- public List<ServiceSubtaskDetailRatioExport> statQuestionOption(List<Long> taskIds, Date startOutHospTime, Date endOutHospTime) {
+ public List<ServiceSubtaskDetailRatioExport> statQuestionOption(List<Long> taskIds, Date startOutHospTime, Date endOutHospTime, String scriptContent, Double scoreStart, Double scoreEnd,String valueType) {
//鍏堟竻鐞嗕竴涓嬮噸澶嶆暟鎹�
List<Long> repeatIds = serviceSubtaskDetailMapper.selectRepeatDetailIds();
if (!CollectionUtils.isEmpty(repeatIds)) {
serviceSubtaskDetailMapper.deleteRepeatDetailByIds(repeatIds);
}
- return serviceSubtaskMapper.statQuestionOption(taskIds, startOutHospTime, endOutHospTime);
+ List<ServiceSubtaskDetailRatioExport> serviceSubtaskDetailRatioExports = serviceSubtaskMapper.statQuestionOption(taskIds, startOutHospTime, endOutHospTime, scoreStart, scoreEnd, scriptContent, valueType);
+
+ // 澶勭悊 targetvalue锛氭寜 & 鍒嗗壊鎴愬鏉¤褰�
+ List<ServiceSubtaskDetailRatioExport> result = new ArrayList<>();
+ for (ServiceSubtaskDetailRatioExport export : serviceSubtaskDetailRatioExports) {
+ if (StringUtils.isNotEmpty(export.getTargetvalue()) && export.getTargetvalue().contains("&")) {
+ String[] values = export.getTargetvalue().split("&");
+ // 濡傛灉鏈夊鏉$洰鏍囧�硷紝鎷嗗垎鎴愬琛�
+ for (String value : values) {
+ //鍏堝幓 result 涓煡涓�涓嬶紝鏈夋病鏈夎繖涓� questiontext 鍜屽搴旂殑 targetvalue
+ ServiceSubtaskDetailRatioExport existingExport = result.stream()
+ .filter(e -> e.getQuestiontext().equals(export.getQuestiontext())
+ && value.trim().equals(e.getTargetvalue()))
+ .findFirst()
+ .orElse(null);
+ if (existingExport != null && existingExport.getRatio().equals("0") && existingExport.getCount().equals("0")) {
+ //濡傛灉瀛樺湪锛屽垯灏� result 閲岀殑杩欎釜闂鎵�瀵瑰簲鐨� Targetvalue=value 杩欐潯鏁版嵁鏇存柊鎴愬綋鍓嶈繖鏉℃暟鎹�
+ if(value.equals(export.getOptionresult())) {
+ existingExport.setRatio(export.getRatio());
+ existingExport.setScore(export.getScore());
+ existingExport.setCount(export.getCount());
+ existingExport.setOptionresult(export.getOptionresult());
+ }
+ } else if (existingExport != null && !existingExport.getRatio().equals("0")) {
+ continue;
+ } else {
+ ServiceSubtaskDetailRatioExport newExport = DtoConversionUtils.sourceToTarget(export, ServiceSubtaskDetailRatioExport.class);
+ newExport.setTargetvalue(value.trim()); // targetvalue 鏄剧ず鍗曚釜閫夐」
+ if (!value.equals(export.getOptionresult())) {
+ newExport.setOptionresult(null);
+ newExport.setCount("0");
+ newExport.setRatio("0");
+ }
+ result.add(newExport);
+ }
+ }
+ } else {
+ // targetvalue 涓嶅寘鍚� &锛岀洿鎺ユ坊鍔犲埌缁撴灉
+ result.add(export);
+ }
+ }
+
+ return result;
}
@Override
- public List<ServiceSubtaskDetailRatioExport> statQuestionOptionBySubtaskIds(List<Long> subtaskIds, Date startOutHospTime, Date endOutHospTime) {
+ public List<ServiceSubtaskDetailRatioExport> statQuestionOptionBySubtaskIds(List<Long> subtaskIds, Date startOutHospTime, Date endOutHospTime, String scriptContent, Double scoreStart, Double scoreEnd,String valueType) {
//鍏堟竻鐞嗕竴涓嬮噸澶嶆暟鎹�
List<Long> repeatIds = serviceSubtaskDetailMapper.selectRepeatDetailIds();
if (!CollectionUtils.isEmpty(repeatIds)) {
serviceSubtaskDetailMapper.deleteRepeatDetailByIds(repeatIds);
}
- return serviceSubtaskMapper.statQuestionOptionBySubtaskIds(subtaskIds, startOutHospTime, endOutHospTime);
+
+ List<ServiceSubtaskDetailRatioExport> serviceSubtaskDetailRatioExports = serviceSubtaskMapper.statQuestionOptionBySubtaskIds(subtaskIds, startOutHospTime, endOutHospTime, scoreStart, scoreEnd, scriptContent,valueType);
+ // 澶勭悊 targetvalue锛氭寜 & 鍒嗗壊鎴愬鏉¤褰�
+ List<ServiceSubtaskDetailRatioExport> result = new ArrayList<>();
+ for (ServiceSubtaskDetailRatioExport export : serviceSubtaskDetailRatioExports) {
+ if (StringUtils.isNotEmpty(export.getTargetvalue()) && export.getTargetvalue().contains("&")) {
+ String[] values = export.getTargetvalue().split("&");
+ // 濡傛灉鏈夊鏉$洰鏍囧�硷紝鎷嗗垎鎴愬琛�
+ for (String value : values) {
+ //鍏堝幓 result 涓煡涓�涓嬶紝鏈夋病鏈夎繖涓� questiontext 鍜屽搴旂殑 targetvalue
+ ServiceSubtaskDetailRatioExport existingExport = result.stream()
+ .filter(e -> e.getQuestiontext().equals(export.getQuestiontext())
+ && value.trim().equals(e.getTargetvalue()))
+ .findFirst()
+ .orElse(null);
+ if (existingExport != null && existingExport.getRatio().equals("0") && existingExport.getCount().equals("0")) {
+ //濡傛灉瀛樺湪锛屽垯灏� result 閲岀殑杩欎釜闂鎵�瀵瑰簲鐨� Targetvalue=value 杩欐潯鏁版嵁鏇存柊鎴愬綋鍓嶈繖鏉℃暟鎹�
+ if(value.equals(export.getOptionresult())) {
+ existingExport.setRatio(export.getRatio());
+ existingExport.setScore(export.getScore());
+ existingExport.setCount(export.getCount());
+ existingExport.setOptionresult(export.getOptionresult());
+ }
+ } else if (existingExport != null && !existingExport.getRatio().equals("0")) {
+ continue;
+ } else {
+ ServiceSubtaskDetailRatioExport newExport = DtoConversionUtils.sourceToTarget(export, ServiceSubtaskDetailRatioExport.class);
+ newExport.setTargetvalue(value.trim()); // targetvalue 鏄剧ず鍗曚釜閫夐」
+ if (!value.equals(export.getOptionresult())) {
+ newExport.setOptionresult(null);
+ newExport.setCount("0");
+ newExport.setRatio("0");
+ }
+ result.add(newExport);
+ }
+ }
+ } else {
+ // targetvalue 涓嶅寘鍚� &锛岀洿鎺ユ坊鍔犲埌缁撴灉
+ result.add(export);
+ }
+ }
+
+ return result;
}
/**
@@ -5684,6 +5800,28 @@
return back;
}
+
+ /**
+ * 闂缁撴灉鍗犳瘮
+ *
+ * @param serviceSubtaskEntity
+ * @param serviceSubtaskRes
+ * @return
+ */
+ public List<ServiceSubtaskDetailRatioExport> getDetailRatio(QuestionResultVO questionResultVO, List<ServiceSubtaskRes> serviceSubtaskRes) {
+ List<ServiceSubtaskDetailRatioExport> serviceSubtaskDetailRatioExports = null;
+ if (StringUtils.isNotEmpty(questionResultVO.getServiceType()) && questionResultVO.getServiceType().equals("2")) {
+ //鑾峰彇serviceSubtaskList涓殑鎵�鏈塼askid
+ List<Long> taskIds = serviceSubtaskRes.stream().map(ServiceSubtaskRes::getTaskid).filter(ObjectUtils::isNotEmpty).distinct().collect(Collectors.toList());
+ serviceSubtaskDetailRatioExports = statQuestionOption(taskIds, questionResultVO.getStartOutHospTime(), questionResultVO.getEndOutHospTime(), questionResultVO.getQuestionContent(), questionResultVO.getStartScore(), questionResultVO.getEndScore(),questionResultVO.getValueType());
+ } else if (StringUtils.isNotEmpty(questionResultVO.getServiceType()) && questionResultVO.getServiceType().equals("6")) {
+ //婊℃剰搴︾粺璁� 锛堥�氳繃 subtask 鐨� id 鍘荤粺璁★級
+ List<Long> subtaskIds = serviceSubtaskRes.stream().map(ServiceSubtaskRes::getId).collect(Collectors.toList());
+ serviceSubtaskDetailRatioExports = statQuestionOptionBySubtaskIds(subtaskIds, questionResultVO.getStartOutHospTime(), questionResultVO.getEndOutHospTime(), questionResultVO.getQuestionContent(), questionResultVO.getStartScore(), questionResultVO.getEndScore(),questionResultVO.getValueType());
+ }
+ return serviceSubtaskDetailRatioExports;
+ }
+
//鑾峰彇浠诲姟缁勪俊鎭�
private void findServiceTaskScheduleVO(ServiceTaskVO serviceTaskVO) {
if (StringUtils.isNotEmpty(serviceTaskVO.getAppltype()) && serviceTaskVO.getAppltype().equals("5")) {
--
Gitblit v1.9.3