|
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.lantone.common.dto.DownBoxRegionDTO;
|
|
|
import com.lantone.common.dto.GetHospitalByIdDTO;
|
|
|
import com.lantone.common.dto.GetHospitalListInfoDTO;
|
|
|
+import com.lantone.common.dto.GetHospitalTreeDTO;
|
|
|
import com.lantone.common.dto.GetHospitalUserDTO;
|
|
|
import com.lantone.common.enums.IsDeleteEnum;
|
|
|
import com.lantone.common.enums.StatusEnum;
|
|
@@ -21,16 +22,18 @@ import com.lantone.common.vo.AddRoleVO;
|
|
|
import com.lantone.common.vo.AddUserVO;
|
|
|
import com.lantone.common.vo.GetHospitalListInfoVO;
|
|
|
import com.lantone.common.vo.UpdateHospitalVO;
|
|
|
-import com.lantone.dblayermbg.entity.DictionaryInfo;
|
|
|
+import com.lantone.dblayermbg.entity.Dept;
|
|
|
import com.lantone.dblayermbg.entity.Hospital;
|
|
|
import com.lantone.dblayermbg.entity.HospitalUser;
|
|
|
import com.lantone.dblayermbg.entity.Region;
|
|
|
+import com.lantone.dblayermbg.entity.RegionDept;
|
|
|
import com.lantone.dblayermbg.entity.Role;
|
|
|
import com.lantone.dblayermbg.entity.User;
|
|
|
import com.lantone.dblayermbg.facade.DeptFacade;
|
|
|
import com.lantone.dblayermbg.facade.DictionaryInfoFacade;
|
|
|
import com.lantone.dblayermbg.facade.HospitalFacade;
|
|
|
import com.lantone.dblayermbg.facade.HospitalUserFacade;
|
|
|
+import com.lantone.dblayermbg.facade.RegionDeptFacade;
|
|
|
import com.lantone.dblayermbg.facade.RegionFacade;
|
|
|
import com.lantone.dblayermbg.facade.RoleFacade;
|
|
|
import com.lantone.dblayermbg.facade.UserFacade;
|
|
@@ -45,6 +48,8 @@ import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 组织管理API
|
|
@@ -70,6 +75,8 @@ public class HospitalManagementFacade {
|
|
|
@Autowired
|
|
|
private RegionFacade regionFacade;
|
|
|
@Autowired
|
|
|
+ private RegionDeptFacade regionDeptFacade;
|
|
|
+ @Autowired
|
|
|
private DictionaryInfoFacade dictionaryInfoFacade;
|
|
|
|
|
|
/**
|
|
@@ -78,15 +85,39 @@ public class HospitalManagementFacade {
|
|
|
* @Return boolean
|
|
|
*/
|
|
|
public boolean addHospital(AddHospitalVO addHospitalVO) {
|
|
|
- Hospital hospital = new Hospital();
|
|
|
- BeanUtils.copyProperties(addHospitalVO, hospital);
|
|
|
- hospital.setGmtCreate(DateUtil.now());
|
|
|
- //1.添加组织信息
|
|
|
- if (hospitalFacade.save(hospital)) {
|
|
|
- //2.保存该组织的用户
|
|
|
- return saveUser(hospital.getId(), addHospitalVO);
|
|
|
- } else {
|
|
|
- Asserts.fail("组织添加失败");
|
|
|
+
|
|
|
+ //通过任务类型插入医院或科室
|
|
|
+ if((HospitalTypeEnum.DEPT.getKey()+"").equals(addHospitalVO.getType())){
|
|
|
+ Dept dept = new Dept();
|
|
|
+ BeanUtils.copyProperties(addHospitalVO, dept);
|
|
|
+ dept.setHospitalId(addHospitalVO.getParentId());
|
|
|
+ if(deptFacade.save(dept)){
|
|
|
+ //如果选择病区的话保存不能过去和科室的关系
|
|
|
+ if(addHospitalVO.getRegionId()!=null){
|
|
|
+ RegionDept regionDept = new RegionDept();
|
|
|
+ regionDept.setHospitalId(addHospitalVO.getParentId());
|
|
|
+ regionDept.setRegionId(addHospitalVO.getRegionId());
|
|
|
+ regionDept.setDeptId(dept.getId());
|
|
|
+ if(!regionDeptFacade.save(regionDept)){
|
|
|
+ Asserts.fail("病区和科室关系插入失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //2.保存该组织的用户
|
|
|
+ return saveUser(dept.getId(), addHospitalVO);
|
|
|
+ } else {
|
|
|
+ Asserts.fail("组织添加失败");
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ //1.添加组织信息
|
|
|
+ Hospital hospital = new Hospital();
|
|
|
+ BeanUtils.copyProperties(addHospitalVO, hospital);
|
|
|
+ hospital.setGmtCreate(DateUtil.now());
|
|
|
+ if (hospitalFacade.save(hospital)) {
|
|
|
+ //2.保存该组织的用户
|
|
|
+ return saveUser(hospital.getId(), addHospitalVO);
|
|
|
+ } else {
|
|
|
+ Asserts.fail("组织添加失败");
|
|
|
+ }
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
@@ -104,13 +135,19 @@ public class HospitalManagementFacade {
|
|
|
addRoleVO.setName(addHospitalVO.getName() + "组织管理角色");
|
|
|
addRoleVO.setRemark("ManagementRole");
|
|
|
addRoleVO.setStatus("1");
|
|
|
- addRoleVO.setHospitalId(hospitalId);
|
|
|
+ Long insertHospitalId = 0l;
|
|
|
+ if((HospitalTypeEnum.DEPT.getKey()+"").equals(addHospitalVO.getType())){
|
|
|
+ insertHospitalId = addHospitalVO.getParentId();
|
|
|
+ }else {
|
|
|
+ insertHospitalId = hospitalId;
|
|
|
+ }
|
|
|
+ addRoleVO.setHospitalId(insertHospitalId);
|
|
|
addRoleVO.setSoftwares(addHospitalVO.getSoftwares());
|
|
|
if (roleManagementFacade.addRole(addRoleVO)) {
|
|
|
//2.获取角色id完善新增用户信息
|
|
|
Long roleId = roleFacade.list(new QueryWrapper<Role>()
|
|
|
.eq("name", addHospitalVO.getName() + "组织管理角色")
|
|
|
- .eq("hospital_id", hospitalId)).get(0).getId();
|
|
|
+ .eq("hospital_id", insertHospitalId)).get(0).getId();
|
|
|
//拼装添加用户信息
|
|
|
AddUserVO addUserVO = new AddUserVO();
|
|
|
BeanUtils.copyProperties(addHospitalVO.getAddHospitalUserVO(), addUserVO);
|
|
@@ -119,13 +156,22 @@ public class HospitalManagementFacade {
|
|
|
addUserVO.getRoles().add(roleId);
|
|
|
addUserVO.setName(addHospitalVO.getName() + "管理员");
|
|
|
addUserVO.setRemark("Administrators");
|
|
|
- //用户与组织的关系
|
|
|
+ //用户与组织的关系(医院、科室)
|
|
|
AddHospitalTreeVO addHospitalTreeVO = new AddHospitalTreeVO();
|
|
|
-// addHospitalTreeVO.setId(hospitalId);
|
|
|
- BeanUtils.copyProperties(addHospitalVO, addHospitalTreeVO);
|
|
|
- addHospitalTreeVO.setHospitals(new ArrayList<>());
|
|
|
- addHospitalTreeVO.getHospitals().add(hospitalId);
|
|
|
- addUserVO.setAddHospitalTreeVO(addHospitalTreeVO);
|
|
|
+ if((HospitalTypeEnum.DEPT.getKey()+"").equals(addHospitalVO.getType())){
|
|
|
+ addHospitalTreeVO.setDepts(new ArrayList<>());
|
|
|
+ addHospitalTreeVO.getDepts().add(hospitalId);
|
|
|
+ addUserVO.setAddHospitalTreeVO(addHospitalTreeVO);
|
|
|
+
|
|
|
+ addHospitalTreeVO.setHospitals(new ArrayList<>());
|
|
|
+ addHospitalTreeVO.getHospitals().add(addHospitalVO.getParentId());
|
|
|
+ addUserVO.setAddHospitalTreeVO(addHospitalTreeVO);
|
|
|
+ }else {
|
|
|
+ addHospitalTreeVO.setHospitals(new ArrayList<>());
|
|
|
+ addHospitalTreeVO.getHospitals().add(hospitalId);
|
|
|
+ addUserVO.setAddHospitalTreeVO(addHospitalTreeVO);
|
|
|
+ }
|
|
|
+
|
|
|
return userManagementFacade.addUser(addUserVO);
|
|
|
} else {
|
|
|
Asserts.fail("角色插入失败");
|
|
@@ -139,15 +185,40 @@ public class HospitalManagementFacade {
|
|
|
* @Return boolean
|
|
|
*/
|
|
|
public boolean deleteHospital(Long hospitalId) {
|
|
|
- //1.删除组织表sys_hospital
|
|
|
- if (hospitalFacade.removeById(hospitalId)) {
|
|
|
- //2.删除该组织的管理用户、角色
|
|
|
- return deleteHUserAndRole(hospitalId);
|
|
|
- } else {
|
|
|
- Asserts.fail("组织表删除失败");
|
|
|
- }
|
|
|
+ AtomicBoolean out = new AtomicBoolean(false);
|
|
|
+ //1.获取该组织及其子组织
|
|
|
+ List<Long> hospitals = hospitalFacade.getBaseMapper().getHospitalTreeInfo(hospitalId,StatusEnum.Enable.getKey()).stream()
|
|
|
+ .map(GetHospitalTreeDTO::getHospitalId).collect(Collectors.toList());
|
|
|
+ //2.删除这些组织的用户、角色
|
|
|
+ if (ListUtil.isNotEmpty(hospitals)) {
|
|
|
+ hospitals.forEach(id -> {
|
|
|
+ //删除该组织角色
|
|
|
+ if(roleFacade.update(new UpdateWrapper<Role>()
|
|
|
+ .set("is_deleted", IsDeleteEnum.Y.getKey())
|
|
|
+ .in("id", roleFacade.list(new QueryWrapper<Role>()
|
|
|
+ .eq("hospital_id",id))
|
|
|
+ .stream().map(Role::getId).collect(Collectors.toList())))){
|
|
|
|
|
|
- return false;
|
|
|
+ //删除组织用户
|
|
|
+ if(userFacade.update(new UpdateWrapper<User>()
|
|
|
+ .set("is_deleted", IsDeleteEnum.Y.getKey())
|
|
|
+ .in("id", hospitalUserFacade.list(new QueryWrapper<HospitalUser>()
|
|
|
+ .eq("hospital_id",id))
|
|
|
+ .stream().map(HospitalUser::getUserId).collect(Collectors.toList())))){
|
|
|
+ //删除组织
|
|
|
+ out.set(hospitalFacade.update(new UpdateWrapper<Hospital>()
|
|
|
+ .set("is_deleted", IsDeleteEnum.Y.getKey())
|
|
|
+ .eq("id", id)));
|
|
|
+ }else {
|
|
|
+ Asserts.fail("组织用户删除失败");
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ Asserts.fail("组织角色删除失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return out.get();
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -201,7 +272,45 @@ public class HospitalManagementFacade {
|
|
|
* @Return boolean
|
|
|
*/
|
|
|
public boolean disableHospital(Long hospitalId, String status) {
|
|
|
- return hospitalFacade.update(new UpdateWrapper<Hospital>().set("status", status).eq("id", hospitalId));
|
|
|
+ AtomicBoolean out = new AtomicBoolean(false);
|
|
|
+ String selectStatus = "0";
|
|
|
+ if(StatusEnum.Enable.getKey().equals(status)){
|
|
|
+ selectStatus = StatusEnum.Disable.getKey();
|
|
|
+ }else {
|
|
|
+ selectStatus = StatusEnum.Enable.getKey();
|
|
|
+ }
|
|
|
+ //1.获取该组织及其子组织
|
|
|
+ List<Long> hospitals = hospitalFacade.getBaseMapper().getHospitalTreeInfo(hospitalId,selectStatus).stream()
|
|
|
+ .map(GetHospitalTreeDTO::getHospitalId).collect(Collectors.toList());
|
|
|
+ //2.禁用这些组织的用户、角色
|
|
|
+ if (ListUtil.isNotEmpty(hospitals)) {
|
|
|
+ hospitals.forEach(id -> {
|
|
|
+ //禁用该组织角色
|
|
|
+ if(roleFacade.update(new UpdateWrapper<Role>()
|
|
|
+ .set("status", status)
|
|
|
+ .in("id", roleFacade.list(new QueryWrapper<Role>()
|
|
|
+ .eq("hospital_id",id))
|
|
|
+ .stream().map(Role::getId).collect(Collectors.toList())))){
|
|
|
+
|
|
|
+ //删除组织用户
|
|
|
+ if(userFacade.update(new UpdateWrapper<User>()
|
|
|
+ .set("status",status)
|
|
|
+ .in("id", hospitalUserFacade.list(new QueryWrapper<HospitalUser>()
|
|
|
+ .eq("hospital_id",id))
|
|
|
+ .stream().map(HospitalUser::getUserId).collect(Collectors.toList())))){
|
|
|
+ //删除组织
|
|
|
+ out.set(hospitalFacade.update(new UpdateWrapper<Hospital>()
|
|
|
+ .set("status", status).eq("id", id)));
|
|
|
+ }else {
|
|
|
+ Asserts.fail("组织用户禁用失败");
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ Asserts.fail("组织角色禁用失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return out.get();
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -326,23 +435,24 @@ public class HospitalManagementFacade {
|
|
|
private void getHospitalSonORUser(GetHospitalListInfoDTO hospital) {
|
|
|
if (hospital != null && hospital.getHospitalId() != null) {
|
|
|
//获取该组织用户
|
|
|
- if(hospitalUserFacade.list(new QueryWrapper<HospitalUser>()
|
|
|
- .eq("hospital_id",hospital.getHospitalId())
|
|
|
- .eq("is_deleted",IsDeleteEnum.N.getKey())).size()>1){
|
|
|
+ if (hospitalUserFacade.list(new QueryWrapper<HospitalUser>()
|
|
|
+ .eq("hospital_id", hospital.getHospitalId())
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())).size() > 1) {
|
|
|
hospital.setHasUserFlag(true);
|
|
|
}
|
|
|
//获取该组织子组织
|
|
|
- if(hospitalFacade.list(new QueryWrapper<Hospital>()
|
|
|
- .eq("parent_id",hospital.getHospitalId())
|
|
|
+ if (hospitalFacade.list(new QueryWrapper<Hospital>()
|
|
|
+ .eq("parent_id", hospital.getHospitalId())
|
|
|
.eq("status", StatusEnum.Enable.getKey())
|
|
|
- .eq("is_deleted",IsDeleteEnum.N.getKey())).size()>0){
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())).size() > 0) {
|
|
|
hospital.setHasHospitalFlag(true);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
- * @Description重置密码
|
|
|
* @param hospitalId
|
|
|
+ * @Description重置密码
|
|
|
* @Return boolean
|
|
|
*/
|
|
|
public boolean resetPassword(Long hospitalId) {
|