liujie
2025-07-11 c3892d8e7378ea9441689ebe7009b3e02160b7a1
springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/api/AnalyticStatisticsController.java
@@ -5,7 +5,7 @@
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.sangeshenbian.SystemUserVo;
import com.panzhihua.common.model.vos.west.SystemUserVo;
import com.panzhihua.westcommittee.model.entity.*;
import com.panzhihua.westcommittee.model.query.AnalyticStatisticsQuery;
import com.panzhihua.westcommittee.model.vo.*;
@@ -52,35 +52,25 @@
    @Resource
    private IComActService comActService;
    @Resource
    private ISystemUserService iSystemUserService;
    @PostMapping("/data")
    @ApiOperation(value = "分析统计", tags = {"三个身边后台-分析统计"})
    @ApiOperation(value = "分析统计", tags = {"西区纪委后台-分析统计"})
    public R<AnalyticStatisticsDataVo> data(@Valid @RequestBody AnalyticStatisticsQuery query){
        SystemUserVo loginUserInfoSanGeShenBian = getLoginUserInfoWest();
        Integer id = loginUserInfoSanGeShenBian.getId();
        List<SystemUserLevel> listBySystemUsers = systemUserLevelService.getListBySystemUserId(id);
        if(listBySystemUsers.size()==0){
            // 没有权限
            return R.ok(new AnalyticStatisticsDataVo());
        }
        SystemUserVo loginUserInfo = getLoginUserInfoWest();
        Integer id = loginUserInfo.getId();
        SystemUser systemUser = iSystemUserService.getById(id);
        Integer accountLevel = systemUser.getAccountLevel();
        LambdaQueryWrapper<Complaint> wrapper = new LambdaQueryWrapper<>();
        SystemUserLevel systemUserLevel = listBySystemUsers.stream().filter(e -> e.getLevel() == 1).findFirst().orElse(null);
        if(query.getCityCode()!=null){
            // 判断是否有市级权限
            if(systemUserLevel==null){
                throw new ServiceException("没有市级权限");
            }
            wrapper.eq(Complaint::getCityCode, query.getCityCode());
        }
        if(query.getDistrictCode()!=null){
            // 判断是否有区县权限
            List<SystemUserLevel> systemUserLevels2 = listBySystemUsers.stream().filter(e -> e.getLevel() == 2 && e.getDistrictsCode().equals(query.getDistrictCode().toString())).collect(Collectors.toList());
            // 没有市权限 也没有该区权限
            if(systemUserLevels2.size()==0 && systemUserLevel==null){
            if(accountLevel!=2){
                throw new ServiceException("没有该区县权限");
            }
            wrapper.eq(Complaint::getDistrictsCode, query.getDistrictCode());
            wrapper.eq(Complaint::getSuperiorId, query.getDistrictCode());
        }
        if(query.getStreetId()!=null){
            // 获取街道上一级查看是否有上级权限
@@ -88,14 +78,13 @@
            if(comStreet==null){
                throw new ServiceException("没有该街道权限");
            }
            List<SystemUserLevel> systemUserLevels2 = listBySystemUsers.stream().filter(e -> e.getLevel() == 2 && e.getDistrictsCode().equals(comStreet.getAreaCode().toString())).collect(Collectors.toList());
            // 判断是否有街道权限
            List<SystemUserLevel> systemUserLevels3 = listBySystemUsers.stream().filter(e -> e.getLevel() == 3 && e.getStreetId().equals(query.getStreetId().toString())).collect(Collectors.toList());
            // 没有市级 上级区县  本级街道权限
            if(systemUserLevels3.size()==0 && systemUserLevel==null && systemUserLevels2.size()==0){
            if(accountLevel==2 || (accountLevel==3 && systemUser.getDistrictsCode().equals(query.getDistrictCode().toString()))){
                wrapper.eq(Complaint::getSuperiorId, query.getStreetId());
            }else {
                throw new ServiceException("没有该街道权限");
            }
            wrapper.eq(Complaint::getStreetId, query.getStreetId());
        }
        if(query.getCommunityId()!=null){
@@ -103,72 +92,38 @@
            if (comAct == null) {
                throw new ServiceException("没有该社区权限");
            }
            // 查看是否有上级街道权限
            List<SystemUserLevel> systemUserLevels2 = listBySystemUsers.stream().filter(e -> e.getLevel() == 3 && e.getStreetId().equals(comAct.getStreetId().toString())).collect(Collectors.toList());
            // 查看是否有上级区权限
            List<SystemUserLevel> systemUserLevels3 = listBySystemUsers.stream().filter(e -> e.getLevel() == 2 && e.getDistrictsCode().equals(comAct.getAreaCode())).collect(Collectors.toList());
            // 查看是否有本级权限
            List<SystemUserLevel> systemUserLevels4 = listBySystemUsers.stream().filter(e -> e.getLevel() == 4 && e.getCommunityId().equals(query.getCommunityId())).collect(Collectors.toList());
            // 判断是否有上面的4个权限
            if(systemUserLevels4.size()==0 && systemUserLevels3.size()==0 && systemUserLevels2.size()==0 && systemUserLevel==null){
            if(accountLevel==2 ||  (accountLevel==3 && systemUser.getDistrictsCode().equals(comAct.getStreetId().toString()) || accountLevel==4 && systemUser.getCommunityId().equals(comAct.getCommunityId()))){
                wrapper.eq(Complaint::getSuperiorId, query.getCommunityId());
            }else {
                throw new ServiceException("没有该社区权限");
            }
            wrapper.eq(Complaint::getCommunityId, query.getCommunityId());
        }
        // 都为空 查他有的
        if(query.getCityCode()==null && query.getDistrictCode()==null && query.getStreetId()==null && query.getCommunityId()==null){
            // 看是否直接是市级账号
            if(systemUserLevel==null){
                List<String> districtsCodes=new ArrayList<>();
                List<String> streetIds=new ArrayList<>();
                List<Long> communityIds=new ArrayList<>();
                // 不是市级 查看是否是区县账号
                List<SystemUserLevel> systemUserLevels2 = listBySystemUsers.stream().filter(e -> e.getLevel() == 2).collect(Collectors.toList());
                if(!systemUserLevels2.isEmpty()){
                    // 区县账号 找出code
                    districtsCodes = systemUserLevels2.stream().map(SystemUserLevel::getDistrictsCode).collect(Collectors.toList());
                }else {
                    districtsCodes.add("-1");
            if(systemUser.getSystemRoleId()==1 || systemUser.getSystemRoleId()==2){
                if(systemUser.getSystemRoleId()==1){
                    wrapper.ne(Complaint::getProblemType,"纪委").or(w->w.isNull(Complaint::getProblemType));
                }
                List<SystemUserLevel> systemUserLevels3 = listBySystemUsers.stream().filter(e -> e.getLevel() == 3).collect(Collectors.toList());
                if(!systemUserLevels3.isEmpty()){
                    // 街道账号 找出id 且不在上面的区县下的街道
                    List<String> finalDistrictsCodes1 = districtsCodes;
                    streetIds = systemUserLevels3.stream().filter(e -> !finalDistrictsCodes1.contains(e.getDistrictsCode())).map(SystemUserLevel::getStreetId).collect(Collectors.toList());
                    if(streetIds.isEmpty()){
                        streetIds.add("-1");
                    }
                }else {
                    streetIds.add("-1");
                if(accountLevel==3){
                    String streetId = systemUser.getStreetId();
                    List<Long> ids = comActService.list(new LambdaQueryWrapper<ComAct>().eq(ComAct::getStreetId, streetId)).stream().map(ComAct::getCommunityId).collect(Collectors.toList());
                    wrapper.eq(Complaint::getNowLevel,systemUser.getAccountLevel()).or(wrapper1 ->wrapper1.in(Complaint::getSuperiorId,ids).eq(Complaint::getNowLevel,4));
                }
                List<SystemUserLevel> systemUserLevels4 = listBySystemUsers.stream().filter(e -> e.getLevel() == 4).collect(Collectors.toList());
                if(!systemUserLevels4.isEmpty()){
                    // community账号 找出id 且不在上面的街道下的社区
                    List<String> finalStreetIds1 = streetIds;
                    List<String> finalDistrictsCodes2 = districtsCodes;
                    communityIds = systemUserLevels4.stream().filter(e -> !finalStreetIds1.contains(e.getStreetId()) && !finalDistrictsCodes2.contains(e.getDistrictsCode())).map(SystemUserLevel::getCommunityId).collect(Collectors.toList());
                }else {
                    communityIds.add(-1L);
                if(accountLevel==4){
                    wrapper.eq(Complaint::getNowLevel,systemUser.getAccountLevel());
                }
                List<String> finalDistrictsCodes = districtsCodes;
                List<String> finalStreetIds = streetIds;
                List<Long> finalCommunityIds = communityIds;
                wrapper.and(wrapper1 -> {
                    wrapper1.in(Complaint::getDistrictsCode, finalDistrictsCodes).or().in(Complaint::getStreetId, finalStreetIds).or().in(Complaint::getCommunityId, finalCommunityIds);
                });
            }else {
                wrapper.eq(Complaint::getNowLevel,systemUser.getAccountLevel())
                        .eq(Complaint::getAssignPersonId,systemUser.getOneDepartmentId());
            }
        }
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        List<Complaint> complaints =complaintService.list(wrapper);
        // 第一部分数据
        AnalyticStatisticsOneVo analyticStatisticsOneVo = complaintService.analyticStatisticsOne(query,complaints,simpleDateFormat);
        AnalyticStatisticsOneVo analyticStatisticsOneVo = complaintService.analyticStatisticsOne(query,complaints,simpleDateFormat,systemUser.getAccountLevel());
        // 第二部分数据
        List<AnalyticStatisticsTwoVo> analyticStatisticsTwoVos =complaintService.analyticStatisticsTwo(query.getTime(),complaints,simpleDateFormat);
@@ -192,74 +147,38 @@
    @GetMapping("/getRegion")
    @ApiOperation(value = "分析统计--获取市-区县-街道-社区", tags = {"三个身边后台-分析统计--获取市-区县-街道-社区"})
    @ApiOperation(value = "分析统计--获取市-区县-街道-社区", tags = {"西区纪委后台-分析统计--获取市-区县-街道-社区"})
    public R<AnalyticStatisticsRegionVo> getRegion(){
        SystemUserVo loginUserInfoSanGeShenBian = getLoginUserInfoWest();
        Integer id = loginUserInfoSanGeShenBian.getId();
        List<SystemUserLevel> listBySystemUsers = systemUserLevelService.getListBySystemUserId(id);
        // 如果有市级权限  展示所有
        SystemUserLevel systemUserLevel = listBySystemUsers.stream().filter(e -> e.getLevel() == 1).findFirst().orElse(null);
        SystemUserVo loginUserInfo = getLoginUserInfoWest();
        Integer id = loginUserInfo.getId();
        SystemUser systemUser = iSystemUserService.getById(id);
        // 如果有区权限  展示所有
        AnalyticStatisticsRegionVo analyticStatisticsRegionVo = new AnalyticStatisticsRegionVo();
        if(systemUserLevel!=null){
        if(systemUser.getAccountLevel()==2){
            // 查询所有的县 街道 社区
            List<BcRegion> list = bcRegionService.list(new LambdaQueryWrapper<BcRegion>().eq(BcRegion::getParentId, 510400));
            List<ComStreet> list1 = comStreetService.list(new LambdaQueryWrapper<ComStreet>().eq(ComStreet::getCityCode, 510400));
            List<ComAct> list2 = comActService.list(new LambdaQueryWrapper<ComAct>().eq(ComAct::getState,0).eq(ComAct::getCityCode, 510400));
            analyticStatisticsRegionVo.setBcRegions(list);
            List<ComStreet> list1 = comStreetService.list(new LambdaQueryWrapper<ComStreet>().eq(ComStreet::getAppId, "wx0cef797390444b75"));
            List<ComAct> list2 = comActService.list(new LambdaQueryWrapper<ComAct>().eq(ComAct::getState,0).eq(ComAct::getAppId, "wx0cef797390444b75"));
            analyticStatisticsRegionVo.setComStreets(list1);
            analyticStatisticsRegionVo.setComActs(list2);
            return R.ok(analyticStatisticsRegionVo);
        }
        // 有区县级权限
        List<SystemUserLevel> systemUserLevels = listBySystemUsers.stream().filter(e -> e.getLevel() == 2).collect(Collectors.toList());
        // 拥有的区县code
        List<String> collect = systemUserLevels.stream().map(SystemUserLevel::getDistrictsCode).collect(Collectors.toList());
        if(collect.size()==0){
            collect.add("-1");
        }
        // 找出这个区县的
        List<BcRegion> list = bcRegionService.list(new LambdaQueryWrapper<BcRegion>().eq(BcRegion::getParentId, 510400).in(BcRegion::getRegionCode, collect));
        // 区县街道
        List<ComStreet> list1 = comStreetService.list(new LambdaQueryWrapper<ComStreet>().in(ComStreet::getAreaCode, collect));
        // 区县社区
        List<ComAct> list2 = comActService.list(new LambdaQueryWrapper<ComAct>().in(ComAct::getAreaCode, collect).eq(ComAct::getState,0));
        // 有街道权限 排除上个查询出来的
        List<SystemUserLevel> systemUserLevels1 = listBySystemUsers.stream().filter(e -> e.getLevel() == 3 && !collect.contains(e.getDistrictsCode())).collect(Collectors.toList());
        List<String> collect1 = systemUserLevels1.stream().map(SystemUserLevel::getStreetId).collect(Collectors.toList());
        if(collect1.size()==0){
            collect1.add("-1");
        if(systemUser.getAccountLevel()==3){
            // 查询所有的县 街道 社区
            List<ComStreet> list1 = comStreetService.list(new LambdaQueryWrapper<ComStreet>().eq(ComStreet::getStreetId, systemUser.getStreetId()).eq(ComStreet::getAppId, "wx0cef797390444b75"));
            List<ComAct> list2 = comActService.list(new LambdaQueryWrapper<ComAct>().eq(ComAct::getStreetId, systemUser.getStreetId()).eq(ComAct::getState,0).eq(ComAct::getAppId, "wx0cef797390444b75"));
            analyticStatisticsRegionVo.setComStreets(list1);
            analyticStatisticsRegionVo.setComActs(list2);
            return R.ok(analyticStatisticsRegionVo);
        }
        // 区县街道
        List<ComStreet> list3 = comStreetService.list(new LambdaQueryWrapper<ComStreet>().in(ComStreet::getStreetId, collect1));
        // 区县社区
        List<ComAct> list4 = comActService.list(new LambdaQueryWrapper<ComAct>().in(ComAct::getStreetId, collect1).eq(ComAct::getState,0));
        list1.addAll(list3);
        list2.addAll(list4);
        // 有社区权限 排除上个查询出来的
        List<SystemUserLevel> systemUserLevels2 = listBySystemUsers.stream().filter(e -> e.getLevel() == 4 && !collect.contains(e.getDistrictsCode()) && !collect1.contains(e.getStreetId())).collect(Collectors.toList());
        List<Long> collect2 = systemUserLevels2.stream().map(SystemUserLevel::getCommunityId).collect(Collectors.toList());
        if(collect2.size()==0){
            collect2.add(-1l);
        if(systemUser.getAccountLevel()==4){
            // 查询所有的县 街道 社区
            List<ComAct> list2 = comActService.list(new LambdaQueryWrapper<ComAct>().eq(ComAct::getCommunityId, systemUser.getCommunityId()).eq(ComAct::getState,0).eq(ComAct::getAppId, "wx0cef797390444b75"));
            analyticStatisticsRegionVo.setComActs(list2);
            return R.ok(analyticStatisticsRegionVo);
        }
        // 区县社区
        List<ComAct> list6 = comActService.list(new LambdaQueryWrapper<ComAct>().in(ComAct::getCommunityId, collect2).eq(ComAct::getState,0));
        list2.addAll(list6);
        analyticStatisticsRegionVo.setBcRegions(list);
        analyticStatisticsRegionVo.setComStreets(list1);
        analyticStatisticsRegionVo.setComActs(list2);
        return R.ok(analyticStatisticsRegionVo);
@@ -267,7 +186,7 @@
    @GetMapping("/getNextRegion")
    @ApiOperation(value = "分析统计--获取下一级树", tags = {"三个身边后台-分析统计--获取市-区县-街道-社区"})
    @ApiOperation(value = "分析统计--获取下一级树", tags = {"西区纪委后台-分析统计--获取市-区县-街道-社区"})
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "区 传regionCode  街道streetId", required = true, dataType = "String"),
            @ApiImplicitParam(name = "type", value = "1区  2街道", required = true, dataType = "Integer")
@@ -285,7 +204,7 @@
    }
    @GetMapping("/getLastRegion")
    @ApiOperation(value = "分析统计--获取上级回显", tags = {"三个身边后台-分析统计--获取市-区县-街道-社区"})
    @ApiOperation(value = "分析统计--获取上级回显", tags = {"西区纪委后台-分析统计--获取市-区县-街道-社区"})
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "街道streetId 社区 communityId", required = true, dataType = "String"),
            @ApiImplicitParam(name = "type", value = "2街道 3社区", required = true, dataType = "Integer")