Просмотр исходного кода

Merge branch '20210512_yw_check' into test

songxinlu 4 лет назад
Родитель
Сommit
322220b4c3

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

@@ -23,6 +23,8 @@ public class CheckJobDTO {
     private String attendingDoctor;
     //出院日期
     private String leaveHospitalDate;
+    //核查任务生成时间
+    private String jobCreateTime;
     //任务分配人员id
     private Long jobDistributor;
     //任务分配人员名称

+ 2 - 0
src/main/java/com/diagbot/dto/DeptCheckUserDTO.java

@@ -21,4 +21,6 @@ public class DeptCheckUserDTO {
     private String doctorName;
     //核查数
     private int jobNum;
+    private int checkNum;
+    private int status;
 }

+ 10 - 15
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.AuthServiceClient;
 import com.diagbot.dto.*;
 import com.diagbot.entity.*;
+import com.diagbot.enums.CheckStatusEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
@@ -296,19 +297,14 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
             }
             //新增如果当前用户不是核查人员返回标志位用户核查按钮隐藏显示
             //获取病历核查人员id,该操作只能是核查员操作
-            Long checkId = medCheckInfoFacade.getOne(new QueryWrapper<MedCheckInfo>()
+            List<MedCheckInfo> medCheckInfos = medCheckInfoFacade.list(new QueryWrapper<MedCheckInfo>()
                     .eq("is_deleted", IsDeleteEnum.N.getKey())
                     .eq("hospital_id", hospitalId)
-                    .eq("behospital_code", getDetailVO.getBehospitalCode())).getCheckId();
-            if(checkId==null)
-            {
-                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "病历没有分配核查人员");
-            }
-            if(checkId.equals(Long.valueOf(SysUserUtils.getCurrentPrincipleID())))
-            {
+                    .eq("behospital_code", getDetailVO.getBehospitalCode()));
+            if (medCheckInfos.size() == 1 && medCheckInfos.get(0).getCheckId() != null
+                    && medCheckInfos.get(0).getCheckId().equals(Long.parseLong(SysUserUtils.getCurrentPrincipleID()))) {
                 res.put("checkShow", 1);
-            }
-            else {
+            } else {
                 res.put("checkShow", 0);
             }
         }
@@ -1035,13 +1031,12 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         QueryVo  queryVo = dealCommonData(hospitalId, analyzeVO);
         queryVo.setUseCrfCache(analyzeVO.isUseCrfCache());
         //已核查抛出以评分
-        int status = medCheckInfoFacade.getOne(new QueryWrapper<MedCheckInfo>()
+        List<MedCheckInfo> medCheckInfos = medCheckInfoFacade.list(new QueryWrapper<MedCheckInfo>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("hospital_id", analyzeVO.getHospitalId())
-                .eq("behospital_code", analyzeVO.getBehospitalCode())).getStatus();
-        if(1==status&&analyzeVO.getCheckFlag())
-        {
-            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,"该病例已经核查无需评分!");
+                .eq("behospital_code", analyzeVO.getBehospitalCode()));
+        if (medCheckInfos.size() == 1 && medCheckInfos.get(0).getStatus().equals((CheckStatusEnum.Enable.getKey() + "")) && analyzeVO.getCheckFlag()) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该病例已经核查无需评分!");
         }
         //  调用质控接口
         Response<OutputInfo> response = qcServiceClient.extract(queryVo);

+ 49 - 46
src/main/java/com/diagbot/facade/MedCheckInfoFacade.java

