diff --git a/backend/src/main/java/com/unis/crm/mapper/DashboardMapper.java b/backend/src/main/java/com/unis/crm/mapper/DashboardMapper.java index 6a00e1c3..ea9f93e2 100644 --- a/backend/src/main/java/com/unis/crm/mapper/DashboardMapper.java +++ b/backend/src/main/java/com/unis/crm/mapper/DashboardMapper.java @@ -17,7 +17,13 @@ public interface DashboardMapper { UserWelcomeDTO selectUserWelcome(@Param("userId") Long userId); @DataScope(tableAlias = "o", ownerColumn = "owner_user_id") - List selectOpportunityStats(@Param("userId") Long userId); + DashboardStatDTO selectMonthlyOpportunityStat(@Param("userId") Long userId); + + @DataScope(tableAlias = "o", ownerColumn = "owner_user_id") + DashboardStatDTO selectPushedOmsProjectsStat(@Param("userId") Long userId); + + @DataScope(tableAlias = "o", ownerColumn = "owner_user_id") + DashboardStatDTO selectMonthlyWonOpportunityStat(@Param("userId") Long userId); @DataScope(tableAlias = "c", ownerColumn = "owner_user_id") DashboardStatDTO selectMonthlyChannelStat(@Param("userId") Long userId); diff --git a/backend/src/main/java/com/unis/crm/service/impl/DashboardServiceImpl.java b/backend/src/main/java/com/unis/crm/service/impl/DashboardServiceImpl.java index 65383a52..e5dfb309 100644 --- a/backend/src/main/java/com/unis/crm/service/impl/DashboardServiceImpl.java +++ b/backend/src/main/java/com/unis/crm/service/impl/DashboardServiceImpl.java @@ -49,11 +49,12 @@ public class DashboardServiceImpl implements DashboardService { throw new BusinessException("未找到当前用户对应数据"); } - List stats = new ArrayList<>(dashboardMapper.selectOpportunityStats(userId)); + List stats = new ArrayList<>(); + addStatIfPresent(stats, dashboardMapper.selectMonthlyOpportunityStat(userId)); + addStatIfPresent(stats, dashboardMapper.selectPushedOmsProjectsStat(userId)); + addStatIfPresent(stats, dashboardMapper.selectMonthlyWonOpportunityStat(userId)); DashboardStatDTO monthlyChannelStat = dashboardMapper.selectMonthlyChannelStat(userId); - if (monthlyChannelStat != null) { - stats.add(monthlyChannelStat); - } + addStatIfPresent(stats, monthlyChannelStat); Set permissionCodes = loadPermissionCodes(userId); boolean todoCardVisible = permissionCodes.contains(DASHBOARD_TODO_CARD_VIEW_PERMISSION); boolean activityCardVisible = permissionCodes.contains(DASHBOARD_ACTIVITY_CARD_VIEW_PERMISSION); @@ -124,6 +125,12 @@ public class DashboardServiceImpl implements DashboardService { return activities; } + private void addStatIfPresent(List stats, DashboardStatDTO stat) { + if (stat != null) { + stats.add(stat); + } + } + private void enrichActivityTimeText(List activities) { if (activities == null || activities.isEmpty()) { return; diff --git a/backend/src/main/resources/mapper/dashboard/DashboardMapper.xml b/backend/src/main/resources/mapper/dashboard/DashboardMapper.xml index 060c294b..0db27aef 100644 --- a/backend/src/main/resources/mapper/dashboard/DashboardMapper.xml +++ b/backend/src/main/resources/mapper/dashboard/DashboardMapper.xml @@ -43,23 +43,23 @@ limit 1 - select '本月新增商机' as name, coalesce(round(sum(o.amount) / 10000.0, 2), 0)::numeric as value, 'monthlyOpportunities' as metricKey from crm_opportunity o where date_trunc('month', o.created_at) = date_trunc('month', now()) + - union all - + - union all - +