Bladeren bron

科主任看全部部门的患者,医生只能看自己部门的患者

adminAndroot 8 maanden geleden
bovenliggende
commit
bdd8619be0

+ 52 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/api/Api_SysDeptController.java

@@ -0,0 +1,52 @@
+package com.ruoyi.web.work.api;
+
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.web.work.domain.Visit;
+import com.ruoyi.web.work.service.IVisitService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/app/sysDept")
+@Api(tags = "小程序区分科主任和医生")
+public class Api_SysDeptController {
+
+    @Autowired
+    private ISysDeptService deptService;
+
+    @Autowired
+    private IVisitService visitService;
+
+
+    /**
+     * 根据用户账号获取医生的部门信息
+     * @param userName 用户账号
+     * @return
+     */
+    @ApiOperation(value = "根据用户账号获取科主任的部门信息")
+    @GetMapping("/getDeptByUserName")
+    public AjaxResult getDeptList(String userName){
+        List<SysDept> deptList = deptService.getDeptListByUserName(userName);
+        return AjaxResult.success(deptList);
+    }
+
+    /**
+     * 根据deptId获取所有部门的患者
+     * @param deptId
+     * @param userName 用户账号
+     * @return
+     */
+    @ApiOperation(value = "根据deptId获取所有部门的患者")
+    @GetMapping("/getPatientByDeptId")
+    public AjaxResult getPatientByDeptId(Long deptId,String userName){
+        List<Visit> visits = visitService.getPatientByDeptId(deptId,userName);
+        return AjaxResult.success(visits);
+    }
+}

+ 4 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/Visit.java

@@ -9,6 +9,7 @@ import lombok.experimental.Accessors;
 import java.sql.Timestamp;
 import java.time.LocalDateTime;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 就诊记录
@@ -77,4 +78,7 @@ public class Visit {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Data updateTime;  //更新时间
 
+    @TableField(exist = false)
+    private List<Patient> patients;
+
 }

+ 5 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/mapper/VisitMapper.java

@@ -26,4 +26,9 @@ public interface VisitMapper extends BaseMapper<Visit>{
 
     //根据患者id查询就诊列表
     List<Visit> selectVisitsByPatId(@Param("patId") String patId,@Param("startTime")String startTime,@Param("endTime")String endTime);
+
+    List<Visit> selectVisitsByDeptCode(Long deptId);
+
+    //获取当前用户部门下的患者信息
+    List<Visit> selectVisitsByIdAndUserName(@Param("deptId") Long deptId,@Param("userName") String userName);
 }

+ 3 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/IVisitService.java

@@ -1,9 +1,6 @@
 package com.ruoyi.web.work.service;
-
-import java.time.LocalDateTime;
 import java.util.List;
 
-import com.ruoyi.web.work.domain.FollowRecord;
 import com.ruoyi.web.work.domain.Visit;
 import com.ruoyi.web.work.domain.dto.PatientCardDto;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -23,4 +20,7 @@ public interface IVisitService extends IService<Visit>{
 
     //根据患者Id获取就诊记录列表
     List<Visit> getVisitByPatId(String patId,String startTime,String endTime);
+
+    //根据deptId获取所有部门的患者
+    List<Visit> getPatientByDeptId(Long deptId,String userName);
 }

+ 28 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/VisitServiceImpl.java

@@ -1,11 +1,13 @@
 package com.ruoyi.web.work.service.impl;
 
 
-import java.time.LocalDateTime;
-import java.util.Collections;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.system.mapper.SysDeptMapper;
+import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.web.work.domain.*;
 import com.ruoyi.web.work.domain.dto.PatientCardDto;
 import com.ruoyi.web.work.mapper.*;
@@ -23,6 +25,9 @@ public class VisitServiceImpl extends ServiceImpl<VisitMapper, Visit> implements
     @Autowired
     private VisitMapper visitMapper;
 
+    @Autowired
+    private SysUserMapper userMapper;
+
 
     @Override
     public List<Visit> selectList(Visit visit) {
@@ -49,4 +54,25 @@ public class VisitServiceImpl extends ServiceImpl<VisitMapper, Visit> implements
     public List<Visit> getVisitByPatId(String patId,String startTime,String endTime) {
         return visitMapper.selectVisitsByPatId(patId,startTime,endTime);
     }
+
+    /**
+     * 根据deptId获取所有部门的患者
+     * @param deptId
+     * @return
+     */
+    @Override
+    public List<Visit> getPatientByDeptId(Long deptId,String userName) {
+        SysUser sysUser = userMapper.queryUserByUserName(userName);
+        if (sysUser != null){
+            String dirDocSign = sysUser.getDirDocSign();
+            if ("1".equals(dirDocSign)){
+                //获取所有部门下的所有患者
+                return visitMapper.selectVisitsByDeptCode(deptId);
+            }else {
+                //获取当前用户部门下的患者信息
+                return visitMapper.selectVisitsByIdAndUserName(deptId,userName);
+            }
+        }
+        throw new ServiceException("当前用户不存在");
+    }
 }

+ 49 - 0
ruoyi-admin/src/main/resources/mapper/work/VisitMapper.xml

@@ -89,4 +89,53 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
     </select>
 
