| | |
| | | @ResponseBody |
| | | @GetMapping(value = "/six/charge") |
| | | @ApiOperation(value = "电站收入分析", tags = {"后台-数据分析-平台收入分析"}) |
| | | public R<List<SixChargingDto>> charge(Integer siteId) { |
| | | public R<List<SixChargingDto>> charge(Integer siteId, Integer partnerId) { |
| | | Long userId = tokenService.getLoginUser().getUserid(); |
| | | SysUser sysUser = sysUserClient.getSysUser(userId).getData(); |
| | | boolean partnerView = isPartnerView(sysUser); |
| | | List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId); |
| | | List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId, partnerId); |
| | | LocalDate sixBefore = PreviousSixMonths.get(); |
| | | //通过siteIds进行sql查询统计 |
| | | List<SixChargingDto> chargingDtos = chargingOrderService.charge(sixBefore, siteIds, partnerView); |
| | |
| | | @ResponseBody |
| | | @GetMapping(value = "/six/circle") |
| | | @ApiOperation(value = "电站收入占比", tags = {"后台-数据分析-平台收入分析"}) |
| | | public R<List<SixCircleDto>> circle(Integer siteId) { |
| | | public R<List<SixCircleDto>> circle(Integer siteId, Integer partnerId) { |
| | | Long userId = tokenService.getLoginUser().getUserid(); |
| | | SysUser sysUser = sysUserClient.getSysUser(userId).getData(); |
| | | boolean partnerView = isPartnerView(sysUser); |
| | | List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId); |
| | | List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId, partnerId); |
| | | LocalDate sixBefore = PreviousSixMonths.get(); |
| | | List<SixCircleDto> sixCircleDtos = chargingOrderService.circle(siteIds,sixBefore, partnerView); |
| | | for (SixCircleDto sixCircleDto : sixCircleDtos) { |
| | |
| | | @ResponseBody |
| | | @GetMapping(value = "/six/total") |
| | | @ApiOperation(value = "底部数据分类", tags = {"后台-数据分析-平台收入分析"}) |
| | | public R<Map<String,Object>> total(Integer siteId) { |
| | | public R<Map<String,Object>> total(Integer siteId, Integer partnerId) { |
| | | //count近6个月的数据 |
| | | Long userId = tokenService.getLoginUser().getUserid(); |
| | | SysUser sysUser = sysUserClient.getSysUser(userId).getData(); |
| | | boolean partnerView = isPartnerView(sysUser); |
| | | List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId); |
| | | List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId, partnerId); |
| | | Map<String,Object> map = chargingOrderService.countAll(siteIds, partnerView); |
| | | if (map == null) { |
| | | map = new HashMap<String,Object>(); |
| | |
| | | @ResponseBody |
| | | @GetMapping(value = "/six/pay-type-circle") |
| | | @ApiOperation(value = "收入类型占比", tags = {"后台-数据分析-平台收入分析"}) |
| | | public R<List<SixIncomeCircleDto>> payTypeCircle(Integer siteId) { |
| | | public R<List<SixIncomeCircleDto>> payTypeCircle(Integer siteId, Integer partnerId) { |
| | | Long userId = tokenService.getLoginUser().getUserid(); |
| | | SysUser sysUser = sysUserClient.getSysUser(userId).getData(); |
| | | boolean partnerView = isPartnerView(sysUser); |
| | | List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId); |
| | | List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId, partnerId); |
| | | LocalDate sixBefore = PreviousSixMonths.get(); |
| | | return R.ok(chargingOrderService.payTypeCircle(sixBefore, siteIds, partnerView)); |
| | | } |
| | |
| | | * 解析平台收入分析页面允许查看的站点范围。 |
| | | * 合作商使用授权站点,其他后台账号沿用用户站点列表;传入站点时需做授权校验。 |
| | | */ |
| | | private List<Integer> resolvePlatformRevenueSiteIds(Long userId, SysUser sysUser, Integer siteId) { |
| | | private List<Integer> resolvePlatformRevenueSiteIds(Long userId, SysUser sysUser, |
| | | Integer siteId, Integer partnerId) { |
| | | List<Integer> siteIds = new ArrayList<>(); |
| | | if (sysUser != null && Integer.valueOf(2).equals(sysUser.getRoleType())) { |
| | | Set<Integer> authSiteIds = partnerClient.authSite(sysUser.getObjectId(), SiteMenu.SITE_LIST.getValue()).getData(); |
| | |
| | | if (siteId != null) { |
| | | return siteIds.contains(siteId) ? Collections.singletonList(siteId) : Collections.singletonList(-1); |
| | | } |
| | | if (partnerId != null && !siteIds.isEmpty()) { |
| | | R<List<Site>> siteResult = siteClient.getSiteByIds(siteIds); |
| | | return filterPlatformRevenueSiteIdsByPartner(siteIds, |
| | | siteResult == null ? null : siteResult.getData(), partnerId); |
| | | } |
| | | if (siteIds.isEmpty()) { |
| | | siteIds.add(-1); |
| | | } |
| | | return siteIds; |
| | | } |
| | | |
| | | static List<Integer> filterPlatformRevenueSiteIdsByPartner(List<Integer> allowedSiteIds, |
| | | List<Site> sites, |
| | | Integer partnerId) { |
| | | if (partnerId == null) { |
| | | return allowedSiteIds == null || allowedSiteIds.isEmpty() |
| | | ? Collections.singletonList(-1) : new ArrayList<>(allowedSiteIds); |
| | | } |
| | | if (allowedSiteIds == null || allowedSiteIds.isEmpty() || sites == null || sites.isEmpty()) { |
| | | return Collections.singletonList(-1); |
| | | } |
| | | Set<Integer> allowed = new HashSet<>(allowedSiteIds); |
| | | List<Integer> result = sites.stream() |
| | | .filter(Objects::nonNull) |
| | | .filter(site -> allowed.contains(site.getId())) |
| | | // 合作商类型不参与筛选:主合作商或场地方匹配均属于该合作商名下电站。 |
| | | .filter(site -> Objects.equals(site.getPartnerId(), partnerId) |
| | | || Objects.equals(site.getVenuePartnerId(), partnerId)) |
| | | .map(Site::getId) |
| | | .distinct() |
| | | .collect(Collectors.toList()); |
| | | return result.isEmpty() ? Collections.singletonList(-1) : result; |
| | | } |
| | | |
| | | |
| | | @RequiresPermissions(value = {"/chargeOrderMonitoring"}, logical = Logical.OR) |
| | | @ResponseBody |