From 9fc52256df321e14a179811eda954491f5b71fea Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期五, 09 一月 2026 17:55:19 +0800
Subject: [PATCH] 【市一】问题统计接口调整
---
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 133 ++++++++++++++++++++++++++++++++++++++------
1 files changed, 115 insertions(+), 18 deletions(-)
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
index 8982e03..87c8287 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson2.JSON;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.ruoyi.common.core.redis.RedisCache;
@@ -17,6 +18,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.ListUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -68,6 +70,9 @@
@Autowired
private IvrTaskVisitResultMapper serviceTaskVisitResultMapper;
+
+ @Autowired
+ private SvyTaskTemplateScriptMapper svyTaskTemplateScriptMapper;
@Autowired
private IServiceTaskdeptService serviceTaskdeptService;
@@ -360,7 +365,7 @@
// return map;
// }
-
+
/**
* 缁熻浠诲姟鍚勭鐘舵�佺殑鏁伴噺锛堝凡浼樺寲锛�
* 浼樺寲璇存槑锛�
@@ -2197,8 +2202,18 @@
stringBuilder.append("鍏ラ櫌鍑嗗涓績鐢佃瘽锛�89975977銆傚叆闄㈠姙鐞嗛』鐭�:https://mp.weixin.qq.com/s/OCkotuRyQ8Ld2owFF0YErw");
String data = MessageSend.sendMsg(stringBuilder.toString(), "6", patArchiveSrmVO.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
- if (StringUtils.isNotEmpty(data) && data.contains("result=0")) {
- sendError.add(patArchiveSrmVO);
+ if (StringUtils.isNotEmpty(data)) {
+ ObjectMapper mapper = new ObjectMapper();
+ JsonNode root = null;
+ try {
+ root = mapper.readTree(data);
+ } catch (JsonProcessingException e) {
+ e.printStackTrace();
+ }
+ String status = root.get("result").get(0).get("status").asText();
+ if (status.equals("00000")) {
+ sendError.add(patArchiveSrmVO);
+ }
}
}
@@ -2689,10 +2704,18 @@
//婊℃剰搴�
List<ServiceSubtaskCount> joyCountTemp = joySubCount.stream().filter(r -> r.getSubTaskId().equals(serviceSubtask.getId())).collect(Collectors.toList());
if (joyCountTemp != null && joyCountTemp.size() > 0) {
- if (ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyCount()))
- serviceSubtaskStatistic.setJoyCount(serviceSubtaskStatistic.getJoyCount() + joyCountTemp.get(0).getJoyCount());
- if (ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyAllCount()))
- serviceSubtaskStatistic.setJoyAllCount(serviceSubtaskStatistic.getJoyAllCount() + joyCountTemp.get(0).getJoyAllCount());
+ Integer joyCount = joyCountTemp.get(0).getJoyCount();
+ Integer joyAllCount = joyCountTemp.get(0).getJoyAllCount();
+ if (ObjectUtils.isNotEmpty(joyCount)){
+ if(joyCount>0){
+ serviceSubtaskStatistic.setJoyCount(serviceSubtaskStatistic.getJoyCount() + joyCount);
+ }
+ }
+ if (ObjectUtils.isNotEmpty(joyAllCount)){
+ if(joyAllCount>0){
+ serviceSubtaskStatistic.setJoyAllCount(serviceSubtaskStatistic.getJoyAllCount() + joyAllCount);
+ }
+ }
}
//鏃犻渶闅忚浜烘
if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
@@ -2937,7 +2960,7 @@
* @return
*/
@Override
- @Cacheable(value = "sfStatisticsJoy", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskCountReq.toString().getBytes())", unless = "#result == null or #result.isEmpty()")
+// @Cacheable(value = "sfStatisticsJoy", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskCountReq.toString().getBytes())", unless = "#result == null or #result.isEmpty()")
public List<ServiceSubtaskStatistic> getSfStatisticsScript(ServiceSubtaskCountReq serviceSubtaskCountReq) {
log.error("getSfStatisticsScript鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq);
List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
@@ -3003,18 +3026,19 @@
BigDecimal mydtblsum = new BigDecimal(0);
//瀹屾垚姣斾緥
Double wcbl = null;
- if(ObjectUtils.isNotEmpty(serviceSubtaskStatistic.getJoyAllCount())){
- mydtblsum = new BigDecimal(serviceSubtaskStatistic.getJoyAllCount());
- }
-
+ //婊℃剰搴﹀~鎶ラ噺
if(ObjectUtils.isNotEmpty(serviceSubtaskStatistic.getJoyCount())){
- mydtmzlsum = new BigDecimal(serviceSubtaskStatistic.getJoyCount());
+ mydtblsum = new BigDecimal(serviceSubtaskStatistic.getJoyCount());
+ }
+ //婊℃剰搴﹂鐩�婚噺
+ if(ObjectUtils.isNotEmpty(serviceSubtaskStatistic.getJoyAllCount())){
+ mydtmzlsum = new BigDecimal(serviceSubtaskStatistic.getJoyAllCount());
}
if(mydtmzlsum.intValue() != 0){
wcbl = mydtblsum.divide(mydtmzlsum, 2, RoundingMode.HALF_UP).doubleValue();
}
- serviceSubtaskStatistic.setJoyAllCount(mydtmzlsum.intValue());
serviceSubtaskStatistic.setJoyCount(mydtblsum.intValue());
+ serviceSubtaskStatistic.setJoyAllCount(mydtmzlsum.intValue());
serviceSubtaskStatistic.setJoyTotal(wcbl);
}
}
@@ -3027,7 +3051,45 @@
Map<String, ServiceSubtaskScriptCount> result = new HashMap<>();
List<ServiceSubtaskScriptCount> allCounts = new ArrayList<>();
List<ServiceSubtaskScriptCount> allItemCounts = new ArrayList<>();
- if(ObjectUtils.isEmpty(serviceSubtaskCountReq.getType())){
+
+ List<ServiceSubtaskScriptCount> emptyCounts = svyTaskTemplateScriptMapper.getSvyTemplateScriptListForSubtaskCount(serviceSubtaskCountReq);
+ if(ObjectUtils.isNotEmpty(emptyCounts)){
+ Map<Long, List<ServiceSubtaskScriptCount>> emptyCountMap = emptyCounts.stream().collect(Collectors.groupingBy(ServiceSubtaskScriptCount::getScriptid));
+ for (Map.Entry<Long, List<ServiceSubtaskScriptCount>> entry : emptyCountMap.entrySet()) {
+ Long eScriptId = entry.getKey();
+ if(ObjectUtils.isNotEmpty(eScriptId)){
+ ServiceSubtaskScriptCount eCount = new ServiceSubtaskScriptCount();
+ List<ServiceSubtaskScriptCount> emptyCountList = entry.getValue();
+ Map<String, ServiceSubtaskScriptCount> eMap = new HashMap<>();
+ if(ObjectUtils.isNotEmpty(emptyCountList)){
+ eCount.setScriptid(eScriptId);
+ eCount.setScriptType(emptyCountList.get(0).getScriptType());
+ eCount.setScriptContent(emptyCountList.get(0).getScriptContent());
+ eCount.setTemplateid(emptyCountList.get(0).getTemplateid());
+ eCount.setChosenQuantity(0);
+ eCount.setChosenPercentage("0.0");
+ eCount.setCompletedQuantity(0);
+ eCount.setCompletedPercentage("0.0");
+ eCount.setAllQuantity(0);
+ //濉┖绌烘暟鎹�
+ for(ServiceSubtaskScriptCount empCount: emptyCountList){
+ empCount.setChosenQuantity(0);
+ empCount.setChosenPercentage("0.0");
+ empCount.setCompletedQuantity(0);
+ empCount.setCompletedPercentage("0.0");
+ empCount.setAllQuantity(0);
+ eMap.put(empCount.getOptionText(),eCount);
+ }
+ }
+ List<ServiceSubtaskScriptCount> empCountList = new ArrayList<>(eMap.values());
+ eCount.setDetails(empCountList);
+ result.put(eScriptId.toString(),eCount);
+ }
+ }
+ }
+
+ String type = serviceSubtaskCountReq.getType();
+ if(ObjectUtils.isEmpty(type)){
//鏌ヨ璇煶缁熻鏄庣粏
serviceSubtaskCountReq.setType("1");
List<ServiceSubtaskScriptCount> ivyCounts = serviceSubtaskMapper.getSfStatisticsScriptDetails(serviceSubtaskCountReq);
@@ -3047,16 +3109,49 @@
allItemCounts = serviceSubtaskMapper.getSfStatisticsScriptItemDetails(serviceSubtaskCountReq);
}
-
for(ServiceSubtaskScriptCount count : allCounts){
- List<ServiceSubtaskScriptCount> itemCounts = new ArrayList<>();
+ Map<String, ServiceSubtaskScriptCount> itemCountMap = new HashMap<>();
+ //闂嵎鍔犱笂绌虹櫧閫夐」
+ if(ObjectUtils.isNotEmpty(count.getTemplateid())
+ && ObjectUtils.isNotEmpty(count.getSubtaskType())
+ && count.getSubtaskType().equals("2")){
+ SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = new SvyTaskTemplateScriptVO();
+ svyTaskTemplateScriptVO.setId(count.getScriptid());
+ svyTaskTemplateScriptVO.setOrgid(serviceSubtaskCountReq.getOrgid());
+ SvyTaskTemplateScriptVO svyTaskTemplateScriptResultVo = svyTaskTemplateScriptService.selectInfoByCondition(svyTaskTemplateScriptVO);
+ if(ObjectUtils.isNotEmpty(svyTaskTemplateScriptResultVo)){
+ List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptResultVo.getSvyTaskTemplateTargetoptions();
+ if(ObjectUtils.isNotEmpty(svyTaskTemplateTargetoptions)){
+ //濉叆绌虹櫧淇℃伅
+ svyTaskTemplateTargetoptions.forEach(targetoption ->{
+ ServiceSubtaskScriptCount emptyCount = new ServiceSubtaskScriptCount();
+ emptyCount.setScriptid(count.getScriptid());
+ emptyCount.setScriptContent(count.getScriptContent());
+ emptyCount.setScriptType(count.getScriptType());
+ emptyCount.setSubtaskType(count.getSubtaskType());
+ emptyCount.setCompletedQuantity(count.getCompletedQuantity());
+ emptyCount.setAllQuantity(count.getAllQuantity());
+ emptyCount.setCompletedPercentage(count.getCompletedPercentage());
+ emptyCount.setTemplateid(count.getTemplateid());
+ emptyCount.setChosenQuantity(0);
+ emptyCount.setChosenPercentage("0.0");
+ emptyCount.setOptionText(targetoption.getOptioncontent());
+ itemCountMap.put(targetoption.getOptioncontent(),emptyCount);
+ });
+ }
+ }
+ }
allItemCounts.forEach(itemCount ->{
if(ObjectUtils.isNotEmpty(count.getScriptid()) && ObjectUtils.isNotEmpty(itemCount.getScriptid())){
if(count.getScriptid().equals(itemCount.getScriptid())){
//鏀惧叆缁熻淇℃伅
itemCount.setScriptContent(count.getScriptContent());
+ itemCount.setScriptType(count.getScriptType());
+ itemCount.setSubtaskType(count.getSubtaskType());
itemCount.setCompletedQuantity(count.getCompletedQuantity());
itemCount.setAllQuantity(count.getAllQuantity());
+ itemCount.setCompletedPercentage(count.getCompletedPercentage());
+ itemCount.setTemplateid(count.getTemplateid());
//璁$畻閫夋嫨姣斾緥
int chosenQuantity = ObjectUtils.isNotEmpty(itemCount.getChosenQuantity())?itemCount.getChosenQuantity():0;
int completedQuantity = itemCount.getCompletedQuantity();
@@ -3064,10 +3159,12 @@
BigDecimal chosenPercentage = (new BigDecimal(chosenQuantity)).divide(new BigDecimal(completedQuantity), 2, RoundingMode.HALF_UP);
itemCount.setChosenPercentage(chosenPercentage.toString());
}
- itemCounts.add(itemCount);
+ itemCountMap.put(itemCount.getOptionText(), itemCount);
}
}
});
+
+ List<ServiceSubtaskScriptCount> itemCounts = new ArrayList<>(itemCountMap.values());
count.setDetails(itemCounts);
result.put(count.getScriptid().toString(),count);
}
--
Gitblit v1.9.3