陈昶聿
5 天以前 b44db60114b159cd438a0fe0259b9ddc94a16ba3
【市一】随访满意度明细调整
已修改6个文件
111 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskTemplateScriptController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskScriptCount.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/ISvyTaskTemplateScriptService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/SvyTaskTemplateScriptServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskTemplateScriptController.java
@@ -8,7 +8,9 @@
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.smartor.domain.SvyTaskTemplateScript;
import com.smartor.domain.SvyTaskTemplateScriptVO;
import com.smartor.service.ISvyTaskTemplateScriptService;
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.*;
@@ -91,4 +93,16 @@
    public AjaxResult remove(@PathVariable Long[] IDs) {
        return toAjax(svyTaskTemplateScriptService.deleteSvyTaskTemplateScriptByIDs(IDs));
    }
    /**
     * 查询模板详情根据条件
     *
     * @param svyTaskTemplateScriptVO
     * @return
     */
    @ApiOperation("查询模板详情根据条件")
    @PostMapping("/selectInfoByCondition")
    public AjaxResult selectInfoByCondition(@RequestBody SvyTaskTemplateScriptVO svyTaskTemplateScriptVO) {
        return AjaxResult.success(svyTaskTemplateScriptService.selectInfoByCondition(svyTaskTemplateScriptVO));
    }
}
smartor/src/main/java/com/smartor/domain/ServiceSubtaskScriptCount.java
@@ -1,5 +1,6 @@
package com.smartor.domain;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -43,6 +44,13 @@
    private String scriptType;
    /**
     * 任务类型(门诊,住院,复诊…)
     */
    @Excel(name = "任务类型:1,机器人语音(随访)  2,问卷;3,通知(宣教)")
    @ApiModelProperty(value = "任务类型:1,机器人语音(随访)  2,问卷;3,宣教; 4.通知)")
    private String subtaskType;
    /**
     * 已填写数量
     */
    @ApiModelProperty(value = "已填写数量")
smartor/src/main/java/com/smartor/service/ISvyTaskTemplateScriptService.java
@@ -1,6 +1,7 @@
package com.smartor.service;
import com.smartor.domain.SvyTaskTemplateScript;
import com.smartor.domain.SvyTaskTemplateScriptVO;
import java.util.List;
@@ -59,4 +60,12 @@
     * @return 结果
     */
    public int deleteSvyTaskTemplateScriptByID(Long ID);
    /**
     * 查询问卷任务模版问题话术库列表
     *
     * @param svyTaskTemplateScriptVO
     * @return 问卷任务模版问题话术库集合
     */
    public SvyTaskTemplateScriptVO selectInfoByCondition(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO);
}
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -3051,23 +3051,31 @@
        for(ServiceSubtaskScriptCount count : allCounts){
            Map<String, ServiceSubtaskScriptCount> itemCountMap = new HashMap<>();
            if(ObjectUtils.isNotEmpty(count.getTemplateid())){
                SvyTaskTemplateVO svyTaskTemplateVO = new SvyTaskTemplateVO();
                svyTaskTemplateVO.setId(count.getTemplateid());
                SvyTaskTemplateVO svyTaskTemplateResultVo = svyTaskTemplateService.selectInfoByCondition(svyTaskTemplateVO);
                if(ObjectUtils.isNotEmpty(svyTaskTemplateResultVo)){
                    List<SvyTaskTemplateScriptVO> templateScriptVOS = svyTaskTemplateResultVo.getSvyTaskTemplateScriptVOS();
                    if(ObjectUtils.isNotEmpty(templateScriptVOS)){
            //问卷加上空白选项
            if(ObjectUtils.isNotEmpty(count.getTemplateid())
                    && ObjectUtils.isNotEmpty(count.getSubtaskType())
                    && count.getSubtaskType().equals("2")){
                SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = new SvyTaskTemplateScriptVO();
                svyTaskTemplateScriptVO.setId(count.getScriptid());
                SvyTaskTemplateScriptVO svyTaskTemplateScriptResultVo = svyTaskTemplateScriptService.selectInfoByCondition(svyTaskTemplateScriptVO);
                if(ObjectUtils.isNotEmpty(svyTaskTemplateScriptResultVo)){
                    List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptResultVo.getSvyTaskTemplateTargetoptions();
                    if(ObjectUtils.isNotEmpty(svyTaskTemplateTargetoptions)){
                        //填入空白信息
                        templateScriptVOS.forEach(templateScriptVO ->{
                        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");
                            itemCountMap.put(templateScriptVO.getScriptResult(),emptyCount);
                            emptyCount.setOptionText(targetoption.getOptioncontent());
                            itemCountMap.put(targetoption.getOptioncontent(),emptyCount);
                        });
                    }
                }
@@ -3078,8 +3086,11 @@
                        //放入统计信息
                        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();
@@ -3087,7 +3098,7 @@
                            BigDecimal chosenPercentage = (new BigDecimal(chosenQuantity)).divide(new BigDecimal(completedQuantity), 2, RoundingMode.HALF_UP);
                            itemCount.setChosenPercentage(chosenPercentage.toString());
                        }
                        itemCountMap.put(count.getOptionText(), itemCount);
                        itemCountMap.put(itemCount.getOptionText(), itemCount);
                    }
                }
            });
