Ver código fonte

Merge branch '20210512_yw_check' into test

songxinlu 4 anos atrás
pai
commit
e626bc7a4f

+ 5 - 0
src/main/java/com/diagbot/dto/CheckJobDTO.java

@@ -23,6 +23,11 @@ public class CheckJobDTO {
     private String attendingDoctor;
     //出院日期
     private String leaveHospitalDate;
+    //任务分配人员id
+    private Long jobDistributor;
+
     //筛选分值
     private int value;
+    //取消分配标志
+    private Boolean delFlag;
 }

+ 2 - 2
src/main/java/com/diagbot/enums/CheckJobTypeEnum.java

@@ -10,8 +10,8 @@ import lombok.Setter;
  */
 public enum CheckJobTypeEnum implements KeyedNamed {
     DEPT_SUPERVISOR(0, "科室任务"),
-    HOSP_SUPERVISOR(1, "院级"),
-    QUAT_SUPERVISOR(2, "质控科");
+    QUAT_SUPERVISOR(1, "质控科"),
+    HOSP_SUPERVISOR(2, "院级");
 
     @Setter
     private int key;

+ 138 - 118
src/main/java/com/diagbot/facade/MedCheckInfoFacade.java

@@ -16,6 +16,8 @@ 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;
+import com.diagbot.enums.CheckerRoleEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
@@ -184,7 +186,8 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
             throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该用户不是核查监管人员!");
         }
         //质控科监管人员
-        if(searchRoleIds.contains(5L)&&"2".equals(checkJobVO.getJobType()))
+        if(searchRoleIds.contains(CheckerRoleEnum.QUAT_SUPERVISOR.getKey()*1l)
+                &&(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey()+"").equals(checkJobVO.getJobType()))
         {
             //用户是不是质管科人员校验
             String zkkDeptId = basDeptInfoFacade.getOne(new QueryWrapper<BasDeptInfo>()
@@ -204,36 +207,53 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
             //3.判断这个人是否在质控科
             if(deptIds.contains(zkkDeptId))
             {
+                //质控科任务分配列表是任务类型是质控科的任务与科室无关
                 return getCheckList(checkJobVO);
             }
         }
-        //临床科室监管人员
-        else if(searchRoleIds.contains(4L)&&"0".equals(checkJobVO.getJobType()))
+        //临床科室监管人员 或 院级监管人员
+        else if(searchRoleIds.contains(CheckerRoleEnum.DEPT_SUPERVISOR.getKey()*1l)
+                ||searchRoleIds.contains(CheckerRoleEnum.HOSP_SUPERVISOR.getKey()*1l))
         {
-            //获取监管人员所在科室集合
-            List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
-                    .eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .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);
-        }
-        //院级监管人员
-        else if(searchRoleIds.contains(6L)&&"1".equals(checkJobVO.getJobType()))
-        {
-            //获取监管人员所在科室集合
-            List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
-                    .eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .eq("hospital_id",hospitalId)
-                    .eq("user_id",principleId)
-            ).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
-            //分配除了监管人员以外其他科室的核查任务
-            if(deptIds!=null&&!deptIds.isEmpty()){
-                checkJobVO.setDeptList(deptIds);
+            //查询没有指定科室
+            if(checkJobVO.getDeptList()==null||checkJobVO.getDeptList().isEmpty())
+            {
+                //科室获取待分配任务所在科室集合
+                if(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey()==Integer.parseInt(checkJobVO.getJobType())){
+                    List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
+                            .eq("is_deleted", IsDeleteEnum.N.getKey())
+                            .eq("hospital_id",hospitalId)
+                            .eq("user_id",principleId)
+                    ).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
+
+                    if(deptIds!=null&&!deptIds.isEmpty()){
+                        checkJobVO.setDeptList(deptIds);
+                    }
+                }
+                //院区获取
+                if(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey()==Integer.parseInt(checkJobVO.getJobType())){
+//                    //获取管理员所在科室
+//                    List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
+//                            .eq("is_deleted", IsDeleteEnum.N.getKey())
+//                            .eq("hospital_id",hospitalId)
+//                            .eq("user_id",principleId)
+//                    ).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
+//                    //获取所有院区核查人员所在科室
+//                    CheckUserVO checkUserVOS = new CheckUserVO();
+//                    checkUserVOS.setRoleIds(Lists.newArrayList(CheckerRoleEnum.HOSP_GENERAL.getKey()*1l));
+//                    checkUserVOS.setDeptStations(Lists.newArrayList("住院"));
+//                    checkUserVOS.setHospitalId(hospitalId);
+//                    List<CheckUserDTO> checkUserDTOS = baseMapper.getCheckUser(checkUserVOS);
+//                    Set<String> hospGeneralDeptIds= checkUserDTOS.stream()
+//                            .map(CheckUserDTO::getDeptId).collect(Collectors.toSet());
+//                    //去除管理员所在科室
+//                    if(hospGeneralDeptIds!=null&&!hospGeneralDeptIds.isEmpty()&&deptIds!=null){
+//                        hospGeneralDeptIds.removeAll(deptIds);
+//                        checkJobVO.setDeptList(new ArrayList<>(hospGeneralDeptIds));
+//                    }
+                }
             }
