首页统计金额数据权限问题

main
kangwenjing 2026-04-20 10:13:41 +08:00
parent 3db2358f07
commit 25787cbabe
3 changed files with 23 additions and 10 deletions

View File

@ -17,7 +17,13 @@ public interface DashboardMapper {
UserWelcomeDTO selectUserWelcome(@Param("userId") Long userId); UserWelcomeDTO selectUserWelcome(@Param("userId") Long userId);
@DataScope(tableAlias = "o", ownerColumn = "owner_user_id") @DataScope(tableAlias = "o", ownerColumn = "owner_user_id")
List<DashboardStatDTO> 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") @DataScope(tableAlias = "c", ownerColumn = "owner_user_id")
DashboardStatDTO selectMonthlyChannelStat(@Param("userId") Long userId); DashboardStatDTO selectMonthlyChannelStat(@Param("userId") Long userId);

View File

@ -49,11 +49,12 @@ public class DashboardServiceImpl implements DashboardService {
throw new BusinessException("未找到当前用户对应数据"); throw new BusinessException("未找到当前用户对应数据");
} }
List<DashboardStatDTO> stats = new ArrayList<>(dashboardMapper.selectOpportunityStats(userId)); List<DashboardStatDTO> stats = new ArrayList<>();
addStatIfPresent(stats, dashboardMapper.selectMonthlyOpportunityStat(userId));
addStatIfPresent(stats, dashboardMapper.selectPushedOmsProjectsStat(userId));
addStatIfPresent(stats, dashboardMapper.selectMonthlyWonOpportunityStat(userId));
DashboardStatDTO monthlyChannelStat = dashboardMapper.selectMonthlyChannelStat(userId); DashboardStatDTO monthlyChannelStat = dashboardMapper.selectMonthlyChannelStat(userId);
if (monthlyChannelStat != null) { addStatIfPresent(stats, monthlyChannelStat);
stats.add(monthlyChannelStat);
}
Set<String> permissionCodes = loadPermissionCodes(userId); Set<String> permissionCodes = loadPermissionCodes(userId);
boolean todoCardVisible = permissionCodes.contains(DASHBOARD_TODO_CARD_VIEW_PERMISSION); boolean todoCardVisible = permissionCodes.contains(DASHBOARD_TODO_CARD_VIEW_PERMISSION);
boolean activityCardVisible = permissionCodes.contains(DASHBOARD_ACTIVITY_CARD_VIEW_PERMISSION); boolean activityCardVisible = permissionCodes.contains(DASHBOARD_ACTIVITY_CARD_VIEW_PERMISSION);
@ -124,6 +125,12 @@ public class DashboardServiceImpl implements DashboardService {
return activities; return activities;
} }
private void addStatIfPresent(List<DashboardStatDTO> stats, DashboardStatDTO stat) {
if (stat != null) {
stats.add(stat);
}
}
private void enrichActivityTimeText(List<DashboardActivityDTO> activities) { private void enrichActivityTimeText(List<DashboardActivityDTO> activities) {
if (activities == null || activities.isEmpty()) { if (activities == null || activities.isEmpty()) {
return; return;

View File

@ -43,23 +43,23 @@
limit 1 limit 1
</select> </select>
<select id="selectOpportunityStats" resultType="com.unis.crm.dto.dashboard.DashboardStatDTO"> <select id="selectMonthlyOpportunityStat" resultType="com.unis.crm.dto.dashboard.DashboardStatDTO">
select '本月新增商机' as name, select '本月新增商机' as name,
coalesce(round(sum(o.amount) / 10000.0, 2), 0)::numeric as value, coalesce(round(sum(o.amount) / 10000.0, 2), 0)::numeric as value,
'monthlyOpportunities' as metricKey 'monthlyOpportunities' as metricKey
from crm_opportunity o from crm_opportunity o
where date_trunc('month', o.created_at) = date_trunc('month', now()) where date_trunc('month', o.created_at) = date_trunc('month', now())
</select>
union all <select id="selectPushedOmsProjectsStat" resultType="com.unis.crm.dto.dashboard.DashboardStatDTO">
select '已推送OMS项目' as name, select '已推送OMS项目' as name,
coalesce(round(sum(o.amount) / 10000.0, 2), 0)::numeric as value, coalesce(round(sum(o.amount) / 10000.0, 2), 0)::numeric as value,
'pushedOmsProjects' as metricKey 'pushedOmsProjects' as metricKey
from crm_opportunity o from crm_opportunity o
where coalesce(o.pushed_to_oms, false) = true where coalesce(o.pushed_to_oms, false) = true
</select>
union all <select id="selectMonthlyWonOpportunityStat" resultType="com.unis.crm.dto.dashboard.DashboardStatDTO">
select '本月已签单商机金额' as name, select '本月已签单商机金额' as name,
coalesce(round(sum(o.amount) / 10000.0, 2), 0)::numeric as value, coalesce(round(sum(o.amount) / 10000.0, 2), 0)::numeric as value,
'monthlyWonOpportunities' as metricKey 'monthlyWonOpportunities' as metricKey