Commit 66fbb0ad authored by chenyuxi's avatar chenyuxi

feat: 部门花名册数+查花名册相关人数

parent e87ec600
...@@ -78,4 +78,7 @@ public class TEmployeeProjectBelongDeptSearchVo extends EmployeeProjectScpVO { ...@@ -78,4 +78,7 @@ public class TEmployeeProjectBelongDeptSearchVo extends EmployeeProjectScpVO {
@Schema(description = "查询limit 数据条数") @Schema(description = "查询limit 数据条数")
private int limitEnd; private int limitEnd;
@Schema(description = "部门下人员档案数量")
private Integer empNum;
} }
...@@ -26,7 +26,10 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeProjectBelongDeptSearchV ...@@ -26,7 +26,10 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeProjectBelongDeptSearchV
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.UserPermissionVo;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog; import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -34,6 +37,8 @@ import org.springframework.security.access.prepost.PreAuthorize; ...@@ -34,6 +37,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/** /**
...@@ -113,4 +118,70 @@ public class TEmployeeProjectBelongDeptController { ...@@ -113,4 +118,70 @@ public class TEmployeeProjectBelongDeptController {
tEmployeeProjectBelongDeptService.listExport(response,searchVo); tEmployeeProjectBelongDeptService.listExport(response,searchVo);
} }
/**
* 获取指定部门下花名册总数
* @param tEmployeeProjectBelongDept 花名册查询
* @return R<Integer> 花名册总数
* @author chenyuxi
* @since 1.9.7
*/
@GetMapping(value = "/getDeptCount")
public R<Integer> getDeptCount(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept) {
if(Common.isEmpty(tEmployeeProjectBelongDept.getEmpDeptId())){
R.failed("所属部门id不能为空");
}
if(Common.isEmpty(tEmployeeProjectBelongDept.getDeptId())){
R.failed("项目ID不能为空");
}
return R.ok(tEmployeeProjectBelongDeptService.getDeptCount(tEmployeeProjectBelongDept));
}
/**
* 根据权限获取对应部门ID下的花名册总数Map
* @param tEmployeeProjectBelongDept 花名册查询
* @return R<Integer> 花名册总数
* @author chenyuxi
* @since 1.9.7
*/
@GetMapping(value = "/getDeptCountMap")
public R<Map<String,Integer>> getDeptCountMap(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept) {
if(Common.isEmpty(tEmployeeProjectBelongDept.getDeptId())){
R.failed("项目ID不能为空");
}
YifuUser user = SecurityUtils.getUser();
if (user == null || Common.isEmpty(user.getId())) {
return R.failed(CommonConstants.PLEASE_LOG_IN);
}
List<UserPermissionVo> cspPermList = user.getCspPermMap();
if(Common.isEmpty(cspPermList)){
return R.failed("获取用户权限失败!");
}
// 获取用户在当前项目下的权限
UserPermissionVo authority = null;
for (UserPermissionVo userPermissionVo : cspPermList) {
if(tEmployeeProjectBelongDept.getDeptId().equals(userPermissionVo.getProjectId())){
authority = userPermissionVo;
}
}
if(Common.isEmpty(authority)){
return R.failed("获取用户在当前项目下的权限失败!");
}
return R.ok(tEmployeeProjectBelongDeptService.getDeptCountMap(tEmployeeProjectBelongDept,authority));
}
/**
* 没有关联部门的花名册总数
* @param tEmployeeProjectBelongDept 花名册查询
* @return R<Integer> 花名册总数
* @author chenyuxi
* @since 1.9.7
*/
@GetMapping(value = "/getNoneDeptCount")
public R<Integer> getNoneDeptCount(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept) {
if(Common.isEmpty(tEmployeeProjectBelongDept.getDeptId())){
R.failed("项目ID不能为空");
}
return R.ok(tEmployeeProjectBelongDeptService.getNoneDeptCount(tEmployeeProjectBelongDept));
}
} }
...@@ -27,6 +27,7 @@ import org.apache.ibatis.annotations.Mapper; ...@@ -27,6 +27,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* 项目档案所属部门表 * 项目档案所属部门表
...@@ -53,4 +54,13 @@ public interface TEmployeeProjectBelongDeptMapper extends BaseMapper<TEmployeePr ...@@ -53,4 +54,13 @@ public interface TEmployeeProjectBelongDeptMapper extends BaseMapper<TEmployeePr
List<EmployeeProjectScpVO> getTEmployeeProjectBelongDeptList( List<EmployeeProjectScpVO> getTEmployeeProjectBelongDeptList(
@Param("tEmployeeProjectBelongDept") TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept); @Param("tEmployeeProjectBelongDept") TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept);
// 获取部门下花名册总数
int getDeptCount(@Param("tEmployeeProjectBelongDept") TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept);
// 根据权限获取对应部门ID下的花名册总数Map
List<TEmployeeProjectBelongDeptSearchVo> getDeptCountMap(@Param("deptId") String deptId,@Param("departIdSet") Set<String> departIdSet);
// 没有关联部门的花名册总数
int getNoneDeptCount(@Param("tEmployeeProjectBelongDept") TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept);
} }
...@@ -23,8 +23,10 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -23,8 +23,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeProjectBelongDept; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeProjectBelongDept;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeProjectScpVO; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeProjectScpVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeProjectBelongDeptSearchVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeProjectBelongDeptSearchVo;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.UserPermissionVo;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/** /**
* 项目档案所属部门表 * 项目档案所属部门表
...@@ -50,4 +52,28 @@ public interface TEmployeeProjectBelongDeptService extends IService<TEmployeePro ...@@ -50,4 +52,28 @@ public interface TEmployeeProjectBelongDeptService extends IService<TEmployeePro
**/ **/
void listExport(HttpServletResponse response, TEmployeeProjectBelongDeptSearchVo searchVo); void listExport(HttpServletResponse response, TEmployeeProjectBelongDeptSearchVo searchVo);
/**
* 获取部门下花名册总数
*
* @param tEmployeeProjectBelongDept 花名册查询
* @return Integer 花名册总数
*/
Integer getDeptCount(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept);
/**
* 根据权限获取对应部门ID下的花名册总数Map
*
* @param tEmployeeProjectBelongDept 花名册查询
* @return Map<String,Integer> 对应部门ID下的花名册总数Map
*/
Map<String,Integer> getDeptCountMap(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept, UserPermissionVo authority);
/**
* 没有关联部门的花名册总数
*
* @param tEmployeeProjectBelongDept 花名册查询
* @return Integer 花名册总数
*/
Integer getNoneDeptCount(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept);
} }
...@@ -22,6 +22,7 @@ import com.alibaba.excel.write.metadata.WriteSheet; ...@@ -22,6 +22,7 @@ import com.alibaba.excel.write.metadata.WriteSheet;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.SysDeptVo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeProjectBelongDept; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeProjectBelongDept;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TEmployeeProjectBelongDeptMapper; import com.yifu.cloud.plus.v1.yifu.archives.mapper.TEmployeeProjectBelongDeptMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmployeeProjectBelongDeptService; import com.yifu.cloud.plus.v1.yifu.archives.service.TEmployeeProjectBelongDeptService;
...@@ -34,6 +35,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; ...@@ -34,6 +35,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil; import com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.DictConverter; import com.yifu.cloud.plus.v1.yifu.common.core.util.DictConverter;
import com.yifu.cloud.plus.v1.yifu.common.core.util.RedisUtil; import com.yifu.cloud.plus.v1.yifu.common.core.util.RedisUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.UserPermissionVo;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -41,10 +43,8 @@ import javax.servlet.ServletOutputStream; ...@@ -41,10 +43,8 @@ import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap; import java.util.stream.Collectors;
import java.util.List;
import java.util.Map;
/** /**
* 项目档案所属部门表 * 项目档案所属部门表
...@@ -147,4 +147,48 @@ public class TEmployeeProjectBelongDeptServiceImpl extends ServiceImpl<TEmployee ...@@ -147,4 +147,48 @@ public class TEmployeeProjectBelongDeptServiceImpl extends ServiceImpl<TEmployee
} }
} }
/**
* 获取部门下花名册总数
*
* @param tEmployeeProjectBelongDept 花名册查询
* @return Integer 花名册总数
*/
@Override
public Integer getDeptCount(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept) {
return baseMapper.getDeptCount(tEmployeeProjectBelongDept);
}
/**
* 根据权限获取对应部门ID下的花名册总数Map
*
* @param tEmployeeProjectBelongDept 花名册查询
* @return Map<String, Integer> 对应部门ID下的花名册总数Map
*/
@Override
public Map<String, Integer> getDeptCountMap(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept, UserPermissionVo authority) {
Map<String, Integer> deptCountMap = new HashMap<>();
Set<String> departIdSet = authority.getDepartIdSet();
// 有全部权限
if(authority.isHaveAll()){
departIdSet = new HashSet<>();
}
List<TEmployeeProjectBelongDeptSearchVo> sysDeptList = baseMapper.getDeptCountMap(tEmployeeProjectBelongDept.getDeptId(),departIdSet);
if(Common.isNotNull(sysDeptList)) {
for (TEmployeeProjectBelongDeptSearchVo deptVo : sysDeptList) {
deptCountMap.put(deptVo.getEmpDeptId(),deptVo.getEmpNum());
}
}
return deptCountMap;
}
/**
* 没有关联部门的花名册总数
*
* @param tEmployeeProjectBelongDept 花名册查询
* @return Integer 花名册总数
*/
@Override
public Integer getNoneDeptCount(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept) {
return baseMapper.getNoneDeptCount(tEmployeeProjectBelongDept);
}
} }
...@@ -150,5 +150,55 @@ ...@@ -150,5 +150,55 @@
</if> </if>
</select> </select>
<!-- 获取部门下花名册总数 -->
<select id="getDeptCount" resultType="java.lang.Integer">
select count(1)
from t_employee_project_belong_dept b
LEFT JOIN t_employee_project a on b.id = a.id
<where>
a.DELETE_FLAG ='0'
<if test="tEmployeeProjectBelongDept.deptId != null and tEmployeeProjectBelongDept.deptId.trim() != ''">
AND a.DEPT_ID = #{tEmployeeProjectBelongDept.deptId}
</if>
<if test="tEmployeeProjectBelongDept.empDeptId != null and tEmployeeProjectBelongDept.empDeptId.trim() != ''">
AND b.emp_deptid = #{tEmployeeProjectBelongDept.empDeptId}
</if>
</where>
</select>
<!-- 根据权限获取对应部门ID下的花名册总数Map -->
<select id="getDeptCountMap" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeProjectBelongDeptSearchVo">
select emp_deptid as empDeptId, count(emp_deptid) as empNum
from t_employee_project_belong_dept b
LEFT JOIN t_employee_project a on b.id = a.id
<where>
a.DELETE_FLAG ='0'
<if test="deptId != null and deptId.trim() != ''">
AND a.DEPT_ID = #{deptId}
</if>
<if test="departIdSet != null and departIdSet.size > 0">
AND b.emp_deptid in
<foreach item="idStr" index="index" collection="departIdSet" open="(" separator=","
close=")">
#{idStr}
</foreach>
</if>
</where>
group by emp_deptid
</select>
<!-- 没有关联部门的花名册总数 -->
<select id="getNoneDeptCount" resultType="java.lang.Integer">
select count(1)
from t_employee_project a
LEFT JOIN t_employee_project_belong_dept b on a.id=b.id
<where>
a.DELETE_FLAG ='0' and b.id is null
<if test="tEmployeeProjectBelongDept.deptId != null and tEmployeeProjectBelongDept.deptId.trim() != ''">
AND a.DEPT_ID = #{tEmployeeProjectBelongDept.deptId}
</if>
</where>
</select>
</mapper> </mapper>
...@@ -6,6 +6,8 @@ import lombok.Data; ...@@ -6,6 +6,8 @@ import lombok.Data;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set;
/** /**
* 客户服务平台——部门包装类 * 客户服务平台——部门包装类
...@@ -28,4 +30,14 @@ public class SysDeptVo extends SysDept { ...@@ -28,4 +30,14 @@ public class SysDeptVo extends SysDept {
* 部门人数 * 部门人数
*/ */
private String peopleNum; private String peopleNum;
/**
* 花名册部门对应的人数
*/
private Map<String,Integer> deptPeopleNumMap;
/**
* 部门ID集合
*/
private Set<String> departIdSet;
} }
...@@ -25,8 +25,11 @@ import com.yifu.cloud.plus.v1.yifu.admin.service.SysDeptService; ...@@ -25,8 +25,11 @@ import com.yifu.cloud.plus.v1.yifu.admin.service.SysDeptService;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.UserPermissionVo;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog; import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner; import com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
...@@ -163,11 +166,13 @@ public class DeptController { ...@@ -163,11 +166,13 @@ public class DeptController {
/** /**
* 客户服务平台——获取部门树(用于下拉选择) * 客户服务平台——获取部门树(用于下拉选择)
* @return 树形菜单 * @return 树形菜单
* @author chenyuxi
* @since 1.9.7
*/ */
@GetMapping(value = "/csp/list") @GetMapping(value = "/csp/list")
public R<List<DeptTreeSelectVO>> cspList(SysDeptVo dept) { public R<List<DeptTreeSelectVO>> cspList(SysDeptVo dept) {
if(Common.isEmpty(dept.getProjectNo())){ if(Common.isEmpty(dept.getProjectNo())){
R.failed("项目编码不能为空"); return R.failed("项目编码不能为空");
} }
return R.ok(sysDeptService.cspDeptTreeSelect(dept)); return R.ok(sysDeptService.cspDeptTreeSelect(dept));
} }
...@@ -175,29 +180,67 @@ public class DeptController { ...@@ -175,29 +180,67 @@ public class DeptController {
/** /**
* 客户服务平台——获取部门树(带部门下人数) * 客户服务平台——获取部门树(带部门下人数)
* @return 树形菜单 * @return 树形菜单
* @author chenyuxi
* @since 1.9.7
*/ */
@GetMapping(value = "/csp/tree") @GetMapping(value = "/csp/tree")
public R<List<DeptTreeSelectVO>> cspTree(SysDeptVo dept) { public R<List<DeptTreeSelectVO>> cspTree(SysDeptVo dept) {
if(Common.isEmpty(dept.getProjectNo())){ if(Common.isEmpty(dept.getProjectNo())){
R.failed("项目编码不能为空"); return R.failed("项目编码不能为空");
} }
return R.ok(sysDeptService.cspDeptTree(dept)); return R.ok(sysDeptService.cspDeptTree(dept));
} }
/**
* 客户服务平台——获取花名册的部门树(带部门下人数)
* @return 树形菜单
* @author chenyuxi
* @since 1.9.7
*/
@PostMapping(value = "/csp/rosterTree")
public R<List<DeptTreeSelectVO>> cspRosterTree(@RequestBody SysDeptVo dept) {
if(Common.isEmpty(dept.getProjectNo())){
return R.failed("项目编码不能为空");
}
YifuUser user = SecurityUtils.getUser();
if (user == null || Common.isEmpty(user.getId())) {
return R.failed(CommonConstants.PLEASE_LOG_IN);
}
List<UserPermissionVo> cspPermList = user.getCspPermMap();
if(Common.isEmpty(cspPermList)){
return R.failed("获取用户权限失败!");
}
// 获取用户在当前项目下的权限
UserPermissionVo authority = null;
for (UserPermissionVo userPermissionVo : cspPermList) {
if(dept.getProjectNo().equals(userPermissionVo.getProjectNo())){
authority = userPermissionVo;
}
}
if(Common.isEmpty(authority)){
return R.failed("获取用户在当前项目下的权限失败!");
}
return R.ok(sysDeptService.cspRosterTree(dept, authority));
}
/** /**
* 客户服务平台——添加部门 * 客户服务平台——添加部门
* @param sysDept 实体 * @param sysDept 实体
* @return success/false * @return success/false
* @author chenyuxi
* @since 1.9.7
*/ */
@SysLog("客户服务平台——添加部门") @SysLog("客户服务平台——添加部门")
@PostMapping("/csp") @PostMapping("/csp")
public R<String> saveCspDept(@RequestBody SysDept sysDept) { public R<String> saveCspDept(@RequestBody SysDept sysDept) {
if(Common.isEmpty(sysDept.getProjectNo())){ if(Common.isEmpty(sysDept.getProjectNo())){
R.failed("项目编码不能为空"); return R.failed("项目编码不能为空");
} }
// todo 名字长度
if(Common.isEmpty(sysDept.getName())){ if(Common.isEmpty(sysDept.getName())){
R.failed("部门名称不能为空"); return R.failed("部门名称不能为空");
}
if(sysDept.getName().length()>50){
return R.failed("部门名称不能超过50个字");
} }
// 父级不传,默认增顶级部门 // 父级不传,默认增顶级部门
if (Common.isEmpty(sysDept.getParentId())){ if (Common.isEmpty(sysDept.getParentId())){
...@@ -210,15 +253,20 @@ public class DeptController { ...@@ -210,15 +253,20 @@ public class DeptController {
* 客户服务平台——编辑部门 * 客户服务平台——编辑部门
* @param sysDept 实体 * @param sysDept 实体
* @return success/false * @return success/false
* @author chenyuxi
* @since 1.9.7
*/ */
@SysLog("客户服务平台——编辑部门") @SysLog("客户服务平台——编辑部门")
@PutMapping("/csp") @PutMapping("/csp")
public R<String> updateCspDept(@RequestBody SysDept sysDept) { public R<String> updateCspDept(@RequestBody SysDept sysDept) {
if(Common.isEmpty(sysDept.getDeptId())){ if(Common.isEmpty(sysDept.getDeptId())){
R.failed("ID不能为空"); return R.failed("ID不能为空");
} }
if(Common.isEmpty(sysDept.getName())){ if(Common.isEmpty(sysDept.getName())){
R.failed("部门名称不能为空"); return R.failed("部门名称不能为空");
}
if(sysDept.getName().length()>50){
return R.failed("部门名称不能超过50个字");
} }
return sysDeptService.updateCspDept(sysDept); return sysDeptService.updateCspDept(sysDept);
} }
...@@ -227,12 +275,14 @@ public class DeptController { ...@@ -227,12 +275,14 @@ public class DeptController {
* 删除 * 删除
* @param id ID * @param id ID
* @return success/false * @return success/false
* @author chenyuxi
* @since 1.9.7
*/ */
@SysLog("客户服务平台——删除部门") @SysLog("客户服务平台——删除部门")
@DeleteMapping("/csp/{id:\\d+}") @DeleteMapping("/csp/{id:\\d+}")
public R<String> removeCspDeptById(@PathVariable Long id) { public R<String> removeCspDeptById(@PathVariable Long id) {
if(Common.isEmpty(id)){ if(Common.isEmpty(id)){
R.failed("项目Id不能为空"); return R.failed("项目Id不能为空");
} }
return sysDeptService.removeCspDeptById(id); return sysDeptService.removeCspDeptById(id);
} }
...@@ -240,11 +290,13 @@ public class DeptController { ...@@ -240,11 +290,13 @@ public class DeptController {
/** /**
* 客户服务平台——获取项目下部门总数 * 客户服务平台——获取项目下部门总数
* @return R<Integer> 部门总数 * @return R<Integer> 部门总数
* @author chenyuxi
* @since 1.9.7
*/ */
@GetMapping(value = "/csp/getDeptCount") @GetMapping(value = "/csp/getDeptCount")
public R<Integer> cspDeptCount(SysDeptVo dept) { public R<Integer> cspDeptCount(SysDeptVo dept) {
if(Common.isEmpty(dept.getProjectNo())){ if(Common.isEmpty(dept.getProjectNo())){
R.failed("项目编码不能为空"); return R.failed("项目编码不能为空");
} }
return R.ok(sysDeptService.cspDeptCount(dept.getProjectNo())); return R.ok(sysDeptService.cspDeptCount(dept.getProjectNo()));
} }
...@@ -258,4 +310,5 @@ public class DeptController { ...@@ -258,4 +310,5 @@ public class DeptController {
public R<Boolean> cspUpdateDept(@RequestBody SysDeptMoveVo dept) { public R<Boolean> cspUpdateDept(@RequestBody SysDeptMoveVo dept) {
return sysDeptService.cspUpdateDept(dept); return sysDeptService.cspUpdateDept(dept);
} }
} }
...@@ -58,10 +58,10 @@ public class UserDeptPermissionController { ...@@ -58,10 +58,10 @@ public class UserDeptPermissionController {
@GetMapping("/info") @GetMapping("/info")
public R<SysUserDeptPermission> getInfo(SysUserDeptPermission sysUserDeptPermission) { public R<SysUserDeptPermission> getInfo(SysUserDeptPermission sysUserDeptPermission) {
if(Common.isEmpty(sysUserDeptPermission.getProjectNo())){ if(Common.isEmpty(sysUserDeptPermission.getProjectNo())){
R.failed("项目编码不能为空"); return R.failed("项目编码不能为空");
} }
if(Common.isEmpty(sysUserDeptPermission.getUserId())){ if(Common.isEmpty(sysUserDeptPermission.getUserId())){
R.failed("用户ID不能为空"); return R.failed("用户ID不能为空");
} }
return R.ok(sysUserDeptPermissionService.getInfo(sysUserDeptPermission.getProjectNo(),sysUserDeptPermission.getUserId())); return R.ok(sysUserDeptPermissionService.getInfo(sysUserDeptPermission.getProjectNo(),sysUserDeptPermission.getUserId()));
} }
...@@ -75,18 +75,18 @@ public class UserDeptPermissionController { ...@@ -75,18 +75,18 @@ public class UserDeptPermissionController {
@PostMapping("/permission") @PostMapping("/permission")
public R<String> saveUserPermission(@RequestBody SysUserDeptPermission sysUserDeptPermission) { public R<String> saveUserPermission(@RequestBody SysUserDeptPermission sysUserDeptPermission) {
if(Common.isEmpty(sysUserDeptPermission.getProjectNo())){ if(Common.isEmpty(sysUserDeptPermission.getProjectNo())){
R.failed("项目编码不能为空"); return R.failed("项目编码不能为空");
} }
if(Common.isEmpty(sysUserDeptPermission.getUserId())){ if(Common.isEmpty(sysUserDeptPermission.getUserId())){
R.failed("用户ID不能为空"); return R.failed("用户ID不能为空");
} }
if (Common.isEmpty(sysUserDeptPermission.getPermissionsType())){ if (Common.isEmpty(sysUserDeptPermission.getPermissionsType())){
R.failed("数据权限不能为空"); return R.failed("数据权限不能为空");
} }
if (CommonConstants.THREE_STRING.equals(sysUserDeptPermission.getPermissionsType()) if (CommonConstants.THREE_STRING.equals(sysUserDeptPermission.getPermissionsType())
&& Common.isEmpty(sysUserDeptPermission.getAppointDeptScope()) && Common.isEmpty(sysUserDeptPermission.getAppointDeptScope())
){ ){
R.failed("指定部门时,部门范围不能为空"); return R.failed("指定部门时,部门范围不能为空");
} }
return sysUserDeptPermissionService.saveUserPermission(sysUserDeptPermission); return sysUserDeptPermissionService.saveUserPermission(sysUserDeptPermission);
} }
......
...@@ -24,6 +24,7 @@ import org.apache.ibatis.annotations.Mapper; ...@@ -24,6 +24,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* <p> * <p>
...@@ -63,6 +64,13 @@ public interface SysDeptMapper extends BaseMapper<SysDept> { ...@@ -63,6 +64,13 @@ public interface SysDeptMapper extends BaseMapper<SysDept> {
*/ */
List<SysDeptVo> cspDeptUserList(@Param("dept") SysDeptVo dept); List<SysDeptVo> cspDeptUserList(@Param("dept") SysDeptVo dept);
/**
* 客户服务平台——根据部门集合查询部门管理数据
*
* @param dept 部门信息
*/
List<SysDeptVo> cspDeptListByDeptIdSet(@Param("dept") SysDeptVo dept, @Param("departIdSet") Set<String> departIdSet);
/** /**
* 客户服务平台——查询同项目下同级部门 * 客户服务平台——查询同项目下同级部门
* *
......
...@@ -23,6 +23,7 @@ import com.yifu.cloud.plus.v1.yifu.admin.api.vo.DeptTreeSelectVO; ...@@ -23,6 +23,7 @@ import com.yifu.cloud.plus.v1.yifu.admin.api.vo.DeptTreeSelectVO;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.SysDeptMoveVo; import com.yifu.cloud.plus.v1.yifu.admin.api.vo.SysDeptMoveVo;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.SysDeptVo; import com.yifu.cloud.plus.v1.yifu.admin.api.vo.SysDeptVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.UserPermissionVo;
import java.util.List; import java.util.List;
...@@ -100,6 +101,15 @@ public interface SysDeptService extends IService<SysDept> { ...@@ -100,6 +101,15 @@ public interface SysDeptService extends IService<SysDept> {
*/ */
List<DeptTreeSelectVO> cspDeptTree(SysDeptVo dept); List<DeptTreeSelectVO> cspDeptTree(SysDeptVo dept);
/**
* 客户服务平台——获取花名册的部门树(带部门下人数)
*
* @param dept 部门信息
* @param authority 用户在当前项目下的权限
* @return 部门树列表
*/
List<DeptTreeSelectVO> cspRosterTree(SysDeptVo dept, UserPermissionVo authority);
/** /**
* 客户服务平台——添加部门 * 客户服务平台——添加部门
* *
......
...@@ -40,6 +40,7 @@ import com.yifu.cloud.plus.v1.yifu.admin.service.SysDeptService; ...@@ -40,6 +40,7 @@ import com.yifu.cloud.plus.v1.yifu.admin.service.SysDeptService;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.UserPermissionVo;
import com.yifu.cloud.plus.v1.yifu.common.ldap.util.LdapUtil; import com.yifu.cloud.plus.v1.yifu.common.ldap.util.LdapUtil;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils; import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -303,7 +304,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl ...@@ -303,7 +304,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
/** /**
* 客户服务平台——获取部门树(带部门下人数) * 客户服务平台——获取部门树(带部门下人数)
* * @param dept 部门信息
* @return 部门树列表 * @return 部门树列表
*/ */
@Override @Override
...@@ -322,6 +323,60 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl ...@@ -322,6 +323,60 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
return cspDeptTree; return cspDeptTree;
} }
/**
* 客户服务平台——获取部门树(带部门下人数)
* @param dept 部门信息
* @param authority 用户在当前项目下的权限
* @return 部门树列表
*/
@Override
public List<DeptTreeSelectVO> cspRosterTree(SysDeptVo dept, UserPermissionVo authority) {
List<DeptTreeSelectVO> cspDeptTree = new ArrayList<>();
List<SysDeptVo> sysDeptList = new ArrayList<>();
// 有全部权限
if(authority.isHaveAll()){
sysDeptList = baseMapper.cspDeptList(dept);
} else {
// 获取用户部门集合
Set<String> allDepartIdSet = new HashSet<>();
Set<String> departIdSet = authority.getDepartIdSet();
List<SysDeptVo> deptVoList = baseMapper.cspDeptListByDeptIdSet(dept, departIdSet);
if(Common.isNotNull(deptVoList)){
// 将指定部门和祖级部门都存到一个集合里
for (SysDeptVo deptVo : deptVoList) {
// 先存当前部门ID
allDepartIdSet.add(deptVo.getDeptId().toString());
String ancestors = deptVo.getAncestors();
String[] ancestorArr = ancestors.split(CommonConstants.COMMA_STRING);
Set<String> ancestorDeptIdSet = Arrays.stream(ancestorArr).collect(Collectors.toSet());
if(Common.isNotNull(ancestorDeptIdSet)){
allDepartIdSet.addAll(ancestorDeptIdSet);
}
}
}
sysDeptList = baseMapper.cspDeptListByDeptIdSet(dept, allDepartIdSet);
}
if(Common.isNotNull(sysDeptList)){
Map<String,Integer> deptPeopleNumMap = dept.getDeptPeopleNumMap();
for (SysDeptVo deptVo : sysDeptList) {
Integer peopleNum = deptPeopleNumMap.get(deptVo.getDeptId().toString());
if(Common.isEmpty(peopleNum)){
peopleNum = 0;
}
deptVo.setPeopleNum(peopleNum.toString());
}
// 组装部门树
List<SysDeptVo> deptTrees = buildDeptTree(sysDeptList);
if(Common.isNotNull(sysDeptList)){
// 数据库查到的对象到视图对象的映射
cspDeptTree = deptTrees.stream().map(DeptTreeSelectVO::new).collect(Collectors.toList());
}
}
return cspDeptTree;
}
/** /**
* 客户服务平台——组装部门树 * 客户服务平台——组装部门树
* *
......
...@@ -93,6 +93,23 @@ ...@@ -93,6 +93,23 @@
order by d.sort_order asc,d.create_time desc order by d.sort_order asc,d.create_time desc
</select> </select>
<select id="cspDeptListByDeptIdSet" resultType="com.yifu.cloud.plus.v1.yifu.admin.api.vo.SysDeptVo">
select d.dept_id, d.name, d.parent_id,d.ancestors,sort_order
from sys_dept d
where d.del_flag = '0'
<if test="dept.projectNo != null and dept.projectNo != ''">
AND d.project_no = #{dept.projectNo}
</if>
<if test="departIdSet != null and departIdSet.size > 0">
AND d.dept_id in
<foreach item="idStr" index="index" collection="departIdSet" open="(" separator=","
close=")">
#{idStr}
</foreach>
</if>
order by d.sort_order asc,d.create_time desc
</select>
<select id="checkDeptNameUnique" resultMap="BaseResultMap"> <select id="checkDeptNameUnique" resultMap="BaseResultMap">
select dept_id,name from sys_dept select dept_id,name from sys_dept
where project_no = #{projectNo} and name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1 where project_no = #{projectNo} and name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment