From 05f8fb61b57f601b39a89284a9a1af737e3c9c1d Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 21 九月 2026 15:10:39 +0800
Subject: [PATCH] 1.省立同德满意度统计接口提交
---
smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java | 22
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java | 83 ++
smartor/src/main/java/com/smartor/domain/DTO/MydTrendReqDTO.java | 41 +
smartor/src/main/java/com/smartor/domain/VO/QuestionCountKsOrBqVO.java | 4
ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java | 112 +--
smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java | 18
smartor/src/main/java/com/smartor/domain/DTO/QuestionResultDTO.java | 6
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml | 226 +++++++-
smartor/src/main/java/com/smartor/domain/VO/ServiceSubtaskVO.java | 3
smartor/src/main/java/com/smartor/domain/DTO/QuestionCountKsOrBqDTO.java | 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java | 15
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java | 15
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 390 ++++++++++++++-
smartor/src/main/java/com/smartor/domain/VO/SltdMydTotalVO.java | 106 ++++
smartor/src/main/java/com/smartor/domain/VO/MydTrendReqVO.java | 49 +
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java | 11
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java | 397 +++++++-------
17 files changed, 1,118 insertions(+), 382 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
index c826b55..f39e3a1 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -194,13 +194,14 @@
//@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
@Log(title = "鍗曚竴浠诲姟", businessType = BusinessType.EXPORT)
@PostMapping("/patItemExport")
- public void patItemExport(HttpServletResponse response, ServiceSubtaskEntity serviceSubtaskVO) {
+ public void patItemExport(HttpServletResponse response, ServiceSubtaskVO serviceSubtaskVO) {
LoginUser loginUser = getLoginUser();
SysUser user = loginUser.getUser();
serviceSubtaskVO.setOrgid(user.getOrgid());
List<ServiceSubtaskRes> serviceSubtaskList = null;
if (serviceSubtaskVO != null) {
- serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskVO);
+ ServiceSubtaskEntity serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
+ serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskEntity);
}
List<ServiceSubtaskExport> serviceSubtaskExports = null;
List<ServiceSubtaskDetailRatioExport> serviceSubtaskDetailRatioExports = null;
@@ -220,11 +221,11 @@
serviceSubtaskExport.setEndDay(endDay);
}
}
- QuestionResultVO questionResultVO = new QuestionResultVO();
- questionResultVO.setServiceType(serviceSubtaskVO.getServiceType());
- questionResultVO.setEndOutHospTime(serviceSubtaskVO.getEndOutHospTime());
- questionResultVO.setStartOutHospTime(serviceSubtaskVO.getStartOutHospTime());
- serviceSubtaskDetailRatioExports = serviceSubtaskService.getDetailRatio(questionResultVO, serviceSubtaskList);
+ SltdMydTotalVO sltdMydTotalVO = new SltdMydTotalVO();
+ sltdMydTotalVO.setServiceTypeList(Arrays.asList(serviceSubtaskVO.getServiceType()));
+ sltdMydTotalVO.setEndOutHospTime(serviceSubtaskVO.getEndOutHospTime());
+ sltdMydTotalVO.setStartOutHospTime(serviceSubtaskVO.getStartOutHospTime());
+ serviceSubtaskDetailRatioExports = serviceSubtaskService.getDetailRatio(sltdMydTotalVO, serviceSubtaskList);
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java
index 6204bdb..77e9b08 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java
@@ -12,17 +12,21 @@
import com.smartor.domain.*;
import com.smartor.domain.DTO.QuestionResultDTO;
import com.smartor.domain.DTO.ServiceSubtaskDetailDTO;
+import com.smartor.domain.VO.MydTrendReqVO;
import com.smartor.domain.VO.QuestionCountKsOrBqVO;
import com.smartor.domain.VO.QuestionResultVO;
+import com.smartor.domain.VO.SltdMydTotalVO;
import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.service.IServiceSubtaskDetailService;
import com.smartor.service.IServiceSubtaskService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections4.CollectionUtils;
+import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -204,32 +208,56 @@
* 鏌ヨ鎮h�呴殢璁夸俊鎭�
*/
@ApiOperation("鐪佺珛鍚屽痉婊℃剰搴︽暟鎹粺璁�")
- @PostMapping("/sltaMydTotalByScore")
- public Map<String, Object> sltaMydTotal(@RequestBody QuestionResultVO questionResultVO) {
+ @PostMapping("/sltdMydTotalByScore")
+ public Map<String, Object> sltdMydTotalByScore(@RequestBody SltdMydTotalVO sltdMydTotalVO) {
List<ServiceSubtaskRes> serviceSubtaskResList = null;
- ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity();
- serviceSubtaskEntity.setServiceType(questionResultVO.getServiceType());
- serviceSubtaskEntity.setEndOutHospTime(questionResultVO.getEndOutHospTime());
- serviceSubtaskEntity.setStartOutHospTime(questionResultVO.getStartOutHospTime());
- serviceSubtaskEntity.setDeptOrDistrict(questionResultVO.getDeptOrDistrict());
- serviceSubtaskEntity.setLeavehospitaldistrictcodes(questionResultVO.getLeavehospitaldistrictcodes());
- if (serviceSubtaskEntity != null) {
- List<ServiceSubtask> serviceSubtasks = serviceSubtaskService.getServiceSubtasks(serviceSubtaskEntity);
- serviceSubtaskResList = DtoConversionUtils.sourceToTarget(serviceSubtasks, ServiceSubtaskRes.class);
+ if (CollectionUtils.isNotEmpty(sltdMydTotalVO.getServiceTypeList())) {
+ //serviceType鍙兘浼氬嚭鐜板涓紝涓嶆兂澶氬啓鏂规硶浜嗭紝涓�涓竴涓煡璇㈠惂
+ for (String st : sltdMydTotalVO.getServiceTypeList()) {
+ ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity();
+ serviceSubtaskEntity.setServiceType(st);
+ serviceSubtaskEntity.setEndOutHospTime(sltdMydTotalVO.getEndOutHospTime());
+ serviceSubtaskEntity.setStartOutHospTime(sltdMydTotalVO.getStartOutHospTime());
+ serviceSubtaskEntity.setDeptOrDistrict(sltdMydTotalVO.getDeptOrDistrict());
+ serviceSubtaskEntity.setLeavehospitaldistrictcodes(sltdMydTotalVO.getLeavehospitaldistrictcodes());
+ serviceSubtaskEntity.setLeaveldeptcodes(sltdMydTotalVO.getLeaveldeptcodes());
+ if (serviceSubtaskEntity != null) {
+ List<ServiceSubtask> serviceSubtasks = serviceSubtaskService.getServiceSubtasks(serviceSubtaskEntity);
+ List<ServiceSubtaskRes> serviceSubtaskRes = DtoConversionUtils.sourceToTarget(serviceSubtasks, ServiceSubtaskRes.class);
+ if (CollectionUtils.isNotEmpty(serviceSubtaskResList)) {
+ serviceSubtaskResList.addAll(serviceSubtaskRes);
+ } else {
+ if (CollectionUtils.isEmpty(serviceSubtaskResList)) serviceSubtaskResList = serviceSubtaskRes;
+ }
+ }
+ }
}
- List<ServiceSubtaskDetailRatioExport> detailList = serviceSubtaskService.getDetailRatio(questionResultVO, serviceSubtaskResList);
-
// 鎸� questiontext 鍒嗙粍鍚庤浆鎹负 QuestionResultVO
List<QuestionResultDTO> result = new ArrayList<>();
- if (!detailList.isEmpty()) {
- Map<String, List<ServiceSubtaskDetailRatioExport>> groupedMap = detailList.stream().collect(Collectors.groupingBy(ServiceSubtaskDetailRatioExport::getQuestiontext));
+ if (CollectionUtils.isNotEmpty(serviceSubtaskResList)) {
+ List<ServiceSubtaskDetailRatioExport> detailList = serviceSubtaskService.getDetailRatio(sltdMydTotalVO, serviceSubtaskResList);
- groupedMap.forEach((questionText, exportList) -> {
- QuestionResultDTO questionResultDTO = new QuestionResultDTO();
- questionResultDTO.setQeustionText(questionText);
- questionResultDTO.setSubtaskDetailRatioExportList(exportList);
- result.add(questionResultDTO);
- });
+ if (CollectionUtils.isNotEmpty(detailList)) {
+ Map<String, List<ServiceSubtaskDetailRatioExport>> groupedMap = detailList.stream().collect(Collectors.groupingBy(ServiceSubtaskDetailRatioExport::getQuestiontext));
+
+ groupedMap.forEach((questionText, exportList) -> {
+ QuestionResultDTO questionResultDTO = new QuestionResultDTO();
+ questionResultDTO.setQeustionText(questionText);
+ questionResultDTO.setSubtaskDetailRatioExportList(exportList);
+ BigDecimal allCount = new BigDecimal("0");
+ BigDecimal allScore = new BigDecimal("0.00");
+
+ for (ServiceSubtaskDetailRatioExport ssdre : exportList) {
+ if (StringUtils.isNotEmpty(ssdre.getCount()))
+ allCount.add(BigDecimal.valueOf(Long.valueOf(ssdre.getCount())));
+ allScore.add(BigDecimal.valueOf(Double.valueOf(ssdre.getScore())));
+ }
+
+ if (allCount.compareTo(BigDecimal.ZERO) > 0)
+ questionResultDTO.setAvgScore(allScore.divide(allCount, 2).toString());
+ result.add(questionResultDTO);
+ });
+ }
}
return success(result);
@@ -240,4 +268,17 @@
public Map<String, Object> statQuestionOptionByKsOrBq(@RequestBody QuestionCountKsOrBqVO questionResultVO) {
return success(serviceSubtaskService.statQuestionOptionByKsOrBq(questionResultVO));
}
+
+ @ApiOperation("鐪佺珛鍚屽痉鎮h�呮弧鎰忓害瓒嬪娍")
+ @PostMapping("/mydTrend")
+ public Map<String, Object> mydTrend(@RequestBody MydTrendReqVO mydTrendReqVO) {
+ return success(serviceSubtaskService.mydTrend(mydTrendReqVO));
+ }
+
+ @ApiOperation("鐪佺珛鍚屽痉鎮h�呮弧鎰忓害缁存姢")
+ @PostMapping("/sltdMydTotalByDimension")
+ public Map<String, Object> sltdMydTotalByDimension(@RequestBody MydTrendReqVO mydTrendReqVO) {
+ return success(serviceSubtaskService.sltdMydTotalByDimension(mydTrendReqVO));
+ }
+
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index 56e2f35..d47e10f 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -20,6 +20,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.view.RedirectView;
@@ -58,6 +59,9 @@
@Autowired
@Qualifier("sysUserDeptSystemMapper")
private SysUserDeptMapper sysUserDeptMapper;
+
+ @Value("${spring.profiles.active}")
+ private String active;
// @Value("${wx_appid}")
// private String wxAppid;
@@ -125,14 +129,21 @@
// @IpWhitelist
@GetMapping("/SSOLogin")
public RedirectView SSOLogin(@RequestParam(required = false) String campusid, @RequestParam(required = false) String deptId, @RequestParam(required = false) String systype, String orgid, String userName, String token) {
- log.info("SSOLogin鐨勫叆鍙傦紝campusid锛歿}, deptId:{}, systype:{}, orgid:{}, userName:{}, token:{}",campusid,deptId,systype,orgid,userName,token);
+ log.info("SSOLogin鐨勫叆鍙傦紝campusid锛歿}, deptId:{}, systype:{}, orgid:{}, userName:{}, token:{}", campusid, deptId, systype, orgid, userName, token);
if (StringUtils.isEmpty(userName) && StringUtils.isEmpty(token) && StringUtils.isEmpty(orgid)) {
throw new BaseException("鍙傛暟涓嶈兘涓虹┖");
}
String path = null;
if (StringUtils.isEmpty(systype)) path = sysConfigService.selectConfigByKey("sys.qddz");
else path = sysConfigService.selectConfigByKey("sys.qddz.yd");
- log.info("qddz鐨勬煡璇㈠�间负锛宲ath锛歿}",path);
+
+ if (active.equals("nhfy")){
+ //鍗楀崕闄勪竴鐨勶紝鍏堜笉璧板厤鐧伙紝鐩存帴璺冲埌鐧婚檰椤�
+ path = sysConfigService.selectConfigByKey("sys.qddz.yd");
+ log.info("銆怤HFYSSO鐧诲綍銆戦噸瀹氬悜鍦板潃锛歿}", path);
+ return buildRedirect(path);
+ }
+ log.info("qddz鐨勬煡璇㈠�间负锛宲ath锛歿}", path);
if (StringUtils.isEmpty(path)) {
throw new BaseException("璇烽厤缃墠绔湴鍧�");
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java
index cc5eab2..272e21d 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java
@@ -2,6 +2,8 @@
import java.util.Collection;
import java.util.List;
+import java.util.concurrent.TimeUnit;
+
import com.alibaba.fastjson2.JSONArray;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.domain.entity.SysDictData;
@@ -10,11 +12,10 @@
/**
* 瀛楀吀宸ュ叿绫�
- *
+ *
* @author ruoyi
*/
-public class DictUtils
-{
+public class DictUtils {
/**
* 鍒嗛殧绗�
*/
@@ -22,26 +23,23 @@
/**
* 璁剧疆瀛楀吀缂撳瓨
- *
- * @param key 鍙傛暟閿�
+ *
+ * @param key 鍙傛暟閿�
* @param dictDatas 瀛楀吀鏁版嵁鍒楄〃
*/
- public static void setDictCache(String key, List<SysDictData> dictDatas)
- {
- SpringUtils.getBean(RedisCache.class).setCacheObject(getCacheKey(key), dictDatas);
+ public static void setDictCache(String key, List<SysDictData> dictDatas) {
+ SpringUtils.getBean(RedisCache.class).setCacheObject(getCacheKey(key), dictDatas, 120, TimeUnit.MINUTES);
}
/**
* 鑾峰彇瀛楀吀缂撳瓨
- *
+ *
* @param key 鍙傛暟閿�
* @return dictDatas 瀛楀吀鏁版嵁鍒楄〃
*/
- public static List<SysDictData> getDictCache(String key)
- {
+ public static List<SysDictData> getDictCache(String key) {
JSONArray arrayCache = SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(key));
- if (StringUtils.isNotNull(arrayCache))
- {
+ if (StringUtils.isNotNull(arrayCache)) {
return arrayCache.toList(SysDictData.class);
}
return null;
@@ -49,63 +47,51 @@
/**
* 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏稿�艰幏鍙栧瓧鍏告爣绛�
- *
- * @param dictType 瀛楀吀绫诲瀷
+ *
+ * @param dictType 瀛楀吀绫诲瀷
* @param dictValue 瀛楀吀鍊�
* @return 瀛楀吀鏍囩
*/
- public static String getDictLabel(String dictType, String dictValue)
- {
+ public static String getDictLabel(String dictType, String dictValue) {
return getDictLabel(dictType, dictValue, SEPARATOR);
}
/**
* 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏告爣绛捐幏鍙栧瓧鍏稿��
- *
- * @param dictType 瀛楀吀绫诲瀷
+ *
+ * @param dictType 瀛楀吀绫诲瀷
* @param dictLabel 瀛楀吀鏍囩
* @return 瀛楀吀鍊�
*/
- public static String getDictValue(String dictType, String dictLabel)
- {
+ public static String getDictValue(String dictType, String dictLabel) {
return getDictValue(dictType, dictLabel, SEPARATOR);
}
/**
* 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏稿�艰幏鍙栧瓧鍏告爣绛�
- *
- * @param dictType 瀛楀吀绫诲瀷
+ *
+ * @param dictType 瀛楀吀绫诲瀷
* @param dictValue 瀛楀吀鍊�
* @param separator 鍒嗛殧绗�
* @return 瀛楀吀鏍囩
*/
- public static String getDictLabel(String dictType, String dictValue, String separator)
- {
+ public static String getDictLabel(String dictType, String dictValue, String separator) {
StringBuilder propertyString = new StringBuilder();
List<SysDictData> datas = getDictCache(dictType);
- if (StringUtils.isNotNull(datas))
- {
- if (StringUtils.containsAny(separator, dictValue))
- {
- for (SysDictData dict : datas)
- {
- for (String value : dictValue.split(separator))
- {
- if (value.equals(dict.getDictValue()))
- {
+ if (StringUtils.isNotNull(datas)) {
+ if (StringUtils.containsAny(separator, dictValue)) {
+ for (SysDictData dict : datas) {
+ for (String value : dictValue.split(separator)) {
+ if (value.equals(dict.getDictValue())) {
propertyString.append(dict.getDictLabel()).append(separator);
break;
}
}
}
- }
- else
- {
- for (SysDictData dict : datas)
- {
- if (dictValue.equals(dict.getDictValue()))
- {
+ } else {
+ for (SysDictData dict : datas) {
+ if (dictValue.equals(dict.getDictValue())) {
return dict.getDictLabel();
}
}
@@ -116,37 +102,28 @@
/**
* 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏告爣绛捐幏鍙栧瓧鍏稿��
- *
- * @param dictType 瀛楀吀绫诲瀷
+ *
+ * @param dictType 瀛楀吀绫诲瀷
* @param dictLabel 瀛楀吀鏍囩
* @param separator 鍒嗛殧绗�
* @return 瀛楀吀鍊�
*/
- public static String getDictValue(String dictType, String dictLabel, String separator)
- {
+ public static String getDictValue(String dictType, String dictLabel, String separator) {
StringBuilder propertyString = new StringBuilder();
List<SysDictData> datas = getDictCache(dictType);
- if (StringUtils.containsAny(separator, dictLabel) && StringUtils.isNotEmpty(datas))
- {
- for (SysDictData dict : datas)
- {
- for (String label : dictLabel.split(separator))
- {
- if (label.equals(dict.getDictLabel()))
- {
+ if (StringUtils.containsAny(separator, dictLabel) && StringUtils.isNotEmpty(datas)) {
+ for (SysDictData dict : datas) {
+ for (String label : dictLabel.split(separator)) {
+ if (label.equals(dict.getDictLabel())) {
propertyString.append(dict.getDictValue()).append(separator);
break;
}
}
}
- }
- else
- {
- for (SysDictData dict : datas)
- {
- if (dictLabel.equals(dict.getDictLabel()))
- {
+ } else {
+ for (SysDictData dict : datas) {
+ if (dictLabel.equals(dict.getDictLabel())) {
return dict.getDictValue();
}
}
@@ -156,31 +133,28 @@
/**
* 鍒犻櫎鎸囧畾瀛楀吀缂撳瓨
- *
+ *
* @param key 瀛楀吀閿�
*/
- public static void removeDictCache(String key)
- {
+ public static void removeDictCache(String key) {
SpringUtils.getBean(RedisCache.class).deleteObject(getCacheKey(key));
}
/**
* 娓呯┖瀛楀吀缂撳瓨
*/
- public static void clearDictCache()
- {
+ public static void clearDictCache() {
Collection<String> keys = SpringUtils.getBean(RedisCache.class).keys(CacheConstants.SYS_DICT_KEY + "*");
SpringUtils.getBean(RedisCache.class).deleteObject(keys);
}
/**
* 璁剧疆cache key
- *
+ *
* @param configKey 鍙傛暟閿�
* @return 缂撳瓨閿甼ey
*/
- public static String getCacheKey(String configKey)
- {
+ public static String getCacheKey(String configKey) {
return CacheConstants.SYS_DICT_KEY + configKey;
}
}
diff --git a/smartor/src/main/java/com/smartor/domain/DTO/MydTrendReqDTO.java b/smartor/src/main/java/com/smartor/domain/DTO/MydTrendReqDTO.java
new file mode 100644
index 0000000..c999063
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/DTO/MydTrendReqDTO.java
@@ -0,0 +1,41 @@
+package com.smartor.domain.DTO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 婊℃剰搴﹁秼鍔胯姹傚璞�
+ *
+ * @author ls
+ * @date 2026-09-11
+ */
+
+@ApiModel(value = "MydTrendReqVO", description = "婊℃剰搴﹁秼鍔胯姹傚璞�")
+@Data
+public class MydTrendReqDTO extends BaseEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "鍒嗙被")
+ private String period;
+
+ @ApiModelProperty(value = "寮�濮嬫棩鏈�")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date startDate;
+
+ @ApiModelProperty(value = "缁撴潫鏃ユ湡")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date endDate;
+
+ @ApiModelProperty(value = "缁村害")
+ private String dimension;
+
+ @ApiModelProperty(value = "鎬诲垎(骞冲潎鍒�)")
+ private String totalScore;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/DTO/QuestionCountKsOrBqDTO.java b/smartor/src/main/java/com/smartor/domain/DTO/QuestionCountKsOrBqDTO.java
index cb497aa..cdff3ea 100644
--- a/smartor/src/main/java/com/smartor/domain/DTO/QuestionCountKsOrBqDTO.java
+++ b/smartor/src/main/java/com/smartor/domain/DTO/QuestionCountKsOrBqDTO.java
@@ -24,7 +24,7 @@
* 闂嵎棰樼洰
*/
@ApiModelProperty(value = "闂嵎棰樼洰")
- private String qeustionText;
+ private String questionText;
/**
* 闂嵎缁撴灉闆嗗悎
diff --git a/smartor/src/main/java/com/smartor/domain/DTO/QuestionResultDTO.java b/smartor/src/main/java/com/smartor/domain/DTO/QuestionResultDTO.java
index d352a44..1fa924c 100644
--- a/smartor/src/main/java/com/smartor/domain/DTO/QuestionResultDTO.java
+++ b/smartor/src/main/java/com/smartor/domain/DTO/QuestionResultDTO.java
@@ -27,6 +27,12 @@
private String qeustionText;
/**
+ * 骞冲潎鍒�
+ */
+ @ApiModelProperty(value = "骞冲潎鍒�")
+ private String avgScore;
+
+ /**
* 闂嵎缁撴灉闆嗗悎
*/
@ApiModelProperty(value = "闂嵎缁撴灉闆嗗悎")
diff --git a/smartor/src/main/java/com/smartor/domain/VO/MydTrendReqVO.java b/smartor/src/main/java/com/smartor/domain/VO/MydTrendReqVO.java
new file mode 100644
index 0000000..740e060
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/VO/MydTrendReqVO.java
@@ -0,0 +1,49 @@
+package com.smartor.domain.VO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 婊℃剰搴﹁秼鍔胯姹傚璞�
+ *
+ * @author ls
+ * @date 2026-09-11
+ */
+
+@ApiModel(value = "MydTrendReqVO", description = "婊℃剰搴﹁秼鍔胯姹傚璞�")
+@Data
+public class MydTrendReqVO extends BaseEntity {
+ private static final long serialVersionUID = 1L;
+
+
+ /**
+ * 寮�濮嬪嚭闄㈡棩鏈�
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @ApiModelProperty(value = "寮�濮嬫棩鏈�")
+ private Date startFinishTime;
+
+ /**
+ * 缁撴潫鍑洪櫌鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @ApiModelProperty(value = "缁撴潫鏃ユ湡")
+ private Date endFinishTime;
+
+ @ApiModelProperty(value = "鍖洪棿绫诲瀷锛氬ぉ,鍛紝鏈堬紝骞�")
+ private String type;
+
+ @ApiModelProperty(value = "缁村害绫诲瀷锛�1锛氱淮搴� 2锛氶櫌鍖�")
+ private String dimensionType;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/VO/QuestionCountKsOrBqVO.java b/smartor/src/main/java/com/smartor/domain/VO/QuestionCountKsOrBqVO.java
index e3a6cb5..16724ca 100644
--- a/smartor/src/main/java/com/smartor/domain/VO/QuestionCountKsOrBqVO.java
+++ b/smartor/src/main/java/com/smartor/domain/VO/QuestionCountKsOrBqVO.java
@@ -50,7 +50,6 @@
@ApiModelProperty(value = "閮ㄩ棬code闆嗗悎")
private List<String> leaveldeptcodes;
-
/**
* 寮�濮嬪嚭闄㈡棩鏈�
*/
@@ -70,4 +69,7 @@
@ApiModelProperty(value = "闂绫诲瀷锛�1.鍗曢�� 2澶氶�� 3闂瓟 4濉┖ 5鍏跺畠锛�")
private String valueType;
+
+ @ApiModelProperty(value = "浠诲姟妯℃澘ID")
+ private String taskTemplateid;
}
diff --git a/smartor/src/main/java/com/smartor/domain/VO/ServiceSubtaskVO.java b/smartor/src/main/java/com/smartor/domain/VO/ServiceSubtaskVO.java
index 6946849..620d86f 100644
--- a/smartor/src/main/java/com/smartor/domain/VO/ServiceSubtaskVO.java
+++ b/smartor/src/main/java/com/smartor/domain/VO/ServiceSubtaskVO.java
@@ -8,6 +8,7 @@
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
@@ -296,6 +297,7 @@
* 瀹屾垚鏃堕棿
*/
@JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "瀹屾垚鏃堕棿(寮�濮嬫煡璇�)")
private Date finishtimeStart;
@@ -303,6 +305,7 @@
* 瀹屾垚鏃堕棿(缁撴潫鏌ヨ)
*/
@JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "瀹屾垚鏃堕棿(缁撴潫鏌ヨ)")
private Date finishtimeEnd;
diff --git a/smartor/src/main/java/com/smartor/domain/VO/SltdMydTotalVO.java b/smartor/src/main/java/com/smartor/domain/VO/SltdMydTotalVO.java
new file mode 100644
index 0000000..73899fa
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/VO/SltdMydTotalVO.java
@@ -0,0 +1,106 @@
+package com.smartor.domain.VO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 闂缁撴灉DTO
+ *
+ * @author ruoyi
+ * @date 2024-02-02
+ */
+
+@ApiModel(value = "QuestionResultVO", description = "闂缁撴灉VO")
+@Data
+public class SltdMydTotalVO extends BaseEntity {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 绉戝涓庣梾鍖虹殑鏌ヨ鏄痮r杩樻槸and: 1:and(榛樿)(绂婚櫌鐥呭尯涓庣闄㈢瀹ょ粍鍚�) 2:or(绂婚櫌鐥呭尯涓庣闄㈢瀹ょ粍鍚�) 3:and(绂婚櫌鐥呭尯涓庨殢璁跨瀹ょ粍鍚�) 4:or(绂婚櫌鐥呭尯涓庨殢璁跨瀹ょ粍鍚�)
+ */
+ @ApiModelProperty(value = "绉戝涓庣梾鍖虹殑鏌ヨ鏄痮r杩樻槸and: 1:and(榛樿)(绂婚櫌鐥呭尯涓庣闄㈢瀹ょ粍鍚�) 2:or(绂婚櫌鐥呭尯涓庣闄㈢瀹ょ粍鍚�) 3:and(绂婚櫌鐥呭尯涓庨殢璁跨瀹ょ粍鍚�) 4:or(绂婚櫌鐥呭尯涓庨殢璁跨瀹ょ粍鍚�)")
+ private String deptOrDistrict = "1";
+
+ /**
+ * 鍑洪櫌鐥呭尯缂栧彿
+ */
+ @ApiModelProperty(value = "鍑洪櫌鐥呭尯闆嗗悎(鍜岄儴闂ㄤ簩閫変竴蹇呭~)")
+ private List<String> leavehospitaldistrictcodes;
+
+ /**
+ * 閮ㄩ棬code
+ */
+ @Excel(name = " 閮ㄩ棬code")
+ @ApiModelProperty(value = "閮ㄩ棬code闆嗗悎(鍜岀梾鍖轰簩閫変竴蹇呭~)")
+ private List<String> leaveldeptcodes;
+
+
+ /**
+ * 寮�濮嬪嚭闄㈡棩鏈�
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @ApiModelProperty(value = "寮�濮嬪嚭闄㈡棩鏈�")
+ private Date startOutHospTime;
+
+ /**
+ * 缁撴潫鍑洪櫌鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @ApiModelProperty(value = "缁撴潫鍑洪櫌鏃ユ湡")
+ private Date endOutHospTime;
+
+ /**
+ * 寮�濮嬪嚭闄㈡棩鏈�
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @ApiModelProperty(value = "寮�濮嬪畬鎴愭棩鏈�")
+ private Date startFinishTime;
+
+ /**
+ * 缁撴潫鍑洪櫌鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @ApiModelProperty(value = "缁撴潫瀹屾垚鏃ユ湡")
+ private Date endFinishTime;
+
+
+ /**
+ * 闂鍐呭
+ */
+ @ApiModelProperty(value = "闂鍐呭")
+ private String questionContent;
+
+ /**
+ * 闂鍐呭
+ */
+ @ApiModelProperty(value = "寮�濮嬫煡璇㈠垎鏁�")
+ private Double startScore;
+
+ /**
+ * 闂鍐呭
+ */
+ @ApiModelProperty(value = "缁撴潫鏌ヨ鍒嗘暟")
+ private Double endScore;
+
+ /**
+ * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)
+ */
+ @Excel(name = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚 11锛屽奖鍍忎笓绉戦殢璁� 12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)")
+ @ApiModelProperty(value = "蹇呭~鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚 11锛屽奖鍍忎笓绉戦殢璁� 12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)")
+ private List<String> serviceTypeList;
+
+ @ApiModelProperty(value = "闂绫诲瀷锛�1.鍗曢�� 2澶氶�� 3闂瓟 4濉┖ 5鍏跺畠锛�")
+ private String valueType;
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
index 7c54fe0..a743d1d 100644
--- a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
@@ -1,6 +1,7 @@
package com.smartor.mapper;
import com.smartor.domain.*;
+import com.smartor.domain.DTO.MydTrendReqDTO;
import com.smartor.domain.DTO.QuestionCountKsOrBqDTO;
import com.smartor.domain.VO.PatSatisfactionReqVO;
import com.smartor.domain.VO.HeLibraryCountVO;
@@ -81,6 +82,12 @@
* @param loopCount 杞锛�0=棣栬疆锛�
*/
public int countActiveByScheduleIdAndLoop(@Param("scheduleId") Long scheduleId, @Param("loopCount") Long loopCount);
+
+ public List<MydTrendReqDTO> mydTrend(@Param("startFinishTime") Date startFinishTime, @Param("endFinishTime") Date endFinishTime, @Param("type") String type);
+
+ public List<MydTrendReqDTO> sltdMydTotalByDimension(@Param("startFinishTime") Date startFinishTime, @Param("endFinishTime") Date endFinishTime, @Param("type") String type);
+
+ public List<MydTrendReqDTO> sltdMydTotalByYQ(@Param("startFinishTime") Date startFinishTime, @Param("endFinishTime") Date endFinishTime, @Param("type") String type);
/**
* 浠诲姟缁勶紙appltype=5锛夛細鎷夊彇鏌愪竴杞鐨勫叏閮� subtask锛堢敤浜庡厠闅嗗埌涓嬩竴杞級銆�
@@ -264,7 +271,7 @@
* @param endOutHospTime
* @return
*/
- List<ServiceSubtaskDetailRatioExport> statQuestionOption(@Param("taskIds") List<Long> taskIds, @Param("startOutHospTime") Date startOutHospTime, @Param("endOutHospTime") Date endOutHospTime, @Param("scoreStart") Double scoreStart, @Param("scoreEnd") Double scoreEnd, @Param("questiontext") String questiontext, @Param("valueType") String valueType);
+ List<ServiceSubtaskDetailRatioExport> statQuestionOption(@Param("taskIds") List<Long> taskIds, @Param("startOutHospTime") Date startOutHospTime, @Param("endOutHospTime") Date endOutHospTime, @Param("startFinishTime") Date startFinishTime, @Param("endFinishTime") Date endFinishTime, @Param("scoreStart") Double scoreStart, @Param("scoreEnd") Double scoreEnd, @Param("questiontext") String questiontext, @Param("valueType") String valueType);
/**
* 鏍规嵁瀛愪换鍔� ID 缁熻闂鐨勯�夐」鐨勭櫨鍒嗘瘮锛堢敤浜庢弧鎰忓害缁熻 serviceType=6锛�
@@ -274,7 +281,7 @@
* @param endOutHospTime
* @return
*/
- List<ServiceSubtaskDetailRatioExport> statQuestionOptionBySubtaskIds(@Param("subtaskIds") List<Long> subtaskIds, @Param("startOutHospTime") Date startOutHospTime, @Param("endOutHospTime") Date endOutHospTime, @Param("scoreStart") Double scoreStart, @Param("scoreEnd") Double scoreEnd, @Param("questiontext") String questiontext, @Param("valueType") String valueType);
+ List<ServiceSubtaskDetailRatioExport> statQuestionOptionBySubtaskIds(@Param("subtaskIds") List<Long> subtaskIds, @Param("startOutHospTime") Date startOutHospTime, @Param("endOutHospTime") Date endOutHospTime, @Param("startFinishTime") Date startFinishTime, @Param("endFinishTime") Date endFinishTime, @Param("scoreStart") Double scoreStart, @Param("scoreEnd") Double scoreEnd, @Param("questiontext") String questiontext, @Param("valueType") String valueType);
/**
* 鏍规嵁绉戝銆佺梾鍖恒�侀鐩被鍨嬬粺璁$殑绉戝銆佺梾鍖鸿瘎鍒�
diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
index 61ebaaf..36e7245 100644
--- a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
+++ b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
@@ -2,6 +2,7 @@
import com.ruoyi.common.core.domain.AjaxResult;
import com.smartor.domain.*;
+import com.smartor.domain.DTO.MydTrendReqDTO;
import com.smartor.domain.DTO.QuestionCountKsOrBqDTO;
import com.smartor.domain.DTO.QuestionResultDTO;
import com.smartor.domain.ServiceSubtask;
@@ -143,7 +144,7 @@
* @param serviceSubtaskRes
* @return
*/
- public List<ServiceSubtaskDetailRatioExport> getDetailRatio(QuestionResultVO questionResultVO, List<ServiceSubtaskRes> serviceSubtaskRes);
+ public List<ServiceSubtaskDetailRatioExport> getDetailRatio(SltdMydTotalVO sltdMydTotalVO, List<ServiceSubtaskRes> serviceSubtaskRes);
/**
@@ -224,7 +225,7 @@
* @param taskIds
* @return
*/
- public List<ServiceSubtaskDetailRatioExport> statQuestionOption(List<Long> taskIds, Date startOutHospTime, Date endOutHospTime, String scriptContent, Double scoreStart, Double scoreEnd, String valueType);
+ public List<ServiceSubtaskDetailRatioExport> statQuestionOption(List<Long> taskIds, Date startFinishTime, Date endFinishTime, Date startOutHospTime, Date endOutHospTime, String scriptContent, Double scoreStart, Double scoreEnd, String valueType);
/**
* 鏍规嵁瀛愪换鍔� ID 缁熻闂鐨勯�夐」鐨勭櫨鍒嗘瘮锛堢敤浜庢弧鎰忓害缁熻 serviceType=6锛�
@@ -232,11 +233,20 @@
* @param subtaskIds 瀛愪换鍔� ID 鍒楄〃
* @return
*/
- public List<ServiceSubtaskDetailRatioExport> statQuestionOptionBySubtaskIds(List<Long> subtaskIds, Date startOutHospTime, Date endOutHospTime, String scriptContent, Double scoreStart, Double scoreEnd, String valueType);
+ public List<ServiceSubtaskDetailRatioExport> statQuestionOptionBySubtaskIds(List<Long> subtaskIds, Date startOutHospTime, Date endOutHospTime, Date startFinishTime, Date endFinishTime, String scriptContent, Double scoreStart, Double scoreEnd, String valueType);
- public List<QuestionCountKsOrBqDTO> statQuestionOptionByKsOrBq(QuestionCountKsOrBqVO questionCountKsOrBqVO);
+ public Map<String, Map<String, List<QuestionCountKsOrBqDTO>>> statQuestionOptionByKsOrBq(QuestionCountKsOrBqVO questionCountKsOrBqVO);
public String scanGenerateSubtask(ServiceTask serviceTaskVo);
+ public List<MydTrendReqDTO> mydTrend(MydTrendReqVO mydTrendReqVO);
+
+ /**
+ * 鏍规嵁鏃堕棿缁欏害杩涜瀵规瘮婊℃剰搴﹀垎鏁�
+ * @param mydTrendReqVO
+ * @return
+ */
+ public List<MydTrendReqDTO> sltdMydTotalByDimension(MydTrendReqVO mydTrendReqVO);
+
public Integer matchOptionIndex(String url, String questionText, String voiceText, List<IvrTaskTemplateTargetoption> options, String uuid);
}
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
index b0d7bab..00b3a3f 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -8,6 +8,7 @@
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.SysUserDept;
import com.ruoyi.common.core.domain.entity.SysUserRole;
+import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.smartor.common.enums.EmergencyLevelEnum;
import com.smartor.common.enums.ImportFlagEnum;
@@ -85,6 +86,10 @@
@Value("${spring.profiles.active}")
private String active;
+ @Autowired
+ private ServiceSubtaskServiceImpl serviceSubtaskServiceImpl;
+ @Autowired
+ private ServiceSubtaskMapper serviceSubtaskMapper;
@Override
public List<ServiceSLTDInhospResDTO> queryHealthcareRecordList(ServiceSLTDInhospReqVO reqVO) {
@@ -709,6 +714,23 @@
queryInhosp.setInhospstate("1");
patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
if (CollectionUtils.isNotEmpty(patMedInhospList)) {
+ //濡傛灉涓嶄负绌猴紝鍒欏皢鍏ラ櫌鏃堕棿杩涜鏇存柊
+ PatMedInhosp pmOut = patMedInhospList.get(0);
+ PatMedInhosp pmIn = existingInhosps.get(0);
+ pmOut.setStarttime(pmIn.getStarttime());
+ pmOut.setUpdateTime(new Date());
+ patMedInhospService.updatePatMedInhosp(pmOut);
+ //鐪佺珛鍚屽痉闇�瑕佸皢寮�濮嬫棩鏈熶笌鍏ラ櫌鏃ユ湡鐩哥瓑鐨勪换鍔★紝鏀规垚涓嶆墽琛�
+ try {
+ if ("sltd".equals(active) && DateUtils.isSameDay(pmOut.getStarttime(), pmIn.getEndtime())) {
+ ServiceSubtask serviceSubtask = new ServiceSubtask();
+ serviceSubtask.setInhospid(pmOut.getInhospid());
+ serviceSubtask.setSendstate(4L);
+ serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
+ }
+ } catch (Exception e) {
+ log.error("灏嗗嚭闄㈡椂闂寸瓑浜庡叆闄㈡椂闂寸殑inhospid鐨勪换鍔℃洿鏂板け璐ヤ簡, inhospid={}", pmOut.getInhospid(), e);
+ }
return;
}
}
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
index 12c3f7e..458452d 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -168,7 +168,7 @@
* 淇濆瓨闂嵎绛旀 (寮傛澶勭悊锛屽揩閫熻繑鍥�)
*
* @param serviceSubTaskAnswerReq 绛旀璇锋眰
- * @param flag 鏍囧織浣�
+ * @param flag 鏍囧織浣�
* @return 缁撴灉
*/
@Override
@@ -177,239 +177,240 @@
String threadName = Thread.currentThread().getName();
log.info("[{}] 寮�濮嬪紓姝ュ鐞嗕繚瀛橀棶鍗风瓟妗�", threadName);
try {
- //鍙傛暟瑙e瘑
- Long tid = null;
- Long pid = null;
- Long subid = null;
- if (ObjectUtils.isNotEmpty(serviceSubTaskAnswerReq)) {
- RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
+ //鍙傛暟瑙e瘑
+ Long tid = null;
+ Long pid = null;
+ Long subid = null;
+ if (ObjectUtils.isNotEmpty(serviceSubTaskAnswerReq)) {
+ RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
- if (flag == 0) {
- tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam1(), pri_key));
- pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam2(), pri_key));
- if (StringUtils.isNotEmpty(serviceSubTaskAnswerReq.getParam6()))
- subid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam6(), pri_key));
- } else if (flag == 1) {
- tid = Long.valueOf(serviceSubTaskAnswerReq.getParam1());
- pid = Long.valueOf(serviceSubTaskAnswerReq.getParam2());
- subid = Long.valueOf(serviceSubTaskAnswerReq.getParam6());
+ if (flag == 0) {
+ tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam1(), pri_key));
+ pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam2(), pri_key));
+ if (StringUtils.isNotEmpty(serviceSubTaskAnswerReq.getParam6()))
+ subid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam6(), pri_key));
+ } else if (flag == 1) {
+ tid = Long.valueOf(serviceSubTaskAnswerReq.getParam1());
+ pid = Long.valueOf(serviceSubTaskAnswerReq.getParam2());
+ subid = Long.valueOf(serviceSubTaskAnswerReq.getParam6());
+ }
}
- }
- //鏍规嵁 PID銆乀ID銆丼UBID 鏋勫缓闇�瑕佸鐞嗙殑 cache key
- String scriptCacheKeyPrefix = pid + "-" + tid + "-" + subid;
- Set<String> targetKeys = new HashSet<>();
+ //鏍规嵁 PID銆乀ID銆丼UBID 鏋勫缓闇�瑕佸鐞嗙殑 cache key
+ String scriptCacheKeyPrefix = pid + "-" + tid + "-" + subid;
+ Set<String> targetKeys = new HashSet<>();
- if (serviceSubTaskAnswerReq != null && serviceSubTaskAnswerReq.getType() != null) {
- if (serviceSubTaskAnswerReq.getType() == 2) {
- targetKeys.add(scriptCacheKeyPrefix + "-WJscriptCache");
- } else if (serviceSubTaskAnswerReq.getType() == 1) {
- targetKeys.add(scriptCacheKeyPrefix + "-SFscriptCache");
+ if (serviceSubTaskAnswerReq != null && serviceSubTaskAnswerReq.getType() != null) {
+ if (serviceSubTaskAnswerReq.getType() == 2) {
+ targetKeys.add(scriptCacheKeyPrefix + "-WJscriptCache");
+ } else if (serviceSubTaskAnswerReq.getType() == 1) {
+ targetKeys.add(scriptCacheKeyPrefix + "-SFscriptCache");
+ }
+ } else {
+ //濡傛灉娌℃湁 type锛屽垯閬嶅巻鎵�鏈� key锛堜繚鐣欏師鏈夊吋瀹规�э級
+ Set<String> allKeys = redisCache.getAllKeys();
+ for (String key : allKeys) {
+ try {
+ if (key.contains(scriptCacheKeyPrefix) && (key.endsWith("-WJscriptCache") || key.endsWith("-SFscriptCache"))) {
+ targetKeys.add(key);
+ }
+ } catch (Exception e) {
+ continue;
+ }
+ }
}
- } else {
- //濡傛灉娌℃湁 type锛屽垯閬嶅巻鎵�鏈� key锛堜繚鐣欏師鏈夊吋瀹规�э級
- Set<String> allKeys = redisCache.getAllKeys();
- for (String key : allKeys) {
+
+ //鐢ㄤ簬鎵归噺鏇存柊鐨勫瓙浠诲姟鍒楄〃锛堥伩鍏嶅湪寰幆涓噸澶嶆煡璇級
+ Map<String, ServiceSubtask> subtaskCache = new HashMap<>();
+ String subtaskCacheKey = subid != null ? subid.toString() : pid + "-" + tid;
+
+ //鍏堟煡璇竴娆″瓙浠诲姟淇℃伅
+ ServiceSubtaskEntity ssVO = new ServiceSubtaskEntity();
+ if (subid != null) {
+ ssVO.setSubId(subid);
+ } else {
+ ssVO.setTaskid(tid);
+ ssVO.setPatid(pid);
+ }
+ List<ServiceSubtask> initialSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(ssVO);
+ if (CollectionUtils.isNotEmpty(initialSubtaskList)) {
+ subtaskCache.put(subtaskCacheKey, initialSubtaskList.get(0));
+ }
+
+ String score = "0";
+ Long nextScriptno = null;
+ aa:
+ for (String key : targetKeys) {
+ String[] split = key.split("-");
+ //鍏堝垽鏂紝鏄笉鏄綋鍓嶆彁浜や汉鐨勶紝涓嶆槸褰撳墠鎻愪氦浜虹殑锛岃烦杩�
try {
- if (key.contains(scriptCacheKeyPrefix) && (key.endsWith("-WJscriptCache") || key.endsWith("-SFscriptCache"))) {
- targetKeys.add(key);
+ if (ObjectUtils.isNotEmpty(split[0]) && ObjectUtils.isNotEmpty(split[1]) && !Long.valueOf(split[0]).equals(pid) && !Long.valueOf(split[1]).equals(tid) && !Objects.isNull(split[2]) && !Long.valueOf(split[2]).equals(subid)) {
+ continue;
}
} catch (Exception e) {
+ //杩欓噷涔嬫墍浠ヨ澶勭悊寮傚父锛屾槸鍥犱负鏈夌殑KEY灏变笉鏄垜浠鐨凨EY,娌℃湁鍘绘埅鍙栵紱鏈夊紓甯镐笉澶勭悊锛岀洿鎺ヤ笅涓�涓�
continue;
}
- }
- }
+ if (key.contains("-WJscriptCache")) {
+ List<SvyTaskTemplateScriptVO> cacheList = redisCache.getCacheList(key);
+ cacheList.sort(Comparator.comparingLong(SvyTaskTemplateScriptVO::getSort));
+ log.info("闂嵎鍥炵瓟缁撴灉锛歿}", CollectionUtils.isEmpty(cacheList) ? null : cacheList.size());
- //鐢ㄤ簬鎵归噺鏇存柊鐨勫瓙浠诲姟鍒楄〃锛堥伩鍏嶅湪寰幆涓噸澶嶆煡璇級
- Map<String, ServiceSubtask> subtaskCache = new HashMap<>();
- String subtaskCacheKey = subid != null ? subid.toString() : pid + "-" + tid;
+ //鏍¢獙涓�涓嬮鐨勫簭鍙锋槸鍚︽湁闂 (濡傛灉鏍规嵁閫夐」鏃犲簭璺宠浆锛屽氨浼氬鑷撮敊璇�)
+ cacheList = checkQuestionSort(cacheList);
- //鍏堟煡璇竴娆″瓙浠诲姟淇℃伅
- ServiceSubtaskEntity ssVO = new ServiceSubtaskEntity();
- if (subid != null) {
- ssVO.setSubId(subid);
- } else {
- ssVO.setTaskid(tid);
- ssVO.setPatid(pid);
- }
- List<ServiceSubtask> initialSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(ssVO);
- if (CollectionUtils.isNotEmpty(initialSubtaskList)) {
- subtaskCache.put(subtaskCacheKey, initialSubtaskList.get(0));
- }
+ for (int i = 0; i < cacheList.size(); i++) {
+ if (i == 0) {
+ //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰�
+ for (SvyTaskTemplateScriptVO svyTaskTemplateScriptVO : cacheList) {
+ if (svyTaskTemplateScriptVO.getSort() == 1L) {
+ //璇存槑鏄涓�棰�
+ List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = cacheList.get(0).getSvyTaskTemplateTargetoptions();
+ svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
+ Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid, subid);
+ if (map == null) continue aa;
+ if (!Objects.isNull(map.get("nextScriptNo")))
+ nextScriptno = Long.valueOf(map.get("nextScriptNo"));
+ if (score == null || score.isEmpty()) {
+ score = map.get("score");
+ } else {
+ score = String.valueOf(Double.parseDouble(score) + Double.parseDouble(map.get("score")));
+ }
+ }
+ }
- String score = "0";
- Long nextScriptno = null;
- aa:
- for (String key : targetKeys) {
- String[] split = key.split("-");
- //鍏堝垽鏂紝鏄笉鏄綋鍓嶆彁浜や汉鐨勶紝涓嶆槸褰撳墠鎻愪氦浜虹殑锛岃烦杩�
- try {
- if (ObjectUtils.isNotEmpty(split[0]) && ObjectUtils.isNotEmpty(split[1]) && !Long.valueOf(split[0]).equals(pid) && !Long.valueOf(split[1]).equals(tid) && !Objects.isNull(split[2]) && !Long.valueOf(split[2]).equals(subid)) {
- continue;
- }
- } catch (Exception e) {
- //杩欓噷涔嬫墍浠ヨ澶勭悊寮傚父锛屾槸鍥犱负鏈夌殑KEY灏变笉鏄垜浠鐨凨EY,娌℃湁鍘绘埅鍙栵紱鏈夊紓甯镐笉澶勭悊锛岀洿鎺ヤ笅涓�涓�
- continue;
- }
- if (key.contains("-WJscriptCache")) {
- List<SvyTaskTemplateScriptVO> cacheList = redisCache.getCacheList(key);
- cacheList.sort(Comparator.comparingLong(SvyTaskTemplateScriptVO::getSort));
- log.info("闂嵎鍥炵瓟缁撴灉锛歿}", CollectionUtils.isEmpty(cacheList) ? null : cacheList.size());
+ } else {
+ SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = cacheList.get(i);
+ log.info("svyTaskTemplateScriptVO鐨勪俊鎭负锛歿}锛宨鐨勫�间负锛歿}", svyTaskTemplateScriptVO.getScriptno(), i);
+ List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = cacheList.get(i).getSvyTaskTemplateTargetoptions();
+ svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
- //鏍¢獙涓�涓嬮鐨勫簭鍙锋槸鍚︽湁闂 (濡傛灉鏍规嵁閫夐」鏃犲簭璺宠浆锛屽氨浼氬鑷撮敊璇�)
- cacheList = checkQuestionSort(cacheList);
-
- for (int i = 0; i < cacheList.size(); i++) {
- if (i == 0) {
- //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰�
- for (SvyTaskTemplateScriptVO svyTaskTemplateScriptVO : cacheList) {
- if (svyTaskTemplateScriptVO.getSort() == 1L) {
- //璇存槑鏄涓�棰�
- List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = cacheList.get(0).getSvyTaskTemplateTargetoptions();
- svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
- Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid, subid);
- if (map == null) continue aa;
+ if (svyTaskTemplateScriptVO.getSort() != null && svyTaskTemplateScriptVO.getSort().equals(nextScriptno)) {
+ Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]), Objects.isNull(split[2]) ? null : Long.valueOf(split[2]));
+ log.error("nextScriptNo鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
if (!Objects.isNull(map.get("nextScriptNo")))
nextScriptno = Long.valueOf(map.get("nextScriptNo"));
- if (score == null || score.isEmpty()) {
+ if (score == null) {
score = map.get("score");
} else {
score = String.valueOf(Double.parseDouble(score) + Double.parseDouble(map.get("score")));
}
}
}
-
- } else {
- SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = cacheList.get(i);
- log.info("svyTaskTemplateScriptVO鐨勪俊鎭负锛歿}锛宨鐨勫�间负锛歿}", svyTaskTemplateScriptVO.getScriptno(), i);
- List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = cacheList.get(i).getSvyTaskTemplateTargetoptions();
- svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
-
- if (svyTaskTemplateScriptVO.getSort() != null && svyTaskTemplateScriptVO.getSort().equals(nextScriptno)) {
- Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]), Objects.isNull(split[2]) ? null : Long.valueOf(split[2]));
- log.error("nextScriptNo鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
- if (!Objects.isNull(map.get("nextScriptNo")))
- nextScriptno = Long.valueOf(map.get("nextScriptNo"));
- if (score == null) {
- score = map.get("score");
- } else {
- score = String.valueOf(Double.parseDouble(score) + Double.parseDouble(map.get("score")));
- }
- }
}
- }
- } else if (key.contains("-SFscriptCache")) {
- List<IvrTaskTemplateScriptVO> cacheList = redisCache.getCacheList(key);
- cacheList.sort(Comparator.comparingLong(IvrTaskTemplateScriptVO::getSort));
- log.error("鐢佃瘽闅忚闂嵎鍥炵瓟缁撴灉锛歿}", CollectionUtils.isEmpty(cacheList) ? null : cacheList.size());
- for (int i = 0; i < cacheList.size(); i++) {
- if (i == 0) {
- //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰�
- for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : cacheList) {
- if (ivrTaskTemplateScriptVO.getSort() == 1L) {
- //璇存槑鏄涓�棰�
- List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = cacheList.get(0).getIvrTaskScriptTargetoptionList();
- ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
- Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, tid, pid, subid);
+ } else if (key.contains("-SFscriptCache")) {
+ List<IvrTaskTemplateScriptVO> cacheList = redisCache.getCacheList(key);
+ cacheList.sort(Comparator.comparingLong(IvrTaskTemplateScriptVO::getSort));
+ log.error("鐢佃瘽闅忚闂嵎鍥炵瓟缁撴灉锛歿}", CollectionUtils.isEmpty(cacheList) ? null : cacheList.size());
+ for (int i = 0; i < cacheList.size(); i++) {
+ if (i == 0) {
+ //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰�
+ for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : cacheList) {
+ if (ivrTaskTemplateScriptVO.getSort() == 1L) {
+ //璇存槑鏄涓�棰�
+ List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = cacheList.get(0).getIvrTaskScriptTargetoptionList();
+ ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
+ Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, tid, pid, subid);
+ if (!Objects.isNull(map.get("nextScriptNo")))
+ nextScriptno = Long.valueOf(map.get("nextScriptNo"));
+ if (score == null || score.isEmpty()) {
+ score = map.get("score");
+ } else {
+ score = String.valueOf(Double.parseDouble(score) + Double.parseDouble(map.get("score")));
+ }
+ }
+ }
+
+ } else {
+ IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(i), IvrTaskTemplateScriptVO.class);
+ List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(cacheList.get(i).getIvrTaskScriptTargetoptionList(), IvrTaskTemplateTargetoption.class);
+ ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
+
+ if (ivrTaskTemplateScriptVO.getSort() != null && Long.valueOf(ivrTaskTemplateScriptVO.getSort()).equals(nextScriptno)) {
+ Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]), Objects.isNull(split[2]) ? null : Long.valueOf(split[2]));
+ log.error("----nextScriptNo2鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
if (!Objects.isNull(map.get("nextScriptNo")))
nextScriptno = Long.valueOf(map.get("nextScriptNo"));
- if (score == null || score.isEmpty()) {
+ if (score == null) {
score = map.get("score");
} else {
score = String.valueOf(Double.parseDouble(score) + Double.parseDouble(map.get("score")));
}
}
}
-
- } else {
- IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(i), IvrTaskTemplateScriptVO.class);
- List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(cacheList.get(i).getIvrTaskScriptTargetoptionList(), IvrTaskTemplateTargetoption.class);
- ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
-
- if (ivrTaskTemplateScriptVO.getSort() != null && Long.valueOf(ivrTaskTemplateScriptVO.getSort()).equals(nextScriptno)) {
- Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]), Objects.isNull(split[2]) ? null : Long.valueOf(split[2]));
- log.error("----nextScriptNo2鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
- if (!Objects.isNull(map.get("nextScriptNo")))
- nextScriptno = Long.valueOf(map.get("nextScriptNo"));
- if (score == null) {
- score = map.get("score");
- } else {
- score = String.valueOf(Double.parseDouble(score) + Double.parseDouble(map.get("score")));
- }
- }
}
- }
- } else {
- continue;
- }
- //灏嗚 key 鍜� value 浠� redis 涓紝鍒犻櫎
- redisCache.deleteObject(key);
-
- //鏌ヨ鍑鸿浠诲姟涓鍦ㄦ墽琛岀殑鎮h�呬俊鎭紙浣跨敤缂撳瓨锛�
- String currentSubtaskKey = subid != null ? subid.toString() : pid + "-" + tid;
- ServiceSubtask serviceSubtask;
-
- if (!subtaskCache.containsKey(currentSubtaskKey)) {
- ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity();
- if (subid != null) {
- serviceSubtaskEntity.setSubId(subid);
} else {
- serviceSubtaskEntity.setTaskid(tid);
- serviceSubtaskEntity.setPatid(pid);
+ continue;
}
+ //灏嗚 key 鍜� value 浠� redis 涓紝鍒犻櫎
+ redisCache.deleteObject(key);
+
+ //鏌ヨ鍑鸿浠诲姟涓鍦ㄦ墽琛岀殑鎮h�呬俊鎭紙浣跨敤缂撳瓨锛�
+ String currentSubtaskKey = subid != null ? subid.toString() : pid + "-" + tid;
+ ServiceSubtask serviceSubtask;
+
+ if (!subtaskCache.containsKey(currentSubtaskKey)) {
+ ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity();
+ if (subid != null) {
+ serviceSubtaskEntity.setSubId(subid);
+ } else {
+ serviceSubtaskEntity.setTaskid(tid);
+ serviceSubtaskEntity.setPatid(pid);
+ }
// ssVO.setSendstate(3L);
- List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskEntity);
- if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
- serviceSubtask = serviceSubtaskList.get(0);
- subtaskCache.put(currentSubtaskKey, serviceSubtask);
+ List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskEntity);
+ if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
+ serviceSubtask = serviceSubtaskList.get(0);
+ subtaskCache.put(currentSubtaskKey, serviceSubtask);
+ } else {
+ continue;
+ }
} else {
- continue;
+ serviceSubtask = subtaskCache.get(currentSubtaskKey);
}
- } else {
- serviceSubtask = subtaskCache.get(currentSubtaskKey);
- }
- serviceSubtask.setIsabnormal(serviceSubTaskAnswerReq.getIsabnormal());
- serviceSubtask.setSendstate(6L);
- serviceSubtask.setExcep(serviceSubTaskAnswerReq.getExcep());
- serviceSubtask.setFinishtime(new Date());
- serviceSubtask.setUpdateTime(new Date());
- log.error("灏嗚key鍜寁alue浠巖edis涓�,serviceSubtask鐨勫�间负--------锛歿}", serviceSubtask);
- if (score != null && !score.isEmpty()) serviceSubtask.setScore(score);
- serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
+ serviceSubtask.setIsabnormal(serviceSubTaskAnswerReq.getIsabnormal());
+ serviceSubtask.setSendstate(6L);
+ serviceSubtask.setExcep(serviceSubTaskAnswerReq.getExcep());
+ serviceSubtask.setFinishtime(new Date());
+ serviceSubtask.setUpdateTime(new Date());
+ log.error("灏嗚key鍜寁alue浠巖edis涓�,serviceSubtask鐨勫�间负--------锛歿}", serviceSubtask);
+ if (score != null && !score.isEmpty()) serviceSubtask.setScore(score);
+ serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
- //灏嗗綋鍓嶅彂閫佺姸鎬佹敼鎴� 9 瀹屾垚锛堢紦瀛� preachform 鏌ヨ锛�
- String currentPreachform = serviceSubtask.getCurrentPreachform();
- if (StringUtils.isNotEmpty(currentPreachform)) {
- ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
- serviceSubtaskPreachform.setPreachform(currentPreachform);
- if (subid != null) {
- serviceSubtaskPreachform.setSubid(subid);
- } else {
- Long id = serviceSubtask.getId();
- Long tid_ = serviceSubtask.getTaskid();
- if (id != null) {
- serviceSubtaskPreachform.setSubid(id);
- } else if (tid_ != null) {
- serviceSubtaskPreachform.setTaskid(tid_);
+ //灏嗗綋鍓嶅彂閫佺姸鎬佹敼鎴� 9 瀹屾垚锛堢紦瀛� preachform 鏌ヨ锛�
+ String currentPreachform = serviceSubtask.getCurrentPreachform();
+ if (StringUtils.isNotEmpty(currentPreachform)) {
+ ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
+ serviceSubtaskPreachform.setPreachform(currentPreachform);
+ if (subid != null) {
+ serviceSubtaskPreachform.setSubid(subid);
+ } else {
+ Long id = serviceSubtask.getId();
+ Long tid_ = serviceSubtask.getTaskid();
+ if (id != null) {
+ serviceSubtaskPreachform.setSubid(id);
+ } else if (tid_ != null) {
+ serviceSubtaskPreachform.setTaskid(tid_);
+ }
+ }
+ List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+ if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
+ ServiceSubtaskPreachform ssp = serviceSubtaskPreachforms.get(0);
+ ssp.setSendstate("9");
+ serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(ssp);
}
}
- List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
- if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
- ServiceSubtaskPreachform ssp = serviceSubtaskPreachforms.get(0);
- ssp.setSendstate("9");
- serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(ssp);
- }
- }
+ }
+ log.info("[{}] 瀹屾垚寮傛澶勭悊淇濆瓨闂嵎绛旀", Thread.currentThread().getName());
+ return 1;
+ } catch (Exception e) {
+ log.error("[{}] 寮傛澶勭悊淇濆瓨闂嵎绛旀鍙戠敓寮傚父 : {},璇锋眰鐨勫璞′负锛歿}", Thread.currentThread().getName(), e.getMessage(), e, serviceSubTaskAnswerReq);
+ throw new RuntimeException("淇濆瓨闂嵎绛旀澶辫触", e);
}
- log.info("[{}] 瀹屾垚寮傛澶勭悊淇濆瓨闂嵎绛旀", Thread.currentThread().getName());
- return 1;
- } catch (Exception e) {
- log.error("[{}] 寮傛澶勭悊淇濆瓨闂嵎绛旀鍙戠敓寮傚父 : {},璇锋眰鐨勫璞′负锛歿}", Thread.currentThread().getName(), e.getMessage(), e,serviceSubTaskAnswerReq);
- throw new RuntimeException("淇濆瓨闂嵎绛旀澶辫触", e);
}
-}
+
@Override
public Integer saveQuestionDetail(ServiceSubTaskCacheReq serviceSubTaskCacheReq, Long flag) {
Long tid = Long.valueOf(serviceSubTaskCacheReq.getParam1());
@@ -1019,6 +1020,8 @@
serviceSubtaskDetailVO.setQuestiontext(svyTaskTemplateScriptVO.getScriptContent());
serviceSubtaskDetailVO.setIsMydException(svyTaskTemplateScriptVO.getIsMydException());
serviceSubtaskDetailVO.setDimension(svyTaskTemplateScriptVO.getDimension());
+ if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScore()))
+ serviceSubtaskDetailVO.setScore(svyTaskTemplateScriptVO.getScore().replaceFirst("^0+(?!$)", ""));
serviceSubtaskDetailVO.setCategoryid(svyTaskTemplateScriptVO.getCategoryid());
serviceSubtaskDetailVO.setTaskid(Long.valueOf(taskid));
serviceSubtaskDetailVO.setTargetid(svyTaskTemplateScriptVO.getTargetid() != null ? svyTaskTemplateScriptVO.getTargetid().intValue() : null);
@@ -1069,16 +1072,15 @@
String orgid = selectServiceSubtaskList.get(0).getOrgid();
//鏅畞-闅忚寮傚父鎻愮ず 鍏朵粬-寮傚父婊℃剰搴︽彁绀�
boolean addTrace = false;
- if(StringUtils.isNotEmpty(orgid) && orgid.equals("47255004333112711A1001")){
+ if (StringUtils.isNotEmpty(orgid) && orgid.equals("47255004333112711A1001")) {
if (stt != null) {
addTrace = Long.valueOf(1L).equals(stt.getIsabnormal());
}
- }else {
+ } else {
addTrace = StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getIsMydException());
}
//鍒ゆ柇涓�涓嬪綋鍓嶇殑闂鏄笉鏄弧鎰忓害闂锛屽苟涓� dutyDeptCode 鏄惁鏈夊�硷紝骞朵笖閫夐」鏄笉鏄紓甯搁�夐」锛屽鏋滃叏绗﹀悎锛屽垯寰�婊℃剰搴﹂棶棰樺紓甯歌〃鏂板
- if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getDutyDeptCode()) && stt != null && Long.valueOf(1L).equals(stt.getIsabnormal()) || StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getDutyDeptCode())
- && addTrace) {
+ if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getDutyDeptCode()) && stt != null && Long.valueOf(1L).equals(stt.getIsabnormal()) || StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getDutyDeptCode()) && addTrace) {
isabnormalFlag = 1L;
ServiceSubtaskDetailTrace subtaskDetailTrace = new ServiceSubtaskDetailTrace();
subtaskDetailTrace.setDetailId(serviceSubtaskDetail.getId());
@@ -1357,16 +1359,15 @@
String orgid = selectServiceSubtaskList.get(0).getOrgid();
//鏅畞-闅忚寮傚父鎻愮ず 鍏朵粬-寮傚父婊℃剰搴︽彁绀�
boolean addTrace = false;
- if(StringUtils.isNotEmpty(orgid) && orgid.equals("47255004333112711A1001")){
+ if (StringUtils.isNotEmpty(orgid) && orgid.equals("47255004333112711A1001")) {
if (stt != null) {
addTrace = Long.valueOf(1L).equals(stt.getIsabnormal());
}
- }else {
+ } else {
addTrace = StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIsMydException());
}
//鍒ゆ柇涓�涓嬪綋鍓嶇殑闂鏄笉鏄弧鎰忓害闂锛屽苟涓攄utyDeptCode鏄惁鏈夊�硷紝骞朵笖閫夐」鏄笉鏄紓甯搁�夐」锛屽鏋滃叏绗﹀悎锛屽垯寰�婊℃剰搴﹂棶棰樺紓甯歌〃鏂板
- if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getDutyDeptCode()) && 1 == stt.getIsabnormal() || StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getDutyDeptCode())
- && addTrace) {
+ if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getDutyDeptCode()) && 1 == stt.getIsabnormal() || StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getDutyDeptCode()) && addTrace) {
isabnormalFlag = "1";
ServiceSubtaskDetailTrace subtaskDetailTrace = new ServiceSubtaskDetailTrace();
subtaskDetailTrace.setDetailId(serviceSubtaskDetail.getId());
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 580958d..5640854 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -21,6 +21,7 @@
import com.smartor.common.MtSubmitSmUtil;
import com.smartor.common.ScheduleSubtaskBuilder;
import com.smartor.config.PhoneUtils;
+import com.smartor.domain.DTO.MydTrendReqDTO;
import com.smartor.domain.DTO.QuestionCountKsOrBqDTO;
import com.smartor.domain.DTO.ServiceSubtaskDetailDTO;
import com.smartor.domain.*;
@@ -785,6 +786,7 @@
serviceSubtask.setUpdateTime(DateUtils.getNowDate());
if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 6)
serviceSubtask.setFinishtime(new Date());
+
return serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
}
@@ -5136,13 +5138,13 @@
}
@Override
- public List<ServiceSubtaskDetailRatioExport> statQuestionOption(List<Long> taskIds, Date startOutHospTime, Date endOutHospTime, String scriptContent, Double scoreStart, Double scoreEnd, String valueType) {
+ public List<ServiceSubtaskDetailRatioExport> statQuestionOption(List<Long> taskIds, Date startFinishTime, Date endFinishTime, Date startOutHospTime, Date endOutHospTime, String scriptContent, Double scoreStart, Double scoreEnd, String valueType) {
//鍏堟竻鐞嗕竴涓嬮噸澶嶆暟鎹�
List<Long> repeatIds = serviceSubtaskDetailMapper.selectRepeatDetailIds();
if (!CollectionUtils.isEmpty(repeatIds)) {
serviceSubtaskDetailMapper.deleteRepeatDetailByIds(repeatIds);
}
- List<ServiceSubtaskDetailRatioExport> serviceSubtaskDetailRatioExports = serviceSubtaskMapper.statQuestionOption(taskIds, startOutHospTime, endOutHospTime, scoreStart, scoreEnd, scriptContent, valueType);
+ List<ServiceSubtaskDetailRatioExport> serviceSubtaskDetailRatioExports = serviceSubtaskMapper.statQuestionOption(taskIds, startOutHospTime, endOutHospTime, startFinishTime, endFinishTime, scoreStart, scoreEnd, scriptContent, valueType);
// 澶勭悊 targetvalue锛氭寜 & 鍒嗗壊鎴愬鏉¤褰�
List<ServiceSubtaskDetailRatioExport> result = new ArrayList<>();
@@ -5187,88 +5189,135 @@
* 鏍规嵁绉戝鎴栫梾鍖虹粺璁¢棶鍗烽�夐」(绉戝銆侀鐩煡璇㈢殑绉戝璇勫垎琛�)
*/
@Override
- public List<QuestionCountKsOrBqDTO> statQuestionOptionByKsOrBq(QuestionCountKsOrBqVO vo) {
+ public Map<String, Map<String, List<QuestionCountKsOrBqDTO>>> statQuestionOptionByKsOrBq(QuestionCountKsOrBqVO vo) {
+
+ // 1. 鏌ユ槑缁�
List<QuestionCountKsOrBqDTO> sourceList = serviceSubtaskMapper.statQuestionOptionByKsOrBq(vo);
if (CollectionUtils.isEmpty(sourceList)) {
- return Collections.emptyList();
+ return Collections.emptyMap();
}
+ // 2. 鍒ゆ柇鎸夌瀹よ繕鏄寜鐥呭尯
boolean byDept = vo.getLeaveldeptcodes() != null;
boolean byDistrict = !byDept && vo.getLeavehospitaldistrictcodes() != null;
if (!byDept && !byDistrict) {
- return Collections.emptyList();
+ return Collections.emptyMap();
}
+ // 3. key = 绉戝/鐥呭尯 + 棰樼洰 + 閫夐」
Map<String, QuestionCountKsOrBqDTO> map = new LinkedHashMap<>();
for (QuestionCountKsOrBqDTO dto : sourceList) {
+
if (StringUtils.isEmpty(dto.getTargetvalue())) {
continue;
}
+ // 鍒嗙粍鍚嶏細绉戝 鎴� 鐥呭尯
String groupName = byDept ? dto.getDeptname() : dto.getLeavehospitaldistrictname();
if (StringUtils.isEmpty(groupName)) {
continue;
}
- // 鍏抽敭锛氫袱杈归兘鐢� trimAll锛屽吋瀹瑰叏瑙掔┖鏍�
- String asrtext = trimAll(dto.getAsrtext());
- String questionKey = dto.getTaskid() + "\u0001" + trimAll(dto.getQeustionText());
+ String asrtext = trimAll(dto.getAsrtext()); // 鐢ㄦ埛瀹為檯閫変腑鐨勯�夐」
+ String questionText = trimAll(dto.getQuestionText()); // 棰樼洰
+ if (StringUtils.isEmpty(questionText)) {
+ continue;
+ }
+ // 鎷嗗垎 targetvalue锛屾瘡涓�夐」閮借鏈変竴鏉¤褰�
for (String raw : dto.getTargetvalue().split("&")) {
- String option = trimAll(raw); // 鈫� 淇鐐癸細鐢� trimAll 鑰屼笉鏄� trim
+
+ String option = trimAll(raw);
if (option.isEmpty()) {
continue;
}
- String key = buildKey(groupName, option, questionKey);
+ // key = 绉戝/鐥呭尯 + 棰樼洰 + 閫夐」
+ String key = buildKey(groupName, questionText, option);
+
QuestionCountKsOrBqDTO item = map.get(key);
if (item == null) {
item = DtoConversionUtils.sourceToTarget(dto, QuestionCountKsOrBqDTO.class);
- item.setTargetvalue(option); // 杈撳嚭鐨� targetvalue 灏辨槸褰撳墠閫夐」
+ item.setTargetvalue(option);
item.setAsrtext(option);
+ item.setQuestionText(dto.getQuestionText());
item.setAnswerCount("0");
+ item.setSingleScore("0");
map.put(key, item);
}
+ // 鍙湁褰撳墠閫夐」 == 鐢ㄦ埛瀹為檯閫変腑鐨勯�夐」锛屾墠绱姞
if (option.equals(asrtext)) {
- item.setAnswerCount(String.valueOf(parseCount(item.getAnswerCount()) + 1));
- item.setSingleScore(String.valueOf(new BigDecimal(item.getSingleScore()).add(new BigDecimal(dto.getSingleScore()))));
+ int count = parseCount(item.getAnswerCount()) + 1;
+ item.setAnswerCount(String.valueOf(count));
+
+ BigDecimal totalScore = new BigDecimal(item.getSingleScore())
+ .add(new BigDecimal(dto.getSingleScore() == null ? "0" : dto.getSingleScore()));
+ item.setSingleScore(totalScore.toPlainString());
}
}
}
- ArrayList<QuestionCountKsOrBqDTO> questionCountKsOrBqDTOS = new ArrayList<>(map.values());
- for (QuestionCountKsOrBqDTO questionCountKsOrBqDTO : questionCountKsOrBqDTOS) {
- String singleScore = questionCountKsOrBqDTO.getSingleScore();
- String answerCount = questionCountKsOrBqDTO.getAnswerCount();
+
+ // 4. 璁$畻骞冲潎鍒�
+ for (QuestionCountKsOrBqDTO dto : map.values()) {
+ String answerCount = dto.getAnswerCount();
+ String singleScore = dto.getSingleScore();
BigDecimal avg;
if (StringUtils.isEmpty(answerCount)
|| BigDecimal.ZERO.compareTo(new BigDecimal(answerCount.trim())) == 0) {
- // 闄ゆ暟涓� 0锛岄伩鍏� / by zero
avg = BigDecimal.ZERO;
} else {
- avg = new BigDecimal(singleScore)
+ avg = new BigDecimal(singleScore == null ? "0" : singleScore)
.divide(new BigDecimal(answerCount.trim()), 2, RoundingMode.HALF_UP);
}
- questionCountKsOrBqDTO.setAvgScore(avg.toPlainString());
-
+ dto.setAvgScore(avg.toPlainString());
}
- return questionCountKsOrBqDTOS;
+ // 5. 杞垚 Map<String, Map<String, List<QuestionCountKsOrBqDTO>>>
+ // 绗竴灞� key锛氱瀹�/鐥呭尯
+ // 绗簩灞� key锛氶鐩�
+ // 绗簩灞� value锛氳棰樼洰涓嬬殑鎵�鏈夐�夐」鍒楄〃
+ Map<String, Map<String, List<QuestionCountKsOrBqDTO>>> result = new LinkedHashMap<>();
+
+ for (QuestionCountKsOrBqDTO dto : map.values()) {
+
+ // 鍒嗙粍鍚�
+ String groupName = byDept ? dto.getDeptname() : dto.getLeavehospitaldistrictname();
+ if (StringUtils.isEmpty(groupName)) {
+ continue;
+ }
+
+ // 棰樼洰鍚�
+ String questionText = dto.getQuestionText();
+ if (StringUtils.isEmpty(questionText)) {
+ continue;
+ }
+
+ // 绗竴灞傦細绉戝/鐥呭尯
+ Map<String, List<QuestionCountKsOrBqDTO>> questionMap =
+ result.computeIfAbsent(groupName, k -> new LinkedHashMap<>());
+
+ // 绗簩灞傦細棰樼洰
+ List<QuestionCountKsOrBqDTO> optionList =
+ questionMap.computeIfAbsent(questionText, k -> new ArrayList<>());
+
+ optionList.add(dto);
+ }
+
+ return result;
}
-
-
@Override
- public List<ServiceSubtaskDetailRatioExport> statQuestionOptionBySubtaskIds(List<Long> subtaskIds, Date startOutHospTime, Date endOutHospTime, String scriptContent, Double scoreStart, Double scoreEnd, String valueType) {
+ public List<ServiceSubtaskDetailRatioExport> statQuestionOptionBySubtaskIds(List<Long> subtaskIds, Date startOutHospTime, Date endOutHospTime, Date startFinishTime, Date endFinishTime, String scriptContent, Double scoreStart, Double scoreEnd, String valueType) {
//鍏堟竻鐞嗕竴涓嬮噸澶嶆暟鎹�
List<Long> repeatIds = serviceSubtaskDetailMapper.selectRepeatDetailIds();
if (!CollectionUtils.isEmpty(repeatIds)) {
serviceSubtaskDetailMapper.deleteRepeatDetailByIds(repeatIds);
}
- List<ServiceSubtaskDetailRatioExport> serviceSubtaskDetailRatioExports = serviceSubtaskMapper.statQuestionOptionBySubtaskIds(subtaskIds, startOutHospTime, endOutHospTime, scoreStart, scoreEnd, scriptContent, valueType);
+ List<ServiceSubtaskDetailRatioExport> serviceSubtaskDetailRatioExports = serviceSubtaskMapper.statQuestionOptionBySubtaskIds(subtaskIds, startOutHospTime, endOutHospTime, startFinishTime, endFinishTime, scoreStart, scoreEnd, scriptContent, valueType);
// 澶勭悊 targetvalue锛氭寜 & 鍒嗗壊鎴愬鏉¤褰�
List<ServiceSubtaskDetailRatioExport> result = new ArrayList<>();
for (ServiceSubtaskDetailRatioExport export : serviceSubtaskDetailRatioExports) {
@@ -5537,6 +5586,34 @@
}
return content;
}
+
+ /**
+ * 婊℃剰搴﹁秼鍔挎煡璇�
+ *
+ * @param mydTrendReqVO
+ * @return
+ */
+ @Override
+ public List<MydTrendReqDTO> mydTrend(MydTrendReqVO mydTrendReqVO) {
+ List<MydTrendReqDTO> list = serviceSubtaskMapper.mydTrend(mydTrendReqVO.getStartFinishTime(), mydTrendReqVO.getEndFinishTime(), mydTrendReqVO.getType());
+ if (mydTrendReqVO.getType().equals("week")) list = getWeekDate(mydTrendReqVO, list);
+ if (mydTrendReqVO.getType().equals("year")) list = getYearDate(mydTrendReqVO, list);
+ if (mydTrendReqVO.getType().equals("month")) list = getMonthDate(mydTrendReqVO, list);
+ if (mydTrendReqVO.getType().equals("day")) list = getDayDate(mydTrendReqVO, list);
+ return list;
+ }
+
+ @Override
+ public List<MydTrendReqDTO> sltdMydTotalByDimension(MydTrendReqVO mydTrendReqVO) {
+ List<MydTrendReqDTO> list = null;
+ if (mydTrendReqVO.getDimensionType().equals("1"))
+ list = serviceSubtaskMapper.sltdMydTotalByDimension(mydTrendReqVO.getStartFinishTime(), mydTrendReqVO.getEndFinishTime(), mydTrendReqVO.getType());
+ else if (mydTrendReqVO.getDimensionType().equals("2"))
+ list = serviceSubtaskMapper.sltdMydTotalByYQ(mydTrendReqVO.getStartFinishTime(), mydTrendReqVO.getEndFinishTime(), mydTrendReqVO.getType());
+
+ return list;
+ }
+
public ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, ServiceTaskdept serviceTaskdept, PatArchive patArchive) {
ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
@@ -6006,20 +6083,23 @@
/**
* 闂缁撴灉鍗犳瘮
*
- * @param questionResultVO
+ * @param sltdMydTotalVO
* @param serviceSubtaskRes
* @return
*/
- public List<ServiceSubtaskDetailRatioExport> getDetailRatio(QuestionResultVO questionResultVO, List<ServiceSubtaskRes> serviceSubtaskRes) {
+ public List<ServiceSubtaskDetailRatioExport> getDetailRatio(SltdMydTotalVO sltdMydTotalVO, List<ServiceSubtaskRes> serviceSubtaskRes) {
List<ServiceSubtaskDetailRatioExport> serviceSubtaskDetailRatioExports = null;
- if (StringUtils.isNotEmpty(questionResultVO.getServiceType()) && questionResultVO.getServiceType().equals("2")) {
+ if (CollectionUtils.isNotEmpty(sltdMydTotalVO.getServiceTypeList()) && sltdMydTotalVO.getServiceTypeList().contains("2") && (sltdMydTotalVO.getServiceTypeList().contains("6") || sltdMydTotalVO.getServiceTypeList().contains("14"))) {
+ //serviceType锛屽嵆鏈夐殢璁垮張鏈夋弧鎰忓害锛屾殏鏃舵病娉曠粺璁�
+ return serviceSubtaskDetailRatioExports;
+ } else if (CollectionUtils.isNotEmpty(sltdMydTotalVO.getServiceTypeList()) && sltdMydTotalVO.getServiceTypeList().contains("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")) {
+ serviceSubtaskDetailRatioExports = statQuestionOption(taskIds, sltdMydTotalVO.getStartFinishTime(), sltdMydTotalVO.getEndFinishTime(), sltdMydTotalVO.getStartOutHospTime(), sltdMydTotalVO.getEndOutHospTime(), sltdMydTotalVO.getQuestionContent(), sltdMydTotalVO.getStartScore(), sltdMydTotalVO.getEndScore(), sltdMydTotalVO.getValueType());
+ } else if (CollectionUtils.isNotEmpty(sltdMydTotalVO.getServiceTypeList()) && sltdMydTotalVO.getServiceTypeList().contains("6") || sltdMydTotalVO.getServiceTypeList().contains("14")) {
//婊℃剰搴︾粺璁� 锛堥�氳繃 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());
+ serviceSubtaskDetailRatioExports = statQuestionOptionBySubtaskIds(subtaskIds, sltdMydTotalVO.getStartOutHospTime(), sltdMydTotalVO.getEndOutHospTime(), sltdMydTotalVO.getStartFinishTime(), sltdMydTotalVO.getEndFinishTime(), sltdMydTotalVO.getQuestionContent(), sltdMydTotalVO.getStartScore(), sltdMydTotalVO.getEndScore(), sltdMydTotalVO.getValueType());
}
return serviceSubtaskDetailRatioExports;
}
@@ -6082,15 +6162,12 @@
private static Boolean isBlankChar(char c) {
return c == '\u3000' // 鍏ㄨ绌烘牸
|| c == ' ' // 鍗婅绌烘牸
- || c == '\t'
- || c == '\n'
- || c == '\r'
- || c == '\f'
- || Character.isWhitespace(c);
+ || c == '\t' || c == '\n' || c == '\r' || c == '\f' || Character.isWhitespace(c);
}
- private String buildKey(String groupName, String option, String questionKey) {
- return questionKey + KEY_SEP + groupName + KEY_SEP + option;
+
+ private String buildKey(String groupName, String questionText, String option) {
+ return groupName + "\u0001" + questionText + "\u0001" + option;
}
private static int parseCount(String s) {
@@ -6103,4 +6180,239 @@
return 0;
}
}
+
+ private List<MydTrendReqDTO> getWeekDate(MydTrendReqVO mydTrendReqVO, List<MydTrendReqDTO> list) {
+ // 1. 璁$畻鎬诲懆鏁帮紙鍜� SQL 閲岀殑鍏紡淇濇寔涓�鑷达級
+ long days = (mydTrendReqVO.getEndFinishTime().getTime() - mydTrendReqVO.getStartFinishTime().getTime()) / (1000L * 60 * 60 * 24);
+ int totalWeeks = (int) (days / 7) + 1;
+
+ // 2. 宸叉湁鏁版嵁锛歱eriod -> totalScore
+ Map<Integer, String> exist = new HashMap<>();
+ for (MydTrendReqDTO row : list) {
+ // period 鏄暟瀛楋紝鍙兘鏄� Integer / Long / BigDecimal锛岀粺涓�杞� int
+ int p = Integer.parseInt(StringUtils.isNotEmpty(row.getPeriod()) ? row.getPeriod() : "0");
+ exist.put(p, row.getTotalScore() != null ? row.getTotalScore() : "0");
+ // 涓嬮潰杩欒鎸変綘鐨勫師閫昏緫淇濈暀锛堣櫧鐒剁湅璧锋潵鏈夌偣澶氫綑锛�
+ exist.put(p, String.valueOf(row.getTotalScore() != null ? row.getTotalScore() : 0));
+ }
+
+ // 3. 琛ュ叏 1..totalWeeks
+ List<MydTrendReqDTO> result = new ArrayList<>(totalWeeks);
+
+ // 鑾峰彇鏁翠綋鐨勫紑濮嬫椂闂�
+ long startTimeMillis = mydTrendReqVO.getStartFinishTime().getTime();
+ long endTimeMillis = mydTrendReqVO.getEndFinishTime().getTime();
+ long oneWeekMillis = 7L * 24 * 60 * 60 * 1000; // 涓�鍛ㄧ殑姣鏁�
+
+ for (int i = 1; i <= totalWeeks; i++) {
+ MydTrendReqDTO row = new MydTrendReqDTO();
+ row.setPeriod(String.valueOf(i));
+ row.setTotalScore(exist.getOrDefault(i, "0"));
+
+ // -------- 鏂板锛氳缃瘡鍛ㄧ殑 startDate 鍜� endDate --------
+ // 褰撳墠鍛ㄥ紑濮嬫椂闂� = 鏁翠綋寮�濮嬫椂闂� + (i - 1) * 7澶�
+ long currentStartMillis = startTimeMillis + (long) (i - 1) * oneWeekMillis;
+
+ // 褰撳墠鍛ㄧ粨鏉熸椂闂� = 褰撳墠鍛ㄥ紑濮嬫椂闂� + 7澶� - 1姣锛堜繚璇佹槸杩欎竴鍛ㄧ殑鏈�鍚庝竴鍒伙級
+ long currentEndMillis = currentStartMillis + oneWeekMillis - 1;
+
+ // 濡傛灉鏄渶鍚庝竴鍛紝缁撴潫鏃堕棿涓嶈兘瓒呰繃鏁翠綋鐨� endTime
+ if (i == totalWeeks) {
+ currentEndMillis = endTimeMillis;
+ }
+
+ row.setStartDate(new Date(currentStartMillis));
+ row.setEndDate(new Date(currentEndMillis));
+ // ----------------------------------------------------
+
+ result.add(row);
+ }
+
+ return result;
+ }
+
+ private List<MydTrendReqDTO> getYearDate(MydTrendReqVO mydTrendReqVO, List<MydTrendReqDTO> list) {
+ // 鑾峰彇鏁翠綋寮�濮嬪拰缁撴潫鏃堕棿
+ Date startTime = mydTrendReqVO.getStartFinishTime();
+ Date endTime = mydTrendReqVO.getEndFinishTime();
+
+ // 1. 璁$畻骞翠唤鑼冨洿
+ // 浣跨敤 Calendar 鑾峰彇璧峰骞翠唤鍜岀粨鏉熷勾浠�
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(startTime);
+ int startYear = cal.get(Calendar.YEAR);
+
+ cal.setTime(endTime);
+ int endYear = cal.get(Calendar.YEAR);
+
+ // 鎬诲勾鏁� (鍖呭惈棣栧熬)
+ int totalYears = endYear - startYear + 1;
+
+ // 2. 宸叉湁鏁版嵁锛歱eriod -> totalScore (鍋囪 period 瀛樼殑鏄勾浠藉瓧绗︿覆锛屽 "2024")
+ Map<String, String> exist = new HashMap<>();
+ for (MydTrendReqDTO row : list) {
+ String period = row.getPeriod() != null ? row.getPeriod() : "";
+ exist.put(period, row.getTotalScore() != null ? row.getTotalScore() : "0");
+ }
+
+ // 3. 琛ュ叏鎵�鏈夊勾浠�
+ List<MydTrendReqDTO> result = new ArrayList<>(totalYears);
+
+ for (int i = 0; i < totalYears; i++) {
+ int currentYear = startYear + i;
+ String periodKey = String.valueOf(currentYear);
+
+ MydTrendReqDTO row = new MydTrendReqDTO();
+ row.setPeriod(periodKey);
+ // 濡傛灉娌℃湁璇ュ勾浠界殑鏁版嵁锛岄粯璁ょ粰 "0"
+ row.setTotalScore(exist.getOrDefault(periodKey, "0"));
+
+ // -------- 璁剧疆璇ュ勾浠界殑 startDate 鍜� endDate --------
+ Calendar yearCal = Calendar.getInstance();
+ // 璁剧疆涓鸿骞寸殑 1鏈�1鏃� 00:00:00
+ yearCal.set(currentYear, Calendar.JANUARY, 1, 0, 0, 0);
+ yearCal.set(Calendar.MILLISECOND, 0);
+ row.setStartDate(yearCal.getTime());
+
+ // 璁剧疆涓鸿骞寸殑 12鏈�31鏃� 23:59:59
+ yearCal.set(currentYear, Calendar.DECEMBER, 31, 23, 59, 59);
+ yearCal.set(Calendar.MILLISECOND, 999);
+ row.setEndDate(yearCal.getTime());
+ // ----------------------------------------------------
+
+ result.add(row);
+ }
+
+ return result;
+ }
+
+ private List<MydTrendReqDTO> getMonthDate(MydTrendReqVO mydTrendReqVO, List<MydTrendReqDTO> list) {
+ // 鑾峰彇鏁翠綋寮�濮嬪拰缁撴潫鏃堕棿
+ Date startTime = mydTrendReqVO.getStartFinishTime();
+ Date endTime = mydTrendReqVO.getEndFinishTime();
+
+ // 1. 璁$畻鏈堜唤鑼冨洿
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(startTime);
+ int startYear = cal.get(Calendar.YEAR);
+ int startMonth = cal.get(Calendar.MONTH); // 娉ㄦ剰锛欳alendar.MONTH 浠� 0 寮�濮�
+
+ cal.setTime(endTime);
+ int endYear = cal.get(Calendar.YEAR);
+ int endMonth = cal.get(Calendar.MONTH);
+
+ // 鎬绘湀鏁� = (缁撴潫骞� - 寮�濮嬪勾) * 12 + (缁撴潫鏈� - 寮�濮嬫湀) + 1
+ int totalMonths = (endYear - startYear) * 12 + (endMonth - startMonth) + 1;
+
+ // 2. 宸叉湁鏁版嵁锛歱eriod -> totalScore (period 瀛樼殑鏄湀浠藉瓧绗︿覆锛屽 "2024-06")
+ Map<String, String> exist = new HashMap<>();
+ for (MydTrendReqDTO row : list) {
+ String period = row.getPeriod() != null ? row.getPeriod() : "";
+ exist.put(period, row.getTotalScore() != null ? row.getTotalScore() : "0");
+ }
+
+ // 3. 琛ュ叏鎵�鏈夋湀浠�
+ List<MydTrendReqDTO> result = new ArrayList<>(totalMonths);
+
+ Calendar monthCal = Calendar.getInstance();
+ monthCal.set(startYear, startMonth, 1, 0, 0, 0);
+ monthCal.set(Calendar.MILLISECOND, 0);
+
+ for (int i = 0; i < totalMonths; i++) {
+ int currentYear = monthCal.get(Calendar.YEAR);
+ int currentMonth = monthCal.get(Calendar.MONTH) + 1; // 杞垚 1-12 鏈�
+
+ // 鎷兼帴 period锛屾牸寮忥細yyyy-MM锛屾瘮濡� "2024-06"
+ // 濡傛灉浣犲笇鏈涙槸 "2024-6"锛屽彲浠ユ妸 String.format 鏀规垚 currentMonth
+ String periodKey = String.format("%04d-%02d", currentYear, currentMonth);
+
+ MydTrendReqDTO row = new MydTrendReqDTO();
+ row.setPeriod(periodKey);
+ row.setTotalScore(exist.getOrDefault(periodKey, "0"));
+
+ // -------- 璁剧疆璇ユ湀鐨� startDate 鍜� endDate --------
+ // 褰撴湀寮�濮嬫椂闂达細1鍙� 00:00:00.000
+ Calendar startCal = (Calendar) monthCal.clone();
+ row.setStartDate(startCal.getTime());
+
+ // 褰撴湀缁撴潫鏃堕棿锛氫笅涓湀1鍙� 00:00:00.000 鍑� 1 姣
+ Calendar endCal = (Calendar) monthCal.clone();
+ endCal.add(Calendar.MONTH, 1);
+ endCal.add(Calendar.MILLISECOND, -1);
+ row.setEndDate(endCal.getTime());
+ // ----------------------------------------------------
+
+ result.add(row);
+
+ // 杩涘叆涓嬩竴涓湀
+ monthCal.add(Calendar.MONTH, 1);
+ }
+
+ return result;
+ }
+
+ private List<MydTrendReqDTO> getDayDate(MydTrendReqVO mydTrendReqVO, List<MydTrendReqDTO> list) {
+ // 鑾峰彇鏁翠綋寮�濮嬪拰缁撴潫鏃堕棿
+ Date startTime = mydTrendReqVO.getStartFinishTime();
+ Date endTime = mydTrendReqVO.getEndFinishTime();
+
+ // 1. 璁$畻鎬诲ぉ鏁�
+ long oneDayMillis = 24L * 60 * 60 * 1000;
+ // 娉ㄦ剰锛氳繖閲屽彧绠楁棩鏈熷樊锛屼笉鑰冭檻鏃跺垎绉掞紝鍚﹀垯鍙兘宸竴澶�
+ Calendar startCal = Calendar.getInstance();
+ startCal.setTime(startTime);
+ startCal.set(Calendar.HOUR_OF_DAY, 0);
+ startCal.set(Calendar.MINUTE, 0);
+ startCal.set(Calendar.SECOND, 0);
+ startCal.set(Calendar.MILLISECOND, 0);
+
+ Calendar endCal = Calendar.getInstance();
+ endCal.setTime(endTime);
+ endCal.set(Calendar.HOUR_OF_DAY, 0);
+ endCal.set(Calendar.MINUTE, 0);
+ endCal.set(Calendar.SECOND, 0);
+ endCal.set(Calendar.MILLISECOND, 0);
+
+ long days = (endCal.getTimeInMillis() - startCal.getTimeInMillis()) / oneDayMillis;
+ int totalDays = (int) days + 1;
+
+ // 2. 宸叉湁鏁版嵁锛歱eriod -> totalScore (period 瀛樼殑鏄棩鏈熷瓧绗︿覆锛屽 "2024-06-01")
+ Map<String, String> exist = new HashMap<>();
+ for (MydTrendReqDTO row : list) {
+ String period = row.getPeriod() != null ? row.getPeriod() : "";
+ exist.put(period, row.getTotalScore() != null ? row.getTotalScore() : "0");
+ }
+
+ // 3. 琛ュ叏鎵�鏈夋棩鏈�
+ List<MydTrendReqDTO> result = new ArrayList<>(totalDays);
+
+ Calendar dayCal = (Calendar) startCal.clone();
+ for (int i = 0; i < totalDays; i++) {
+ // 鎷兼帴 period锛屾牸寮忥細yyyy-MM-dd
+ String periodKey = String.format("%04d-%02d-%02d", dayCal.get(Calendar.YEAR), dayCal.get(Calendar.MONTH) + 1, dayCal.get(Calendar.DAY_OF_MONTH));
+
+ MydTrendReqDTO row = new MydTrendReqDTO();
+ row.setPeriod(periodKey);
+ row.setTotalScore(exist.getOrDefault(periodKey, "0"));
+
+ // -------- 璁剧疆璇ュぉ鐨� startDate 鍜� endDate --------
+ Calendar startOfDay = (Calendar) dayCal.clone();
+ row.setStartDate(startOfDay.getTime());
+
+ Calendar endOfDay = (Calendar) dayCal.clone();
+ endOfDay.set(Calendar.HOUR_OF_DAY, 23);
+ endOfDay.set(Calendar.MINUTE, 59);
+ endOfDay.set(Calendar.SECOND, 59);
+ endOfDay.set(Calendar.MILLISECOND, 999);
+ row.setEndDate(endOfDay.getTime());
+ // ----------------------------------------------------
+
+ result.add(row);
+
+ // 杩涘叆涓嬩竴澶�
+ dayCal.add(Calendar.DAY_OF_MONTH, 1);
+ }
+
+ return result;
+ }
}
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 0c32669..9471442 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -1386,6 +1386,9 @@
<if test="id != null ">
and id = #{id}
</if>
+ <if test="inhospid != null ">
+ and inhospid = #{inhospid}
+ </if>
</where>
</update>
@@ -2585,6 +2588,12 @@
<if test="phone != null and phone != ''">
AND phone = #{phone}
</if>
+ <if test="finishtimeStart != null">
+ AND date_format(finishtime,'%y%m%d') >= date_format(#{finishtimeStart},'%y%m%d')
+ </if>
+ <if test="finishtimeEnd != null">
+ AND date_format(finishtime,'%y%m%d') <= date_format(#{finishtimeEnd},'%y%m%d')
+ </if>
<if test="deptOrDistrict==1">
<if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
AND leavehospitaldistrictcode IN
@@ -3007,6 +3016,117 @@
and sendstate in (1, 2, 3)
</select>
+ <select id="mydTrend" resultType="com.smartor.domain.DTO.MydTrendReqDTO">
+ SELECT CASE #{type}
+ WHEN 'year' THEN DATE_FORMAT(d.create_time, '%Y')
+ WHEN 'quarter' THEN CONCAT(YEAR(d.create_time), '-Q', QUARTER(d.create_time))
+ WHEN 'month' THEN DATE_FORMAT(d.create_time, '%Y-%m')
+ WHEN 'week' THEN FLOOR(DATEDIFF(d.create_time, #{startFinishTime}) / 7) + 1
+ ELSE DATE_FORMAT(d.create_time, '%Y-%m-%d')
+ END AS period,
+ ROUND(avg(d.score), 2) AS totalScore
+ FROM service_subtask_detail d
+ JOIN service_task t ON d.taskid = t.taskid
+ WHERE t.service_type IN (6, 14)
+ AND t.del_flag = 0
+ AND d.del_flag = 0
+ AND d.create_time >= #{startFinishTime}
+ AND d.create_time < DATE_ADD(#{endFinishTime}, INTERVAL 1 DAY)
+ GROUP BY period
+ ORDER BY period;
+ </select>
+
+ <select id="sltdMydTotalByDimension" resultType="com.smartor.domain.DTO.MydTrendReqDTO">
+ SELECT
+ p.period,
+ dim.dimension,
+ IFNULL(ROUND(SUM(d.score), 2), 0) AS totalScore
+ FROM (
+ <!-- 鐢熸垚鏌ヨ鑼冨洿鍐呭疄闄呭嚭鐜拌繃鐨勬椂闂存 -->
+ SELECT DISTINCT
+ CASE #{type}
+ WHEN 'year' THEN DATE_FORMAT(d.create_time, '%Y')
+ WHEN 'quarter' THEN CONCAT(YEAR(d.create_time), '-Q', QUARTER(d.create_time))
+ WHEN 'month' THEN DATE_FORMAT(d.create_time, '%Y-%m')
+ WHEN 'week' THEN FLOOR(DATEDIFF(d.create_time, #{startFinishTime}) / 7) + 1
+ ELSE DATE_FORMAT(d.create_time, '%Y-%m-%d')
+ END AS period
+ FROM service_subtask_detail d
+ WHERE d.del_flag = 0
+ AND d.create_time >= #{startFinishTime}
+ AND d.create_time < #{endFinishTime}
+ ) p
+ CROSS JOIN (
+ <!-- 鎵�鏈夐渶瑕佸睍绀虹殑 dimension -->
+ SELECT DISTINCT dimension
+ FROM service_subtask_detail
+ WHERE del_flag = 0
+ AND dimension IS NOT NULL
+ ) dim
+ LEFT JOIN service_task t
+ ON t.service_type IN (6, 14)
+ AND t.del_flag = 0
+ LEFT JOIN service_subtask_detail d
+ ON d.taskid = t.taskid
+ AND d.del_flag = 0
+ AND d.dimension = dim.dimension
+ AND CASE #{type}
+ WHEN 'year' THEN DATE_FORMAT(d.create_time, '%Y')
+ WHEN 'quarter' THEN CONCAT(YEAR(d.create_time), '-Q', QUARTER(d.create_time))
+ WHEN 'month' THEN DATE_FORMAT(d.create_time, '%Y-%m')
+ WHEN 'week' THEN FLOOR(DATEDIFF(d.create_time, #{startFinishTime}) / 7) + 1
+ ELSE DATE_FORMAT(d.create_time, '%Y-%m-%d')
+ END = p.period
+ AND d.create_time >= #{startFinishTime}
+ AND d.create_time < #{endFinishTime}
+ GROUP BY p.period, dim.dimension
+ ORDER BY p.period, dim.dimension
+ </select>
+
+ <select id="sltdMydTotalByYQ" resultType="com.smartor.domain.DTO.MydTrendReqDTO">
+ SELECT p.period,
+ c.campusid,
+ IFNULL(ROUND(AVG(d.score), 2), 0) AS totalScore
+ FROM (
+ -- 鐢熸垚鏌ヨ鑼冨洿鍐呭疄闄呭嚭鐜拌繃鐨勬椂闂存
+ SELECT DISTINCT CASE #{type}
+ WHEN 'year' THEN DATE_FORMAT(d.create_time, '%Y')
+ WHEN 'quarter' THEN CONCAT(YEAR(d.create_time), '-Q', QUARTER(d.create_time))
+ WHEN 'month' THEN DATE_FORMAT(d.create_time, '%Y-%m')
+ WHEN 'week' THEN FLOOR(DATEDIFF(d.create_time, #{startFinishTime}) / 7) + 1
+ ELSE DATE_FORMAT(d.create_time, '%Y-%m-%d')
+ END AS period
+ FROM service_subtask_detail d
+ WHERE d.del_flag = 0
+ AND d.create_time >= #{startFinishTime}
+ AND d.create_time < #{endFinishTime}) p
+ CROSS JOIN (
+ -- 鎵�鏈夐渶瑕佸睍绀虹殑闄㈠尯
+ SELECT DISTINCT campusid
+ FROM service_task
+ WHERE service_type IN (6, 14)
+ AND del_flag = 0
+ AND campusid IS NOT NULL) c
+ LEFT JOIN service_task t
+ ON t.campusid = c.campusid
+ AND t.service_type IN (6, 14)
+ AND t.del_flag = 0
+ LEFT JOIN service_subtask_detail d
+ ON d.taskid = t.taskid
+ AND d.del_flag = 0
+ AND CASE #{type}
+ WHEN 'year' THEN DATE_FORMAT(d.create_time, '%Y')
+ WHEN 'quarter' THEN CONCAT(YEAR(d.create_time), '-Q', QUARTER(d.create_time))
+ WHEN 'month' THEN DATE_FORMAT(d.create_time, '%Y-%m')
+ WHEN 'week' THEN FLOOR(DATEDIFF(d.create_time, #{startFinishTime}) / 7) + 1
+ ELSE DATE_FORMAT(d.create_time, '%Y-%m-%d')
+ END = p.period
+ AND d.create_time >= #{startFinishTime}
+ AND d.create_time < #{endFinishTime}
+ GROUP BY p.period, c.campusid
+ ORDER BY p.period, c.campusid;
+ </select>
+
<!-- 浠诲姟缁勶紙appltype=5锛夋粴鍔ㄨ皟搴︾敤锛氭媺鏈疆鍏ㄩ噺 subtask锛屼綔涓轰笅涓�杞殑鍏嬮殕妯℃澘 -->
<select id="selectByScheduleIdAndLoop" resultMap="ServiceSubtaskResult">
<include refid="selectServiceSubtaskVo"/>
@@ -3162,6 +3282,12 @@
<if test="endOutHospTime != null">
AND date_format(s.endtime,'%y%m%d') <= date_format(#{endOutHospTime},'%y%m%d')
</if>
+ <if test="startFinishTime != null">
+ AND date_format(s.finishtime,'%y%m%d') >= date_format(#{startFinishTime},'%y%m%d')
+ </if>
+ <if test="endFinishTime != null">
+ AND date_format(s.finishtime,'%y%m%d') <= date_format(#{endFinishTime},'%y%m%d')
+ </if>
GROUP BY
t.taskid,
d.questiontext,
@@ -3240,12 +3366,24 @@
<if test="endOutHospTime != null">
AND date_format(s.endtime,'%y%m%d') <= date_format(#{endOutHospTime},'%y%m%d')
</if>
+ <if test="startFinishTime != null">
+ AND date_format(s.finishtime,'%y%m%d') >= date_format(#{startFinishTime},'%y%m%d')
+ </if>
+ <if test="endFinishTime != null">
+ AND date_format(s.finishtime,'%y%m%d') <= date_format(#{endFinishTime},'%y%m%d')
+ </if>
GROUP BY
t.taskid,
d.questiontext,
d.score,
d.targetvalue,
- d.asrtext
+ d.asrtext,
+ t.task_name,
+ s.deptcode,
+ s.deptname,
+ s.leavehospitaldistrictcode,
+ s.leavehospitaldistrictname,
+ d.value_type
ORDER BY
d.questiontext,
t.taskid
@@ -3253,50 +3391,61 @@
<select id="statQuestionOptionByKsOrBq" resultType="com.smartor.domain.DTO.QuestionCountKsOrBqDTO"
parameterType="com.smartor.domain.VO.QuestionCountKsOrBqVO">
- SELECT questiontext,
- d.taskid,
- s.deptname,
- d.create_time as createTime,
- s.leavehospitaldistrictname,
- d.targetvalue,
- d.asrtext,
- COUNT(d.asrtext) AS answercount,
- d.score AS singleScore
- FROM service_subtask_detail d,
- service_task s
- WHERE d.taskid = s.taskid
- AND deptname IS NOT NULL
- AND leavehospitaldistrictname IS NOT NULL
+ SELECT
+ s.deptname AS deptname,
+ s.leavehospitaldistrictname AS leavehospitaldistrictname,
+ d.questiontext AS questionText,
+ d.targetvalue AS targetvalue, -- 鎵�鏈夐�夐」鎷兼帴
+ d.asrtext AS asrtext, -- 鐢ㄦ埛瀹為檯閫変腑鐨勯�夐」
+ d.score AS singleScore -- 鍗曟潯璁板綍鐨勫垎鏁�
+ FROM service_subtask_detail d
+ JOIN service_subtask s ON d.sub_id = s.id
+ WHERE s.del_flag = 0
+ AND d.del_flag = 0
+ AND s.service_type IN ('6', '14')
+ <if test="taskTemplateid != null">
+ AND s.templateid = #{taskTemplateid}
+ </if>
<if test="endFinishTime != null">
AND d.create_time < #{endFinishTime}
</if>
<if test="startFinishTime != null">
- AND d.create_time >= #{startFinishTime}
+ AND d.create_time >= #{startFinishTime}
</if>
- <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
- AND leavehospitaldistrictcode IN
- <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
- separator=","
- close=")">
- #{leavehospitaldistrictcode}
- </foreach>
+ <if test="deptOrDistrict ==1">
+ <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
+ AND leavehospitaldistrictcode IN
+ <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
+ separator=","
+ close=")">
+ #{leavehospitaldistrictcode}
+ </foreach>
+ </if>
+ <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
+ AND deptcode IN
+ <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
+ close=")">
+ #{leaveldeptcode}
+ </foreach>
+ </if>
</if>
- <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
- AND deptcode IN
- <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
- close=")">
- #{leaveldeptcode}
- </foreach>
+ <if test="deptOrDistrict ==2">
+ <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
+ AND leavehospitaldistrictcode IN
+ <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
+ separator=","
+ close=")">
+ #{leavehospitaldistrictcode}
+ </foreach>
+ </if>
+ <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
+ OR deptcode IN
+ <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
+ close=")">
+ #{leaveldeptcode}
+ </foreach>
+ </if>
</if>
- GROUP BY d.questiontext,
- d.taskid,
- d.score,
- s.deptname,
- d.targetvalue,
- d.create_time,
- s.leavehospitaldistrictname,
- d.asrtext
- ORDER BY d.taskid
</select>
<select id="selectServiceSubtaskListDeadLine" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity"
@@ -3308,5 +3457,6 @@
and endtime
</select>
+
</mapper>
--
Gitblit v1.9.3