| | |
| | | import com.ruoyi.quartz.task.RyTask; |
| | | import com.ruoyi.system.service.ISysConfigService; |
| | | import com.ruoyi.system.service.ISysUserDeptService; |
| | | import com.smartor.common.MydOptionRatioChartBuilder; |
| | | import com.ruoyi.satisfaction.api.SatisfactionExportBundle; |
| | | import com.ruoyi.satisfaction.api.SatisfactionFacade; |
| | | import com.smartor.domain.*; |
| | | import com.smartor.domain.DTO.QuestionResultDTO; |
| | | import com.smartor.domain.VO.*; |
| | | import com.smartor.domain.entity.ServiceSubtaskEntity; |
| | | import com.smartor.service.IServiceSubtaskRecordService; |
| | |
| | | |
| | | @Autowired |
| | | private IServiceSubtaskService serviceSubtaskService; |
| | | |
| | | /** |
| | | * 满意度模块对外门面(常驻 Bean)。 |
| | | * <p> |
| | | * 满意度相关数据(问题详情占比)只能通过它获取;满意度模块关闭时 |
| | | * 门面返回空结果并打 WARN,<b>不会</b>影响随访导出的其它内容。 |
| | | */ |
| | | @Autowired |
| | | private SatisfactionFacade satisfactionFacade; |
| | | |
| | | @Autowired |
| | | private IServiceTaskService serviceTaskService; |
| | |
| | | serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskEntity); |
| | | } |
| | | List<ServiceSubtaskExport> serviceSubtaskExports = null; |
| | | List<ServiceSubtaskDetailRatioExport> serviceSubtaskDetailRatioExports = null; |
| | | //满意度占比导出包:默认空包(没有可导出的患者时保持为空),有数据时由满意度门面填充 |
| | | SatisfactionExportBundle ratioBundle = SatisfactionExportBundle.empty(); |
| | | if (!CollectionUtils.isEmpty(serviceSubtaskList)) { |
| | | serviceSubtaskExports = DtoConversionUtils.sourceToTarget(serviceSubtaskList, ServiceSubtaskExport.class); |
| | | for (ServiceSubtaskExport serviceSubtaskExport : serviceSubtaskExports) { |
| | |
| | | } |
| | | } |
| | | //问题详情占比:只统计本次导出的这批患者,数量=选该选项的患者数,比例=占该题作答人数 |
| | | //满意度模块化后:只通过满意度模块暴露的 api 包取数(导出包 = 行 + 行类型 + 图表构建器); |
| | | //模块关闭(satisfaction.enabled=false)时门面返回空导出包,导出照常完成(只是没有占比 Sheet)。 |
| | | List<Long> subtaskIds = new ArrayList<>(); |
| | | for (ServiceSubtaskRes serviceSubtaskRes : serviceSubtaskList) { |
| | | if (serviceSubtaskRes.getId() != null) { |
| | | subtaskIds.add(serviceSubtaskRes.getId()); |
| | | } |
| | | } |
| | | serviceSubtaskDetailRatioExports = serviceSubtaskService.statMydQuestionOptionForExport(subtaskIds, null); |
| | | ratioBundle = satisfactionFacade.getQuestionOptionRatioExport(subtaskIds, null); |
| | | } |
| | | |
| | | |
| | | ExcelUtil<ServiceSubtaskExport> util = new ExcelUtil<ServiceSubtaskExport>(ServiceSubtaskExport.class); |
| | | //第三个Sheet:问题详情占比图表(按任务名称分组,一个任务一张柱状图) |
| | | util.exportExcelTwoSheetWithChart(response, serviceSubtaskExports, "患者随访信息表单", |
| | | serviceSubtaskDetailRatioExports, "问题详情占比", ServiceSubtaskDetailRatioExport.class, |
| | | new MydOptionRatioChartBuilder(serviceSubtaskDetailRatioExports)); |
| | | ratioBundle.getRows(), "问题详情占比", ratioBundle.getRowClass(), |
| | | ratioBundle.getChartBuilder()); |
| | | } |
| | | |
| | | /** |