权限功能调整

This commit is contained in:
tiger_zhou 2022-10-20 17:26:54 +08:00
parent b5c186aa13
commit 17fb69073e
6 changed files with 75 additions and 23 deletions

View File

@ -74,4 +74,14 @@ public class SystemAbilityController {
return this.abilityService.findByPage(req);
}
/**
* 自动生成
* @param userInfoVO
*/
@GetMapping("/autoCreate")
public void autoCreate(@RequestAttribute(value = LOGIN_INFO_KEY) LoginUserInfoVO userInfoVO){
this.abilityService.autoSynchMapSystemData(userInfoVO.getAccountVO().getId());
}
}

View File

@ -47,15 +47,16 @@ public class AcPermissionService {
//
Permission permission = new Permission();
permission.setName(name);
permission.setName(des);
permission.setDes(des);
permission.setCreatorId(user.getId());
permission.setCreateTime(LocalDateTime.now());
permission.setUpdateTime(LocalDateTime.now());
permissionDAO.insertSelective(permission);
//
Permission find = findByName(name);
BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.assertTrue(null != find, String.format("创建权限[name = %s]失败", name));
return String.valueOf(find.getId());
// Permission find = findByName(name);
// BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.assertTrue(null != find, String.format("创建权限[name = %s]失败", name));
return String.valueOf(permission.getId());
}
/**

View File

@ -17,6 +17,8 @@ import club.joylink.rtss.vo.permission.convertor.SystemAbilityConvertor;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@ -44,7 +46,7 @@ public class SystemAbilityService {
private PermissionSystemAbilityDAO permissionSystemAbilityDAO;
@Resource
@Lazy
private RtsMapSystemService mapSystemService;
private RtsMapSystemService rtsMapSystemService;
public SystemAbility findById(Long id){
@ -110,6 +112,8 @@ public class SystemAbilityService {
*/
public void updateTypeAndFunc(UpdateAbilityFunctionReqVo vo){
BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(Objects.nonNull(vo.getId()),"数据id不能为空");
BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(Objects.nonNull(vo.getType()),"功能类型不能为空");
SystemAbility dbSA = this.findById(vo.getId());
dbSA.setType(vo.getType().name());
dbSA.setMapId(vo.getMapId());
@ -161,8 +165,11 @@ public class SystemAbilityService {
SystemAbilityExample example = new SystemAbilityExample();
SystemAbilityExample.Criteria criteria = example.createCriteria();
example.setOrderByClause(" id desc ");
if(Objects.equals(false,filterVO.getDesc())){
example.setOrderByClause(" id asc ");
if(Objects.nonNull(filterVO.getName())){
criteria.andNameLike(String.format("%%%s%%", filterVO.getName()));
}
if(Objects.nonNull(filterVO.getMapId())){
criteria.andMapIdEqualTo(filterVO.getMapId());
}
Page<SystemAbility> page = (Page<SystemAbility>) this.systemAbilityDAO.selectByExample(example);
List<SystemAbilityRspVo> questionVOS = SystemAbilityRspVo.convert2VOList(page.getResult());
@ -178,28 +185,36 @@ public class SystemAbilityService {
@Transactional
public void autoSynchMapSystemData(Long userId){
List<RtsMapSystemVO> voList = this.mapSystemService.listQuery(new RtsMapSystemQueryVO());
List<RtsMapSystemVO> voList = this.rtsMapSystemService.listQuery(new RtsMapSystemQueryVO());
List<SystemAbility> abilities = this.systemAbilityDAO.selectByExample(new SystemAbilityExample());
List<SystemAbility> deleteList = Lists.newArrayList();
List<RtsMapSystemVO> saveList = Lists.newArrayList();
List<SynUpdateVO> updateList = Lists.newArrayList();
if(CollectionUtils.isEmpty(abilities)){
this.batchInsert(voList,userId);
}else{
Map<String,SystemAbility> abilityMap = abilities.stream().collect(Collectors.toMap(k->k.getType() + k.getAbilityId() + k.getMapId(), Function.identity()));
List<SystemAbility> tmpDelList = abilities.stream().filter(d->Objects.isNull(d.getType()) || Objects.isNull(d.getAbilityId()) || Objects.isNull(d.getMapId())).collect(Collectors.toList());
deleteList.addAll(tmpDelList);
Map<String,SystemAbility> abilityMap = abilities.stream().filter(d->Objects.nonNull(d.getType()) && Objects.nonNull(d.getAbilityId()) || Objects.nonNull(d.getMapId()))
.collect(Collectors.toMap(k->k.getType() + k.getAbilityId() + k.getMapId(), Function.identity()));
Map<String,RtsMapSystemVO> mapSystemMap = voList.stream().collect(Collectors.toMap(k->k.getSimType().name() + k.getId() + k.getMapId(), Function.identity()));
List<SystemAbility> deleteList = Lists.newArrayList();
List<RtsMapSystemVO> saveList = Lists.newArrayList();
List<RtsMapSystemVO> updateList = Lists.newArrayList();
abilityMap.forEach((k,v)->{
if(!mapSystemMap.containsKey(k)){
deleteList.add(v);
}
});
mapSystemMap.forEach((k,v)->{
if(abilityMap.containsKey(k)){
updateList.add(v);
SystemAbility sa = abilityMap.get(k);
if(Objects.nonNull(sa)){
updateList.add(new SynUpdateVO(v,sa.getId()));
}else{
saveList.add(v);
}
});
this.batchInsert(saveList,userId);
this.batchUpdate(updateList);
this.batchDelete(deleteList);
}
}
@ -209,13 +224,39 @@ public class SystemAbilityService {
sa.setCreateTime(LocalDateTime.now());
sa.setUpdateTime(LocalDateTime.now());
sa.setCreatorId(userId);
this.systemAbilityDAO.insertSelective(sa);
}
}
private void batchUpdate(List<RtsMapSystemVO> list){
private void batchUpdate(List<SynUpdateVO> list){
// List<SystemAbility> lists = SystemAbilityConvertor.converMapSystemVOToAbility(list);
SystemAbilityExample example = new SystemAbilityExample();
SystemAbilityExample.Criteria criteria = example.createCriteria();
for (SynUpdateVO sa : list) {
criteria.andIdEqualTo(sa.getAbilityId());
SystemAbility vo = SystemAbilityConvertor.converMapSystemVOToAbility(sa.getVo());
vo.setUpdateTime(LocalDateTime.now());
this.systemAbilityDAO.updateByExampleSelective(vo,example);
}
}
private void batchDelete(List<SystemAbility> list){
if(CollectionUtils.isEmpty(list)){
return;
}
List<Long> idList = list.stream().map(SystemAbility::getId).collect(Collectors.toList());
PermissionSystemAbilityExample example = new PermissionSystemAbilityExample();
example.createCriteria().andSystemAbilityIdIn(idList);
SystemAbilityExample abilityExample = new SystemAbilityExample();
abilityExample.createCriteria().andIdIn(idList);
this.permissionSystemAbilityDAO.deleteByExample(example);
this.systemAbilityDAO.deleteByExample(abilityExample);
}
@Data
@AllArgsConstructor
public static class SynUpdateVO{
private RtsMapSystemVO vo;
private Long abilityId;
}
}

View File

@ -37,6 +37,7 @@ public class RtsMapSystemVO {
private LocalDateTime updateTime;
public RtsMapSystemVO(RtsMapSystem entity) {
id = entity.getId();
mapId = entity.getMapId();

View File

@ -5,8 +5,6 @@ import lombok.Data;
@Data
public class FindAbilityBasicByPageReqVo extends PageQueryVO {
/**
* 是否降序true-降序false-升序默认值为true;
*/
private Boolean desc = true;
private String name;
private Long mapId;
}

View File

@ -1,6 +1,7 @@
package club.joylink.rtss.vo.permission;
import club.joylink.rtss.entity.permission.SystemAbility;
import club.joylink.rtss.simulation.cbtc.Simulation;
import com.google.common.collect.Lists;
import lombok.Data;
@ -18,7 +19,7 @@ public class SystemAbilityRspVo {
/**
* 功能的类型
*/
private SystemAbilityType type;
private Simulation.Type type;
/**
* 关联的功能的id,由type决定关联表
@ -59,7 +60,7 @@ public class SystemAbilityRspVo {
SystemAbilityRspVo vo = new SystemAbilityRspVo();
vo.setId(sa.getId());
if(Objects.nonNull(sa.getType())){
vo.setType(SystemAbilityType.valueOf(sa.getType()));
vo.setType(Simulation.Type.valueOf(sa.getType()));
}
vo.setAbilityId(sa.getAbilityId());
vo.setName(sa.getName());