@@ -422,24 +422,11 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         if(deptMap!=null&&!deptMap.isEmpty())
         {
             //2.3获取所有医生信息的核查数
-            List<DeptCheckUserDTO> userJobs = new ArrayList<>();
-            if(checkUserDTOS!=null&&!checkUserDTOS.isEmpty()){
-                checkUserDTOS.stream().forEach(checkUserDTO->{
-                    CheckUserVO checkUserVO = new CheckUserVO();
-                    checkUserVO.setJobType(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey());
-                    checkUserVO.setUserList(Lists.newArrayList(checkUserDTO.getDoctorId()));
-                    checkUserVO.setDeptIds(Lists.newArrayList(checkUserDTO.getDeptId()));
-                    //通过核查人员id获取核查人员的核查任务数
-                    DeptCheckUserDTO temp = baseMapper.getOtherJobNumByUserId(checkUserVO);
-                    if(temp!=null)
-                    {
-                        temp.setDeptId(checkUserDTO.getDeptId());
-                        userJobs.add(temp);
-                    }
-                });
-            }
-
-            addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,CheckerRoleEnum.HOSP_SUPERVISOR.getKey());
+            CheckUserVO checkUserVO = new CheckUserVO();
+            checkUserVO.setJobType(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey());
+            //通过核查人员id获取核查人员的核查任务数
+            List<DeptCheckUserDTO> userJobs = baseMapper.getDeptJobNumByUserId(checkUserVO);
+            addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,CheckerRoleEnum.HOSP_SUPERVISOR.getKey(),CheckJobTypeEnum.HOSP_SUPERVISOR.getKey());
         }
         else {
             checkRoleMap.put(CheckerRoleEnum.HOSP_SUPERVISOR.getKey()+"",new ArrayList<>());
@@ -494,23 +481,15 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         {
             //2.3获取质控科核查人员的核查数
             List<String> doctorIds = checkUserDTOS.stream().map(CheckUserDTO::getDoctorId).collect(Collectors.toList());
-            List<DeptCheckUserDTO> userJobs = new ArrayList<>();
-            if(doctorIds!=null&&!doctorIds.isEmpty())
-            {
-                doctorIds.stream().forEach(userid->{
-                    CheckUserVO checkUserVO = new CheckUserVO();
-                    checkUserVO.setJobType(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey());
-                    checkUserVO.setUserList(Lists.newArrayList(userid));
-                    //通过核查人员id获取核查人员的核查任务数
-                    DeptCheckUserDTO temp = baseMapper.getOtherJobNumByUserId(checkUserVO);
-                    if(temp!=null)
-                    {
-                        temp.setDeptId(zkkDeptId);
-                        userJobs.add(temp);
-                    }
-                });
-            }
-            addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,CheckerRoleEnum.QUAT_SUPERVISOR.getKey());
+            CheckUserVO checkUserVO = new CheckUserVO();
+            checkUserVO.setJobType(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey());
+            checkUserVO.setUserList(doctorIds);
+            //通过核查人员id获取核查人员的核查任务数
+            List<DeptCheckUserDTO> userJobs = baseMapper.getDeptJobNumByUserId(checkUserVO);
+            userJobs.stream().forEach(deptCheckUserDTO -> {
+                deptCheckUserDTO.setDeptId(zkkDeptId);
+            });
+            addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,CheckerRoleEnum.QUAT_SUPERVISOR.getKey(),CheckJobTypeEnum.QUAT_SUPERVISOR.getKey());
         }
         else {
             checkRoleMap.put(CheckerRoleEnum.QUAT_SUPERVISOR.getKey()+"",new ArrayList<>());
@@ -563,7 +542,7 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
             checkUserVO.setDeptIds(deptIds);
             //通过核查人员id获取核查人员的核查任务数
             List<DeptCheckUserDTO> userJobs = baseMapper.getDeptJobNumByUserId(checkUserVO);
-            addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,CheckerRoleEnum.DEPT_SUPERVISOR.getKey());
+            addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,CheckerRoleEnum.DEPT_SUPERVISOR.getKey(),CheckJobTypeEnum.DEPT_SUPERVISOR.getKey());
         }
         else {
             checkRoleMap.put(CheckerRoleEnum.DEPT_SUPERVISOR.getKey()+"",new ArrayList<>());
@@ -582,7 +561,7 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
      * @MethodName addCheckInfoMap
      */
     private void addCheckInfoMaps(Map<String, List<CheckDeptDTO>> checkRoleMap, Map<String, String> deptMap,
-                                  List<DeptCheckUserDTO> userJobs, List<CheckUserDTO> checkUserDTOS, int roleId) {
+                                  List<DeptCheckUserDTO> userJobs, List<CheckUserDTO> checkUserDTOS, int roleId,int jobType) {
         if(deptMap.isEmpty()||checkUserDTOS.isEmpty()){}
         checkRoleMap.put(roleId+"",new ArrayList<CheckDeptDTO>());
         //遍历科室
@@ -612,21 +591,45 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
                 //遍历数量
                 for(DeptCheckUserDTO jobNumDto:userJobs)
                 {
-                    //这个科室有这个人
-                    if(deptCheckUserDTO.getDeptId().equals(jobNumDto.getDeptId()))
+                    //非院区任务
+                    if(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey()!=jobType)
                     {
-                        if(deptCheckUserDTO.getDoctorId().equals(jobNumDto.getDoctorId()))
+                        //这个科室有这个人
+                        if(deptCheckUserDTO.getDeptId().equals(jobNumDto.getDeptId()))
                         {
-                            deptCheckUserDTO.setJobNum(jobNumDto.getJobNum());
+                            if(deptCheckUserDTO.getDoctorId().equals(jobNumDto.getDoctorId()))
+                            {
+                                if(jobNumDto.getStatus()==0){
+                                    deptCheckUserDTO.setJobNum(deptCheckUserDTO.getJobNum()+jobNumDto.getJobNum());
+                                }
+                                if(jobNumDto.getStatus()==1){
+
+                                    deptCheckUserDTO.setCheckNum(deptCheckUserDTO.getCheckNum()+jobNumDto.getJobNum());
+                                }
+                            }
+
                         }
-                        //没有这个人
-//                        else
-//                        {
-//                            deptCheckUserDTO.setJobNum(0);
-//                        }
+                    }
+                    //院区任务不是同一科室的人员数量增加
+                    else if(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey()==jobType)
+                    {
+                        if(!deptCheckUserDTO.getDeptId().equals(jobNumDto.getDeptId()))
+                        {
+                            if(deptCheckUserDTO.getDoctorId().equals(jobNumDto.getDoctorId()))
+                            {
+                                if(jobNumDto.getStatus()==0){
+                                    deptCheckUserDTO.setJobNum(deptCheckUserDTO.getJobNum()+jobNumDto.getJobNum());
+                                }
+                                if(jobNumDto.getStatus()==1){
+
+                                    deptCheckUserDTO.setCheckNum(deptCheckUserDTO.getCheckNum()+jobNumDto.getJobNum());
+                                }
+                            }
 
+                        }
                     }
 
+
                 }
             }
             checkRoleMap.get(roleId+"").add(checkDeptDTO);

+ 1 - 0
src/main/java/com/diagbot/facade/SysDictionaryFacade.java

@@ -60,4 +60,5 @@ public class SysDictionaryFacade extends SysDictionaryInfoServiceImpl {
         }
         return res;
     }
