陈昶聿
2 天以前 a5482140ab58009b2453fe982da1fd9764a7a4ab
【市一】提供问题统计接口(通过scriptid)
已修改8个文件
130 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTemplateScriptController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/ISvyLibTemplateScriptService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateScriptServiceImpl.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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));
    }
}
ruoyi-admin/src/main/resources/application.yml
@@ -74,7 +74,7 @@
    # 国际化资源文件路径
    basename: i18n/messages
  profiles:
    active: ls
    active: druid
  # 文件上传
  servlet:
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);
            }
smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java
@@ -78,6 +78,12 @@
    private String orgid;
    /**
     * 问题编码-查询使用,支持多个问题,用逗号区分
     */
    @ApiModelProperty(value = "问题编码")
    private String scriptids;
    /**
     * pageNum
     */
    @ApiModelProperty("pageNum")
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);
}
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;
    }
}
smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml
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>