+
+    <resultMap id="visitResultMap" type="visit">
+        <id property="id" column="id"/>
+        <result property="patId" column="pat_id"/>
+        <result property="cardId" column="card_id"/>
+        <result property="patClass" column="pat_class"/>
+        <result property="deptCode" column="dept_code"/>
+        <result property="department" column="department"/>
+        <result property="bed" column="bed"/>
+        <result property="doctorCode" column="doctor_code"/>
+        <result property="physician" column="physician"/>
+        <result property="hospitalStatus" column="hospital_status"/>
+        <result property="admissionTime" column="admission_time"/>
+        <collection  property="patients" javaType="java.util.List" resultMap="patientResultMap"/>
+    </resultMap>
+
+    <resultMap id="patientResultMap" type="patient">
+        <id property="id" column="patient_id"/>
+        <result property="wnPatId" column="wn_pat_id"/>
+        <result property="name" column="name"/>
+    </resultMap>
+
+
+    <select id="selectVisitsByDeptCode" resultMap="visitResultMap">
+        SELECT
+            p.id patient_id,p.wn_pat_id,p.name,
+            v.id,v.pat_id,v.card_id,v.pat_class,v.dept_code,v.department,v.bed,v.doctor_code,v.physician,v.hospital_status,v.admission_time
+        FROM
+            tb_visit v
+            LEFT JOIN sys_dept d ON v.dept_code = d.dept_code
+            LEFT JOIN tb_patient p ON v.pat_id = p.id
+        WHERE
+            d.dept_id = #{deptId}
+    </select>
+
+
+    <select id="selectVisitsByIdAndUserName" resultMap="visitResultMap">
+        SELECT
+            p.id patient_id,p.wn_pat_id,p.name,
+            v.id,v.pat_id,v.card_id,v.pat_class,v.dept_code,v.department,v.bed,v.doctor_code,v.physician,v.hospital_status,v.admission_time
+        FROM
+            sys_dept d
+            LEFT JOIN sys_user u ON d.dept_id = u.dept_id
+            LEFT JOIN tb_visit v ON u.user_name = v.doctor_code
+            LEFT JOIN tb_patient p ON p.id = v.pat_id
+        WHERE
+            u.dept_id = #{deptId}
+        AND u.user_name = #{userName}
+    </select>
 </mapper>

+ 6 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java

@@ -121,4 +121,10 @@ public interface SysDeptMapper extends BaseMapper<SysDept> {
 
     @Select("SELECT dept_id AS deptId, dept_name AS deptName, parent_id AS parentId FROM sys_dept WHERE status ='0' ORDER BY order_num ASC")
     List<Map<String, Object>> treeList();
+
+    //获取所有部门列表
+    @Select("SELECT dept_id,dept_name,dept_code,status,order_num FROM sys_dept WHERE status ='0' and parent_id != '0' and del_flag = '0' ORDER BY order_num ASC")
+    List<SysDept> queryDeptList();
+
+    SysDept queryDeptByDeptId(Long deptId);
 }

+ 3 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java

@@ -134,4 +134,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 
     @Select("SELECT nick_name AS name,avatar,introduce FROM sys_user WHERE user_id=#{userId} AND status='0'")
     Map<String, Object> detail(@Param("userId") Long userId);
+
+    //根据userName查sysUser表获取基本信息
+    SysUser queryUserByUserName(String userName);
 }

+ 6 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java

@@ -125,4 +125,10 @@ public interface ISysDeptService extends IService<SysDept> {
      * @return 结果
      */
      int deleteDeptById(Long deptId);
+
+    /**
+     * 根据用户账号获取医生的部门信息
+     * @return
+     */
+    List<SysDept> getDeptListByUserName(String userName);
 }

+ 24 - 4
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java

@@ -15,14 +15,12 @@ import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.system.mapper.SysDeptMapper;
 import com.ruoyi.system.mapper.SysRoleMapper;
+import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.system.service.ISysDeptService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -38,6 +36,9 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
     @Autowired
     private SysRoleMapper roleMapper;
 
+    @Autowired
+    private SysUserMapper userMapper;
+
     /**
      * 查询部门管理数据
      *
@@ -278,6 +279,25 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
     }
 
     /**
+     * 根据用户账号获取医生的部门信息
+     * @param userName
+     * @return
+     */
+    @Override
+    public List<SysDept> getDeptListByUserName(String userName) {
+        SysUser sysUser = userMapper.queryUserByUserName(userName);
+        String dirDocSign = sysUser.getDirDocSign();//科主任标志:0:否,1:是
+        if ("1".equals(dirDocSign)){
+            //科主任返回所有部门列表
+            List<SysDept> deptList = deptMapper.queryDeptList();
+            return deptList;
+        }
+        Long deptId = sysUser.getDeptId();
+        SysDept sysDept = deptMapper.queryDeptByDeptId(deptId);
+        return Arrays.asList(sysDept);
+    }
+
+    /**
      * 递归列表
      */
     private void recursionFn(List<SysDept> list, SysDept t) {

+ 4 - 0
ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml

@@ -157,4 +157,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		delete from sys_dept where dept_id = #{deptId}
 	</delete>
 
+	<select id="queryDeptByDeptId" parameterType="Long" resultType="sysDept">
+		SELECT dept_id,dept_name,dept_code,status,order_num FROM sys_dept WHERE dept_id=#{deptId} and status ='0' ORDER BY order_num ASC
+	</select>
+
 </mapper> 

+ 5 - 1
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -221,5 +221,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  			#{userId}
         </foreach> 
  	</delete>
-	
+
+	<select id="queryUserByUserName" parameterType="String" resultType="sysUser">
+		select * from sys_user where user_name = #{userName} and del_flag = '0'
+	</select>
+
 </mapper>