| ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| smartor/src/main/java/com/smartor/domain/ServiceSubtaskCategoryCount.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| smartor/src/main/java/com/smartor/domain/ServiceSubtaskScriptCount.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -16,9 +16,11 @@ import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.DtoConversionUtils; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.reflect.ReflectUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.system.service.ISysConfigService; import com.smartor.domain.*; import com.smartor.mapper.PatMedInhospMapper; import com.smartor.mapper.PatMedOuthospMapper; @@ -66,6 +68,9 @@ @Autowired private IServiceSubtaskRecordService serviceSubtaskRecordService; @Autowired private ISysConfigService configService; @Value("${spring.profiles.active}") private String active; @@ -533,6 +538,62 @@ return success(serviceSubtaskService.getSfStatisticsJoydetails(serviceSubtaskCountReq)); } /** * è·åé访åç±»ç»è®¡æç» */ @ApiOperation("è·åé访åç±»ç»è®¡æç»") @PostMapping("/getSfStatisticsCount") public Map<String, Object> getSfStatisticsCount(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) { if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getServiceType())) { return error("æå¡ç±»åä¸è½ä¸ºç©º"); } PageUtils.startPageByPost(serviceSubtaskCountReq.getPageNum(), serviceSubtaskCountReq.getPageSize()); String configKey = serviceSubtaskCountReq.getConfigKey(); if(StringUtils.isNotEmpty(configKey)){ String configValue = configService.selectConfigByKey(configKey); serviceSubtaskCountReq.setConfigValue(configValue); if(StringUtils.isEmpty(configValue)){ String logInfo = "getSfStatisticsCount-åæ° " + configKey + " æªé ç½®, 请é 置好åéè¯"; log.error(logInfo); return error(logInfo); } }else { String logInfo = "getSfStatisticsCount-åæ°configKeyæªä¼ å ¥, 请é 置好åéè¯"; log.error(logInfo); return error(logInfo); } return success(serviceSubtaskService.getSfStatisticsScript(serviceSubtaskCountReq)); } @ApiOperation("è·åé访åç±»ç»è®¡æç»è¯¦æ ") @PostMapping("/getSfStatisticsCountDetails") public AjaxResult getSfStatisticsCountDetails(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) { if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() == 0 && serviceSubtaskCountReq.getDeptcodes().size() == 0) { return error("ç§å®¤æç åºä¸è½ä¸ºç©º"); } PageUtils.startPageByPost(serviceSubtaskCountReq.getPageNum(), serviceSubtaskCountReq.getPageSize()); //å¤è¯ç»è®¡ String configKey = serviceSubtaskCountReq.getConfigKey(); if(StringUtils.isNotEmpty(configKey)){ String configValue = configService.selectConfigByKey(configKey); if(StringUtils.isEmpty(configValue)){ String logInfo = "getSfStatisticsCountDetails-åæ° " + configKey + " æªé ç½®, 请é 置好åéè¯"; log.error(logInfo); return error(logInfo); } serviceSubtaskCountReq.setConfigValue(configValue); }else { String logInfo = "getSfStatisticsCountDetails-åæ°configKeyæªä¼ å ¥, 请é 置好åéè¯"; log.error(logInfo); return error(logInfo); } LoginUser loginUser = getLoginUser(); String orgid = loginUser.getUser().getOrgid(); serviceSubtaskCountReq.setOrgid(orgid); return success(serviceSubtaskService.getSfStatisticsScriptDetails(serviceSubtaskCountReq)); } /** * åéçä¿¡æ¨¡æ¿ smartor/src/main/java/com/smartor/domain/ServiceSubtaskCategoryCount.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,47 @@ package com.smartor.domain; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * åç§å®¤å®æéç»è®¡ç»æ * * @author ruoyi * @date 2024-02-02 */ @ApiModel(value = "ServiceSubtaskCount", description = "åç§å®¤å®æéç»è®¡ç»æ") @Data public class ServiceSubtaskCategoryCount { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "åä»»å¡ID") private Long subTaskId; @ApiModelProperty(value = "æå¡ç±»å") private Long serviceType; @ApiModelProperty(value = "å¹´æ") private String month; @ApiModelProperty(value = "æ°é") private Long count; @ApiModelProperty(value = "å¡«åæ°é") private Integer completedCount; @ApiModelProperty(value = "æææ°é") private Integer allCount; @ApiModelProperty(value = "填忝ä¾") private String completedPercent; @ApiModelProperty(value = "åç§°") private String name; public ServiceSubtaskCategoryCount(String month, Long serviceType, Long count) { this.serviceType = serviceType; this.month = month; this.count = count; } } smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java
@@ -1,6 +1,7 @@ package com.smartor.domain; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -61,5 +62,30 @@ @ApiModelProperty(value = "é®å·åç±»ç¼ç ") private Long svyCategoryid; @ApiModelProperty(value = "ä»»å¡ç±»åï¼1ï¼æºå¨äººè¯é³ 2ï¼é®å·ï¼3ï¼éç¥ï¼") private String type; } @ApiModelProperty(value = "æ¥è¯¢åæ° joyCount-满æåº¦ç»è®¡; returnVisitCount-å¤è¯ç»è®¡") private String configKey; @ApiModelProperty(value = "æ¥è¯¢åæ°å¯¹åºå¼ joyCount-满æåº¦ç»è®¡; returnVisitCount-å¤è¯ç»è®¡") private String configValue; /** * æºæç¼ç */ @ApiModelProperty("æºæç¼ç ") private String orgid; /** * pageNum */ @ApiModelProperty("pageNum") private Integer pageNum; /** * pageSize */ @ApiModelProperty("pageSize") private Integer pageSize; } smartor/src/main/java/com/smartor/domain/ServiceSubtaskScriptCount.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,76 @@ package com.smartor.domain; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.util.List; /** * åä»»å¡é®é¢é项ç»è®¡ç»æ * * @author éæ¶è¿ * @date 2025-12-31 */ @ApiModel(value = "ServiceSubtaskScriptCount", description = "åä»»å¡é®é¢é项ç»è®¡ç»æ") @Data public class ServiceSubtaskScriptCount implements Serializable { private static final long serialVersionUID = 1L; /** * é®é¢ID */ @ApiModelProperty(name = "é®é¢ID") private Long scriptid; /** * é®é¢å 容 */ @ApiModelProperty("é®é¢å 容") private String scriptContent; /** * 已填忰é */ @ApiModelProperty(value = "已填忰é") private Integer completedQuantity; /** * æææ°é */ @ApiModelProperty(value = "æææ°é") private Integer allQuantity; /** * å·²å¡«åæ¯ä¾ */ @ApiModelProperty(value = "已填忝ä¾") private String completedPercentage; /** * é®é¢é项 */ @ApiModelProperty(value = "é®é¢é项") private String optionText; /** * é®é¢éæ©æ° */ @ApiModelProperty(value = "é®é¢éæ©æ°") private Integer chosenQuantity; /** * éæ©æ¯ä¾ = (chosenQuantity / completedQuantity) */ @ApiModelProperty(value = "éæ©æ¯ä¾") private String chosenPercentage; /** * æç» */ @ApiModelProperty(value = "æç»") private List<ServiceSubtaskScriptCount> details; } smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
@@ -105,6 +105,28 @@ public List<ServiceSubtaskCount> getSfStatisticsJoydetails(ServiceSubtaskCountReq serviceSubtaskCountReq); /** * è·åé®é¢ç»è®¡ç»æï¼éè®¿ï¼ * * @return ç»æ */ public List<ServiceSubtaskCount> getSfStatisticsCategory(ServiceSubtaskCountReq serviceSubtaskCountReq); /** * è·åé®é¢ç»è®¡ç»æï¼éè®¿ï¼ * * @return ç»æ */ public List<ServiceSubtaskScriptCount> getSfStatisticsScriptDetails(ServiceSubtaskCountReq serviceSubtaskCountReq); /** * è·åé®é¢åçç»è®¡ç»æï¼éè®¿ï¼ * * @return ç»æ */ public List<ServiceSubtaskScriptCount> getSfStatisticsScriptItemDetails(ServiceSubtaskCountReq serviceSubtaskCountReq); public List<PatMedRes> getDeptRanking(PatMedReq patMedReq); public List<ServiceStatisticsResponse> getServiceStatistics(ServiceStatisticsRequest serviceStatisticsRequest); smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
@@ -139,6 +139,10 @@ public List<ServiceStatisticsResponse> getServiceStatistics(ServiceStatisticsRequest request); public List<ServiceSubtaskStatistic> getSfStatisticsScript(ServiceSubtaskCountReq serviceSubtaskCountReq); public Map<String, ServiceSubtaskScriptCount> getSfStatisticsScriptDetails(ServiceSubtaskCountReq serviceSubtaskCountReq); public List<PatArchiveSrmVO> sendMsgTemplate(List<PatArchiveSrmVO> patArchiveSrmVOS); public List<ServiceSubtaskDiagname> convertToDiagnameList(List<ServiceSubtask> subtaskList) ; smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -2368,6 +2368,8 @@ return serviceSubtaskStatistics; } /** * è·å满æåº¦é¢ç®æ»é * type : 1-ç§å®¤ 2ç åº @@ -2928,6 +2930,150 @@ return serviceSubtaskMapper.getSfStatisticsJoydetails(serviceSubtaskCountReq); } /** * è·åé访ç»è®¡æ¯ä¾ * * @param serviceSubtaskCountReq * @return */ @Override @Cacheable(value = "sfStatisticsJoy", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskCountReq.toString().getBytes())", unless = "#result == null or #result.isEmpty()") public List<ServiceSubtaskStatistic> getSfStatisticsScript(ServiceSubtaskCountReq serviceSubtaskCountReq) { log.error("getSfStatisticsScriptçå ¥å为ï¼{}", serviceSubtaskCountReq); List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>(); // æ ¹æ®æ¡ä»¶è¿è¡åç» Map<String, List<ServiceSubtask>> collect = new HashMap<>(); String orgid = null; if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes() != null && serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() > 0) { if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) { collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse("Unknown"))); } else { collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown"))); } } else if (serviceSubtaskCountReq.getDeptcodes() != null && serviceSubtaskCountReq.getDeptcodes().size() > 0) { if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) { collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse("Unknown"))); } else { collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse("Unknown"))); } } //è·åé访ç»è®¡ List<ServiceSubtaskCount> subCount = new ArrayList<>(); subCount = serviceSubtaskMapper.getSfStatisticsCategory(serviceSubtaskCountReq); for (List<ServiceSubtask> serviceSubtaskList : collect.values()) { if (CollectionUtils.isEmpty(serviceSubtaskList)) { continue; } ServiceSubtaskStatistic statistic = getStatisticJoy(serviceSubtaskList, subCount); //åæ¶ç ServiceSubtask ss = new ServiceSubtask(); orgid = serviceSubtaskList.get(0).getOrgid(); ss.setOrgid(orgid); // 妿æå»çç¼ç ï¼è®¾ç½®å»çç¼ç ç¨äºåæ¶çæ¥è¯¢ if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) { ss.setDrcode(serviceSubtaskList.get(0).getDrcode()); } else { if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())) { ss.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode()); } else if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getDeptcodes())) { ss.setDeptcode(serviceSubtaskList.get(0).getDeptcode()); } } ss.setStarttime(serviceSubtaskCountReq.getStartTime()); ss.setEndtime(serviceSubtaskCountReq.getEndTime()); if (serviceSubtaskCountReq.getEndTime() != null && new Date().before(serviceSubtaskCountReq.getEndTime())) { ss.setEndtime(new Date()); } Double jsRate = serviceSubtaskMapper.selectTimelyRate(ss); statistic.setRate(jsRate); if (ObjectUtils.isNotEmpty(statistic)) { serviceSubtaskStatistics.add(statistic); } } if (CollectionUtils.isNotEmpty(serviceSubtaskStatistics)) { for (ServiceSubtaskStatistic serviceSubtaskStatistic : serviceSubtaskStatistics) { //è·å满æåº¦é¢ç®æ»é BigDecimal mydtmzlsum = new BigDecimal(0); //è·å满æåº¦é¢ç®å¡«æ¥é BigDecimal mydtblsum = new BigDecimal(0); //宿æ¯ä¾ Double wcbl = null; if(ObjectUtils.isNotEmpty(serviceSubtaskStatistic.getJoyAllCount())){ mydtblsum = new BigDecimal(serviceSubtaskStatistic.getJoyAllCount()); } if(ObjectUtils.isNotEmpty(serviceSubtaskStatistic.getJoyCount())){ mydtmzlsum = new BigDecimal(serviceSubtaskStatistic.getJoyCount()); } if(mydtmzlsum.intValue() != 0){ wcbl = mydtblsum.divide(mydtmzlsum, 2, RoundingMode.HALF_UP).doubleValue(); } serviceSubtaskStatistic.setJoyAllCount(mydtmzlsum.intValue()); serviceSubtaskStatistic.setJoyCount(mydtblsum.intValue()); serviceSubtaskStatistic.setJoyTotal(wcbl); } } return serviceSubtaskStatistics; } @Override public Map<String, ServiceSubtaskScriptCount> getSfStatisticsScriptDetails(ServiceSubtaskCountReq serviceSubtaskCountReq) { Map<String, ServiceSubtaskScriptCount> result = new HashMap<>(); List<ServiceSubtaskScriptCount> allCounts = new ArrayList<>(); List<ServiceSubtaskScriptCount> allItemCounts = new ArrayList<>(); if(ObjectUtils.isEmpty(serviceSubtaskCountReq.getType())){ //æ¥è¯¢è¯é³ç»è®¡æç» serviceSubtaskCountReq.setType("1"); List<ServiceSubtaskScriptCount> ivyCounts = serviceSubtaskMapper.getSfStatisticsScriptDetails(serviceSubtaskCountReq); List<ServiceSubtaskScriptCount> ivyItemCounts = serviceSubtaskMapper.getSfStatisticsScriptItemDetails(serviceSubtaskCountReq); //æ¥è¯¢çä¿¡ç»è®¡æç» serviceSubtaskCountReq.setType("2"); List<ServiceSubtaskScriptCount> svyCounts = serviceSubtaskMapper.getSfStatisticsScriptDetails(serviceSubtaskCountReq); List<ServiceSubtaskScriptCount> svyItemCounts = serviceSubtaskMapper.getSfStatisticsScriptItemDetails(serviceSubtaskCountReq); allCounts.addAll(ivyCounts); allCounts.addAll(svyCounts); allItemCounts.addAll(ivyItemCounts); allItemCounts.addAll(svyItemCounts); }else { allCounts = serviceSubtaskMapper.getSfStatisticsScriptDetails(serviceSubtaskCountReq); allItemCounts = serviceSubtaskMapper.getSfStatisticsScriptItemDetails(serviceSubtaskCountReq); } for(ServiceSubtaskScriptCount count : allCounts){ List<ServiceSubtaskScriptCount> itemCounts = new ArrayList<>(); allItemCounts.forEach(itemCount ->{ if(ObjectUtils.isNotEmpty(count.getScriptid()) && ObjectUtils.isNotEmpty(itemCount.getScriptid())){ if(count.getScriptid().equals(itemCount.getScriptid())){ //æ¾å ¥ç»è®¡ä¿¡æ¯ itemCount.setScriptContent(count.getScriptContent()); itemCount.setCompletedQuantity(count.getCompletedQuantity()); itemCount.setAllQuantity(count.getAllQuantity()); //计ç®éæ©æ¯ä¾ 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()); } itemCounts.add(itemCount); } } }); count.setDetails(itemCounts); result.put(count.getScriptid().toString(),count); } return result; } /** * @param serviceSubtask smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -100,6 +100,17 @@ </resultMap> <resultMap type="com.smartor.domain.ServiceSubtaskScriptCount" id="ServiceSubtaskScriptCountResult"> <result property="scriptid" column="scriptid"/> <result property="scriptContent" column="script_content"/> <result property="completedQuantity" column="completed_quantity"/> <result property="allQuantity" column="all_quantity"/> <result property="completedPercentage" column="completed_percentage"/> <result property="optionText" column="option_text"/> <result property="chosenQuantity" column="chosen_quantity"/> <result property="chosenPercentage" column="chosen_percentage"/> </resultMap> <sql id="selectServiceSubtaskVo"> select id, hosp_type, @@ -1285,6 +1296,177 @@ )a1 </select> <select id="getSfStatisticsCategory" parameterType="com.smartor.domain.ServiceSubtaskCountReq" resultMap="ServiceSubtaskResult2"> SELECT a.sub_id as subTaskId, <if test="configValue != null and configValue != ''"> SUM(CASE WHEN a.categoryid IN(${configValue}) THEN 1 ELSE 0 END) AS joyAllCount, </if> COUNT(sub_id) joyCount FROM service_subtask_detail a INNER JOIN service_subtask t ON a.sub_id = t.id <where> a.del_flag=0 AND t.del_flag=0 <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND t.leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," close=")"> #{leavehospitaldistrictcode} </foreach> </if> <if test="deptcodes != null and deptcodes.size() > 0"> AND t.deptcode IN <foreach collection="deptcodes" item="deptcode" open="(" separator="," close=")"> #{deptcode} </foreach> </if> <if test="serviceType != null and serviceType.size() > 0"> AND t.service_type IN <foreach collection="serviceType" item="serviceType" open="(" separator="," close=")"> #{serviceType} </foreach> </if> <if test="startTime != null and endTime!=null"> AND date_format(t.visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d') AND date_format(t.visit_time,'%y%m%d') <= date_format(#{endTime},'%y%m%d') </if> <if test="visitDeptCode != null"> and t.visit_dept_code = #{visitDeptCode} </if> <if test="visitDeptName != null"> and t.visit_dept_name = #{visitDeptName} </if> <if test="isabnormal != null"> and t.isabnormal = #{isabnormal} </if> <!-- ç®ååªç»è®¡è¯é³åé®å· --> <if test="type != null"> and t.type = #{type} </if> </where> GROUP BY a.sub_id </select> <select id="getSfStatisticsScriptDetails" parameterType="com.smartor.domain.ServiceSubtaskCountReq" resultMap="ServiceSubtaskScriptCountResult"> SELECT a.id as scriptid, a.script_content, b.completed_quantity, b.all_quantity, ROUND(b.completed_quantity/b.all_quantity,2) as completed_percentage FROM <if test="type == 1"> ivr_task_template_script a </if> <if test="type == 2"> svy_task_template_script a </if> INNER JOIN( SELECT ssd.scriptid AS scriptid, 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, COUNT(*) AS all_quantity FROM service_subtask_detail ssd INNER JOIN service_subtask ss ON ssd.sub_id = ss.id WHERE ss.del_flag=0 AND ssd.del_flag = 0 <if test="orgid != null and orgid != ''"> AND ss.orgid = #{orgid} </if> <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND ss.leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," close=")"> #{leavehospitaldistrictcode} </foreach> </if> <if test="deptcodes != null and deptcodes.size() > 0"> AND ss.deptcode IN <foreach collection="deptcodes" item="deptcode" open="(" separator="," close=")"> #{deptcode} </foreach> </if> <if test="serviceType != null and serviceType.size() > 0"> AND ss.service_type IN <foreach collection="serviceType" item="serviceType" open="(" separator="," close=")"> #{serviceType} </foreach> </if> <if test="startTime != null and endTime!=null"> AND date_format(ss.visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d') AND date_format(ss.visit_time,'%y%m%d') <= date_format(#{endTime},'%y%m%d') </if> <!-- ç®ååªç»è®¡è¯é³åé®å· --> <if test="type != null"> and ss.type = #{type} </if> <if test="configValue != null and configValue != ''"> AND ssd.categoryid IN (${configValue}) </if> group by ssd.scriptid) b ON a.id = b.scriptid </select> <select id="getSfStatisticsScriptItemDetails" parameterType="com.smartor.domain.ServiceSubtaskCountReq" resultMap="ServiceSubtaskScriptCountResult"> SELECT ssd.scriptid, IFNULL(ssd.matchedtext,ssd.asrtext) AS option_text, COUNT(*) AS chosen_quantity FROM service_subtask_detail ssd INNER JOIN service_subtask ss ON ssd.sub_id = ss.id <where> ss.del_flag=0 AND IFNULL(ssd.matchedtext,ssd.asrtext) IS NOT NULL AND IFNULL(ssd.matchedtext,ssd.asrtext) != '' <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND ss.leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," close=")"> #{leavehospitaldistrictcode} </foreach> </if> <if test="deptcodes != null and deptcodes.size() > 0"> AND ss.deptcode IN <foreach collection="deptcodes" item="deptcode" open="(" separator="," close=")"> #{deptcode} </foreach> </if> <if test="serviceType != null and serviceType.size() > 0"> AND ss.service_type IN <foreach collection="serviceType" item="serviceType" open="(" separator="," close=")"> #{serviceType} </foreach> </if> <if test="startTime != null and endTime!=null"> AND date_format(ss.visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d') AND date_format(ss.visit_time,'%y%m%d') <= date_format(#{endTime},'%y%m%d') </if> <!-- ç®ååªç»è®¡è¯é³åé®å· --> <if test="type != null"> and ss.type = #{type} </if> <if test="configValue != null and configValue != ''"> AND ssd.categoryid IN (${configValue}) </if> </where> group by ssd.scriptid, IFNULL(ssd.matchedtext,ssd.asrtext) </select> <select id="getDataByTime" resultMap="ServiceSubtaskResult"> select id,