liusheng
2025-03-19 d4e5b540d3600350c8c8519e2300f2c85d4186fb
代码提交
已添加1个文件
已修改9个文件
152 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetailTarget.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/SvyLibTemplateScriptVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskDetailMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IServiceSubtaskDetailService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskDetailServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java
@@ -143,4 +143,14 @@
        return toAjax(ServiceSubtaskDetailService.deleteServiceSubtaskDetailByCalldetailids(calldetailids));
    }
    /**
     * æŒ‡æ ‡ç»Ÿè®¡
     */
    //@PreAuthorize("@ss.hasPermi('smartor:ServiceSubtaskDetail:add')")
    @ApiOperation("指标统计")
    @GetMapping(value = "/countPatByTarget/{targetid}")
    public AjaxResult countPatByTarget(@PathVariable("targetid") Long targetid) {
        return success(ServiceSubtaskDetailService.countPatByTarget(targetid));
    }
}
ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java
@@ -86,7 +86,7 @@
        String tableOrAlias = ""; // ä¿å­˜ä¸»è¡¨åæˆ–别名
        if (matcher.find()) {
            // ä¼˜å…ˆåŒ¹é…ç¬¬ä¸€ä¸ªè¡¨åæˆ–别名
            tableOrAlias = matcher.group(3) != null ? matcher.group(3) : matcher.group(2);
            tableOrAlias = matcher.group(3) != null && !matcher.group(3).equals("JOIN") ? matcher.group(3) : matcher.group(2);
        }
        // å¦‚果找到表名或别名,为 WHERE å­å¥æ·»åŠ å‰ç¼€
smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetailTarget.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.smartor.domain;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * æŒ‡æ ‡ç»Ÿè®¡
 *
 * @author smartor
 * @date 2023-03-24
 */
@Data
@ApiModel(value = "ServiceSubtaskDetailTarget", description = "指标统计")
public class ServiceSubtaskDetailTarget extends BaseEntity {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "指标ID")
    private Long targetid;
    @ApiModelProperty(value = "任务ID")
    private Long taskid;
    @ApiModelProperty(value = "指标名称")
    private String targetname;
    @ApiModelProperty(value = "单项名称")
    private String matchedtext;
    @ApiModelProperty(value = "项出现次数 ")
    private Long count;
    @ApiModelProperty(value = "占比")
    private String percentage;
    @ApiModelProperty(value = "指标出现次数")
    private String targetShowCount;
}
smartor/src/main/java/com/smartor/domain/SvyLibTemplateScriptVO.java
@@ -29,6 +29,8 @@
    @ApiModelProperty("自增ID")
    private Long id;
    @ApiModelProperty(value = "对应的ivr_liba_target的主键")
    private Long targetid;
    /**
     * é€‰é¡¹åˆ†æ”¯æ ‡è¯†(0:无分支1:有分支)
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskDetailMapper.java
@@ -1,6 +1,7 @@
package com.smartor.mapper;
import com.smartor.domain.ServiceSubtaskDetail;
import com.smartor.domain.ServiceSubtaskDetailTarget;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@@ -62,4 +63,13 @@
     * @return ç»“æžœ
     */
    public int deleteServiceSubtaskDetailByCalldetailids(String[] calldetailids);
    /**
     * æŒ‡æ ‡ç»Ÿè®¡
     *
     * @param targetid æŒ‡æ ‡ç»Ÿè®¡
     * @return æŒ‡æ ‡ç»Ÿè®¡
     */
    public List<ServiceSubtaskDetailTarget> countPatByTarget(Long targetid);
}
smartor/src/main/java/com/smartor/service/IServiceSubtaskDetailService.java
@@ -1,6 +1,7 @@
package com.smartor.service;
import com.smartor.domain.ServiceSubtaskDetail;
import com.smartor.domain.ServiceSubtaskDetailTarget;
import java.util.List;
import java.util.Map;
@@ -68,4 +69,6 @@
     * @return ç»“æžœ
     */
    public int deleteServiceSubtaskDetailByCalldetailid(String subtaskDetailid);
    public List<ServiceSubtaskDetailTarget> countPatByTarget(Long targetid);
}
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -372,7 +372,7 @@
                        svyLibTemplateScriptVO.setScriptResultId(scriptResult.get("asrtextId"));
                    }
                }
                map.put("scriptResult", scriptInfoByCondition);
                map.put("scriptResult", svyLibTemplateScriptVOList);
                map.put("taskName", scriptInfoByCondition.get("taskName"));
                return map;
            } else if (scriptInfoByCondition.get("type").equals("3")) {
@@ -468,6 +468,7 @@
        serviceSubtaskDetailVO.setTargetid(svyTaskTemplateScriptVO.getTargetid() != null ? svyTaskTemplateScriptVO.getTargetid().intValue() : null);
        serviceSubtaskDetailVO.setPatid(Long.valueOf(patid));
        serviceSubtaskDetailVO.setScriptid(svyTaskTemplateScriptVO.getId());
        serviceSubtaskDetailVO.setTemplatequestionnum(StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptno()) ? Long.valueOf(svyTaskTemplateScriptVO.getScriptno()) : null);
        serviceSubtaskDetailVO.setValueType(svyTaskTemplateScriptVO.getScriptType());
        serviceSubtaskDetailVO.setComment(null);
        serviceSubtaskDetailVO.setCreateTime(new Date());
