liujie
2025-05-29 d99aad4524f70b62401c135f946bda5696c702cb
springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/service/impl/ComplaintServiceImpl.java
@@ -4,6 +4,7 @@
import cn.hutool.core.collection.CollUtil;
import cn.idev.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -77,6 +78,7 @@
    private final HttpServletResponse response;
    private final IPartyMemberService partyMemberService;
    private final IdentityInformationService identityInformationService;
    private final IDepartmentService departmentService;
    private final RedisUtils redisUtils;
    @Override
@@ -110,8 +112,7 @@
        SystemUser systemUser = identityInformationVO.getSystemUser();
        Integer identity = identityInformationVO.getIdentity();
        if (identity == 2) {
            SystemUserLevel systemUserLevel = identityInformationVO.getSystemUserLevel();
            accountLevel = systemUserLevel.getLevel();
            accountLevel = systemUser.getAccountLevel();
            switch (accountLevel) {
                case 1:
                    //市级
@@ -122,39 +123,57 @@
                case 2:
                    //区县级
                    complaint.setCityCode(510400);
                    complaint.setDistrictsCode(Integer.valueOf(systemUserLevel.getDistrictsCode()));
                    complaint.setDistrictsCode(Integer.valueOf(systemUser.getDistrictsCode()));
                    complaint.setReportUserName(systemUser.getName());
                    complaint.setReportUserPhone(systemUser.getPhone());
                    complaint.setSuperiorId(Long.valueOf(systemUser.getDistrictsCode()));
                    break;
                case 3:
                    //街道
                    complaint.setCityCode(510400);
                    complaint.setDistrictsCode(Integer.valueOf(systemUserLevel.getDistrictsCode()));
                    complaint.setStreetId(Long.valueOf(systemUserLevel.getStreetId()));
                    complaint.setDistrictsCode(Integer.valueOf(systemUser.getDistrictsCode()));
                    complaint.setStreetId(Long.valueOf(systemUser.getStreetId()));
                    complaint.setReportUserName(systemUser.getName());
                    complaint.setReportUserPhone(systemUser.getPhone());
                    complaint.setSuperiorId(Long.valueOf(systemUser.getStreetId()));
                    break;
                case 4:
                    //社区
                    complaint.setCityCode(510400);
                    complaint.setDistrictsCode(Integer.valueOf(systemUserLevel.getDistrictsCode()));
                    complaint.setStreetId(Long.valueOf(systemUserLevel.getStreetId()));
                    complaint.setCommunityId(systemUserLevel.getCommunityId());
                    complaint.setDistrictsCode(Integer.valueOf(systemUser.getDistrictsCode()));
                    complaint.setStreetId(Long.valueOf(systemUser.getStreetId()));
                    complaint.setCommunityId(systemUser.getCommunityId());
                    complaint.setReportUserName(systemUser.getName());
                    complaint.setReportUserPhone(systemUser.getPhone());
                    complaint.setSuperiorId(systemUser.getCommunityId());
                    break;
                case 5:
                    //党员
                    complaint.setCityCode(510400);
                    complaint.setDistrictsCode(Integer.valueOf(systemUserLevel.getDistrictsCode()));
                    complaint.setStreetId(Long.valueOf(systemUserLevel.getStreetId()));
                    complaint.setCommunityId(systemUserLevel.getCommunityId());
                    complaint.setDistrictsCode(Integer.valueOf(systemUser.getDistrictsCode()));
                    complaint.setStreetId(Long.valueOf(systemUser.getStreetId()));
                    complaint.setCommunityId(systemUser.getCommunityId());
                    PartyMember partyMember = partyMemberService.getPartyMemberByPhone(loginUserInfoVO.getPhone());
                    complaint.setPartyMemberId(partyMember.getId());
                    complaint.setReportUserName(partyMember.getName());
                    complaint.setReportUserPhone(partyMember.getPhone());
                    accountLevel=4;
                    complaint.setSuperiorId(systemUser.getCommunityId());
                    break;
            }
            // 判断该单位的管理员 添加处理人
//            Integer oneDepartmentId = systemUser.getOneDepartmentId();
//            SystemUser oneDepartmentSystemUser = systemUserService.getOne(new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getOneDepartmentId,oneDepartmentId).eq(SystemUser::getIsDeptAdmin,1).ne(SystemUser::getStatus,3));
//            if(null != oneDepartmentSystemUser){
//                complaint.setAssignPersonId(oneDepartmentSystemUser.getId());
//                complaint.setHandleUserId(oneDepartmentSystemUser.getId());
//            }
        } else {
            PartyMember partyMember = partyMemberService.getPartyMemberByPhone(loginUserInfoVO.getPhone());
            //党员
@@ -165,8 +184,19 @@
            complaint.setPartyMemberId(partyMember.getId());
            complaint.setReportUserName(partyMember.getName());
            complaint.setReportUserPhone(partyMember.getPhone());
            // 添加处理人
//            SystemUser one = systemUserService.getOne(new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getAccountLevel, 4).eq(SystemUser::getIsDeptAdmin, 1).eq(SystemUser::getCommunityId, partyMember.getCommunityId()).ne(SystemUser::getStatus, 3));
//            if (null != one) {
//                complaint.setAssignPersonId(one.getId());
//                complaint.setHandleUserId(one.getId());
//            }
        }
        complaint.setReportType(accountLevel);
        complaint.setNowLevel(accountLevel);
        // 设置其他字段
        complaint.setStatus(ProcessStatusEnum.PROCESSING.getCode());
        complaint.setCreateTime(new Date(System.currentTimeMillis()));
