RecordCheckFacade.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. package com.diagbot.facade;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.diagbot.dto.BehospitalInfoAgeDTO;
  5. import com.diagbot.dto.CheckedRecordListDTO;
  6. import com.diagbot.dto.SysUserDeptDTO;
  7. import com.diagbot.entity.BasDeptInfo;
  8. import com.diagbot.entity.MedBehospitalType;
  9. import com.diagbot.entity.MedCheckInfo;
  10. import com.diagbot.entity.SysUserDept;
  11. import com.diagbot.entity.SysUserRole;
  12. import com.diagbot.enums.CheckJobTypeEnum;
  13. import com.diagbot.enums.CheckStatusEnum;
  14. import com.diagbot.enums.CheckTypeEnum;
  15. import com.diagbot.enums.CheckerRoleEnum;
  16. import com.diagbot.enums.IsDeleteEnum;
  17. import com.diagbot.exception.CommonErrorCode;
  18. import com.diagbot.exception.CommonException;
  19. import com.diagbot.service.MedQcresultDetailService;
  20. import com.diagbot.service.impl.MedBehospitalTypeServiceImpl;
  21. import com.diagbot.util.DateUtil;
  22. import com.diagbot.util.ListUtil;
  23. import com.diagbot.util.SysUserUtils;
  24. import com.diagbot.vo.CheckedRecordListVO;
  25. import com.diagbot.vo.RecordCheckVO;
  26. import com.diagbot.vo.SysUserBaseVO;
  27. import com.google.common.collect.Lists;
  28. import com.google.common.collect.Maps;
  29. import org.springframework.beans.factory.annotation.Autowired;
  30. import org.springframework.stereotype.Component;
  31. import java.util.HashMap;
  32. import java.util.List;
  33. import java.util.Map;
  34. import java.util.stream.Collectors;
  35. /**
  36. * @Description:
  37. * @author: rengb
  38. * @time: 2021/5/17 18:43
  39. */
  40. @Component
  41. public class RecordCheckFacade {
  42. @Autowired
  43. SysUserFacade sysUserFacade;
  44. @Autowired
  45. SysUserDeptFacade sysUserDeptFacade;
  46. @Autowired
  47. SysUserRoleFacade sysUserRoleFacade;
  48. @Autowired
  49. MedCheckInfoFacade medCheckInfoFacade;
  50. @Autowired
  51. MedQcresultDetailService medQcresultDetailService;
  52. @Autowired
  53. BehospitalInfoFacade behospitalInfoFacade;
  54. @Autowired
  55. BasDeptInfoFacade basDeptInfoFacade;
  56. @Autowired
  57. MedBehospitalTypeServiceImpl medBehospitalTypeServiceImpl;
  58. public IPage<CheckedRecordListDTO> checkedRecordList(CheckedRecordListVO checkedRecordListVO) {
  59. Long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
  60. Long userId = Long.parseLong(SysUserUtils.getCurrentPrincipleID());
  61. SysUserBaseVO sysUserBaseVO = new SysUserBaseVO();
  62. sysUserBaseVO.setUserId(userId);
  63. List<Long> roleIds = sysUserFacade.getUserRoles(sysUserBaseVO).getSelRoles().stream().map(i -> i.getId()).collect(Collectors.toList());
  64. List<String> deptIds = Lists.newArrayList();
  65. SysUserDeptDTO sysUserDeptDTO = sysUserFacade.getUserDepts(sysUserBaseVO);
  66. if (ListUtil.isNotEmpty(sysUserDeptDTO.getSelDepts())) {
  67. deptIds.addAll(sysUserDeptDTO.getSelDepts().stream().map(i -> i.getDeptId()).collect(Collectors.toList()));
  68. }
  69. //1.2去除质管科
  70. String zkkDeptId = basDeptInfoFacade.getOne(new QueryWrapper<BasDeptInfo>()
  71. .eq("is_deleted", IsDeleteEnum.N.getKey())
  72. .eq("hospital_id",hospitalId)
  73. .eq("station","质管")).getDeptId();
  74. List<Long> userIds = Lists.newArrayList();
  75. List<String> JobTypes = Lists.newArrayList();
  76. roleIds.forEach(roleId -> {
  77. if (roleId.intValue() == CheckerRoleEnum.HOSP_SUPERVISOR.getKey()
  78. && (ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes()) || checkedRecordListVO.getCheckJobTypes().contains(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() + ""))) {
  79. userIds.addAll(getUserIdsOfRoleId(hospitalId, null, CheckerRoleEnum.HOSP_GENERAL.getKey()));
  80. JobTypes.add(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() + "");
  81. } else if (roleId.intValue() == CheckerRoleEnum.QUAT_SUPERVISOR.getKey()
  82. && (ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes()) || checkedRecordListVO.getCheckJobTypes().contains(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey() + ""))) {
  83. //添加质管科人员
  84. deptIds.add(zkkDeptId);
  85. userIds.addAll(getUserIdsOfRoleId(hospitalId, deptIds, CheckerRoleEnum.QUAT_GENERAL.getKey()));
  86. JobTypes.add(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey() + "");
  87. } else if (roleId.intValue() == CheckerRoleEnum.DEPT_SUPERVISOR.getKey() && ListUtil.isNotEmpty(deptIds)
  88. && (ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes()) || checkedRecordListVO.getCheckJobTypes().contains(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() + ""))) {
  89. //移除质管科人员
  90. deptIds.remove(zkkDeptId);
  91. JobTypes.add(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() + "");
  92. userIds.addAll(getUserIdsOfRoleId(hospitalId, deptIds, CheckerRoleEnum.DEPT_GENERAL.getKey()));
  93. } else if ((roleId.intValue() == CheckerRoleEnum.DEPT_GENERAL.getKey() && ListUtil.isNotEmpty(deptIds))
  94. || roleId.intValue() == CheckerRoleEnum.QUAT_GENERAL.getKey() || roleId.intValue() == CheckerRoleEnum.HOSP_GENERAL.getKey()) {
  95. userIds.add(userId);
  96. }
  97. });
  98. //如果用户是质控科核查人员,在不传入任务类型的时候要添加质控科任务类型进行筛选
  99. if(roleIds.contains(CheckerRoleEnum.QUAT_GENERAL.getKey()*1l)){
  100. JobTypes.add(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey() + "");
  101. }else if(roleIds.contains(CheckerRoleEnum.DEPT_GENERAL.getKey()*1l)){
  102. JobTypes.add(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() + "");
  103. }
  104. else if(roleIds.contains(CheckerRoleEnum.HOSP_GENERAL.getKey()*1l)){
  105. JobTypes.add(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() + "");
  106. }
  107. if(ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes())){
  108. checkedRecordListVO.setCheckJobTypes(JobTypes);
  109. }
  110. if (ListUtil.isEmpty(userIds)) {
  111. userIds.add(999999999999999999l);
  112. }
  113. checkedRecordListVO.setCurrentDeptIds(String.join(",", deptIds));
  114. checkedRecordListVO.setCurrentGeneralUserIds(userIds);
  115. checkedRecordListVO.setHospitalId(hospitalId);
  116. IPage<CheckedRecordListDTO> iPage = medCheckInfoFacade.getBaseMapper().checkedRecordList(checkedRecordListVO);
  117. if (ListUtil.isNotEmpty(iPage.getRecords())) {
  118. List<String> behospitalCodes = iPage.getRecords().stream().map(i -> i.getBehospitalCode()).collect(Collectors.toList());
  119. Map<String, BehospitalInfoAgeDTO> ageMap = behospitalInfoFacade.getBehospitalInfoAge(hospitalId, behospitalCodes).stream().collect(Collectors.toMap(i -> i.getBehospitalCode(), i -> i));
  120. iPage.getRecords().forEach(i -> {
  121. i.setMonth(i.getJobDistributionTime());
  122. i.setStatus(CheckStatusEnum.getName(Integer.parseInt(i.getStatus())));
  123. i.setAge(ageMap.get(i.getBehospitalCode()) == null ? "" : ageMap.get(i.getBehospitalCode()).getAge());
  124. });
  125. }
  126. return iPage;
  127. }
  128. private List<Long> getUserIdsOfRoleId(Long hospitalId, List<String> deptIds, long roleId) {
  129. QueryWrapper<SysUserDept> sysUserDeptQueryWrapper = new QueryWrapper<>();
  130. sysUserDeptQueryWrapper.eq("hospital_id", hospitalId);
  131. sysUserDeptQueryWrapper.in(ListUtil.isNotEmpty(deptIds), "dept_id", deptIds);
  132. List<Long> userIds = sysUserDeptFacade.list(sysUserDeptQueryWrapper).stream().map(i -> i.getUserId()).collect(Collectors.toList());
  133. if (ListUtil.isEmpty(userIds)) {
  134. return null;
  135. }
  136. QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
  137. sysUserRoleQueryWrapper.in("user_id", userIds);
  138. sysUserRoleQueryWrapper.eq("role_id", roleId);
  139. return sysUserRoleFacade.list(sysUserRoleQueryWrapper).stream().map(i -> i.getUserId()).collect(Collectors.toList());
  140. }
  141. public boolean recordCheck(RecordCheckVO recordCheckVO) {
  142. Long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
  143. Long userId = Long.parseLong(SysUserUtils.getCurrentPrincipleID());
  144. QueryWrapper<MedCheckInfo> medCheckInfoQueryWrapper = new QueryWrapper<>();
  145. medCheckInfoQueryWrapper.eq("behospital_code", recordCheckVO.getBehospitalCode());
  146. medCheckInfoQueryWrapper.eq("hospital_id", hospitalId);
  147. medCheckInfoQueryWrapper.eq("check_id", userId);
  148. medCheckInfoQueryWrapper.eq("check_type", CheckTypeEnum.ALL.getKey());
  149. MedCheckInfo medCheckInfo = medCheckInfoFacade.getOne(medCheckInfoQueryWrapper);
  150. if (medCheckInfo == null) {
  151. throw new CommonException(CommonErrorCode.NOT_EXISTS, "该数据您暂无核查权限!");
  152. }
  153. medCheckInfo.setStatus(1);
  154. medCheckInfo.setCheckTime(DateUtil.now());
  155. medCheckInfoFacade.updateById(medCheckInfo);
  156. return true;
  157. }
  158. /**
  159. * @Author songxl
  160. * @Description获取当前用户的任务来源 和筛选分值
  161. * @Date 2021/5/28
  162. * @Param []
  163. * @Return java.util.Map<java.lang.String,java.lang.String>
  164. * @MethodName getCheckType
  165. */
  166. public Map<String, Object> getCheckType() {
  167. Map<String,Object> out = Maps.newLinkedHashMap();
  168. Map<Integer,String> checkTypes = Maps.newLinkedHashMap();
  169. Long userId = Long.parseLong(SysUserUtils.getCurrentPrincipleID());
  170. SysUserBaseVO sysUserBaseVO = new SysUserBaseVO();
  171. sysUserBaseVO.setUserId(userId);
  172. List<Long> roleIds = sysUserFacade.getUserRoles(sysUserBaseVO).getSelRoles().stream().map(i -> i.getId()).collect(Collectors.toList());
  173. roleIds.stream().forEach(roleId -> {
  174. if (roleId.intValue() == CheckerRoleEnum.DEPT_SUPERVISOR.getKey()||roleId.intValue() == CheckerRoleEnum.DEPT_GENERAL.getKey()){
  175. checkTypes.put(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey(),CheckJobTypeEnum.DEPT_SUPERVISOR.getName());
  176. }
  177. if (roleId.intValue() == CheckerRoleEnum.QUAT_SUPERVISOR.getKey()||roleId.intValue() == CheckerRoleEnum.QUAT_GENERAL.getKey()){
  178. checkTypes.put(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey(),CheckJobTypeEnum.QUAT_SUPERVISOR.getName());
  179. }
  180. if (roleId.intValue() == CheckerRoleEnum.HOSP_SUPERVISOR.getKey()||roleId.intValue() == CheckerRoleEnum.HOSP_GENERAL.getKey()){
  181. checkTypes.put(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey(),CheckJobTypeEnum.HOSP_SUPERVISOR.getName());
  182. }
  183. });
  184. Long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
  185. List<Integer> valus = medBehospitalTypeServiceImpl.list(new QueryWrapper<MedBehospitalType>()
  186. .eq("hospital_id", hospitalId)
  187. .eq("is_deleted", IsDeleteEnum.N.getKey())
  188. .isNotNull("value")
  189. .groupBy("value")).stream().map(MedBehospitalType::getValue).collect(Collectors.toList());
  190. out.put("source",checkTypes);
  191. out.put("value",valus);
  192. return out;
  193. }
  194. }