From 568b10829c1752e19c08150ba14caf054d6df6e3 Mon Sep 17 00:00:00 2001 From: chenqi Date: Thu, 18 Jun 2026 19:30:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(quality):=20=E6=B7=BB=E5=8A=A0=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E5=88=86=E6=9E=90=E6=8E=A7=E5=88=B6=E5=99=A8=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E6=95=B0=E6=8D=AE=E7=BB=9F=E8=AE=A1=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 QualityBusinessAnalyticsController 控制器类 - 实现分页查询业务分析数据接口 /page - 实现新增业务分析记录接口 /add - 实现业务统计数据汇总接口 /summary - 集成分页查询和条件筛选功能 - 添加事务管理确保数据一致性 --- .../QualityBusinessAnalyticsController.java | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/quality/controller/QualityBusinessAnalyticsController.java diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/quality/controller/QualityBusinessAnalyticsController.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/quality/controller/QualityBusinessAnalyticsController.java new file mode 100644 index 000000000..6ff685f8b --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/quality/controller/QualityBusinessAnalyticsController.java @@ -0,0 +1,62 @@ +package com.healthlink.his.web.quality.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.core.common.core.domain.R; +import com.healthlink.his.quality.domain.BusinessAnalytics; +import com.healthlink.his.quality.service.IBusinessAnalyticsService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; +import java.util.*; + +@RestController +@RequestMapping("/business-analytics") +@Slf4j +@AllArgsConstructor +public class QualityBusinessAnalyticsController { + + private final IBusinessAnalyticsService analyticsService; + + @GetMapping("/page") + public R getPage( + @RequestParam(value = "departmentName", required = false) String deptName, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.like(StringUtils.hasText(deptName), BusinessAnalytics::getDepartmentName, deptName) + .orderByDesc(BusinessAnalytics::getStatDate); + return R.ok(analyticsService.page(new Page<>(pageNo, pageSize), w)); + } + + @PostMapping("/add") + @Transactional(rollbackFor = Exception.class) + public R add(@RequestBody BusinessAnalytics analytics) { + analytics.setCreateTime(new Date()); + analyticsService.save(analytics); + return R.ok(analytics); + } + + @GetMapping("/summary") + public R getSummary() { + Map summary = new HashMap<>(); + List list = analyticsService.list(); + BigDecimal totalRevenue = BigDecimal.ZERO, totalCost = BigDecimal.ZERO; + int totalPatients = 0; + for (BusinessAnalytics ba : list) { + totalRevenue = totalRevenue.add(ba.getRevenue() != null ? ba.getRevenue() : BigDecimal.ZERO); + totalCost = totalCost.add(ba.getCost() != null ? ba.getCost() : BigDecimal.ZERO); + totalPatients += ba.getPatientCount() != null ? ba.getPatientCount() : 0; + } + summary.put("totalRecords", list.size()); + summary.put("totalRevenue", totalRevenue); + summary.put("totalCost", totalCost); + summary.put("totalProfit", totalRevenue.subtract(totalCost)); + summary.put("totalPatients", totalPatients); + return R.ok(summary); + } +}