+
             return getCheckList(checkJobVO);
         }
         else
@@ -370,27 +390,30 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
     private void getYQCheckInfo(Map<String, List<CheckDeptDTO>> checkRoleMap, Long hospitalId, Long principleId) {
         //1.获取院级质控人员有哪些
         //1.1获取院级质控人员角色id
-        Long roleId = sysRoleFacade.getOne(new QueryWrapper<SysRole>()
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("name","院级质控人员")).getId();
         CheckUserVO checkUserVOS = new CheckUserVO();
-        checkUserVOS.setRoleIds(Lists.newArrayList(roleId));
+        checkUserVOS.setRoleIds(Lists.newArrayList(CheckerRoleEnum.HOSP_GENERAL.getKey()*1l));
         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 = 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);
-        addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,6);
+        if(deptMap!=null&&!deptMap.isEmpty())
+        {
+            //2.3获取所有医生信息的核查数
+            List<String> doctorIds = checkUserDTOS.stream().map(CheckUserDTO::getDoctorId).collect(Collectors.toList());
+            CheckUserVO checkUserVO = new CheckUserVO();
+            checkUserVO.setJobType(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey());
+            checkUserVO.setUserList(doctorIds);
+            checkUserVO.setDeptIds(new ArrayList<>(deptMap.keySet()));
+            //通过核查人员id获取核查人员的核查任务数
+            List<DeptCheckUserDTO> userJobs = baseMapper.getJobNumByUserId(checkUserVO);
+            addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,CheckerRoleEnum.HOSP_SUPERVISOR.getKey());
+        }
+        else {
+            checkRoleMap.put(CheckerRoleEnum.HOSP_SUPERVISOR.getKey()+"",new ArrayList<>());
+        }
+
     }
     /**
      * @Author songxl
@@ -420,23 +443,32 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         if(deptIds.contains(zkkDeptId))
         {
             CheckUserVO checkUserVOS = new CheckUserVO();
-            checkUserVOS.setRoleIds(Lists.newArrayList(7L,8L,9L));
-            checkUserVOS.setDeptStations(Lists.newArrayList("住院","质管"));
-            checkUserVOS.setUserId(principleId);
-            checkUserVOS.setRoleId(5L);
+            //质管科人员角色
+            checkUserVOS.setRoleIds(Lists.newArrayList(CheckerRoleEnum.QUAT_GENERAL.getKey()*1l));
+            //质管科
+            checkUserVOS.setDeptStations(Lists.newArrayList("质管"));
+            checkUserVOS.setDeptIds(Lists.newArrayList(zkkDeptId));
             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);
-            addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,5);
+            if(deptMap!=null&&!deptMap.isEmpty())
+            {
+                //2.3获取质控科核查人员的核查数
+                List<String> doctorIds = checkUserDTOS.stream().map(CheckUserDTO::getDoctorId).collect(Collectors.toList());
+                CheckUserVO checkUserVO = new CheckUserVO();
+                checkUserVO.setJobType(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey());
+                checkUserVO.setUserList(doctorIds);
+                checkUserVO.setDeptIds(Lists.newArrayList(zkkDeptId));
+                //通过核查人员id获取核查人员的核查任务数
+                List<DeptCheckUserDTO> userJobs = baseMapper.getJobNumByUserId(checkUserVO);
+                addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,CheckerRoleEnum.QUAT_SUPERVISOR.getKey());
+            }
+            else {
+                checkRoleMap.put(CheckerRoleEnum.QUAT_SUPERVISOR.getKey()+"",new ArrayList<>());
+            }
+
         }
 
     }
@@ -457,8 +489,15 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
                 .eq("user_id",principleId)
         ).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
         if(deptIds.isEmpty()){return;}
+        //1.2去除质管科
+        String zkkDeptId = basDeptInfoFacade.getOne(new QueryWrapper<BasDeptInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id",hospitalId)
+                .like("dept_name","质管科")).getDeptId();
+        if(StringUtil.isNotBlank(zkkDeptId)){deptIds.remove(zkkDeptId);}
         CheckUserVO checkUserVOS = new CheckUserVO();
-        checkUserVOS.setRoleIds(Lists.newArrayList(4L,7L));
+        //科室普通核查人员角色筛选
+        checkUserVOS.setRoleIds(Lists.newArrayList(CheckerRoleEnum.DEPT_GENERAL.getKey()*1l));
         checkUserVOS.setDeptIds(deptIds);
         checkUserVOS.setDeptStations(Lists.newArrayList("住院"));
         checkUserVOS.setHospitalId(hospitalId);
@@ -466,14 +505,24 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         //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(0);
-        checkUserVO.setUserList(doctorIds);
-        //通过核查人员id获取核查人员的核查任务数
-        List<DeptCheckUserDTO> userJobs = baseMapper.getJobNumByUserId(checkUserVO);
-        addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,4);
+        if(deptMap!=null&&!deptMap.isEmpty())
+        {
+            //2.3获取所有医生信息的核查数
+            List<String> doctorIds = checkUserDTOS.stream().map(CheckUserDTO::getDoctorId).collect(Collectors.toList());
+            CheckUserVO checkUserVO = new CheckUserVO();
+            checkUserVO.setJobType(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey());
+            checkUserVO.setUserList(doctorIds);
+            checkUserVO.setDeptIds(deptIds);
+            //通过核查人员id获取核查人员的核查任务数
+            List<DeptCheckUserDTO> userJobs = baseMapper.getJobNumByUserId(checkUserVO);
+            addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,CheckerRoleEnum.DEPT_SUPERVISOR.getKey());
+        }
+        else {
+            checkRoleMap.put(CheckerRoleEnum.DEPT_SUPERVISOR.getKey()+"",new ArrayList<>());
+        }
+
+
+
     }
 
     /**
@@ -515,8 +564,9 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
                 //遍历数量
                 for(DeptCheckUserDTO jobNumDto:userJobs)
                 {
-                    //有这个人
-                    if(deptCheckUserDTO.getDoctorId().equals(jobNumDto.getDoctorId()))
+                    //这个科室有这个人
+                    if(deptCheckUserDTO.getDeptId().equals(jobNumDto.getDeptId())&&
+                            deptCheckUserDTO.getDoctorId().equals(jobNumDto.getDoctorId()))
                     {
                         deptCheckUserDTO.setJobNum(jobNumDto.getJobNum());
                     }
@@ -532,60 +582,6 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
     }
 
 
-    /**
-     * @Author songxl
-     * @Description 拼装科室、核查人员、任务数对象
-     * @Date  2021/5/17
-     * @Param [checkRoleMap, doctorInfos, userJobs, deptInfos, roleId]
-     * @Return void
-     * @MethodName addCheckInfoMap
-     */
-    private void addCheckInfoMap(Map<String, List<CheckDeptDTO>> checkRoleMap, List<BasDoctorInfo> doctorInfos,
-                                 List<DeptCheckUserDTO> userJobs, List<BasDeptInfo> deptInfos, int roleId) {
-        if(deptInfos.isEmpty()||doctorInfos.isEmpty()){}
-        checkRoleMap.put(roleId+"",new ArrayList<CheckDeptDTO>());
-        //遍历科室
-        for(BasDeptInfo deptInfo:deptInfos)
-        {
-            //科室对象
-            CheckDeptDTO checkDeptDTO = new CheckDeptDTO();
-            checkDeptDTO.setDeptId(deptInfo.getDeptId());
-            checkDeptDTO.setDeptName(deptInfo.getDeptName());
-            checkDeptDTO.setDeptcheckUsers(new ArrayList<DeptCheckUserDTO>());
-            //遍历医生
-            for(BasDoctorInfo doctorInfo:doctorInfos)
-            {
-                //同一科室
-                if(checkDeptDTO.getDeptId().equals(doctorInfo.getDeptId()))
-                {
-                    DeptCheckUserDTO deptCheckUserDTO = new DeptCheckUserDTO();
-                    deptCheckUserDTO.setDeptId(doctorInfo.getDeptId());
-                    deptCheckUserDTO.setDeptName(deptInfo.getDeptName());
-                    deptCheckUserDTO.setDoctorId(doctorInfo.getDoctorId());
-                    deptCheckUserDTO.setDoctorName(doctorInfo.getName());
-                    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
@@ -626,6 +622,14 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,"入参为空");
         }
+        //全院的话要判断院级核查人员和核查病历不是同一科室
+        if(StringUtil.isNotBlank(distributionJobVO.getCheckDept())
+                &&distributionJobVO.getBehospitalDepts()!=null
+                &&!distributionJobVO.getBehospitalDepts().isEmpty()){
+            if(distributionJobVO.getBehospitalDepts().contains(distributionJobVO.getCheckDept())){
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,"院级核查人员和核查病历是同一科室");
+            }
+        }
         //获取人员id 和 该人员的医院id
         Long hospitalId = Long.valueOf(SysUserUtils.getCurrentHospitalID());
         Long principleId = Long.valueOf(SysUserUtils.getCurrentPrincipleID());
@@ -716,6 +720,22 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "没有传核查用户id!");
         }
