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