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>