From 7be3b5eca01b4ddd8f1fa332b965fd18a5b321d0 Mon Sep 17 00:00:00 2001 From: zengwh <81383286@qq.com> Date: Sun, 6 Jun 2021 23:26:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=97=85=E5=8E=86=E6=B8=85?= =?UTF-8?q?=E5=8D=95=E6=9F=A5=E7=9C=8B=E5=88=86=E7=B1=BB=E6=8C=89=E7=97=85?= =?UTF-8?q?=E6=A1=88=E7=AE=A1=E7=90=86=E7=B3=BB=E7=BB=9F=E5=88=92=E5=88=86?= =?UTF-8?q?=E7=9A=84=E6=9D=83=E9=99=90=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../emr/controller/inHospitalController.java | 21 ++----- .../java/com/emr/dao/Zd_AssortMapper.java | 2 + .../com/emr/entity/Archive_Detail_Vo.java | 2 + .../emr/service/Archive_DetailService.java | 5 +- .../ipml/Archive_DetailServiceImpl.java | 63 +++++++++++++++---- .../com/emr/service/ipml/ZdAssortService.java | 27 ++++++++ src/main/resources/config/config.properties | 3 - .../resources/mapper/Archive_DetailMapper.xml | 26 ++++++++ src/main/resources/mapper/Zd_AssortMapper.xml | 21 +++++++ src/main/webapp/WEB-INF/views/index.jsp | 2 +- 10 files changed, 138 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/emr/controller/inHospitalController.java b/src/main/java/com/emr/controller/inHospitalController.java index 8f38d96..f1b0807 100644 --- a/src/main/java/com/emr/controller/inHospitalController.java +++ b/src/main/java/com/emr/controller/inHospitalController.java @@ -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 getAssort(Archive_Detail_Vo archiveDetailVo){ - //分段列表 - //checker 当前角色为护士2,从配置的护士分类查询 - Integer checker = archiveDetailVo.getChecker(); - if(null != checker && checker == 2){ - archiveDetailVo.setAssortid(NURSEASSORTIDS); - } + public List 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(); diff --git a/src/main/java/com/emr/dao/Zd_AssortMapper.java b/src/main/java/com/emr/dao/Zd_AssortMapper.java index ecf4a23..32acc7d 100644 --- a/src/main/java/com/emr/dao/Zd_AssortMapper.java +++ b/src/main/java/com/emr/dao/Zd_AssortMapper.java @@ -10,4 +10,6 @@ public interface Zd_AssortMapper { * 全查 * */ List selectAll(@Param("record") Zd_Assort record); + + List selectAssortListByUserId(Integer userId); } \ No newline at end of file diff --git a/src/main/java/com/emr/entity/Archive_Detail_Vo.java b/src/main/java/com/emr/entity/Archive_Detail_Vo.java index bb56936..2050ed2 100644 --- a/src/main/java/com/emr/entity/Archive_Detail_Vo.java +++ b/src/main/java/com/emr/entity/Archive_Detail_Vo.java @@ -39,6 +39,8 @@ public class Archive_Detail_Vo extends Archive_Detail{ private String eTimeStr; private String createTime; + + private Integer userId; } diff --git a/src/main/java/com/emr/service/Archive_DetailService.java b/src/main/java/com/emr/service/Archive_DetailService.java index 8d3a0ee..3c2b952 100644 --- a/src/main/java/com/emr/service/Archive_DetailService.java +++ b/src/main/java/com/emr/service/Archive_DetailService.java @@ -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 selectByClo(Archive_Detail_Vo record); + List 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); /** * 根据条件修改分段信息 diff --git a/src/main/java/com/emr/service/ipml/Archive_DetailServiceImpl.java b/src/main/java/com/emr/service/ipml/Archive_DetailServiceImpl.java index c762f47..f4bef7b 100644 --- a/src/main/java/com/emr/service/ipml/Archive_DetailServiceImpl.java +++ b/src/main/java/com/emr/service/ipml/Archive_DetailServiceImpl.java @@ -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 selectByClo(Archive_Detail_Vo record) { + public List selectByClo(Archive_Detail_Vo record, HttpServletRequest request) { List list = archiveDetailMapper.selectByClo(record); + //定义权限分类集合 + List 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 selectPowerAssort(HttpServletRequest request, List list) { + List returnList = new ArrayList<>(); + if(!CollectionUtils.isEmpty(list)){ + //查询登陆者 + List 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 list = archiveDetailMapper.detailByClo(record); OffsetLimitPage offsetLimitPage = new OffsetLimitPage((Page) list); @@ -131,7 +172,7 @@ public class Archive_DetailServiceImpl implements Archive_DetailService { } } } - ((Page) returnList).setTotal(offsetLimitPage.getTotal()); + ((Page) returnList).setTotal(returnList.size()); return new OffsetLimitPage((Page) returnList); } return offsetLimitPage; diff --git a/src/main/java/com/emr/service/ipml/ZdAssortService.java b/src/main/java/com/emr/service/ipml/ZdAssortService.java index eaca284..d572b64 100644 --- a/src/main/java/com/emr/service/ipml/ZdAssortService.java +++ b/src/main/java/com/emr/service/ipml/ZdAssortService.java @@ -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 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 selectAssortListByUserId(HttpServletRequest request) { + Power_User currentUser = commomService.getCurrentUser(request); + Integer roleId = currentUser.getRoleId(); + if (roleId == 0 || roleId == -100) { + //系统管理员或医院管理员全查 + return null; + } else { + //按权限分类查 + List zdAssorts = assortMapper.selectAssortListByUserId(currentUser.getUserId()); + //如果未分配分类使用全部查询 + if (CollectionUtils.isEmpty(zdAssorts)) { + return null; + } else { + return zdAssorts; + } + } + } } diff --git a/src/main/resources/config/config.properties b/src/main/resources/config/config.properties index 464c5b1..f29c6a0 100644 --- a/src/main/resources/config/config.properties +++ b/src/main/resources/config/config.properties @@ -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 diff --git a/src/main/resources/mapper/Archive_DetailMapper.xml b/src/main/resources/mapper/Archive_DetailMapper.xml index c73eb50..a28cf68 100644 --- a/src/main/resources/mapper/Archive_DetailMapper.xml +++ b/src/main/resources/mapper/Archive_DetailMapper.xml @@ -116,6 +116,10 @@ from zd_assort z left join archive_detail t on z.assort_id=t.AssortID + + INNER JOIN emr_user_reader + ON z.assort_id = emr_user_reader.assort_id + where 1=1 and t.MasterID=#{patientId,jdbcType=VARCHAR} @@ -142,6 +146,28 @@ + + + (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}) + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/index.jsp b/src/main/webapp/WEB-INF/views/index.jsp index 872fe23..693c977 100644 --- a/src/main/webapp/WEB-INF/views/index.jsp +++ b/src/main/webapp/WEB-INF/views/index.jsp @@ -376,7 +376,7 @@