From a5482140ab58009b2453fe982da1fd9764a7a4ab Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期四, 08 一月 2026 15:32:41 +0800
Subject: [PATCH] 【市一】提供问题统计接口(通过scriptid)
---
smartor/src/main/java/com/smartor/service/ISvyLibTemplateScriptService.java | 11 +++
smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateScriptServiceImpl.java | 93 ++++++++++++++++++++++++++++++
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java | 1
smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java | 6 ++
smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml | 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTemplateScriptController.java | 13 ++++
ruoyi-admin/src/main/resources/application.yml | 2
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml | 4 +
8 files changed, 129 insertions(+), 3 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTemplateScriptController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTemplateScriptController.java
index 7aa12cd..f52c70e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTemplateScriptController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTemplateScriptController.java
@@ -8,8 +8,10 @@
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.smartor.domain.ServiceSubtaskCountReq;
import com.smartor.domain.SvyLibTemplateScript;
import com.smartor.service.ISvyLibTemplateScriptService;
+import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@@ -101,4 +103,15 @@
{
return toAjax(svyLibTemplateScriptService.deleteSvyLibTemplateScriptByTopicids(topicids));
}
+
+
+ /**
+ * 闂缁熻
+ */
+ @ApiOperation("闂缁熻")
+ @AddOrgId
+ @PostMapping(value = "/countPatByScript")
+ public AjaxResult countPatByScript(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
+ return success(svyLibTemplateScriptService.countPatByScript(serviceSubtaskCountReq));
+ }
}
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 0f69eba..79bbd46 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -74,7 +74,7 @@
# 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
basename: i18n/messages
profiles:
- active: ls
+ active: druid
# 鏂囦欢涓婁紶
servlet:
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
index 0ef55b5..23167f6 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
@@ -464,6 +464,7 @@
if (sysDeptTemp != null && sysDeptTemp.getDeptName() != null) {
row.setDeptId(sysDeptTemp.getDeptId());
count += sysDept2Mapper.updateDept(row);
+
} else {
count += sysDept2Mapper.insertDept(row);
}
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java
index 9ceb423..f6654bf 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java
@@ -78,6 +78,12 @@
private String orgid;
/**
+ * 闂缂栫爜-鏌ヨ浣跨敤锛屾敮鎸佸涓棶棰橈紝鐢ㄩ�楀彿鍖哄垎
+ */
+ @ApiModelProperty(value = "闂缂栫爜")
+ private String scriptids;
+
+ /**
* pageNum
*/
@ApiModelProperty("pageNum")
diff --git a/smartor/src/main/java/com/smartor/service/ISvyLibTemplateScriptService.java b/smartor/src/main/java/com/smartor/service/ISvyLibTemplateScriptService.java
index 5fa8498..20c730b 100644
--- a/smartor/src/main/java/com/smartor/service/ISvyLibTemplateScriptService.java
+++ b/smartor/src/main/java/com/smartor/service/ISvyLibTemplateScriptService.java
@@ -1,8 +1,11 @@
package com.smartor.service;
+import com.smartor.domain.ServiceSubtaskCountReq;
+import com.smartor.domain.ServiceSubtaskScriptCount;
import com.smartor.domain.SvyLibTemplateScript;
import java.util.List;
+import java.util.Map;
/**
* 妯℃澘闂嵎棰樼洰Service鎺ュ彛
@@ -59,4 +62,12 @@
* @return 缁撴灉
*/
public int deleteSvyLibTemplateScriptByTopicid(Long topicid);
+
+ /**
+ * 鏍规嵁闂id缁熻閫夐」
+ *
+ * @param serviceSubtaskCountReq
+ * @return 缁撴灉
+ */
+ public Map<Long, ServiceSubtaskScriptCount> countPatByScript(ServiceSubtaskCountReq serviceSubtaskCountReq);
}
diff --git a/smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateScriptServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateScriptServiceImpl.java
index ff066d2..0f9761f 100644
--- a/smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateScriptServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateScriptServiceImpl.java
@@ -1,13 +1,23 @@
package com.smartor.service.impl;
import com.ruoyi.common.utils.DateUtils;
-import com.smartor.domain.SvyLibTemplateScript;
+import com.smartor.domain.*;
+import com.smartor.mapper.ServiceSubtaskMapper;
import com.smartor.mapper.SvyLibTemplateScriptMapper;
import com.smartor.service.ISvyLibTemplateScriptService;
+import com.smartor.service.ISvyLibTemplateTargetoptionService;
+import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+
+import static net.sf.jsqlparser.parser.feature.Feature.values;
/**
* 妯℃澘闂嵎棰樼洰Service涓氬姟灞傚鐞�
@@ -18,8 +28,13 @@
@Service
public class SvyLibTemplateScriptServiceImpl implements ISvyLibTemplateScriptService
{
+ ISvyLibTemplateTargetoptionService svyLibTemplateTargetoptionService;
+
@Autowired
private SvyLibTemplateScriptMapper svyLibTemplateScriptMapper;
+
+ @Autowired
+ private ServiceSubtaskMapper serviceSubtaskMapper;
/**
* 鏌ヨ妯℃澘闂嵎棰樼洰
@@ -94,4 +109,80 @@
{
return svyLibTemplateScriptMapper.deleteSvyLibTemplateScriptByTopicid(topicid);
}
+
+ public Map<Long, ServiceSubtaskScriptCount> countPatByScript(ServiceSubtaskCountReq serviceSubtaskCountReq)
+ {
+ Map<Long, ServiceSubtaskScriptCount> result = new HashMap<>();
+ serviceSubtaskCountReq.setType("2");
+ List<ServiceSubtaskScriptCount> counts = serviceSubtaskMapper.getSfStatisticsScriptDetails(serviceSubtaskCountReq);
+ List<ServiceSubtaskScriptCount> itemCounts = serviceSubtaskMapper.getSfStatisticsScriptItemDetails(serviceSubtaskCountReq);
+
+ if(ObjectUtils.isNotEmpty(counts)){
+ for(ServiceSubtaskScriptCount count:counts){
+ Long scriptid = count.getScriptid();
+ //鎺掗櫎scriptid涓虹┖鐨勬儏鍐�
+ if(ObjectUtils.isEmpty(scriptid)){
+ continue;
+ }
+ Map<String, ServiceSubtaskScriptCount> itemCountMap = new HashMap<>();
+ //闂嵎鍔犱笂绌虹櫧閫夐」
+ if(ObjectUtils.isNotEmpty(count.getTemplateid())
+ && ObjectUtils.isNotEmpty(count.getSubtaskType())
+ && count.getSubtaskType().equals("2")){
+ SvyLibTemplateScript script = selectSvyLibTemplateScriptByTopicid(scriptid);
+ if(ObjectUtils.isNotEmpty(script)){
+ SvyLibTemplateTargetoption targetoptionVo = new SvyLibTemplateTargetoption();
+ targetoptionVo.setOrgid(script.getOrgid());
+ targetoptionVo.setScriptid(script.getScriptid());
+ List<SvyLibTemplateTargetoption> targetoptions
+ = svyLibTemplateTargetoptionService.selectSvyLibTemplateTargetoptionList(targetoptionVo);
+ if(ObjectUtils.isNotEmpty(targetoptions)){
+ //濉叆绌虹櫧淇℃伅
+ targetoptions.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);
+ });
+ }
+ }
+ }
+ itemCounts.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();
+ if(ObjectUtils.isNotEmpty(completedQuantity) && completedQuantity != 0){
+ BigDecimal chosenPercentage = (new BigDecimal(chosenQuantity)).divide(new BigDecimal(completedQuantity), 2, RoundingMode.HALF_UP);
+ itemCount.setChosenPercentage(chosenPercentage.toString());
+ }
+ itemCountMap.put(itemCount.getOptionText(), itemCount);
+ }
+ }
+ });
+ List<ServiceSubtaskScriptCount> details = new ArrayList<>(itemCountMap.values());
+ count.setDetails(details);
+ result.put(scriptid, count);
+ }
+ }
+ return result;
+ }
}
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml
index cef69bb..c2717fc 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml
@@ -418,7 +418,7 @@
FROM service_subtask_detail
JOIN service_task
ON service_task.taskid = service_subtask_detail.taskid
- JOIN ivr_liba_target ON ivr_liba_target.id = service_subtask_detail.targetid
+ JOIN ivr_liba_target ON ivr_liba_target.id = service_subtask_detail.targetid
WHERE
targetid = #{targetid}
GROUP BY service_task.taskid,
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 64351d6..ea1985a 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -1452,6 +1452,10 @@
<if test="configValue != null and configValue != ''">
AND ssd.categoryid IN (${configValue})
</if>
+ <!-- 閫傜敤鍗曟潯鏌ヨ -->
+ <if test="scriptids != null">
+ AND ssd.scriptid in (${scriptids})
+ </if>
group by ssd.scriptid) b
ON a.id = b.scriptid
</select>
--
Gitblit v1.9.3