diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/dto/HomeStatisticsDto.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/dto/HomeStatisticsDto.java index 36a7b79b7..fbea3b94f 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/dto/HomeStatisticsDto.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/dto/HomeStatisticsDto.java @@ -39,6 +39,16 @@ public class HomeStatisticsDto { * 相对前日变化百分比 */ private Double revenueTrend; + + /** + * 今日收入金额(数值,单位:元) + */ + private java.math.BigDecimal todayRevenueAmount; + + /** + * 昨日收入金额(数值,单位:元) + */ + private java.math.BigDecimal yesterdayRevenueAmount; /** * 今日预约数量 diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/service/impl/HomeStatisticsServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/service/impl/HomeStatisticsServiceImpl.java index c46a6c878..59b984222 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/service/impl/HomeStatisticsServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/service/impl/HomeStatisticsServiceImpl.java @@ -13,7 +13,14 @@ import com.openhis.administration.service.IPatientService; import com.openhis.administration.service.IPractitionerService; import com.openhis.common.enums.ParticipantType; import com.openhis.web.dto.HomeStatisticsDto; +import com.openhis.financial.domain.PaymentReconciliation; +import com.openhis.financial.service.IPaymentReconciliationService; +import com.openhis.common.enums.PaymentStatus; import com.openhis.web.service.IHomeStatisticsService; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; import com.openhis.web.patientmanage.mapper.PatientManageMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -46,6 +53,9 @@ public class HomeStatisticsServiceImpl implements IHomeStatisticsService { @Autowired private IPatientService patientService; + @Autowired + private IPaymentReconciliationService paymentReconciliationService; + /** * 获取首页统计数据 * @@ -105,10 +115,17 @@ public class HomeStatisticsServiceImpl implements IHomeStatisticsService { double patientTrend = calculateTrend(totalPatients, yesterdayPatients); statistics.setPatientTrend(patientTrend); - // 今日收入和预约等其他统计(暂时设为0,后续从相应表查询) - statistics.setTodayRevenue("¥ 0"); - statistics.setYesterdayRevenue("¥ 0"); - statistics.setRevenueTrend(0.0); + // 查询今日收入 + BigDecimal todayRevenue = queryRevenueByDate(new Date()); + BigDecimal yesterdayRevenue = queryRevenueByDate(getYesterday()); + java.text.DecimalFormat df = new java.text.DecimalFormat("#,##0.00"); + statistics.setTodayRevenue("¥ " + df.format(todayRevenue)); + statistics.setYesterdayRevenue("¥ " + df.format(yesterdayRevenue)); + statistics.setTodayRevenueAmount(todayRevenue); + statistics.setYesterdayRevenueAmount(yesterdayRevenue); + statistics.setRevenueTrend(calculateTrend(todayRevenue.doubleValue(), yesterdayRevenue.doubleValue())); + + // 今日预约和待审核(暂时设为0,后续实现) statistics.setTodayAppointments(0); statistics.setYesterdayAppointments(0); statistics.setAppointmentTrend(0.0); @@ -117,6 +134,49 @@ public class HomeStatisticsServiceImpl implements IHomeStatisticsService { return statistics; } + /** + * 查询指定日期的收款总额(状态为支付成功且未全部退款) + * + * @param date 日期 + * @return 收款总额 + */ + private BigDecimal queryRevenueByDate(Date date) { + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + Date dayStart = cal.getTime(); + + cal.add(Calendar.DAY_OF_MONTH, 1); + Date dayEnd = cal.getTime(); + + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.ge(PaymentReconciliation::getBillDate, dayStart) + .lt(PaymentReconciliation::getBillDate, dayEnd) + .eq(PaymentReconciliation::getStatusEnum, PaymentStatus.SUCCESS.getValue()) + .eq(PaymentReconciliation::getDeleteFlag, "0") + .select(PaymentReconciliation::getDisplayAmount); + + java.util.List list = paymentReconciliationService.list(query); + if (list == null || list.isEmpty()) { + return BigDecimal.ZERO; + } + return list.stream() + .map(p -> p.getDisplayAmount() != null ? p.getDisplayAmount() : BigDecimal.ZERO) + .reduce(BigDecimal.ZERO, BigDecimal::add); + } + + /** + * 获取昨天的日期 + */ + private Date getYesterday() { + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.DAY_OF_MONTH, -1); + return cal.getTime(); + } + /** * 计算相对前日的百分比变化 * diff --git a/openhis-server-new/openhis-application/src/main/resources/application-dev.yml.bak b/openhis-server-new/openhis-application/src/main/resources/application-dev.yml.bak new file mode 100644 index 000000000..bf984f0d4 --- /dev/null +++ b/openhis-server-new/openhis-application/src/main/resources/application-dev.yml.bak @@ -0,0 +1,93 @@ +# 数据源配置 +spring: + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driverClassName: org.postgresql.Driver + druid: + # 主库数据源 + master: + url: jdbc:postgresql://192.168.110.252:15432/postgresql?currentSchema=hisdev&characterEncoding=UTF-8&client_encoding=UTF-8 + username: postgresql + password: Jchl1528 # 请替换为实际的数据库密码 + # 从库数据源 + slave: + # 从数据源开关/默认关闭 + enabled: false + url: + username: + password: + # 初始连接数 + initialSize: 5 + # 最小连接池数量 + minIdle: 10 + # 最大连接池数量 + maxActive: 20 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置连接超时时间 + connectTimeout: 30000 + # 配置网络超时时间 + socketTimeout: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 300000 + # 配置一个连接在池中最大生存的时间,单位是毫秒 + maxEvictableIdleTimeMillis: 900000 + # 配置检测连接是否有效 + validationQuery: SELECT 1 + testWhileIdle: true + testOnBorrow: true # 改为true以确保连接有效 + testOnReturn: false + # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 + filters: stat,wall,slf4j + webStatFilter: + enabled: true + statViewServlet: + enabled: true + # 设置白名单,不填则允许所有访问 + allow: + url-pattern: /druid/* + # 控制台管理用户名和密码 + login-username: openhis + login-password: 123456 + filter: + stat: + enabled: true + # 慢SQL记录 + log-slow-sql: true + slow-sql-millis: 1000 + merge-sql: true + wall: + config: + multi-statement-allow: true + # redis 配置 + redis: + # 地址 + host: 192.168.110.252 + # 端口,默认为6379 + port: 6379 + # 数据库索引 + database: 1 + # 密码 + password: Jchl1528 + # 连接超时时间 + timeout: 10s + lettuce: + pool: + # 连接池中的最小空闲连接 + min-idle: 0 + # 连接池中的最大空闲连接 + max-idle: 8 + # 连接池的最大数据库连接数 + max-active: 8 + # #连接池最大阻塞等待时间(使用负值表示没有限制) + max-wait: -1ms + +# 服务器配置 +server: + # 服务器的HTTP端口,默认为18080 + port: 18080 + servlet: + # 应用的访问路径 + context-path: /openhis \ No newline at end of file diff --git a/openhis-ui-vue3/src/views/index.vue b/openhis-ui-vue3/src/views/index.vue index a5b96c628..bf2e021eb 100755 --- a/openhis-ui-vue3/src/views/index.vue +++ b/openhis-ui-vue3/src/views/index.vue @@ -2,6 +2,10 @@
+
+
+
+

{{ getGreeting() }},{{ userStore.nickName || userStore.name }}

@@ -14,6 +18,8 @@ {{ getRoleName(userStore.roles[0]) }} @@ -32,7 +38,7 @@ >
@@ -50,7 +56,7 @@ class="stat-trend" > - {{ stat.trend > 0 ? '↑' : '↓' }} {{ Math.abs(stat.trend) }}% + {{ stat.trend > 0 ? '↑' : '↓' }} {{ Math.abs(stat.trend).toFixed(2) }}% 较昨日
@@ -86,7 +92,7 @@
@@ -97,111 +103,114 @@
- -
-
-

待办事项

- + +
+ +
+
+

待办事项

+ + + 查看全部 + + +
+
+
+
+ + + +
+
+
+ {{ todo.title }} +
+
+ {{ todo.desc }} +
+
+
+ {{ todo.time }} +
+
+
+ +
+
+
+ + +
+
+

今日日程

- 查看全部 + 管理日程 - -
-
-
-
- - - -
-
-
- {{ todo.title }} -
-
- {{ todo.desc }} -
-
-
- {{ todo.time }} -
-
- -
-
-
- - -
-
-

今日日程

- - 管理日程 - -
-
-
-
- {{ item.time }} -
-
-
- {{ item.title }} -
-
- - {{ item.location }} -
-
- +
- {{ item.tag }} - -
-
- +
+ {{ item.time }} +
+
+
+ {{ item.title }} +
+
+ + {{ item.location }} +
+
+ + {{ item.tag }} + +
+
+ +
- - - + \ No newline at end of file