+
 }

+ 34 - 24
src/main/java/com/diagbot/facade/SysUserFacade.java

@@ -4,16 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.AuthServiceClient;
-import com.diagbot.dto.BasDeptInfoDTO;
-import com.diagbot.dto.BasHospitalInfoDTO;
-import com.diagbot.dto.JwtDTO;
-import com.diagbot.dto.LoginDTO;
-import com.diagbot.dto.SysRoleDTO;
-import com.diagbot.dto.SysUserDeptDTO;
-import com.diagbot.dto.SysUserPermissionDTO;
-import com.diagbot.dto.SysUserQueryDTO;
-import com.diagbot.dto.SysUserRoleDTO;
-import com.diagbot.dto.UserLoginDTO;
+import com.diagbot.dto.*;
 import com.diagbot.entity.BasHospitalInfo;
 import com.diagbot.entity.JWT;
 import com.diagbot.entity.JwtStore;
@@ -90,6 +81,8 @@ public class SysUserFacade extends SysUserServiceImpl {
     private SysUserHospitalFacade sysUserHospitalFacade;
     @Autowired
     private SysUserRoleFacade sysUserRoleFacade;
+    @Autowired
+    private SysDictionaryFacade sysDictionaryFacade;
 
     /**
      * 获取jwt
@@ -152,10 +145,20 @@ public class SysUserFacade extends SysUserServiceImpl {
         /***
          * 未加密密码复杂度判断
          */
-/*        Boolean passwordRegular = passwordRegular(password);
-        if(!passwordRegular){
-            data.setPasswordComplexity("密码复杂度过低,请及时修改密码");
-        }*/
+        //获取用户医院id
+//        String hospitalID = SysUserUtils.getCurrentHospitalID();
+//        Long id = user.getId();
+//        QueryWrapper<SysUserHospital> UserHospitalQueryWrapper = new QueryWrapper<>();
+//        UserHospitalQueryWrapper
+//                .eq("user_id", id)
+//                .eq("is_deleted", IsDeleteEnum.N.getKey());
+//        SysUserHospital userHospital = sysUserHospitalFacade.getOne(UserHospitalQueryWrapper, false);
+//        Long hospitalId = userHospital.getHospitalId();
+//        String idStr = String.valueOf(hospitalId);
+//        Boolean passwordRegular = passwordRegular(password,idStr);
+//        if(!passwordRegular){
+//            data.setPasswordComplexity("密码复杂度过低,请及时修改密码");
+//        }
         return data;
     }
 