@@ -211,7 +241,7 @@
    @Override
    public Page<ComplaintVO> complaintList(ComplaintQuery query, LoginUserInfoVO loginUserInfoVO) {
        // 已分派了的
        Page<ComplaintVO> page = new Page<>(query.getPageNum(), query.getPageSize());
        //判断当前登录用户级别,查询对应工单
        Optional<SystemUser> systemUserByPhone = systemUserService.getSystemUserAdminByPhone(loginUserInfoVO.getPhone());
@@ -221,53 +251,79 @@
        IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO);
        Integer identity = identityInformation.getIdentity();
        query.setUserId(loginUserInfoVO.getUserId());
        SystemUser systemUser = null;
        //上级
        if (systemUserByPhone.isPresent() && null != identity && identity == 2) {
            SystemUser systemUser = systemUserByPhone.get();
            SystemUserLevel systemUserLevel = identityInformation.getSystemUserLevel();
            accountLevel = systemUserLevel.getLevel();
          systemUserByPhone.get();
            accountLevel = systemUser.getAccountLevel();
            switch (accountLevel) {
                case 1:
                    //市级
                    targetId = 510400L;
                    break;
                case 2:
                    //区县级
                    targetId = Long.valueOf(systemUserLevel.getDistrictsCode());
                    targetId = Long.valueOf(systemUser.getDistrictsCode());
                    break;
                case 3:
                    //街道
                    targetId = Long.valueOf(systemUserLevel.getStreetId());
                    targetId = Long.valueOf(systemUser.getStreetId());
                    break;
                case 4:
                    //社区
                    targetId = systemUserLevel.getCommunityId();
                    targetId = systemUser.getCommunityId();
                    break;
                case 5:
                    //党员
                    PartyMember partyMember = partyMemberService.getPartyMemberByPhone(loginUserInfoVO.getPhone());
                    targetId = partyMember.getId();
                    targetId = partyMember.getCommunityId();
                    break;
            }
        } else {
            //党员
            PartyMember partyMember = partyMemberService.getPartyMemberByPhone(loginUserInfoVO.getPhone());
            targetId = partyMember.getId();
            targetId = partyMember.getCommunityId();
        }
        //查询对应诉求
        //page = baseMapper.selectComplaintPage(page, query, targetId, isSuperior);
        page = baseMapper.selectComplaintPage1(page, query, accountLevel, targetId);
     /*   for (ComplaintVO s : page.getRecords()) {
            buttonPermission(s, systemUserByPhone, loginUserInfoVO);
            Integer auditButtonStatus = s.getAuditButtonStatus();
            Long reporterId = s.getReporterId();
            Long superiorId = s.getSuperiorId2();
            if (!targetId.equals(reporterId) && !targetId.equals(superiorId) && (s.getStatus() == 5)) {
                s.setStatus(0);
        // 党员只看自己上报的
        if(accountLevel==5){
            page =  baseMapper.selectComplaintPage2(page, query, accountLevel, targetId);
        }else if(accountLevel==2){
            // 西区单位  如果是西区单位,则只看自己上报的
            if(systemUser.getSystemRoleId()==1){
                // 是管理员 看所有的
                page =  baseMapper.selectComplaintPage3(page, query, accountLevel, targetId);
            }else {
                // 不是管理员 看到指派给我的单位的诉求
                page =  baseMapper.selectComplaintPage4(page, query, systemUser.getOneDepartmentId());
            }
        }*/
        }else if(accountLevel==3){
            // 街道 1
            if(systemUser.getSystemRoleId()==1){
                // 获取街道的所有单位
                List<Department> list = departmentService.list(new LambdaQueryWrapper<Department>().eq(Department::getTier, 3).eq(Department::getStreetId, systemUser.getStreetId()));
                if(list.isEmpty()){
                    return page;
                }
                // 是管理员 可以看到下派来的  也可以看到上派待审核的
                page =  baseMapper.selectComplaintPage5(page, query,systemUser.getStreetId(),list.stream().map(Department::getId).collect(Collectors.toList()));
            }else {
                // 不是管理员 看指派给我的
                page =  baseMapper.selectComplaintPage4(page, query, systemUser.getOneDepartmentId());
            }
        }else if(accountLevel==4){
            // 社区
            if(systemUser.getSystemRoleId()==1){
                List<Department> list = departmentService.list(new LambdaQueryWrapper<Department>().eq(Department::getTier, 4).eq(Department::getCommunityId, systemUser.getCommunityId()));
                if(list.isEmpty()){
                    return page;
                }
                // 是管理员
                page =  baseMapper.selectComplaintPage6(page, query,systemUser.getCommunityId(),list.stream().map(Department::getId).collect(Collectors.toList()));
            }else {
                // 不是管理员 看到负责社区的所有诉求  和 上级下派来的诉求
                page =  baseMapper.selectComplaintPage4(page, query, systemUser.getOneDepartmentId());
            }
        }
        return page;
    }