-        return baseMapper.getCheckListByUserId(checkJobVO);
+        List<CheckJobDTO> checkJobDTOS= baseMapper.getCheckListByUserId(checkJobVO);
+        //获取当前登录人员
+        Long principleId = Long.valueOf(SysUserUtils.getCurrentPrincipleID());
+        List<CheckJobDTO> outCheckJobDTOS = new ArrayList<>();
+        //判断分配人员是否是当前人员
+        for(CheckJobDTO checkJobDTO:checkJobDTOS)
+        {
+            if (principleId.equals(checkJobDTO.getJobDistributor()))
+            {
+                checkJobDTO.setDelFlag(true);
+            }
+            else {
+                checkJobDTO.setDelFlag(false);
+            }
+            outCheckJobDTOS.add(checkJobDTO);
+        }
+        return outCheckJobDTOS;
     }
 }

+ 44 - 65
src/main/java/com/diagbot/facade/MedCheckWorkFacade.java

@@ -5,7 +5,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.CheckWorkDTO;
 import com.diagbot.dto.MedicalRecordDTO;
-import com.diagbot.entity.*;
+import com.diagbot.entity.MedBehospitalType;
+import com.diagbot.entity.MedCheckInfo;
+import com.diagbot.entity.SysTaskCron;
+import com.diagbot.entity.SysUser;
+import com.diagbot.enums.CheckJobTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
@@ -16,12 +20,19 @@ import com.diagbot.util.DateUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.SysUserUtils;
-import com.diagbot.vo.*;
+import com.diagbot.vo.CheckWorkPageVO;
+import com.diagbot.vo.MedCheckWorkAddVO;
+import com.diagbot.vo.RecordTypeVO;
+import com.diagbot.vo.SysUserBaseVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.*;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
 import java.util.stream.Collectors;
 
 
