123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- package com.diagbot.facade;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.diagbot.dto.BehospitalInfoAgeDTO;
- import com.diagbot.dto.CheckedRecordListDTO;
- import com.diagbot.dto.SysUserDeptDTO;
- import com.diagbot.entity.BasDeptInfo;
- import com.diagbot.entity.MedBehospitalType;
- import com.diagbot.entity.MedCheckInfo;
- import com.diagbot.entity.SysUserDept;
- import com.diagbot.entity.SysUserRole;
- import com.diagbot.enums.CheckJobTypeEnum;
- import com.diagbot.enums.CheckStatusEnum;
- import com.diagbot.enums.CheckTypeEnum;
- import com.diagbot.enums.CheckerRoleEnum;
- import com.diagbot.enums.IsDeleteEnum;
- import com.diagbot.exception.CommonErrorCode;
- import com.diagbot.exception.CommonException;
- import com.diagbot.service.MedQcresultDetailService;
- import com.diagbot.service.impl.MedBehospitalTypeServiceImpl;
- import com.diagbot.util.DateUtil;
- import com.diagbot.util.ListUtil;
- import com.diagbot.util.SysUserUtils;
- import com.diagbot.vo.CheckedRecordListVO;
- import com.diagbot.vo.RecordCheckVO;
- import com.diagbot.vo.SysUserBaseVO;
- import com.google.common.collect.Lists;
- import com.google.common.collect.Maps;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- /**
- * @Description:
- * @author: rengb
- * @time: 2021/5/17 18:43
- */
- @Component
- public class RecordCheckFacade {
- @Autowired
- SysUserFacade sysUserFacade;
- @Autowired
- SysUserDeptFacade sysUserDeptFacade;
- @Autowired
- SysUserRoleFacade sysUserRoleFacade;
- @Autowired
- MedCheckInfoFacade medCheckInfoFacade;
- @Autowired
- MedQcresultDetailService medQcresultDetailService;
- @Autowired
- BehospitalInfoFacade behospitalInfoFacade;
- @Autowired
- BasDeptInfoFacade basDeptInfoFacade;
- @Autowired
- MedBehospitalTypeServiceImpl medBehospitalTypeServiceImpl;
- public IPage<CheckedRecordListDTO> checkedRecordList(CheckedRecordListVO checkedRecordListVO) {
- Long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
- Long userId = Long.parseLong(SysUserUtils.getCurrentPrincipleID());
- SysUserBaseVO sysUserBaseVO = new SysUserBaseVO();
- sysUserBaseVO.setUserId(userId);
- List<Long> roleIds = sysUserFacade.getUserRoles(sysUserBaseVO).getSelRoles().stream().map(i -> i.getId()).collect(Collectors.toList());
- List<String> deptIds = Lists.newArrayList();
- SysUserDeptDTO sysUserDeptDTO = sysUserFacade.getUserDepts(sysUserBaseVO);
- if (ListUtil.isNotEmpty(sysUserDeptDTO.getSelDepts())) {
- deptIds.addAll(sysUserDeptDTO.getSelDepts().stream().map(i -> i.getDeptId()).collect(Collectors.toList()));
- }
- //1.2去除质管科
- String zkkDeptId = basDeptInfoFacade.getOne(new QueryWrapper<BasDeptInfo>()
- .eq("is_deleted", IsDeleteEnum.N.getKey())
- .eq("hospital_id",hospitalId)
- .eq("station","质管")).getDeptId();
- List<Long> userIds = Lists.newArrayList();
- List<String> JobTypes = Lists.newArrayList();
- roleIds.forEach(roleId -> {
- if (roleId.intValue() == CheckerRoleEnum.HOSP_SUPERVISOR.getKey()
- && (ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes()) || checkedRecordListVO.getCheckJobTypes().contains(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() + ""))) {
- userIds.addAll(getUserIdsOfRoleId(hospitalId, null, CheckerRoleEnum.HOSP_GENERAL.getKey()));
- JobTypes.add(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() + "");
- } else if (roleId.intValue() == CheckerRoleEnum.QUAT_SUPERVISOR.getKey()
- && (ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes()) || checkedRecordListVO.getCheckJobTypes().contains(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey() + ""))) {
- //添加质管科人员
- deptIds.add(zkkDeptId);
- userIds.addAll(getUserIdsOfRoleId(hospitalId, deptIds, CheckerRoleEnum.QUAT_GENERAL.getKey()));
- JobTypes.add(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey() + "");
- } else if (roleId.intValue() == CheckerRoleEnum.DEPT_SUPERVISOR.getKey() && ListUtil.isNotEmpty(deptIds)
- && (ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes()) || checkedRecordListVO.getCheckJobTypes().contains(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() + ""))) {
- //移除质管科人员
- deptIds.remove(zkkDeptId);
- JobTypes.add(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() + "");
- userIds.addAll(getUserIdsOfRoleId(hospitalId, deptIds, CheckerRoleEnum.DEPT_GENERAL.getKey()));
- } else if ((roleId.intValue() == CheckerRoleEnum.DEPT_GENERAL.getKey() && ListUtil.isNotEmpty(deptIds))
- || roleId.intValue() == CheckerRoleEnum.QUAT_GENERAL.getKey() || roleId.intValue() == CheckerRoleEnum.HOSP_GENERAL.getKey()) {
- userIds.add(userId);
- }
- });
- //如果用户是质控科核查人员,在不传入任务类型的时候要添加质控科任务类型进行筛选
- if(roleIds.contains(CheckerRoleEnum.QUAT_GENERAL.getKey()*1l)){
- JobTypes.add(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey() + "");
- }else if(roleIds.contains(CheckerRoleEnum.DEPT_GENERAL.getKey()*1l)){
- JobTypes.add(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() + "");
- }
- else if(roleIds.contains(CheckerRoleEnum.HOSP_GENERAL.getKey()*1l)){
- JobTypes.add(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() + "");
- }
- if(ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes())){
- checkedRecordListVO.setCheckJobTypes(JobTypes);
- }
- if (ListUtil.isEmpty(userIds)) {
- userIds.add(999999999999999999l);
- }
- checkedRecordListVO.setCurrentDeptIds(String.join(",", deptIds));
- checkedRecordListVO.setCurrentGeneralUserIds(userIds);
- checkedRecordListVO.setHospitalId(hospitalId);
- IPage<CheckedRecordListDTO> iPage = medCheckInfoFacade.getBaseMapper().checkedRecordList(checkedRecordListVO);
- if (ListUtil.isNotEmpty(iPage.getRecords())) {
- List<String> behospitalCodes = iPage.getRecords().stream().map(i -> i.getBehospitalCode()).collect(Collectors.toList());
- Map<String, BehospitalInfoAgeDTO> ageMap = behospitalInfoFacade.getBehospitalInfoAge(hospitalId, behospitalCodes).stream().collect(Collectors.toMap(i -> i.getBehospitalCode(), i -> i));
- iPage.getRecords().forEach(i -> {
- i.setMonth(i.getJobDistributionTime());
- i.setStatus(CheckStatusEnum.getName(Integer.parseInt(i.getStatus())));
- i.setAge(ageMap.get(i.getBehospitalCode()) == null ? "" : ageMap.get(i.getBehospitalCode()).getAge());
- });
- }
- return iPage;
- }
- private List<Long> getUserIdsOfRoleId(Long hospitalId, List<String> deptIds, long roleId) {
- QueryWrapper<SysUserDept> sysUserDeptQueryWrapper = new QueryWrapper<>();
- sysUserDeptQueryWrapper.eq("hospital_id", hospitalId);
- sysUserDeptQueryWrapper.in(ListUtil.isNotEmpty(deptIds), "dept_id", deptIds);
- List<Long> userIds = sysUserDeptFacade.list(sysUserDeptQueryWrapper).stream().map(i -> i.getUserId()).collect(Collectors.toList());
- if (ListUtil.isEmpty(userIds)) {
- return null;
- }
- QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
- sysUserRoleQueryWrapper.in("user_id", userIds);
- sysUserRoleQueryWrapper.eq("role_id", roleId);
- return sysUserRoleFacade.list(sysUserRoleQueryWrapper).stream().map(i -> i.getUserId()).collect(Collectors.toList());
- }
- public boolean recordCheck(RecordCheckVO recordCheckVO) {
- Long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
- Long userId = Long.parseLong(SysUserUtils.getCurrentPrincipleID());
- QueryWrapper<MedCheckInfo> medCheckInfoQueryWrapper = new QueryWrapper<>();
- medCheckInfoQueryWrapper.eq("behospital_code", recordCheckVO.getBehospitalCode());
- medCheckInfoQueryWrapper.eq("hospital_id", hospitalId);
- medCheckInfoQueryWrapper.eq("check_id", userId);
- medCheckInfoQueryWrapper.eq("check_type", CheckTypeEnum.ALL.getKey());
- MedCheckInfo medCheckInfo = medCheckInfoFacade.getOne(medCheckInfoQueryWrapper);
- if (medCheckInfo == null) {
- throw new CommonException(CommonErrorCode.NOT_EXISTS, "该数据您暂无核查权限!");
- }
- medCheckInfo.setStatus(1);
- medCheckInfo.setCheckTime(DateUtil.now());
- medCheckInfoFacade.updateById(medCheckInfo);
- return true;
- }
- /**
- * @Author songxl
- * @Description获取当前用户的任务来源 和筛选分值
- * @Date 2021/5/28
- * @Param []
- * @Return java.util.Map<java.lang.String,java.lang.String>
- * @MethodName getCheckType
- */
- public Map<String, Object> getCheckType() {
- Map<String,Object> out = Maps.newLinkedHashMap();
- Map<Integer,String> checkTypes = Maps.newLinkedHashMap();
- Long userId = Long.parseLong(SysUserUtils.getCurrentPrincipleID());
- SysUserBaseVO sysUserBaseVO = new SysUserBaseVO();
- sysUserBaseVO.setUserId(userId);
- List<Long> roleIds = sysUserFacade.getUserRoles(sysUserBaseVO).getSelRoles().stream().map(i -> i.getId()).collect(Collectors.toList());
- roleIds.stream().forEach(roleId -> {
- if (roleId.intValue() == CheckerRoleEnum.DEPT_SUPERVISOR.getKey()||roleId.intValue() == CheckerRoleEnum.DEPT_GENERAL.getKey()){
- checkTypes.put(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey(),CheckJobTypeEnum.DEPT_SUPERVISOR.getName());
- }
- if (roleId.intValue() == CheckerRoleEnum.QUAT_SUPERVISOR.getKey()||roleId.intValue() == CheckerRoleEnum.QUAT_GENERAL.getKey()){
- checkTypes.put(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey(),CheckJobTypeEnum.QUAT_SUPERVISOR.getName());
- }
- if (roleId.intValue() == CheckerRoleEnum.HOSP_SUPERVISOR.getKey()||roleId.intValue() == CheckerRoleEnum.HOSP_GENERAL.getKey()){
- checkTypes.put(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey(),CheckJobTypeEnum.HOSP_SUPERVISOR.getName());
- }
- });
- Long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
- List<Integer> valus = medBehospitalTypeServiceImpl.list(new QueryWrapper<MedBehospitalType>()
- .eq("hospital_id", hospitalId)
- .eq("is_deleted", IsDeleteEnum.N.getKey())
- .isNotNull("value")
- .groupBy("value")).stream().map(MedBehospitalType::getValue).collect(Collectors.toList());
- out.put("source",checkTypes);
- out.put("value",valus);
- return out;
- }
- }
|