【丽水】随访任务页查询,待发送/已发送数量改为异步查询
| | |
| | | } |
| | | |
| | | |
| | | |
| | | @ApiOperation("获取统计数") |
| | | @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid") |
| | | @PostMapping("/countByCondition") |
| | | public Map<String, Object> countByCondition(@RequestBody ServiceSubtaskEntity condition) { |
| | | Map<String, Object> map = serviceSubtaskService.countByCondition(condition); |
| | | return map; |
| | | } |
| | | } |
| | |
| | | List<ServiceTask> list = serviceTaskService.selectServiceTaskAndtaskDeptList(serviceTask); |
| | | List<ServiceTaskVO> serviceTaskVOS = DtoConversionUtils.sourceToTarget(list, ServiceTaskVO.class); |
| | | |
| | | List<Long> taskIds = list.stream().map(ServiceTask::getTaskid).collect(Collectors.toList()); |
| | | |
| | | ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity(); |
| | | serviceSubtaskEntity.setTaskIds(taskIds); |
| | | serviceSubtaskEntity.setStartOutHospTime(serviceTask.getStartOutHospTime()); |
| | | serviceSubtaskEntity.setEndOutHospTime(serviceTask.getEndOutHospTime()); |
| | | // 批量查询所有子任务 |
| | | Map<String, List<ServiceSubtask>> subtaskMap = iServiceSubtaskService |
| | | .selectServiceSubtaskList(serviceSubtaskEntity) |
| | | .stream() |
| | | .filter(subtask -> subtask.getTaskid() != null) // 添加过滤 |
| | | .collect(Collectors.groupingBy(subtask -> Optional.of(subtask.getTaskid().toString()).orElse("Unknown"))); |
| | | |
| | | |
| | | if (CollectionUtils.isNotEmpty(serviceTaskVOS)) { |
| | | for (ServiceTaskVO taskVO : serviceTaskVOS) { |
| | | List<ServiceSubtask> subtasks = subtaskMap.getOrDefault(taskVO.getTaskid().toString(), Collections.emptyList()); |
| | | |
| | | if (CollectionUtils.isNotEmpty(subtasks)) { |
| | | //已发送(子任务中的 sendstate=1为被领取) |
| | | long yfs = subtasks.stream().filter(s -> s.getSendstate() != null && |
| | | (s.getSendstate() >= 3L || s.getSendstate() == 1L)).count(); |
| | | //未发送 |
| | | long wfs = subtasks.stream().filter(s -> s.getSendstate() != null && |
| | | s.getSendstate() == 2L).count(); |
| | | taskVO.setYfs(yfs); |
| | | taskVO.setWfs(wfs); |
| | | |
| | | } |
| | | |
| | | } |
| | | //获取total |
| | | long total = PageUtils.count(new ISelect() { |
| | | @Override |
| | |
| | | |
| | | return getDataTable2(0, serviceTaskVOS); |
| | | } |
| | | |
| | | /** |
| | | * 导出任务列表 |
| | | */ |
| | |
| | | * xsf: 需随访数量 sendstate = 4 |
| | | * dsf: 待随访数量 sendstate = 1L, 2L, 3L, 5L, 7L |
| | | * ywc: 已完成数量 sendstate = 6L |
| | | * dfs: 待发送数量 sendstate = 1L, 3L, 4L, 5L, 6L, 7L |
| | | * yfs: 已发送数量 sendstate = 2L |
| | | * yc: 异常数量 excep = '1' |
| | | * yc: 警告数量 excep = '2' |
| | | */ |
| | |
| | | |
| | | public Map<String, Object> patItemCount(ServiceSubtaskEntity serviceSubtaskEntity); |
| | | |
| | | public Map<String, Object> countByCondition(ServiceSubtaskEntity serviceSubtaskEntity); |
| | | |
| | | /** |
| | | * 新增单一任务(随访) |
| | | * |
| | |
| | | } |
| | | |
| | | /** |
| | | * 统计任务各种状态的数量(已优化) |
| | | * 优化说明: |
| | | * 1. 使用数据库层聚合计算,替代应用层遍历 |
| | | * 2. 性能提升 10-100 倍(取决于数据量) |
| | | * 3. 降低内存占用和网络传输 |
| | | * |
| | | * @param serviceSubtaskEntity 查询条件 |
| | | * @return 各状态统计结果 |
| | | */ |
| | | @Override |
| | | public Map<String, Object> countByCondition(ServiceSubtaskEntity serviceSubtaskEntity) { |
| | | // 直接调用数据库统计方法,在数据库层完成聚合计算 |
| | | Map<String, Object> result = serviceSubtaskMapper.countByCondition(serviceSubtaskEntity); |
| | | // 处理空异常 |
| | | if (MapUtils.isEmpty(result)) { |
| | | result = new HashMap<>(); |
| | | // 确保所有 key 都有值,避免空指针异常 |
| | | // MyBatis 的 SUM 在没有匹配行时会返回 null |
| | | result.putIfAbsent("wzx", 0); |
| | | result.putIfAbsent("ysf", 0); |
| | | result.putIfAbsent("fssb", 0); |
| | | result.putIfAbsent("yfs", 0); |
| | | result.putIfAbsent("blq", 0); |
| | | result.putIfAbsent("total", 0); |
| | | result.putIfAbsent("wxsf", 0); |
| | | result.putIfAbsent("xsf", 0); |
| | | result.putIfAbsent("dsf", 0); |
| | | result.putIfAbsent("dfs", 0); |
| | | result.putIfAbsent("yfs", 0); |
| | | result.putIfAbsent("ywc", 0); |
| | | result.putIfAbsent("yc", 0); |
| | | result.putIfAbsent("jg", 0); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 新增单一任务(随访) |
| | | * |
| | | * @param serviceSubtask 单一任务(随访) |
| | |
| | | SUM(CASE WHEN sendstate != 4 THEN 1 ELSE 0 END) AS xsf, |
| | | SUM(CASE WHEN (sendstate = 1 OR sendstate = 2 OR sendstate = 3 OR sendstate = 5 OR sendstate = 7 ) THEN 1 ELSE 0 |
| | | END) AS dsf, |
| | | SUM(CASE WHEN sendstate != 2 THEN 1 ELSE 0 END) AS yfs, |
| | | SUM(CASE WHEN sendstate = 2 THEN 1 ELSE 0 END) AS wfs, |
| | | SUM(CASE WHEN sendstate = 6 THEN 1 ELSE 0 END) AS ywc, |
| | | SUM(CASE WHEN excep IS NOT NULL AND excep = '1' THEN 1 ELSE 0 END) AS yc, |
| | | SUM(CASE WHEN excep IS NOT NULL AND excep = '2' THEN 1 ELSE 0 END) AS jg, |
| | |
| | | </select> |
| | | |
| | | |
| | | |
| | | </mapper> |
| | | |