增加病历清单查看分类按病案管理系统划分的权限分类

master
zengwh 4 years ago
parent b3d40611d8
commit 7be3b5eca0

@ -43,8 +43,6 @@ public class inHospitalController {
//private Logger logger = Logger.getLogger(inHospitalController.class);
@Value("${pdfWater}")
private String pdfWater;
@Value("${nurseAssortIds}")
private String NURSEASSORTIDS;
@Autowired
private Archive_MasterService archiveMasterService;
@ -130,15 +128,9 @@ public class inHospitalController {
@ResponseBody
@RequestMapping(value = "/getAssort")
public List<Archive_Detail_Vo> getAssort(Archive_Detail_Vo archiveDetailVo){
//分段列表
//checker 当前角色为护士2从配置的护士分类查询
Integer checker = archiveDetailVo.getChecker();
if(null != checker && checker == 2){
archiveDetailVo.setAssortid(NURSEASSORTIDS);
}
public List<Archive_Detail_Vo> getAssort(Archive_Detail_Vo archiveDetailVo,HttpServletRequest request){
try {
return archiveDetailService.selectByClo(archiveDetailVo);
return archiveDetailService.selectByClo(archiveDetailVo,request);
} catch (Exception e) {
ExceptionPrintUtil.printException(e);
e.printStackTrace();
@ -163,14 +155,9 @@ public class inHospitalController {
@ResponseBody
@RequestMapping(value = "/getAssortdetail")
public OffsetLimitPage getAssortdetail(Archive_Detail_Vo archiveDetailVo, Integer offset, Integer limit){
//分段详情列表分页
Integer checker = archiveDetailVo.getChecker();
if(null != checker && checker == 2){
archiveDetailVo.setAssortName(NURSEASSORTIDS);
}
public OffsetLimitPage getAssortdetail(Archive_Detail_Vo archiveDetailVo, Integer offset, Integer limit,HttpServletRequest request){
try {
return archiveDetailService.detailByClo(archiveDetailVo, offset, limit);
return archiveDetailService.detailByClo(archiveDetailVo, offset, limit,request);
} catch (Exception e) {
ExceptionPrintUtil.printException(e);
e.printStackTrace();

@ -10,4 +10,6 @@ public interface Zd_AssortMapper {
*
* */
List<Zd_Assort> selectAll(@Param("record") Zd_Assort record);
List<Zd_Assort> selectAssortListByUserId(Integer userId);
}

@ -39,6 +39,8 @@ public class Archive_Detail_Vo extends Archive_Detail{
private String eTimeStr;
private String createTime;
private Integer userId;
}

@ -10,6 +10,7 @@ import com.emr.entity.Archive_Detail;
import com.emr.entity.Archive_Detail_Vo;
import com.emr.entity.OffsetLimitPage;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.List;
@ -21,7 +22,7 @@ public interface Archive_DetailService {
* @param record
* @return
*/
List<Archive_Detail_Vo> selectByClo(Archive_Detail_Vo record);
List<Archive_Detail_Vo> selectByClo(Archive_Detail_Vo record, HttpServletRequest request);
/**
*
@ -29,7 +30,7 @@ public interface Archive_DetailService {
* @param record
* @return
*/
OffsetLimitPage detailByClo(Archive_Detail_Vo record, Integer offset, Integer limit);
OffsetLimitPage detailByClo(Archive_Detail_Vo record, Integer offset, Integer limit,HttpServletRequest request);
/**
*

@ -8,10 +8,7 @@ package com.emr.service.ipml;
import com.emr.dao.Archive_DetailMapper;
import com.emr.dao.Emr_Commom_SetMapper;
import com.emr.entity.Archive_Detail;
import com.emr.entity.Archive_Detail_Vo;
import com.emr.entity.Emr_Commom_Set;
import com.emr.entity.OffsetLimitPage;
import com.emr.entity.*;
import com.emr.service.Archive_DetailService;
import com.emr.util.Jpg2PdfUtil;
import com.github.pagehelper.Page;
@ -21,6 +18,7 @@ import org.apache.shiro.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
@ -32,18 +30,55 @@ public class Archive_DetailServiceImpl implements Archive_DetailService {
private Archive_DetailMapper archiveDetailMapper;
@Autowired
private Emr_Commom_SetMapper commomSetMapper;
@Autowired
private ZdAssortService zdAssortService;
@Override
public List<Archive_Detail_Vo> selectByClo(Archive_Detail_Vo record) {
public List<Archive_Detail_Vo> selectByClo(Archive_Detail_Vo record, HttpServletRequest request) {
List<Archive_Detail_Vo> list = archiveDetailMapper.selectByClo(record);
//定义权限分类集合
List<Archive_Detail_Vo> returnList = selectPowerAssort(request, list);
//页码为0的计算页码
if(!CollectionUtils.isEmpty(list)){
for(Archive_Detail_Vo vo : list){
if(!CollectionUtils.isEmpty(returnList)) {
for (Archive_Detail_Vo vo : returnList) {
//页码为0的读取pdf文件重置页码
setPdfPages(vo);
}
}
return list;
return returnList;
}
/**
*
* @param request
* @param list
* @return
*/
private List<Archive_Detail_Vo> selectPowerAssort(HttpServletRequest request, List<Archive_Detail_Vo> list) {
List<Archive_Detail_Vo> returnList = new ArrayList<>();
if(!CollectionUtils.isEmpty(list)){
//查询登陆者
List<Zd_Assort> zdAssorts = zdAssortService.selectAssortListByUserId(request);
if(!CollectionUtils.isEmpty(zdAssorts)){
//有权限组织权限分类
for(Archive_Detail_Vo obj : list){
String assortId = obj.getAssortId();
//定义是否有权限
boolean flag = false;
for(Zd_Assort temp : zdAssorts){
if(temp.getAssortId().equals(assortId)){
flag = true;
break;
}
}
if(flag){
returnList.add(obj);
}
}
}else{
returnList = list;
}
}
return returnList;
}
/**
@ -82,7 +117,13 @@ public class Archive_DetailServiceImpl implements Archive_DetailService {
}
@Override
public OffsetLimitPage detailByClo(Archive_Detail_Vo record, Integer offset, Integer limit) {
public OffsetLimitPage detailByClo(Archive_Detail_Vo record, Integer offset, Integer limit,HttpServletRequest request) {
Power_User currentUser = (Power_User)request.getSession().getAttribute("CURRENT_USER");
Integer roleId = currentUser.getRoleId();
//不是管理员需过滤分类权限
if(roleId != 0 && roleId != -100){
record.setUserId(currentUser.getUserId());
}
PageHelper.offsetPage(offset, limit);
List<Archive_Detail_Vo> list = archiveDetailMapper.detailByClo(record);
OffsetLimitPage offsetLimitPage = new OffsetLimitPage((Page) list);
@ -131,7 +172,7 @@ public class Archive_DetailServiceImpl implements Archive_DetailService {
}
}
}
((Page<Archive_Detail_Vo>) returnList).setTotal(offsetLimitPage.getTotal());
((Page<Archive_Detail_Vo>) returnList).setTotal(returnList.size());
return new OffsetLimitPage((Page) returnList);
}
return offsetLimitPage;

@ -1,11 +1,14 @@
package com.emr.service.ipml;
import com.emr.dao.Zd_AssortMapper;
import com.emr.entity.Power_User;
import com.emr.entity.Zd_Assort;
import org.apache.shiro.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
@ -25,6 +28,8 @@ import java.util.List;
public class ZdAssortService {
@Autowired
private Zd_AssortMapper assortMapper;
@Autowired
private CommomService commomService;
public List<Zd_Assort> selectAll(Zd_Assort assort){
return assortMapper.selectAll(assort);
}
@ -34,4 +39,26 @@ public class ZdAssortService {
assort.setIsCheck(1);
return assortMapper.selectAll(assort);
}
/**
* id
* @return
*/
public List<Zd_Assort> selectAssortListByUserId(HttpServletRequest request) {
Power_User currentUser = commomService.getCurrentUser(request);
Integer roleId = currentUser.getRoleId();
if (roleId == 0 || roleId == -100) {
//系统管理员或医院管理员全查
return null;
} else {
//按权限分类查
List<Zd_Assort> zdAssorts = assortMapper.selectAssortListByUserId(currentUser.getUserId());
//如果未分配分类使用全部查询
if (CollectionUtils.isEmpty(zdAssorts)) {
return null;
} else {
return zdAssorts;
}
}
}
}

@ -50,9 +50,6 @@ picSrc=upload\\
#\u5B9A\u4E49\u7B2C\u4E09\u65B9\u6D4F\u89C8\u75C5\u5386\u7684\u67E5\u8BE2\u5168\u90E8\u5206\u7C7B\u7684\u5206\u7C7Bid\u53C2\u6570\u503C
allAddortIds = 00000000
#\u62A4\u58EB\u652F\u7EBF\u5BA1\u6838\u67E5\u770B\u7684\u5206\u7C7Bid
nurseAssortIds = 'C70E8C427A3648B79BE80798C08F4D12','85DAE73A87D047D28C222E878C78C670','32ADA6662463410589F7D6A06E3F2395'
#\u7528\u4E8E\u8D85\u671F\u901A\u77E5\uFF0C\u53EA\u901A\u77E5\u8BE5\u65E5\u671F\u4EE5\u540E\u7684\u51FA\u9662\u8D85\u671F\u7684\u8BB0\u5F55
overDateSet = 2021-05-01

@ -116,6 +116,10 @@
from zd_assort z
left join archive_detail t
on z.assort_id=t.AssortID
<if test="userId != null">
INNER JOIN <include refid="selectPowerAssort"></include> emr_user_reader
ON z.assort_id = emr_user_reader.assort_id
</if>
where 1=1
<if test="patientId != null">
and t.MasterID=#{patientId,jdbcType=VARCHAR}
@ -142,6 +146,28 @@
</otherwise>
</choose>
</select>
<sql id="selectPowerAssort">
(SELECT
emr_role_reader.record_id assort_id
FROM
emr_role_reader
LEFT JOIN emr_user_reader ON emr_role_reader.role_id = emr_user_reader.role_id
AND emr_user_reader.record_id = emr_role_reader.record_id
AND user_id = #{userId}
WHERE
flag IS NULL
OR flag != 0
UNION
SELECT
record_id
FROM
emr_user_reader
WHERE
flag = 1
AND user_id = #{userId})
</sql>
<select id="selectByid" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>

@ -29,4 +29,25 @@
ORDER BY
assort_sort
</select>
<!--根据用户id查询权限分类-->
<select id="selectAssortListByUserId" resultMap="BaseResultMap">
SELECT
emr_role_reader.record_id assort_id
FROM
emr_role_reader
LEFT JOIN emr_user_reader ON emr_role_reader.role_id = emr_user_reader.role_id
AND emr_user_reader.record_id = emr_role_reader.record_id
AND user_id = #{userId}
WHERE
flag IS NULL
OR flag != 0
UNION
SELECT
record_id
FROM
emr_user_reader
WHERE
flag = 1
AND user_id = #{userId}
</select>
</mapper>

@ -376,7 +376,7 @@
</div>
<footer class="main-footer">
<div class="pull-right">
<b>Version</b> 20210325
<b>Version</b> 20210607
</div>
<strong>Copyright &copy; 2019-2090 厦门嘉时软件.</strong> All rights
reserved.

Loading…
Cancel
Save