@@ -264,10 +267,6 @@ public class SysUserFacade extends SysUserServiceImpl {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
                     "原密码和新密码不能相同");
         }
-/*        Boolean regularBoolean = passwordRegular(modifyPassword);
-        if(!regularBoolean){
-            throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "请输入正确格式的新密码");
-        }*/
         String userId = SysUserUtils.getCurrentPrincipleID();
         SysUser user = this.getOne(new QueryWrapper<SysUser>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
@@ -276,13 +275,16 @@ public class SysUserFacade extends SysUserServiceImpl {
         if (null == user) {
             throw new CommonException(ServiceErrorCode.USER_NOT_FOUND);
         }
-
         PasswordEncoder passwordEncoder
                 = PasswordEncoderFactories.createDelegatingPasswordEncoder();
         if (!passwordEncoder.matches(password, user.getPassword())) {
             throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "原密码错误");
         }
-
+//        String hospitalID = SysUserUtils.getCurrentHospitalID();
+//        Boolean regularBoolean = passwordRegular(modifyPassword,hospitalID);
+//        if(!regularBoolean){
+//            throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "请输入正确格式的新密码");
+//        }
         String entryPassword = passwordEncoder.encode(modifyPassword);
         user.setPassword(entryPassword);
         user.setGmtModified(DateUtil.now());
@@ -292,13 +294,21 @@ public class SysUserFacade extends SysUserServiceImpl {
     }
 
     /**
-     * 未加密密文正则表达式  至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符:
+     * 未加密密文正则表达式  至少8个字符,1个大写字母,1个小写字母,1个数字和1个特殊字符:
      * @param password
      * @return
      */
-    public Boolean passwordRegular(String password){
-        String regex="^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&])[A-Za-z\\d$@$!%*?&]{8,}";
-        boolean check=password.matches(regex);
+    public Boolean passwordRegular(String password,String hospitalId){
+        //获取字点表中存储的正则表达式   "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&])[A-Za-z\\d$@$!%*?&]{8,}"
+        boolean check=true;
+        Map<String, Map<String, String>> dictionaryWithKey = sysDictionaryFacade.getDictionaryWithKey();
+        if(dictionaryWithKey!=null){
+            Map<String, String> stringStringMap = dictionaryWithKey.get("30");
+            if(stringStringMap!=null) {
+                String regular = stringStringMap.get(hospitalId);
+                check = password.matches(regular);
+            }
+        }
         return check;
     }
     /**

+ 0 - 2
src/main/java/com/diagbot/mapper/MedCheckInfoMapper.java

@@ -29,8 +29,6 @@ public interface MedCheckInfoMapper extends BaseMapper<MedCheckInfo> {
     IPage<CheckJobDTO> getCheckList(CheckJobPageVO checkJobVO);
     //临床科室核查人员通过id获取核查人员的核查任务数
     List<DeptCheckUserDTO> getDeptJobNumByUserId(CheckUserVO checkUserVO);
-    //院级、质控科核查人员通过id获取核查人员的核查任务数
-    DeptCheckUserDTO getOtherJobNumByUserId(CheckUserVO checkUserVO);
     //核查任务列表
     IPage<CheckWorkDTO> getCheckWorkPage(CheckWorkPageVO checkWorkPageVO);
     //获取指定核查人员的核查任务

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

@@ -21,6 +21,8 @@ public class CheckUserVO {
     private List<String> deptIds;
     //医院
     private Long hospitalId;
+    //核查状态 0未核查1核查
+    private int status;
     //科室类型集合
     private List<String> deptStations;
 

+ 1 - 1
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -7774,7 +7774,7 @@
         AND a.behospital_code = c.behospital_code
         AND a.qc_type_id != 0
         AND ifnull(c.`status`,0) = 1
-        AND c.check_type = 0
+        AND c.check_type in (0,2)
         <if test="isPlacefile != null and isPlacefile != ''">
             and a.is_placefile = #{isPlacefile}
         </if>

+ 15 - 26
src/main/resources/mapper/MedCheckInfoMapper.xml

@@ -57,57 +57,44 @@
             </foreach>
         </if>
     </select>
-    <!--临床科室核查人员通过id获取核查人员的核查任务数-->
+    <!--核查人员通过id获取核查人员的核查任务数-->
     <select id="getDeptJobNumByUserId" resultType="com.diagbot.dto.DeptCheckUserDTO">
         SELECT
         a.beh_dept_id deptId ,
         b.check_id doctorId,
-        count(*) as jobNum
+        count(*) as jobNum,
+        b.`status`
         from
         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 a.is_deleted = 'N' and b.job_distribution_name is not null and b.`status` = 0
+        where b.is_deleted = 'N' and a.is_deleted = 'N' and b.job_distribution_name is not null  and b.`status` is not null
         <if test="jobType != null ">
             and b.job_type = #{jobType}
         </if>
+
         <if test="userList !=null and userList.size!=0">
             and b.check_id in
             <foreach collection="userList" item="item" open="(" close=")" separator=",">
                 #{item}
             </foreach>
         </if>
-        <if test="deptIds !=null and deptIds.size()!=0">
+        <if test="deptIds !=null and deptIds.size()!=0 and jobType ==0">
             and a.beh_dept_id in
             <foreach collection="deptIds" item="item" open="(" close=")" separator=",">
                 #{item}
             </foreach>
         </if>
-        GROUP BY a.beh_dept_id,b.check_id
-    </select>
-
-    <!--院级、质控科核查人员通过id获取核查人员的核查任务数-->
-    <select id="getOtherJobNumByUserId" resultType="com.diagbot.dto.DeptCheckUserDTO">
-        SELECT
-        b.check_id doctorId,
-        count(*) as jobNum
-        from
-        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 a.is_deleted = 'N' and b.job_distribution_name is not null and b.`status` = 0
-        <if test="jobType != null ">
-            and b.job_type = #{jobType}
-        </if>
-        <if test="userList !=null and userList.size!=0">
-            and b.check_id in
-            <foreach collection="userList" item="item" open="(" close=")" separator=",">
-                #{item}
-            </foreach>
-        </if>
         <if test="deptIds !=null and deptIds.size()!=0 and jobType ==2">
             and a.beh_dept_id not in
             <foreach collection="deptIds" item="item" open="(" close=")" separator=",">
                 #{item}
             </foreach>
         </if>
-        GROUP BY b.check_id
+        <if test="jobType ==0 or jobType ==2">
+            GROUP BY a.beh_dept_id,b.check_id,b.`status`
+        </if>
+        <if test="jobType ==1">
+            GROUP BY b.check_id,b.`status`
+        </if>
     </select>
 
 
@@ -121,7 +108,8 @@
         a.`name`,
         b.`value`,
         a.id,
-        a.beh_dept_id behospitalDeptId
+        a.beh_dept_id behospitalDeptId,
+        a.job_create_time jobCreateTime
         from
         (select
             a.behospital_code,
@@ -131,6 +119,7 @@
             a.leave_hospital_date,
             a.hospital_id,
             a.beh_dept_id,
+            b.job_create_time,
             b.id
             from
             med_behospital_info a ,med_check_info b