From d5fc1e9eb3c3dc92f6a5e1d09d19f19070b4f5f4 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 10 四月 2026 18:03:14 +0800
Subject: [PATCH] 满意度保存BUG处理
---
smartor/src/main/java/com/smartor/service/IServiceSubtaskRecordService.java | 5 +
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java | 108 ++++++++++++++++++++---------------
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskRecordMapper.java | 5 +
smartor/src/main/resources/mapper/smartor/ServiceSubtaskRecordMapper.xml | 8 ++
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java | 6 +-
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml | 3
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskRecordServiceImpl.java | 12 ++++
7 files changed, 95 insertions(+), 52 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 f0d78ce..67406f3 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
@@ -96,12 +96,6 @@
@ApiOperation("鏌ヨ鎮h�呴殢璁夸俊鎭�")
@PostMapping("/patItem")
public Map<String, Object> patItem(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
-// if (serviceSubtaskVO.getLeavehospitaldistrictcodes() != null && serviceSubtaskVO.getLeavehospitaldistrictcodes().size() > 10) {
-// throw new BaseException("鐥呭尯鏌ヨ鏁伴噺涓嶈兘瓒呰繃10涓�");
-// }
-// if (serviceSubtaskVO.getLeaveldeptcodes() != null && serviceSubtaskVO.getLeaveldeptcodes().size() > 10) {
-// throw new BaseException("绉戝鏌ヨ鏁伴噺涓嶈兘瓒呰繃10涓�");
-// }
serviceSubtaskVO.setPageNum(PageUtils.getOffset(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize()));
List<ServiceSubtaskRes> serviceSubtaskList = null;
@@ -114,29 +108,42 @@
serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskEntity);
}
- for (ServiceSubtaskRes serviceSubtask : serviceSubtaskList) {
- ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
- serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
- serviceSubtaskRecord.setOrgid(serviceSubtask.getOrgid());
- if (ObjectUtils.isNotEmpty((serviceSubtask.getTaskid())))
- serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
- serviceSubtask.setServiceSubtaskRecordList(serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord));
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- if (ObjectUtils.isNotEmpty(serviceTask)) serviceSubtask.setPreachform(serviceTask.getPreachform());
+ // 鎵归噺鏌� subtask_record锛�1娆QL鏇夸唬寰幆涓璑娆″崟鐙煡
+ List<Long> subtaskIds = serviceSubtaskList.stream().map(ServiceSubtaskRes::getId).filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
+ Map<Long, List<ServiceSubtaskRecord>> recordMap = serviceSubtaskRecordService.selectRecordMapBySubtaskIds(subtaskIds);
+
+ for (ServiceSubtaskRes serviceSubtask : serviceSubtaskList) {
+ serviceSubtask.setServiceSubtaskRecordList(recordMap.getOrDefault(serviceSubtask.getId(), new ArrayList<>()));
}
-// patItemCount 璋冪敤redisCache璁板綍缁熻鏁版嵁
- Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskEntity);
+// patItemCount 璧癛edis缂撳瓨鐗堬紝閬垮厤姣忔鍏ㄨ〃鑱氬悎鎵弿
+ Map<String, Object> map = getPatItemCountWithCache(serviceSubtaskEntity);
map.put("serviceSubtaskList", serviceSubtaskList);
List<Map<String, Object>> list = new ArrayList<>();
list.add(map);
- serviceSubtaskEntity.setPageNum(null);
- serviceSubtaskEntity.setPageSize(null);
- List<ServiceSubtaskRes> serviceSubtasks = serviceSubtaskService.patItem(serviceSubtaskEntity);
+ // 鐩存帴浠庡凡鏈夎仛鍚堢粨鏋滄帹绠梩otal锛岄伩鍏嶅幓鎺夊垎椤靛悗鍐嶅叏閲忔煡涓�閬嶅ぇ琛�
+ long total = 0L;
+ try {
+ long wzx = map.get("wzx") != null ? ((Number) map.get("wzx")).longValue() : 0L;
+ long ysf = map.get("ysf") != null ? ((Number) map.get("ysf")).longValue() : 0L;
+ long dsf = map.get("dsf") != null ? ((Number) map.get("dsf")).longValue() : 0L;
+ long yc = map.get("yc") != null ? ((Number) map.get("yc")).longValue() : 0L;
+ long jg = map.get("jg") != null ? ((Number) map.get("jg")).longValue() : 0L;
+ long fssb = map.get("fssb") != null ? ((Number) map.get("fssb")).longValue() : 0L;
+ long yfs = map.get("yfs") != null ? ((Number) map.get("yfs")).longValue() : 0L;
+ long blq = map.get("blq") != null ? ((Number) map.get("blq")).longValue() : 0L;
+ total = wzx + ysf + dsf + yc + jg + fssb + yfs + blq;
+ } catch (Exception e) {
+ // 鍏滃簳锛氬叏閲廲ount
+ serviceSubtaskEntity.setPageNum(null);
+ serviceSubtaskEntity.setPageSize(null);
+ List<ServiceSubtask> serviceSubtasks = serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskEntity);
+ total = CollectionUtils.isNotEmpty(serviceSubtasks) ? serviceSubtasks.size() : 0L;
+ }
- return getDataTable3(CollectionUtils.isNotEmpty(serviceSubtasks) ? serviceSubtasks.size() : 0L, list);
+ return getDataTable3(total, list);
}
/**
@@ -151,42 +158,48 @@
ServiceSubtaskEntity serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
- // 閫氳繃redis璁板綍缁撴灉
- Map<String, Object> redisMap = new HashMap<>();
LoginUser loginUser = getLoginUser();
- SysUser user = null;
Long userId = null;
- if (ObjectUtils.isNotEmpty(loginUser)) {
- user = loginUser.getUser();
- if (ObjectUtils.isNotEmpty(user)) {
- userId = user.getUserId();
- }
+ if (ObjectUtils.isNotEmpty(loginUser) && ObjectUtils.isNotEmpty(loginUser.getUser())) {
+ userId = loginUser.getUser().getUserId();
}
if (ObjectUtils.isNotEmpty(userId)) {
- redisMap = redisCache.getCacheObject(userId + "patItemCount");
- //璁板綍鏄惁鏈夊彲鐢ㄧ紦瀛�
+ map = getPatItemCountWithCache(serviceSubtaskEntity);
+ }
+
+ map.put("code", HttpStatus.SUCCESS);
+ return map;
+ }
+
+ /**
+ * 甯edis缂撳瓨鐨勭粺璁℃煡璇紝渚沺atItem鍜宲atItemCount鍏辩敤锛屾潯浠朵笉鍙樻椂鐩存帴鍛戒腑缂撳瓨
+ */
+ private Map<String, Object> getPatItemCountWithCache(ServiceSubtaskEntity serviceSubtaskEntity) {
+ Map<String, Object> map = new HashMap<>();
+ LoginUser loginUser = getLoginUser();
+ Long userId = null;
+ if (ObjectUtils.isNotEmpty(loginUser) && ObjectUtils.isNotEmpty(loginUser.getUser())) {
+ userId = loginUser.getUser().getUserId();
+ }
+ if (ObjectUtils.isNotEmpty(userId)) {
+ Map<String, Object> redisMap = redisCache.getCacheObject(userId + "patItemCount");
Boolean redisFlag = false;
- ServiceSubtaskEntity oldCondition = null;
if (MapUtils.isNotEmpty(redisMap)) {
- oldCondition = (ServiceSubtaskEntity) redisMap.get("searchCondition");
- // 姣旇緝鏌ヨ鏉′欢鏄惁涓�鑷�
+ ServiceSubtaskEntity oldCondition = (ServiceSubtaskEntity) redisMap.get("searchCondition");
if (ObjectUtils.isNotEmpty(oldCondition) && isSameCondition(oldCondition, serviceSubtaskEntity)) {
- // 鏉′欢涓�鑷达紝浣跨敤缂撳瓨
redisFlag = true;
map = redisMap;
redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
}
}
-
- // 濡傛灉娌℃湁缂撳瓨鎴栬�呮潯浠朵笉涓�鑷达紝閲嶆柊鏌ヨ
if (!redisFlag) {
map = serviceSubtaskService.patItemCount(serviceSubtaskEntity);
map.put("searchCondition", serviceSubtaskEntity);
redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
}
+ } else {
+ map = serviceSubtaskService.patItemCount(serviceSubtaskEntity);
}
-
- map.put("code", HttpStatus.SUCCESS);
return map;
}
@@ -659,11 +672,12 @@
/**
* 缁熻浠诲姟鍚勭鐘舵�佺殑鏁伴噺锛堜紭鍖栫増锛�
+ *
* @return Map<String, Object> 鍖呭惈鍚勭姸鎬佺粺璁℃暟鎹�
- * pendingVisitCount: 褰撳墠鐧诲綍浜烘埅姝粖鏃ュ緟闅忚鎬婚噺
- * failedVisitCount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″け璐ユ�婚噺
- * abnormalVisitVount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″紓甯告�婚噺
- * allVisitCount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔℃�婚噺
+ * pendingVisitCount: 褰撳墠鐧诲綍浜烘埅姝粖鏃ュ緟闅忚鎬婚噺
+ * failedVisitCount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″け璐ユ�婚噺
+ * abnormalVisitVount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″紓甯告�婚噺
+ * allVisitCount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔℃�婚噺
*/
@ApiOperation("鑾峰彇褰撳墠鐢ㄦ埛闅忚鏁伴噺缁熻")
@PostMapping("/getCurrentUserServiceSubtaskCount")
@@ -687,12 +701,12 @@
entity.setOrgid(sysUser.getOrgid());
entity.setLeaveldeptcodes(deptCodes);
entity.setLeavehospitaldistrictcodes(wardCodes);
- if(ObjectUtils.isNotEmpty(sysUser)){
- if(!("admin").equals(sysUser.getUserName())){
- if(ObjectUtils.isNotEmpty(sysUserWards) && ObjectUtils.isNotEmpty(sysUserDepts)){
+ if (ObjectUtils.isNotEmpty(sysUser)) {
+ if (!("admin").equals(sysUser.getUserName())) {
+ if (ObjectUtils.isNotEmpty(sysUserWards) && ObjectUtils.isNotEmpty(sysUserDepts)) {
map = serviceSubtaskService.getCurrentUserServiceSubtaskCount(entity);
}
- }else {
+ } else {
map = serviceSubtaskService.getCurrentUserServiceSubtaskCount(entity);
}
}
diff --git a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskRecordMapper.java b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskRecordMapper.java
index 20ca630..27274b0 100644
--- a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskRecordMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskRecordMapper.java
@@ -30,6 +30,11 @@
public List<ServiceSubtaskRecord> selectServiceSubtaskRecordList(ServiceSubtaskRecord serviceSubtaskRecord);
/**
+ * 鎸� subtask_id 鍒楄〃鎵归噺鏌ヨ闅忚璁板綍锛屾秷闄+1
+ */
+ public List<ServiceSubtaskRecord> selectServiceSubtaskRecordBySubtaskIds(List<Long> subtaskIds);
+
+ /**
* 鏂板銆愯濉啓鍔熻兘鍚嶇О銆�
*
* @param serviceSubtaskRecord 銆愯濉啓鍔熻兘鍚嶇О銆�
diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskRecordService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskRecordService.java
index 40ebf08..3250aef 100644
--- a/smartor/src/main/java/com/smartor/service/IServiceSubtaskRecordService.java
+++ b/smartor/src/main/java/com/smartor/service/IServiceSubtaskRecordService.java
@@ -29,6 +29,11 @@
public List<ServiceSubtaskRecord> selectServiceSubtaskRecordList(ServiceSubtaskRecord serviceSubtaskRecord);
/**
+ * 鎸� subtask_id 鍒楄〃鎵归噺鏌ヨ锛岀粨鏋滅敤 Map<subtaskId, records> 缁撴瀯杩斿洖
+ */
+ public java.util.Map<Long, List<ServiceSubtaskRecord>> selectRecordMapBySubtaskIds(List<Long> subtaskIds);
+
+ /**
* 鏂板銆愯濉啓鍔熻兘鍚嶇О銆�
*
* @param serviceSubtaskRecord 銆愯濉啓鍔熻兘鍚嶇О銆�
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 8a012ba..dc66c55 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -1071,9 +1071,9 @@
}
} else {
//闈炲崟澶氶��
- if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getQuestionResult())) {
- serviceSubtaskDetailVO.setAsrtext(ivrTaskTemplateScriptVO.getQuestionResult().replaceAll("^\"|\"$", ""));
- serviceSubtaskDetailVO.setMatchedtext(ivrTaskTemplateScriptVO.getQuestionResult().replaceAll("^\"|\"$", ""));
+ if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getQuestionResult()) || StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext())) {
+ serviceSubtaskDetailVO.setAsrtext(ivrTaskTemplateScriptVO.getQuestionResult() != null ? ivrTaskTemplateScriptVO.getQuestionResult().replaceAll("^\"|\"$", "") : ivrTaskTemplateScriptVO.getIvrtext());
+ serviceSubtaskDetailVO.setMatchedtext(ivrTaskTemplateScriptVO.getQuestionResult() != null ? ivrTaskTemplateScriptVO.getQuestionResult().replaceAll("^\"|\"$", "") : ivrTaskTemplateScriptVO.getIvrtext());
serviceSubtaskDetailVO.setScore(ivrTaskTemplateScriptVO.getScore() != null ? ivrTaskTemplateScriptVO.getScore().toString() : "0");
nextScriptNo = ivrTaskTemplateScriptVO.getNextScriptno() == null ? null : ivrTaskTemplateScriptVO.getNextScriptno().toString();
if (ivrTaskTemplateScriptVO.getScore() != null) {
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskRecordServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskRecordServiceImpl.java
index fbffad8..42b33a7 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskRecordServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskRecordServiceImpl.java
@@ -4,10 +4,14 @@
import com.smartor.domain.ServiceSubtaskRecord;
import com.smartor.mapper.ServiceSubtaskRecordMapper;
import com.smartor.service.IServiceSubtaskRecordService;
+import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* 銆愯濉啓鍔熻兘鍚嶇О銆慡ervice涓氬姟灞傚鐞�
@@ -42,6 +46,14 @@
return serviceSubtaskRecordMapper.selectServiceSubtaskRecordList(serviceSubtaskRecord);
}
+ @Override
+ public Map<Long, List<ServiceSubtaskRecord>> selectRecordMapBySubtaskIds(List<Long> subtaskIds) {
+ if (CollectionUtils.isEmpty(subtaskIds)) return new java.util.HashMap<>();
+ List<ServiceSubtaskRecord> all = serviceSubtaskRecordMapper.selectServiceSubtaskRecordBySubtaskIds(subtaskIds);
+ if (CollectionUtils.isEmpty(all)) return new java.util.HashMap<>();
+ return all.stream().collect(Collectors.groupingBy(ServiceSubtaskRecord::getSubtaskId));
+ }
+
/**
* 鏂板銆愯濉啓鍔熻兘鍚嶇О銆�
*
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 6f1c4e8..1d0753e 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -263,8 +263,7 @@
<select id="selectServiceSubtaskList" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity"
resultMap="ServiceSubtaskResult">
<include refid="selectServiceSubtaskVo"/>
- where 1=1
- and del_flag = 0
+ where del_flag = 0
<if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
<if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if>
<if test="continueCount != null ">and continue_count = #{continueCount}</if>
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskRecordMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskRecordMapper.xml
index b4a019e..fd7291d 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskRecordMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskRecordMapper.xml
@@ -74,6 +74,14 @@
<if test="remark != null and remark != ''">and remark = #{remark}</if>
</select>
+ <select id="selectServiceSubtaskRecordBySubtaskIds" resultMap="ServiceSubtaskRecordResult">
+ <include refid="selectServiceSubtaskRecordVo"/>
+ where subtask_id IN
+ <foreach collection="list" item="subtaskId" open="(" separator="," close=")">
+ #{subtaskId}
+ </foreach>
+ </select>
+
<select id="selectServiceSubtaskRecordById" parameterType="Long" resultMap="ServiceSubtaskRecordResult">
<include refid="selectServiceSubtaskRecordVo"/>
where id = #{id}
--
Gitblit v1.9.3