|
@@ -6,8 +6,12 @@ import com.diagbot.dto.BehospitalInfoAgeDTO;
|
|
|
import com.diagbot.dto.CheckedRecordListDTO;
|
|
|
import com.diagbot.dto.SysUserDeptDTO;
|
|
|
import com.diagbot.entity.BasDeptInfo;
|
|
|
+import com.diagbot.entity.BasDoctorInfo;
|
|
|
+import com.diagbot.entity.DeptMedoup;
|
|
|
import com.diagbot.entity.MedBehospitalType;
|
|
|
import com.diagbot.entity.MedCheckInfo;
|
|
|
+import com.diagbot.entity.SysRole;
|
|
|
+import com.diagbot.entity.SysUser;
|
|
|
import com.diagbot.entity.SysUserDept;
|
|
|
import com.diagbot.entity.SysUserRole;
|
|
|
import com.diagbot.enums.CheckJobTypeEnum;
|
|
@@ -18,9 +22,11 @@ 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.DeptMedoupServiceImpl;
|
|
|
import com.diagbot.service.impl.MedBehospitalTypeServiceImpl;
|
|
|
import com.diagbot.util.DateUtil;
|
|
|
import com.diagbot.util.ListUtil;
|
|
|
+import com.diagbot.util.StringUtil;
|
|
|
import com.diagbot.util.SysUserUtils;
|
|
|
import com.diagbot.vo.CheckedRecordListVO;
|
|
|
import com.diagbot.vo.RecordCheckVO;
|
|
@@ -28,8 +34,10 @@ 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.security.core.userdetails.User;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
+import java.util.Collection;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -50,6 +58,8 @@ public class RecordCheckFacade {
|
|
|
@Autowired
|
|
|
SysUserRoleFacade sysUserRoleFacade;
|
|
|
@Autowired
|
|
|
+ SysRoleFacade sysRoleFacade;
|
|
|
+ @Autowired
|
|
|
MedCheckInfoFacade medCheckInfoFacade;
|
|
|
@Autowired
|
|
|
MedQcresultDetailService medQcresultDetailService;
|
|
@@ -59,6 +69,10 @@ public class RecordCheckFacade {
|
|
|
BasDeptInfoFacade basDeptInfoFacade;
|
|
|
@Autowired
|
|
|
MedBehospitalTypeServiceImpl medBehospitalTypeServiceImpl;
|
|
|
+ @Autowired
|
|
|
+ DeptMedoupServiceImpl deptMedoupService;
|
|
|
+ @Autowired
|
|
|
+ BasDoctorInfoFacade basDoctorInfoFacade;
|
|
|
|
|
|
|
|
|
public IPage<CheckedRecordListDTO> checkedRecordList(CheckedRecordListVO checkedRecordListVO) {
|
|
@@ -73,10 +87,11 @@ public class RecordCheckFacade {
|
|
|
deptIds.addAll(sysUserDeptDTO.getSelDepts().stream().map(i -> i.getDeptId()).collect(Collectors.toList()));
|
|
|
}
|
|
|
//1.2去除质管科
|
|
|
- String zkkDeptId = basDeptInfoFacade.getOne(new QueryWrapper<BasDeptInfo>()
|
|
|
+ BasDeptInfo deptInfo = basDeptInfoFacade.getOne(new QueryWrapper<BasDeptInfo>()
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("hospital_id",hospitalId)
|
|
|
- .eq("station","质管")).getDeptId();
|
|
|
+ .eq("hospital_id", hospitalId)
|
|
|
+ .eq("station", "质管"));
|
|
|
+
|
|
|
List<Long> userIds = Lists.newArrayList();
|
|
|
List<String> JobTypes = Lists.newArrayList();
|
|
|
roleIds.forEach(roleId -> {
|
|
@@ -87,13 +102,17 @@ public class RecordCheckFacade {
|
|
|
} else if (roleId.intValue() == CheckerRoleEnum.QUAT_SUPERVISOR.getKey()
|
|
|
&& (ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes()) || checkedRecordListVO.getCheckJobTypes().contains(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey() + ""))) {
|
|
|
//添加质管科人员
|
|
|
- deptIds.add(zkkDeptId);
|
|
|
+ if (deptInfo != null || deptInfo.getDeptId() != null) {
|
|
|
+ deptIds.add(deptInfo.getDeptId());
|
|
|
+ }
|
|
|
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);
|
|
|
+ if (deptInfo != null || deptInfo.getDeptId() != null) {
|
|
|
+ deptIds.remove(deptInfo.getDeptId());
|
|
|
+ }
|
|
|
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))
|
|
@@ -103,17 +122,17 @@ public class RecordCheckFacade {
|
|
|
});
|
|
|
|
|
|
//如果用户是质控科核查人员,在不传入任务类型的时候要添加质控科任务类型进行筛选
|
|
|
- if(roleIds.contains(CheckerRoleEnum.QUAT_GENERAL.getKey()*1l)){
|
|
|
+ if (roleIds.contains(CheckerRoleEnum.QUAT_GENERAL.getKey() * 1l)) {
|
|
|
JobTypes.add(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey() + "");
|
|
|
}
|
|
|
- if(roleIds.contains(CheckerRoleEnum.DEPT_GENERAL.getKey()*1l)){
|
|
|
+ if (roleIds.contains(CheckerRoleEnum.DEPT_GENERAL.getKey() * 1l)) {
|
|
|
JobTypes.add(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() + "");
|
|
|
}
|
|
|
- if(roleIds.contains(CheckerRoleEnum.HOSP_GENERAL.getKey()*1l)){
|
|
|
+ if (roleIds.contains(CheckerRoleEnum.HOSP_GENERAL.getKey() * 1l)) {
|
|
|
JobTypes.add(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() + "");
|
|
|
}
|
|
|
|
|
|
- if(ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes())){
|
|
|
+ if (ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes())) {
|
|
|
checkedRecordListVO.setCheckJobTypes(JobTypes);
|
|
|
}
|
|
|
if (ListUtil.isEmpty(userIds)) {
|
|
@@ -122,6 +141,11 @@ public class RecordCheckFacade {
|
|
|
checkedRecordListVO.setCurrentDeptIds(String.join(",", deptIds));
|
|
|
checkedRecordListVO.setCurrentGeneralUserIds(userIds);
|
|
|
checkedRecordListVO.setHospitalId(hospitalId);
|
|
|
+
|
|
|
+ //通过主治医生去查,病区、科室、医疗组不作为筛选条件
|
|
|
+ checkedRecordListVO.setDepts(null);
|
|
|
+ checkedRecordListVO.setWards(null);
|
|
|
+// checkedRecordListVO.setMedoups(null);
|
|
|
IPage<CheckedRecordListDTO> iPage = medCheckInfoFacade.getBaseMapper().checkedRecordList(checkedRecordListVO);
|
|
|
|
|
|
if (ListUtil.isNotEmpty(iPage.getRecords())) {
|
|
@@ -137,6 +161,7 @@ public class RecordCheckFacade {
|
|
|
return iPage;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
private List<Long> getUserIdsOfRoleId(Long hospitalId, List<String> deptIds, long roleId) {
|
|
|
QueryWrapper<SysUserDept> sysUserDeptQueryWrapper = new QueryWrapper<>();
|
|
|
sysUserDeptQueryWrapper.eq("hospital_id", hospitalId);
|
|
@@ -156,46 +181,87 @@ public class RecordCheckFacade {
|
|
|
Long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
|
|
|
Long userId = Long.parseLong(SysUserUtils.getCurrentPrincipleID());
|
|
|
|
|
|
+ //获取核查监管相关角色id
|
|
|
+ List<Long> checkRoleIds = sysRoleFacade.list(new QueryWrapper<SysRole>()
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
+ .like("name", "质控人员")
|
|
|
+ ).stream().map(SysRole::getId).collect(Collectors.toList());
|
|
|
+ //查询该角色的所有角色id
|
|
|
+ List<Long> roleIds = sysUserRoleFacade.list(new QueryWrapper<SysUserRole>()
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
+ .eq("user_id", userId)
|
|
|
+ ).stream().distinct().map(SysUserRole::getRoleId).collect(Collectors.toList());
|
|
|
+ if (ListUtil.isNotEmpty(checkRoleIds)) {
|
|
|
+ checkRoleIds.retainAll(roleIds);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ListUtil.isEmpty(checkRoleIds)) {
|
|
|
+ throw new CommonException(CommonErrorCode.NOT_EXISTS, "您暂无核查权限,请联系管理员~");
|
|
|
+ }
|
|
|
+ //获取判断是否有生成分配的核查任务
|
|
|
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());
|
|
|
+// medCheckInfoQueryWrapper.eq("check_id", userId);
|
|
|
+// medCheckInfoQueryWrapper.eq("check_type", CheckTypeEnum.ALL.getKey());
|
|
|
MedCheckInfo medCheckInfo = medCheckInfoFacade.getOne(medCheckInfoQueryWrapper);
|
|
|
+ SysUser user = sysUserFacade.getOne(new QueryWrapper<SysUser>()
|
|
|
+ .eq("id", userId)
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey()));
|
|
|
if (medCheckInfo == null) {
|
|
|
- throw new CommonException(CommonErrorCode.NOT_EXISTS, "该数据您暂无核查权限!");
|
|
|
+ MedCheckInfo insertCheckInfo = new MedCheckInfo();
|
|
|
+ insertCheckInfo.setBehospitalCode(recordCheckVO.getBehospitalCode());
|
|
|
+ insertCheckInfo.setCheckId(userId);
|
|
|
+ if (user != null) {
|
|
|
+ insertCheckInfo.setCheckName(user.getLinkman());
|
|
|
+ }
|
|
|
+ insertCheckInfo.setCheckType(CheckTypeEnum.ALL.getKey());
|
|
|
+ insertCheckInfo.setHospitalId(hospitalId);
|
|
|
+ insertCheckInfo.setStatus(1);
|
|
|
+ //有科室核查人员角色就讲任务定义为科室核查任务(只针对七院科室核查)
|
|
|
+ if(checkRoleIds.contains(CheckerRoleEnum.DEPT_GENERAL.getKey()*1l)){
|
|
|
+ insertCheckInfo.setCheckType(0);
|
|
|
+ }
|
|
|
+ insertCheckInfo.setCheckTime(DateUtil.now());
|
|
|
+ return medCheckInfoFacade.save(insertCheckInfo);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+ medCheckInfo.setCheckId(userId);
|
|
|
+ if (user != null) {
|
|
|
+ medCheckInfo.setCheckName(user.getLinkman());
|
|
|
+ }
|
|
|
medCheckInfo.setStatus(1);
|
|
|
medCheckInfo.setCheckTime(DateUtil.now());
|
|
|
medCheckInfoFacade.updateById(medCheckInfo);
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* @Author songxl
|
|
|
* @Description获取当前用户的任务来源 和筛选分值
|
|
|
- * @Date 2021/5/28
|
|
|
+ * @Date 2021/5/28
|
|
|
* @Param []
|
|
|
- * @Return java.util.Map<java.lang.String,java.lang.String>
|
|
|
+ * @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();
|
|
|
+ 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.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.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());
|
|
|
+ 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());
|
|
@@ -204,8 +270,8 @@ public class RecordCheckFacade {
|
|
|
.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);
|
|
|
+ out.put("source", checkTypes);
|
|
|
+ out.put("value", valus);
|
|
|
return out;
|
|
|
}
|
|
|
}
|