liujie
2025-07-11 c3892d8e7378ea9441689ebe7009b3e02160b7a1
springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/api/DepartmentController.java
@@ -1,12 +1,14 @@
package com.panzhihua.westcommittee.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.interfaces.OperLog;
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.common.utlis.StringUtils;
import com.panzhihua.westcommittee.model.dto.UpdateStatusDeptDto;
import com.panzhihua.westcommittee.model.entity.ComAct;
import com.panzhihua.westcommittee.model.entity.Department;
import com.panzhihua.westcommittee.model.entity.SystemUser;
import com.panzhihua.westcommittee.service.*;
@@ -15,11 +17,10 @@
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -30,10 +31,10 @@
@RestController
@RequestMapping("/department")
public class DepartmentController extends BaseController {
   @Resource
   private IDepartmentService departmentService;
   @Resource
   private ISystemUserService systemUserService;
@@ -100,25 +101,62 @@
   @GetMapping("/getList")
   @ApiOperation(value = "获取单位列表", tags = {"西区纪委后台-单位管理"})
   @OperLog(operModul = "西区纪委后台",operType = 0, businessType = "获取单位列表")
   public R<List<Department>> getList(String name){
      List<Department> list4 = departmentService.list(new LambdaQueryWrapper<Department>().like(StringUtils.isNotEmpty(name), Department::getName, name).eq(Department::getTier, 4));
      Set<String> collect3 = list4.stream().map(Department::getStreetId).collect(Collectors.toSet());
      List<Department> list3 = departmentService.list(new LambdaQueryWrapper<Department>().like(StringUtils.isNotEmpty(name), Department::getName, name).eq(Department::getTier, 3)
            .or().in(collect3.size() > 0, Department::getStreet, collect3));
      Set<String> collect2 = list3.stream().map(Department::getDistrictsCode).collect(Collectors.toSet());
      List<Department> list2 = departmentService.list(new LambdaQueryWrapper<Department>().like(StringUtils.isNotEmpty(name), Department::getName, name).eq(Department::getTier, 2)
            .or().in(collect2.size() > 0, Department::getDistrictsCode, collect2));
      for (Department department : list2) {
         List<Department> departmentList2 = list3.stream().filter(s -> s.getDistrictsCode().equals(department.getDistrictsCode())).collect(Collectors.toList());
         for (Department department1 : departmentList2) {
            List<Department> departmentList3 = list4.stream().filter(s -> s.getStreetId().equals(department1.getStreetId())).collect(Collectors.toList());
            department1.setChild(departmentList3);
   public R<List<Department>> getList(String name,Integer level,String code,int type){
        SystemUserVo loginUserInfoWest = getLoginUserInfoWest();
        if(level==null){
            if(loginUserInfoWest.getSystemRoleId()!=1){
                return  R.ok(new ArrayList<>());
            }
            level=loginUserInfoWest.getAccountLevel();
            type=2;
        }
         List<Department> list4=new ArrayList<>();
         if(level==2 && type==1){
            list4 = departmentService.list(new LambdaQueryWrapper<Department>().like(StringUtils.isNotEmpty(name), Department::getName, name).eq( Department::getTier, 2));
         }else if(level==2 && type==2){
             list4 = departmentService.list(new LambdaQueryWrapper<Department>().like(StringUtils.isNotEmpty(name), Department::getName, name).ge( Department::getTier, 2));
         }else  if(level==3 && type==1){
            list4 = departmentService.list(new LambdaQueryWrapper<Department>().like(StringUtils.isNotEmpty(name), Department::getName, name).eq( Department::getTier, 3).eq(Department::getStreetId, loginUserInfoWest.getStreetId()));
         }else if(level==3 && type==2){
                List<Long> ids = comActService.list(new LambdaQueryWrapper<ComAct>().eq(ComAct::getStreetId, loginUserInfoWest.getStreetId())).stream().map(ComAct::getCommunityId).collect(Collectors.toList());
                list4 = departmentService.list(new LambdaQueryWrapper<Department>().like(StringUtils.isNotEmpty(name), Department::getName, name).eq( Department::getTier, 3).eq(Department::getStreetId, loginUserInfoWest.getStreetId())
                        .or(w->w.eq(Department::getTier,4).in(Department::getCommunityId,ids)));
         }else  if(level==4 && type==1){
            list4 = departmentService.list(new LambdaQueryWrapper<Department>().like(StringUtils.isNotEmpty(name), Department::getName, name).eq( Department::getTier, 4).eq(Department::getCommunityId,loginUserInfoWest.getCommunityId()));
         }else if(level==4 && type==2){
            list4 = departmentService.list(new LambdaQueryWrapper<Department>().like(StringUtils.isNotEmpty(name), Department::getName, name).eq(Department::getTier, 4).eq(Department::getCommunityId,loginUserInfoWest.getCommunityId()));
         }
         department.setChild(departmentList2);
         return R.ok(list4);
   }
   @GetMapping("/getDeptList")
   @ApiOperation(value = "获取单位列表1", tags = {"西区纪委后台-单位管理"})
   @OperLog(operModul = "西区纪委后台",operType = 0, businessType = "获取单位列表")
   public R<Page<Department>> getDeptList(String name,int pageNum,int pageSize){
        SystemUserVo loginUserInfoWest = getLoginUserInfoWest();
        if(loginUserInfoWest.getSystemRoleId()!=1){
            return  R.ok(new Page<>());
        }
        Integer accountLevel = loginUserInfoWest.getAccountLevel();
        Page<Department> list4 = null;
        if(accountLevel==2 ){
           list4 = departmentService.page(new Page<Department>(pageNum,pageSize),new LambdaQueryWrapper<Department>().like(StringUtils.isNotEmpty(name), Department::getName, name).or().eq(StringUtils.isNotEmpty(name),Department::getId,name).ge(Department::getTier,accountLevel));
        }else if(accountLevel==3){
            String streetId = loginUserInfoWest.getStreetId();
            List<Long> ids = comActService.list(new LambdaQueryWrapper<ComAct>().eq(ComAct::getStreetId, streetId)).stream().map(ComAct::getCommunityId).collect(Collectors.toList());
             list4 = departmentService.page(new Page<Department>(pageNum,pageSize),new LambdaQueryWrapper<Department>().like(StringUtils.isNotEmpty(name), Department::getName, name).or().eq(StringUtils.isNotEmpty(name),Department::getId,name).eq(Department::getTier,accountLevel).eq(Department::getStreetId,streetId)
                    .or(department -> department.and(department1 -> department1.eq(Department::getTier, 4).in(Department::getCommunityId, ids))));
        }else if(accountLevel==4){
             list4 = departmentService.page(new Page<Department>(pageNum,pageSize),new LambdaQueryWrapper<Department>().like(StringUtils.isNotEmpty(name), Department::getName, name).or().eq(StringUtils.isNotEmpty(name),Department::getId,name).eq(Department::getTier,4).eq(Department::getCommunityId,loginUserInfoWest.getCommunityId()));
        }
        for (Department department : list4.getRecords()) {
         int count = systemUserService.count(new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getOneDepartmentId, department.getId()));
         department.setUserCount(count);
      }
      return R.ok(list2);
      return R.ok(list4);
   }
@@ -129,15 +167,11 @@
      if(0 < count){
         return R.fail("单位名称重复。");
      }
      long count1 = departmentService.count(new LambdaQueryWrapper<Department>().eq(Department::getDeptId, department.getDeptId()));
      if(0 < count1){
         return R.fail("单位ID重复。");
      }
      departmentService.save(department);
      return R.ok();
   }
   @PostMapping("/edit")
   @ApiOperation(value = "编辑单位信息", tags = {"西区纪委后台-单位管理"})
   public R edit(@RequestBody Department department){
@@ -146,17 +180,36 @@
      if(0 < count){
         return R.fail("单位名称重复。");
      }
      long count1 = departmentService.count(new LambdaQueryWrapper<Department>().eq(Department::getDeptId, department.getDeptId())
            .ne(Department::getId, department.getId()));
      if(0 < count1){
         return R.fail("单位ID重复。");
      }
      departmentService.updateById(department);
      List<SystemUser> list = systemUserService.list(new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getOneDepartmentId, department.getId()));
      if(!list.isEmpty()) {
         if (department.getTier() == 2) {
            list.stream().forEach(e -> {
               e.setAccountLevel(department.getTier());
               e.setCommunity(null);
               e.setCommunityId(null);
               e.setStreet(null);
               e.setStreetId(null);
            });
         } else if (department.getTier() == 3) {
            list.stream().forEach(e -> {
               e.setAccountLevel(department.getTier());
               e.setCommunity(null);
               e.setCommunityId(null);
            });
         } else if (department.getTier() == 4) {
            list.stream().forEach(e -> {
               e.setAccountLevel(department.getTier());
            });
         }
         systemUserService.updateBatchById(list);
      }
      return R.ok();
   }
   @DeleteMapping("/delete/{id}")
   @ApiOperation(value = "删除单位信息", tags = {"西区纪委后台-单位管理"})
   public R delete(@PathVariable("id") Integer id){
@@ -173,7 +226,7 @@
   public R updateStatus(@RequestBody  UpdateStatusDeptDto dto){
      Department department = departmentService.getById(dto.getId());
      department.setStatus(dto.getStatus());
      department.setRemark(dto.getRemark());
      department.setReason(dto.getReason());
      if(dto.getStatus()==2){
         SystemUserVo loginUserInfoWest = getLoginUserInfoWest();
         department.setOperId(loginUserInfoWest.getId());
@@ -183,9 +236,9 @@
      departmentService.updateById(department);
      return R.ok();
   }
   @GetMapping("/getDepartmentList/{tier}")
   @ApiOperation(value = "根据单位层级查询单位数据", tags = {"西区纪委后台-用户管理"})
   @ApiImplicitParams({
@@ -196,4 +249,26 @@
      List<Department> list = departmentService.list(new LambdaQueryWrapper<Department>().eq(Department::getTier, tier));
      return R.ok(list);
   }
   @ResponseBody
   @PostMapping("/importDepartment")
   @ApiOperation(value = "单位导入", tags = {"西区纪委后台-单位管理"})
   public R<?> importDepartment(MultipartFile file) {
      String s = file.getOriginalFilename();
      if (s == null || !("xls".equals(s.substring(s.lastIndexOf(".") + 1)) || "xlsx".equals(s.substring(s.lastIndexOf(".") + 1)))) {
         return R.fail("只能上传.xls或.xlsx格式的文件");
      }
      SystemUserVo loginUserInfoWest = getLoginUserInfoWest();
      String name = loginUserInfoWest.getName();
      Integer id = loginUserInfoWest.getId();
      try {
         return departmentService.importDepartment(s, file,name,id);
      } catch (Exception e) {
         e.printStackTrace();
      }
      return R.ok();
   }
}