【添加】处理取消关联或删除部门,但负责部门未同步删除的情况
This commit is contained in:
+1
-4
@@ -215,7 +215,7 @@ public class QueryGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//多字段排序 TODO 需要修改前端
|
//多字段排序
|
||||||
public static void doMultiFieldsOrder(QueryWrapper<?> queryWrapper,Map<String, String[]> parameterMap) {
|
public static void doMultiFieldsOrder(QueryWrapper<?> queryWrapper,Map<String, String[]> parameterMap) {
|
||||||
String column=null,order=null;
|
String column=null,order=null;
|
||||||
if(parameterMap!=null&& parameterMap.containsKey(ORDER_COLUMN)) {
|
if(parameterMap!=null&& parameterMap.containsKey(ORDER_COLUMN)) {
|
||||||
@@ -224,7 +224,6 @@ public class QueryGenerator {
|
|||||||
if(parameterMap!=null&& parameterMap.containsKey(ORDER_TYPE)) {
|
if(parameterMap!=null&& parameterMap.containsKey(ORDER_TYPE)) {
|
||||||
order = parameterMap.get(ORDER_TYPE)[0];
|
order = parameterMap.get(ORDER_TYPE)[0];
|
||||||
}
|
}
|
||||||
log.info("排序规则>>列:" + column + ",排序方式:" + order);
|
|
||||||
if (oConvertUtils.isNotEmpty(column) && oConvertUtils.isNotEmpty(order)) {
|
if (oConvertUtils.isNotEmpty(column) && oConvertUtils.isNotEmpty(order)) {
|
||||||
//字典字段,去掉字典翻译文本后缀
|
//字典字段,去掉字典翻译文本后缀
|
||||||
if(column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) {
|
if(column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) {
|
||||||
@@ -238,12 +237,10 @@ public class QueryGenerator {
|
|||||||
// 将现有排序 _ 前端传递排序条件{....,column: 'column1,column2',order: 'desc'} 翻译成sql "column1,column2 desc"
|
// 将现有排序 _ 前端传递排序条件{....,column: 'column1,column2',order: 'desc'} 翻译成sql "column1,column2 desc"
|
||||||
// 修改为 _ 前端传递排序条件{....,column: 'column1,column2',order: 'desc'} 翻译成sql "column1 desc,column2 desc"
|
// 修改为 _ 前端传递排序条件{....,column: 'column1,column2',order: 'desc'} 翻译成sql "column1 desc,column2 desc"
|
||||||
if (order.toUpperCase().indexOf(ORDER_TYPE_ASC)>=0) {
|
if (order.toUpperCase().indexOf(ORDER_TYPE_ASC)>=0) {
|
||||||
// queryWrapper.orderByAsc(oConvertUtils.camelToUnderline(column));
|
|
||||||
String columnStr = oConvertUtils.camelToUnderline(column);
|
String columnStr = oConvertUtils.camelToUnderline(column);
|
||||||
String[] columnArray = columnStr.split(",");
|
String[] columnArray = columnStr.split(",");
|
||||||
queryWrapper.orderByAsc(Arrays.asList(columnArray));
|
queryWrapper.orderByAsc(Arrays.asList(columnArray));
|
||||||
} else {
|
} else {
|
||||||
// queryWrapper.orderByDesc(oConvertUtils.camelToUnderline(column));
|
|
||||||
String columnStr = oConvertUtils.camelToUnderline(column);
|
String columnStr = oConvertUtils.camelToUnderline(column);
|
||||||
String[] columnArray = columnStr.split(",");
|
String[] columnArray = columnStr.split(",");
|
||||||
queryWrapper.orderByDesc(Arrays.asList(columnArray));
|
queryWrapper.orderByDesc(Arrays.asList(columnArray));
|
||||||
|
|||||||
+12
-12
@@ -217,21 +217,21 @@ public class SysDepartController {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
//@RequiresRoles({"admin"})
|
//@RequiresRoles({"admin"})
|
||||||
@RequiresPermissions("sys:depart:del")
|
@RequiresPermissions("sys:depart:del")
|
||||||
@RequestMapping(value = "/delete", method = RequestMethod.DELETE)
|
@RequestMapping(value = "/delete", method = RequestMethod.DELETE)
|
||||||
@CacheEvict(value= {CacheConstant.SYS_DEPARTS_CACHE,CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries=true)
|
@CacheEvict(value= {CacheConstant.SYS_DEPARTS_CACHE,CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries=true)
|
||||||
public Result<Object> delete(@RequestParam(name="id",required=true) String id) {
|
public Result<Object> delete(@RequestParam(name="id",required=true) String id) {
|
||||||
SysDepart sysDepart = sysDepartService.getById(id);
|
SysDepart sysDepart = sysDepartService.getById(id);
|
||||||
if(sysDepart==null) {
|
if(sysDepart==null) {
|
||||||
return Result.error500("未找到对应实体");
|
return Result.error500("未找到对应实体");
|
||||||
}else {
|
}else {
|
||||||
boolean ok = sysDepartService.delete(id);
|
boolean ok = sysDepartService.delete(id);
|
||||||
if(ok) {
|
if(ok) {
|
||||||
return Result.OK("删除成功!");
|
return Result.OK("删除成功!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Result.OK();
|
return Result.OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+13
-5
@@ -37,6 +37,7 @@ import org.jeecgframework.poi.excel.entity.ImportParams;
|
|||||||
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
|
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||||
@@ -100,8 +101,6 @@ public class SysUserController {
|
|||||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,HttpServletRequest req) {
|
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,HttpServletRequest req) {
|
||||||
Result<IPage<SysUser>> result = new Result<IPage<SysUser>>();
|
Result<IPage<SysUser>> result = new Result<IPage<SysUser>>();
|
||||||
QueryWrapper<SysUser> queryWrapper = QueryGenerator.initQueryWrapper(user, req.getParameterMap());
|
QueryWrapper<SysUser> queryWrapper = QueryGenerator.initQueryWrapper(user, req.getParameterMap());
|
||||||
//TODO 外部模拟登陆临时账号,列表不显示
|
|
||||||
queryWrapper.ne("username","_reserve_user_external");
|
|
||||||
Page<SysUser> page = new Page<SysUser>(pageNo, pageSize);
|
Page<SysUser> page = new Page<SysUser>(pageNo, pageSize);
|
||||||
IPage<SysUser> pageList = sysUserService.page(page, queryWrapper);
|
IPage<SysUser> pageList = sysUserService.page(page, queryWrapper);
|
||||||
|
|
||||||
@@ -500,7 +499,7 @@ public class SysUserController {
|
|||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 批量将部门和用户信息建立关联关系
|
// 批量将部门和用户信息建立关联关系 TODO 错误需修改
|
||||||
String departIds = sysUserExcel.getDepartIds();
|
String departIds = sysUserExcel.getDepartIds();
|
||||||
if (StringUtils.isNotBlank(departIds)) {
|
if (StringUtils.isNotBlank(departIds)) {
|
||||||
String userId = sysUserExcel.getId();
|
String userId = sysUserExcel.getId();
|
||||||
@@ -763,6 +762,7 @@ public class SysUserController {
|
|||||||
QueryWrapper<SysUserDepart> queryWrapper = new QueryWrapper<SysUserDepart>();
|
QueryWrapper<SysUserDepart> queryWrapper = new QueryWrapper<SysUserDepart>();
|
||||||
queryWrapper.eq("dep_id", depId).eq("user_id",userId);
|
queryWrapper.eq("dep_id", depId).eq("user_id",userId);
|
||||||
sysUserDepartService.remove(queryWrapper);
|
sysUserDepartService.remove(queryWrapper);
|
||||||
|
sysDepartService.deleteHeadDeptAndUserRelatedByUser(depId, userId);
|
||||||
return Result.OK("删除成功!");
|
return Result.OK("删除成功!");
|
||||||
}catch(Exception e) {
|
}catch(Exception e) {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
@@ -774,13 +774,19 @@ public class SysUserController {
|
|||||||
* 批量删除指定机构的用户关系
|
* 批量删除指定机构的用户关系
|
||||||
*/
|
*/
|
||||||
@RequestMapping(value = "/deleteUserInDepartBatch", method = RequestMethod.DELETE)
|
@RequestMapping(value = "/deleteUserInDepartBatch", method = RequestMethod.DELETE)
|
||||||
|
@Transactional
|
||||||
public Result<Object> deleteUserInDepartBatch(
|
public Result<Object> deleteUserInDepartBatch(
|
||||||
@RequestParam(name="depId") String depId,
|
@RequestParam(name="depId") String depId,
|
||||||
@RequestParam(name="userIds",required=true) String userIds) {
|
@RequestParam(name="userIds",required=true) String userIds) {
|
||||||
try {
|
try {
|
||||||
|
List<String> userIdList = new ArrayList<>(Arrays.asList(userIds.split(",")));
|
||||||
|
|
||||||
QueryWrapper<SysUserDepart> queryWrapper = new QueryWrapper<SysUserDepart>();
|
QueryWrapper<SysUserDepart> queryWrapper = new QueryWrapper<SysUserDepart>();
|
||||||
queryWrapper.eq("dep_id", depId).in("user_id",Arrays.asList(userIds.split(",")));
|
queryWrapper.eq("dep_id", depId).in("user_id", userIdList);
|
||||||
sysUserDepartService.remove(queryWrapper);
|
sysUserDepartService.remove(queryWrapper);
|
||||||
|
for (String userId : userIdList){
|
||||||
|
sysDepartService.deleteHeadDeptAndUserRelatedByUser(depId, userId);
|
||||||
|
}
|
||||||
return Result.OK("删除成功!");
|
return Result.OK("删除成功!");
|
||||||
}catch(Exception e) {
|
}catch(Exception e) {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
@@ -1170,6 +1176,7 @@ public class SysUserController {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据userid获取用户信息和部门员工信息
|
* 根据userid获取用户信息和部门员工信息
|
||||||
*
|
*
|
||||||
@@ -1185,7 +1192,7 @@ public class SysUserController {
|
|||||||
Integer identity = sysUser.getUserIdentity();
|
Integer identity = sysUser.getUserIdentity();
|
||||||
map.put("sysUser",sysUser);
|
map.put("sysUser",sysUser);
|
||||||
if(identity!=null && identity==2){
|
if(identity!=null && identity==2){
|
||||||
//获取部门用户信息
|
//获取部门用户信息 TODO错误,需修改
|
||||||
String departIds = sysUser.getDepartIds();
|
String departIds = sysUser.getDepartIds();
|
||||||
if(StringUtils.isNotBlank(departIds)){
|
if(StringUtils.isNotBlank(departIds)){
|
||||||
List<String> departIdList = Arrays.asList(departIds.split(","));
|
List<String> departIdList = Arrays.asList(departIds.split(","));
|
||||||
@@ -1195,6 +1202,7 @@ public class SysUserController {
|
|||||||
}
|
}
|
||||||
return Result.OK(map);
|
return Result.OK(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 移动端查询部门用户信息
|
* 移动端查询部门用户信息
|
||||||
* @param departId
|
* @param departId
|
||||||
|
|||||||
+14
-2
@@ -1,10 +1,16 @@
|
|||||||
package com.jero.modules.system.service;
|
package com.jero.modules.system.service;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.jero.common.system.vo.SysDepartTreeModel;
|
import com.jero.common.system.vo.SysDepartTreeModel;
|
||||||
import com.jero.modules.system.entity.SysDepart;
|
import com.jero.modules.system.entity.SysDepart;
|
||||||
|
import com.jero.modules.system.entity.SysUser;
|
||||||
import com.jero.modules.system.model.DepartIdModel;
|
import com.jero.modules.system.model.DepartIdModel;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -69,12 +75,18 @@ public interface ISysDepartService extends IService<SysDepart>{
|
|||||||
*/
|
*/
|
||||||
boolean delete(String id);
|
boolean delete(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除部门的时候同步删除用户对应的负责部门
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
void deleteHeadDeptAndUserRelatedByUser(String id, String userIds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询SysDepart集合
|
* 查询SysDepart集合
|
||||||
* @param userId
|
* @param userId
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public List<SysDepart> queryUserDeparts(String userId);
|
List<SysDepart> queryUserDeparts(String userId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据用户名查询部门
|
* 根据用户名查询部门
|
||||||
@@ -86,7 +98,7 @@ public interface ISysDepartService extends IService<SysDepart>{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据部门id批量删除并删除其可能存在的子级部门
|
* 根据部门id批量删除并删除其可能存在的子级部门
|
||||||
* @param id
|
* @param ids
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
void deleteBatchWithChildren(List<String> ids);
|
void deleteBatchWithChildren(List<String> ids);
|
||||||
|
|||||||
+53
-2
@@ -2,6 +2,7 @@ package com.jero.modules.system.service.impl;
|
|||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
@@ -41,9 +42,13 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SysUserDepartMapper userDepartMapper;
|
private SysUserDepartMapper userDepartMapper;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SysDepartPermissionMapper departPermissionMapper;
|
private SysDepartPermissionMapper departPermissionMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysUserMapper userMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SysDepartTreeModel> queryMyDeptTreeList(String departIds) {
|
public List<SysDepartTreeModel> queryMyDeptTreeList(String departIds) {
|
||||||
//根据部门id获取所负责部门
|
//根据部门id获取所负责部门
|
||||||
@@ -221,6 +226,10 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
|
|||||||
userDepartMapper.delete(new LambdaQueryWrapper<SysUserDepart>().in(SysUserDepart::getDepId,idList));
|
userDepartMapper.delete(new LambdaQueryWrapper<SysUserDepart>().in(SysUserDepart::getDepId,idList));
|
||||||
//根据部门id删除部门授权
|
//根据部门id删除部门授权
|
||||||
departPermissionMapper.delete(new LambdaQueryWrapper<SysDepartPermission>().in(SysDepartPermission::getDepartId,idList));
|
departPermissionMapper.delete(new LambdaQueryWrapper<SysDepartPermission>().in(SysDepartPermission::getDepartId,idList));
|
||||||
|
//删除人员负责部门
|
||||||
|
for (String id : ids){
|
||||||
|
deleteHeadDeptAndUserRelated(id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -288,16 +297,58 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
|
|||||||
List<String> idList = new ArrayList<>();
|
List<String> idList = new ArrayList<>();
|
||||||
idList.add(id);
|
idList.add(id);
|
||||||
this.checkChildrenExists(id, idList);
|
this.checkChildrenExists(id, idList);
|
||||||
//清空部门树内存
|
|
||||||
//FindsDepartsChildrenUtil.clearDepartIdModel();
|
|
||||||
boolean ok = this.removeByIds(idList);
|
boolean ok = this.removeByIds(idList);
|
||||||
//根据部门id删除用户与部门关系
|
//根据部门id删除用户与部门关系
|
||||||
userDepartMapper.delete(new LambdaQueryWrapper<SysUserDepart>().in(SysUserDepart::getDepId,idList));
|
userDepartMapper.delete(new LambdaQueryWrapper<SysUserDepart>().in(SysUserDepart::getDepId,idList));
|
||||||
//根据部门id删除部门授权
|
//根据部门id删除部门授权
|
||||||
departPermissionMapper.delete(new LambdaQueryWrapper<SysDepartPermission>().in(SysDepartPermission::getDepartId,idList));
|
departPermissionMapper.delete(new LambdaQueryWrapper<SysDepartPermission>().in(SysDepartPermission::getDepartId,idList));
|
||||||
|
//查找用户中的上级部门关联的数据并删除
|
||||||
|
deleteHeadDeptAndUserRelated(id);
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除部门的时候同步删除用户对应的负责部门
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
private void deleteHeadDeptAndUserRelated(String id) {
|
||||||
|
List<SysUser> containParentDeptUser = userMapper.selectList(new LambdaQueryWrapper<SysUser>().like(SysUser::getDepartIds, id));
|
||||||
|
this.deleteHeadDpetFromUserInfo(id, containParentDeptUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除部门的时候同步删除用户对应的负责部门
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
public void deleteHeadDeptAndUserRelatedByUser(String id, String userIds) {
|
||||||
|
List<SysUser> containParentDeptUser = userMapper.selectList(new LambdaQueryWrapper<SysUser>().like(SysUser::getDepartIds, id).in(SysUser::getId, userIds));
|
||||||
|
this.deleteHeadDpetFromUserInfo(id, containParentDeptUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据部门id和用户信息进行数据的删除处理
|
||||||
|
* @param id
|
||||||
|
* @param containParentDeptUser
|
||||||
|
*/
|
||||||
|
private void deleteHeadDpetFromUserInfo(String id, List<SysUser> containParentDeptUser) {
|
||||||
|
for (SysUser sysUser : containParentDeptUser) {
|
||||||
|
List<String> headDepartList = new ArrayList<String>(Arrays.asList(sysUser.getDepartIds().split(",")));
|
||||||
|
// 遍历负责部门的list,如果存在本次删除id,则从list中移除
|
||||||
|
int headDepartNum = headDepartList.size();
|
||||||
|
for (int i = 0; i < headDepartNum; i++) {
|
||||||
|
String next = headDepartList.get(i);
|
||||||
|
if (next.equals(id)) {
|
||||||
|
headDepartList.remove(i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sysUser.setDepartIds(StrUtil.join(",", headDepartList));
|
||||||
|
userMapper.updateById(sysUser);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* delete 方法调用
|
* delete 方法调用
|
||||||
* @param id
|
* @param id
|
||||||
|
|||||||
Reference in New Issue
Block a user