|
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.diagbot.dto.CheckDeptDTO;
|
|
|
import com.diagbot.dto.CheckJobDTO;
|
|
|
+import com.diagbot.dto.CheckUserDTO;
|
|
|
import com.diagbot.dto.DeptCheckUserDTO;
|
|
|
import com.diagbot.entity.BasDeptInfo;
|
|
|
import com.diagbot.entity.BasDoctorInfo;
|
|
@@ -20,6 +21,7 @@ import com.diagbot.exception.CommonErrorCode;
|
|
|
import com.diagbot.exception.CommonException;
|
|
|
import com.diagbot.service.impl.MedCheckInfoServiceImpl;
|
|
|
import com.diagbot.util.DateUtil;
|
|
|
+import com.diagbot.util.ListUtil;
|
|
|
import com.diagbot.util.StringUtil;
|
|
|
import com.diagbot.util.SysUserUtils;
|
|
|
import com.diagbot.vo.CheckJobPageVO;
|
|
@@ -27,6 +29,8 @@ import com.diagbot.vo.CheckJobVO;
|
|
|
import com.diagbot.vo.CheckUserVO;
|
|
|
import com.diagbot.vo.DistributionJobVO;
|
|
|
import com.diagbot.vo.MedCheckInfoAddVO;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
+import org.apache.commons.collections4.ListUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
@@ -220,26 +224,15 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
|
|
|
//院级监管人员
|
|
|
else if(searchRoleIds.contains(6L)&&"1".equals(checkJobVO.getJobType()))
|
|
|
{
|
|
|
- //1.获取院级质控人员有哪些
|
|
|
- //1.1获取院级质控人员角色id
|
|
|
- Long roleId = sysRoleFacade.getOne(new QueryWrapper<SysRole>()
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("name","院级质控人员")).getId();
|
|
|
- //1.2获取院级质控人员该角色的用户id集合
|
|
|
- List<Long> userIds = sysUserRoleFacade.list(new QueryWrapper<SysUserRole>()
|
|
|
+ //获取监管人员所在科室集合
|
|
|
+ List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("role_id",roleId)
|
|
|
- ).stream().map(SysUserRole::getUserId).collect(Collectors.toList());
|
|
|
- if(userIds.isEmpty()){
|
|
|
- //1.3获取该用户id集合的科室id集合
|
|
|
- List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("hospital_id",hospitalId)
|
|
|
- .in("user_id",userIds)
|
|
|
- ).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
|
|
|
- if(deptIds!=null&&!deptIds.isEmpty()){
|
|
|
- checkJobVO.setDeptList(deptIds);
|
|
|
- }
|
|
|
+ .eq("hospital_id",hospitalId)
|
|
|
+ .eq("user_id",principleId)
|
|
|
+ ).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
|
|
|
+ //分配除了监管人员以外其他科室的核查任务
|
|
|
+ if(deptIds!=null&&!deptIds.isEmpty()){
|
|
|
+ checkJobVO.setDeptList(deptIds);
|
|
|
}
|
|
|
return getCheckList(checkJobVO);
|
|
|
}
|
|
@@ -380,37 +373,24 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
|
|
|
Long roleId = sysRoleFacade.getOne(new QueryWrapper<SysRole>()
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
.eq("name","院级质控人员")).getId();
|
|
|
- //1.2获取院级质控人员该角色的用户id集合
|
|
|
- List<Long> userIds = sysUserRoleFacade.list(new QueryWrapper<SysUserRole>()
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("role_id",roleId)
|
|
|
- ).stream().map(SysUserRole::getUserId).collect(Collectors.toList());
|
|
|
- if(userIds.isEmpty()){return;}
|
|
|
- //1.3获取该用户id集合的科室id集合
|
|
|
- List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("hospital_id",hospitalId)
|
|
|
- .in("user_id",userIds)
|
|
|
- ).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
|
|
|
- if(deptIds.isEmpty()){return;}
|
|
|
- //2.1获取质控人员的科室信息
|
|
|
- List<BasDeptInfo> deptInfos = basDeptInfoFacade.list(new QueryWrapper<BasDeptInfo>()
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("hospital_id",hospitalId)
|
|
|
- .in("dept_id",deptIds));
|
|
|
- //2.2获取监管科室集合所有的医生信息
|
|
|
- List<BasDoctorInfo> doctorInfos = basDoctorInfoFacade.list(new QueryWrapper<BasDoctorInfo>()
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("hospital_id",hospitalId)
|
|
|
- .in("dept_id",deptIds));
|
|
|
+ CheckUserVO checkUserVOS = new CheckUserVO();
|
|
|
+ checkUserVOS.setRoleIds(Lists.newArrayList(roleId));
|
|
|
+ checkUserVOS.setDeptStations(Lists.newArrayList("住院"));
|
|
|
+ checkUserVOS.setUserId(principleId);
|
|
|
+ checkUserVOS.setRoleId(6L);
|
|
|
+ checkUserVOS.setHospitalId(hospitalId);
|
|
|
+ List<CheckUserDTO> checkUserDTOS = baseMapper.getCheckUser(checkUserVOS);
|
|
|
+ //2.1获取科室详情
|
|
|
+ Map<String,String> deptMap = checkUserDTOS.stream()
|
|
|
+ .collect(Collectors.toMap(CheckUserDTO::getDeptId,CheckUserDTO::getDeptName, (v1, v2) -> v2));
|
|
|
//2.3获取所有医生信息的核查数
|
|
|
- List<String> doctorIds = doctorInfos.stream().map(BasDoctorInfo::getDoctorId).collect(Collectors.toList());
|
|
|
+ List<String> doctorIds = checkUserDTOS.stream().map(CheckUserDTO::getDoctorId).collect(Collectors.toList());
|
|
|
CheckUserVO checkUserVO = new CheckUserVO();
|
|
|
checkUserVO.setJobType(1);
|
|
|
checkUserVO.setUserList(doctorIds);
|
|
|
//通过核查人员id获取核查人员的核查任务数
|
|
|
List<DeptCheckUserDTO> userJobs = baseMapper.getJobNumByUserId(checkUserVO);
|
|
|
- addCheckInfoMap(checkRoleMap,doctorInfos,userJobs,deptInfos,6);
|
|
|
+ addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,6);
|
|
|
}
|
|
|
/**
|
|
|
* @Author songxl
|
|
@@ -439,22 +419,24 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
|
|
|
//3.判断这个人是否在质控科
|
|
|
if(deptIds.contains(zkkDeptId))
|
|
|
{
|
|
|
- //4.1获取所有科室
|
|
|
- List<BasDeptInfo> deptInfos = basDeptInfoFacade.list(new QueryWrapper<BasDeptInfo>()
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("hospital_id",hospitalId));
|
|
|
- //4.2获取所有医生信息
|
|
|
- List<BasDoctorInfo> doctorInfos = basDoctorInfoFacade.list(new QueryWrapper<BasDoctorInfo>()
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("hospital_id",hospitalId));
|
|
|
- //4.3获取所有医生信息的核查数
|
|
|
- List<String> doctorIds = doctorInfos.stream().map(BasDoctorInfo::getDoctorId).collect(Collectors.toList());
|
|
|
+ CheckUserVO checkUserVOS = new CheckUserVO();
|
|
|
+ checkUserVOS.setRoleIds(Lists.newArrayList(7L,8L,9L));
|
|
|
+ checkUserVOS.setDeptStations(Lists.newArrayList("住院","质管"));
|
|
|
+ checkUserVOS.setUserId(principleId);
|
|
|
+ checkUserVOS.setRoleId(5L);
|
|
|
+ checkUserVOS.setHospitalId(hospitalId);
|
|
|
+ List<CheckUserDTO> checkUserDTOS = baseMapper.getCheckUser(checkUserVOS);
|
|
|
+ //2.1获取科室详情
|
|
|
+ Map<String,String> deptMap = checkUserDTOS.stream()
|
|
|
+ .collect(Collectors.toMap(CheckUserDTO::getDeptId,CheckUserDTO::getDeptName, (v1, v2) -> v2));
|
|
|
+ //2.3获取所有医生信息的核查数
|
|
|
+ List<String> doctorIds = checkUserDTOS.stream().map(CheckUserDTO::getDoctorId).collect(Collectors.toList());
|
|
|
CheckUserVO checkUserVO = new CheckUserVO();
|
|
|
checkUserVO.setJobType(2);
|
|
|
checkUserVO.setUserList(doctorIds);
|
|
|
//通过核查人员id获取核查人员的核查任务数
|
|
|
List<DeptCheckUserDTO> userJobs = baseMapper.getJobNumByUserId(checkUserVO);
|
|
|
- addCheckInfoMap(checkRoleMap,doctorInfos,userJobs,deptInfos,5);
|
|
|
+ addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,5);
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -475,25 +457,81 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
|
|
|
.eq("user_id",principleId)
|
|
|
).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
|
|
|
if(deptIds.isEmpty()){return;}
|
|
|
+ CheckUserVO checkUserVOS = new CheckUserVO();
|
|
|
+ checkUserVOS.setRoleIds(Lists.newArrayList(4L,7L));
|
|
|
+ checkUserVOS.setDeptIds(deptIds);
|
|
|
+ checkUserVOS.setDeptStations(Lists.newArrayList("住院"));
|
|
|
+ checkUserVOS.setHospitalId(hospitalId);
|
|
|
+ List<CheckUserDTO> checkUserDTOS = baseMapper.getCheckUser(checkUserVOS);
|
|
|
//2.1获取科室详情
|
|
|
- List<BasDeptInfo> deptInfos = basDeptInfoFacade.list(new QueryWrapper<BasDeptInfo>()
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("hospital_id",hospitalId)
|
|
|
- .in("dept_id",deptIds));
|
|
|
- //2.2获取监管科室集合所有的医生信息
|
|
|
- List<BasDoctorInfo> doctorInfos = basDoctorInfoFacade.list(new QueryWrapper<BasDoctorInfo>()
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("hospital_id",hospitalId)
|
|
|
- .in("dept_id",deptIds));
|
|
|
+ Map<String,String> deptMap = checkUserDTOS.stream()
|
|
|
+ .collect(Collectors.toMap(CheckUserDTO::getDeptId,CheckUserDTO::getDeptName, (v1, v2) -> v2));
|
|
|
//2.3获取所有医生信息的核查数
|
|
|
- List<String> doctorIds = doctorInfos.stream().map(BasDoctorInfo::getDoctorId).collect(Collectors.toList());
|
|
|
+ List<String> doctorIds = checkUserDTOS.stream().map(CheckUserDTO::getDoctorId).collect(Collectors.toList());
|
|
|
CheckUserVO checkUserVO = new CheckUserVO();
|
|
|
checkUserVO.setJobType(0);
|
|
|
checkUserVO.setUserList(doctorIds);
|
|
|
//通过核查人员id获取核查人员的核查任务数
|
|
|
List<DeptCheckUserDTO> userJobs = baseMapper.getJobNumByUserId(checkUserVO);
|
|
|
- addCheckInfoMap(checkRoleMap,doctorInfos,userJobs,deptInfos,4);
|
|
|
+ addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,4);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Author songxl
|
|
|
+ * @Description 拼装科室、核查人员、任务数对象
|
|
|
+ * @Date 2021/5/17
|
|
|
+ * @Param [checkRoleMap, doctorInfos, userJobs, deptInfos, roleId]
|
|
|
+ * @Return void
|
|
|
+ * @MethodName addCheckInfoMap
|
|
|
+ */
|
|
|
+ private void addCheckInfoMaps(Map<String, List<CheckDeptDTO>> checkRoleMap, Map<String, String> deptMap,
|
|
|
+ List<DeptCheckUserDTO> userJobs, List<CheckUserDTO> checkUserDTOS, int roleId) {
|
|
|
+ if(deptMap.isEmpty()||checkUserDTOS.isEmpty()){}
|
|
|
+ checkRoleMap.put(roleId+"",new ArrayList<CheckDeptDTO>());
|
|
|
+ //遍历科室
|
|
|
+ for(String deptId:deptMap.keySet())
|
|
|
+ {
|
|
|
+ //科室对象
|
|
|
+ CheckDeptDTO checkDeptDTO = new CheckDeptDTO();
|
|
|
+ checkDeptDTO.setDeptId(deptId);
|
|
|
+ checkDeptDTO.setDeptName(deptMap.get(deptId));
|
|
|
+ checkDeptDTO.setDeptcheckUsers(new ArrayList<DeptCheckUserDTO>());
|
|
|
+ //遍历医生
|
|
|
+ for(CheckUserDTO checkUserDTO:checkUserDTOS)
|
|
|
+ {
|
|
|
+ //同一科室
|
|
|
+ if(checkDeptDTO.getDeptId().equals(checkUserDTO.getDeptId()))
|
|
|
+ {
|
|
|
+ DeptCheckUserDTO deptCheckUserDTO = new DeptCheckUserDTO();
|
|
|
+ deptCheckUserDTO.setDeptId(checkUserDTO.getDeptId());
|
|
|
+ deptCheckUserDTO.setDeptName(checkUserDTO.getDeptName());
|
|
|
+ deptCheckUserDTO.setDoctorId(checkUserDTO.getDoctorId());
|
|
|
+ deptCheckUserDTO.setDoctorName(checkUserDTO.getDoctorName());
|
|
|
+ checkDeptDTO.getDeptcheckUsers().add(deptCheckUserDTO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for(DeptCheckUserDTO deptCheckUserDTO:checkDeptDTO.getDeptcheckUsers())
|
|
|
+ {
|
|
|
+ //遍历数量
|
|
|
+ for(DeptCheckUserDTO jobNumDto:userJobs)
|
|
|
+ {
|
|
|
+ //有这个人
|
|
|
+ if(deptCheckUserDTO.getDoctorId().equals(jobNumDto.getDoctorId()))
|
|
|
+ {
|
|
|
+ deptCheckUserDTO.setJobNum(jobNumDto.getJobNum());
|
|
|
+ }
|
|
|
+ //没有这个人
|
|
|
+ else
|
|
|
+ {
|
|
|
+ deptCheckUserDTO.setJobNum(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ checkRoleMap.get(roleId+"").add(checkDeptDTO);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* @Author songxl
|
|
|
* @Description 拼装科室、核查人员、任务数对象
|