Forráskód Böngészése

质控核查bug修改

songxinlu 4 éve
szülő
commit
423f616826

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

@@ -27,6 +27,8 @@ public class CheckJobDTO {
     private Long jobDistributor;
     //任务分配人员名称
     private String jobDistributorName;
+    //科室id
+    private String behospitalDeptId;
 
     //筛选分值
     private int value;

+ 53 - 23
src/main/java/com/diagbot/facade/MedCheckInfoFacade.java

@@ -207,11 +207,12 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
                     .eq("user_id",principleId)
             ).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
             //3.判断这个人是否在质控科
-            if(deptIds.contains(zkkDeptId))
-            {
-                //质控科任务分配列表是任务类型是质控科的任务与科室无关
-                return getCheckList(checkJobVO);
-            }
+//            if(deptIds.contains(zkkDeptId))
+//            {
+//
+//            }
+            //质控科任务分配列表是任务类型是质控科的任务与科室无关
+            return getCheckList(checkJobVO);
         }
         //临床科室监管人员 或 院级监管人员
         else if(searchRoleIds.contains(CheckerRoleEnum.DEPT_SUPERVISOR.getKey()*1l)
@@ -262,7 +263,6 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         {
             throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该用户的角色和任务类型不对应!");
         }
-       return null;
     }
     /**
      * @Author songxl
@@ -411,18 +411,29 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         Map<String,String> deptMap = basDeptInfoFacade.list(new QueryWrapper<BasDeptInfo>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("hospital_id",hospitalId)
+                .eq("station","住院")
                 .in("dept_id",deptIds)).stream()
                 .collect(Collectors.toMap(BasDeptInfo::getDeptId,BasDeptInfo::getDeptName, (v1, v2) -> v2));
         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);
+            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());
         }
         else {
@@ -478,12 +489,22 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         {
             //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);
+            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());
         }
         else {
@@ -536,7 +557,7 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
             checkUserVO.setUserList(doctorIds);
             checkUserVO.setDeptIds(deptIds);
             //通过核查人员id获取核查人员的核查任务数
-            List<DeptCheckUserDTO> userJobs = baseMapper.getJobNumByUserId(checkUserVO);
+            List<DeptCheckUserDTO> userJobs = baseMapper.getDeptJobNumByUserId(checkUserVO);
             addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,CheckerRoleEnum.DEPT_SUPERVISOR.getKey());
         }
         else {
@@ -648,10 +669,19 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,"入参为空");
         }
+        if(StringUtil.isNotBlank(distributionJobVO.getCheckDept())){
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,"核查人科室(checkDept)为空");
+        }
+        if(distributionJobVO.getBehospitalDepts()==null
+                ||distributionJobVO.getBehospitalDepts().isEmpty()){
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,"核查任务科室集合(behospitalDepts)为空");
+        }
+        if(StringUtil.isEmpty(distributionJobVO.getJobType()))
+        {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,"核查任务类型(jobType)为空");
+        }
         //全院的话要判断院级核查人员和核查病历不是同一科室
-        if(StringUtil.isNotBlank(distributionJobVO.getCheckDept())
-                &&distributionJobVO.getBehospitalDepts()!=null
-                &&!distributionJobVO.getBehospitalDepts().isEmpty()){
+        if(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey()==Integer.parseInt(distributionJobVO.getJobType())){
             if(distributionJobVO.getBehospitalDepts().contains(distributionJobVO.getCheckDept())){
                 throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,"院级核查人员和核查病历是同一科室");
             }

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

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

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

@@ -31,6 +31,8 @@ public class DistributionJobVO {
     private String checkDept;
     @ApiModelProperty("病人住院科室集合")
     private List<String> behospitalDepts;
+    @ApiModelProperty("任务类型 0科室、1质控科额、2院级")
+    private String jobType;
     //操作类型 分配或取消 0-分配,1-取消分配
     @ApiModelProperty("操作类型 分配或取消 0-分配,1-取消分配")
     private String distributionType;

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

@@ -83,6 +83,9 @@ public class MedCheckInfoController {
             notes = "behospitalCodes:病人住院序号集合 必填<br>" +
                     "checkId:  核查用户id 必填<br>" +
                     "checkName:  核查用户姓名 必填<br>" +
+                    "checkDept:  核查人科室id 必填<br>" +
+                    "behospitalDepts:  核查任务科室id集合 必填<br>" +
+                    "jobType:  任务类型 0科室、1质控科额、2院级 必填<br>" +
                     "distributionType:操作类型 必填 分配或取消 0-分配,1-取消分配<br>")
     @PostMapping("/updateDistributionCheck")
     @SysLogger("updateDistributionCheck")

+ 35 - 11
src/main/resources/mapper/MedCheckInfoMapper.xml

@@ -57,8 +57,8 @@
             </foreach>
         </if>
     </select>
-    <!--通过核查人员id获取核查人员的核查任务数-->
-    <select id="getJobNumByUserId" resultType="com.diagbot.dto.DeptCheckUserDTO">
+    <!--临床科室核查人员通过id获取核查人员的核查任务数-->
+    <select id="getDeptJobNumByUserId" resultType="com.diagbot.dto.DeptCheckUserDTO">
         SELECT
         a.beh_dept_id deptId ,
         b.check_id doctorId,
@@ -84,6 +84,33 @@
         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 b.job_distribution_name 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 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
+    </select>
+
+
     <!--获取待分配核查任务列表-->
     <select id="getCheckList" resultType="com.diagbot.dto.CheckJobDTO">
         SELECT
@@ -93,7 +120,8 @@
         a.leave_hospital_date leaveHospitalDate,
         a.`name`,
         b.`value`,
-        a.id
+        a.id,
+        a.beh_dept_id behospitalDeptId
         from
         (select
             a.behospital_code,
@@ -133,19 +161,12 @@
                 <if test="name !=null and name != ''">
                     and a.`name` LIKE CONCAT('%',#{name},'%')
                 </if>
-                <if test="deptList !=null and deptList.size()!=0 and (jobType == 0 or jobType ==1)">
+                <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 == 2">
-                    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'
@@ -180,6 +201,9 @@
             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'
             and b.is_deleted = 'N' and b.`status` = 0
+            <if test="jobType !=null and jobType != ''">
+                and b.job_type = #{jobType}
+            </if>
             <if test="startTime != null and startTime != ''">
                 <![CDATA[ AND b.job_create_time >= #{startTime}]]>
             </if>