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/impl/SvyLibTemplateScriptServiceImpl.java |   93 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 92 insertions(+), 1 deletions(-)

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;
+    }
 }

--
Gitblit v1.9.3