|
@@ -7,13 +7,14 @@ import com.lantone.common.dto.DataAuthDetailDTO;
|
|
|
import com.lantone.common.dto.DeptDTO;
|
|
|
import com.lantone.common.dto.GetDataAuthByIdDTO;
|
|
|
import com.lantone.common.dto.GetDataAuthPageDTO;
|
|
|
+import com.lantone.common.dto.GetDataAuthRoleDTO;
|
|
|
+import com.lantone.common.dto.GetDataAuthSoftwareDTO;
|
|
|
import com.lantone.common.dto.GetDoctorPageDTO;
|
|
|
import com.lantone.common.dto.HospitalDTO;
|
|
|
-import com.lantone.common.dto.RoleDTO;
|
|
|
-import com.lantone.common.dto.SoftwareRoleDataAuthDetailDTO;
|
|
|
-import com.lantone.common.dto.SysServiceDTO;
|
|
|
+import com.lantone.common.dto.SoftwareDataAuthDetail;
|
|
|
import com.lantone.common.exception.Asserts;
|
|
|
import com.lantone.common.util.DateUtil;
|
|
|
+import com.lantone.common.util.EntityUtil;
|
|
|
import com.lantone.common.util.ListUtil;
|
|
|
import com.lantone.common.util.SysUserUtils;
|
|
|
import com.lantone.common.vo.AddAuthSoftwareVO;
|
|
@@ -25,8 +26,6 @@ import com.lantone.dblayermbg.entity.DataAuth;
|
|
|
import com.lantone.dblayermbg.entity.DataAuthDetail;
|
|
|
import com.lantone.dblayermbg.entity.Dept;
|
|
|
import com.lantone.dblayermbg.entity.Hospital;
|
|
|
-import com.lantone.dblayermbg.entity.HospitalUser;
|
|
|
-import com.lantone.dblayermbg.entity.Menu;
|
|
|
import com.lantone.dblayermbg.entity.RoleSoftwareDataAuth;
|
|
|
import com.lantone.dblayermbg.entity.SoftwareDataAuth;
|
|
|
import com.lantone.dblayermbg.facade.DataAuthDetailFacade;
|
|
@@ -50,7 +49,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Set;
|
|
@@ -191,7 +189,7 @@ public class DataAuthManagementFacade {
|
|
|
DataAuth dataAuth = new DataAuth();
|
|
|
BeanUtils.copyProperties(addAuthVO.getAddDataAuthVO(), dataAuth);
|
|
|
dataAuth.setGmtCreate(DateUtil.now());
|
|
|
- dataAuth.setCreator(SysUserUtils.getCurrentPrincipleId()+"");
|
|
|
+ dataAuth.setCreator(SysUserUtils.getCurrentPrincipleId() + "");
|
|
|
if (dataAuthFacade.save(dataAuth)) {
|
|
|
//2.插入新建数据权限与系统的关系 sys_software_data_auth
|
|
|
return saveServiceDataAuth(addAuthVO.getAddDataAuthVO().getSoftwareVOS(), addAuthVO.getRoles(), dataAuth.getId());
|
|
@@ -211,12 +209,12 @@ public class DataAuthManagementFacade {
|
|
|
*/
|
|
|
private boolean saveServiceDataAuth(List<AddAuthSoftwareVO> softwareVOS, List<Long> roles, Long dataAuthId) {
|
|
|
AtomicBoolean out = new AtomicBoolean(false);
|
|
|
- softwareVOS.stream().forEach(softwareVO->{
|
|
|
+ softwareVOS.stream().forEach(softwareVO -> {
|
|
|
SoftwareDataAuth softwareDataAuth = new SoftwareDataAuth();
|
|
|
softwareDataAuth.setSoftwareId(softwareVO.getId());
|
|
|
softwareDataAuth.setDataAuthId(dataAuthId);
|
|
|
softwareDataAuth.setGmtCreate(DateUtil.now());
|
|
|
- softwareDataAuth.setCreator(SysUserUtils.getCurrentPrincipleId()+"");
|
|
|
+ softwareDataAuth.setCreator(SysUserUtils.getCurrentPrincipleId() + "");
|
|
|
if (softwareDataAuthFacade.save(softwareDataAuth)) {
|
|
|
//2.插入数据权限系统关联表与角色管理sys_role_service_data_auth
|
|
|
List<RoleSoftwareDataAuth> roleSoftwareDataAuths = new ArrayList<>();
|
|
@@ -225,35 +223,26 @@ public class DataAuthManagementFacade {
|
|
|
roleServiceDataAuth.setRoleId(roleId);
|
|
|
roleServiceDataAuth.setSoftwareDataAuthId(softwareDataAuth.getId());
|
|
|
roleServiceDataAuth.setGmtCreate(DateUtil.now());
|
|
|
- roleServiceDataAuth.setCreator(SysUserUtils.getCurrentPrincipleId()+"");
|
|
|
+ roleServiceDataAuth.setCreator(SysUserUtils.getCurrentPrincipleId() + "");
|
|
|
roleSoftwareDataAuths.add(roleServiceDataAuth);
|
|
|
}
|
|
|
if (new RoleSoftwareDataAuthServiceImpl().saveBatch(roleSoftwareDataAuths)) {
|
|
|
//3.插入数据权限详细信息。sys_data_auth_detail
|
|
|
//自定义时
|
|
|
List<DataAuthDetail> dataAuthDetails = new ArrayList<>();
|
|
|
- if (ListUtil.isNotEmpty(softwareVO.getDataAuthDetail().getDetailIds())
|
|
|
- && softwareVO.getDataAuthDetail().getDetailType() != null) {
|
|
|
- softwareVO.getDataAuthDetail().getDetailIds().stream().forEach(id -> {
|
|
|
+ if (ListUtil.isNotEmpty(softwareVO.getDataAuthDetails())) {
|
|
|
+ softwareVO.getDataAuthDetails().stream().forEach(dataAuthDetailVO -> {
|
|
|
DataAuthDetail dataAuthDetail = new DataAuthDetail();
|
|
|
- BeanUtils.copyProperties(softwareVO.getDataAuthDetail(), dataAuthDetail);
|
|
|
+ BeanUtils.copyProperties(dataAuthDetailVO, dataAuthDetail);
|
|
|
dataAuthDetail.setGmtCreate(DateUtil.now());
|
|
|
dataAuthDetail.setCreator(SysUserUtils.getCurrentPrincipleId() + "");
|
|
|
dataAuthDetail.setSoftwareDataAuthId(softwareDataAuth.getId());
|
|
|
- dataAuthDetail.setDetailId(id);
|
|
|
dataAuthDetails.add(dataAuthDetail);
|
|
|
});
|
|
|
- } else {
|
|
|
- DataAuthDetail dataAuthDetail = new DataAuthDetail();
|
|
|
- BeanUtils.copyProperties(softwareVO.getDataAuthDetail(), dataAuthDetail);
|
|
|
- dataAuthDetail.setGmtCreate(DateUtil.now());
|
|
|
- dataAuthDetail.setCreator(SysUserUtils.getCurrentPrincipleId() + "");
|
|
|
- dataAuthDetail.setSoftwareDataAuthId(softwareDataAuth.getId());
|
|
|
- dataAuthDetails.add(dataAuthDetail);
|
|
|
}
|
|
|
- if(new DataAuthDetailServiceImpl().saveBatch(dataAuthDetails)){
|
|
|
+ if (new DataAuthDetailServiceImpl().saveBatch(dataAuthDetails)) {
|
|
|
out.set(true);
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
Asserts.fail("数据权限详情插入失败");
|
|
|
}
|
|
|
} else {
|
|
@@ -274,157 +263,65 @@ public class DataAuthManagementFacade {
|
|
|
*/
|
|
|
public GetDataAuthByIdDTO getDataAuthById(Long Id) {
|
|
|
GetDataAuthByIdDTO dataAuthDTO = new GetDataAuthByIdDTO();
|
|
|
- List<SoftwareRoleDataAuthDetailDTO> serviceRoleDataAuthDetailDTOS = dataAuthFacade.getBaseMapper().getDataAuthById(Id);
|
|
|
- if (ListUtil.isNotEmpty(serviceRoleDataAuthDetailDTOS)) {
|
|
|
- //1.添加数据权限信息
|
|
|
- dataAuthDTO.setId(serviceRoleDataAuthDetailDTOS.get(0).getDataAuthId());
|
|
|
- dataAuthDTO.setName(serviceRoleDataAuthDetailDTOS.get(0).getDataAuthName());
|
|
|
- dataAuthDTO.setStatus(serviceRoleDataAuthDetailDTOS.get(0).getStatus());
|
|
|
- //2.获取系统信息
|
|
|
- Set<Long> serviceSet = serviceRoleDataAuthDetailDTOS.stream().map(SoftwareRoleDataAuthDetailDTO::getSoftwareId).collect(Collectors.toSet());
|
|
|
- List<SysServiceDTO> sysServiceDTOS = new ArrayList<>();
|
|
|
- serviceSet.stream().forEach(id -> {
|
|
|
- //3.添加服务信息
|
|
|
- SysServiceDTO sysServiceDTO = new SysServiceDTO();
|
|
|
- sysServiceDTO.setId(id);
|
|
|
- sysServiceDTO.setName(ServiceEnum.getName(id.intValue()));
|
|
|
- //4.1添加数据权限详情列表
|
|
|
- // List<ServiceRoleDataAuthDetailDTO> oneServiceRoleDataAuthDetailDTOS = serviceRoleDataAuthDetailDTOS.stream()
|
|
|
- // .filter(serviceRoleDataAuthDetailDTO -> serviceRoleDataAuthDetailDTO.getServiceId() == id).collect(Collectors.toList());
|
|
|
- List<SoftwareRoleDataAuthDetailDTO> oneServiceRoleDataAuthDetailDTOS = dataAuthFacade.getBaseMapper().getOneSoftwareRoleDataAuthDetail(id, Id);
|
|
|
-
|
|
|
- List<DataAuthDetailDTO> dataAuthDetailDTOS = new ArrayList<>();
|
|
|
- //4.2.1是否获取当前组织-科室信息 dataAuthDetailDTOS去重
|
|
|
- oneServiceRoleDataAuthDetailDTOS.stream().forEach(serviceRoleDataAuthDetailDTO -> {
|
|
|
- DataAuthDetailDTO dataAuthDetailDTO = new DataAuthDetailDTO();
|
|
|
- dataAuthDetailDTO.setId(serviceRoleDataAuthDetailDTO.getDetail());
|
|
|
- dataAuthDetailDTO.setDataType(serviceRoleDataAuthDetailDTO.getDataType());
|
|
|
- dataAuthDetailDTO.setDetailType(serviceRoleDataAuthDetailDTO.getDetailType());
|
|
|
- dataAuthDetailDTO.setDetailId(serviceRoleDataAuthDetailDTO.getDetailId());
|
|
|
- if (DataAuthDataTypeEnum.CUSTOMIZE.getKey() == serviceRoleDataAuthDetailDTO.getDataType()
|
|
|
- && serviceRoleDataAuthDetailDTO.getDetailType() != null
|
|
|
- && DataAuthDetailTypeEnum.DEPT.getKey() == serviceRoleDataAuthDetailDTO.getDetailType()) {
|
|
|
- //4.2.3selectFalg为true时查询组织-科室信息
|
|
|
- getDeptDetial(dataAuthDetailDTO);
|
|
|
- }
|
|
|
- dataAuthDetailDTOS.add(dataAuthDetailDTO);
|
|
|
- });
|
|
|
- sysServiceDTO.setDataAuthDetailDTOS(dataAuthDetailDTOS);
|
|
|
-
|
|
|
- //5.添加角色列表
|
|
|
- List<RoleDTO> roleDTOS = new ArrayList<>();
|
|
|
- Map<Long, String> roleMap = new HashMap<>();
|
|
|
- serviceRoleDataAuthDetailDTOS.stream().forEach(serviceRoleDataAuthDetailDTO -> {
|
|
|
- roleMap.put(serviceRoleDataAuthDetailDTO.getRoleId(), serviceRoleDataAuthDetailDTO.getRoleName());
|
|
|
- });
|
|
|
- for (Long roleID : roleMap.keySet()) {
|
|
|
- RoleDTO role = new RoleDTO();
|
|
|
- role.setId(roleID);
|
|
|
- role.setName(roleMap.get(roleID));
|
|
|
- roleDTOS.add(role);
|
|
|
- }
|
|
|
- sysServiceDTO.setRoles(roleDTOS);
|
|
|
- sysServiceDTOS.add(sysServiceDTO);
|
|
|
- });
|
|
|
- dataAuthDTO.setSysServiceDTOS(sysServiceDTOS);
|
|
|
- } else {
|
|
|
- Asserts.fail("请检查角色id或数据权限id");
|
|
|
+ //1.获取数据权限基本信息
|
|
|
+ DataAuth dataAuth = dataAuthFacade.getById(Id);
|
|
|
+ if (dataAuth == null) {
|
|
|
+ Asserts.fail("该数据权限不存在,请重试");
|
|
|
}
|
|
|
- return dataAuthDTO;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @param dataAuthDetailDTO
|
|
|
- * @Description 获取组织-科室信息以及自定义科室
|
|
|
- * @Return void
|
|
|
- */
|
|
|
- public void getDeptDetial(DataAuthDetailDTO dataAuthDetailDTO) {
|
|
|
- //1.获取医院信息
|
|
|
- HospitalDTO hospitalDTO = new HospitalDTO();
|
|
|
- Hospital hospital = hospitalFacade.list(new QueryWrapper<Hospital>()
|
|
|
- .eq("id", SysUserUtils.getCurrentHospitalId())
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey())).get(0);
|
|
|
- BeanUtils.copyProperties(hospital, hospitalDTO);
|
|
|
- //获取当前登录用户的组织信息
|
|
|
- List<HospitalDTO> hospitalDTOS = getHospitalInfo(hospitalDTO);
|
|
|
- getAllHospitalDTO(hospitalDTOS);
|
|
|
- //2.获取科室信息
|
|
|
- getDeptInfo(hospitalDTO, dataAuthDetailDTO);
|
|
|
- dataAuthDetailDTO.setHospitalDTOS(hospitalDTO);
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @param hospitalDTO
|
|
|
- * @param dataAuthDetailDTO
|
|
|
- * @Description取对应医院的科室信息
|
|
|
- * @Return void
|
|
|
- */
|
|
|
- private void getDeptInfo(HospitalDTO hospitalDTO, DataAuthDetailDTO dataAuthDetailDTO) {
|
|
|
-
|
|
|
- if (hospitalDTO != null) {
|
|
|
- if (ListUtil.isNotEmpty(hospitalDTO.getHospitalDTOS())) {
|
|
|
- for (HospitalDTO oneHospitalDTO : hospitalDTO.getHospitalDTOS()) {
|
|
|
- //虚拟医院继续递归遍历到真实医院
|
|
|
- getDeptInfo(oneHospitalDTO, dataAuthDetailDTO);
|
|
|
- }
|
|
|
- //真实医院:获取科室
|
|
|
- } else if ((HospitalTypeEnum.SINGLE_HOSPITAL.getKey() + "").equals(hospitalDTO.getType())) {
|
|
|
- List<Dept> depts = deptFacade.list(new QueryWrapper<Dept>()
|
|
|
- .eq("hospital_id", hospitalDTO.getId())
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey()));
|
|
|
- List<DeptDTO> deptDTOS = new ArrayList<>();
|
|
|
- if (ListUtil.isNotEmpty(depts)) {
|
|
|
- for (Dept dept : depts) {
|
|
|
- DeptDTO deptDTO = new DeptDTO();
|
|
|
- BeanUtils.copyProperties(dept, deptDTO);
|
|
|
- deptDTOS.add(deptDTO);
|
|
|
- //该医院和该医院的科室 自定义关联关系为true
|
|
|
- if (dataAuthDetailDTO.getDetailId() == deptDTO.getId()) {
|
|
|
- hospitalDTO.setRelation(RelationEnum.Y.getName());
|
|
|
- deptDTO.setRelation(RelationEnum.Y.getName());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- hospitalDTO.setDepts(deptDTOS);
|
|
|
- }
|
|
|
+ BeanUtils.copyProperties(dataAuth, dataAuthDTO);
|
|
|
+ List<SoftwareDataAuth> softwareDataAuths = softwareDataAuthFacade.list(new QueryWrapper<SoftwareDataAuth>()
|
|
|
+ .eq("data_auth_id", Id)
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey()));
|
|
|
+ if (ListUtil.isEmpty(softwareDataAuths)) {
|
|
|
+ Asserts.fail("该数据权限无系统信息,请联系管理员");
|
|
|
}
|
|
|
- }
|
|
|
+ List<Long> softwareDataAuthIds = softwareDataAuths.stream().map(SoftwareDataAuth::getId).collect(Collectors.toList());
|
|
|
+ //2.系统-(角色、数据权限详情)信息组装
|
|
|
+ List<GetDataAuthSoftwareDTO> softwares = new ArrayList<>();
|
|
|
+ softwareDataAuths.stream().forEach(softwareDataAuth -> {
|
|
|
+ //2.1获取系统信息
|
|
|
+ GetDataAuthSoftwareDTO software = new GetDataAuthSoftwareDTO();
|
|
|
+ software.setId(softwareDataAuth.getSoftwareId());
|
|
|
+ software.setName(ServiceEnum.getName(softwareDataAuth.getSoftwareId().intValue()));
|
|
|
|
|
|
- /**
|
|
|
- * @param hospitalDTOS
|
|
|
- * @Description 获取医院对应的子医院信息
|
|
|
- * @Return void
|
|
|
- */
|
|
|
- private void getAllHospitalDTO(List<HospitalDTO> hospitalDTOS) {
|
|
|
- if (ListUtil.isNotEmpty(hospitalDTOS)) {
|
|
|
- for (HospitalDTO tempHospitalDTO : hospitalDTOS) {
|
|
|
- getAllHospitalDTO(getHospitalInfo(tempHospitalDTO));
|
|
|
+ //2.2获取角色信息
|
|
|
+ List<GetDataAuthRoleDTO> roles = roleSoftwareDataAuthFacade.getBaseMapper().getRole(softwareDataAuth.getId());
|
|
|
+ software.setRoles(roles);
|
|
|
+ //2.3数据权限详情
|
|
|
+ List<SoftwareDataAuthDetail> softwareDataAuthDetails = softwareDataAuthFacade.getBaseMapper().getDataAuthDetail(softwareDataAuth.getId());
|
|
|
+ //--非自定义处理
|
|
|
+ if (softwareDataAuthDetails.size() == 1 && softwareDataAuthDetails.get(0).getDataType() != DataAuthDataTypeEnum.CUSTOMIZE.getKey()) {
|
|
|
+ software.setDataType(softwareDataAuthDetails.get(0).getDataType());
|
|
|
+ //--自定义处理
|
|
|
+ } else if (softwareDataAuthDetails.get(0).getDataType() == DataAuthDataTypeEnum.CUSTOMIZE.getKey()) {
|
|
|
+ //按自定义类型分类
|
|
|
+ Map<Integer, List<SoftwareDataAuthDetail>> softwareDataAuthDetailMap = EntityUtil.makeEntityListMap(softwareDataAuthDetails, "detailType");
|
|
|
+ //自定义数据
|
|
|
+ DataAuthDetailDTO dataAuthDetail = new DataAuthDetailDTO();
|
|
|
+ softwareDataAuthDetailMap.keySet().stream().forEach(detailType -> {
|
|
|
+ List<Long> ids = softwareDataAuthDetailMap
|
|
|
+ .get(detailType).stream().map(SoftwareDataAuthDetail::getDetailId).collect(Collectors.toList());
|
|
|
+ //医院
|
|
|
+ if (DataAuthDetailTypeEnum.HOSPITAL.getKey() == detailType) {
|
|
|
+ dataAuthDetail.setHospitals(hospitalFacade.getBaseMapper().getHospitals(ids));
|
|
|
+ }
|
|
|
+ //科室
|
|
|
+ if (DataAuthDetailTypeEnum.DEPT.getKey() == detailType) {
|
|
|
+ dataAuthDetail.setDepts(deptFacade.getBaseMapper().getDepts(ids));
|
|
|
+ }
|
|
|
+ //医生
|
|
|
+ if(DataAuthDetailTypeEnum.DOCTOR.getKey() == detailType){
|
|
|
+ dataAuthDetail.setDoctors(deptFacade.getBaseMapper().getDoctors(ids));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ software.setDataAuthDetail(dataAuthDetail);
|
|
|
}
|
|
|
- }
|
|
|
+ softwares.add(software);
|
|
|
+ });
|
|
|
+ dataAuthDTO.setSoftwares(softwares);
|
|
|
+ return dataAuthDTO;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * @param hospitalDTO
|
|
|
- * @Description获取医院信息
|
|
|
- * @Return java.util.List<com.lantone.common.dto.HospitalDTO>
|
|
|
- */
|
|
|
- private List<HospitalDTO> getHospitalInfo(HospitalDTO hospitalDTO) {
|
|
|
- List<HospitalDTO> hospitalDTOS = new ArrayList<>();
|
|
|
- if (hospitalDTO.getId() != null) {
|
|
|
- List<Hospital> hospitals = hospitalFacade.list(new QueryWrapper<Hospital>()
|
|
|
- .eq("parent_id", hospitalDTO.getId())
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey()));
|
|
|
- hospitals.stream().forEach(hospital -> {
|
|
|
- HospitalDTO tempHospitalDTO = new HospitalDTO();
|
|
|
- BeanUtils.copyProperties(hospital, tempHospitalDTO);
|
|
|
- hospitalDTOS.add(tempHospitalDTO);
|
|
|
- });
|
|
|
- hospitalDTO.setHospitalDTOS(hospitalDTOS);
|
|
|
- }
|
|
|
- return hospitalDTOS;
|
|
|
- }
|
|
|
|
|
|
/**
|
|
|
* @param getDoctorPageVO
|