diff --git a/rlz-ui/src/api/system/finance.js b/rlz-ui/src/api/system/finance.js index 5d028c3..38513cf 100644 --- a/rlz-ui/src/api/system/finance.js +++ b/rlz-ui/src/api/system/finance.js @@ -69,3 +69,12 @@ export function getJiaoyiDetail(id) { method: 'get' }) } + +// ========== 仪表盘 ========== + +export function getDashboard() { + return request({ + url: '/system/view/dashboard', + method: 'get' + }) +} diff --git a/rlz-ui/src/views/index.vue b/rlz-ui/src/views/index.vue index 118d8bd..aab2d64 100644 --- a/rlz-ui/src/views/index.vue +++ b/rlz-ui/src/views/index.vue @@ -1,121 +1,251 @@ - - - - - - 瑞来兹医助后台管理框架 - - 一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了瑞来兹医助管理系统,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。 - - - 当前版本: v{{ version }} - - - - - - - - - - - - - + + + + + + + + + {{ summary.totalOrders }} + 订单总数 + + + + + + + + {{ summary.todayOrders }} + 今日订单 + + + + + + + + {{ summary.totalRevenue }} + 总收入(元) + + + + + + + + {{ summary.pendingOrders }} + 待处理订单 + + + + + + + + + + 近30天订单/收入趋势 + + + + + + 订单状态分布 + + + + + + + + + + 医院服务量排名 (TOP10) + + + + + + 陪护师服务排名 (TOP10) + + + + + + + + + + diff --git a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/controller/OrderViewController.java b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/controller/OrderViewController.java index 94dce42..03da78d 100644 --- a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/controller/OrderViewController.java +++ b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/controller/OrderViewController.java @@ -137,6 +137,22 @@ public class OrderViewController extends BaseController return AjaxResult.success(result); } + /** + * 仪表盘统计数据 + */ + @GetMapping("/dashboard") + public AjaxResult dashboard() + { + java.util.Map result = new java.util.HashMap<>(); + result.put("orderStatusStats", iRlzOrderService.getOrderStatusStats()); + result.put("orderTypeStats", iRlzOrderService.getOrderTypeStats()); + result.put("dailyOrderTrend", iRlzOrderService.getDailyOrderTrend()); + result.put("dailyRevenueTrend", iRlzOrderService.getDailyRevenueTrend()); + result.put("hospitalRanking", iRlzOrderService.getHospitalRanking()); + result.put("caregiverRanking", iRlzOrderService.getCaregiverRanking()); + return AjaxResult.success(result); + } + /** * 获取VIEW详细信息 */ diff --git a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RlzOrderMapper.java b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RlzOrderMapper.java index b07b021..e63a1eb 100644 --- a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RlzOrderMapper.java +++ b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RlzOrderMapper.java @@ -63,4 +63,34 @@ public interface RlzOrderMapper * 收入统计 */ public List> getIncomeStats(java.util.Map params); + + /** + * 仪表盘-订单状态分布 + */ + public List> getOrderStatusStats(); + + /** + * 仪表盘-服务类型分布 + */ + public List> getOrderTypeStats(); + + /** + * 仪表盘-日订单趋势(近30天) + */ + public List> getDailyOrderTrend(); + + /** + * 仪表盘-日收入趋势(近30天) + */ + public List> getDailyRevenueTrend(); + + /** + * 仪表盘-医院服务量排名 + */ + public List> getHospitalRanking(); + + /** + * 仪表盘-陪护服务排名 + */ + public List> getCaregiverRanking(); } diff --git a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/IRlzOrderService.java b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/IRlzOrderService.java index 491907f..bccff88 100644 --- a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/IRlzOrderService.java +++ b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/IRlzOrderService.java @@ -78,4 +78,34 @@ public interface IRlzOrderService Long insertOrderPz(RlzOrder rlzOrder); List> getIncomeStats(java.util.Map params); + + /** + * 仪表盘-订单状态分布 + */ + List> getOrderStatusStats(); + + /** + * 仪表盘-服务类型分布 + */ + List> getOrderTypeStats(); + + /** + * 仪表盘-日订单趋势(近30天) + */ + List> getDailyOrderTrend(); + + /** + * 仪表盘-日收入趋势(近30天) + */ + List> getDailyRevenueTrend(); + + /** + * 仪表盘-医院服务量排名 + */ + List> getHospitalRanking(); + + /** + * 仪表盘-陪护服务排名 + */ + List> getCaregiverRanking(); } diff --git a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RlzOrderServiceImpl.java b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RlzOrderServiceImpl.java index 9100097..b517586 100644 --- a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RlzOrderServiceImpl.java +++ b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RlzOrderServiceImpl.java @@ -349,4 +349,34 @@ public String weixinPayOrderNext(String decryptOrder) { public List> getIncomeStats(java.util.Map params) { return rlzOrderMapper.getIncomeStats(params); } + + @Override + public List> getOrderStatusStats() { + return rlzOrderMapper.getOrderStatusStats(); + } + + @Override + public List> getOrderTypeStats() { + return rlzOrderMapper.getOrderTypeStats(); + } + + @Override + public List> getDailyOrderTrend() { + return rlzOrderMapper.getDailyOrderTrend(); + } + + @Override + public List> getDailyRevenueTrend() { + return rlzOrderMapper.getDailyRevenueTrend(); + } + + @Override + public List> getHospitalRanking() { + return rlzOrderMapper.getHospitalRanking(); + } + + @Override + public List> getCaregiverRanking() { + return rlzOrderMapper.getCaregiverRanking(); + } } diff --git a/rlz/ruoyi-system/src/main/resources/mapper/system/RlzOrderMapper.xml b/rlz/ruoyi-system/src/main/resources/mapper/system/RlzOrderMapper.xml index 61f36ae..7b91b32 100644 --- a/rlz/ruoyi-system/src/main/resources/mapper/system/RlzOrderMapper.xml +++ b/rlz/ruoyi-system/src/main/resources/mapper/system/RlzOrderMapper.xml @@ -244,6 +244,41 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + SELECT status, COUNT(*) as cnt FROM rlz_order GROUP BY status ORDER BY status + + + + SELECT COALESCE(NULLIF(yuliu10,''), '其他') as name, COUNT(*) as cnt + FROM rlz_order GROUP BY yuliu10 ORDER BY cnt DESC + + + + SELECT DATE(create_time) as date, COUNT(*) as cnt + FROM rlz_order WHERE create_time >= DATE_SUB(NOW(), INTERVAL 30 DAY) + GROUP BY DATE(create_time) ORDER BY date + + + + SELECT DATE(create_time) as date, + COALESCE(SUM(CASE WHEN status IN ('4','8') THEN CAST(COALESCE(NULLIF(jiesuan_money,''), yugu_money) AS DECIMAL(10,2)) ELSE 0 END), 0) as revenue + FROM rlz_order WHERE create_time >= DATE_SUB(NOW(), INTERVAL 30 DAY) + GROUP BY DATE(create_time) ORDER BY date + + + + SELECT COALESCE(h.hospitalname, '未指定') as name, COUNT(*) as cnt + FROM rlz_order o LEFT JOIN sys_hospital h ON o.hospital_id = h.id + GROUP BY o.hospital_id, h.hospitalname ORDER BY cnt DESC LIMIT 10 + + + + SELECT COALESCE(ub.nick_name, CONCAT('用户#', o.b_id)) as name, COUNT(*) as cnt + FROM rlz_order o LEFT JOIN sys_user ub ON o.b_id = ub.user_id + WHERE o.b_id IS NOT NULL + GROUP BY o.b_id, ub.nick_name ORDER BY cnt DESC LIMIT 10 + + SELECT
- 一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了瑞来兹医助管理系统,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。 -
- 当前版本: v{{ version }} -