@@ -532,7 +533,8 @@
        serviceSubtaskDetailVO.setQuestiontext(ivrTaskTemplateScriptVO.getScriptContent());
        serviceSubtaskDetailVO.setTaskid(Long.valueOf(taskid));
        serviceSubtaskDetailVO.setPatid(Long.valueOf(patid));
        serviceSubtaskDetailVO.setScriptid(ivrTaskTemplateScriptVO.getId());
        serviceSubtaskDetailVO.setScriptid(ivrTaskTemplateScriptVO.getScriptID());
        serviceSubtaskDetailVO.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId());
        serviceSubtaskDetailVO.setValueType(ivrTaskTemplateScriptVO.getScriptType());
        serviceSubtaskDetailVO.setComment(null);
        serviceSubtaskDetailVO.setCreateTime(new Date());
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskDetailServiceImpl.java
@@ -4,10 +4,8 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.smartor.domain.ServiceSubtask;
import com.smartor.domain.*;
import com.smartor.domain.ServiceSubtaskDetail;
import com.smartor.domain.ServiceSubtaskDetail;
import com.smartor.domain.ServiceTask;
import com.smartor.mapper.ServiceSubtaskDetailMapper;
import com.smartor.mapper.ServiceSubtaskMapper;
import com.smartor.service.IServiceSubtaskDetailService;
@@ -17,6 +15,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
@@ -234,4 +234,49 @@
        return serviceTaskMap;
    }
    /*
     * @param targetid
     * @return æŒ‡æ ‡ç»Ÿè®¡
     */
    @Override
    public List<ServiceSubtaskDetailTarget> countPatByTarget(Long targetid) {
        List<ServiceSubtaskDetailTarget> serviceSubtaskDetailTargets = ServiceSubtaskDetailMapper.countPatByTarget(targetid);
        if (CollectionUtils.isNotEmpty(serviceSubtaskDetailTargets)) {
            Long totalCount = serviceSubtaskDetailTargets.stream().filter(target -> target.getMatchedtext() == null || target.getMatchedtext().isEmpty()).mapToLong(target -> target.getCount() != null ? target.getCount() : 0) // ç¡®ä¿ count ä¸º 0 å¦‚果为 null
                    .sum();
            Long allShowCount = 0L;
            // éåŽ†åˆ—è¡¨ï¼Œå°† matchedText ä¸º""赋值给 null
            for (ServiceSubtaskDetailTarget target : serviceSubtaskDetailTargets) {
                if (target.getMatchedtext() == null) {
                    target.setCount(target.getCount() != null ? target.getCount() + totalCount : totalCount);  // ç»™ matchedText ä¸º null çš„对象赋值
                }
                //允许null相加,不允许""相加
                if (target.getMatchedtext() == null || !target.getMatchedtext().isEmpty()) {
                    allShowCount = allShowCount + target.getCount();
                }
            }
            // ä½¿ç”¨è¿­ä»£å™¨åˆ é™¤ matchedText ä¸º "" çš„对象
            Iterator<ServiceSubtaskDetailTarget> iterator = serviceSubtaskDetailTargets.iterator();
            while (iterator.hasNext()) {
                ServiceSubtaskDetailTarget target = iterator.next();
                if (target.getMatchedtext() != null && target.getMatchedtext().isEmpty()) {
                    iterator.remove();  // åˆ é™¤ matchedText ä¸º "" çš„对象
                }
            }
            for (ServiceSubtaskDetailTarget target : serviceSubtaskDetailTargets) {
                target.setTargetShowCount(allShowCount.toString());
                BigDecimal count = new BigDecimal(target.getCount() != null ? target.getCount().toString() : "0");
                BigDecimal allCount = new BigDecimal(allShowCount.toString());
                target.setPercentage(count.divide(allCount, 2, RoundingMode.HALF_UP).toString());
            }
        }
        return serviceSubtaskDetailTargets;
    }
}
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -2201,12 +2201,13 @@
        serviceSubtaskDetail.setEndTime(System.currentTimeMillis());
        serviceSubtaskDetail.setSentEnd(1L);
        serviceSubtaskDetail.setTemplateid(ivrTaskTemplate.getId().toString());
        serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId());
        serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno());
        serviceSubtaskDetail.setQuestiontext(ivrTaskTemplateScriptVO.getIvrtext());
        serviceSubtaskDetail.setQuestionvoice(phoneCallReqYQVO.getRecordpath());
        serviceSubtaskDetail.setCategoryname(ivrTaskTemplateScriptVO.getScriptType());
        serviceSubtaskDetail.setTargetoptions(ivrTaskTemplateScriptVO.getTargetOptions());
        serviceSubtaskDetail.setExtemplateText(ivrTaskTemplateScriptVO.getExtemplateText());
        serviceSubtaskDetail.setScriptid(ivrTaskTemplateScriptVO.getId());
        int i = 1;
        for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) {
smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml
@@ -55,7 +55,13 @@
        <result property="guid" column="guid"/>
        <result property="extemplateText" column="extemplate_text"/>
    </resultMap>
    <resultMap type="com.smartor.domain.ServiceSubtaskDetailTarget" id="ServiceSubtaskDetailTargetResult">
        <result property="targetid" column="targetid"/>
        <result property="taskid" column="taskid"/>
        <result property="targetname" column="targetname"/>
        <result property="matchedtext" column="matchedtext"/>
        <result property="count" column="count"/>
    </resultMap>
    <sql id="selectServiceSubtaskDetailVo">
        select id,
               sub_id,
@@ -394,4 +400,19 @@
            #{id}
        </foreach>
    </delete>
    <select id="countPatByTarget" parameterType="Long" resultMap="ServiceSubtaskDetailTargetResult">
        SELECT
        service_task.taskid,
        service_subtask_detail.targetid,
        ivr_liba_target.targetname,
        service_subtask_detail.matchedtext,
        count(service_subtask_detail.matchedtext) count
        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
        WHERE
        targetid = #{targetid}
        GROUP BY matchedtext
    </select>
</mapper>