smartor/src/main/java/com/smartor/service/impl/SvyTaskTemplateScriptServiceImpl.java
@@ -1,12 +1,22 @@
package com.smartor.service.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.common.utils.StringUtils;
import com.smartor.domain.IvrLibaTemplateScriptVO;
import com.smartor.domain.SvyTaskTemplateScript;
import com.smartor.domain.SvyTaskTemplateScriptVO;
import com.smartor.domain.SvyTaskTemplateTargetoption;
import com.smartor.mapper.SvyTaskTemplateScriptMapper;
import com.smartor.mapper.SvyTaskTemplateTargetoptionMapper;
import com.smartor.service.ISvyTaskTemplateScriptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
@@ -20,6 +30,9 @@
{
    @Autowired
    private SvyTaskTemplateScriptMapper svyTaskTemplateScriptMapper;
    @Autowired
    private SvyTaskTemplateTargetoptionMapper svyTaskTemplateTargetoptionMapper;
    /**
     * 查询问卷任务模版问题话术库
@@ -94,4 +107,35 @@
    {
        return svyTaskTemplateScriptMapper.deleteSvyTaskTemplateScriptByID(ID);
    }
    @Override
    public SvyTaskTemplateScriptVO selectInfoByCondition(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO){
        SvyTaskTemplateTargetoption svyTaskTemplateTargetoption = new SvyTaskTemplateTargetoption();
        svyTaskTemplateTargetoption.setScriptid(svyTaskTemplateScriptVO.getId());
        svyTaskTemplateTargetoption.setOrgid(svyTaskTemplateScriptVO.getOrgid());
        List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateTargetoptionMapper.selectSvyTaskTemplateTargetoptionList(svyTaskTemplateTargetoption);
        for (SvyTaskTemplateTargetoption svyTaskTemplateTargetoption1 : svyTaskTemplateTargetoptions) {
            ObjectMapper mapper = new ObjectMapper();
            if (!StringUtils.isEmpty(svyTaskTemplateTargetoption1.getDynamiccruxs())) {
                try {
                    svyTaskTemplateTargetoption1.setDynamiccruxs(mapper.readValue(svyTaskTemplateTargetoption1.getDynamiccruxsJson(), List.class));
                } catch (JsonProcessingException e) {
                    e.printStackTrace();
                }
            }
            if (!StringUtils.isEmpty(svyTaskTemplateTargetoption1.getNodynamiccruxs())) {
                try {
                    svyTaskTemplateTargetoption1.setNodynamiccruxs(mapper.readValue(svyTaskTemplateTargetoption1.getNodynamiccruxsJson(), List.class));
                } catch (JsonProcessingException e) {
                    e.printStackTrace();
                }
            }
        }
        //根据序号进行排序
//        Collections.sort(svyTaskTemplateTargetoptions, Comparator.comparing(SvyTaskTemplateTargetoption::getId));
        svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
        return svyTaskTemplateScriptVO;
    }
}
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -103,7 +103,9 @@
    <resultMap type="com.smartor.domain.ServiceSubtaskScriptCount" id="ServiceSubtaskScriptCountResult">
        <result property="scriptid" column="scriptid"/>
        <result property="templateid" column="templateid"/>
        <result property="scriptType" column="script_type"/>
        <result property="scriptContent" column="script_content"/>
        <result property="subtaskType" column="subtask_type"/>
        <result property="completedQuantity" column="completed_quantity"/>
        <result property="allQuantity" column="all_quantity"/>
        <result property="completedPercentage" column="completed_percentage"/>
@@ -1358,7 +1360,9 @@
        SELECT
        a.id as scriptid,
        a.templateid as templateid,
        a.script_type,
        a.script_content,
        b.subtask_type,
        b.completed_quantity,
        b.all_quantity,
        ROUND(b.completed_quantity/b.all_quantity,2) as completed_percentage
@@ -1372,6 +1376,7 @@
        INNER JOIN(
        SELECT
        ssd.scriptid AS scriptid,
        ss.type as subtask_type,
        SUM(CASE WHEN IFNULL(ssd.matchedtext,ssd.asrtext) IS NOT NULL
        AND IFNULL(ssd.matchedtext,ssd.asrtext) != '' THEN 1
        ELSE 0 END) AS completed_quantity,