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,