@@ -682,7 +738,6 @@
        String phone = loginUserInfoVO.getPhone();
        IdentityInformation identityInformationVO = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO);
        SystemUser adminUser = identityInformationVO.getSystemUser();
        SystemUserLevel systemUserLevel = identityInformationVO.getSystemUserLevel();
        Long superiorId;
        int reportType;
@@ -690,6 +745,7 @@
        Long reporterId = null;
        String departmentName = "";
        String reporter = "";
        int nowLevel=0;
        if (identityInformationVO.getIdentity() == 1) {
            PartyMember partyMember = partyMemberService.getPartyMemberByPhone(phone);
            superiorId = partyMember.getCommunityId();
@@ -698,10 +754,13 @@
            reporterLevel = 5;
            departmentName = partyMember.getDistricts() + "-" + partyMember.getStreet() + "-" + partyMember.getCommunity();
            reporter = partyMember.getName();
            // 找到当前社区上一级人
            nowLevel = 3;
        } else if (identityInformationVO.getIdentity() == 2) {
            int accountLevel = systemUserLevel.getLevel(); // 改为基本类型
            if (accountLevel == 1) {
                throw new ServiceException("市级账号,无法上报!");
            int accountLevel = adminUser.getAccountLevel(); // 改为基本类型
            if (accountLevel == 2) {
                throw new ServiceException("区级账号,无法上报!");
            }
            reportType = accountLevel - 1;
            reporterLevel = accountLevel;
@@ -709,16 +768,14 @@
            // 使用基本类型比较并补充默认分支
            if (accountLevel == ReportTypeEnum.COMMUNITY.getCode()) {
                superiorId = Long.parseLong(systemUserLevel.getStreetId());
                reporterId = systemUserLevel.getCommunityId();
                superiorId = Long.parseLong(adminUser.getStreetId());
                reporterId = adminUser.getCommunityId();
                nowLevel = 3;
            } else if (accountLevel == ReportTypeEnum.STREET.getCode()) {
                superiorId = Long.parseLong(systemUserLevel.getDistrictsCode());
                reporterId = Long.parseLong(systemUserLevel.getStreetId());
            } else if (accountLevel == ReportTypeEnum.DISTRICT.getCode()) {
                superiorId = 510400L; // 攀枝花市
                reporterId = Long.parseLong(systemUserLevel.getDistrictsCode());
            } else if (accountLevel == ReportTypeEnum.PARTY.getCode()) {
                superiorId = systemUserLevel.getCommunityId();
                superiorId = Long.parseLong(adminUser.getDistrictsCode());
                reporterId = Long.parseLong(adminUser.getStreetId());
                nowLevel = 2;
            } else {
                // 处理未预期的账号等级
                throw new ServiceException("未知的账号等级");
@@ -726,20 +783,20 @@
            //查询社区信息
            switch (accountLevel) {
                case 2:
                    BcRegion region = bcRegionService.getDistrictByCode(systemUserLevel.getDistrictsCode().toString());
                    BcRegion region = bcRegionService.getDistrictByCode(adminUser.getDistrictsCode().toString());
                    if (Objects.nonNull(region)) {
                        departmentName = region.getRegionName();
                    }
                    break;
                case 3:
                    ComStreet street = comStreetService.getById(systemUserLevel.getStreetId().toString());
                    ComStreet street = comStreetService.getById(adminUser.getStreetId().toString());
                    if (Objects.nonNull(street)) {
                        BcRegion district = bcRegionService.getDistrictByCode(street.getAreaCode().toString());
                        departmentName = Objects.nonNull(district) ? district.getRegionName() + "-" + street.getName() : street.getName();
                    }
                    break;
                case 4:
                    ComAct act = comActService.getById(systemUserLevel.getCommunityId());
                    ComAct act = comActService.getById(adminUser.getCommunityId());
                    if (Objects.nonNull(act)) {
                        ComStreet street2 = comStreetService.getById(adminUser.getStreetId().toString());
                        BcRegion district = bcRegionService.getDistrictByCode(act.getAreaCode());
@@ -756,6 +813,9 @@
        if (complaint.getStatus() != 0) {
            complaint.setStatus(0);
        }
        complaint.setSuperiorId(superiorId);
        complaint.setNowLevel(nowLevel);
        complaint.setAssignStatus(0);
        updateById(complaint);
        // 标记最新
@@ -829,13 +889,12 @@
        if (identityInformation.getIdentity() != 2) {
            throw new ServiceException("无权下派");
        }
        SystemUser systemUser = identityInformation.getSystemUser();
        SystemUserLevel systemUserLevel = identityInformation.getSystemUserLevel();
        int accountLevel = systemUserLevel.getLevel(); // 改为基本类型
        int accountLevel = systemUser.getAccountLevel(); // 改为基本类型
        if (accountLevel == 4) {
            throw new ServiceException("社区账号,无法下派!");
        }
        accountLevel++;
        Complaint complaint = getById(dto.getComplaintId());
        //查询当前单位审核记录表数据
@@ -869,22 +928,31 @@
        complaintAuditRecordService.save(record);
        ComplaintAuditRecord complaintAuditRecord = new ComplaintAuditRecord();
        complaintAuditRecord.setComplaintId(complaint.getId());
        complaintAuditRecord.setReportType(systemUserLevel.getLevel());
        complaintAuditRecord.setReportType(systemUser.getAccountLevel());
        Long superiorId = null;
        switch (systemUserLevel.getLevel()) {
        int nowLevel=0;
        switch (systemUser.getAccountLevel()) {
            case 1:
                superiorId = 510400L;//默认市级
                break;
            case 2:
                superiorId = Long.parseLong(systemUserLevel.getDistrictsCode());
                superiorId = Long.parseLong(systemUser.getStreetId());
                nowLevel=3;
                break;
            case 3:
                superiorId = Long.parseLong(systemUserLevel.getStreetId());
                superiorId = systemUser.getCommunityId();
                nowLevel=4;
                break;
            case 4:
                superiorId = systemUserLevel.getCommunityId();
                superiorId = systemUser.getCommunityId();
                break;
        }
        complaint.setSuperiorId(superiorId);
        complaint.setAssignStatus(0);
        complaint.setNowLevel(nowLevel);
        this.updateById(complaint);
        complaintAuditRecord.setSuperiorId(superiorId);
        complaintFlowService.createFlow(complaintAuditRecord, 1, loginUserInfoVO.getUserId());
    }
@@ -917,6 +985,8 @@
                break;
        }
        //查询上报审核记录
        ComplaintAuditRecord complaintAuditRecord = complaintAuditRecordService.lambdaQuery()
                .eq(ComplaintAuditRecord::getComplaintId, complaintReporAuditDTO.getId())
@@ -931,6 +1001,7 @@
        complaintAuditRecord.setAuditorName(systemUser.getName());
        complaintAuditRecord.setAuditorPhone(systemUser.getPhone());
        complaintAuditRecord.setAuditTime(new Date());
        if (complaintReporAuditDTO.getAuditResult().equals(1)) {
            complaintAuditRecord.setAuditStatus(1);
            complaintAuditRecord.setAuditorId(loginUserInfoVO.getUserId());
@@ -941,6 +1012,14 @@
            complaintAuditRecord2.setSuperiorId(complaintAuditRecord.getReporterId());
            complaintAuditRecord2.setReportType(complaintAuditRecord.getReporterLevel());
            complaintFlowService.createFlow(complaintAuditRecord2, 0, loginUserInfoVO.getUserId());
            // 通过修改状态
            Complaint complaint = this.getById(complaintReporAuditDTO.getId());
            complaint.setAssignPersonId(complaintReporAuditDTO.getDeptId());
            complaint.setAssignStatus(1);
            this.updateById(complaint);
        } else {
            complaintAuditRecord.setRejectReason(complaintReporAuditDTO.getRejectReason());
            complaintAuditRecord.setAuditStatus(2);
@@ -972,8 +1051,8 @@
            reporter = partyMember.getName();
        } else if (identityInformation.getIdentity() == 2) {
            int accountLevel = systemUserLevel.getLevel(); // 改为基本类型
            if (accountLevel == 1) {
                throw new ServiceException("市级账号,无法延期申请!");
            if (accountLevel == 2) {
                throw new ServiceException("区级账号,无法延期申请!");
            }
            reportType = accountLevel - 1;
            reporter = systemUser.getName();
@@ -1119,12 +1198,11 @@
        IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO);
        SystemUser adminUser = identityInformation.getSystemUser();
        SystemUserLevel systemUserLevel = identityInformation.getSystemUserLevel();
        if (identityInformation.getIdentity() != 2) {
            throw new ServiceException("无权下派");
        }
        int accountLevel = systemUserLevel.getLevel(); // 改为基本类型
        int accountLevel = adminUser.getAccountLevel(); // 改为基本类型
      /*  if (accountLevel == 1) {
            throw new ServiceException("市级账号,无法上报!");
        }*/
@@ -1132,30 +1210,20 @@
        // 使用基本类型比较并补充默认分支
        List<DispatchVO> dispatchVOList = new ArrayList<>();
        if (accountLevel == ReportTypeEnum.STREET.getCode()) {
            String streetId = systemUserLevel.getStreetId();
            List<ComAct> list = comActService.list(new LambdaQueryWrapper<ComAct>().eq(ComAct::getStreetId, streetId));
            for (ComAct comAct : list) {
            // 社区的单位
            List<Department> list1 = departmentService.list(new LambdaQueryWrapper<Department>().eq(Department::getTier, 4));
            for (Department department : list1) {
                DispatchVO dispatchVO = new DispatchVO();
                dispatchVO.setId(comAct.getCommunityId().toString());
                dispatchVO.setName(comAct.getName());
                dispatchVO.setId(department.getCommunityId().toString());
                dispatchVO.setName(department.getName());
                dispatchVOList.add(dispatchVO);
            }
        } else if (accountLevel == ReportTypeEnum.DISTRICT.getCode()) {
            String districtsCode = systemUserLevel.getDistrictsCode();
            List<ComStreet> list = comStreetService.list(new LambdaQueryWrapper<ComStreet>().eq(ComStreet::getAreaCode, districtsCode));
            for (ComStreet street : list) {
            List<Department> list1 = departmentService.list(new LambdaQueryWrapper<Department>().eq(Department::getTier, 3));
            for (Department department : list1) {
                DispatchVO dispatchVO = new DispatchVO();
                dispatchVO.setId(street.getStreetId().toString());
                dispatchVO.setName(street.getName());
                dispatchVOList.add(dispatchVO);
            }
        } else if (accountLevel == ReportTypeEnum.CITY.getCode()) {
            List<BcRegion> list = bcRegionService.list(new LambdaQueryWrapper<BcRegion>()
                    .eq(BcRegion::getHierarchyOrder, 3).eq(BcRegion::getParentId, 510400));//获取攀枝花市下的区县
            for (BcRegion region : list) {
                DispatchVO dispatchVO = new DispatchVO();
                dispatchVO.setId(region.getRegionCode());
                dispatchVO.setName(region.getRegionName());
                dispatchVO.setId(department.getCommunityId().toString());
                dispatchVO.setName(department.getName());
                dispatchVOList.add(dispatchVO);
            }
        } else {
@@ -1727,5 +1795,51 @@
        }
        return baseMapper.queryCompliantList(targetId, accountLevel, loginUserInfo, query);
    }
    @Override
    public Page<SysUserVO> getDeptUserList(LoginUserInfoVO loginUserInfo,BasePage page) {
        IdentityInformation currentIdentityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfo);
        if (currentIdentityInformation.getIdentity().equals(2)) {
            SystemUser systemUser = currentIdentityInformation.getSystemUser();
            if(systemUser.getIsDeptAdmin()==0){
                throw new ServiceException("你没有分配权限");
            }
            Page<SysUserVO> sysUserVOPage = new Page<>();
            ArrayList<SysUserVO> sysUserVOS = new ArrayList<>();
            Page<SystemUser> page1 = systemUserService.page(new Page<>(page.getPageNum(), page.getPageSize()), new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getOneDepartmentId, systemUser.getOneDepartmentId()).ne(SystemUser::getId,systemUser.getId()).ne(SystemUser::getStatus, 3));
            for (SystemUser record : page1.getRecords()) {
                SysUserVO sysUserVO = new SysUserVO();
                sysUserVO.setId(record.getId());
                sysUserVO.setName(record.getName());
                sysUserVOS.add(sysUserVO);
            }
            sysUserVOPage.setRecords(sysUserVOS);
            BeanUtils.copyProperties(page1,sysUserVOPage);
            return sysUserVOPage;
        }else {
            throw new ServiceException("你没有分配权限");
        }
    }
    @Override
    public void assignComplain(LoginUserInfoVO loginUserInfo, Long complainId, Integer userId) {
        IdentityInformation currentIdentityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfo);
        if (currentIdentityInformation.getIdentity().equals(2)) {
            SystemUser systemUser = currentIdentityInformation.getSystemUser();
            Complaint complaint = baseMapper.selectById(complainId);
            // 已分配状态
            complaint.setAssignPersonId(userId);
            complaint.setFirstStatus(1);
            complaint.setAssignStatus(1);
        }else {
            throw new ServiceException("你没有分配权限");
        }
    }
}