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,33 @@ return success(serviceSubtaskService.getSfStatisticsJoydetails(serviceSubtaskCountReq)); } @ApiOperation("获取随访分类统计明细") @PostMapping("/getSfStatisticsCountDetails") public AjaxResult getSfStatisticsCountDetails(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) { if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() == 0 && serviceSubtaskCountReq.getDeptcodes().size() == 0) { return error("科室或病区不能为空"); } //复诊统计 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/mapper/ServiceSubtaskMapper.java
@@ -105,6 +105,21 @@ public List<ServiceSubtaskCount> getSfStatisticsJoydetails(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,8 @@ public List<ServiceStatisticsResponse> getServiceStatistics(ServiceStatisticsRequest request); 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
@@ -2928,6 +2928,58 @@ return serviceSubtaskMapper.getSfStatisticsJoydetails(serviceSubtaskCountReq); } @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