@@ -83,8 +94,7 @@ public class MedCheckWorkFacade {
             }
 
             int i = medCheckInfoFacade.getBaseMapper().deleteBatchCodes(medCheckWorkVO.getBehospitalCodeList());
-            if(i!=0)
-            {
+            if (i != 0) {
                 return true;
             }
         } else if (checkStatus != null && checkStatus == 1) {
@@ -137,66 +147,24 @@ public class MedCheckWorkFacade {
 
 
         //定义批量插入的集合
-        HashMap<String, MedBehospitalType> medBehospitalTypeMap = null;
-        //1.判断患者类型表是否有记录
-        int count = medBehospitalTypeServiceImpl.count();
-        if (count > 0) {
-            medBehospitalTypeMap = new HashMap<>();
-            //2.1获取最近指定归档时间间隔的患者
-            RecordTypeVO recordContentVO = new RecordTypeVO();
-            recordContentVO.setHospitalId(hospiatlId);
-            recordContentVO.setModeList(new ArrayList<String>(typeValue.keySet()));
-            recordContentVO.setIsPlacefile(1l);//获取已归档的患者
-            recordContentVO.setStartTime(DateUtil.formatDateTime(DateUtil.addMinutes(DateUtil.now(), -30)));
-            recordContentVO.setEndTime(DateUtil.formatDateTime(DateUtil.now()));
-            putBehospitalTypeMap(medBehospitalTypeMap,recordContentVO,typeValue,typeName,hospiatlId,searchSize);
-        } else {
-            //2.2添加今天之前所有患者的类型
-            //2.2.1获取所有数据数量
-            medBehospitalTypeMap = new HashMap<>();
-            RecordTypeVO recordContentVO = new RecordTypeVO();
-            recordContentVO.setHospitalId(hospiatlId);
-            recordContentVO.setModeList(new ArrayList<String>(typeValue.keySet()));
-            recordContentVO.setIsPlacefile(1l);//获取已归档的患者
-            putBehospitalTypeMap(medBehospitalTypeMap,recordContentVO,typeValue,typeName,hospiatlId,searchSize);
+        HashMap<String, MedBehospitalType> medBehospitalTypeMap = new HashMap<>();
+        //1.获取有指定文书、没有患者类型的患者数据
+        RecordTypeVO recordContentVO = new RecordTypeVO();
+        recordContentVO.setHospitalId(hospiatlId);
+        recordContentVO.setModeList(new ArrayList<>(typeValue.keySet()));
+        List<MedicalRecordDTO> medicalRecordList = medicalRecordServiceImpl.getMedicalRecord(recordContentVO);
+        if(medicalRecordList!=null&&!medicalRecordList.isEmpty())
+        {
+            getPatientRecordType(medBehospitalTypeMap,medicalRecordList, typeValue, typeName, hospiatlId);
         }
-        //3.批量执行插入操作
+        //2.批量执行插入操作
         try {
-            if (medBehospitalTypeMap!=null&&medBehospitalTypeMap.size() > 0) {
+            if (medBehospitalTypeMap != null && medBehospitalTypeMap.size() > 0) {
                 List<MedBehospitalType> medBehospitalTypeList = new ArrayList<>(medBehospitalTypeMap.values());
-                medBehospitalTypeServiceImpl.saveBatch(medBehospitalTypeList, batchSize);
-            }
-        }
-        catch(Exception e)
-        {
-            log.error(e.getMessage(),e);
-        }
-    }
-
-    private void putBehospitalTypeMap(HashMap<String, MedBehospitalType> medBehospitalTypeMap,
-                                      RecordTypeVO recordContentVO, JSONObject typeValue,
-                                      JSONObject typeName, Long hospiatlId,int searchSize) {
-        int num = medicalRecordServiceImpl.getRecordCount(recordContentVO);
-        if (num > 0) {
-
-            if (num < searchSize) {
-                //执行一次
-                recordContentVO.setStart(0L);
-                recordContentVO.setEnd(num + 0L);
-                getPatientRecordType(medBehospitalTypeMap,
-                        medicalRecordServiceImpl.getMedicalRecord(recordContentVO), typeValue, typeName, hospiatlId);
-            }
-            else
-            {
-                int i = num / searchSize + 1;
-                for (int j = 0; j < i; j++) {
-                    //5000个一次循环添加
-                    recordContentVO.setStart(j * searchSize * 1L);
-                    recordContentVO.setEnd(searchSize * 1L);
-                    getPatientRecordType(medBehospitalTypeMap,
-                            medicalRecordServiceImpl.getMedicalRecord(recordContentVO), typeValue, typeName, hospiatlId);
-                }
+                medBehospitalTypeServiceImpl.saveOrUpdateBatch(medBehospitalTypeList, batchSize);
             }
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
         }
     }
 
@@ -275,9 +243,22 @@ public class MedCheckWorkFacade {
             }
         }
         checkWorkPageVO.setHospitalId(Long.parseLong(SysUserUtils.getCurrentHospitalID()));
+
+        if (StringUtil.isNotBlank(checkWorkPageVO.getJobType()) && (CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() + "").equals(checkWorkPageVO.getJobType())) {
+            SysUserBaseVO sysUserBaseVO = new SysUserBaseVO();
+            sysUserBaseVO.setUserId(Long.parseLong(SysUserUtils.getCurrentPrincipleID()));
+            List<String> deptIds = sysUserFacade.getUserDepts(sysUserBaseVO).getSelDepts().stream().map(i -> i.getDeptId()).collect(Collectors.toList());
+            if (ListUtil.isNotEmpty(checkWorkPageVO.getDepartment())) {
+                deptIds.retainAll(checkWorkPageVO.getDepartment());
+            }
+            if (ListUtil.isEmpty(deptIds)) {
+                deptIds.add("999999999999");
+            }
+            checkWorkPageVO.setDepartment(deptIds);
+        }
     }
 
-    public boolean getCheckListByUserId() {
+    public boolean createMedBeHospitalInfoType() {
         //1.获取定时任务
         SysTaskCron task = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
                 .eq("cron_code", "TASK019"), false);
@@ -285,9 +266,7 @@ public class MedCheckWorkFacade {
         if (null != task && StringUtil.isNotBlank(task.getCron())) {
             try {
                 execute(task.getParam());
-            }
-            catch (Exception e)
-            {
+            } catch (Exception e) {
                 e.printStackTrace();
                 return false;
             }

+ 0 - 4
src/main/java/com/diagbot/vo/CheckUserVO.java

@@ -23,9 +23,5 @@ public class CheckUserVO {
     private Long hospitalId;
     //科室类型集合
     private List<String> deptStations;
-    //角色id
-    private  Long roleId;
-    //用户id
-    private  Long userId;
 
 }

+ 2 - 2
src/main/java/com/diagbot/vo/CheckWorkPageVO.java

@@ -40,7 +40,7 @@ public class CheckWorkPageVO extends Page implements Serializable {
     private String creatStatus="0";
 
     /**
-     * 核查任务类型(0-科室任务 1-院级 1-质控科)
+     * 核查任务类型(0-科室任务 2-院级 1-质控科)
      */
     private String jobType;
 
@@ -61,7 +61,7 @@ public class CheckWorkPageVO extends Page implements Serializable {
      * 科室编号集合
      */
     @ApiModelProperty("科室编号集合")
-    private List<String> departments;
+    private List<String> department;
 
     /**
      * 病历等级

+ 4 - 0
src/main/java/com/diagbot/vo/DistributionJobVO.java

@@ -27,6 +27,10 @@ public class DistributionJobVO {
     //核查用户姓名
     @ApiModelProperty("核查用户姓名")
     private String checkName;
+    @ApiModelProperty("核查用户科室id")
+    private String checkDept;
+    @ApiModelProperty("病人住院科室集合")
+    private List<String> behospitalDepts;
     //操作类型 分配或取消 0-分配,1-取消分配
     @ApiModelProperty("操作类型 分配或取消 0-分配,1-取消分配")
     private String distributionType;

+ 3 - 3
src/main/java/com/diagbot/web/MedCheckInfoController.java

@@ -71,7 +71,7 @@ public class MedCheckInfoController {
                     "或<br>" +
                     "behosDateStart:  出院开始时间 必填<br>" +
                     "behosDateEnd:  出院结束时间 必填<br>" +
-                    "jobType:核查任务类型 必填 0-科室任务 1-院级 2-质控科<br>" )
+                    "jobType:核查任务类型 必填 0-科室任务  1-质控科 2-院级<br>" )
     @PostMapping("/getCheckList")
     @SysLogger("getCheckList")
     public RespDTO<IPage<CheckJobDTO>> getCheckList(@RequestBody CheckJobPageVO checkJobPageVO) {
@@ -105,7 +105,7 @@ public class MedCheckInfoController {
                     "备注:如果历史患者病历类型已经生成,接口只会筛选当前时间前半个小时入院患者生成类型")
     @PostMapping("/createMedBeHospitalInfoType")
     @SysLogger("createMedBeHospitalInfoType")
-    public RespDTO<Boolean> getCheckListByUserId() {
-        return RespDTO.onSuc(medCheckWorkFacade.getCheckListByUserId());
+    public RespDTO<Boolean> createMedBeHospitalInfoType() {
+        return RespDTO.onSuc(medCheckWorkFacade.createMedBeHospitalInfoType());
     }
 }

+ 1 - 1
src/main/java/com/diagbot/web/MedCheckWorkController.java

@@ -47,7 +47,7 @@ public class MedCheckWorkController {
             notes = "startDate:出院开始时间 【必填】<br>" +
                     "endDate:出院结束时间 【必填】<br>" +
                     "creatStatus:生成状态(0-未生成 1-已生成) 【必填】<br>" +
-                    "jobType:核查任务类型(0-科室任务 1-院级 1-质控科) <br>" +
+                    "jobType:核查任务类型(0-科室任务 1-质控科 2-院级) <br>" +
                     "hospitalId: 医院ID<br>" +
                     "behospitalCode:病人住院序号<br>" +
                     "departments:科室<br>" +

+ 53 - 48
src/main/resources/mapper/MedCheckInfoMapper.xml

@@ -31,26 +31,19 @@
         a.id doctorId,
         a.linkman doctorName,
         c.dept_id deptId,
-        d.dept_name deptName,
-        b.role_id  roleId
+        d.dept_name deptName
         from
         sys_user a,sys_user_role b,sys_user_dept c ,bas_dept_info d
         where a.id = b.user_id and a.is_deleted = "N" and b.is_deleted = "N" and c.is_deleted = "N" and a.id = c.user_id
         and d.dept_id = c.dept_id and c.hospital_id = d.hospital_id
         and c.hospital_id = #{hospitalId}
-        <if test="roleIds !=null and roleIds.size()!=0 and roleId ==null and userId ==null">
+        <if test="roleIds !=null and roleIds.size()!=0 ">
             and b.role_id in
             <foreach collection="roleIds" item="item" open="(" close=")" separator=",">
                 #{item}
             </foreach>
         </if>
-        <if test="roleIds !=null and roleIds.size()!=0 and roleId !=null and userId !=null">
-            and (b.role_id in
-            <foreach collection="roleIds" item="item" open="(" close=")" separator=",">
-                #{item}
-            </foreach>
-             or (b.role_id =#{roleId} and  a.id = #{userId}))
-        </if>
+
         <if test="deptIds !=null and deptIds.size()!=0">
             and c.dept_id in
             <foreach collection="deptIds" item="item" open="(" close=")" separator=",">
@@ -67,21 +60,28 @@
     <!--通过核查人员id获取核查人员的核查任务数-->
     <select id="getJobNumByUserId" resultType="com.diagbot.dto.DeptCheckUserDTO">
         SELECT
-        check_id doctorId,
+        a.beh_dept_id deptId ,
+        b.check_id doctorId,
         count(*) as jobNum
         from
-        med_check_info
-        where is_deleted = 'N' and job_distribution_name is not null
-        <if test="jobType != null and jobType != ''">
-            and job_type = #{jobType}
+        med_behospital_info a LEFT JOIN med_check_info b on a.behospital_code = b.behospital_code and a.hospital_id = b.hospital_id
+        where b.is_deleted = 'N' and b.job_distribution_name is not null
+        <if test="jobType != null ">
+            and b.job_type = #{jobType}
         </if>
-        <if test="userList !=null">
-            and check_id in
+        <if test="userList !=null and userList.size!=0">
+            and b.check_id in
             <foreach collection="userList" item="item" open="(" close=")" separator=",">
                 #{item}
             </foreach>
         </if>
-        GROUP BY check_id
+        <if test="deptIds !=null and deptIds.size()!=0">
+            and a.beh_dept_id in
+            <foreach collection="deptIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        GROUP BY a.beh_dept_id
     </select>
 
     <!--获取待分配核查任务列表-->
@@ -115,39 +115,33 @@
                     <![CDATA[ AND b.job_create_time >= #{startTime}]]>
                 </if>
                 <if test="endTime != null and endTime != ''">
-                    <![CDATA[ AND b.job_create_time < #{endTime}]]>
+                    <![CDATA[ AND b.job_create_time <= #{endTime}]]>
                 </if>
 
                 <if test="behosDateStart != null and behosDateStart != ''">
                     <![CDATA[ AND a.leave_hospital_date >= #{behosDateStart}]]>
                 </if>
                 <if test="behosDateEnd != null and behosDateEnd != ''">
-                    <![CDATA[ AND a.leave_hospital_date < #{behosDateEnd}]]>
+                    <![CDATA[ AND a.leave_hospital_date <= #{behosDateEnd}]]>
                  </if>
                 <if test="doctorName !=null and doctorName != ''">
-                    and a.doctor_name = #{doctorName}
+                    and a.doctor_name LIKE CONCAT('%',#{doctorName},'%')
                 </if>
                 <if test="behospitalCode !=null and behospitalCode != ''">
-                    and a.behospital_code = #{behospitalCode}
+                    and a.behospital_code LIKE CONCAT('%',#{behospitalCode},'%')
                 </if>
                 <if test="name !=null and name != ''">
                     and a.`name` LIKE CONCAT('%',#{name},'%')
                 </if>
-                <if test="deptList !=null and deptList.size()!=0 and jobType ==0">
+                <if test="deptList !=null and deptList.size()!=0">
                     and a.beh_dept_id in
                     <foreach collection="deptList" item="item" open="(" close=")" separator=",">
                         #{item}
                     </foreach>
                 </if>
-                <if test="deptList !=null and deptList.size()!=0 and jobType ==1">
-                    and a.beh_dept_id not in
-                    <foreach collection="deptList" item="item" open="(" close=")" separator=",">
-                        #{item}
-                    </foreach>
-                </if>
 
         ) a LEFT JOIN med_behospital_type b on a.behospital_code = b.behospital_code
-        and a.hospital_id = b.hospital_id and b.is_deleted = 'N' ORDER BY b.`value` DESC ,a.leave_hospital_date DESC
+        and a.hospital_id = b.hospital_id and b.is_deleted = 'N'
     </select>
 
 
@@ -158,8 +152,10 @@
         a.beh_dept_name behospitalDept,
         a.doctor_name attendingDoctor,
         a.leave_hospital_date leaveHospitalDate,
-        a.`name`,b.`value`,
-        a.id
+        a.`name`,
+        b.`value`,
+        a.id,
+        a.job_distributor jobDistributor
         from
         (select
             a.behospital_code,
@@ -169,7 +165,8 @@
             a.leave_hospital_date,
             a.hospital_id,
             a.beh_dept_id,
-            b.id
+            b.id,
+            b.job_distributor
             from
             med_behospital_info a ,med_check_info b
             where a.behospital_code = b.behospital_code and a.hospital_id = b.hospital_id and a.is_deleted = 'N'
@@ -178,20 +175,26 @@
                 <![CDATA[ AND b.job_create_time >= #{startTime}]]>
             </if>
             <if test="endTime != null and endTime != ''">
-                <![CDATA[ AND b.job_create_time < #{endTime}]]>
+                <![CDATA[ AND b.job_create_time <= #{endTime}]]>
             </if>
 
             <if test="behosDateStart != null and behosDateStart != ''">
                 <![CDATA[ AND a.leave_hospital_date >= #{behosDateStart}]]>
             </if>
             <if test="behosDateEnd != null and behosDateEnd != ''">
-                <![CDATA[ AND a.leave_hospital_date < #{behosDateEnd}]]>
+                <![CDATA[ AND a.leave_hospital_date <= #{behosDateEnd}]]>
             </if>
             <if test="checkId !=null and checkId != ''">
                 and b.check_id = #{checkId}
             </if>
+            <if test="deptList !=null and deptList.size()!=0">
+                and a.beh_dept_id in
+                <foreach collection="deptList" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
         ) a LEFT JOIN med_behospital_type b on a.behospital_code = b.behospital_code
-        and a.hospital_id = b.hospital_id and b.is_deleted = 'N' ORDER BY b.`value` DESC ,a.leave_hospital_date DESC
+        and a.hospital_id = b.hospital_id and b.is_deleted = 'N'
     </select>
     <select id="getCheckWorkPage" resultType="com.diagbot.dto.CheckWorkDTO">
         SELECT
@@ -200,10 +203,10 @@
         mbi.file_code fileCode,
         mbi.sex,
         mhp.age,
-        mbi.beh_dept_name behospitalDept,
+        mbi.beh_dept_name behDeptName,
         mbi.leave_hospital_date leaveHospitalDate,
         mhp.behospital_day_num behospitalDayNum,
-        mbi.doctor_name attendingDoctor,
+        mbi.doctor_name doctorName,
         mqi.score_res scoreRes,
         mqi.level,
         mbi.diagnose,
@@ -223,7 +226,7 @@
         med_behospital_info mbi
         LEFT JOIN med_home_page mhp
         ON mbi.behospital_code=mhp.behospital_code
-        AND mbi.hospital_id = mhp.hospital_id
+        AND mbi.hospital_id = mhp.hospital_id AND mhp.is_deleted = 'N'
         LEFT JOIN med_check_info mci
         ON mbi.behospital_code = mci.behospital_code
         AND mbi.hospital_id = mci.hospital_id AND mci.is_deleted = 'N'
@@ -232,17 +235,20 @@
         AND mbi.hospital_id = mqi.hospital_id AND mqi.is_deleted = 'N'
         LEFT JOIN med_behospital_type mbt ON mbi.behospital_code = mbt.behospital_code
         AND mbi.hospital_id = mbt.hospital_id AND mbt.is_deleted = 'N'
-        WHERE mbi.is_deleted = 'N' and mqi.score_res is not null
+        WHERE mbi.hospital_id=#{hospitalId} AND mbi.is_deleted = 'N' and mqi.score_res is not null
         <if test="startDate != null">
-            <![CDATA[ AND mbi.behospital_date >= #{startDate}]]>
+            <![CDATA[ AND mbi.leave_hospital_date >= #{startDate}]]>
         </if>
         <if test="endDate != null">
-            <![CDATA[ AND mbi.behospital_date < #{endDate}]]>
+            <![CDATA[ AND mbi.leave_hospital_date < #{endDate}]]>
         </if>
-        <if test="creatStatus != null and creatStatus == 1">
-            AND mci.job_create_time is not null and mci.check_type = 2
+        <if test="creatStatus != null and creatStatus == '1'.toString()">
+            AND mci.job_create_time is not null
+            <if test="jobType != null and jobType != ''">
+                AND mci.job_type=#{jobType}
+            </if>
         </if>
-        <if test="creatStatus != null and creatStatus == 0">
+        <if test="creatStatus != null and creatStatus == '0'.toString()">
             AND mci.job_create_time is null
         </if>
         <if test="name != null and name != ''">
@@ -251,13 +257,12 @@
         <if test="behospitalCode != null and behospitalCode != ''">
             AND mbi.behospital_code like CONCAT('%',#{behospitalCode},'%')
         </if>
-        <if test="departments !=null and departments.size() !=0">
+        <if test="department !=null and department.size > 0">
             and mbi.beh_dept_id in
-            <foreach collection="departments" item="item" open="(" close=")" separator=",">
+            <foreach collection="department" item="item" open="(" close=")" separator=",">
                 #{item}
             </foreach>
         </if>
-
         <if test="smallDay != null">
             <![CDATA[ AND mhp.behospital_day_num >= #{smallDay}]]>
         </if>

+ 10 - 15
src/main/resources/mapper/MedicalRecordMapper.xml

@@ -72,27 +72,22 @@
         ) a
     </select>
 
-
-
     <select id="getMedicalRecord"  resultType="com.diagbot.dto.MedicalRecordDTO">
-        select  DISTINCT behospital_code,mode_id  from med_medical_record where behospital_code in
-          (select  behospital_code from med_behospital_info   where hospital_id = #{hospitalId}
-            <if test="isPlacefile !=null and isPlacefile !=''">
-                and is_placefile  =#{isPlacefile}
-            </if>
-            <if test="startTime !=null and endTime !=null">
-                and placefile_date BETWEEN #{startTime} AND #{endTime}
-            </if>
-            )
+        SELECT DISTINCT
+        a.behospital_code,
+        c.mode_id
+        from
+        med_behospital_info a LEFT JOIN med_behospital_type b
+        on a.behospital_code = b.behospital_code and a.hospital_id = b.hospital_id and a.is_deleted = 'N' and b.is_deleted = 'N'
+        LEFT JOIN med_medical_record c
+        on a.behospital_code = c.behospital_code and a.hospital_id = c.hospital_id and a.is_deleted = 'N' and c.is_deleted = 'N'
+        where  b.`value` is null
         <if test="modeList != null and modeList.size() > 0">
-            and mode_id in
+            and c.mode_id in
             <foreach collection="modeList" open="(" separator="," close=")" item="item">
                 '${item}'
             </foreach>
         </if>
-        <if test="start != null and end !=null">
-            limit #{start},#{end}
-        </if>
     </select>
 
     <update id="updateBatchByKey">