commit c2e722b3bef860cd81208eadf11e1411137913cd
Author: zengwh <81383286@qq.com>
Date: Wed May 27 10:48:28 2020 +0800
初次提交
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d2c3354
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+/target/
+/.idea/
+/out/
+emr_medical_record.iml
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..fe2f0b9
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,545 @@
+
+
+
+ 4.0.0
+
+ com.emr
+ emr_medical_record
+ 1.0-SNAPSHOT
+ war
+
+ emr_medical_record Maven Webapp
+ http://www.example.com
+
+
+
+
+ true
+ UTF-8
+
+ true
+
+ 1.0.0
+
+
+ 1.1.5
+ 4.12
+ 1.8
+ 1.9.5
+
+ 1.2.2
+ 2.2.1
+ 7.6.11.v20130520
+ 2.4
+ 2.1
+ 1.2
+ 5.0.1.Final
+ 9.2-1004-jdbc4
+ 5.17.0
+ 2.3.6
+ 2.2.1
+ 1.1.1
+ 3.5.0
+
+ 5.0.2.RELEASE
+ 3.2.8
+ 1.2.2
+ 1.2.15
+ 5.1.32
+ 1.6.4
+ 2.4
+ 2.9.4
+ 1.0.9
+ 4.3.5
+ 2.5
+ 2.0
+ 2.5
+ 3.3.2
+ 1.3.2
+ 3.3
+ 3.4.3
+ 0.9.1
+ 1.3.1
+ 2.7.2
+ 4.10.3
+ 1.8.13
+ 1.8.13
+ 2.1.7
+ 3.1.8
+ 3.9
+ 2.1.7
+
+
+
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+ org.apache.commons
+ commons-io
+ ${commons-io.version}
+
+
+ commons-net
+ commons-net
+ ${commons-net.version}
+
+
+
+ net.sf.json-lib
+ json-lib
+ ${json-lib.version}
+ jdk15
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson.version}
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ ${httpclient.version}
+
+
+
+ junit
+ junit
+ ${junit.version}
+ test
+
+
+
+ org.slf4j
+ slf4j-log4j12
+ ${slf4j.version}
+
+
+
+ org.mybatis
+ mybatis
+ ${mybatis.version}
+
+
+ org.mybatis
+ mybatis-spring
+ ${mybatis.spring.version}
+
+
+ com.github.miemiedev
+ mybatis-paginator
+ ${mybatis.paginator.version}
+
+
+ com.github.pagehelper
+ pagehelper
+ ${pagehelper.version}
+
+
+
+
+ com.alibaba
+ druid
+ ${druid.version}
+
+
+
+
+ org.springframework
+ spring-context
+ ${spring.version}
+
+
+ org.springframework
+ spring-context-support
+ ${spring.version}
+
+
+ org.springframework
+ spring-beans
+ ${spring.version}
+
+
+ org.springframework
+ spring-webmvc
+ ${spring.version}
+
+
+ org.springframework
+ spring-web
+ ${spring.version}
+
+
+ org.springframework
+ spring-jdbc
+ ${spring.version}
+
+
+ org.springframework
+ spring-aspects
+ ${spring.version}
+
+
+ org.springframework
+ spring-tx
+ ${spring.version}
+
+
+ org.springframework
+ spring-test
+ ${spring.version}
+
+
+ org.aspectj
+ aspectjweaver
+ ${aspectj.version}
+
+
+ org.aspectj
+ aspectjrt
+ ${aspectj.version}
+
+
+
+
+ commons-codec
+ commons-codec
+ 1.9
+
+
+
+
+ org.bouncycastle
+ bcprov-jdk16
+ 1.46
+
+
+
+
+ javax.mail
+ mail
+ 1.4.5
+
+
+ com.sun.mail
+ javax.mail
+ 1.5.4
+
+
+
+
+ commons-dbutils
+ commons-dbutils
+ 1.4
+
+
+
+
+ com.github.pagehelper
+ pagehelper
+ 5.0.0
+
+
+ jstl
+ jstl
+ ${jstl.version}
+
+
+ javax.servlet
+ servlet-api
+ ${servlet-api.version}
+
+
+ javax.servlet
+ jsp-api
+ ${jsp-api.version}
+
+
+
+ commons-fileupload
+ commons-fileupload
+ ${commons-fileupload.version}
+
+
+
+ org.apache.shiro
+ shiro-spring
+ ${shiro.version}
+
+
+ org.apache.shiro
+ shiro-ehcache
+ ${shiro.version}
+
+
+ org.apache.shiro
+ shiro-core
+ ${shiro.version}
+
+
+ org.apache.shiro
+ shiro-web
+ ${shiro.version}
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+
+ org.postgresql
+ postgresql
+ ${postgresql.version}
+
+
+ taglibs
+ standard
+ 1.1.2
+
+
+
+ net.sf.json-lib
+ json-lib
+ ${json-lib.version}
+ jdk15
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson.version}
+
+
+
+
+ org.mockito
+ mockito-core
+ ${mockito.version}
+ test
+
+
+
+
+
+ org.jdom
+ jdom
+ 1.1
+
+
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 3.1.0
+
+
+
+
+
+
+
+
+ org.mockito
+ mockito-core
+ ${mockito.version}
+ test
+
+
+
+
+ org.apache.httpcomponents
+ httpmime
+ 4.5.5
+
+
+
+
+ org.jdom
+ jdom
+ 1.1
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 3.1.0
+
+
+
+ org.apache.poi
+ poi
+ ${poi.version}
+
+
+ org.apache.poi
+ poi-ooxml
+ ${poi.version}
+
+
+
+ org.eclipse.birt.runtime.3_7_1
+ com.lowagie.text
+ ${image2pdf.version}
+
+
+ com.itextpdf
+ itextpdf
+ 5.5.7
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.50
+
+
+ org.apache.cxf
+ cxf-rt-transports-http
+ ${cxf.version}
+
+
+ org.apache.cxf
+ cxf-rt-frontend-jaxws
+ ${cxf.version}
+
+
+ org.apache.pdfbox
+ pdfbox
+ 2.0.12
+
+
+
+
+
+
+
+
+
+ org.apache.axis
+ axis
+ 1.4
+
+
+ commons-discovery
+ commons-discovery
+ 0.2
+
+
+ commons-logging
+ commons-logging
+
+
+
+
+ org.apache.axis
+ axis-jaxrpc
+ 1.4
+
+
+ com.lowagie
+ itext
+ ${itext.version}
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.8
+ provided
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ RELEASE
+ compile
+
+
+
+
+ emr_medical_record
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 2.7
+
+ UTF-8
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ true
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.1
+
+
+ 1.8
+ 1.8
+ UTF-8
+ true
+ true
+ true
+
+
+ 128m
+ 512m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/com/emr/annotation/DataSource.java b/src/main/java/com/emr/annotation/DataSource.java
new file mode 100644
index 0000000..19fd944
--- /dev/null
+++ b/src/main/java/com/emr/annotation/DataSource.java
@@ -0,0 +1,12 @@
+package com.emr.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface DataSource {
+ String dataSource() default "";
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/annotation/DataSourceAspect.java b/src/main/java/com/emr/annotation/DataSourceAspect.java
new file mode 100644
index 0000000..3402285
--- /dev/null
+++ b/src/main/java/com/emr/annotation/DataSourceAspect.java
@@ -0,0 +1,36 @@
+package com.emr.annotation;
+
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.Signature;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Method;
+
+@Aspect
+@Component
+public class DataSourceAspect {
+ //配置接入点
+ @Pointcut("@annotation(com.emr.annotation.DataSource)")
+ private void controllerAspect(){}//定义一个切入点
+ @Before("controllerAspect()")
+ public void dataSwitch(JoinPoint joinPoint){
+ Signature signature = joinPoint.getSignature();
+ MethodSignature methodSignature =(MethodSignature) signature;
+ Method method = methodSignature.getMethod();
+ DataSource data = null;
+ String dataSource = "";
+ if(method != null){
+ data = method.getAnnotation(DataSource.class);
+ if(data != null){
+ dataSource = data.dataSource();
+ if(dataSource != null){
+ DynamicDataSource.setDataSourceKey(dataSource);
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/emr/annotation/DynamicDataSource.java b/src/main/java/com/emr/annotation/DynamicDataSource.java
new file mode 100644
index 0000000..abbcb06
--- /dev/null
+++ b/src/main/java/com/emr/annotation/DynamicDataSource.java
@@ -0,0 +1,14 @@
+package com.emr.annotation;
+
+import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
+
+public class DynamicDataSource extends AbstractRoutingDataSource {
+ private static final ThreadLocal dataSourceKey = new InheritableThreadLocal();
+ public static void setDataSourceKey(String dataSource){
+ dataSourceKey.set(dataSource);
+ }
+ @Override
+ protected Object determineCurrentLookupKey() {
+ return dataSourceKey.get();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/controller/ArchiveFlowInfoController.java b/src/main/java/com/emr/controller/ArchiveFlowInfoController.java
new file mode 100644
index 0000000..8461966
--- /dev/null
+++ b/src/main/java/com/emr/controller/ArchiveFlowInfoController.java
@@ -0,0 +1,103 @@
+package com.emr.controller;
+
+import com.emr.entity.Archive_Master_Vo;
+import com.emr.entity.OffsetLimitPage;
+import com.emr.service.ipml.ArchiveFlowInfoService;
+import com.emr.util.ExportExcelUtil1;
+import com.emr.vo.ArchiveFlowInfoVo;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @ProjectName:
+ * @Description:
+ * @Param 传输参数
+ * @Return
+ * @Author: 曾文和
+ * @CreateDate: 2020/5/25 16:18
+ * @UpdateUser: 曾文和
+ * @UpdateDate: 2020/5/25 16:18
+ * @UpdateRemark: 更新说明
+ * @Version: 1.0
+ */
+@Controller
+@RequestMapping("flowInfo/")
+public class ArchiveFlowInfoController {
+ @Autowired
+ private ArchiveFlowInfoService flowInfoService;
+
+ /**
+ * 跳转到流程明细页面
+ * @return
+ */
+ @RequestMapping("list")
+ public String toList(){
+ return "flowInfo/flowInfoList";
+ }
+
+ /**
+ * 获取流程明细列表
+ * @param offset
+ * @param limit
+ * @param flowInfoVo
+ * @param isSearch
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value = "selectFlowInfoList")
+ @ResponseBody
+ public OffsetLimitPage selectFlowInfoList(Integer offset, Integer limit, ArchiveFlowInfoVo flowInfoVo,Integer isSearch) throws Exception{
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ flowInfoVo.setDisStartDate(null);
+ flowInfoVo.setDisEndDate(null);
+ flowInfoVo.setStartDate(null);
+ flowInfoVo.setEndDate(null);
+ }
+ PageHelper.offsetPage(offset,limit);
+ List list = flowInfoService.selectFlowInfoList(flowInfoVo,null);
+ return new OffsetLimitPage((Page) list);
+ }
+
+ /**
+ * 导出流程明细
+ * @param response
+ * @param flowInfoVo
+ * @param sql
+ * @param isSearch
+ * @throws Exception
+ */
+ @RequestMapping("exportExcel")
+ @ResponseBody
+ public void exportExcel(HttpServletResponse response, ArchiveFlowInfoVo flowInfoVo,String sql, Integer isSearch) throws Exception{
+ //全部明细
+ String tableThNames = "";
+ String fieldCns = "";
+ //流程明细
+ tableThNames = "审核工号,审核姓名,当前操作,审核日期,下个审核节点,患者姓名,住院号,出院科室,出院日期,批注内容,审核用时";
+ fieldCns = "userName,checkName,sumbitName,createTimeCn,targetStep,name,inpNo,deptName,dischargeDateTime,remark,useTime";
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ flowInfoVo.setDisStartDate(null);
+ flowInfoVo.setDisEndDate(null);
+ flowInfoVo.setStartDate(null);
+ flowInfoVo.setEndDate(null);
+ }
+ List list = flowInfoService.selectFlowInfoList(flowInfoVo,sql);
+ //文件名
+ String fileName = "审核流程明细(" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ").xls";
+ //ExportExcelUtil
+ ExportExcelUtil1 exportExcelUtil = new ExportExcelUtil1();
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames,fieldCns,list,fileName,response);
+ }
+}
diff --git a/src/main/java/com/emr/controller/ContantController.java b/src/main/java/com/emr/controller/ContantController.java
new file mode 100644
index 0000000..17c9217
--- /dev/null
+++ b/src/main/java/com/emr/controller/ContantController.java
@@ -0,0 +1,33 @@
+package com.emr.controller;
+
+import com.alibaba.fastjson.JSON;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.UUID;
+
+/**
+ * @ProjectName:
+ * @Description:
+ * @Param 传输参数
+ * @Return
+ * @Author: 曾文和
+ * @CreateDate: 2019/9/17 14:59
+ * @UpdateUser: 曾文和
+ * @UpdateDate: 2019/9/17 14:59
+ * @UpdateRemark: 更新说明
+ * @Version: 1.0
+ */
+@Controller
+@RequestMapping("contant/")
+public class ContantController {
+ @RequestMapping("getUuid")
+ @ResponseBody
+ public String getUuid(HttpServletRequest request){
+ String formToken = UUID.randomUUID().toString();
+ request.getSession().setAttribute("formToken",formToken);
+ return JSON.toJSONString(formToken);
+ }
+}
diff --git a/src/main/java/com/emr/controller/DictionaryController.java b/src/main/java/com/emr/controller/DictionaryController.java
new file mode 100644
index 0000000..ee02641
--- /dev/null
+++ b/src/main/java/com/emr/controller/DictionaryController.java
@@ -0,0 +1,125 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/8/9 16:12
+ * Description:
+ */
+package com.emr.controller;
+
+import com.emr.entity.Emr_Dictionary;
+import com.emr.service.Emr_DictionaryService;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.subject.Subject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+@Controller
+@RequestMapping("/dictionary")
+public class DictionaryController {
+ @Autowired
+ private Emr_DictionaryService emrDictionaryService;
+
+ @RequestMapping(value = "/dictionarys")
+ public String inHospitals(Model model) {
+ return "dictionaryDir/dictionary";
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/dicList")
+ public List dicList(Emr_Dictionary emrDictionary) {
+ return emrDictionaryService.dicByClo(emrDictionary);
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/delById")
+ public int delById(Integer id) {
+ int bol = 0;
+ if (id != null) {
+ //删除
+ bol = emrDictionaryService.delById(id);
+ }
+ return bol;
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/saveInfo")
+ public String saveInfo(Emr_Dictionary emrDictionary) {
+ String result="";
+ int bol=0;
+ Emr_Dictionary dic2 = new Emr_Dictionary();
+ // 从session获取用户名
+ Subject currentUser = SecurityUtils.getSubject();
+ Session session = currentUser.getSession();
+ String username = (String) session.getAttribute("userSession");//获取前面登录的用户名
+
+ SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String nowTime = format1.format(new Date());
+
+ if(emrDictionary.getId()!=null){
+ //判断类别代码或代码是否已经存在
+ //存在修改
+ emrDictionary.setUpdater(username);
+ emrDictionary.setUpdateTime(nowTime);
+ try{
+ bol=emrDictionaryService.updateCloById(emrDictionary);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ if (bol == 1) {
+ result = "修改成功!";
+ } else {
+ result = "修改失败!";
+ }
+ }else{
+ emrDictionary.setCreater(username);
+ emrDictionary.setCreateTime(nowTime);
+ //判断类别代码或代码是否已经存在
+ if(emrDictionary.getCode()!=null && emrDictionary.getCode()!=""){
+ dic2.setCode(emrDictionary.getCode());
+ dic2.setParentId(emrDictionary.getParentId());
+ //根据代码查询该父类下是否存在是否已经存在
+ List list = emrDictionaryService.dicByClo(dic2);
+ //添加叶子节点
+ if(list.size()<=0){
+ //添加叶子
+ bol = emrDictionaryService.insertSel(emrDictionary);
+ if(bol==1){
+ result = "添加成功!";
+ }else{
+ result = "添加失败!";
+ }
+ }else{
+ result="代码已存在!";
+ }
+ }else{
+ dic2.setTypecode(emrDictionary.getTypecode());
+ //根据代码查询是否已经存在
+ List list = emrDictionaryService.dicByClo(dic2);
+ //添加叶子节点
+ if (list.size() <= 0) {
+ //emrDictionary.setEffective(1);
+ //添加类别
+ bol = emrDictionaryService.insertSel(emrDictionary);
+ if (bol == 1) {
+ result = "添加成功!";
+ } else {
+ result = "添加失败!";
+ }
+ } else {
+ result = "代码已存在!";
+ }
+ }
+ }
+ return result;
+ }
+}
+
+
diff --git a/src/main/java/com/emr/controller/FontController.java b/src/main/java/com/emr/controller/FontController.java
new file mode 100644
index 0000000..be40196
--- /dev/null
+++ b/src/main/java/com/emr/controller/FontController.java
@@ -0,0 +1,296 @@
+package com.emr.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.emr.dao.Emr_DictionaryMapper;
+import com.emr.entity.*;
+import com.emr.service.Archive_DetailService;
+import com.emr.service.Archive_MasterService;
+import com.emr.service.ipml.TPrintinfoService;
+import com.emr.service.ipml.ZdAssortService;
+import com.emr.util.Msg;
+import net.sf.json.JSONObject;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @author zwh
+ * */
+@Controller
+@RequestMapping("font/")
+public class FontController {
+ @Value("${pdfWater}")
+ private String pdfWater;
+ @Value("${allAddortIds}")
+ private String allAddortIds;
+ @Value("${POWER_URLHEAD}")
+ private String powerUrlHead;
+ @Autowired
+ private TPrintinfoService printinfoService;
+ @Autowired
+ private Archive_DetailService archiveDetailService;
+ @Autowired
+ private Archive_MasterService archiveMasterService;
+ @Autowired
+ private Emr_DictionaryMapper dictionaryMapper;
+ @Autowired
+ private ZdAssortService assortService;
+ @RequestMapping("selectIsPrintByPatienId")
+ @ResponseBody
+ public Msg selectIsPrintByPatienId(String patientId){
+ if(StringUtils.isBlank(patientId)){
+ return Msg.fail("参数patientId不能为空");
+ }
+ return printinfoService.selectIsPrintByPatienId(patientId);
+ }
+
+
+
+ /***************************提供第三方按多个分段id和记账号查询病历pdf***********************************/
+ /**
+ * 提供第三方按多个分段id和记账号查询病历pdf
+ * */
+ @RequestMapping("showRecordByPatientId")
+ public String showRecordByPatientId(String userName, String assortIds, String patientId, Model model) throws Exception{
+ //判断各参数
+ if(StringUtils.isBlank(userName)){
+ return retrunErrorPage(model,"工号不能为空!");
+ }
+ if(StringUtils.isBlank(assortIds)){
+ return retrunErrorPage(model,"病案分类Id不能为空!");
+ }
+ if(StringUtils.isBlank(patientId)){
+ return retrunErrorPage(model,"记账号不能为空!");
+ }
+ List list = new ArrayList<>();
+ //判断工号是否存在
+ String checkUserName = checkUserName(userName);
+ if(StringUtils.isNotBlank(checkUserName)){
+ return retrunErrorPage(model,checkUserName);
+ }
+ //判断分类id是否存在,协商assortIds = "00000000"为查询全部
+ if(!allAddortIds.equals(assortIds)) {
+ String checkAssortIds = checkAssortIds(assortIds);
+ if (StringUtils.isNotBlank(checkAssortIds)) {
+ return retrunErrorPage(model, checkAssortIds);
+ }
+ }
+ //判断记账号是否存在
+ Archive_Master master = new Archive_Master();
+ master.setPatientId(patientId);
+ list = archiveMasterService.selectByObject(master);
+ if(null == list || list.isEmpty()){
+ return retrunErrorPage(model,"记账号不存在!");
+ }
+ model.addAttribute("patientId",list.get(0).getId());
+ model.addAttribute("assortIds",assortIds);
+ return "font/showRecord";
+ }
+
+ /**
+ * 判断工号是否存在
+ */
+ private String checkUserName(String userName) throws Exception{
+ String resultString = "";
+ String url = powerUrlHead + "/font/checkUserName?userName=" + userName;
+ // 执行请求
+ CloseableHttpResponse response = HttpClients.createDefault().execute(new HttpGet(url));
+ // 判断返回状态是否为200
+ int temp = 200;
+ if (response.getStatusLine().getStatusCode() == temp) {
+ resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
+ }
+ if (StringUtils.isNoneBlank(resultString)) {
+ JSONObject jsonObject = JSONObject.fromObject(resultString);
+ Integer code = jsonObject.getInt("code");
+ //code==200有错误信息
+ if(code == temp){
+ JSONObject extendObject1 = JSONObject.fromObject(jsonObject);
+ return extendObject1.getString("msg");
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 判断分类id是否存在
+ * */
+ private String checkAssortIds(String assortIds){
+ Zd_Assort assort = new Zd_Assort();
+ assort.setPrintFlag("0");
+ List assortList = assortService.selectAll(assort);
+ if(null != assortList && !assortList.isEmpty()){
+ String[] split = assortIds.split(",");
+ for (int i = 0; i < split.length; i++) {
+ //定义分类存在
+ boolean exist = false;
+ if(StringUtils.isNotBlank(split[i])){
+ for (int j = 0; j < assortList.size(); j++) {
+ if(split[i].equals(assortList.get(j).getAssortId())){
+ exist = true;
+ break;
+ }
+ }
+ }
+ if(!exist){
+ return "病案分类Id有误!";
+ }
+ }
+ }else{
+ return "病案分类Id有误!";
+ }
+ return null;
+ }
+
+ /**
+ * 跳转到showRecordIframe页面
+ * */
+ @RequestMapping("showRecordIframe")
+ public String showRecordIframe(){
+ return "font/showRecordIframe";
+ }
+
+ /**
+ * 根据主键查询病案详情
+ * @param masterId
+ * @return
+ */
+ @ResponseBody
+ @RequestMapping(value = "/getRecord")
+ public String getPdfToPdf(String masterId) throws Exception{
+ Archive_Master archiveMaster = archiveMasterService.selectByPrimaryKey(masterId);
+ //转换科室数据字典
+ if(StringUtils.isNotBlank(archiveMaster.getDeptName())){
+ Emr_Dictionary dictionary = new Emr_Dictionary();
+ dictionary.setCode(archiveMaster.getDeptName());
+ dictionary.setTypecode("dept_code");
+ List dictionaries = dictionaryMapper.dicByTypeCode(dictionary);
+ if(null != dictionaries && !dictionaries.isEmpty()){
+ archiveMaster.setDeptName(dictionaries.get(0).getName());
+ }
+ //判断出院日期
+ String dischargeDateTime = archiveMaster.getDischargeDateTime();
+ if(StringUtils.isNotBlank(dischargeDateTime)){
+ SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
+ String time = fmt.format(fmt.parse(dischargeDateTime));
+ if("1801-02-03".equals(time)){
+ archiveMaster.setDischargeDateTime(null);
+ }
+ }
+ }
+ return JSON.toJSONString(archiveMaster);
+ }
+
+ /**
+ * 根据master表的记账号和分类id集合组织分类树
+ * @return
+ * @throws Exception
+ */
+ @ResponseBody
+ @RequestMapping(value = "/getRecordTypeTree")
+ public String getRecordTypeTree(String patientId,String assortIds){
+ List treeList = new ArrayList<>();
+ if(StringUtils.isNotBlank(patientId) && StringUtils.isNotBlank(assortIds)){
+ List list = new ArrayList<>();
+ //assortIds等于协商的全查的分类id,全查
+ if(allAddortIds.equals(assortIds)){
+ list = archiveDetailService.selectTypeTreeByPatientIdAndAssortIds(patientId, null);
+ }else{
+ //否则按条件查
+ //分类id分别以单引号隔开
+ String assortIdStr = "";
+ String[] split = assortIds.split(",");
+ for (int i = 0; i < split.length; i++) {
+ assortIdStr += "'" + split[i] + "',";
+ }
+ //去掉最后一个逗号
+ assortIdStr = assortIdStr.substring(0,assortIdStr.length()-1);
+ list = archiveDetailService.selectTypeTreeByPatientIdAndAssortIds(patientId,assortIdStr);
+ }
+ if(null != list && !list.isEmpty()){
+ Set assortList = new LinkedHashSet<>();
+ //分类去重
+ for(Archive_Detail detail : list){
+ assortList.add(detail.getSubassort());
+ }
+ //组织树
+ int id = 1;
+ //定义第一层的id为第二层父id
+ int oneParentId = 0;
+ //定义第二层的id为第三层父id
+ int twoParentId = 0;
+
+ AssortTypeTree tree = new AssortTypeTree();
+ //第一层,根目录全部影像资料
+ tree.setId(id);
+ tree.setParentId(0);
+ tree.setName("全部影像资料");
+ tree.setChecked("true");
+ treeList.add(tree);
+ oneParentId = id;
+ id++;
+ for(String assortName : assortList){
+ AssortTypeTree tree1 = new AssortTypeTree();
+ //第二层,分类名称
+ tree1.setId(id);
+ tree1.setParentId(oneParentId);
+ twoParentId = id;
+ id++;
+ //定义该类的数量
+ int count = 0;
+ for(Archive_Detail detail : list){
+ if(StringUtils.isNotBlank(detail.getSubassort()) && assortName.equals(detail.getSubassort())){
+ AssortTypeTree tree2 = new AssortTypeTree();
+ //第三层,资料名称
+ count++;
+ tree2.setId(id);
+ tree2.setParentId(twoParentId);
+ tree2.setName(detail.getTitle());
+ tree2.setSelfId(detail.getId());
+ tree2.setChecked("true");
+ treeList.add(tree2);
+ id++;
+ }
+ }
+ tree1.setName(assortName + "("+count+")");
+ tree1.setChecked("true");
+ treeList.add(tree1);
+ }
+ }
+ }
+ return JSON.toJSONString(treeList);
+ }
+
+ /**
+ * 根据病案号或类别或图片id获取图片列表,并生成PDF并返回pdf文件名
+ * @param response
+ * @param detailIds
+ * @param masterId
+ * @return
+ * @throws Exception
+ */
+ @ResponseBody
+ @RequestMapping(value = "/getPdfToPdf/{masterId}/{detailIds}")
+ public void getPdfToPdf(HttpServletResponse response,@PathVariable("detailIds") String detailIds, @PathVariable("masterId") String masterId){
+ archiveDetailService.selectPdfPathByIds(response, detailIds, masterId,pdfWater);
+ }
+ /**
+ * 返回错误页面
+ * */
+ private String retrunErrorPage(Model model,String errorMsg){
+ model.addAttribute("errorMsg",errorMsg);
+ return "font/error";
+ }
+}
diff --git a/src/main/java/com/emr/controller/FormTokenFlagUtil.java b/src/main/java/com/emr/controller/FormTokenFlagUtil.java
new file mode 100644
index 0000000..948611d
--- /dev/null
+++ b/src/main/java/com/emr/controller/FormTokenFlagUtil.java
@@ -0,0 +1,31 @@
+package com.emr.controller;
+
+import org.apache.commons.lang3.StringUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+/**
+ * @ProjectName:
+ * @Description:
+ * @Param 传输参数
+ * @Return
+ * @Author: 曾文和
+ * @CreateDate: 2019/9/17 14:20
+ * @UpdateUser: 曾文和
+ * @UpdateDate: 2019/9/17 14:20
+ * @UpdateRemark: 更新说明
+ * @Version: 1.0
+ */
+public class FormTokenFlagUtil {
+ public static boolean isFlag(HttpServletRequest request) {
+ HttpSession session = request.getSession();
+ String sesionToken = (String) session.getAttribute("formToken");
+ String token = request.getParameter("formToken");
+ if (StringUtils.isNoneBlank(token) && !(token.equals(sesionToken))) {
+ return false;
+ }
+ session.removeAttribute("formToken");
+ return true;
+ }
+}
diff --git a/src/main/java/com/emr/controller/GlobalExceptionHandler.java b/src/main/java/com/emr/controller/GlobalExceptionHandler.java
new file mode 100644
index 0000000..814162b
--- /dev/null
+++ b/src/main/java/com/emr/controller/GlobalExceptionHandler.java
@@ -0,0 +1,59 @@
+package com.emr.controller;
+
+/**
+ * @ProjectName:
+ * @Description:
+ * @Param 传输参数
+ * @Return
+ * @Author: 曾文和
+ * @CreateDate: 2020/5/15 16:14
+ * @UpdateUser: 曾文和
+ * @UpdateDate: 2020/5/15 16:14
+ * @UpdateRemark: 更新说明
+ * @Version: 1.0
+ */
+import com.alibaba.fastjson.support.spring.FastJsonJsonView;
+import org.apache.log4j.Logger;
+import org.apache.shiro.authz.UnauthorizedException;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.util.HashMap;
+import java.util.Map;
+
+@ControllerAdvice
+public class GlobalExceptionHandler {
+ private static Logger log = Logger.getLogger("errorMsg");
+ @ExceptionHandler(value = Exception.class)//指定拦截的异常
+ public ModelAndView errorHandler(Exception e){
+ return returnMv(e,"服务器出错了,请联系系统管理员");
+ }
+ @ExceptionHandler(value = RuntimeException.class)//指定拦截的异常
+ public ModelAndView runtimeHandler(Exception e){
+ return returnMv(e,"服务器出错了,请联系系统管理员");
+ }
+ @ExceptionHandler(value = UnauthorizedException.class)//指定拦截的异常
+ public ModelAndView unauthorizedHandler(Exception e){
+ return returnMv(e,"您权限验证出错了,请联系系统管理员");
+ }
+ private ModelAndView returnMv(Exception e,String msg){
+ ModelAndView mv = new ModelAndView();
+ /* 使用FastJson提供的FastJsonJsonView视图返回,不需要捕获异常 */
+ FastJsonJsonView view = new FastJsonJsonView();
+ Map attributes = new HashMap<>(1);
+ attributes.put("code", "500");
+ attributes.put("msg", msg);
+ view.setAttributesMap(attributes);
+ mv.setView(view);
+ //方法名
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ e.printStackTrace(new PrintStream(baos));
+ String exception = baos.toString();
+ log.error(exception);
+ e.printStackTrace();
+ return mv;
+ }
+}
diff --git a/src/main/java/com/emr/controller/HolidaySetController.java b/src/main/java/com/emr/controller/HolidaySetController.java
new file mode 100644
index 0000000..f111df2
--- /dev/null
+++ b/src/main/java/com/emr/controller/HolidaySetController.java
@@ -0,0 +1,45 @@
+package com.emr.controller;
+
+import com.emr.entity.EmrHolidaySetVo;
+import com.emr.entity.OffsetLimitPage;
+import com.emr.service.ipml.HolidaySetService;
+import com.emr.util.Msg;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping("holidaySet/")
+public class HolidaySetController {
+ @Autowired
+ private HolidaySetService holidaySetService;
+ @RequestMapping("holidaySetList")
+ public String holidaySetList(){
+ return "holidaySetDir/holidaySetList";
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "getHolidaySetList")
+ public OffsetLimitPage getHolidaySetList(EmrHolidaySetVo holidaySetVo) {
+ return holidaySetService.selectByColumn(holidaySetVo);
+ }
+
+ @RequestMapping("save")
+ @ResponseBody
+ public Msg save(String startTime,String endTime,String checkBoxes,Integer flag) throws Exception{
+ holidaySetService.update(startTime, endTime, checkBoxes, flag);
+ return Msg.success();
+ }
+
+ @RequestMapping("update")
+ @ResponseBody
+ public Msg update(Integer flag,Integer id) throws Exception{
+ if(flag != null) {
+ holidaySetService.update(flag, id);
+ return Msg.success();
+ }else{
+ return Msg.fail("工作日状态不能为空!");
+ }
+ }
+}
diff --git a/src/main/java/com/emr/controller/JAXDynamicClientFactory.java b/src/main/java/com/emr/controller/JAXDynamicClientFactory.java
new file mode 100644
index 0000000..de83943
--- /dev/null
+++ b/src/main/java/com/emr/controller/JAXDynamicClientFactory.java
@@ -0,0 +1,55 @@
+package com.emr.controller;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.bus.CXFBusFactory;
+import org.apache.cxf.endpoint.EndpointImplFactory;
+import org.apache.cxf.endpoint.dynamic.DynamicClientFactory;
+import org.apache.cxf.jaxws.support.JaxWsEndpointImplFactory;
+
+import java.util.List;
+
+/**
+ * @ProjectName:
+ * @Description:
+ * @Param 传输参数
+ * @Return
+ * @Author: 曾文和
+ * @CreateDate: 2019/9/11 16:15
+ * @UpdateUser: 曾文和
+ * @UpdateDate: 2019/9/11 16:15
+ * @UpdateRemark: 更新说明
+ * @Version: 1.0
+ */
+public class JAXDynamicClientFactory extends DynamicClientFactory {
+ protected JAXDynamicClientFactory(Bus bus) {
+ super(bus);
+ }
+
+ @Override
+ protected EndpointImplFactory getEndpointImplFactory() {
+ return JaxWsEndpointImplFactory.getSingleton();
+ }
+ @Override
+ protected boolean allowWrapperOps() {
+ return true;
+ }
+
+ public static JAXDynamicClientFactory newInstance(Bus b) {
+ return new JAXDynamicClientFactory(b);
+ }
+
+ public static JAXDynamicClientFactory newInstance() {
+ Bus bus = CXFBusFactory.getThreadDefaultBus();
+ return new JAXDynamicClientFactory(bus);
+ }
+ @Override
+ public boolean compileJavaSrc(String classPath, List srcList, String dest) {
+ org.apache.cxf.common.util.Compiler javaCompiler
+ = new org.apache.cxf.common.util.Compiler();
+ javaCompiler.setEncoding("UTF-8");
+ javaCompiler.setClassPath(classPath);
+ javaCompiler.setOutputDir(dest);
+ javaCompiler.setTarget("1.8");
+ return javaCompiler.compileFiles(srcList);
+ }
+}
diff --git a/src/main/java/com/emr/controller/LoginController.java b/src/main/java/com/emr/controller/LoginController.java
new file mode 100644
index 0000000..369e6e0
--- /dev/null
+++ b/src/main/java/com/emr/controller/LoginController.java
@@ -0,0 +1,72 @@
+package com.emr.controller;
+
+import com.emr.entity.Power_User;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.cxf.endpoint.Client;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authc.UsernamePasswordToken;
+import org.apache.shiro.subject.Subject;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @author HJL
+ * @create 2019/4/29
+ */
+@Controller
+public class LoginController {
+
+ @Value("${POWER_URLHEAD}")
+ private String POWER_URLHEAD;
+
+ @Value("${POWER_JSP}")
+ private String POWER_JSP;
+
+ @Value("${powerUrl}")
+ private String powerUrl;
+
+ @RequestMapping(value = "/toLogin")
+ public String toLogin(Model model) {
+ return "redirect:/login.jsp";
+ }
+
+ //实现用户登录@PathVariable("username")
+ @RequestMapping(value = "/login")
+ public String login(Model model, HttpServletRequest request) throws Exception{
+ String token = request.getParameter("token");
+ if(StringUtils.isNoneBlank(token)){
+ JAXDynamicClientFactory dcf = JAXDynamicClientFactory.newInstance();
+ Client client = dcf.createClient(POWER_URLHEAD + "/WebService/PowerWebService?wsdl");
+ Object[] objects = client.invoke("getInfosByUserId", token, "emr_medical_record");
+ ObjectMapper mapper = new ObjectMapper();
+ Power_User powerUser = mapper.readValue(objects[0].toString(), Power_User.class);
+ //设置进session
+ request.getSession().setAttribute("CURRENT_USER", powerUser);
+ if (null == powerUser.getUserId()) {
+ return "redirect:/emr_medical_record/error.jsp";
+ }
+ String userName = request.getParameter("userName");
+ UsernamePasswordToken userToken = new UsernamePasswordToken(userName, "123456");
+ Subject subject = SecurityUtils.getSubject();
+ subject.login(userToken);
+ model.addAttribute("POWER_URLHEAD", POWER_JSP);
+ request.getSession().setAttribute("token", token);
+ }else{
+ return "redirect:"+POWER_URLHEAD+"/login";
+ }
+ return "index";
+ }
+
+ @RequestMapping(value = "/index")
+ public String Login() {
+ return "index";
+ }
+
+}
+
+
diff --git a/src/main/java/com/emr/controller/MedicalRecallController.java b/src/main/java/com/emr/controller/MedicalRecallController.java
new file mode 100644
index 0000000..83eb1e9
--- /dev/null
+++ b/src/main/java/com/emr/controller/MedicalRecallController.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 14:39
+ * Description:病案终审退回
+ */
+package com.emr.controller;
+
+import com.emr.dao.Archive_MasterMapper;
+import com.emr.entity.*;
+import com.emr.service.Archive_MasterService;
+import com.emr.service.ipml.ArchiveCallbackInfoService;
+import com.emr.util.ExportExcelUtil;
+import com.emr.util.Msg;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+@PropertySource(value = "classpath:config/jdbc.properties", encoding = "UTF-8")
+@Controller
+@RequestMapping("/medicalRecall")
+public class MedicalRecallController {
+ @Autowired
+ private Archive_MasterMapper archiveMasterMapper;
+
+ @Autowired
+ private Archive_MasterService archiveMasterService;
+
+ @Autowired
+ private ArchiveCallbackInfoService callbackInfoService;
+
+ @Value("${recallReason}")
+ private String recallReason;
+
+ @RequestMapping(value = "/recall")
+ public String recall() {
+ return "medicalRecallDir/medicalRecallList";
+ }
+
+
+ /**
+ * 病案终审退回
+ * */
+ @ResponseBody
+ @RequestMapping(value = "/recallList")
+ public OffsetLimitPage recallList(Archive_Master_Vo master, Integer offset, Integer limit) {
+ //查询已归档记录
+ return archiveMasterService.selectFiled(master, offset, limit);
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/exportExcel")
+ public void exportExcel(HttpServletResponse response, Archive_Master_Vo master) throws Exception {
+ String tableThNames = "住院号,住院次数,名字,性别,入院科室,入院日期,出院科室,出院日期,上次召回状态,归档状态";
+ String fieldCns = "inpNo,visitId,name,sex,deptAdmissionTo,admissionDateTime,deptName,dischargeDateTime,status,archivestate";
+ List list = archiveMasterMapper.selectFiled(master);
+ //文件名
+ String fileName = "归档记录" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls";
+ //ExportExcelUtil
+ ExportExcelUtil exportExcelUtil = new ExportExcelUtil();
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames,fieldCns,list,fileName,response);
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/updateState")
+ public Msg updateState(HttpServletRequest request,ArchiveCallbackInfo callbackInfo) throws Exception{
+ boolean flag = FormTokenFlagUtil.isFlag(request);
+ if (!flag) {
+ return Msg.fail("请不要重复提交!");
+ }
+ if(StringUtils.isBlank(callbackInfo.getCallbackReason())){
+ callbackInfo.setCallbackReason(recallReason);
+ }
+ callbackInfoService.insertCallbackInfoService(callbackInfo);
+ return Msg.success();
+ }
+}
+
+
diff --git a/src/main/java/com/emr/controller/StatisticsController.java b/src/main/java/com/emr/controller/StatisticsController.java
new file mode 100644
index 0000000..7b0281d
--- /dev/null
+++ b/src/main/java/com/emr/controller/StatisticsController.java
@@ -0,0 +1,310 @@
+package com.emr.controller;
+
+import com.emr.entity.Archive_Master_Vo;
+import com.emr.entity.OffsetLimitPage;
+import com.emr.service.ipml.StatisticsService;
+import com.emr.util.ExportExcelUtil1;
+import com.emr.vo.FinalAndFirstStatistics;
+import com.emr.vo.TUuInfoVo;
+import com.emr.vo.TUuPrintSearch;
+import com.emr.vo.TUuPrintVo;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @ProjectName:
+ * @Description:
+ * @Param 传输参数
+ * @Return
+ * @Author: 曾文和
+ * @CreateDate: 2020/1/8 14:52
+ * @UpdateUser: 曾文和
+ * @UpdateDate: 2020/1/8 14:52
+ * @UpdateRemark: 更新说明
+ * @Version: 1.0
+ */
+@Controller
+@RequestMapping("statistics/")
+public class StatisticsController {
+ @Autowired
+ private StatisticsService statisticsService;
+ //终审按天统计
+ @RequestMapping("finalStatistics")
+ public String finalStatistics(){
+ return "statistics/finalStatistics";
+ }
+
+ //终审明细
+ @RequestMapping("finalStatisticsDetail")
+ public String finalStatisticsDetail(){
+ return "statistics/finalStatisticsDetail";
+ }
+
+ //初审按天统计
+ @RequestMapping("firstStatistics")
+ public String firstStatistics(){
+ return "statistics/firstStatistics";
+ }
+
+ //初审终审明细
+ @RequestMapping("statisticsDetail")
+ public String statisticsDetail(){
+ return "statistics/statisticsDetail";
+ }
+
+ //复印记录报表
+ @RequestMapping("printCount")
+ public String printCount(){
+ return "statistics/printCount";
+ }
+
+ //复印记录明细
+ @RequestMapping("printInfo")
+ public String printInfo(){
+ return "statistics/printInfo";
+ }
+
+ //扫描上传记录报表
+ @RequestMapping("scanCount")
+ public String scanCount(){
+ return "statistics/scanCount";
+ }
+
+ //扫描上传明细
+ @RequestMapping("scanInfo")
+ public String scanInfo(){
+ return "statistics/scanInfo";
+ }
+
+ //终审按天统计
+ @RequestMapping("getFinalStatistics")
+ @ResponseBody
+ public OffsetLimitPage getFinalStatistics(HttpServletRequest request,Integer offset, Integer limit, String startDate, String endDate,Integer isSearch){
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ startDate = null;
+ endDate = null;
+ }
+ List list = statisticsService.getFinalStatistics(offset, limit, startDate, endDate,null);
+ return new OffsetLimitPage((Page)list);
+ }
+
+ //初审按天统计
+ @RequestMapping("getFirstStatistics")
+ @ResponseBody
+ public OffsetLimitPage getFirstStatistics(HttpServletRequest request,Integer offset, Integer limit, String startDate, String endDate,Integer isSearch){
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ startDate = null;
+ endDate = null;
+ }
+ List list = statisticsService.getFirstStatistics(request, offset, limit, startDate, endDate,null);
+ return new OffsetLimitPage((Page) list);
+ }
+
+
+ //审核明细
+ @RequestMapping("getStatisticsDetail")
+ @ResponseBody
+ public OffsetLimitPage getStatisticsDetail(Integer offset, Integer limit,String disStartDate, String disEndDate, Archive_Master_Vo archiveMasterVo,Integer flag,Integer isSearch){
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ disStartDate = null;
+ disEndDate = null;
+ archiveMasterVo.setStartDate(null);
+ archiveMasterVo.setEndDate(null);
+ }
+ return statisticsService.getStatisticsDetail(offset,limit,disStartDate,disEndDate,archiveMasterVo,flag);
+ }
+
+ //导出终审统计
+ @RequestMapping("exportExcelFinalStatistics")
+ @ResponseBody
+ public void exportExcelFinalStatistics(HttpServletResponse response,Integer offset, Integer limit, String startDate, String endDate,String sql,Integer isSearch) throws Exception{
+ //全部明细
+ String tableThNames = "工号,姓名,终审日期,终审数量";
+ String fieldCns = "checkCode,checkName,createTime,count";
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ startDate = null;
+ endDate = null;
+ }
+ List list = statisticsService.getFinalStatistics(offset, limit, startDate, endDate,sql);
+ //文件名
+ String fileName = "终审记录统计报表(" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ").xls";
+ //ExportExcelUtil
+ ExportExcelUtil1 exportExcelUtil = new ExportExcelUtil1();
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames,fieldCns,list,fileName,response);
+ }
+
+ //导出初审统计
+ @RequestMapping("exportExcelFirstStatistics")
+ @ResponseBody
+ public void exportExcelFirstStatistics(HttpServletRequest request,HttpServletResponse response,Integer offset, Integer limit, String startDate, String endDate,String sql,Integer isSearch) throws Exception{
+ //全部明细
+ String tableThNames = "工号,姓名,审核日期,审核数量";
+ String fieldCns = "checkCode,checkName,createTime,count";
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ startDate = null;
+ endDate = null;
+ }
+ List list = statisticsService.getFirstStatistics(request, offset, limit, startDate, endDate,sql);
+ //文件名
+ String fileName = "病案室审核记录统计表(" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ").xls";
+ //ExportExcelUtil
+ ExportExcelUtil1 exportExcelUtil = new ExportExcelUtil1();
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames,fieldCns,list,fileName,response);
+ }
+
+ //导出审核明细
+ @RequestMapping("exportExcelDetail")
+ @ResponseBody
+ public void exportExcelDetail(HttpServletResponse response,String disStartDate, String disEndDate, Archive_Master_Vo archiveMasterVo, Integer flag,String sql,Integer isSearch) throws Exception{
+ //全部明细
+ String tableThNames = "";
+ String fieldCns = "";
+ if(flag == 2){
+ tableThNames = "初审工号,初审姓名,初审日期,终审工号,终审姓名,终审日期,患者姓名,住院号,出院科室,出院日期,入院科室,入院日期,住院天数";
+ fieldCns = "checkDoctor,checkName,checkDatetime,checkedDoctor,checkedName,checkedDatetime,name,inpNo,deptName,dischargeDateTime,deptAdmissionTo,admissionDateTime,days";
+ }else{
+ //终审明细
+ tableThNames = "终审工号,终审姓名,终审日期,患者姓名,住院号,出院科室,出院日期,入院科室,入院日期,住院天数";
+ fieldCns = "checkedDoctor,checkedName,checkedDatetime,name,inpNo,deptName,dischargeDateTime,deptAdmissionTo,admissionDateTime,days";
+ }
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ disStartDate = null;
+ disEndDate = null;
+ archiveMasterVo.setStartDate(null);
+ archiveMasterVo.setEndDate(null);
+ }
+ List list = statisticsService.getDetailList(disStartDate, disEndDate, archiveMasterVo,flag,sql);
+ //文件名
+ String fileName = "病案室审核记录明细报表(" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ").xls";
+ //ExportExcelUtil
+ ExportExcelUtil1 exportExcelUtil = new ExportExcelUtil1();
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames,fieldCns,list,fileName,response);
+ }
+
+ //复印记录报表
+ @RequestMapping("getPrintCount")
+ @ResponseBody
+ public OffsetLimitPage getPrintCount(Integer offset, Integer limit, TUuPrintSearch search){
+ if(null != offset && null != limit){
+ PageHelper.offsetPage(offset, limit);
+ }
+ List list = statisticsService.getPrintCount(search);
+ return new OffsetLimitPage((Page)list);
+ }
+
+ //复印记录明细
+ @RequestMapping("getPrintInfo")
+ @ResponseBody
+ public OffsetLimitPage getPrintInfo(Integer offset, Integer limit,TUuPrintSearch search){
+ if(null != offset && null != limit){
+ PageHelper.offsetPage(offset, limit);
+ }
+ List list = statisticsService.getPrintInfo(search);
+ return new OffsetLimitPage((Page)list);
+ }
+
+ //扫描记录报表
+ @RequestMapping("getScanCount")
+ @ResponseBody
+ public OffsetLimitPage getScanCount(Integer offset, Integer limit,TUuPrintSearch search){
+ if(null != offset && null != limit){
+ PageHelper.offsetPage(offset, limit);
+ }
+ List list = statisticsService.getScanCount(search);
+ return new OffsetLimitPage((Page)list);
+ }
+
+ //扫描记录明细
+ @RequestMapping("getScanInfo")
+ @ResponseBody
+ public OffsetLimitPage getScanInfo(Integer offset, Integer limit,TUuPrintSearch search){
+ if(null != offset && null != limit){
+ PageHelper.offsetPage(offset, limit);
+ }
+ List list = statisticsService.getScanInfo(search);
+ return new OffsetLimitPage((Page)list);
+ }
+
+ //导出复印记录报表
+ @RequestMapping("exportExcelPrintCount")
+ @ResponseBody
+ public void exportExcelPrintCount(HttpServletResponse response,TUuPrintSearch search) throws Exception{
+ //全部明细
+ String tableThNames = "记账号,住院号,住院次数,患者,复印日期,操作人,复印次数";
+ String fieldCns = "patientId,inpNo,visitId,hzname,printTime,cpyuser,printCount";
+ List list = statisticsService.getPrintCount(search);
+ //文件名
+ String fileName = "复印记录报表(" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ").xls";
+ //ExportExcelUtil
+ ExportExcelUtil1 exportExcelUtil = new ExportExcelUtil1();
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames,fieldCns,list,fileName,response);
+ }
+
+ //导出复印记录明细
+ @RequestMapping("exportExcelPrintInfo")
+ @ResponseBody
+ public void exportExcelPrintInfo(HttpServletResponse response,TUuPrintSearch search) throws Exception{
+ //全部明细
+ String tableThNames = "记账号,住院号,住院次数,患者姓名,性别,入院时间,出院时间,出院科室,主管医生,复印内容,操作人,复印日期,修改标志";
+ String fieldCns = "patientId,inpNo,visitId,hzname,sex,admissionDateTime,dischargeDateTime,name,doctorInCharge,filetitle,cpyuser,printTime,flagCn";
+ List list = statisticsService.getPrintInfo(search);
+ //文件名
+ String fileName = "复印记录明细(" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ").xls";
+ //ExportExcelUtil
+ ExportExcelUtil1 exportExcelUtil = new ExportExcelUtil1();
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames,fieldCns,list,fileName,response);
+ }
+
+ //导出扫描记录报表
+ @RequestMapping("exportExcelScanCount")
+ @ResponseBody
+ public void exportExcelScanCount(HttpServletResponse response,TUuPrintSearch search) throws Exception{
+ //全部明细
+ String tableThNames = "扫描人,扫描日期,扫描次数";
+ String fieldCns = "uuname,uploaddatetime,scanCount";
+ List list = statisticsService.getScanCount(search);
+ //文件名
+ String fileName = "扫描上传记录报表(" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ").xls";
+ //ExportExcelUtil
+ ExportExcelUtil1 exportExcelUtil = new ExportExcelUtil1();
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames,fieldCns,list,fileName,response);
+ }
+
+ //导出扫描记录明细
+ @RequestMapping("exportExcelScanInfo")
+ @ResponseBody
+ public void exportExcelScanInfo(HttpServletResponse response,TUuPrintSearch search) throws Exception{
+ //全部明细
+ String tableThNames = "记账号,住院号,住院次数,患者姓名,性别,入院时间,出院时间,出院科室,主管医生,扫描人,扫描时间";
+ String fieldCns = "patientId,inpNo,visitId,hzname,sex,admissionDateTime,dischargeDateTime,doctorDept,doctorInCharge,uuname,uploaddatetime";
+ List list = statisticsService.getScanInfo(search);
+ //文件名
+ String fileName = "扫描上传记录明细(" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ").xls";
+ //ExportExcelUtil
+ ExportExcelUtil1 exportExcelUtil = new ExportExcelUtil1();
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames,fieldCns,list,fileName,response);
+ }
+}
diff --git a/src/main/java/com/emr/controller/UploadFilesController.java b/src/main/java/com/emr/controller/UploadFilesController.java
new file mode 100644
index 0000000..75e91b1
--- /dev/null
+++ b/src/main/java/com/emr/controller/UploadFilesController.java
@@ -0,0 +1,118 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/10 17:09
+ * Description:
+ */
+package com.emr.controller;
+
+import org.apache.log4j.Logger;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+@Controller
+@RequestMapping(value = "/Upload")
+public class UploadFilesController {
+ private Logger logger = Logger.getLogger(UploadFilesController.class);
+ /**
+ * app申请打印图片
+ *
+ * @param
+ * @return
+ * @throws IOException
+ */
+ @RequestMapping(value = "/uploadImg", method = RequestMethod.POST)
+ public void uploadImg(HttpServletResponse resp, HttpServletRequest request, @RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
+ resp.setContentType("text/json");
+ resp.setCharacterEncoding("utf-8");
+ PrintWriter pw = null;
+ pw = resp.getWriter();
+ if (!file.isEmpty()) {
+ logger.info("成功获取照片");
+ String fileName = file.getOriginalFilename();
+ String path = null;
+ String type = null;
+ if (fileName != null) {
+ type = fileName.contains(".") ? fileName.substring(fileName.lastIndexOf(".") + 1) : null;
+ }
+ logger.info("图片初始名称为:" + fileName + " 类型为:" + type);
+ if (type != null) {
+ if ("PDF".equals(type.toUpperCase())) {
+ // 项目在容器中实际发布运行的根路径
+ String realPath = request.getSession().getServletContext().getRealPath("/");
+ // 自定义的文件名称
+ String trueFileName = System.currentTimeMillis() + fileName;
+ // 设置存放图片文件的路径
+ path = realPath + "/static/img/uploads/" + trueFileName;
+ logger.info("存放图片文件的路径:" + path);
+ file.transferTo(new File(path));
+ logger.info("文件成功上传到指定目录下");
+ } else {
+ logger.info("不是PDF文件类型,请按要求重新上传");
+ pw.print("文件类型有误,请重新上传");
+ }
+ } else {
+ logger.info("文件类型为空");
+ pw.print("文件类型为空");
+ }
+ } else {
+ logger.info("没有找到相对应的文件");
+ pw.print("没有找到相对应的文件");
+ }
+ pw.flush();
+ }
+
+ @ResponseBody
+ @RequestMapping("upload")
+ public String upload(HttpServletRequest request, @RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
+ request.setCharacterEncoding("UTF-8");
+ logger.info("执行图片上传");
+ String userId = request.getParameter("userId");
+ logger.info("userId:" + userId);
+ if (!file.isEmpty()) {
+ logger.info("成功获取照片");
+ String fileName = file.getOriginalFilename();
+ String path = null;
+ String type = null;
+ if (fileName != null) {
+ type = fileName.contains(".") ? fileName.substring(fileName.lastIndexOf(".") + 1) : null;
+ }
+ logger.info("图片初始名称为:" + fileName + " 类型为:" + type);
+ if (type != null) {
+ if ("GIF".equals(type.toUpperCase()) || "PNG".equals(type.toUpperCase()) || "JPG".equals(type.toUpperCase())) {
+ // 项目在容器中实际发布运行的根路径
+ String realPath = request.getSession().getServletContext().getRealPath("/");
+ // 自定义的文件名称
+ String trueFileName = System.currentTimeMillis() + fileName;
+ // 设置存放图片文件的路径
+ path = realPath + "/uploads/" + trueFileName;
+ logger.info("存放图片文件的路径:" + path);
+ file.transferTo(new File(path));
+ logger.info("文件成功上传到指定目录下");
+ } else {
+ logger.info("不是我们想要的文件类型,请按要求重新上传");
+ return "error";
+ }
+ } else {
+ logger.info("文件类型为空");
+ return "error";
+ }
+ } else {
+ logger.info("没有找到相对应的文件");
+ return "error";
+ }
+ return "success";
+ }
+}
+
+
diff --git a/src/main/java/com/emr/controller/UrlInterceptor.java b/src/main/java/com/emr/controller/UrlInterceptor.java
new file mode 100644
index 0000000..857ed52
--- /dev/null
+++ b/src/main/java/com/emr/controller/UrlInterceptor.java
@@ -0,0 +1,57 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/8/22 13:49
+ * Description:
+ */
+package com.emr.controller;
+
+import com.emr.entity.Power_User;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.cxf.endpoint.Client;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class UrlInterceptor implements HandlerInterceptor {
+ @Value("${POWER_URLHEAD}")
+ private String POWER_URLHEAD;
+
+ @Value("${powerUrl}")
+ private String powerUrl;
+
+ @Override
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o){
+ String url = request.getServletPath();
+ String token = (String) request.getSession().getAttribute("token");
+ if (!"/login".equals(url) && StringUtils.isNoneBlank(token)) {
+ try {
+ JAXDynamicClientFactory dcf = JAXDynamicClientFactory.newInstance();
+ Client client = dcf.createClient(POWER_URLHEAD + "/WebService/PowerWebService?wsdl");
+ Object[] objects = client.invoke("getInfosByUserId", token, "emr_medical_record");
+ ObjectMapper mapper = new ObjectMapper();
+ Power_User powerUser = mapper.readValue(objects[0].toString(), Power_User.class);
+ //设置进session
+ request.getSession().setAttribute("CURRENT_USER", powerUser);
+ if (null == powerUser.getUserId()) {
+ response.sendRedirect( "/emr_medical_record/error.jsp");
+ return false;
+ }
+ } catch (Exception e) {
+ try {
+ response.sendRedirect("/emr_medical_record/error.jsp");
+ }catch (Exception e1){}
+ e.printStackTrace();
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+}
+
+
diff --git a/src/main/java/com/emr/controller/VCountController.java b/src/main/java/com/emr/controller/VCountController.java
new file mode 100644
index 0000000..ecf5fa8
--- /dev/null
+++ b/src/main/java/com/emr/controller/VCountController.java
@@ -0,0 +1,248 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 14:39
+ * Description:缺陷管理
+ */
+package com.emr.controller;
+
+import com.emr.dao.Archive_MasterMapper;
+import com.emr.entity.*;
+import com.emr.service.*;
+import com.emr.util.ExportExcelUtil;
+import com.emr.util.ExportExcelUtil1;
+import com.emr.vo.DeptStatistics;
+import com.emr.vo.DoctorStatistics;
+import com.emr.vo.V_CountVo;
+import org.apache.shiro.util.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@Controller
+@RequestMapping("vCount")
+public class VCountController {
+ @Autowired
+ private V_CountService v_countService;
+
+ @Autowired
+ private Archive_MasterService archiveMasterService;
+
+ @Autowired
+ private Emr_DictionaryService emrDictionaryService;
+
+ @Autowired
+ private Archive_MasterMapper archiveMasterMapper;
+
+ @RequestMapping(value = "/vCounts")
+ public String faults(){
+ return "vCountDir/vCountList";
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/vCountList")
+ public OffsetLimitPage faultList(V_CountVo vCount, Integer offset, Integer limit) {
+ return v_countService.selectPageByClo(vCount,offset, limit);
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/vCountNumList")
+ public List medicalCountDayList(V_CountVo vCount){
+ //统计列表
+ return v_countService.selectByCol(vCount);
+ }
+
+
+ @ResponseBody
+ @RequestMapping(value = "/exportExcel")
+ public void exportExcel(HttpServletResponse response, V_CountVo vCount) throws Exception {
+ String tableThNames = "科室代码,科室名称,出院人数,已归档,未归档,死亡人数,归档率(%),2日率(%),3日率(%),7日率(%)";
+ String fieldCns = "deptCode,deptName,outNum,fileNum,unfileNum,deathNum,fileRate,day2Rate,day3Rate,day7Rate";
+ //构造excel的数据
+ List list = v_countService.selectByCol(vCount);
+ if(null != list && !list.isEmpty()){
+ for (V_Count count : list) {
+ Double fileRate = Double.valueOf(count.getFileRate())*100;
+ Double day2Rate = Double.valueOf(count.getDay2Rate())*100;
+ Double day3Rate = Double.valueOf(count.getDay3Rate())*100;
+ Double day7Rate = Double.valueOf(count.getDay7Rate())*100;
+ count.setFileRate(fileRate.intValue()+"%");
+ count.setDay2Rate(day2Rate.intValue()+"%");
+ count.setDay3Rate(day3Rate.intValue()+"%");
+ count.setDay7Rate(day7Rate.intValue()+"%");
+ }
+ }
+ //文件名
+ String fileName = "统计数据" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ".xls";
+ //ExportExcelUtil
+ ExportExcelUtil1 exportExcelUtil = new ExportExcelUtil1();
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response);
+ }
+
+
+ @ResponseBody
+ @RequestMapping(value = "/exportExcel2")
+ public void exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo) throws Exception {
+ String tableThNames = "名字,入院科室,入院日期,出院科室,出院日期,主管医生";
+ String fieldCns = "name,deptAdmissionTo,admissionDateTime,deptName,dischargeDateTime,doctorInCharge";
+ //构造excel的数据
+ List list = archiveMasterService.selectByUnfile(archiveMasterVo);
+ Emr_Dictionary dic = new Emr_Dictionary();
+ dic.setEffective(1);
+ dic.setTypecode("dept_code");
+ //科室列表
+ List dicList = emrDictionaryService.dicByTypeCode(dic);
+ for (int i = 0; i < list.size(); i++) {
+ //替换科室
+ for (int k = 0; k < dicList.size(); k++) {
+ String deptName = list.get(i).getDeptName();
+ //入院科室dept_admission_to
+ String dept2 = list.get(i).getDeptAdmissionTo();
+
+ if ((deptName != null && deptName.equals(dicList.get(k).getCode())) || (dept2 != null && dept2.equals(dicList.get(k).getCode()))) {
+ //出院科室
+ if(deptName != null) {
+ deptName = deptName.replace(deptName, dicList.get(k).getName());
+ list.get(i).setDeptName(deptName);
+ }
+ dept2 = dept2.replace(dept2, dicList.get(k).getName());
+ list.get(i).setDeptAdmissionTo(dept2);
+ }
+ }
+ }
+
+ //文件名
+ String fileName = "未归档病历列表" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls";
+ //ExportExcelUtil
+ ExportExcelUtil exportExcelUtil = new ExportExcelUtil();
+ response.setContentType("application/ms-excel;charset=gbk");
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response);
+ }
+
+ //跳转医生统计页面
+ @RequestMapping("/doctorFileList")
+ public String doctorFileList(){
+ return "vCountDir/doctorFileList";
+ }
+
+ //加载医生统计表格iframe
+ @RequestMapping("/getDoctorFileInfoIframe")
+ public String getDoctorFileInfoIframe(String deptCode,String doctor,String startTime,String endTime,Model model){
+ //科室医师明细
+ List list = archiveMasterMapper.getDoctorFileInfo(deptCode, doctor, startTime, endTime);
+ //定义返回结果
+ List deptList = new ArrayList<>();
+ if(null != list && !list.isEmpty()){
+ //定义科室集合
+ Map deptMap = new LinkedHashMap<>();
+ for (DoctorStatistics info:list) {
+ deptMap.put(info.getDeptName(),info.getDeptName());
+ }
+ if(!CollectionUtils.isEmpty(deptMap)){
+ for(Map.Entry dept:deptMap.entrySet()){
+ DeptStatistics deptStatistics = new DeptStatistics();
+ //设置科室总住院天数
+ int deptAdmissDay = 0;
+ //设置科室总逾期天数
+ int deptOverDays = 0;
+ //设置科室总份数
+ int deptCount = 0;
+ //设置科室总逾期份数
+ int deptOverCount = 0;
+ //定义科室结合
+ List deptDoctorList = new ArrayList<>();
+ //定义不重复医生集合
+ Map doctorMap = new LinkedHashMap<>();
+ for (DoctorStatistics info:list) {
+ if(dept.getKey().equals(info.getDeptName())){
+ //统计住院总天数
+ deptAdmissDay += info.getAdmissDays();
+ //统计逾期天数
+ deptOverDays += info.getOverDays();
+ //统计总份数
+ deptCount++;
+ //统计总逾期份数
+ if(info.getOverDays() > 0){
+ deptOverCount++;
+ }
+ deptDoctorList.add(info);
+ doctorMap.put(info.getDoctor(),info.getDoctor());
+ }
+ }
+ //定义医生集合
+ List doctorList = new ArrayList<>();
+ //组织统计医生归档情况
+ if(!CollectionUtils.isEmpty(deptDoctorList)){
+ if(!CollectionUtils.isEmpty(doctorMap)){
+ for(Map.Entry doctorKey:doctorMap.entrySet()){
+ DoctorStatistics doctorStatistics = new DoctorStatistics();
+ String deptName = "";
+ //设置总住院天数
+ int admissDay = 0;
+ //设置总逾期天数
+ int overDays = 0;
+ //设置总份数
+ int count = 0;
+ //设置总逾期份数
+ int overCount = 0;
+ for (DoctorStatistics info:list) {
+ if (doctorKey.getKey().equals(info.getDoctor())) {
+ deptName = info.getDeptName();
+ //统计总天数
+ admissDay += info.getAdmissDays();
+ //统计逾期天数
+ overDays += info.getOverDays();
+ //统计总份数
+ count++;
+ //统计总逾期份数
+ if(info.getOverDays() > 0){
+ overCount++;
+ }
+ }
+ }
+ //设置科室名称
+ doctorStatistics.setDeptName(deptName);
+ //设置医生名称
+ doctorStatistics.setDoctor(doctorKey.getKey());
+ //设置总住院天数
+ doctorStatistics.setAdmissDays(admissDay);
+ //设置总逾期天数
+ doctorStatistics.setOverDays(overDays);
+ //设置总份数
+ doctorStatistics.setRecordCount(count);
+ //设置总逾期份数
+ doctorStatistics.setRecordOverCount(overCount);
+ doctorList.add(doctorStatistics);
+ }
+ }
+ }
+ //设置科室名
+ deptStatistics.setDeptName(dept.getValue());
+ //设置科室总住院天数
+ deptStatistics.setDeptAdmissDay(deptAdmissDay);
+ //设置科室总逾期天数
+ deptStatistics.setDeptOverDays(deptOverDays);
+ //设置科室总份数
+ deptStatistics.setDeptCount(deptCount);
+ //设置科室总逾期份数
+ deptStatistics.setDeptOverCount(deptOverCount);
+ //设置医生集合
+ deptStatistics.setDoctorData(doctorList);
+ deptList.add(deptStatistics);
+ }
+ }
+ }
+ model.addAttribute("deptList",deptList);
+ return "vCountDir/doctorFileListIframe";
+ }
+}
+
+
diff --git a/src/main/java/com/emr/controller/beHospitaledController.java b/src/main/java/com/emr/controller/beHospitaledController.java
new file mode 100644
index 0000000..1cd79ff
--- /dev/null
+++ b/src/main/java/com/emr/controller/beHospitaledController.java
@@ -0,0 +1,279 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 14:38
+ * Description:出院浏览
+ */
+package com.emr.controller;
+
+import com.emr.dao.ArchiveFlowRoleMapper;
+import com.emr.entity.ArchiveFlowRole;
+import com.emr.entity.Archive_Master;
+import com.emr.entity.Archive_Master_Vo;
+import com.emr.entity.OffsetLimitPage;
+import com.emr.service.Archive_MasterService;
+import com.emr.service.ipml.ArchiveFlowInfoService;
+import com.emr.util.ExportExcelUtil;
+import com.emr.util.Msg;
+import com.emr.util.OracleConnect;
+import com.emr.vo.ArchiveFlowInfoVo;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.cxf.endpoint.Client;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+@Controller
+@RequestMapping("/beHosp")
+public class beHospitaledController {
+ @Autowired
+ private Archive_MasterService archiveMasterService;
+ @Value("${HomepageDictionary}")
+ private String HomepageDictionary;
+ @Value("${HomepageMethod}")
+ private String HomepageMethod;
+ @Autowired
+ private ArchiveFlowRoleMapper flowRoleMapper;
+ @Autowired
+ private ArchiveFlowInfoService flowInfoService;
+ @RequestMapping(value = "/beHosps")
+ public String inHospitals(){
+ return "beHospitaledDir/beHospList";
+ }
+
+ @RequestMapping("getChecker")
+ @ResponseBody
+ public Msg getChecker(){
+ Msg role = archiveMasterService.getRole();
+ return Msg.success().add("checker",role.getCode());
+ }
+ /**
+ * 搜索条件需要查询审核状态的时候异步查询该审核角色拥有的code集合
+ * @return
+ */
+ @RequestMapping("/getCurrentCodes")
+ @ResponseBody
+ public Msg getCurrentCodes(){
+ String result = "";
+ Integer roleIndex = 0;
+ Msg role = new Msg();
+ role = archiveMasterService.getRole();
+ String currentCodes = role.getMsg();
+ if(StringUtils.isNotBlank(currentCodes)){
+ //查询集合
+ //查询审核角色集合,根据有效进行计算状态code
+ List archiveFlowRoles = flowRoleMapper.selectAll();
+ //code转成id
+ String[] codes = currentCodes.split(",");
+ for(String code : codes){
+ if(StringUtils.isNotBlank(code)) {
+ for (ArchiveFlowRole flowRole : archiveFlowRoles) {
+ if (StringUtils.isNotBlank(flowRole.getCode()) && code.equals(flowRole.getCode())) {
+ result += flowRole.getId() + ",";
+ roleIndex = flowRole.getStepIndex();
+ break;
+ }
+ }
+ }
+ }
+ if(result.endsWith(",")){
+ result = result.substring(0,result.length()-1);
+ role.setMsg(result);
+ }
+
+ }
+ role.setCode(roleIndex);
+ return role;
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/beHospList")
+ public OffsetLimitPage beHospList(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit,Integer isSearch) {
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ archiveMasterVo.setStartDateTo(null);
+ archiveMasterVo.setEndDateTo(null);
+ }
+ return archiveMasterService.selectByColumn(archiveMasterVo, offset, limit);
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/exportExcel")
+ public void exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo,Integer isSearch) throws Exception {
+ String tableThNames = "住院号,住院次数,名字,性别,出院科室,出院日期,主管医生,状态";
+ String fieldCns = "inpNo,visitId,name,sex,deptName,dischargeDateTime,doctorInCharge,status";
+ //构造excel的数据
+ if(isSearch == 0){
+ archiveMasterVo.setStartDateTo(null);
+ archiveMasterVo.setEndDateTo(null);
+ }
+ List list = archiveMasterService.selectByColumn(archiveMasterVo);
+ //文件名
+ String fileName = "出院浏览" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls";
+ //ExportExcelUtil
+ ExportExcelUtil exportExcelUtil = new ExportExcelUtil();
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames,fieldCns,list,fileName,response);
+ }
+
+ /**
+ * 出院浏览提交审核
+ * @param master
+ * @return
+ */
+ @ResponseBody
+ @RequestMapping(value = "/updateStateByArchivId")
+ public Msg updateStateByArchivId(HttpServletRequest request,Archive_Master_Vo master) throws Exception{
+ boolean flag = FormTokenFlagUtil.isFlag(request);
+ if (!flag) {
+ return Msg.fail("请不要重复提交!");
+ }
+ return archiveMasterService.updateStateByArchivId(master);
+ }
+
+/*
+ @ResponseBody
+ @RequestMapping(value = "/updateStateByArchivId")
+ public String updateStateByArchivId(Emr_Fault_Detail emrFaultDetail) {
+ String result = "";
+ try{
+ //result = checkSuccessMethod(emrFaultDetail.getArchiveDetailId());
+ // 从session获取用户名
+ Subject currentUser = SecurityUtils.getSubject();
+ Session session = currentUser.getSession();
+ String username = (String) session.getAttribute("userSession");//获取前面登录的用户名
+ SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ if(result.equals("完整")) {
+ //修改病案归档状态
+ Archive_Master archiveMaster = new Archive_Master();
+ archiveMaster.setId(emrFaultDetail.getArchiveDetailId());
+ archiveMaster.setArchivestate(emrFaultDetail.getState());
+ //设置审核时间
+ archiveMaster.setCheckDatetime(format1.format(new Date()));
+ //设置审核人
+ archiveMaster.setCheckDoctor(username);
+ archiveMaster.setLockinfo(result);
+ int bol = archiveMasterService.updateByClo(archiveMaster);
+
+ //添加初审内容
+ if (bol == 1) {
+ String nowTime = format1.format(new Date());
+
+ //参数输入
+ emrFaultDetail.setCreater(username);
+ emrFaultDetail.setCreateTime(nowTime);
+ emrFaultDetail.setState("未召回");
+ bol = emrFaultDetailService.insertSel(emrFaultDetail);
+ }
+ }else{
+ //修改病案归档完整内容Lockinfo
+ Archive_Master archiveMaster = new Archive_Master();
+ archiveMaster.setId(emrFaultDetail.getArchiveDetailId());
+ //设置审核时间
+ archiveMaster.setCheckDatetime(format1.format(new Date()));
+ //设置审核人
+ archiveMaster.setCheckDoctor(username);
+ archiveMaster.setLockinfo(result);
+ archiveMasterService.updateByClo(archiveMaster);
+ }
+ return result;
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return result;
+ }
+*/
+ //校验完整性方法
+ //校验完整性
+ @ResponseBody
+ @RequestMapping(value = "/checkSuccess")
+ private String checkSuccessMethod(String archiveDetailId) throws Exception{
+ String result = "";
+ String endpoint = HomepageDictionary;
+ //String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";
+ String method = HomepageMethod;
+ JAXDynamicClientFactory factory = JAXDynamicClientFactory.newInstance();
+ Client client = factory.createClient(endpoint);
+ Object[] res = null;
+ res = client.invoke(method, archiveDetailId);
+ result = (String) res[0];
+ //更新master表完整性字段
+ if(StringUtils.isNotBlank(result)){
+ //更新表
+ Archive_Master master = new Archive_Master();
+ master.setId(archiveDetailId);
+ master.setLockinfo(result);
+ archiveMasterService.updateByClo(master);
+ }
+ return result;
+ }
+
+ /*@ResponseBody
+ @RequestMapping(value = "/forceWZ")
+ public String forceWZ(Emr_Fault_Detail emrFaultDetail) {
+ //修改病案归档状态
+ Archive_Master archiveMaster = new Archive_Master();
+ archiveMaster.setId(emrFaultDetail.getArchiveDetailId());
+ archiveMaster.setArchivestate("初审");
+ archiveMaster.setLockinfo(emrFaultDetail.getContent());
+ try{
+ int bol = archiveMasterService.updateByClo(archiveMaster);
+ // 从session获取用户名
+ Subject currentUser = SecurityUtils.getSubject();
+ Session session = currentUser.getSession();
+ String username = (String) session.getAttribute("userSession");//获取前面登录的用户名
+
+ SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String nowTime = format1.format(new Date());
+
+ //参数输入
+ emrFaultDetail.setCreater(username);
+ emrFaultDetail.setCreateTime(nowTime);
+ emrFaultDetail.setState("未召回");
+ bol = emrFaultDetailService.insertSel(emrFaultDetail);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return "1";
+ }*/
+
+ //出院初审先查询his是否医生护士全部提交
+ @RequestMapping("getInfoFromHis")
+ @ResponseBody
+ //@DataSource(dataSource = "dataSource1")
+ public int getInfoFromHis(String patientId) throws Exception{
+ String sql = "select fpatno from pacs.v_emrpatient where fpatno = '"+patientId+"'";
+ String str = OracleConnect.select(sql);
+ if(StringUtils.isNoneBlank(str)){
+ return 1;
+ }else{
+ return 0;
+ }
+ }
+
+ /**
+ * 查看流程跳转
+ * @param master
+ * @param model
+ * @return
+ */
+ @RequestMapping("toShowFlowInfo")
+ private String toShowFlowInfo(Archive_Master_Vo master,Model model){
+ model.addAttribute("master",master);
+ //查询流程信息集合
+ List list = flowInfoService.selectFlowInfoByMasterId(master.getId());
+ model.addAttribute("list",list);
+ return "beHospitaledDir/timeLine";
+ }
+}
+
+
diff --git a/src/main/java/com/emr/controller/faultController.java b/src/main/java/com/emr/controller/faultController.java
new file mode 100644
index 0000000..db4972d
--- /dev/null
+++ b/src/main/java/com/emr/controller/faultController.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 14:39
+ * Description:缺陷管理
+ */
+package com.emr.controller;
+
+import com.emr.entity.*;
+import com.emr.service.Emr_Fault_DetailService;
+import com.emr.util.ExportExcelUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+@Controller
+@RequestMapping("fault")
+public class faultController {
+ @Autowired
+ private Emr_Fault_DetailService emrFaultDetailService;
+ @RequestMapping(value = "/faults")
+ public String faults(){
+ return "faultDir/faultList";
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/faultList")
+ public OffsetLimitPage faultList(Integer isSearch, Emr_Fault_Vo emrFaultVo, Integer offset, Integer limit) {
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ emrFaultVo.setStartDate(null);
+ emrFaultVo.setEndDate(null);
+ }
+ return emrFaultDetailService.selectByCol(emrFaultVo,offset, limit);
+ }
+ @ResponseBody
+ @RequestMapping(value = "/exportExcel")
+ public void exportExcel(HttpServletResponse response, Emr_Fault_Vo emrFaultVo,Integer isSearch) throws Exception{
+ String tableThNames = "住院号,住院次数,姓名,出院科室,出院日期,归档状态,评分,回退内容,缺陷选项,缺陷内容,创建时间,创建人";
+ String fieldCns = "inpNo,visitId,name,deptName,dischargeDateTime,archivestate,score,backContent,assortId,content,createTime,creater";
+ //构造excel的数据
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ emrFaultVo.setStartDate(null);
+ emrFaultVo.setEndDate(null);
+ }
+ List list = emrFaultDetailService.selectByCol(emrFaultVo);
+ //文件名
+ String fileName = "缺陷信息数据" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls";
+ //ExportExcelUtil
+ ExportExcelUtil exportExcelUtil = new ExportExcelUtil();
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response);
+ }
+}
+
+
diff --git a/src/main/java/com/emr/controller/faultTypeController.java b/src/main/java/com/emr/controller/faultTypeController.java
new file mode 100644
index 0000000..45f69c7
--- /dev/null
+++ b/src/main/java/com/emr/controller/faultTypeController.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 15:32
+ * Description:缺陷分类
+ */
+package com.emr.controller;
+
+import com.emr.entity.Emr_Fault_Type;
+import com.emr.service.Emr_Fault_TypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+@Controller
+@RequestMapping("/faultType")
+public class faultTypeController {
+ @Autowired
+ private Emr_Fault_TypeService emrFaultTypeService;
+
+ @RequestMapping(value = "/faultTypes")
+ public String faultTypes() {
+ return "faultTypeDir/faultTypeList";
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/faultTypeList")
+ public List faultTypeList(Emr_Fault_Type emrFaultType) {
+ return emrFaultTypeService.selectByCol(emrFaultType);
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/updateByClo")
+ public int updateByClo(Emr_Fault_Type emrFaultType) {
+ int bol=0;
+ //判断id是否存在
+ if(emrFaultType.getId()!=null){
+ //判断是否存在记录
+ if (emrFaultTypeService.selectById(emrFaultType.getId()) != null) {
+ bol = emrFaultTypeService.updateByClo(emrFaultType);
+ }
+ }else{
+ //不存在则添加缺陷类别记录
+ bol= emrFaultTypeService.insertClo(emrFaultType);
+ }
+ return bol;
+ }
+
+
+ @ResponseBody
+ @RequestMapping(value = "/delById")
+ public int delById(Integer id) {
+ int bol = 0;
+ //判断id是否存在
+ if (id!= null) {
+ //判断是否存在记录
+ bol = emrFaultTypeService.delById(id);
+ }
+ return bol;
+ }
+}
+
+
diff --git a/src/main/java/com/emr/controller/inHospitalController.java b/src/main/java/com/emr/controller/inHospitalController.java
new file mode 100644
index 0000000..7971375
--- /dev/null
+++ b/src/main/java/com/emr/controller/inHospitalController.java
@@ -0,0 +1,898 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 14:39
+ * Description:在院浏览
+ */
+package com.emr.controller;
+
+import com.emr.entity.*;
+import com.emr.service.Archive_DetailService;
+import com.emr.service.Archive_MasterService;
+import com.emr.service.Emr_DictionaryService;
+import com.emr.service.Emr_PictureService;
+import com.emr.service.ipml.ZdAssortService;
+import com.emr.util.ExportExcelUtil;
+import com.emr.util.Jpg2PdfUtil;
+import com.emr.util.PrintToPdfUtil;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.subject.Subject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+
+@Controller
+@RequestMapping("/inHosp")
+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;
+
+ @Autowired
+ private Emr_DictionaryService emrDictionaryService;
+
+ @Autowired
+ private Archive_DetailService archiveDetailService;
+
+ @Autowired
+ private Emr_PictureService emrPictureService;
+
+ @Autowired
+ private ZdAssortService zdAssortService;
+
+ @Value("${pictureUrl}")
+ private String pictureUrl;
+
+ @Value("${picSrc}")
+ private String picSrc;
+
+ @RequestMapping(value = "/inHospitals")
+ public String inHospitals() {
+ return "inHospitalDir/inHositalList";
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/inHospitalList")
+ public OffsetLimitPage inHospitalList(Integer isSearch, Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit) {
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ archiveMasterVo.setStartDateTo(null);
+ archiveMasterVo.setEndDateTo(null);
+ }
+ return archiveMasterService.selectByCol(archiveMasterVo, offset, limit);
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/exportExcel")
+ public void exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo,Integer isSearch) throws Exception {
+ String tableThNames = "住院号,住院次数,姓名,性别,入院科室,入院日期,主管医生,状态";
+ String fieldCns = "inpNo,visitId,name,sex,deptAdmissionTo,admissionDateTime,doctorInCharge,archivestate";
+ //构造excel的数据
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ archiveMasterVo.setStartDateTo(null);
+ archiveMasterVo.setEndDateTo(null);
+ }
+ List list = archiveMasterService.selectByCol(archiveMasterVo);
+
+ //文件名
+ String fileName = "在院浏览" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls";
+ //ExportExcelUtil
+ ExportExcelUtil exportExcelUtil = new ExportExcelUtil();
+ response.setContentType("application/ms-excel;charset=gbk");
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response);
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/getDept")
+ public List getDept(Emr_Dictionary emrDictionary){
+ emrDictionary.setEffective(1);
+ emrDictionary.setTypecode("dept_code");
+ return emrDictionaryService.dicByTypeCode(emrDictionary);
+ }
+
+ @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);
+ }
+ return archiveDetailService.selectByClo(archiveDetailVo);
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/getZdAssort")
+ public List getZdAssort(){
+ //分段列表
+ Zd_Assort assort = new Zd_Assort();
+ assort.setPrintFlag("0");
+ return zdAssortService.selectAll(assort);
+ }
+
+ @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);
+ }
+ return archiveDetailService.detailByClo(archiveDetailVo, offset, limit);
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/updateState")
+ public int updateState(HttpServletRequest request,HttpServletResponse response, Archive_Detail archiveDetail) throws Exception{
+ request.setCharacterEncoding("utf-8");
+ response.setCharacterEncoding("utf-8");
+ archiveDetail.setFlag("1");
+ //修改状态分段信息
+ return archiveDetailService.updateCloById(archiveDetail);
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/updateStateAll")
+ public int updateStateAll(HttpServletRequest request,HttpServletResponse response, Archive_Detail archiveDetail) throws Exception {
+ request.setCharacterEncoding("utf-8");
+ response.setCharacterEncoding("utf-8");
+ int bol=0;
+ String idStr=archiveDetail.getId();
+ if(idStr.length()>0){
+ String[] idArr = idStr.split(",");
+ //archiveDetail.setFlag("1");
+ for(int i=0;i 0) {
+ for (int i = 0; i < imgArr.length; i++) {
+ imgList.add(imgArr[i]);
+ }
+ }
+ }
+
+// if(imgList.size()==1){
+// result= masterId.trim() + "/"+ imgList.get(0) +"/"+ imgList.get(0)+".pdf";
+// }else{
+ String pdfPath = realPath+"pdfFiles\\" + "typesPdf\\"+ pdfFileName + ".pdf";
+ String imgPath= realPath + "pdfFiles\\"+masterId.trim()+"\\";
+ //获取废除的pdf文件名列表archive_detail
+ List pdfList=new ArrayList();
+ Archive_Detail archiveDetail = new Archive_Detail();
+ archiveDetail.setFlag("0");
+ archiveDetail.setMasterid(masterId.trim());
+ archiveDetail.setTitle(imgStr);
+ List arList=archiveDetailService.selectByCol(archiveDetail);
+ if(arList!=null) {
+ for (int m = 0; m < arList.size(); m++) {
+ String str = arList.get(m).getPdfPath();
+ if (str.indexOf("..\\static\\img\\pdfFiles\\") != -1) {
+ str = str.split("pdfFiles")[1];
+ str = realPath + "pdfFiles" + str;
+ }
+ // str= str.substring(str.lastIndexOf("\\") + 1);
+ pdfList.add(str);
+ }
+ }
+
+ //PrintToPdfUtil.pdtToPdf(imgPath,pdfPath, imgList,pdfList);
+ PDFUtils.getPdf(pdfPath, pdfList);
+ result = "typesPdf/"+pdfFileName + ".pdf";
+// }
+ } else {
+ result = "a000000.pdf";
+ }
+ return result;
+ }
+*/
+
+ /**
+ * 根据病案号或类别或图片id获取图片列表,并生成PDF并返回pdf文件名
+ * @param response
+ * @param request
+ * @param imgStr
+ * @param masterId
+ * @return
+ * @throws Exception
+ */
+ @ResponseBody
+ @RequestMapping(value = "/getPdf")
+ public String getPdf(HttpServletResponse response, HttpServletRequest request,String imgStr, String masterId) throws Exception {
+ request.setCharacterEncoding("utf-8");
+ response.setCharacterEncoding("utf-8");
+ String result="";
+ // 项目在容器中实际发布运行的根路径
+ String realPath = request.getSession().getServletContext().getRealPath("/");
+ //pdf名称
+ String pdfFile = String.valueOf(System.currentTimeMillis());
+ String pdfPath = pictureUrl + "\\" + pdfFile + ".pdf";
+ //病案号文件夹
+ if(StringUtils.isNotBlank(masterId)){
+ realPath = realPath+ masterId+"\\";
+ //判断文件夹是否存在
+ File fileDic = new File(realPath );
+ if (!fileDic.exists() && !fileDic.isDirectory()) {
+ fileDic.mkdirs();
+ }
+ //病案号/类别/id文件夹(图片路径下的子文件夹名称)
+ //生成pdf(图片路径,pdf生成路径,图片路径文件夹列表)
+ List imgList=new ArrayList();
+ if(StringUtils.isNotBlank(imgStr)) {
+ String[] imgArr = imgStr.split(",");
+ if (imgArr.length > 0) {
+ for (int i = 0; i < imgArr.length; i++) {
+ imgList.add(imgArr[i]);
+ }
+ }
+ }
+ //imgList.add(imgStr.split())imgStr.split(","));
+ PrintToPdfUtil.toPdf(realPath, pdfPath, imgList);
+ result= pdfFile + ".pdf";
+ }else{
+ result="a000000.pdf";
+ }
+ return result;
+ }
+
+ /**
+ * 根据病案号或类别或图片id获取图片列表,并生成PDF并返回pdf文件名
+ *
+ * @param response
+ * @param request
+ * @param idStr *
+ * @return
+ * @throws Exception
+ */
+ @ResponseBody
+ @RequestMapping(value = "/getPdfById/{idStr}")
+ public void getPdfById(HttpServletResponse response, HttpServletRequest request, @PathVariable("idStr") String idStr) throws Exception {
+ Archive_Detail detail=new Archive_Detail();
+ detail.setTitle(idStr);
+ //根据所有id获取PDF列表
+ List arList = archiveDetailService.selectByIdStr(detail);
+ //获取废除的pdf文件名列表archive_detail
+ List pdfList = new ArrayList();
+ //将所有记录的pdf数组里面\static\img\pdfFiles\typesPdf
+ if(arList!=null && arList.size()>0){
+ for(int m=0;m arList = archiveDetailService.selectByIdStr(detail);
+ //获取废除的pdf文件名列表archive_detail
+ List pdfList = new ArrayList();
+ //将所有记录的pdf数组里面\static\img\pdfFiles\typesPdf
+ if(arList!=null && arList.size()>0){
+ for(int m=0;m getPicList(HttpServletResponse response, Emr_Picture emrPicture){
+ return emrPictureService.selectByClo(emrPicture);
+ }
+
+
+
+ /**
+ * 批量图片上传
+ *
+ * @param resp
+ * @param request
+ * @param
+ * @return
+ * @throws IOException
+ */
+ @ResponseBody
+ @RequestMapping(value = "/uploadImgS", method = RequestMethod.POST)
+ public String uploadImgS(HttpServletResponse resp, HttpServletRequest request, @RequestParam MultipartFile[] imgs) throws Exception {
+ resp.setContentType("text/json");
+ resp.setCharacterEncoding("utf-8");
+ request.setCharacterEncoding("utf-8");
+ String firstFile =request.getParameter("fileName");
+ String list = request.getParameter("list");
+ String masterId = request.getParameter("masterID");
+ int t = 0;
+ JSONArray fileObj = JSONArray.fromObject(list);
+ String result = "";
+ if (StringUtils.isNotBlank(masterId)) {
+ // 项目在容器中实际发布运行的根路径
+ // 设置存放图片文件的路径
+ String path2 = "img\\";
+ //病案号
+ if (StringUtils.isNotBlank(masterId)) {
+ path2 += masterId + "\\";
+ }
+ // 从session获取用户名
+ Subject currentUser = SecurityUtils.getSubject();
+ Session session = currentUser.getSession();
+ String username = (String) session.getAttribute("userSession");//获取前面登录的用户名
+ //类循环
+ if (fileObj != null && fileObj.size() > 0) {
+ for (int x = 0; x < fileObj.size(); x++) {
+ JSONObject obj = fileObj.getJSONObject(x);
+ //类别
+ String pathType = "";
+ if (obj.get("selectVal") != null && obj.get("selectVal") != "") {
+ pathType = obj.get("selectVal") + "\\";
+ //判断文件夹是否存在
+ File fileDic = new File(pictureUrl+path2 + pathType);
+ if (!fileDic.exists() && !fileDic.isDirectory()) {
+ fileDic.mkdirs();
+ }
+ SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String nowTime = format1.format(new Date());
+ //创建时间id
+ String idTime = String.valueOf(System.currentTimeMillis());
+ String trueFileName ="";
+ //将其路径及文件名类型以及参数保存图片相关信息到分段详细表
+ Emr_Picture entity = new Emr_Picture();
+ entity.setRelationId(masterId);
+ entity.setAssortId(obj.get("selectVal").toString());
+ entity.setUpdateTime(nowTime);
+ entity.setUpdater(username);
+ int bol = 0;
+ String id= obj.get("id").toString();
+ if (StringUtils.isNotBlank(id) && !"-1".equals(id)) {
+ Emr_Picture picList = emrPictureService.selectByid(id);
+ //判断记录是否已经存在
+ if (picList!=null) {
+ entity.setId(id);
+ //图片是否有改动有改动则删除之前重新上传
+ if(!picList.getAssortId().equals(entity.getAssortId()) || !picList.getRelationId().equals(entity.getRelationId())){
+ if(!picList.getMaxPicture().contains(path2 + pathType)){
+ // 移动图片
+ String startPath= picList.getMaxPicture();
+ startPath = startPath.substring(startPath.indexOf("\\"), startPath.length());
+ String endPath= pictureUrl + path2 + pathType;
+ PrintToPdfUtil.moveTotherFolders(pictureUrl + startPath, endPath);
+ String[] oldName= picList.getMaxPicture().split("\\\\");
+ //新的图片地址
+ entity.setMaxPicture(picSrc + path2 + pathType + oldName[oldName.length - 1]);
+ }
+ //被修改的类别重新生成pdf,查询出pdf记录
+ //根据病案号和类别查询是否存在
+ Archive_Detail detail = new Archive_Detail();
+ detail.setMasterid(masterId);
+ detail.setAssortid(picList.getAssortId());
+ List detailList = archiveDetailService.selectByColm(detail);
+ //判断pdf是否存在,将之前文件删除
+ File file1 = new File(detailList.get(0).getPdfPath());
+ if (file1.exists() && file1.isFile()) {
+ file1.delete();
+ }
+ //读取指定路径下的文件名和目录名
+ List arr = new ArrayList();
+ arr.add(picList.getAssortId());
+ //图片转PDF(病案号文件夹+类别文件夹)
+ PrintToPdfUtil.toPdf(pictureUrl + path2 + picList.getAssortId(), detailList.get(0).getPdfPath(), arr);
+ //判断pdf文件大小等于了则删除,并删除pdf记录
+ File file = new File(detailList.get(0).getPdfPath());
+ if (file.exists() && file.isFile()) {
+ if(file.length()==0){
+ String pdfPathVal = pictureUrl + "\\pdfFiles\\"+ detail.getMasterid() +"\\"+ picList.getAssortId() + "\\" + picList.getAssortId() + ".pdf";
+ detail.setPdfPath(pdfPathVal);
+ archiveDetailService.deleteByClo(detail);
+ file.delete();
+ detail.setPdfPath("");
+ }
+ }
+ //根据id修改记录
+ bol = emrPictureService.updateCloByIdOrFlay(entity);
+ //}
+ if (bol == 1) {
+ result = "批量上传成功!";
+ } else {
+ result = "批量上传失败!";
+ }
+ }
+ } else {
+ //得到图片名
+ String oldName = imgs[t].getOriginalFilename();// 如apple1.jpg
+ String lasName = oldName.substring(oldName.lastIndexOf(".") + 1);
+ if ("GIF".equals(lasName.toUpperCase()) || "JPEG".equals(lasName.toUpperCase()) || "PNG".equals(lasName.toUpperCase()) || "JPG".equals(lasName.toUpperCase())) {
+ // 自定义的文件名称String.valueOf(System.currentTimeMillis())
+ trueFileName = firstFile + idTime + oldName;
+ //上传图片
+ imgs[t].transferTo(new File( pictureUrl+path2 + pathType + trueFileName));
+ entity.setId(idTime);
+ entity.setCreater(username);
+ entity.setCreateTime(nowTime);
+ entity.setEffective(1);
+ entity.setMaxPicture(picSrc + path2 + pathType + trueFileName);
+ //插入记录
+ bol = emrPictureService.insertSel(entity);
+ }
+ t++;
+ }
+ } else {
+ //得到图片名
+ String oldName = imgs[t].getOriginalFilename();// 如apple1.jpg
+ String lasName= null;
+ if (oldName != null) {
+ lasName = oldName.substring(oldName.lastIndexOf(".") + 1);
+ }
+ if (lasName != null && ("GIF".equals(lasName.toUpperCase()) || "JPEG".equals(lasName.toUpperCase()) || "PNG".equals(lasName.toUpperCase()) || "JPG".equals(lasName.toUpperCase()))) {
+ // 自定义的文件名称String.valueOf(System.currentTimeMillis())
+ trueFileName = firstFile + idTime + oldName;
+ //上传图片
+ imgs[t].transferTo(new File(pictureUrl + path2 + pathType + trueFileName));
+ //新的图片地址
+ entity.setMaxPicture(picSrc + path2 + pathType + trueFileName);
+ entity.setId(idTime);
+ entity.setCreater(username);
+ entity.setCreateTime(nowTime);
+ entity.setEffective(1);
+ //插入记录
+ bol = emrPictureService.insertSel(entity);
+ }
+ t = t + 1;
+ }
+ //根据类别生成pdf:pathType(String.valueOf(System.currentTimeMillis()) )
+ String pdfFile = pathType.replace("\\", "") + ".pdf";
+ //根据病案号和类别查询是否存在
+ Archive_Detail detail = new Archive_Detail();
+ detail.setMasterid(masterId);
+ detail.setAssortid(pathType.replace("\\",""));
+ detail.setPdfPath(pictureUrl + "\\pdfFiles\\" + masterId + "\\"+ pathType.replace("\\", "")+"\\" + pathType.replace("\\", ".pdf"));
+ List voList=archiveDetailService.selectByColm(detail);
+ //pdf存在则删除记录和文件
+ if(voList.size()<=0){
+ //不存在添加记录和转换pdf
+ detail.setFlag("0");//显示
+ detail.setSource("后台");
+ detail.setSys("emr_medical_record");
+ detail.setUploaddatetime(nowTime);
+ detail.setPdfPath(pictureUrl + "\\pdfFiles\\" + masterId + "\\" + pathType + pdfFile);
+ int b = archiveDetailService.insertSel(detail);
+ }
+ //判断pdf是否存在,将之前文件删除
+ File file1 = new File(pictureUrl + "\\pdfFiles\\" + masterId + "\\" + pathType + pdfFile);
+ if (file1.exists() && file1.isFile()) {
+ file1.delete();
+ }
+ //读取指定路径下的文件名和目录名
+ List arr = new ArrayList();
+ arr.add(pathType.replace("\\", ""));
+ //图片转PDF(病案号文件夹+类别文件夹)
+ PrintToPdfUtil.toPdf(pictureUrl + path2 + pathType, pictureUrl + "\\pdfFiles\\" + masterId + "\\" + pathType + pdfFile, arr);
+ result = "批量上传成功!";
+ } else {
+ result = "没有找到相对应的文件!";
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ /**
+ * 图片上传
+ * @param resp
+ * @param request
+ * @param file
+
+ * @return
+ * @throws IOException
+ */
+ @ResponseBody
+ @RequestMapping(value = "/uploadImg", method = RequestMethod.POST)
+ public String uploadImg(HttpServletResponse resp, HttpServletRequest request, @RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
+ resp.setContentType("text/json");
+ resp.setCharacterEncoding("utf-8");
+ request.setCharacterEncoding("utf-8");
+ String firstFile = request.getParameter("fileName");
+ String id = request.getParameter("id");
+ String masterId = request.getParameter("masterID");
+ String assortId = request.getParameter("assortID");
+ String result = "";
+ if (!file.isEmpty()) {
+ // logger.info("成功获取照片");
+ String fileName = file.getOriginalFilename();
+ String path = null;
+ String type = null;
+ if (fileName != null) {
+ type = fileName.contains(".") ? fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()) : null;
+ }
+ //logger.info("图片初始名称为:" + fileName + " 类型为:" + type);
+ if (type != null) {
+ if ("GIF".equals(type.toUpperCase()) || "JPEG".equals(type.toUpperCase())|| "PNG".equals(type.toUpperCase()) || "JPG".equals(type.toUpperCase())) {
+ // 项目在容器中实际发布运行的根路径
+ String realPath = request.getSession().getServletContext().getRealPath("/");
+ realPath = realPath.split("target")[0] + pictureUrl;
+
+ //创建时间id
+ String idTime = String.valueOf(System.currentTimeMillis());
+ // 自定义的文件名称String.valueOf(System.currentTimeMillis())
+ String trueFileName = firstFile+ idTime + fileName.split(".")[1];
+ // 设置存放图片文件的路径
+ String path2 = "\\static\\img\\uploads\\" ;
+
+ //病案号
+ if (StringUtils.isNotBlank(masterId)) {
+ path2= path2+masterId + "\\";
+ }
+ //类别
+ if(StringUtils.isNotBlank(assortId)){
+ path2= path2+ assortId+"\\";
+ }
+ //图片id
+ if (id != null && id != "") {
+ path2 = path2 + id + "\\";
+ }else{
+ path2 = path2 + idTime + "\\";
+ }
+ //判断文件夹是否存在
+ File fileDic = new File(realPath +path2);
+ if (!fileDic.exists() && !fileDic.isDirectory()){
+ fileDic.mkdirs();
+ }
+ path= realPath + path2 + trueFileName;
+ SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String nowTime = format1.format(new Date());
+ //将其路径及文件名类型以及参数保存图片相关信息到分段详细表
+ Emr_Picture entity = new Emr_Picture();
+ entity.setRelationId(masterId);
+ entity.setAssortId(assortId);
+ entity.setUpdateTime(nowTime);
+ entity.setMaxPicture(".."+ path2 + trueFileName);
+ // 从session获取用户名
+ Subject currentUser = SecurityUtils.getSubject();
+ Session session = currentUser.getSession();
+ String username = (String) session.getAttribute("userSession");//获取前面登录的用户名
+ entity.setUpdater(username);
+ int bol = 0;
+ if (StringUtils.isNotBlank(id)) {
+ Emr_Picture pic = new Emr_Picture();
+ pic.setTypeFlag(id);
+ List list = emrPictureService.selectByClo(pic);
+ entity.setTypeFlag(id);
+ if(list.size()>0){
+ //将之前文件删除
+ File file1 = new File(realPath + "/static" + list.get(0).getMaxPicture().split("static")[1]);
+ if (file1.exists() && file1.isFile()) {
+ file1.delete();
+ }
+ //根据id修改记录
+ bol = emrPictureService.updateCloByIdOrFlay(entity);
+ }else{
+ entity.setId(idTime);
+ entity.setCreater(username);
+ entity.setCreateTime(nowTime);
+ entity.setEffective(1);
+ //插入记录
+ bol = emrPictureService.insertSel(entity);
+ }
+ } else {
+ entity.setId(idTime);
+ entity.setCreater(username);
+ entity.setCreateTime(nowTime);
+ entity.setEffective(1);
+ //插入记录
+ bol = emrPictureService.insertSel(entity);
+ }
+ if (bol == 1) {
+ //文件成功上传到指定目录下
+ file.transferTo(new File(path));
+ result = entity.getMaxPicture();
+ } else {
+ result = "保存文件信息失败!";
+ }
+ } else {
+ result = "文件类型有误,请重新上传!";
+ }
+ } else {
+ result = "文件类型为空!";
+ }
+ } else {
+ result = "没有找到相对应的文件!";
+ }
+ return result;
+ }
+
+ /**
+ * Pdf上传
+ *
+ * @param resp
+ * @param request
+ * @param file
+ * @return
+ * @throws IOException
+ */
+ @RequestMapping(value = "/uploadPdf", method = RequestMethod.POST)
+ public String uploadPdf(HttpServletResponse resp, HttpServletRequest request, @RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
+ resp.setContentType("text/json");
+ resp.setCharacterEncoding("utf-8");
+ request.setCharacterEncoding("utf-8");
+ String firstFile = request.getParameter("fileName");
+ String id = request.getParameter("id");
+ String masterId = request.getParameter("masterID");
+ String assortId = request.getParameter("assortID");
+ String result = "";
+ if (!file.isEmpty()) {
+ // 成功获取照片原名字
+ String fileName = file.getOriginalFilename();
+ String path = null;
+ String type = null;
+ if (fileName != null) {
+ type = fileName.contains(".") ? fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()) : null;
+ }
+ //logger.info("图片初始名称为:" + fileName + " 类型为:" + type);
+ if (type != null) {
+ if ("PDF".equals(type.toUpperCase())) {
+ // 项目在容器中实际发布运行的根路径
+ String realPath = request.getSession().getServletContext().getRealPath("/");
+ realPath = realPath.split("target")[0] + pictureUrl;
+ // 自定义的文件名称String.valueOf(System.currentTimeMillis())
+ String trueFileName = firstFile + fileName;
+ // 设置存放图片文件的路径
+ path = realPath + "\\static\\img\\uploads\\" + trueFileName;
+
+ SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String nowTime = format1.format(new Date());
+ //将其路径及文件名类型以及参数保存图片相关信息到分段详细表
+ Archive_Detail entity = new Archive_Detail();
+ entity.setMasterid(masterId);
+ entity.setAssortid(assortId);
+ entity.setUploaddatetime(nowTime);
+
+ entity.setPdfPath("../static/img/uploads/" + trueFileName);
+ Archive_Detail detail = new Archive_Detail();
+ int bol = 0;
+ if (StringUtils.isNotBlank(id)) {
+ entity.setId(id);
+ detail = archiveDetailService.selectByid(id);
+ if (detail != null) {
+
+ //根据id修改记录
+ bol = archiveDetailService.updateCloById(entity);
+ }
+ } else {
+ //插入记录
+ bol = archiveDetailService.insertSel(entity);
+ }
+ if (bol == 1) {
+ //将之前文件删除
+ File file1 = new File(realPath + "/static/uploads/" + detail.getPdfPath().split("/")[3]);
+ if (file1.exists() && file1.isFile()) {
+ file1.delete();
+ }
+ file.transferTo(new File(path));
+ //文件成功上传到指定目录下
+ result = entity.toString();
+ } else {
+ result = "保存文件信息失败!";
+ }
+ } else {
+ result = "文件类型有误,请重新上传!";
+ }
+ } else {
+ result = "文件类型为空!";
+ }
+ } else {
+ result = "没有找到相对应的文件!";
+ }
+ return result;
+ }
+}
+
+
diff --git a/src/main/java/com/emr/controller/lastVerifyController.java b/src/main/java/com/emr/controller/lastVerifyController.java
new file mode 100644
index 0000000..07551c3
--- /dev/null
+++ b/src/main/java/com/emr/controller/lastVerifyController.java
@@ -0,0 +1,159 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/8/8 12:46
+ * Description:
+ */
+package com.emr.controller;
+
+import com.emr.entity.*;
+import com.emr.service.Archive_MasterService;
+import com.emr.service.Emr_Fault_DetailService;
+import com.emr.service.Emr_Fault_TypeService;
+import com.emr.util.ExportExcelUtil;
+import com.emr.util.Msg;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+@Controller
+@RequestMapping("lastVerify")
+public class lastVerifyController {
+ @Autowired
+ private Archive_MasterService archiveMasterService;
+
+ @Autowired
+ private Emr_Fault_TypeService emrFaultTypeService;
+
+ @Autowired
+ private Emr_Fault_DetailService emrFaultDetailService;
+
+ @RequestMapping(value = "/lastVerifys")
+ public String faults(Model model){
+ return "lastVerifyDir/lastVerifyList";
+ }
+
+
+ /**
+ * 终审列表
+ * */
+ @ResponseBody
+ @RequestMapping(value = "/lastVerifyList")
+ public OffsetLimitPage lastVerifyList(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit,Integer isSearch) {
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ archiveMasterVo.setStartDateTo(null);
+ archiveMasterVo.setEndDateTo(null);
+ }
+ OffsetLimitPage result = archiveMasterService.selectByLast(archiveMasterVo, offset, limit);
+ return result;
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/exportExcel")
+ public void exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo,Integer isSearch) throws Exception {
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ archiveMasterVo.setStartDateTo(null);
+ archiveMasterVo.setEndDateTo(null);
+ }
+ String tableThNames = "住院号,住院次数,名字,性别,出院科室,出院日期,主管医生,状态";
+ String fieldCns = "inpNo,visitId,name,sex,deptName,dischargeDateTime,doctorInCharge,status";
+ //构造excel的数据
+ List list = archiveMasterService.selectLastVerifyList(archiveMasterVo);
+
+ //文件名
+ String fileName = "病案室终审" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls";
+ //ExportExcelUtil
+ ExportExcelUtil exportExcelUtil = new ExportExcelUtil();
+ response.setContentType("application/ms-excel;charset=gbk");
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response);
+ }
+
+
+ @ResponseBody
+ @RequestMapping(value = "/getFaultType")
+ public List getFaultType(Emr_Fault_Type emrFaultType) {
+ return emrFaultTypeService.selectByCol(emrFaultType);
+ }
+
+
+ @ResponseBody
+ @RequestMapping(value = "/getDetailByArchId")
+ public Emr_Fault_Detail getDetailByArchId(Emr_Fault_Detail emrFaultDetail) {
+ return emrFaultDetailService.selectByArchiveDetailId(emrFaultDetail);
+ }
+
+ /**
+ * 退回提交方法
+ * @param request
+ * @param emrFaultDetail
+ * @return
+ * @throws Exception
+ */
+ @ResponseBody
+ @RequestMapping(value = "/updateDetailByArchivId")
+ public Msg updateDetailByArchivId(HttpServletRequest request,Emr_Fault_Detail_Vo emrFaultDetail) throws Exception{
+ boolean flag = FormTokenFlagUtil.isFlag(request);
+ if (!flag) {
+ return Msg.fail("请不要重复提交!");
+ }
+ archiveMasterService.updateReturn(emrFaultDetail);
+ return Msg.success();
+ }
+
+/*
+ @ResponseBody
+ @RequestMapping(value = "/updateDetailByArchivId")
+ public int updateDetailByArchivId(HttpServletRequest request, HttpServletResponse response, Emr_Fault_Detail emrFaultDetail) {
+
+ //修改病案归档状态:复审退回
+ Archive_Master archiveMaster = new Archive_Master();
+ archiveMaster.setId(emrFaultDetail.getArchiveDetailId());
+ archiveMaster.setArchivestate("复审退回");
+ int bol = archiveMasterService.updateByClo(archiveMaster);
+
+ //修改复审内容
+ if (bol == 1) {
+ // 从session获取用户名
+ Subject currentUser = SecurityUtils.getSubject();
+ Session session = currentUser.getSession();
+ String username = (String) session.getAttribute("userSession");//获取前面登录的用户名
+
+ //参数输入
+ SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String nowTime = format1.format(new Date());
+ emrFaultDetail.setUpdater(username);
+ emrFaultDetail.setUpdateTime(nowTime);
+ //修改复审内容
+ //1、查询出该病案的创建时间最近的缺陷记录
+ Emr_Fault_Detail entity= emrFaultDetailService.selectByArchiveDetailId(emrFaultDetail);
+ emrFaultDetail.setId(entity.getId());
+ //2、修改缺陷记录
+ bol = emrFaultDetailService.updateCloByPrimaryKey(emrFaultDetail);
+ }
+ return bol;
+ }
+*/
+ //终审
+ @ResponseBody
+ @RequestMapping(value = "/updateStateByArchivId")
+ public Msg updateStateByArchivId(HttpServletRequest request,Archive_Master_Vo master) throws Exception{
+ boolean flag = FormTokenFlagUtil.isFlag(request);
+ if (!flag) {
+ return Msg.fail("请不要重复提交!");
+ }
+ archiveMasterService.updateFiled(master);
+ return Msg.success();
+ }
+}
+
+
diff --git a/src/main/java/com/emr/controller/medicalRecallDateController.java b/src/main/java/com/emr/controller/medicalRecallDateController.java
new file mode 100644
index 0000000..970039d
--- /dev/null
+++ b/src/main/java/com/emr/controller/medicalRecallDateController.java
@@ -0,0 +1,83 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 14:39
+ * Description:病案召回日期日志
+ */
+package com.emr.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.emr.entity.OffsetLimitPage;
+import com.emr.service.ipml.ArchiveCallbackInfoService;
+import com.emr.util.ExportExcelUtil;
+import com.emr.vo.ArchiveCallbackInfoVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+@Controller
+@RequestMapping("/recallDate")
+public class medicalRecallDateController {
+ @Autowired
+ private ArchiveCallbackInfoService callbackInfoService;
+ @RequestMapping(value = "/recallDates")
+ public String recallDates() {
+ return "medicalRecallDateDir/recallDateList";
+ }
+
+
+ /**
+ * 召回日志列表
+ * @param callbackInfo
+ * @param offset
+ * @param limit
+ * @return
+ */
+ @ResponseBody
+ @RequestMapping(value = "/recallDateList")
+ public OffsetLimitPage recallDateList(ArchiveCallbackInfoVo callbackInfo, Integer offset, Integer limit) {
+ return callbackInfoService.selectAll(callbackInfo,offset,limit);
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/exportExcel")
+ public void exportExcel(HttpServletResponse response,ArchiveCallbackInfoVo callbackInfo) throws Exception {
+ String tableThNames = "住院号,住院次数,姓名,出院科室,召回人,召回时间,召回原因,状态,归档状态";
+ String fieldCns = "inpNo,visitId,name,deptName,callbackUserName,startDate,callbackReason,status,archivestate";
+ List list = callbackInfoService.selectCallBackInfo(callbackInfo);
+ SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ if(!CollectionUtils.isEmpty(list)){
+ for(ArchiveCallbackInfoVo callbackInfoVo : list){
+ Date callbackTime = callbackInfoVo.getCallbackTime();
+ if(null != callbackTime){
+ String date = fmt.format(callbackTime);
+ callbackInfoVo.setStartDate(date);
+ }
+ }
+ }
+ //文件名
+ String fileName = "召回记录" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls";
+ //ExportExcelUtil
+ ExportExcelUtil exportExcelUtil = new ExportExcelUtil();
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames,fieldCns,list,fileName,response);
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/lastBylogTitle")
+ public String lastBylogTitle(String id) {
+ ArchiveCallbackInfoVo vo = new ArchiveCallbackInfoVo();
+ vo.setMasterId(id);
+ List callbackInfoVos = callbackInfoService.selectCallBackInfo(vo);
+ return JSON.toJSONString(callbackInfoVos.get(0));
+ }
+}
+
+
diff --git a/src/main/java/com/emr/controller/unfileMedicalController.java b/src/main/java/com/emr/controller/unfileMedicalController.java
new file mode 100644
index 0000000..62a2c61
--- /dev/null
+++ b/src/main/java/com/emr/controller/unfileMedicalController.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 14:40
+ * Description:未归档病历列表
+ */
+package com.emr.controller;
+
+import com.emr.entity.Archive_Master_Vo;
+import com.emr.entity.OffsetLimitPage;
+import com.emr.service.Archive_MasterService;
+import com.emr.util.ExportExcelUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+@Controller
+@RequestMapping("/unfile")
+public class unfileMedicalController {
+ @Autowired
+ private Archive_MasterService archiveMasterService;
+ @RequestMapping(value = "/unfileMedicals")
+ public String faults() {
+ return "unfileMedicalDir/unfileMedicalList";
+ }
+
+ @ResponseBody
+ @RequestMapping(value = "/unfileList")
+ public OffsetLimitPage unfileList(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit,Integer isSearch) {
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ archiveMasterVo.setStartDateTo(null);
+ archiveMasterVo.setEndDateTo(null);
+ }
+ return archiveMasterService.selectByUnfile(archiveMasterVo, offset, limit);
+ }
+
+
+ @ResponseBody
+ @RequestMapping(value = "/exportExcel")
+ public void exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo,Integer isSearch) throws Exception {
+ String tableThNames = "住院号,住院次数,姓名,性别,入院科室,入院日期,出院科室,出院日期,主管医生,状态";
+ String fieldCns = "inpNo,visitId,name,sex,deptAdmissionTo,admissionDateTime,deptName,dischargeDateTime,doctorInCharge,status";
+ //构造excel的数据
+ //判断是否是初始化查询,是初始化查询把开始结束时间置空
+ if(isSearch == 0){
+ archiveMasterVo.setStartDateTo(null);
+ archiveMasterVo.setEndDateTo(null);
+ }
+ List list = archiveMasterService.selectByUnfile(archiveMasterVo);
+ //文件名
+ String fileName = "未归档病历列表" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls";
+ //ExportExcelUtil
+ ExportExcelUtil exportExcelUtil = new ExportExcelUtil();
+ //导出excel的操作
+ exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response);
+ }
+}
+
+
diff --git a/src/main/java/com/emr/dao/ArchiveCallbackInfoMapper.java b/src/main/java/com/emr/dao/ArchiveCallbackInfoMapper.java
new file mode 100644
index 0000000..2bbf7f3
--- /dev/null
+++ b/src/main/java/com/emr/dao/ArchiveCallbackInfoMapper.java
@@ -0,0 +1,20 @@
+package com.emr.dao;
+
+import com.emr.entity.ArchiveCallbackInfo;
+import com.emr.vo.ArchiveCallbackInfoVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface ArchiveCallbackInfoMapper {
+ int insert(ArchiveCallbackInfo record);
+
+ int insertSelective(ArchiveCallbackInfo record);
+
+ List selectAll(ArchiveCallbackInfoVo callbackInfoVo);
+
+ /**
+ * 根据masterId查询最新一次召回记录
+ * */
+ ArchiveCallbackInfoVo lastBylogTitle(@Param("masterId")String masterId);
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/ArchiveFlowInfoMapper.java b/src/main/java/com/emr/dao/ArchiveFlowInfoMapper.java
new file mode 100644
index 0000000..09c740a
--- /dev/null
+++ b/src/main/java/com/emr/dao/ArchiveFlowInfoMapper.java
@@ -0,0 +1,26 @@
+package com.emr.dao;
+
+import com.emr.entity.ArchiveFlowInfo;
+import com.emr.vo.ArchiveFlowInfoVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface ArchiveFlowInfoMapper {
+ int deleteByPrimaryKey(Integer id);
+
+ int insert(ArchiveFlowInfo record);
+
+ int insertSelective(ArchiveFlowInfo record);
+
+ ArchiveFlowInfo selectByPrimaryKey(Integer id);
+
+ int updateByPrimaryKeySelective(ArchiveFlowInfo record);
+
+ int updateByPrimaryKey(ArchiveFlowInfo record);
+
+ List selectPreInfo(@Param("masterId")String masterId,@Param("targetStep")String targetStep);
+
+ List selectFlowInfoByMasterId(@Param("masterId")String masterId);
+ List selectFlowInfoList(@Param("record")ArchiveFlowInfo record,@Param("sql")String sql);
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/ArchiveFlowRoleMapper.java b/src/main/java/com/emr/dao/ArchiveFlowRoleMapper.java
new file mode 100644
index 0000000..b2b9f75
--- /dev/null
+++ b/src/main/java/com/emr/dao/ArchiveFlowRoleMapper.java
@@ -0,0 +1,21 @@
+package com.emr.dao;
+
+import com.emr.entity.ArchiveFlowRole;
+
+import java.util.List;
+
+public interface ArchiveFlowRoleMapper {
+ int deleteByPrimaryKey(Integer id);
+
+ int insert(ArchiveFlowRole record);
+
+ int insertSelective(ArchiveFlowRole record);
+
+ ArchiveFlowRole selectByPrimaryKey(Integer id);
+
+ int updateByPrimaryKeySelective(ArchiveFlowRole record);
+
+ int updateByPrimaryKey(ArchiveFlowRole record);
+
+ List selectAll();
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/Archive_DetailMapper.java b/src/main/java/com/emr/dao/Archive_DetailMapper.java
new file mode 100644
index 0000000..f3868d1
--- /dev/null
+++ b/src/main/java/com/emr/dao/Archive_DetailMapper.java
@@ -0,0 +1,37 @@
+package com.emr.dao;
+
+import com.emr.entity.Archive_Detail;
+import com.emr.entity.Archive_Detail_Vo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface Archive_DetailMapper {
+ int deleteByPrimaryKey(String id);
+
+ int deleteByClo(Archive_Detail record);
+
+ int insert(Archive_Detail record);
+
+ int insertSel(Archive_Detail record);
+
+ Archive_Detail selectByid(String id);
+
+ int updateCloById(Archive_Detail record);
+
+ int updateByPrimaryKey(Archive_Detail record);
+
+ List selectByColm(Archive_Detail record);
+
+ List selectByCol(Archive_Detail record);
+
+ List selectByClo(Archive_Detail_Vo record);
+
+ List detailByClo(Archive_Detail_Vo record);
+
+ List selectByIdStr(Archive_Detail record);
+
+ List selectTypeTreeByPatientIdAndAssortIds(@Param("patientId")String patientId,@Param("assortIds")String assortIds);
+
+ List selectPdfPathByIds(@Param("masterId")String masterId,@Param("detailIds")String detailIds);
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/Archive_MasterMapper.java b/src/main/java/com/emr/dao/Archive_MasterMapper.java
new file mode 100644
index 0000000..a9a0347
--- /dev/null
+++ b/src/main/java/com/emr/dao/Archive_MasterMapper.java
@@ -0,0 +1,42 @@
+package com.emr.dao;
+
+import com.emr.entity.Archive_Master;
+import com.emr.entity.Archive_Master_Vo;
+import com.emr.vo.DoctorStatistics;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface Archive_MasterMapper {
+ int deleteByPrimaryKey(String id);
+
+ int insert(Archive_Master record);
+
+ int insertSelective(Archive_Master record);
+
+ Archive_Master selectByPrimaryKey(String id);
+
+ List selectByCol(Archive_Master_Vo record);
+
+ List selectByColumn(Archive_Master_Vo record);
+
+ List selectByLast(Archive_Master_Vo record);
+
+ List selectByUnfile(Archive_Master_Vo record);
+
+ int updateByClo(Archive_Master record);
+
+ int updateById(Archive_Master record);
+
+ List getDoctorFileInfo(@Param("deptCode")String deptCode,@Param("doctor")String doctor,@Param("startTime")String startTime,@Param("endTime")String endTime);
+
+ /**
+ * 查询病案是否存在
+ * */
+ List selectByObject(Archive_Master master);
+
+ /**
+ * 查询已归档记录
+ * */
+ List selectFiled(Archive_Master_Vo master);
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/EmrHolidaySetMapper.java b/src/main/java/com/emr/dao/EmrHolidaySetMapper.java
new file mode 100644
index 0000000..506fb5b
--- /dev/null
+++ b/src/main/java/com/emr/dao/EmrHolidaySetMapper.java
@@ -0,0 +1,34 @@
+package com.emr.dao;
+
+import com.emr.entity.EmrHolidaySet;
+import com.emr.entity.EmrHolidaySetVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+public interface EmrHolidaySetMapper {
+ int deleteByPrimaryKey(Integer id);
+
+ int insert(EmrHolidaySet record);
+
+ int insertSelective(EmrHolidaySet record);
+
+ EmrHolidaySet selectByPrimaryKey(Integer id);
+
+ int updateByPrimaryKeySelective(EmrHolidaySet record);
+
+ int updateByPrimaryKey(EmrHolidaySet record);
+
+ List selectAllByDates(@Param("startTime")String startTime, @Param("endTime")String endTime);
+
+ int SampleInsert(@Param("list")List list);
+
+ int SampleUpdate(@Param("list")List list);
+
+ List selectByColumn(EmrHolidaySetVo record);
+
+ int selectColByTableName(@Param("tableName")String tableName);
+
+ int selectHolidayByDate(@Param("startDate") Date startDate);
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/EmrOvertimeSetMapper.java b/src/main/java/com/emr/dao/EmrOvertimeSetMapper.java
new file mode 100644
index 0000000..c392d97
--- /dev/null
+++ b/src/main/java/com/emr/dao/EmrOvertimeSetMapper.java
@@ -0,0 +1,17 @@
+package com.emr.dao;
+
+import com.emr.entity.EmrOvertimeSet;
+
+public interface EmrOvertimeSetMapper {
+ int deleteByPrimaryKey(Integer id);
+
+ int insert(EmrOvertimeSet record);
+
+ int insertSelective(EmrOvertimeSet record);
+
+ EmrOvertimeSet selectByPrimaryKey(Integer id);
+
+ int updateByPrimaryKeySelective(EmrOvertimeSet record);
+
+ int updateByPrimaryKey(EmrOvertimeSet record);
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/EmrPatientMapper.java b/src/main/java/com/emr/dao/EmrPatientMapper.java
new file mode 100644
index 0000000..b72df68
--- /dev/null
+++ b/src/main/java/com/emr/dao/EmrPatientMapper.java
@@ -0,0 +1,7 @@
+package com.emr.dao;
+
+import org.apache.ibatis.annotations.Param;
+
+public interface EmrPatientMapper {
+ int selectExistByPatient(@Param("fpatno") String fpatno);
+}
diff --git a/src/main/java/com/emr/dao/Emr_Archive_DetailMapper.java b/src/main/java/com/emr/dao/Emr_Archive_DetailMapper.java
new file mode 100644
index 0000000..a0e5149
--- /dev/null
+++ b/src/main/java/com/emr/dao/Emr_Archive_DetailMapper.java
@@ -0,0 +1,17 @@
+package com.emr.dao;
+
+import com.emr.entity.Emr_Archive_Detail;
+
+public interface Emr_Archive_DetailMapper {
+ int deleteByPrimaryKey(Integer id);
+
+ int insert(Emr_Archive_Detail record);
+
+ int insertSelective(Emr_Archive_Detail record);
+
+ Emr_Archive_Detail selectByPrimaryKey(Integer id);
+
+ int updateByPrimaryKeySelective(Emr_Archive_Detail record);
+
+ int updateByPrimaryKey(Emr_Archive_Detail record);
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/Emr_DictionaryMapper.java b/src/main/java/com/emr/dao/Emr_DictionaryMapper.java
new file mode 100644
index 0000000..df515a2
--- /dev/null
+++ b/src/main/java/com/emr/dao/Emr_DictionaryMapper.java
@@ -0,0 +1,42 @@
+package com.emr.dao;
+
+import com.emr.entity.Emr_Dictionary;
+
+import java.util.List;
+
+public interface Emr_DictionaryMapper {
+ /**
+ * 根据类型代码查找字典列表
+ * @param emrDictionary
+ * @return
+ */
+ List dicByTypeCode(Emr_Dictionary emrDictionary);
+
+ /**
+ * 根据字段查找字典列表
+ * @param emrDictionary
+ * @return
+ */
+ List dicByClo(Emr_Dictionary emrDictionary);
+
+ /**
+ * 根据字段查找记录
+ * @param emrDictionary
+ * @return
+ */
+ int insertSel(Emr_Dictionary emrDictionary);
+
+ /**
+ * 根据id删除记录
+ * @param id
+ * @return
+ */
+ int delById(Integer id);
+
+ /**
+ * 根据id修改记录
+ * @param emrDictionary
+ * @return
+ */
+ int updateCloById(Emr_Dictionary emrDictionary);
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/Emr_Fault_DetailMapper.java b/src/main/java/com/emr/dao/Emr_Fault_DetailMapper.java
new file mode 100644
index 0000000..88288ed
--- /dev/null
+++ b/src/main/java/com/emr/dao/Emr_Fault_DetailMapper.java
@@ -0,0 +1,24 @@
+package com.emr.dao;
+
+import com.emr.entity.Emr_Fault_Detail;
+import com.emr.entity.Emr_Fault_Vo;
+
+import java.util.List;
+
+public interface Emr_Fault_DetailMapper {
+ int deleteByPrimaryKey(Integer id);
+
+ int insert(Emr_Fault_Detail record);
+
+ int insertSel(Emr_Fault_Detail record);
+
+ Emr_Fault_Detail selectByPrimaryKey(Integer id);
+
+ int updateCloByPrimaryKey(Emr_Fault_Detail record);
+
+ int updateByPrimaryKey(Emr_Fault_Detail record);
+
+ List selectByCol(Emr_Fault_Vo record);
+
+ Emr_Fault_Detail selectByArchiveDetailId(Emr_Fault_Detail record);
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/Emr_Fault_TypeMapper.java b/src/main/java/com/emr/dao/Emr_Fault_TypeMapper.java
new file mode 100644
index 0000000..920bb2f
--- /dev/null
+++ b/src/main/java/com/emr/dao/Emr_Fault_TypeMapper.java
@@ -0,0 +1,22 @@
+package com.emr.dao;
+
+import com.emr.entity.Emr_Fault_Type;
+
+import java.util.List;
+
+public interface Emr_Fault_TypeMapper {
+ int delById(Integer id);
+
+ int insert(Emr_Fault_Type record);
+
+ int insertClo(Emr_Fault_Type record);
+
+ List selectByCol(Emr_Fault_Type record);
+
+ int updateByClo(Emr_Fault_Type record);
+
+ int updateByPrimaryKey(Emr_Fault_Type record);
+
+ Emr_Fault_Type selectById(Integer id);
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/Emr_LogMapper.java b/src/main/java/com/emr/dao/Emr_LogMapper.java
new file mode 100644
index 0000000..ff30091
--- /dev/null
+++ b/src/main/java/com/emr/dao/Emr_LogMapper.java
@@ -0,0 +1,22 @@
+package com.emr.dao;
+
+import com.emr.entity.Emr_Log;
+import com.emr.entity.Emr_Log_Vo;
+
+import java.util.List;
+
+public interface Emr_LogMapper {
+ int deleteByPrimaryKey(Integer logId);
+
+ int insert(Emr_Log record);
+
+ int insertSelective(Emr_Log record);
+
+ Emr_Log lastBylogTitle(String logTitle);
+
+ int updateByPrimaryKeySelective(Emr_Log record);
+
+ int updateByPrimaryKey(Emr_Log record);
+
+ List selectByCol(Emr_Log_Vo record);
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/Emr_PictureMapper.java b/src/main/java/com/emr/dao/Emr_PictureMapper.java
new file mode 100644
index 0000000..584921d
--- /dev/null
+++ b/src/main/java/com/emr/dao/Emr_PictureMapper.java
@@ -0,0 +1,21 @@
+package com.emr.dao;
+
+import com.emr.entity.Emr_Picture;
+
+import java.util.List;
+
+public interface Emr_PictureMapper {
+ int deleteById(String id);
+
+ int insert(Emr_Picture record);
+
+ int insertSel(Emr_Picture record);
+
+ Emr_Picture selectByid(String id);
+
+ int updateCloByIdOrFlay(Emr_Picture record);
+
+ int updateByPrimaryKey(Emr_Picture record);
+
+ List selectByClo(Emr_Picture record);
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/StatisticsMapper.java b/src/main/java/com/emr/dao/StatisticsMapper.java
new file mode 100644
index 0000000..df612c6
--- /dev/null
+++ b/src/main/java/com/emr/dao/StatisticsMapper.java
@@ -0,0 +1,18 @@
+package com.emr.dao;
+
+import com.emr.entity.Archive_Master_Vo;
+import com.emr.vo.FinalAndFirstStatistics;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface StatisticsMapper {
+ //终审按天统计
+ List finalStatistics(@Param("startDate")String startDate,@Param("endDate")String endDate,@Param("sql")String sql);
+
+ //初审按天统计
+ List firstStatistics(@Param("startDate")String startDate,@Param("endDate")String endDate,@Param("sql")String sql);
+
+ //审核明细
+ List statistics(@Param("disStartDate")String disStartDate,@Param("disEndDate")String disEndDate,@Param("record")Archive_Master_Vo record,@Param("flag")Integer flag,@Param("sql")String sql);
+}
diff --git a/src/main/java/com/emr/dao/TPrintinfoMapper.java b/src/main/java/com/emr/dao/TPrintinfoMapper.java
new file mode 100644
index 0000000..f2b560e
--- /dev/null
+++ b/src/main/java/com/emr/dao/TPrintinfoMapper.java
@@ -0,0 +1,16 @@
+package com.emr.dao;
+
+import com.emr.entity.TPrintinfo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface TPrintinfoMapper {
+ int insert(TPrintinfo record);
+
+ int insertSelective(TPrintinfo record);
+
+ List selectIsPrintByPatienId(@Param("patientId")String patientId);
+
+ TPrintinfo selectLockByPatienId(@Param("patientId")String patientId);
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/TUuInfoMapper.java b/src/main/java/com/emr/dao/TUuInfoMapper.java
new file mode 100644
index 0000000..5f978d9
--- /dev/null
+++ b/src/main/java/com/emr/dao/TUuInfoMapper.java
@@ -0,0 +1,18 @@
+package com.emr.dao;
+
+import com.emr.entity.TUuInfo;
+import com.emr.vo.TUuInfoVo;
+import com.emr.vo.TUuPrintSearch;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface TUuInfoMapper {
+ int insert(TUuInfo record);
+
+ int insertSelective(TUuInfo record);
+
+ List getScanCount(TUuPrintSearch record);
+
+ List getScanInfo(TUuPrintSearch record);
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/TUuPrintMapper.java b/src/main/java/com/emr/dao/TUuPrintMapper.java
new file mode 100644
index 0000000..d7163d4
--- /dev/null
+++ b/src/main/java/com/emr/dao/TUuPrintMapper.java
@@ -0,0 +1,18 @@
+package com.emr.dao;
+
+import com.emr.entity.TUuPrint;
+import com.emr.vo.TUuPrintSearch;
+import com.emr.vo.TUuPrintVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface TUuPrintMapper {
+ int insert(TUuPrint record);
+
+ int insertSelective(TUuPrint record);
+
+ List getPrintCount(TUuPrintSearch record);
+
+ List getPrintInfo(TUuPrintSearch record);
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/dao/V_CountMapper.java b/src/main/java/com/emr/dao/V_CountMapper.java
new file mode 100644
index 0000000..d4b7a11
--- /dev/null
+++ b/src/main/java/com/emr/dao/V_CountMapper.java
@@ -0,0 +1,19 @@
+package com.emr.dao;
+
+import com.emr.entity.V_Count;
+import com.emr.vo.V_CountVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface V_CountMapper {
+ List selectByCol(V_CountVo record);
+
+// /**
+// * 根据条件查找统计列表分页
+// *
+// * @param record
+// * @return
+// */
+// List selectPageByClo(V_Count record);
+}
diff --git a/src/main/java/com/emr/dao/Zd_AssortMapper.java b/src/main/java/com/emr/dao/Zd_AssortMapper.java
new file mode 100644
index 0000000..ecf4a23
--- /dev/null
+++ b/src/main/java/com/emr/dao/Zd_AssortMapper.java
@@ -0,0 +1,13 @@
+package com.emr.dao;
+
+import com.emr.entity.Zd_Assort;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface Zd_AssortMapper {
+ /**
+ * 全查
+ * */
+ List selectAll(@Param("record") Zd_Assort record);
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/ArchiveCallbackInfo.java b/src/main/java/com/emr/entity/ArchiveCallbackInfo.java
new file mode 100644
index 0000000..494963c
--- /dev/null
+++ b/src/main/java/com/emr/entity/ArchiveCallbackInfo.java
@@ -0,0 +1,78 @@
+package com.emr.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class ArchiveCallbackInfo implements Serializable {
+ private String masterId;
+
+ private String callbackUserName;
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+ private Date callbackTime;
+
+ private String callbackReason;
+
+ private String ip;
+
+ private static final long serialVersionUID = 1L;
+
+ public String getIp() {
+ return ip;
+ }
+
+ public void setIp(String ip) {
+ this.ip = ip;
+ }
+
+ public static long getSerialVersionUID() {
+ return serialVersionUID;
+ }
+
+ public String getMasterId() {
+ return masterId;
+ }
+
+ public void setMasterId(String masterId) {
+ this.masterId = masterId == null ? null : masterId.trim();
+ }
+
+ public String getCallbackUserName() {
+ return callbackUserName;
+ }
+
+ public void setCallbackUserName(String callbackUserName) {
+ this.callbackUserName = callbackUserName == null ? null : callbackUserName.trim();
+ }
+
+ public Date getCallbackTime() {
+ return callbackTime;
+ }
+
+ public void setCallbackTime(Date callbackTime) {
+ this.callbackTime = callbackTime;
+ }
+
+ public String getCallbackReason() {
+ return callbackReason;
+ }
+
+ public void setCallbackReason(String callbackReason) {
+ this.callbackReason = callbackReason == null ? null : callbackReason.trim();
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getClass().getSimpleName());
+ sb.append(" [");
+ sb.append("Hash = ").append(hashCode());
+ sb.append(", masterId=").append(masterId);
+ sb.append(", callbackUserName=").append(callbackUserName);
+ sb.append(", callbackTime=").append(callbackTime);
+ sb.append(", callbackReason=").append(callbackReason);
+ sb.append("]");
+ return sb.toString();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/ArchiveFlowInfo.java b/src/main/java/com/emr/entity/ArchiveFlowInfo.java
new file mode 100644
index 0000000..44ee185
--- /dev/null
+++ b/src/main/java/com/emr/entity/ArchiveFlowInfo.java
@@ -0,0 +1,172 @@
+package com.emr.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class ArchiveFlowInfo implements Serializable {
+ private Integer id;
+
+ private String masterId;
+
+ private Integer stepIndex;
+
+ private Integer startStepId;
+
+ private String startStep;
+
+ private String sumbitName;
+
+ private Integer targetStepId;
+
+ private String targetStep;
+
+ private Short operRole;
+
+ private Long useSeconds;
+
+ private String remark;
+
+ private String userName;
+
+ private Date sumbitTime;
+
+ private Date createtime;
+
+ private static final long serialVersionUID = 1L;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getMasterId() {
+ return masterId;
+ }
+
+ public void setMasterId(String masterId) {
+ this.masterId = masterId == null ? null : masterId.trim();
+ }
+
+ public Integer getStepIndex() {
+ return stepIndex;
+ }
+
+ public void setStepIndex(Integer stepIndex) {
+ this.stepIndex = stepIndex;
+ }
+
+ public Integer getStartStepId() {
+ return startStepId;
+ }
+
+ public void setStartStepId(Integer startStepId) {
+ this.startStepId = startStepId;
+ }
+
+ public String getStartStep() {
+ return startStep;
+ }
+
+ public void setStartStep(String startStep) {
+ this.startStep = startStep == null ? null : startStep.trim();
+ }
+
+ public String getSumbitName() {
+ return sumbitName;
+ }
+
+ public void setSumbitName(String sumbitName) {
+ this.sumbitName = sumbitName == null ? null : sumbitName.trim();
+ }
+
+ public Integer getTargetStepId() {
+ return targetStepId;
+ }
+
+ public void setTargetStepId(Integer targetStepId) {
+ this.targetStepId = targetStepId;
+ }
+
+ public String getTargetStep() {
+ return targetStep;
+ }
+
+ public void setTargetStep(String targetStep) {
+ this.targetStep = targetStep == null ? null : targetStep.trim();
+ }
+
+ public Short getOperRole() {
+ return operRole;
+ }
+
+ public void setOperRole(Short operRole) {
+ this.operRole = operRole;
+ }
+
+ public Long getUseSeconds() {
+ return useSeconds;
+ }
+
+ public void setUseSeconds(Long useSeconds) {
+ this.useSeconds = useSeconds;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName == null ? null : userName.trim();
+ }
+
+ public Date getSumbitTime() {
+ return sumbitTime;
+ }
+
+ public void setSumbitTime(Date sumbitTime) {
+ this.sumbitTime = sumbitTime;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getClass().getSimpleName());
+ sb.append(" [");
+ sb.append("Hash = ").append(hashCode());
+ sb.append(", id=").append(id);
+ sb.append(", masterId=").append(masterId);
+ sb.append(", stepIndex=").append(stepIndex);
+ sb.append(", startStepId=").append(startStepId);
+ sb.append(", startStep=").append(startStep);
+ sb.append(", sumbitName=").append(sumbitName);
+ sb.append(", targetStepId=").append(targetStepId);
+ sb.append(", targetStep=").append(targetStep);
+ sb.append(", operRole=").append(operRole);
+ sb.append(", useSeconds=").append(useSeconds);
+ sb.append(", remark=").append(remark);
+ sb.append(", userName=").append(userName);
+ sb.append(", sumbitTime=").append(sumbitTime);
+ sb.append(", createtime=").append(createtime);
+ sb.append("]");
+ return sb.toString();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/ArchiveFlowRole.java b/src/main/java/com/emr/entity/ArchiveFlowRole.java
new file mode 100644
index 0000000..a80cb6b
--- /dev/null
+++ b/src/main/java/com/emr/entity/ArchiveFlowRole.java
@@ -0,0 +1,94 @@
+package com.emr.entity;
+
+import java.io.Serializable;
+
+public class ArchiveFlowRole implements Serializable {
+ private Integer id;
+
+ private String code;
+
+ private String name;
+
+ private String sumbitName;
+
+ private Short effective;
+
+ private Integer stepIndex;
+
+ private Short role;
+
+ private static final long serialVersionUID = 1L;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getSumbitName() {
+ return sumbitName;
+ }
+
+ public void setSumbitName(String sumbitName) {
+ this.sumbitName = sumbitName == null ? null : sumbitName.trim();
+ }
+
+ public Short getEffective() {
+ return effective;
+ }
+
+ public void setEffective(Short effective) {
+ this.effective = effective;
+ }
+
+ public Integer getStepIndex() {
+ return stepIndex;
+ }
+
+ public void setStepIndex(Integer stepIndex) {
+ this.stepIndex = stepIndex;
+ }
+
+ public Short getRole() {
+ return role;
+ }
+
+ public void setRole(Short role) {
+ this.role = role;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getClass().getSimpleName());
+ sb.append(" [");
+ sb.append("Hash = ").append(hashCode());
+ sb.append(", id=").append(id);
+ sb.append(", code=").append(code);
+ sb.append(", name=").append(name);
+ sb.append(", sumbitName=").append(sumbitName);
+ sb.append(", effective=").append(effective);
+ sb.append(", stepIndex=").append(stepIndex);
+ sb.append(", role=").append(role);
+ sb.append("]");
+ return sb.toString();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/Archive_Detail.java b/src/main/java/com/emr/entity/Archive_Detail.java
new file mode 100644
index 0000000..111ef44
--- /dev/null
+++ b/src/main/java/com/emr/entity/Archive_Detail.java
@@ -0,0 +1,103 @@
+package com.emr.entity;
+
+public class Archive_Detail {
+ private String id;
+
+ private String pdfPath;
+
+ private String masterid;
+
+ private String uploaddatetime;
+
+ private String assortid;
+
+ private String source;
+
+ private String subassort;
+
+ private String title;
+
+ private String flag;
+
+ private String sys;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getPdfPath() {
+ return pdfPath;
+ }
+
+ public void setPdfPath(String pdfPath) {
+ this.pdfPath = pdfPath == null ? null : pdfPath.trim();
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getUploaddatetime() {
+ return uploaddatetime;
+ }
+
+ public void setUploaddatetime(String uploaddatetime) {
+ this.uploaddatetime = uploaddatetime == null ? null : uploaddatetime.trim();
+ }
+
+ public String getAssortid() {
+ return assortid;
+ }
+
+ public void setAssortid(String assortid) {
+ this.assortid = assortid == null ? null : assortid.trim();
+ }
+
+ public String getSource() {
+ return source;
+ }
+
+ public void setSource(String source) {
+ this.source = source == null ? null : source.trim();
+ }
+
+ public String getSubassort() {
+ return subassort;
+ }
+
+ public void setSubassort(String subassort) {
+ this.subassort = subassort == null ? null : subassort.trim();
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title == null ? null : title.trim();
+ }
+
+ public String getFlag() {
+ return flag;
+ }
+
+ public void setFlag(String flag) {
+ this.flag = flag == null ? null : flag.trim();
+ }
+
+ public String getSys() {
+ return sys;
+ }
+
+ public void setSys(String sys) {
+ this.sys = sys == null ? null : sys.trim();
+ }
+}
\ 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
new file mode 100644
index 0000000..d3bbed2
--- /dev/null
+++ b/src/main/java/com/emr/entity/Archive_Detail_Vo.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/29 15:02
+ * Description:分段目录扩展
+ */
+package com.emr.entity;
+
+import lombok.Data;
+
+@Data
+public class Archive_Detail_Vo extends Archive_Detail{
+ private String assortName;
+
+ private Short assortSort;
+
+ private String printFlag;
+
+ private String patientId;
+
+ private String scanPage;
+
+ private int pageNum;
+
+ private Integer checker;
+
+ private String assortId;
+}
+
+
diff --git a/src/main/java/com/emr/entity/Archive_Master.java b/src/main/java/com/emr/entity/Archive_Master.java
new file mode 100644
index 0000000..3445973
--- /dev/null
+++ b/src/main/java/com/emr/entity/Archive_Master.java
@@ -0,0 +1,233 @@
+package com.emr.entity;
+
+public class Archive_Master {
+ private String id;
+
+ private String patientId;
+
+ private String inpNo;
+
+ private String visitId;
+
+ private String name;
+
+ private String sex;
+
+ private String deptName;
+
+ private String dischargeDateTime;
+
+ private String archivestate;
+
+ private String admissionDateTime;
+
+ private String deptAdmissionTo;
+
+ private String checkDoctor;
+
+ private String checkDatetime;
+
+ private String checkedDoctor;
+
+ private String checkedDatetime;
+
+ private String lockinfo;
+
+ private String doctorInCharge;
+
+ private String idNo;
+
+ private String dischargeDisposition;
+
+ private String deptCodeLend;
+
+ private String returntoRole;
+
+ private String returnOperUsername;
+
+ private String changeReason;
+
+ public String getChangeReason() {
+ return changeReason;
+ }
+
+ public void setChangeReason(String changeReason) {
+ this.changeReason = changeReason;
+ }
+
+ public String getReturntoRole() {
+ return returntoRole;
+ }
+
+ public void setReturntoRole(String returntoRole) {
+ this.returntoRole = returntoRole;
+ }
+
+ public String getReturnOperUsername() {
+ return returnOperUsername;
+ }
+
+ public void setReturnOperUsername(String returnOperUsername) {
+ this.returnOperUsername = returnOperUsername;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getPatientId() {
+ return patientId;
+ }
+
+ public void setPatientId(String patientId) {
+ this.patientId = patientId == null ? null : patientId.trim();
+ }
+
+ public String getInpNo() {
+ return inpNo;
+ }
+
+ public void setInpNo(String inpNo) {
+ this.inpNo = inpNo == null ? null : inpNo.trim();
+ }
+
+ public String getVisitId() {
+ return visitId;
+ }
+
+ public void setVisitId(String visitId) {
+ this.visitId = visitId == null ? null : visitId.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getSex() {
+ return sex;
+ }
+
+ public void setSex(String sex) {
+ this.sex = sex == null ? null : sex.trim();
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName == null ? null : deptName.trim();
+ }
+
+ public String getDischargeDateTime() {
+ return dischargeDateTime;
+ }
+
+ public void setDischargeDateTime(String dischargeDateTime) {
+ this.dischargeDateTime = dischargeDateTime == null ? null : dischargeDateTime.trim();
+ }
+
+ public String getArchivestate() {
+ return archivestate;
+ }
+
+ public void setArchivestate(String archivestate) {
+ this.archivestate = archivestate == null ? null : archivestate.trim();
+ }
+
+ public String getAdmissionDateTime() {
+ return admissionDateTime;
+ }
+
+ public void setAdmissionDateTime(String admissionDateTime) {
+ this.admissionDateTime = admissionDateTime == null ? null : admissionDateTime.trim();
+ }
+
+ public String getDeptAdmissionTo() {
+ return deptAdmissionTo;
+ }
+
+ public void setDeptAdmissionTo(String deptAdmissionTo) {
+ this.deptAdmissionTo = deptAdmissionTo == null ? null : deptAdmissionTo.trim();
+ }
+
+ public String getCheckDoctor() {
+ return checkDoctor;
+ }
+
+ public void setCheckDoctor(String checkDoctor) {
+ this.checkDoctor = checkDoctor == null ? null : checkDoctor.trim();
+ }
+
+ public String getCheckDatetime() {
+ return checkDatetime;
+ }
+
+ public void setCheckDatetime(String checkDatetime) {
+ this.checkDatetime = checkDatetime == null ? null : checkDatetime.trim();
+ }
+
+ public String getCheckedDoctor() {
+ return checkedDoctor;
+ }
+
+ public void setCheckedDoctor(String checkedDoctor) {
+ this.checkedDoctor = checkedDoctor == null ? null : checkedDoctor.trim();
+ }
+
+ public String getCheckedDatetime() {
+ return checkedDatetime;
+ }
+
+ public void setCheckedDatetime(String checkedDatetime) {
+ this.checkedDatetime = checkedDatetime == null ? null : checkedDatetime.trim();
+ }
+
+ public String getLockinfo() {
+ return lockinfo;
+ }
+
+ public void setLockinfo(String lockinfo) {
+ this.lockinfo = lockinfo == null ? null : lockinfo.trim();
+ }
+
+ public String getDoctorInCharge() {
+ return doctorInCharge;
+ }
+
+ public void setDoctorInCharge(String doctorInCharge) {
+ this.doctorInCharge = doctorInCharge == null ? null : doctorInCharge.trim();
+ }
+
+ public String getIdNo() {
+ return idNo;
+ }
+
+ public void setIdNo(String idNo) {
+ this.idNo = idNo == null ? null : idNo.trim();
+ }
+
+ public String getDischargeDisposition() {
+ return dischargeDisposition;
+ }
+
+ public void setDischargeDisposition(String dischargeDisposition) {
+ this.dischargeDisposition = dischargeDisposition == null ? null : dischargeDisposition.trim();
+ }
+
+ public String getDeptCodeLend() {
+ return deptCodeLend;
+ }
+
+ public void setDeptCodeLend(String deptCodeLend) {
+ this.deptCodeLend = deptCodeLend == null ? null : deptCodeLend.trim();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/Archive_Master_Vo.java b/src/main/java/com/emr/entity/Archive_Master_Vo.java
new file mode 100644
index 0000000..65174f6
--- /dev/null
+++ b/src/main/java/com/emr/entity/Archive_Master_Vo.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/26 17:51
+ * Description:
+ */
+package com.emr.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class Archive_Master_Vo extends Archive_Master{
+ private String startDateTo;
+
+ private String endDateTo;
+
+ private String startDate;
+
+ private String endDate;
+
+ private List deptList;
+
+ private Float days;
+
+ private String checkName;
+
+ private String checkedName;
+
+ private String btns;//拼接按钮
+
+ private String status;//转换中文状态
+
+ private String remark;//审核内容
+
+ private Integer roleCode;//审核角色stepIndex,步骤编码
+
+ private Integer role;//操作角色1,2,4
+
+ private Integer infoId;//流转流程的id
+}
+
+
diff --git a/src/main/java/com/emr/entity/AssortTypeTree.java b/src/main/java/com/emr/entity/AssortTypeTree.java
new file mode 100644
index 0000000..7211c28
--- /dev/null
+++ b/src/main/java/com/emr/entity/AssortTypeTree.java
@@ -0,0 +1,28 @@
+package com.emr.entity;
+
+import lombok.Data;
+
+/**
+ * @ProjectName:
+ * @Description:
+ * @Param 传输参数
+ * @Return
+ * @Author: 曾文和
+ * @CreateDate: 2020/4/22 17:40
+ * @UpdateUser: 曾文和
+ * @UpdateDate: 2020/4/22 17:40
+ * @UpdateRemark: 更新说明
+ * @Version: 1.0
+ */
+@Data
+public class AssortTypeTree {
+ private Integer id;
+
+ private Integer parentId;
+
+ private String name;
+
+ private String selfId;
+
+ private String checked;
+}
diff --git a/src/main/java/com/emr/entity/EmrHolidaySet.java b/src/main/java/com/emr/entity/EmrHolidaySet.java
new file mode 100644
index 0000000..2eeed73
--- /dev/null
+++ b/src/main/java/com/emr/entity/EmrHolidaySet.java
@@ -0,0 +1,61 @@
+package com.emr.entity;
+
+import java.io.Serializable;
+
+public class EmrHolidaySet implements Serializable {
+ private Integer id;
+
+ private String date;
+
+ private Short flag;
+
+ private String updateTime;
+
+ private static final long serialVersionUID = 1L;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getDate() {
+ return date;
+ }
+
+ public void setDate(String date) {
+ this.date = date == null ? null : date.trim();
+ }
+
+ public Short getFlag() {
+ return flag;
+ }
+
+ public void setFlag(Short flag) {
+ this.flag = flag;
+ }
+
+ public String getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(String updateTime) {
+ this.updateTime = updateTime == null ? null : updateTime.trim();
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getClass().getSimpleName());
+ sb.append(" [");
+ sb.append("Hash = ").append(hashCode());
+ sb.append(", id=").append(id);
+ sb.append(", date=").append(date);
+ sb.append(", flag=").append(flag);
+ sb.append(", updateTime=").append(updateTime);
+ sb.append("]");
+ return sb.toString();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/EmrHolidaySetVo.java b/src/main/java/com/emr/entity/EmrHolidaySetVo.java
new file mode 100644
index 0000000..f772acd
--- /dev/null
+++ b/src/main/java/com/emr/entity/EmrHolidaySetVo.java
@@ -0,0 +1,53 @@
+package com.emr.entity;
+
+public class EmrHolidaySetVo extends EmrHolidaySet {
+ private String startTime;
+
+ private String endTime;
+
+ private int offset;
+
+ private int limit;
+
+ private String flagCh;
+
+ public String getFlagCh() {
+ return flagCh;
+ }
+
+ public void setFlagCh(String flagCh) {
+ this.flagCh = flagCh;
+ }
+
+ public int getOffset() {
+ return offset;
+ }
+
+ public void setOffset(int offset) {
+ this.offset = offset;
+ }
+
+ public int getLimit() {
+ return limit;
+ }
+
+ public void setLimit(int limit) {
+ this.limit = limit;
+ }
+
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
+ public String getEndTime() {
+ return endTime;
+ }
+
+ public void setEndTime(String endTime) {
+ this.endTime = endTime;
+ }
+}
diff --git a/src/main/java/com/emr/entity/EmrOvertimeSet.java b/src/main/java/com/emr/entity/EmrOvertimeSet.java
new file mode 100644
index 0000000..c0634a0
--- /dev/null
+++ b/src/main/java/com/emr/entity/EmrOvertimeSet.java
@@ -0,0 +1,39 @@
+package com.emr.entity;
+
+import java.io.Serializable;
+
+public class EmrOvertimeSet implements Serializable {
+ private Integer id;
+
+ private Integer days;
+
+ private static final long serialVersionUID = 1L;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public Integer getDays() {
+ return days;
+ }
+
+ public void setDays(Integer days) {
+ this.days = days;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getClass().getSimpleName());
+ sb.append(" [");
+ sb.append("Hash = ").append(hashCode());
+ sb.append(", id=").append(id);
+ sb.append(", days=").append(days);
+ sb.append("]");
+ return sb.toString();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/EmrPatient.java b/src/main/java/com/emr/entity/EmrPatient.java
new file mode 100644
index 0000000..e2080e7
--- /dev/null
+++ b/src/main/java/com/emr/entity/EmrPatient.java
@@ -0,0 +1,49 @@
+package com.emr.entity;
+
+public class EmrPatient {
+ private String fpatno; //记账号,
+ private String fpatfilen;//住院号
+ private String fpattimes;//住院次数
+ private String fpatname;//姓名
+ private String farchieve_dt;//最后更改时间
+
+ public String getFpatno() {
+ return fpatno;
+ }
+
+ public void setFpatno(String fpatno) {
+ this.fpatno = fpatno;
+ }
+
+ public String getFpatfilen() {
+ return fpatfilen;
+ }
+
+ public void setFpatfilen(String fpatfilen) {
+ this.fpatfilen = fpatfilen;
+ }
+
+ public String getFpattimes() {
+ return fpattimes;
+ }
+
+ public void setFpattimes(String fpattimes) {
+ this.fpattimes = fpattimes;
+ }
+
+ public String getFpatname() {
+ return fpatname;
+ }
+
+ public void setFpatname(String fpatname) {
+ this.fpatname = fpatname;
+ }
+
+ public String getFarchieve_dt() {
+ return farchieve_dt;
+ }
+
+ public void setFarchieve_dt(String farchieve_dt) {
+ this.farchieve_dt = farchieve_dt;
+ }
+}
diff --git a/src/main/java/com/emr/entity/Emr_Archive_Detail.java b/src/main/java/com/emr/entity/Emr_Archive_Detail.java
new file mode 100644
index 0000000..ba5e1f3
--- /dev/null
+++ b/src/main/java/com/emr/entity/Emr_Archive_Detail.java
@@ -0,0 +1,103 @@
+package com.emr.entity;
+
+public class Emr_Archive_Detail {
+ private Integer id;
+
+ private String archiveDetailId;
+
+ private String assortId;
+
+ private Integer parentId;
+
+ private String title;
+
+ private String creater;
+
+ private String createTime;
+
+ private String updater;
+
+ private String updateTime;
+
+ private String remaker;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getArchiveDetailId() {
+ return archiveDetailId;
+ }
+
+ public void setArchiveDetailId(String archiveDetailId) {
+ this.archiveDetailId = archiveDetailId == null ? null : archiveDetailId.trim();
+ }
+
+ public String getAssortId() {
+ return assortId;
+ }
+
+ public void setAssortId(String assortId) {
+ this.assortId = assortId == null ? null : assortId.trim();
+ }
+
+ public Integer getParentId() {
+ return parentId;
+ }
+
+ public void setParentId(Integer parentId) {
+ this.parentId = parentId;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title == null ? null : title.trim();
+ }
+
+ public String getCreater() {
+ return creater;
+ }
+
+ public void setCreater(String creater) {
+ this.creater = creater == null ? null : creater.trim();
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime == null ? null : createTime.trim();
+ }
+
+ public String getUpdater() {
+ return updater;
+ }
+
+ public void setUpdater(String updater) {
+ this.updater = updater == null ? null : updater.trim();
+ }
+
+ public String getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(String updateTime) {
+ this.updateTime = updateTime == null ? null : updateTime.trim();
+ }
+
+ public String getRemaker() {
+ return remaker;
+ }
+
+ public void setRemaker(String remaker) {
+ this.remaker = remaker == null ? null : remaker.trim();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/Emr_Dictionary.java b/src/main/java/com/emr/entity/Emr_Dictionary.java
new file mode 100644
index 0000000..9572f1b
--- /dev/null
+++ b/src/main/java/com/emr/entity/Emr_Dictionary.java
@@ -0,0 +1,183 @@
+package com.emr.entity;
+
+public class Emr_Dictionary {
+ private Integer id;
+
+ private String typecode;
+
+ private String typename;
+
+ private String code;
+
+ private String name;
+
+ private String pyCode;
+
+ private String wbCode;
+
+ private String zipCode;
+
+ private String gbCode;
+
+ private Short flag;
+
+ private String cComment;
+
+ private String parentId;
+
+ private Integer effective;
+
+ private String updater;
+
+ private String updateTime;
+
+ private String creater;
+
+ private String createTime;
+
+ private String remark;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getTypecode() {
+ return typecode;
+ }
+
+ public void setTypecode(String typecode) {
+ this.typecode = typecode == null ? null : typecode.trim();
+ }
+
+ public String getTypename() {
+ return typename;
+ }
+
+ public void setTypename(String typename) {
+ this.typename = typename == null ? null : typename.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getPyCode() {
+ return pyCode;
+ }
+
+ public void setPyCode(String pyCode) {
+ this.pyCode = pyCode == null ? null : pyCode.trim();
+ }
+
+ public String getWbCode() {
+ return wbCode;
+ }
+
+ public void setWbCode(String wbCode) {
+ this.wbCode = wbCode == null ? null : wbCode.trim();
+ }
+
+ public String getZipCode() {
+ return zipCode;
+ }
+
+ public void setZipCode(String zipCode) {
+ this.zipCode = zipCode == null ? null : zipCode.trim();
+ }
+
+ public String getGbCode() {
+ return gbCode;
+ }
+
+ public void setGbCode(String gbCode) {
+ this.gbCode = gbCode == null ? null : gbCode.trim();
+ }
+
+ public Short getFlag() {
+ return flag;
+ }
+
+ public void setFlag(Short flag) {
+ this.flag = flag;
+ }
+
+ public String getcComment() {
+ return cComment;
+ }
+
+ public void setcComment(String cComment) {
+ this.cComment = cComment == null ? null : cComment.trim();
+ }
+
+ public String getParentId() {
+ return parentId;
+ }
+
+ public void setParentId(String parentId) {
+ this.parentId = parentId;
+ }
+
+ public Integer getEffective() {
+ return effective;
+ }
+
+ public void setEffective(Integer effective) {
+ this.effective = effective;
+ }
+
+ public String getUpdater() {
+ return updater;
+ }
+
+ public void setUpdater(String updater) {
+ this.updater = updater == null ? null : updater.trim();
+ }
+
+ public String getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(String updateTime) {
+ this.updateTime = updateTime == null ? null : updateTime.trim();
+ }
+
+ public String getCreater() {
+ return creater;
+ }
+
+ public void setCreater(String creater) {
+ this.creater = creater == null ? null : creater.trim();
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime == null ? null : createTime.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/Emr_Fault_Detail.java b/src/main/java/com/emr/entity/Emr_Fault_Detail.java
new file mode 100644
index 0000000..61ec382
--- /dev/null
+++ b/src/main/java/com/emr/entity/Emr_Fault_Detail.java
@@ -0,0 +1,145 @@
+package com.emr.entity;
+
+import java.math.BigDecimal;
+
+public class Emr_Fault_Detail {
+ private Integer id;
+
+ private String archiveDetailId;
+
+ private String assortId;
+
+ private Integer parentId;
+
+ private String content;
+
+ private BigDecimal score;
+
+ private String backContent;
+
+ private String firstTrial;
+
+ private String state;
+
+ private String recallReason;
+
+ private String creater;
+
+ private String createTime;
+
+ private String updater;
+
+ private String updateTime;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getArchiveDetailId() {
+ return archiveDetailId;
+ }
+
+ public void setArchiveDetailId(String archiveDetailId) {
+ this.archiveDetailId = archiveDetailId == null ? null : archiveDetailId.trim();
+ }
+
+ public String getAssortId() {
+ return assortId;
+ }
+
+ public void setAssortId(String assortId) {
+ this.assortId = assortId == null ? null : assortId.trim();
+ }
+
+ public Integer getParentId() {
+ return parentId;
+ }
+
+ public void setParentId(Integer parentId) {
+ this.parentId = parentId;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content == null ? null : content.trim();
+ }
+
+ public BigDecimal getScore() {
+ return score;
+ }
+
+ public void setScore(BigDecimal score) {
+ this.score = score;
+ }
+
+ public String getBackContent() {
+ return backContent;
+ }
+
+ public void setBackContent(String backContent) {
+ this.backContent = backContent == null ? null : backContent.trim();
+ }
+
+ public String getFirstTrial() {
+ return firstTrial;
+ }
+
+ public void setFirstTrial(String firstTrial) {
+ this.firstTrial = firstTrial == null ? null : firstTrial.trim();
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state == null ? null : state.trim();
+ }
+
+ public String getRecallReason() {
+ return recallReason;
+ }
+
+ public void setRecallReason(String recallReason) {
+ this.recallReason = recallReason == null ? null : recallReason.trim();
+ }
+
+ public String getCreater() {
+ return creater;
+ }
+
+ public void setCreater(String creater) {
+ this.creater = creater == null ? null : creater.trim();
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime == null ? null : createTime.trim();
+ }
+
+ public String getUpdater() {
+ return updater;
+ }
+
+ public void setUpdater(String updater) {
+ this.updater = updater == null ? null : updater.trim();
+ }
+
+ public String getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(String updateTime) {
+ this.updateTime = updateTime == null ? null : updateTime.trim();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/Emr_Fault_Detail_Vo.java b/src/main/java/com/emr/entity/Emr_Fault_Detail_Vo.java
new file mode 100644
index 0000000..54c57ce
--- /dev/null
+++ b/src/main/java/com/emr/entity/Emr_Fault_Detail_Vo.java
@@ -0,0 +1,63 @@
+package com.emr.entity;
+
+public class Emr_Fault_Detail_Vo extends Emr_Fault_Detail {
+ private String returntoRole;
+
+ private String returnOperUsername;
+
+ private String checkedDateTime;
+
+ private String changeReason;
+
+ private String status;
+
+ private Integer targetCode;
+
+ public Integer getTargetCode() {
+ return targetCode;
+ }
+
+ public void setTargetCode(Integer targetCode) {
+ this.targetCode = targetCode;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getChangeReason() {
+ return changeReason;
+ }
+
+ public void setChangeReason(String changeReason) {
+ this.changeReason = changeReason;
+ }
+
+ public String getCheckedDateTime() {
+ return checkedDateTime;
+ }
+
+ public void setCheckedDateTime(String checkedDateTime) {
+ this.checkedDateTime = checkedDateTime;
+ }
+
+ public String getReturntoRole() {
+ return returntoRole;
+ }
+
+ public void setReturntoRole(String returntoRole) {
+ this.returntoRole = returntoRole;
+ }
+
+ public String getReturnOperUsername() {
+ return returnOperUsername;
+ }
+
+ public void setReturnOperUsername(String returnOperUsername) {
+ this.returnOperUsername = returnOperUsername;
+ }
+}
diff --git a/src/main/java/com/emr/entity/Emr_Fault_Type.java b/src/main/java/com/emr/entity/Emr_Fault_Type.java
new file mode 100644
index 0000000..6fce88e
--- /dev/null
+++ b/src/main/java/com/emr/entity/Emr_Fault_Type.java
@@ -0,0 +1,113 @@
+package com.emr.entity;
+
+public class Emr_Fault_Type {
+ private Integer id;
+
+ private String archiveDetailId;
+
+ private String typeFlag;
+
+ private String typeName;
+
+ private Integer typeSort;
+
+ private Integer effective;
+
+ private String remark;
+
+ private String creater;
+
+ private String createTime;
+
+ private String updater;
+
+ private String updateTime;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getArchiveDetailId() {
+ return archiveDetailId;
+ }
+
+ public void setArchiveDetailId(String archiveDetailId) {
+ this.archiveDetailId = archiveDetailId;
+ }
+
+ public String getTypeFlag() {
+ return typeFlag;
+ }
+
+ public void setTypeFlag(String typeFlag) {
+ this.typeFlag = typeFlag == null ? null : typeFlag.trim();
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName == null ? null : typeName.trim();
+ }
+
+ public Integer getTypeSort() {
+ return typeSort;
+ }
+
+ public void setTypeSort(Integer typeSort) {
+ this.typeSort = typeSort;
+ }
+
+ public Integer getEffective() {
+ return effective;
+ }
+
+ public void setEffective(Integer effective) {
+ this.effective = effective;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public String getCreater() {
+ return creater;
+ }
+
+ public void setCreater(String creater) {
+ this.creater = creater == null ? null : creater.trim();
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime == null ? null : createTime.trim();
+ }
+
+ public String getUpdater() {
+ return updater;
+ }
+
+ public void setUpdater(String updater) {
+ this.updater = updater == null ? null : updater.trim();
+ }
+
+ public String getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(String updateTime) {
+ this.updateTime = updateTime == null ? null : updateTime.trim();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/Emr_Fault_Vo.java b/src/main/java/com/emr/entity/Emr_Fault_Vo.java
new file mode 100644
index 0000000..abbe76e
--- /dev/null
+++ b/src/main/java/com/emr/entity/Emr_Fault_Vo.java
@@ -0,0 +1,315 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/22 12:06
+ * Description:缺陷实体扩展
+ */
+package com.emr.entity;
+
+
+import java.math.BigDecimal;
+
+public class Emr_Fault_Vo {
+ private Integer id;
+
+ private String archiveDetailId;
+
+ private String assortId;
+
+ private Integer parentId;
+
+ private String content;
+
+ private BigDecimal score;
+
+ private String backContent;
+
+ private String firstTrial;
+
+ private String state;
+
+ private String recallReason;
+
+ private String creater;
+
+ private String createTime;
+
+ private String updater;
+
+ private String updateTime;
+
+ private String inpNo;
+
+ private String visitId;
+
+ private String name;
+
+ private String deptName;
+
+ private String dischargeDateTime;
+
+ private String archivestate;
+
+ private String startDate;
+
+ private String endDate;
+
+ private String admissionDateTime;
+
+ private String deptAdmissionTo;
+
+ private String sex;
+
+ private String idNo;
+
+ private String dischargeDisposition;
+
+ private String startDateTo;
+
+ private String endDateTo;
+
+ private String patientId;
+
+ public String getPatientId() {
+ return patientId;
+ }
+
+ public void setPatientId(String patientId) {
+ this.patientId = patientId;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getArchiveDetailId() {
+ return archiveDetailId;
+ }
+
+ public void setArchiveDetailId(String archiveDetailId) {
+ this.archiveDetailId = archiveDetailId == null ? null : archiveDetailId.trim();
+ }
+
+ public String getAssortId() {
+ return assortId;
+ }
+
+ public void setAssortId(String assortId) {
+ this.assortId = assortId == null ? null : assortId.trim();
+ }
+
+ public Integer getParentId() {
+ return parentId;
+ }
+
+ public void setParentId(Integer parentId) {
+ this.parentId = parentId;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content == null ? null : content.trim();
+ }
+
+ public BigDecimal getScore() {
+ return score;
+ }
+
+ public void setScore(BigDecimal score) {
+ this.score = score;
+ }
+
+ public String getBackContent() {
+ return backContent;
+ }
+
+ public void setBackContent(String backContent) {
+ this.backContent = backContent == null ? null : backContent.trim();
+ }
+
+ public String getFirstTrial() {
+ return firstTrial;
+ }
+
+ public void setFirstTrial(String firstTrial) {
+ this.firstTrial = firstTrial == null ? null : firstTrial.trim();
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state == null ? null : state.trim();
+ }
+
+ public String getRecallReason() {
+ return recallReason;
+ }
+
+ public void setRecallReason(String recallReason) {
+ this.recallReason = recallReason == null ? null : recallReason.trim();
+ }
+
+ public String getCreater() {
+ return creater;
+ }
+
+ public void setCreater(String creater) {
+ this.creater = creater == null ? null : creater.trim();
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime == null ? null : createTime.trim();
+ }
+
+ public String getUpdater() {
+ return updater;
+ }
+
+ public void setUpdater(String updater) {
+ this.updater = updater == null ? null : updater.trim();
+ }
+
+ public String getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(String updateTime) {
+ this.updateTime = updateTime == null ? null : updateTime.trim();
+ }
+
+ public String getInpNo() {
+ return inpNo;
+ }
+
+ public void setInpNo(String inpNo) {
+ this.inpNo = inpNo == null ? null : inpNo.trim();
+ }
+
+ public String getVisitId() {
+ return visitId;
+ }
+
+ public void setVisitId(String visitId) {
+ this.visitId = visitId == null ? null : visitId.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName == null ? null : deptName.trim();
+ }
+
+ public String getDischargeDateTime() {
+ return dischargeDateTime;
+ }
+
+ public void setDischargeDateTime(String dischargeDateTime) {
+ this.dischargeDateTime = dischargeDateTime == null ? null : dischargeDateTime.trim();
+ }
+
+ public String getArchivestate() {
+ return archivestate;
+ }
+
+ public void setArchivestate(String archivestate) {
+ this.archivestate = archivestate == null ? null : archivestate.trim();
+ }
+
+ public String getStartDate() {
+ return startDate;
+ }
+
+ public void setStartDate(String startDate) {
+ this.startDate = startDate == null ? null : startDate.trim();
+ }
+
+ public String getEndDate() {
+ return endDate;
+ }
+
+ public void setEndDate(String endDate) {
+ this.endDate = endDate == null ? null : endDate.trim();
+ }
+
+ public String getAdmissionDateTime() {
+ return admissionDateTime;
+ }
+
+ public void setAdmissionDateTime(String admissionDateTime) {
+ this.admissionDateTime = admissionDateTime == null ? null : admissionDateTime.trim();
+ }
+
+ public String getDeptAdmissionTo() {
+ return deptAdmissionTo;
+ }
+
+ public void setDeptAdmissionTo(String deptAdmissionTo) {
+ this.deptAdmissionTo = deptAdmissionTo == null ? null : deptAdmissionTo.trim();
+ }
+
+ public String getSex() {
+ return sex;
+ }
+
+ public void setSex(String sex) {
+ this.sex = sex == null ? null : sex.trim();
+ }
+
+ public String getIdNo() {
+ return idNo;
+ }
+
+ public void setIdNo(String idNo) {
+ this.idNo = idNo == null ? null : idNo.trim();
+ }
+
+ public String getDischargeDisposition() {
+ return dischargeDisposition;
+ }
+
+ public void setDischargeDisposition(String dischargeDisposition) {
+ this.dischargeDisposition = dischargeDisposition == null ? null : dischargeDisposition.trim();
+ }
+
+ public String getStartDateTo() {
+ return startDateTo;
+ }
+
+ public void setStartDateTo(String startDateTo) {
+ this.startDateTo = startDateTo == null ? null : startDateTo.trim();
+ }
+
+ public String getEndDateTo() {
+ return endDateTo;
+ }
+
+ public void setEndDateTo(String endDateTo) {
+ this.endDateTo = endDateTo == null ? null : endDateTo.trim();
+ }
+
+}
+
+
diff --git a/src/main/java/com/emr/entity/Emr_Log.java b/src/main/java/com/emr/entity/Emr_Log.java
new file mode 100644
index 0000000..bebe967
--- /dev/null
+++ b/src/main/java/com/emr/entity/Emr_Log.java
@@ -0,0 +1,93 @@
+package com.emr.entity;
+
+public class Emr_Log {
+ private Integer logId;
+
+ private String logTitle;
+
+ private String logContent;
+
+ private String ip;
+
+ private Integer sysId;
+
+ private String sysFlag;
+
+ private String creater;
+
+ private String createDate;
+
+ private String remark;
+
+ public Integer getLogId() {
+ return logId;
+ }
+
+ public void setLogId(Integer logId) {
+ this.logId = logId;
+ }
+
+ public String getLogTitle() {
+ return logTitle;
+ }
+
+ public void setLogTitle(String logTitle) {
+ this.logTitle = logTitle == null ? null : logTitle.trim();
+ }
+
+ public String getLogContent() {
+ return logContent;
+ }
+
+ public void setLogContent(String logContent) {
+ this.logContent = logContent == null ? null : logContent.trim();
+ }
+
+ public String getIp() {
+ return ip;
+ }
+
+ public void setIp(String ip) {
+ this.ip = ip;
+ }
+
+ public Integer getSysId() {
+ return sysId;
+ }
+
+ public void setSysId(Integer sysId) {
+ this.sysId = sysId;
+ }
+
+ public String getSysFlag() {
+ return sysFlag;
+ }
+
+ public void setSysFlag(String sysFlag) {
+ this.sysFlag = sysFlag == null ? null : sysFlag.trim();
+ }
+
+ public String getCreateDate() {
+ return createDate;
+ }
+
+ public void setCreateDate(String createDate) {
+ this.createDate = createDate == null ? null : createDate.trim();
+ }
+
+ public String getCreater() {
+ return creater;
+ }
+
+ public void setCreater(String creater) {
+ this.creater = creater == null ? null : creater.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/Emr_Log_Vo.java b/src/main/java/com/emr/entity/Emr_Log_Vo.java
new file mode 100644
index 0000000..6479ec5
--- /dev/null
+++ b/src/main/java/com/emr/entity/Emr_Log_Vo.java
@@ -0,0 +1,231 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/24 17:40
+ * Description:
+ */
+package com.emr.entity;
+
+public class Emr_Log_Vo {
+ private String archiveDetailId;
+
+ private String state;
+
+ private String recallReason;
+
+ private String inpNo;
+
+ private String visitId;
+
+ private String name;
+
+ private String archivestate;
+
+ private String startDate;
+
+ private String endDate;
+
+ private String admissionDateTime;
+
+ private String deptAdmissionTo;
+
+ private String sex;
+
+ private String idNo;
+
+ private Integer logId;
+
+ private String logTitle;
+
+ private String logContent;
+
+ private String ip;
+
+ private Integer sysId;
+
+ private String sysFlag;
+
+ private String creater;
+
+ private String createDate;
+
+ private String remark;
+
+ public String getArchiveDetailId() {
+ return archiveDetailId;
+ }
+
+ public void setArchiveDetailId(String archiveDetailId) {
+ this.archiveDetailId = archiveDetailId == null ? null : archiveDetailId.trim();
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state == null ? null : state.trim();
+ }
+
+ public String getRecallReason() {
+ return recallReason;
+ }
+
+ public void setRecallReason(String recallReason) {
+ this.recallReason = recallReason == null ? null : recallReason.trim();
+ }
+
+ public String getInpNo() {
+ return inpNo;
+ }
+
+ public void setInpNo(String inpNo) {
+ this.inpNo = inpNo == null ? null : inpNo.trim();
+ }
+
+ public String getVisitId() {
+ return visitId;
+ }
+
+ public void setVisitId(String visitId) {
+ this.visitId = visitId == null ? null : visitId.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getArchivestate() {
+ return archivestate;
+ }
+
+ public void setArchivestate(String archivestate) {
+ this.archivestate = archivestate == null ? null : archivestate.trim();
+ }
+
+ public String getStartDate() {
+ return startDate;
+ }
+
+ public void setStartDate(String startDate) {
+ this.startDate = startDate == null ? null : startDate.trim();
+ }
+
+ public String getEndDate() {
+ return endDate;
+ }
+
+ public void setEndDate(String endDate) {
+ this.endDate = endDate == null ? null : endDate.trim();
+ }
+
+ public String getSex() {
+ return sex;
+ }
+
+ public void setSex(String sex) {
+ this.sex = sex == null ? null : sex.trim();
+ }
+
+ public String getIdNo() {
+ return idNo;
+ }
+
+ public void setIdNo(String idNo) {
+ this.idNo = idNo == null ? null : idNo.trim();
+ }
+
+ public String getAdmissionDateTime() {
+ return admissionDateTime;
+ }
+
+ public void setAdmissionDateTime(String admissionDateTime) {
+ this.admissionDateTime = admissionDateTime == null ? null : admissionDateTime.trim();
+ }
+
+ public String getDeptAdmissionTo() {
+ return deptAdmissionTo;
+ }
+
+ public void setDeptAdmissionTo(String deptAdmissionTo) {
+ this.deptAdmissionTo = deptAdmissionTo == null ? null : deptAdmissionTo.trim();
+ }
+
+ public Integer getLogId() {
+ return logId;
+ }
+
+ public void setLogId(Integer logId) {
+ this.logId = logId;
+ }
+
+ public String getLogTitle() {
+ return logTitle;
+ }
+
+ public void setLogTitle(String logTitle) {
+ this.logTitle = logTitle == null ? null : logTitle.trim();
+ }
+
+ public String getLogContent() {
+ return logContent;
+ }
+
+ public void setLogContent(String logContent) {
+ this.logContent = logContent == null ? null : logContent.trim();
+ }
+
+ public String getIp() {
+ return ip;
+ }
+
+ public void setIp(String ip) {
+ this.ip = ip;
+ }
+
+ public Integer getSysId() {
+ return sysId;
+ }
+
+ public void setSysId(Integer sysId) {
+ this.sysId = sysId;
+ }
+
+ public String getSysFlag() {
+ return sysFlag;
+ }
+
+ public void setSysFlag(String sysFlag) {
+ this.sysFlag = sysFlag == null ? null : sysFlag.trim();
+ }
+
+ public String getCreateDate() {
+ return createDate;
+ }
+
+ public void setCreateDate(String createDate) {
+ this.createDate = createDate == null ? null : createDate.trim();
+ }
+
+ public String getCreater() {
+ return creater;
+ }
+
+ public void setCreater(String creater) {
+ this.creater = creater == null ? null : creater.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+}
+
+
diff --git a/src/main/java/com/emr/entity/Emr_Picture.java b/src/main/java/com/emr/entity/Emr_Picture.java
new file mode 100644
index 0000000..38b351c
--- /dev/null
+++ b/src/main/java/com/emr/entity/Emr_Picture.java
@@ -0,0 +1,153 @@
+package com.emr.entity;
+
+public class Emr_Picture {
+ private String id;
+
+ private String relationId;
+
+ private String assortId;
+
+ private Integer parentId;
+
+ private String typeFlag;
+
+ private String typeName;
+
+ private String minPicture;
+
+ private String maxPicture;
+
+ private Integer pictureSort;
+
+ private Integer effective;
+
+ private String creater;
+
+ private String createTime;
+
+ private String updater;
+
+ private String updateTime;
+
+ private String remark;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getRelationId() {
+ return relationId;
+ }
+
+ public void setRelationId(String relationId) {
+ this.relationId = relationId == null ? null : relationId.trim();
+ }
+
+ public String getAssortId() {
+ return assortId;
+ }
+
+ public void setAssortId(String assortId) {
+ this.assortId = assortId == null ? null : assortId.trim();
+ }
+
+ public Integer getParentId() {
+ return parentId;
+ }
+
+ public void setParentId(Integer parentId) {
+ this.parentId = parentId;
+ }
+
+ public String getTypeFlag() {
+ return typeFlag;
+ }
+
+ public void setTypeFlag(String typeFlag) {
+ this.typeFlag = typeFlag == null ? null : typeFlag.trim();
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName == null ? null : typeName.trim();
+ }
+
+ public String getMinPicture() {
+ return minPicture;
+ }
+
+ public void setMinPicture(String minPicture) {
+ this.minPicture = minPicture == null ? null : minPicture.trim();
+ }
+
+ public String getMaxPicture() {
+ return maxPicture;
+ }
+
+ public void setMaxPicture(String maxPicture) {
+ this.maxPicture = maxPicture == null ? null : maxPicture.trim();
+ }
+
+ public Integer getPictureSort() {
+ return pictureSort;
+ }
+
+ public void setPictureSort(Integer pictureSort) {
+ this.pictureSort = pictureSort;
+ }
+
+ public Integer getEffective() {
+ return effective;
+ }
+
+ public void setEffective(Integer effective) {
+ this.effective = effective;
+ }
+
+ public String getCreater() {
+ return creater;
+ }
+
+ public void setCreater(String creater) {
+ this.creater = creater == null ? null : creater.trim();
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime == null ? null : createTime.trim();
+ }
+
+ public String getUpdater() {
+ return updater;
+ }
+
+ public void setUpdater(String updater) {
+ this.updater = updater == null ? null : updater.trim();
+ }
+
+ public String getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(String updateTime) {
+ this.updateTime = updateTime == null ? null : updateTime.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/File_Vo.java b/src/main/java/com/emr/entity/File_Vo.java
new file mode 100644
index 0000000..7dcdc65
--- /dev/null
+++ b/src/main/java/com/emr/entity/File_Vo.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/8/2 18:13
+ * Description:文件实体
+ */
+package com.emr.entity;
+
+public class File_Vo {
+ //文件地址
+ private String fileSrc;
+ //文件类别
+ private String selectVal;
+
+ public String getFileSrc() {
+ return fileSrc;
+ }
+
+ public void setFileSrc(String fileSrc) {
+ this.fileSrc = fileSrc == null ? null : fileSrc.trim();
+ }
+
+ public String getSelectVal() {
+ return selectVal;
+ }
+
+ public void setSelectVal(String selectVal) {
+ this.selectVal = selectVal == null ? null : selectVal.trim();
+ }
+}
+
+
diff --git a/src/main/java/com/emr/entity/OffsetLimitPage.java b/src/main/java/com/emr/entity/OffsetLimitPage.java
new file mode 100644
index 0000000..3f60f6a
--- /dev/null
+++ b/src/main/java/com/emr/entity/OffsetLimitPage.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 19:49
+ * Description:
+ */
+package com.emr.entity;
+
+import com.github.pagehelper.Page;
+
+import java.util.List;
+
+public class OffsetLimitPage {
+ private Long total;
+ private List rows;
+
+ public Long getTotal() {
+ return total;
+ }
+
+ public void setTotal(Long total) {
+ this.total = total;
+ }
+
+ public List getRows() {
+ return rows;
+ }
+
+ public void setRows(List rows) {
+ this.rows = rows;
+ }
+
+ public OffsetLimitPage() {
+
+ }
+
+ public OffsetLimitPage(List rows, Long total) {
+ this.rows = rows;
+ this.total = total;
+ }
+
+ public OffsetLimitPage(Page rows) {
+ this(rows, rows.getTotal());
+ }
+}
+
+
diff --git a/src/main/java/com/emr/entity/Power_User.java b/src/main/java/com/emr/entity/Power_User.java
new file mode 100644
index 0000000..b12c642
--- /dev/null
+++ b/src/main/java/com/emr/entity/Power_User.java
@@ -0,0 +1,195 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/8/22 13:48
+ * Description:
+ */
+package com.emr.entity;
+
+import java.util.Set;
+
+public class Power_User {
+ /**
+ * 用户id
+ */
+ private Integer userId;
+ /**
+ * 用户名
+ */
+ private String userName;
+ /**
+ * 性别1为女0为男
+ */
+ private Integer userSex;
+ /**
+ * 年龄
+ */
+ private Integer userAge;
+ /**
+ * 手机号
+ */
+ private String userTel;
+ /**
+ * 电子邮件
+ */
+ private String userEmail;
+ /**
+ * 职位
+ */
+ private String userPosition;
+ /**
+ * 角色id
+ */
+ private Integer roleId;
+ /**
+ * 是否有效
+ */
+ private Integer effective;
+ /**
+ * 创建时间
+ */
+ private String createDate;
+ /**
+ * 创建者
+ */
+ private String creater;
+ /**
+ * 修改时间
+ */
+ private String updateDate;
+ /**
+ * 修改者
+ */
+ private String updater;
+ /**
+ * 备注
+ */
+ private String remark;
+ /**
+ * 菜单以及功能权限标识集合
+ */
+ private Set menus;
+
+ public Integer getUserId() {
+ return userId;
+ }
+
+ public void setUserId(Integer userId) {
+ this.userId = userId;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ public Integer getUserSex() {
+ return userSex;
+ }
+
+ public void setUserSex(Integer userSex) {
+ this.userSex = userSex;
+ }
+
+ public Integer getUserAge() {
+ return userAge;
+ }
+
+ public void setUserAge(Integer userAge) {
+ this.userAge = userAge;
+ }
+
+ public String getUserTel() {
+ return userTel;
+ }
+
+ public void setUserTel(String userTel) {
+ this.userTel = userTel;
+ }
+
+ public String getUserEmail() {
+ return userEmail;
+ }
+
+ public void setUserEmail(String userEmail) {
+ this.userEmail = userEmail;
+ }
+
+ public String getUserPosition() {
+ return userPosition;
+ }
+
+ public void setUserPosition(String userPosition) {
+ this.userPosition = userPosition;
+ }
+
+ public Integer getRoleId() {
+ return roleId;
+ }
+
+ public void setRoleId(Integer roleId) {
+ this.roleId = roleId;
+ }
+
+ public Integer getEffective() {
+ return effective;
+ }
+
+ public void setEffective(Integer effective) {
+ this.effective = effective;
+ }
+
+ public String getCreateDate() {
+ return createDate;
+ }
+
+ public void setCreateDate(String createDate) {
+ this.createDate = createDate;
+ }
+
+ public String getCreater() {
+ return creater;
+ }
+
+ public void setCreater(String creater) {
+ this.creater = creater;
+ }
+
+ public String getUpdateDate() {
+ return updateDate;
+ }
+
+ public void setUpdateDate(String updateDate) {
+ this.updateDate = updateDate;
+ }
+
+ public String getUpdater() {
+ return updater;
+ }
+
+ public void setUpdater(String updater) {
+ this.updater = updater;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark;
+ }
+
+ public Set getMenus() {
+ return menus;
+ }
+
+ public void setMenus(Set menus) {
+ this.menus = menus;
+ }
+
+}
+
+
diff --git a/src/main/java/com/emr/entity/ReturnAsmx.java b/src/main/java/com/emr/entity/ReturnAsmx.java
new file mode 100644
index 0000000..2ff2dfb
--- /dev/null
+++ b/src/main/java/com/emr/entity/ReturnAsmx.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/11/11 11:45
+ * Description:
+ */
+package com.emr.entity;
+
+public class ReturnAsmx {
+ private String resultCode;
+ private String resultDesc;
+
+ public String getResultCode() {
+ return resultCode;
+ }
+
+ public void setResultCode(String resultCode) {
+ this.resultCode = resultCode;
+ }
+
+ public String getResultDesc() {
+ return resultDesc;
+ }
+
+ public void setResultDesc(String resultDesc) {
+ this.resultDesc = resultDesc;
+ }
+}
+
+
diff --git a/src/main/java/com/emr/entity/TPrintinfo.java b/src/main/java/com/emr/entity/TPrintinfo.java
new file mode 100644
index 0000000..6eec123
--- /dev/null
+++ b/src/main/java/com/emr/entity/TPrintinfo.java
@@ -0,0 +1,39 @@
+package com.emr.entity;
+
+import java.io.Serializable;
+
+public class TPrintinfo implements Serializable {
+ private String patientId;
+
+ private String isprint;
+
+ private static final long serialVersionUID = 1L;
+
+ public String getPatientId() {
+ return patientId;
+ }
+
+ public void setPatientId(String patientId) {
+ this.patientId = patientId == null ? null : patientId.trim();
+ }
+
+ public String getIsprint() {
+ return isprint;
+ }
+
+ public void setIsprint(String isprint) {
+ this.isprint = isprint == null ? null : isprint.trim();
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getClass().getSimpleName());
+ sb.append(" [");
+ sb.append("Hash = ").append(hashCode());
+ sb.append(", patientId=").append(patientId);
+ sb.append(", isprint=").append(isprint);
+ sb.append("]");
+ return sb.toString();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/TUuInfo.java b/src/main/java/com/emr/entity/TUuInfo.java
new file mode 100644
index 0000000..c197785
--- /dev/null
+++ b/src/main/java/com/emr/entity/TUuInfo.java
@@ -0,0 +1,153 @@
+package com.emr.entity;
+
+public class TUuInfo {
+ private String patientId;
+
+ private String inpNo;
+
+ private String visitId;
+
+ private String hzname;
+
+ private String sex;
+
+ private String dischargeDateTime;
+
+ private String admissionDateTime;
+
+ private String deptName;
+
+ private String doctorDept;
+
+ private String checkedDoctor;
+
+ private String checkedDatetime;
+
+ private String doctorInCharge;
+
+ private String sys;
+
+ private String uuname;
+
+ private String uploaddatetime;
+
+ public String getPatientId() {
+ return patientId;
+ }
+
+ public void setPatientId(String patientId) {
+ this.patientId = patientId == null ? null : patientId.trim();
+ }
+
+ public String getInpNo() {
+ return inpNo;
+ }
+
+ public void setInpNo(String inpNo) {
+ this.inpNo = inpNo == null ? null : inpNo.trim();
+ }
+
+ public String getVisitId() {
+ return visitId;
+ }
+
+ public void setVisitId(String visitId) {
+ this.visitId = visitId == null ? null : visitId.trim();
+ }
+
+ public String getHzname() {
+ return hzname;
+ }
+
+ public void setHzname(String hzname) {
+ this.hzname = hzname == null ? null : hzname.trim();
+ }
+
+ public String getSex() {
+ return sex;
+ }
+
+ public void setSex(String sex) {
+ this.sex = sex == null ? null : sex.trim();
+ }
+
+ public String getDischargeDateTime() {
+ return dischargeDateTime;
+ }
+
+ public void setDischargeDateTime(String dischargeDateTime) {
+ this.dischargeDateTime = dischargeDateTime == null ? null : dischargeDateTime.trim();
+ }
+
+ public String getAdmissionDateTime() {
+ return admissionDateTime;
+ }
+
+ public void setAdmissionDateTime(String admissionDateTime) {
+ this.admissionDateTime = admissionDateTime == null ? null : admissionDateTime.trim();
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName == null ? null : deptName.trim();
+ }
+
+ public String getDoctorDept() {
+ return doctorDept;
+ }
+
+ public void setDoctorDept(String doctorDept) {
+ this.doctorDept = doctorDept == null ? null : doctorDept.trim();
+ }
+
+ public String getCheckedDoctor() {
+ return checkedDoctor;
+ }
+
+ public void setCheckedDoctor(String checkedDoctor) {
+ this.checkedDoctor = checkedDoctor == null ? null : checkedDoctor.trim();
+ }
+
+ public String getCheckedDatetime() {
+ return checkedDatetime;
+ }
+
+ public void setCheckedDatetime(String checkedDatetime) {
+ this.checkedDatetime = checkedDatetime == null ? null : checkedDatetime.trim();
+ }
+
+ public String getDoctorInCharge() {
+ return doctorInCharge;
+ }
+
+ public void setDoctorInCharge(String doctorInCharge) {
+ this.doctorInCharge = doctorInCharge == null ? null : doctorInCharge.trim();
+ }
+
+ public String getSys() {
+ return sys;
+ }
+
+ public void setSys(String sys) {
+ this.sys = sys == null ? null : sys.trim();
+ }
+
+ public String getUuname() {
+ return uuname;
+ }
+
+ public void setUuname(String uuname) {
+ this.uuname = uuname == null ? null : uuname.trim();
+ }
+
+ public String getUploaddatetime() {
+ return uploaddatetime;
+ }
+
+ public void setUploaddatetime(String uploaddatetime) {
+ this.uploaddatetime = uploaddatetime == null ? null : uploaddatetime.trim();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/TUuPrint.java b/src/main/java/com/emr/entity/TUuPrint.java
new file mode 100644
index 0000000..d273ea4
--- /dev/null
+++ b/src/main/java/com/emr/entity/TUuPrint.java
@@ -0,0 +1,135 @@
+package com.emr.entity;
+
+import java.util.Date;
+
+public class TUuPrint {
+ private String patientId;
+
+ private String inpNo;
+
+ private String visitId;
+
+ private String hzname;
+
+ private String sex;
+
+ private String admissionDateTime;
+
+ private String dischargeDateTime;
+
+ private String name;
+
+ private String doctorInCharge;
+
+ private String filetitle;
+
+ private String cpyuser;
+
+ private Date cpytime;
+
+ private Integer flag;
+
+ public String getPatientId() {
+ return patientId;
+ }
+
+ public void setPatientId(String patientId) {
+ this.patientId = patientId == null ? null : patientId.trim();
+ }
+
+ public String getInpNo() {
+ return inpNo;
+ }
+
+ public void setInpNo(String inpNo) {
+ this.inpNo = inpNo == null ? null : inpNo.trim();
+ }
+
+ public String getVisitId() {
+ return visitId;
+ }
+
+ public void setVisitId(String visitId) {
+ this.visitId = visitId == null ? null : visitId.trim();
+ }
+
+ public String getHzname() {
+ return hzname;
+ }
+
+ public void setHzname(String hzname) {
+ this.hzname = hzname == null ? null : hzname.trim();
+ }
+
+ public String getSex() {
+ return sex;
+ }
+
+ public void setSex(String sex) {
+ this.sex = sex == null ? null : sex.trim();
+ }
+
+ public String getAdmissionDateTime() {
+ return admissionDateTime;
+ }
+
+ public void setAdmissionDateTime(String admissionDateTime) {
+ this.admissionDateTime = admissionDateTime == null ? null : admissionDateTime.trim();
+ }
+
+ public String getDischargeDateTime() {
+ return dischargeDateTime;
+ }
+
+ public void setDischargeDateTime(String dischargeDateTime) {
+ this.dischargeDateTime = dischargeDateTime == null ? null : dischargeDateTime.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getDoctorInCharge() {
+ return doctorInCharge;
+ }
+
+ public void setDoctorInCharge(String doctorInCharge) {
+ this.doctorInCharge = doctorInCharge == null ? null : doctorInCharge.trim();
+ }
+
+ public String getFiletitle() {
+ return filetitle;
+ }
+
+ public void setFiletitle(String filetitle) {
+ this.filetitle = filetitle == null ? null : filetitle.trim();
+ }
+
+ public String getCpyuser() {
+ return cpyuser;
+ }
+
+ public void setCpyuser(String cpyuser) {
+ this.cpyuser = cpyuser == null ? null : cpyuser.trim();
+ }
+
+ public Date getCpytime() {
+ return cpytime;
+ }
+
+ public void setCpytime(Date cpytime) {
+ this.cpytime = cpytime;
+ }
+
+ public Integer getFlag() {
+ return flag;
+ }
+
+ public void setFlag(Integer flag) {
+ this.flag = flag;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/entity/Upload_File_Vo.java b/src/main/java/com/emr/entity/Upload_File_Vo.java
new file mode 100644
index 0000000..07b0b99
--- /dev/null
+++ b/src/main/java/com/emr/entity/Upload_File_Vo.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/8/2 18:09
+ * Description:上传文件实体
+ */
+package com.emr.entity;
+
+import java.util.List;
+
+public class Upload_File_Vo {
+ private String masterID;
+
+ private List list;
+
+ public String getMasterID() {
+ return masterID;
+ }
+
+ public void setMasterID(String masterID) {
+ this.masterID = masterID == null ? null : masterID.trim();
+ }
+
+ public List getList() {
+ return list;
+ }
+
+ public void setList(List list) {
+ this.list = list;
+ }
+}
+
+
diff --git a/src/main/java/com/emr/entity/V_Count.java b/src/main/java/com/emr/entity/V_Count.java
new file mode 100644
index 0000000..e46b112
--- /dev/null
+++ b/src/main/java/com/emr/entity/V_Count.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/9/2 14:22
+ * Description:统计
+ */
+package com.emr.entity;
+
+public class V_Count {
+ private String deptCode;
+
+ private String deptName;
+
+ private Integer inNum;
+
+ private Integer outNum;
+
+ private Integer fileNum;
+
+ private Integer unfileNum;
+
+ private Integer deathNum;
+
+ private String fileRate;
+
+ private String day2Rate;
+
+ private String day3Rate;
+
+ private String day7Rate;
+
+ private String startDate;
+
+ private String endDate;
+
+
+ public String getDeptCode() {
+ return deptCode;
+ }
+
+ public void setDeptCode(String deptCode) {
+ this.deptCode = deptCode;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public Integer getInNum() {
+ return inNum;
+ }
+
+ public void setInNum(Integer inNum) {
+ this.inNum = inNum;
+ }
+
+ public Integer getOutNum() {
+ return outNum;
+ }
+
+ public void setOutNum(Integer outNum) {
+ this.outNum = outNum;
+ }
+
+ public Integer getFileNum() {
+ return fileNum;
+ }
+
+ public void setFileNum(Integer fileNum) {
+ this.fileNum = fileNum;
+ }
+
+ public Integer getUnfileNum() {
+ return unfileNum;
+ }
+
+ public void setUnfileNum(Integer unfileNum) {
+ this.unfileNum = unfileNum;
+ }
+
+ public Integer getDeathNum() {
+ return deathNum;
+ }
+
+ public void setDeathNum(Integer deathNum) {
+ this.deathNum = deathNum;
+ }
+
+ public String getFileRate() {
+ return fileRate;
+ }
+
+ public void setFileRate(String fileRate) {
+ this.fileRate = fileRate;
+ }
+
+ public String getDay2Rate() {
+ return day2Rate;
+ }
+
+ public void setDay2Rate(String day2Rate) {
+ this.day2Rate = day2Rate;
+ }
+
+ public String getDay3Rate() {
+ return day3Rate;
+ }
+
+ public void setDay3Rate(String day3Rate) {
+ this.day3Rate = day3Rate;
+ }
+
+ public String getDay7Rate() {
+ return day7Rate;
+ }
+
+ public void setDay7Rate(String day7Rate) {
+ this.day7Rate = day7Rate;
+ }
+
+ public String getStartDate() {
+ return startDate;
+ }
+
+ public void setStartDate(String startDate) {
+ this.startDate = startDate;
+ }
+
+ public String getEndDate() {
+ return endDate;
+ }
+
+ public void setEndDate(String endDate) {
+ this.endDate = endDate;
+ }
+}
+
+
diff --git a/src/main/java/com/emr/entity/Zd_Assort.java b/src/main/java/com/emr/entity/Zd_Assort.java
new file mode 100644
index 0000000..1766ca6
--- /dev/null
+++ b/src/main/java/com/emr/entity/Zd_Assort.java
@@ -0,0 +1,43 @@
+package com.emr.entity;
+
+public class Zd_Assort {
+ private String assortId;
+
+ private String assortName;
+
+ private Short assortSort;
+
+ private String printFlag;
+
+ public String getAssortId() {
+ return assortId;
+ }
+
+ public void setAssortId(String assortId) {
+ this.assortId = assortId == null ? null : assortId.trim();
+ }
+
+ public String getAssortName() {
+ return assortName;
+ }
+
+ public void setAssortName(String assortName) {
+ this.assortName = assortName == null ? null : assortName.trim();
+ }
+
+ public Short getAssortSort() {
+ return assortSort;
+ }
+
+ public void setAssortSort(Short assortSort) {
+ this.assortSort = assortSort;
+ }
+
+ public String getPrintFlag() {
+ return printFlag;
+ }
+
+ public void setPrintFlag(String printFlag) {
+ this.printFlag = printFlag == null ? null : printFlag.trim();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/emr/service/Archive_DetailService.java b/src/main/java/com/emr/service/Archive_DetailService.java
new file mode 100644
index 0000000..71158c4
--- /dev/null
+++ b/src/main/java/com/emr/service/Archive_DetailService.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 15:27
+ * Description:病历文件信息表
+ */
+package com.emr.service;
+
+import com.emr.entity.Archive_Detail;
+import com.emr.entity.Archive_Detail_Vo;
+import com.emr.entity.OffsetLimitPage;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+public interface Archive_DetailService {
+ /**
+ * 根据条件查询分段目录
+ *
+ * @param record
+ * @return
+ */
+ List selectByClo(Archive_Detail_Vo record);
+
+ /**
+ * 根据条件查询分段详情列表分页
+ *
+ * @param record
+ * @return
+ */
+ OffsetLimitPage detailByClo(Archive_Detail_Vo record, Integer offset, Integer limit);
+
+ /**
+ * 根据条件修改分段信息
+ *
+ * @param record
+ * @return
+ */
+ int updateCloById(Archive_Detail record);
+
+ /**
+ * 根据条件插入分段信息
+ * @param record
+ * @return
+ */
+ int insertSel(Archive_Detail record);
+
+ /**
+ * 根据id查找分段信息
+ * @param id
+ * @return
+ */
+ Archive_Detail selectByid(String id);
+
+ /**
+ * 根据病案号+类别删除记录
+ * @param record
+ * @return
+ */
+ int deleteByClo(Archive_Detail record);
+
+ /**
+ * 根据条件查询记录
+ * @param record
+ * @return
+ */
+ List selectByColm(Archive_Detail record);
+
+ List selectByCol(Archive_Detail record);
+
+ /**
+ * 根据多个id合成字符串条件查询记录
+ *
+ * @return
+ */
+ List selectByIdStr(Archive_Detail record);
+
+ void getPdfToPdf(HttpServletResponse response,String imgStr,String masterId,String pdfWater);
+
+ List selectTypeTreeByPatientIdAndAssortIds(String patientId,String assortIds);
+
+ void selectPdfPathByIds(HttpServletResponse response, String detailIds, String masterId,String pdfWater);
+}
+
+
diff --git a/src/main/java/com/emr/service/Archive_MasterService.java b/src/main/java/com/emr/service/Archive_MasterService.java
new file mode 100644
index 0000000..e3df236
--- /dev/null
+++ b/src/main/java/com/emr/service/Archive_MasterService.java
@@ -0,0 +1,127 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 15:27
+ * Description:患者住院信息主索引表
+ */
+package com.emr.service;
+
+import com.emr.entity.Archive_Master;
+import com.emr.entity.Archive_Master_Vo;
+import com.emr.entity.Emr_Fault_Detail_Vo;
+import com.emr.entity.OffsetLimitPage;
+import com.emr.util.Msg;
+
+import java.util.List;
+import java.util.Map;
+
+public interface Archive_MasterService {
+ /**
+ * 根据条件查找病案在院列表分页
+ * @param archiveMasterVo
+ * @return
+ */
+ OffsetLimitPage selectByCol(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit);
+
+ /**
+ * 根据条件查找在院病案列表
+ * @param archiveMasterVo
+ * @return
+ */
+ List selectByCol(Archive_Master_Vo archiveMasterVo);
+
+ /**
+ * 根据条件查找病案终审列表分页
+ *
+ * @param archiveMasterVo
+ * @return
+ */
+ List selectByLast(Archive_Master_Vo archiveMasterVo);
+
+ /**
+ * 根据条件查找'归档中','复审退回'病案列表
+ *
+ * @param archiveMasterVo
+ * @return
+ */
+ List selectByColumn(Archive_Master_Vo archiveMasterVo);
+
+
+ /**
+ * 根据条件查找病案未归档列表分页
+ *
+ * @param archiveMasterVo
+ * @return
+ */
+ List selectByUnfile(Archive_Master_Vo archiveMasterVo);
+ /**
+ * 根据条件查找病案'归档中','审核退回'列表分页
+ *
+ * @param archiveMasterVo
+ * @return
+ */
+ OffsetLimitPage selectByColumn(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit);
+
+
+ /**
+ * 根据条件查找未归档列表分页
+ *
+ * @param archiveMasterVo
+ * @return
+ */
+ OffsetLimitPage selectByUnfile(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit);
+
+ /**
+ * 根据条件查找病案终审列表分页
+ *
+ * @param archiveMasterVo
+ * @return
+ */
+ OffsetLimitPage selectByLast(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit);
+
+
+
+ /**
+ * 根据条件查询记录
+ * @param record
+ * @return
+ */
+ int updateByClo(Archive_Master record);
+
+ /**
+ * 根据id修改记录
+ * @param record
+ * @return
+ */
+ int updateById(Archive_Master record);
+ /**
+ * 根据id查询记录
+ * @param
+ * @return
+ */
+ Archive_Master selectByPrimaryKey(String id);
+
+ int updateReturn(Emr_Fault_Detail_Vo emrFaultDetail) throws Exception;
+
+ List selectByObject(Archive_Master master);
+
+ /**
+ * 初审
+ * */
+ Msg updateStateByArchivId(Archive_Master_Vo master) throws Exception;
+
+ /**
+ * 查询已归档记录
+ * */
+ OffsetLimitPage selectFiled(Archive_Master_Vo master,Integer offset, Integer limit);
+ /**
+ * 已归档操作
+ * */
+ void updateFiled(Archive_Master_Vo master) throws Exception;
+
+ Msg getRole();
+
+ List selectLastVerifyList(Archive_Master_Vo archiveMasterVo);
+}
+
+
diff --git a/src/main/java/com/emr/service/Emr_Archive_DetailService.java b/src/main/java/com/emr/service/Emr_Archive_DetailService.java
new file mode 100644
index 0000000..98dd4ee
--- /dev/null
+++ b/src/main/java/com/emr/service/Emr_Archive_DetailService.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 15:27
+ * Description:病历文件归类表
+ */
+package com.emr.service;
+
+public interface Emr_Archive_DetailService {
+
+}
+
+
diff --git a/src/main/java/com/emr/service/Emr_DictionaryService.java b/src/main/java/com/emr/service/Emr_DictionaryService.java
new file mode 100644
index 0000000..9f5e0c1
--- /dev/null
+++ b/src/main/java/com/emr/service/Emr_DictionaryService.java
@@ -0,0 +1,47 @@
+package com.emr.service;
+
+import com.emr.entity.Emr_Dictionary;
+
+import java.util.List;
+
+public interface Emr_DictionaryService {
+ /**
+ * 根据类型代码查找字典列表
+ *
+ * @param emrDictionary
+ * @return
+ */
+ List dicByTypeCode(Emr_Dictionary emrDictionary);
+
+ /**
+ * 根据字段查找字典列表
+ *
+ * @param emrDictionary
+ * @return
+ */
+ List dicByClo(Emr_Dictionary emrDictionary);
+
+ /**
+ * 根据字段查找记录
+ *
+ * @param emrDictionary
+ * @return
+ */
+ int insertSel(Emr_Dictionary emrDictionary);
+
+ /**
+ * 根据id删除记录
+ *
+ * @param id
+ * @return
+ */
+ int delById(Integer id);
+
+ /**
+ * 根据id修改记录
+ *
+ * @param emrDictionary
+ * @return
+ */
+ int updateCloById(Emr_Dictionary emrDictionary);
+}
diff --git a/src/main/java/com/emr/service/Emr_Fault_DetailService.java b/src/main/java/com/emr/service/Emr_Fault_DetailService.java
new file mode 100644
index 0000000..e36247d
--- /dev/null
+++ b/src/main/java/com/emr/service/Emr_Fault_DetailService.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 15:27
+ * Description:缺陷或不通过审批表
+ */
+package com.emr.service;
+
+import com.emr.entity.Emr_Fault_Detail;
+import com.emr.entity.Emr_Fault_Vo;
+import com.emr.entity.OffsetLimitPage;
+
+import java.util.List;
+
+public interface Emr_Fault_DetailService {
+ /**
+ * 根据查询条件分页查询
+ * @param emrFaultVo
+ * @param offset
+ * @param limit
+ * @return
+ */
+ OffsetLimitPage selectByCol(Emr_Fault_Vo emrFaultVo, Integer offset, Integer limit);
+
+ /**
+ * 根据查询条件导出
+ * @param emrFaultVo
+ * @return
+ */
+ List selectByCol(Emr_Fault_Vo emrFaultVo);
+
+ /**
+ * 根据id修改相应的字段
+ * @param emrFaultDetail
+ * @return
+ */
+ int updateCloByPrimaryKey(Emr_Fault_Detail emrFaultDetail);
+
+ /**
+ * 根据病案号查询缺陷退回审核内容
+ * @param record
+ * @return
+ */
+ Emr_Fault_Detail selectByArchiveDetailId(Emr_Fault_Detail record);
+
+ /**
+ * 插入缺陷退回审核内容
+ * @param record
+ * @return
+ */
+ int insertSel(Emr_Fault_Detail record);
+}
+
+
diff --git a/src/main/java/com/emr/service/Emr_Fault_TypeService.java b/src/main/java/com/emr/service/Emr_Fault_TypeService.java
new file mode 100644
index 0000000..99077ad
--- /dev/null
+++ b/src/main/java/com/emr/service/Emr_Fault_TypeService.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 15:35
+ * Description:缺陷类别表
+ */
+package com.emr.service;
+
+import com.emr.entity.Emr_Fault_Type;
+
+import java.util.List;
+
+public interface Emr_Fault_TypeService {
+ /**
+ * 根据条件查询所有缺陷类别列表
+ * @param record
+ * @return
+ */
+ List selectByCol(Emr_Fault_Type record);
+
+ /**
+ * 根据条件修改缺陷类别信息
+ *
+ * @param record
+ * @return
+ */
+ int updateByClo(Emr_Fault_Type record);
+
+ /**
+ * 根据字段插入缺陷类别信息
+ * @param record
+ * @return
+ */
+ int insertClo(Emr_Fault_Type record);
+
+ /**
+ * 根据id删除缺陷类别记录
+ * @param id
+ * @return
+ */
+ int delById(Integer id);
+
+ /**
+ * 根据id修改缺陷类别信息
+ *
+ * @param id
+ * @return
+ */
+ Emr_Fault_Type selectById(Integer id);
+
+}
+
+
diff --git a/src/main/java/com/emr/service/Emr_PictureService.java b/src/main/java/com/emr/service/Emr_PictureService.java
new file mode 100644
index 0000000..ae49bd8
--- /dev/null
+++ b/src/main/java/com/emr/service/Emr_PictureService.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 15:28
+ * Description:图片信息表
+ */
+package com.emr.service;
+
+import com.emr.entity.Emr_Picture;
+
+import java.util.List;
+
+public interface Emr_PictureService {
+ /**
+ * 根据id查询图片详细查询
+ * @param id
+ * @return
+ */
+ Emr_Picture selectByid(String id);
+
+ /**
+ * 根据条件插入记录
+ * @param record
+ * @return
+ */
+ int insertSel(Emr_Picture record);
+
+ /**
+ * 根据id或标识修改记录
+ * @param record
+ * @return
+ */
+ int updateCloByIdOrFlay(Emr_Picture record);
+
+ /**
+ * 根据条件查询记录
+ * @param record
+ * @return
+ */
+ List selectByClo(Emr_Picture record);
+
+ /**
+ * 根据id查询记录
+ * @param id
+ * @return
+ */
+ int deleteById(String id);
+
+}
+
+
diff --git a/src/main/java/com/emr/service/V_CountService.java b/src/main/java/com/emr/service/V_CountService.java
new file mode 100644
index 0000000..7565d0a
--- /dev/null
+++ b/src/main/java/com/emr/service/V_CountService.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 15:35
+ * Description:缺陷类别表
+ */
+package com.emr.service;
+
+import com.emr.entity.*;
+import com.emr.vo.V_CountVo;
+
+import java.util.List;
+
+public interface V_CountService {
+ /**
+ * 根据条件查询所有统计列表
+ * @param record
+ * @return
+ */
+ List selectByCol(V_CountVo record);
+
+ /**
+ * 根据条件查找统计列表分页
+ *
+ * @param record
+ * @return
+ */
+ OffsetLimitPage selectPageByClo(V_CountVo record, Integer offset, Integer limit);
+
+
+}
+
+
diff --git a/src/main/java/com/emr/service/WebService.java b/src/main/java/com/emr/service/WebService.java
new file mode 100644
index 0000000..33ebb88
--- /dev/null
+++ b/src/main/java/com/emr/service/WebService.java
@@ -0,0 +1,7 @@
+package com.emr.service;
+
+import org.springframework.stereotype.Component;
+
+@Component
+public class WebService {
+}
diff --git a/src/main/java/com/emr/service/ipml/ArchiveCallbackInfoService.java b/src/main/java/com/emr/service/ipml/ArchiveCallbackInfoService.java
new file mode 100644
index 0000000..b9ad018
--- /dev/null
+++ b/src/main/java/com/emr/service/ipml/ArchiveCallbackInfoService.java
@@ -0,0 +1,152 @@
+package com.emr.service.ipml;
+
+import com.emr.dao.ArchiveCallbackInfoMapper;
+import com.emr.entity.ArchiveCallbackInfo;
+import com.emr.entity.Archive_Master;
+import com.emr.entity.OffsetLimitPage;
+import com.emr.service.Archive_MasterService;
+import com.emr.vo.ArchiveCallbackInfoVo;
+import com.emr.vo.FinalAndFirstStatistics;
+import com.emr.vo.User;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
+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 org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @ProjectName:
+ * @Description:
+ * @Param 传输参数
+ * @Return
+ * @Author: 曾文和
+ * @CreateDate: 2020/5/12 16:12
+ * @UpdateUser: 曾文和
+ * @UpdateDate: 2020/5/12 16:12
+ * @UpdateRemark: 更新说明
+ * @Version: 1.0
+ */
+@Service
+@Transactional
+public class ArchiveCallbackInfoService {
+ @Autowired
+ private ArchiveCallbackInfoMapper callbackInfoMapper;
+ @Autowired
+ private Archive_MasterService archiveMasterService;
+ @Autowired
+ private ArchiveFlowInfoService archiveFlowInfoService;
+ @Autowired
+ private StatisticsService statisticsService;
+ /**
+ * 添加召回记录
+ *
+ * @param callbackInfo
+ * @throws Exception
+ */
+ public void insertCallbackInfoService(ArchiveCallbackInfo callbackInfo) throws Exception {
+ String username = (String) SecurityUtils.getSubject().getSession().getAttribute("userSession");
+ callbackInfo.setCallbackUserName(username);
+ callbackInfo.setCallbackTime(new Date());
+ //获取ip
+ String addressIp = getAddressIp();
+ callbackInfo.setIp(addressIp);
+ callbackInfoMapper.insert(callbackInfo);
+ //将病案置为召回,修改状态码
+ Archive_Master master = new Archive_Master();
+ master.setId(callbackInfo.getMasterId());
+ master.setArchivestate(EnumVerify.DocState.CallBacked.getCode() + "");
+ archiveMasterService.updateByClo(master);
+ //添加进流程
+ String masterId = callbackInfo.getMasterId();
+ String currentCode = EnumVerify.DocState.CallBacked.getCode() + "";
+ String remark = callbackInfo.getCallbackReason();
+ Integer targetCode = EnumVerify.DocState.CallBacked.getCode();
+ archiveFlowInfoService.insertFlowInfo(masterId,currentCode,remark,targetCode,new Date());
+ //TODO 删除病案资料
+ }
+
+ private String getAddressIp(){
+ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+ // 获取访问真实IP
+ String ipAddress = request.getHeader("x-forwarded-for");
+ if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+ ipAddress = request.getHeader("Proxy-Client-IP");
+ }
+ if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+ ipAddress = request.getHeader("WL-Proxy-Client-IP");
+ }
+ if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+ ipAddress = request.getRemoteAddr();
+ if(ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")){
+ //根据网卡取本机配置的IP
+ InetAddress inet=null;
+ try {
+ inet = InetAddress.getLocalHost();
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ }
+ ipAddress= inet.getHostAddress();
+ }
+ }
+ //对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
+ if(ipAddress!=null && ipAddress.length()>15){ //"***.***.***.***".length() = 15
+ if(ipAddress.indexOf(",")>0){
+ ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));
+ }
+ }
+ return ipAddress;
+ }
+ /**
+ * 查询列表
+ *
+ * @param callbackInfoVo
+ * @param offset
+ * @param limit
+ * @return
+ */
+ public OffsetLimitPage selectAll(ArchiveCallbackInfoVo callbackInfoVo, Integer offset, Integer limit) {
+ PageHelper.offsetPage(offset, limit);
+ List list = selectCallBackInfo(callbackInfoVo);
+ return new OffsetLimitPage((Page) list);
+ }
+
+ public List selectCallBackInfo(ArchiveCallbackInfoVo callbackInfoVo){
+ List list = callbackInfoMapper.selectAll(callbackInfoVo);
+ if (!CollectionUtils.isEmpty(list)) {
+ //转换状态
+ //计算属于哪种审核角色
+ List userList = statisticsService.getUserList();
+ for (int i = 0; i < list.size(); i++) {
+ String archivestate = list.get(i).getArchivestate();
+ if (StringUtils.isNotBlank(archivestate)) {
+ //转换中文状态
+ Integer status = Integer.valueOf(archivestate);
+ archivestate = EnumVerify.DocState.GetStepName(status, EnumVerify.Checker.Generate.getCode());
+ list.get(i).setArchivestate(archivestate);
+ }
+ if(!CollectionUtils.isEmpty(userList)) {
+ //转换姓名
+ String userName = list.get(i).getCallbackUserName();
+ for (User user : userList) {
+ if (StringUtils.isNotBlank(userName) && userName.equals(user.getUserName())) {
+ list.get(i).setCallbackUserName(user.getName());
+ break;
+ }
+ }
+ }
+ }
+ }
+ return list;
+ }
+}
diff --git a/src/main/java/com/emr/service/ipml/ArchiveFlowInfoService.java b/src/main/java/com/emr/service/ipml/ArchiveFlowInfoService.java
new file mode 100644
index 0000000..2c97846
--- /dev/null
+++ b/src/main/java/com/emr/service/ipml/ArchiveFlowInfoService.java
@@ -0,0 +1,289 @@
+package com.emr.service.ipml;
+
+import com.emr.dao.ArchiveFlowInfoMapper;
+import com.emr.dao.ArchiveFlowRoleMapper;
+import com.emr.dao.Archive_MasterMapper;
+import com.emr.dao.EmrHolidaySetMapper;
+import com.emr.entity.*;
+import com.emr.service.Emr_Fault_DetailService;
+import com.emr.service.Emr_Fault_TypeService;
+import com.emr.vo.ArchiveFlowInfoVo;
+import com.emr.vo.User;
+import com.github.pagehelper.PageHelper;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
+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 java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @ProjectName:
+ * @Description:
+ * @Param 传输参数
+ * @Return
+ * @Author: 曾文和
+ * @CreateDate: 2020/5/12 8:49
+ * @UpdateUser: 曾文和
+ * @UpdateDate: 2020/5/12 8:49
+ * @UpdateRemark: 更新说明
+ * @Version: 1.0
+ */
+@Service
+@Transactional
+public class ArchiveFlowInfoService {
+ @Autowired
+ private ArchiveFlowInfoMapper flowInfoMapper;
+ @Autowired
+ private ArchiveFlowRoleMapper flowRoleMapper;
+ @Autowired
+ private Archive_MasterMapper archiveMasterMapper;
+ @Autowired
+ private StatisticsService statisticsService;
+ @Autowired
+ private Emr_Fault_TypeService faultTypeService;
+ @Autowired
+ private EmrHolidaySetMapper holidaySetMapper;
+ /**
+ * 添加进流转记录
+ * @param masterId
+ * @param currentStatus 当前节点code
+ * @param remark 审核内容
+ * @param appointNextCode 手动指定下个节点code,未指定查询流转下个节点,有指定使用指定
+ * @param sumbitDate 提交时间
+ * @throws Exception
+ */
+ public Integer insertFlowInfo(String masterId,String currentStatus,String remark,Integer appointNextCode,Date sumbitDate)throws Exception{
+ if(StringUtils.isNotBlank(currentStatus)) {
+ //添加退回流程
+ ArchiveFlowInfo flowInfo = new ArchiveFlowInfo();
+ //masterId;
+ flowInfo.setMasterId(masterId);
+ //查询审核角色集合,根据有效进行计算状态code
+ List archiveFlowRoles = flowRoleMapper.selectAll();
+ //stepIndex:当前步骤
+ ArchiveFlowRole currentRole = new ArchiveFlowRole();
+ for (ArchiveFlowRole archiveFlowRole : archiveFlowRoles) {
+ if (archiveFlowRole.getCode().equals(currentStatus)) {
+ currentRole = archiveFlowRole;
+ break;
+ }
+ }
+ //当前stepIndex
+ flowInfo.setStepIndex(currentRole.getStepIndex());
+ //当前节点id
+ flowInfo.setStartStepId(currentRole.getId());
+ //startStep:当前步骤name
+ flowInfo.setStartStep(currentRole.getName());
+ //定义操作角色operRole
+ Short operRole = currentRole.getRole();
+ //sumbitName
+ flowInfo.setSumbitName(currentRole.getSumbitName());
+ //targetStep:下一步骤name
+ ArchiveFlowRole nextRole = new ArchiveFlowRole();
+ for (ArchiveFlowRole archiveFlowRole : archiveFlowRoles) {
+ //判断相同审核角色,比当前步骤还大且有效的角色
+ if (null != archiveFlowRole.getRole() && archiveFlowRole.getEffective() == 1) {
+ if(null == appointNextCode){
+ if(null != currentRole.getRole() && null != archiveFlowRole.getStepIndex()){
+ if (currentRole.getRole().equals(archiveFlowRole.getRole()) && archiveFlowRole.getStepIndex() > currentRole.getStepIndex()) {
+ nextRole = archiveFlowRole;
+ break;
+ }
+ }
+ }else{
+ //指定的下个节点code用于退回
+ if (archiveFlowRole.getCode().equals(appointNextCode+"")) {
+ //医生退回下个节点为医生
+ if(appointNextCode.equals(EnumVerify.DocState.DortorBack.getCode())){
+ //sumbitName
+ flowInfo.setSumbitName(EnumVerify.DocState.DortorBack.getName());
+ nextRole.setName(EnumVerify.DocState.DortorSubmit.getName());
+ nextRole.setId(archiveFlowRole.getId());
+ operRole = 1;
+ break;
+ //护士退回下个节点为护士
+ }else if(appointNextCode.equals(EnumVerify.DocState.NurseBack.getCode())){
+ flowInfo.setSumbitName(EnumVerify.DocState.NurseBack.getName());
+ nextRole.setName(EnumVerify.DocState.NurseSubmit.getName());
+ nextRole.setId(archiveFlowRole.getId());
+ operRole = 2;
+ break;
+ //下个节点是病案室审核,属于召回
+ }else if(appointNextCode.equals(EnumVerify.DocState.CallBacked.getCode())){
+ flowInfo.setSumbitName(archiveFlowRole.getSumbitName());
+ nextRole.setName(EnumVerify.DocState.MedicalRoomCheck.getName());
+ //查询病案室终审id
+ for (ArchiveFlowRole archiveFlowRole1 : archiveFlowRoles) {
+ if (archiveFlowRole1.getCode().equals(EnumVerify.DocState.MedicalRoomCheck.getCode()+"")) {
+ nextRole.setId(archiveFlowRole1.getId());
+ break;
+ }
+ }
+ //病案室审核
+ }else if(appointNextCode.equals(EnumVerify.DocState.MedicalRoomCheck.getCode())){
+ nextRole.setName("已归档");
+ nextRole.setId(archiveFlowRole.getId());
+ }
+ }
+ }
+ }
+ }
+ //下个节点为空,填写护士长
+ if(StringUtils.isBlank(nextRole.getName())){
+ for (ArchiveFlowRole archiveFlowRole : archiveFlowRoles) {
+ if(archiveFlowRole.getCode().equals(EnumVerify.DocState.HeadNurseCheck.getCode()+"")){
+ nextRole = archiveFlowRole;
+ break;
+ }
+ }
+ }
+ flowInfo.setTargetStep(nextRole.getName());
+ //下个节点的id
+ flowInfo.setTargetStepId(nextRole.getId());
+ //useSeconds:距离上次提交用时s数
+ Date preDate = new Date();
+ //查询上次节点的时间
+ //查询上次节点的时间方法参数当前节点的名称,当下个节点为病案室终审不带当前审核名称查询该病案最后审核时间
+ String currentName = "";
+ if(!nextRole.getName().equals(EnumVerify.DocState.MedicalRoomCheck.getName())){
+ currentName = currentRole.getName();
+ }
+ List archiveFlowInfos = flowInfoMapper.selectPreInfo(masterId,currentName);
+ if (null != archiveFlowInfos && !archiveFlowInfos.isEmpty()) {
+ //存在取最后一次提交时间
+ preDate = archiveFlowInfos.get(0).getCreatetime();
+ } else {
+ //取出院时间
+ Archive_Master archiveMaster1 = archiveMasterMapper.selectByPrimaryKey(masterId);
+ SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String dischargeDateTime = archiveMaster1.getDischargeDateTime();
+ if (StringUtils.isNotBlank(dischargeDateTime)) {
+ preDate = fmt.parse(dischargeDateTime);
+ }
+ }
+ if (null != preDate) {
+ long millis = System.currentTimeMillis() - preDate.getTime();
+ //查询是否这个时间段是否有假日
+ int holidayDays = holidaySetMapper.selectHolidayByDate(preDate);
+ if(holidayDays != 0){
+ int holidayMilTime = holidayDays * 24 * 3600 * 1000;
+ millis -= holidayMilTime;
+ }
+ flowInfo.setUseSeconds(millis / 1000);
+ }
+ flowInfo.setOperRole(operRole);
+ //remark:提交内容
+ flowInfo.setRemark(remark);
+ //userName:提交人用户名
+ // 从session获取用户名
+ String username = (String) SecurityUtils.getSubject().getSession().getAttribute("userSession");
+ flowInfo.setUserName(username);
+ //submit:提交时间
+ flowInfo.setSumbitTime(sumbitDate);
+ //createtime:创建时间
+ flowInfo.setCreatetime(new Date());
+ flowInfoMapper.insertSelective(flowInfo);
+ return flowInfo.getId();
+ }
+ return null;
+ }
+
+ /**
+ * 根据masterId查看流转流程信息
+ * @param id
+ * @return
+ */
+ public List selectFlowInfoByMasterId(String id) {
+ List list = flowInfoMapper.selectFlowInfoByMasterId(id);
+ if(!CollectionUtils.isEmpty(list)) {
+ //获取缺陷类别列表
+ Emr_Fault_Type obj = new Emr_Fault_Type();
+ obj.setEffective(1);
+ List typeList = faultTypeService.selectByCol(obj);
+ List userList = statisticsService.getUserList();
+ //替换姓名
+ if (!CollectionUtils.isEmpty(userList)) {
+ for (int i = 0;i selectFlowInfoList(ArchiveFlowInfoVo flowInfoVo,String sql) {
+ //模糊搜索审核姓名转换工号
+ String checkName = flowInfoVo.getUserName();
+ if(StringUtils.isNoneBlank(checkName)){
+ //转换姓名
+ List userList = statisticsService.getUserList();
+ String checkNames = "";
+ for(User user:userList){
+ if(StringUtils.isNoneBlank(user.getName()) && user.getName().contains(checkName)){
+ checkNames += "'" + user.getUserName() + "',";
+ }
+ }
+ if(StringUtils.isNotBlank(checkNames)){
+ checkNames = checkNames.substring(0,checkNames.length()-1);
+ flowInfoVo.setUserName(checkNames);
+ }else{
+ flowInfoVo.setUserName("'" + checkName + "'");
+ }
+ }
+ List list = flowInfoMapper.selectFlowInfoList(flowInfoVo,sql);
+ //替换姓名
+ if(!CollectionUtils.isEmpty(list)) {
+ List userList = statisticsService.getUserList();
+ if (!CollectionUtils.isEmpty(userList)) {
+ for (int i = 0; i < list.size(); i++) {
+ ArchiveFlowInfoVo infoVo = list.get(i);
+ //转换姓名
+ String userName = infoVo.getUserName();
+ for (User user : userList) {
+ if (StringUtils.isNotBlank(userName) && userName.equals(user.getUserName())) {
+ infoVo.setCheckName(user.getName());
+ break;
+ }
+ }
+ }
+ }
+ }
+ return list;
+ }
+}
diff --git a/src/main/java/com/emr/service/ipml/Archive_DetailServiceImpl.java b/src/main/java/com/emr/service/ipml/Archive_DetailServiceImpl.java
new file mode 100644
index 0000000..168ecb1
--- /dev/null
+++ b/src/main/java/com/emr/service/ipml/Archive_DetailServiceImpl.java
@@ -0,0 +1,132 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 15:37
+ * Description:病历文件信息管理
+ */
+package com.emr.service.ipml;
+
+import com.emr.dao.Archive_DetailMapper;
+import com.emr.entity.Archive_Detail;
+import com.emr.entity.Archive_Detail_Vo;
+import com.emr.entity.OffsetLimitPage;
+import com.emr.service.Archive_DetailService;
+import com.emr.util.Jpg2PdfUtil;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class Archive_DetailServiceImpl implements Archive_DetailService {
+ @Autowired
+ private Archive_DetailMapper archiveDetailMapper;
+
+
+ @Override
+ public List selectByClo(Archive_Detail_Vo record) {
+ return archiveDetailMapper.selectByClo(record);
+ }
+
+ @Override
+ public OffsetLimitPage detailByClo(Archive_Detail_Vo record, Integer offset, Integer limit) {
+ PageHelper.offsetPage(offset, limit);
+ List list = archiveDetailMapper.detailByClo(record);
+ return new OffsetLimitPage((Page) list);
+ }
+
+ @Override
+ public int updateCloById(Archive_Detail record) {
+ return archiveDetailMapper.updateCloById(record);
+ }
+
+ @Override
+ public int insertSel(Archive_Detail record) {
+ return archiveDetailMapper.insertSel(record);
+ }
+
+ @Override
+ public Archive_Detail selectByid(String id) {
+ return archiveDetailMapper.selectByid(id);
+ }
+
+ @Override
+ public int deleteByClo(Archive_Detail record) {
+ return archiveDetailMapper.deleteByClo(record);
+ }
+
+ @Override
+ public List selectByColm(Archive_Detail record) {
+ return archiveDetailMapper.selectByColm(record);
+ }
+
+ @Override
+ public List selectByCol(Archive_Detail record) {
+ return archiveDetailMapper.selectByCol(record);
+ }
+
+ @Override
+ public List selectByIdStr(Archive_Detail record) {
+ return archiveDetailMapper.selectByIdStr(record);
+ }
+
+ @Override
+ public void getPdfToPdf(HttpServletResponse response, String imgStr, String masterId,String pdfWater) {
+ if (masterId != "" && masterId != null) {
+ //获取废除的pdf文件名列表archive_detail
+ List pdfList = new ArrayList();
+ Archive_Detail archiveDetail = new Archive_Detail();
+ archiveDetail.setFlag("0");
+ archiveDetail.setMasterid(masterId.trim());
+ archiveDetail.setTitle(imgStr);
+ try {
+ List arList = selectByCol(archiveDetail);
+ if (arList != null && !arList.isEmpty()) {
+ for (int m = 0; m < arList.size(); m++) {
+ String str = arList.get(m).getPdfPath();
+ if (StringUtils.isNoneBlank(str)) {
+ pdfList.add(str);
+ }
+ }
+ }
+ Jpg2PdfUtil.mulFile2One(response, pdfList, pdfWater);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public void selectPdfPathByIds(HttpServletResponse response, String detailIds, String masterId,String pdfWater) {
+ if (masterId != "" && masterId != null) {
+ //获取废除的pdf文件名列表archive_detail
+ List pdfList = new ArrayList();
+ try {
+ List arList = archiveDetailMapper.selectPdfPathByIds(masterId,detailIds);
+ if (arList != null && !arList.isEmpty()) {
+ for (int m = 0; m < arList.size(); m++) {
+ String str = arList.get(m).getPdfPath();
+ if (StringUtils.isNoneBlank(str)) {
+ pdfList.add(str);
+ }
+ }
+ }
+ Jpg2PdfUtil.mulFile2One(response, pdfList, pdfWater);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public List selectTypeTreeByPatientIdAndAssortIds(String patientId, String assortIds) {
+ return archiveDetailMapper.selectTypeTreeByPatientIdAndAssortIds(patientId, assortIds);
+ }
+}
+
+
diff --git a/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java b/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java
new file mode 100644
index 0000000..3b0f321
--- /dev/null
+++ b/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java
@@ -0,0 +1,775 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 15:39
+ * Description:患者住院信息主索引管理
+ */
+package com.emr.service.ipml;
+
+import com.emr.dao.ArchiveFlowRoleMapper;
+import com.emr.dao.Archive_MasterMapper;
+import com.emr.entity.*;
+import com.emr.service.Archive_MasterService;
+import com.emr.service.Emr_Fault_DetailService;
+import com.emr.util.Msg;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.log4j.Logger;
+import org.apache.shiro.SecurityUtils;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @author zwh
+ * */
+@Service
+@Transactional
+public class Archive_MasterServiceImpl implements Archive_MasterService {
+ private static Logger log = Logger.getLogger("myLog");
+ @Autowired
+ private Archive_MasterMapper archiveMasterMapper;
+ @Autowired
+ private Emr_Fault_DetailService emrFaultDetailService;
+ @Autowired
+ private ArchiveFlowRoleMapper flowRoleMapper;
+ @Autowired
+ private ArchiveFlowInfoService flowInfoService;
+ /**
+ * 在院列表
+ * */
+ @Override
+ public OffsetLimitPage selectByCol(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit) {
+ PageHelper.offsetPage(offset, limit);
+ List list= archiveMasterMapper.selectByCol(archiveMasterVo);
+ return new OffsetLimitPage((Page) list);
+ }
+
+ /**
+ * 出院列表
+ * */
+ @Override
+ public OffsetLimitPage selectByColumn(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit) {
+ PageHelper.offsetPage(offset, limit);
+ List list = selectByColumn(archiveMasterVo);
+ return new OffsetLimitPage((Page) list);
+ }
+
+ /**
+ * 未归档列表
+ * */
+ @Override
+ public OffsetLimitPage selectByUnfile(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit) {
+ PageHelper.offsetPage(offset, limit);
+ List list = selectByUnfile(archiveMasterVo);
+ return new OffsetLimitPage((Page) list);
+ }
+
+ /**
+ * 终审列表
+ * */
+ @Override
+ public OffsetLimitPage selectByLast(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit) {
+ PageHelper.offsetPage(offset, limit);
+ List list = selectLastVerifyList(archiveMasterVo);
+ return new OffsetLimitPage((Page) list);
+ }
+
+ /**
+ * 查询终审页面列表
+ * */
+ @Override
+ public List selectLastVerifyList(Archive_Master_Vo archiveMasterVo){
+ List list = archiveMasterMapper.selectByLast(archiveMasterVo);
+ if(null != list && !list.isEmpty()){
+ for (Archive_Master_Vo masterVo : list) {
+ //状态均为护士长已质控,取出一个对象,转换中文状态
+ Integer status = Integer.valueOf(masterVo.getArchivestate());
+ if(status.equals(EnumVerify.DocState.HeadNurseCheck.getCode())){
+ masterVo.setStatus(EnumVerify.DocState.HeadNurseCheck.getName());
+ }else if(status.equals(EnumVerify.DocState.CallBacked.getCode())){
+ masterVo.setStatus(EnumVerify.DocState.CallBacked.getName());
+ }
+ }
+ }
+ return list;
+ }
+
+ /**
+ * 已归档
+ * 病案终审退回页面
+ * */
+ @Override
+ public OffsetLimitPage selectFiled(Archive_Master_Vo master,Integer offset, Integer limit) {
+ PageHelper.offsetPage(offset, limit);
+ List list= archiveMasterMapper.selectFiled(master);
+ return new OffsetLimitPage((Page) list);
+ }
+
+ @Override
+ public List selectByCol(Archive_Master_Vo archiveMasterVo) {
+ return archiveMasterMapper.selectByCol(archiveMasterVo);
+ }
+
+ @Override
+ public List selectByColumn(Archive_Master_Vo archiveMasterVo) {
+ setMaxRoleId(archiveMasterVo);
+ List list = archiveMasterMapper.selectByColumn(archiveMasterVo);
+ //根据状态code转换状态及判断显示按钮
+ if(null != list && !list.isEmpty()){
+ //查询流转角色集合
+ List flowRoles = flowRoleMapper.selectAll();
+ //计算属于哪种审核角色
+ Msg role = getRole();
+ if(null != role) {
+ for (int i = 0; i < list.size(); i++) {
+ String archivestate = list.get(i).getArchivestate();
+ if (StringUtils.isNotBlank(archivestate)) {
+ //转换中文状态
+ boolean numeric = isNumeric(archivestate);
+ if(numeric) {
+ Integer status = Integer.valueOf(archivestate);
+ archivestate = EnumVerify.DocState.GetStepName(status, role.getCode());
+ list.get(i).setStatus(archivestate);
+ //获取审核按钮和退回按钮集合
+ String btns = getBtns(status, flowRoles, list.get(i).getId());
+ list.get(i).setBtns(btns);
+ }
+ }
+ }
+ }
+ }
+ return list;
+ }
+
+ //验证字符串是否是数字
+ public static boolean isNumeric(String str){
+ for (int i = 0; i < str.length(); i++){
+ if (!Character.isDigit(str.charAt(i))){
+ return false;
+ }
+ }
+ return true;
+ }
+ /**
+ * 处理已审批查询时的节点id,且是多个的
+ * @param archiveMasterVo
+ * @return
+ */
+ private void setMaxRoleId(Archive_Master_Vo archiveMasterVo){
+ String status = archiveMasterVo.getStatus();
+ //取最大值
+ String archivestate = archiveMasterVo.getArchivestate();
+ if(StringUtils.isNotBlank(status) && StringUtils.isNotBlank(archivestate)){
+ //查询已审批才处理
+ if("1".equals(archivestate) && status.contains(",")) {
+ Integer maxStatus = 0;
+ String[] statusArr = status.split(",");
+ for (String statu : statusArr) {
+ if (StringUtils.isNotBlank(statu)) {
+ Integer integer = Integer.valueOf(statu);
+ if (maxStatus < integer) {
+ //重新赋值
+ maxStatus = integer;
+ }
+ }
+ }
+ //设置角色index
+ archiveMasterVo.setStatus(maxStatus+"");
+ }
+ }
+ }
+
+ @Override
+ public List selectByUnfile(Archive_Master_Vo archiveMasterVo) {
+ List list = archiveMasterMapper.selectByUnfile(archiveMasterVo);
+ //根据状态code转换状态及判断显示按钮
+ if(null != list && !list.isEmpty()){
+ //计算属于哪种审核角色
+ Msg role = getRole();
+ if(null != role) {
+ for (int i = 0; i < list.size(); i++) {
+ String archivestate = list.get(i).getArchivestate();
+ String dischargeDateTime = list.get(i).getDischargeDateTime();
+ //年份是1801定义为在院
+ //定义是否是在院病历
+ boolean flag = false;
+ if(StringUtils.isNotBlank(dischargeDateTime) && dischargeDateTime.length() >= 4){
+ String year = dischargeDateTime.substring(0, 4);
+ if("1801".equals(year)){
+ flag = true;
+ list.get(i).setStatus("在院");
+ }
+ }
+ if (StringUtils.isNotBlank(archivestate) && !flag) {
+ //转换中文状态
+ Integer status = Integer.valueOf(archivestate);
+ archivestate = EnumVerify.DocState.GetStepName(status, role.getCode());
+ list.get(i).setStatus(archivestate);
+ }
+ }
+ }
+ }
+ return list;
+ }
+
+ @Override
+ public List selectByLast(Archive_Master_Vo archiveMasterVo) {
+ return archiveMasterMapper.selectByLast(archiveMasterVo);
+ }
+
+ /**
+ * 获取审核按钮和退回按钮集合
+ * */
+ private String getBtns(Integer status,List roles,String id){
+ String btns = "";
+ //获取用户功能权限信息
+ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+ Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER");
+ Set menus = user.getMenus();
+ if(null != menus && !menus.isEmpty()) {
+ //医生提交权限标识
+ String doctorSumbit = "/beHosp/doctorSumbit";
+ //医生质控员质控权限标识
+ String doctorCheckSumbit = "/beHosp/doctorCheckSumbit";
+ //科主任审核权限标识
+ String directorCheckSumbit = "/beHosp/directorCheckSumbit";
+ //护士提交权限标识
+ String nurseSumbit = "/beHosp/nurseSumbit";
+ //护士质控员质控权限标识
+ String nurseCheckSumbit = "/beHosp/nurseCheckSumbit";
+ //护士长审核权限标识
+ String headNurseCheck = "/beHosp/headNurseCheck";
+ //退回权限标识
+ String backSumbit = "/beHosp/backSumbit";
+ //医生提交权限标识
+ int doctorSumbitPower = 0;
+ //医生质控员质控权限标识
+ int doctorCheckSumbitPower = 0;
+ //科主任审核权限标识
+ int directorCheckSumbitPower = 0;
+ //护士提交权限标识
+ int nurseSumbitPower = 0;
+ //护士质控员质控权限标识
+ int nurseCheckSumbitPower = 0;
+ //护士长审核权限标识
+ int headNurseCheckPower = 0;
+ //退回权限标识
+ int backPower = 0;
+ //遍历,判断拥有权限,拥有护士长权限立即返回4,拥有医生支线赋值doctorRole=1,拥有护士支线赋值nurseRole=1
+ for (String menu : menus) {
+ if (StringUtils.isNotBlank(menu)) {
+ if (menu.equals(doctorSumbit+"")) {
+ doctorSumbitPower = 1;
+ }
+ if (menu.equals(doctorCheckSumbit+"")) {
+ doctorCheckSumbitPower = 1;
+ }
+ if (menu.equals(directorCheckSumbit+"")) {
+ directorCheckSumbitPower = 1;
+ }
+ if (menu.equals(nurseSumbit+"")) {
+ nurseSumbitPower = 1;
+ }
+ if (menu.equals(nurseCheckSumbit+"")) {
+ nurseCheckSumbitPower = 1;
+ }
+ if (menu.equals(headNurseCheck+"")) {
+ headNurseCheckPower = 1;
+ }
+ if (menu.equals(backSumbit+"")) {
+ backPower = 1;
+ }
+ }
+ }
+ //判断按钮
+ //定义按钮
+ String headNurseSumbitName = "护士长审核";
+ String doctorSumbitName = "医生提交";
+ String doctorCheckSumbitName = "医生质控员质控";
+ String directorCheckSumbitName = "科主任审核";
+ String nurseSumbitName = "护士提交";
+ String nurseCheckSumbitName = "护士质控员质控";
+ //定义医生提交是否有效
+ int doctorSubmitEffective = 0;
+ //定义医生质控员是否有效
+ int dortorCheckEffective = 0;
+ //定义科主任审核是否有效
+ int directorCheckEffective = 0;
+ //定义护士提交是否有效
+ int nurseSubmitEffective = 0;
+ //定义护士质控员质控是否有效
+ int nurseCheckEffective = 0;
+ //定义护士长质控是否有效
+ int headNurseCheckEffective = 0;
+ for (ArchiveFlowRole flowRole : roles) {
+ if(flowRole.getCode().equals(EnumVerify.DocState.HeadNurseCheck.getCode()+"")){
+ headNurseSumbitName = flowRole.getSumbitName();
+ headNurseCheckEffective = flowRole.getEffective();
+ }else if(flowRole.getCode().equals(EnumVerify.DocState.DortorSubmit.getCode()+"")){
+ doctorSumbitName = flowRole.getSumbitName();
+ doctorSubmitEffective = flowRole.getEffective();
+ }else if(flowRole.getCode().equals(EnumVerify.DocState.DortorCheck.getCode()+"")){
+ doctorCheckSumbitName = flowRole.getSumbitName();
+ dortorCheckEffective = flowRole.getEffective();
+ }else if(flowRole.getCode().equals(EnumVerify.DocState.DirectorCheck.getCode()+"")){
+ directorCheckSumbitName = flowRole.getSumbitName();
+ directorCheckEffective = flowRole.getEffective();
+ }else if(flowRole.getCode().equals(EnumVerify.DocState.NurseSubmit.getCode()+"")){
+ nurseSumbitName = flowRole.getSumbitName();
+ nurseSubmitEffective = flowRole.getEffective();
+ }else if(flowRole.getCode().equals(EnumVerify.DocState.NurseCheck.getCode()+"")){
+ nurseCheckSumbitName = flowRole.getSumbitName();
+ nurseCheckEffective = flowRole.getEffective();
+ }
+ }
+ //判断组织审核按钮
+ //审核按钮参数1:角色编号1或2或4。2:当前code。3.下个节点code。4:masterId
+ //退回按钮参数1:当前code。2:下个节点code。3:masterId
+ //护士长
+ String masterId = '"' + id + '"';
+ //定义下个节点code
+ Integer targetCode = 0;
+ if(!EnumVerify.DocState.HasCurrentState(status,EnumVerify.DocState.HeadNurseCheck)){
+ //判断是否护士长审核
+ boolean headNurseCheckFlag = getHeadNurseCheckFlag(status,roles);
+ if (headNurseCheckFlag) {
+ if (headNurseCheckPower == 1 && headNurseCheckEffective == 1) {
+ targetCode = EnumVerify.DocState.HeadNurseCheck.getCode();
+ btns += "";
+
+ }
+ } else {
+ //没有医生提交
+ if (!EnumVerify.DocState.HasCurrentState(status, EnumVerify.DocState.DortorSubmit)) {
+ if (doctorSumbitPower == 1 && doctorSubmitEffective == 1) {
+ targetCode = EnumVerify.DocState.DortorSubmit.getCode();
+ btns += "";
+ }
+ }
+ //没有医生质控员提交
+ if (!EnumVerify.DocState.HasCurrentState(status, EnumVerify.DocState.DortorCheck) && EnumVerify.DocState.HasCurrentState(status, EnumVerify.DocState.DortorSubmit) || doctorSubmitEffective == 0) {
+ if (doctorCheckSumbitPower == 1 && dortorCheckEffective == 1) {
+ targetCode = EnumVerify.DocState.DortorCheck.getCode();
+ btns += "";
+ }
+ }
+ //没有科主任审核
+ if (!EnumVerify.DocState.HasCurrentState(status, EnumVerify.DocState.DirectorCheck) && EnumVerify.DocState.HasCurrentState(status, EnumVerify.DocState.DortorCheck) || (dortorCheckEffective == 0 && doctorSubmitEffective == 0) || (dortorCheckEffective == 0 && EnumVerify.DocState.HasCurrentState(status, EnumVerify.DocState.DortorSubmit))) {
+ if (directorCheckSumbitPower == 1 && directorCheckEffective == 1) {
+ targetCode = EnumVerify.DocState.DirectorCheck.getCode();
+ btns += "";
+ }
+ }
+ //没有护士提交
+ if (!EnumVerify.DocState.HasCurrentState(status, EnumVerify.DocState.NurseSubmit)) {
+ if (nurseSumbitPower == 1 && nurseSubmitEffective == 1) {
+ targetCode = EnumVerify.DocState.NurseSubmit.getCode();
+ btns += "";
+ }
+ //没有护士质控员提交
+ }
+ if (!EnumVerify.DocState.HasCurrentState(status, EnumVerify.DocState.NurseCheck) && EnumVerify.DocState.HasCurrentState(status, EnumVerify.DocState.NurseSubmit) || nurseSubmitEffective == 0) {
+ if (nurseCheckSumbitPower == 1 && nurseCheckEffective == 1) {
+ targetCode = EnumVerify.DocState.NurseCheck.getCode();
+ btns += "";
+ }
+ }
+ }
+ //退回按钮
+ if(StringUtils.isNotBlank(btns) && backPower == 1){
+ btns += "";
+ }
+ }
+ }
+ return btns;
+ }
+ /**
+ * 计算是否属于护士长审核
+ * */
+ private boolean getHeadNurseCheckFlag(int status,List roles){
+ boolean flag = true;
+ List effectiveRoles = new ArrayList<>();
+ //遍历查询匹配医生和护士支线最后节点均已提交
+ for (ArchiveFlowRole role : roles) {
+ //获取步骤
+ Integer stepIndex = role.getStepIndex();
+ //获取有效
+ Short effective = role.getEffective();
+ //获取有效且护士长审核前的节点且不包含开始节点
+ if (null != stepIndex && stepIndex < 4 && stepIndex > 0 && effective == 1) {
+ effectiveRoles.add(role);
+ }
+ }
+ if(!effectiveRoles.isEmpty()){
+ for(ArchiveFlowRole role : effectiveRoles){
+ //获取节点code
+ String code = role.getCode();
+ //转换类型
+ Integer integerCode = Integer.valueOf(code);
+ //其中有一个不包含直接返回false
+ if((status & integerCode) == 0){
+ return false;
+ }
+ }
+ }
+ return flag;
+ }
+
+ @Override
+ public int updateByClo(Archive_Master record) {
+ return archiveMasterMapper.updateByClo(record);
+ }
+
+ @Override
+ public int updateById(Archive_Master record) {
+ return archiveMasterMapper.updateById(record);
+ }
+
+ @Override
+ public Archive_Master selectByPrimaryKey(String id) {
+ return archiveMasterMapper.selectByPrimaryKey(id);
+ }
+
+ /**
+ * 退回操作
+ * */
+ @Override
+ public int updateReturn(Emr_Fault_Detail_Vo emrFaultDetail) throws Exception{
+ //修改病案归档状态:复审退回
+ Archive_Master archiveMaster = new Archive_Master();
+ archiveMaster.setId(emrFaultDetail.getArchiveDetailId());
+ // 从session获取用户名
+ String username = (String) SecurityUtils.getSubject().getSession().getAttribute("userSession");//获取前面登录的用户名
+ //设置回退给角色信息
+ String returntoRole = emrFaultDetail.getReturntoRole();
+ archiveMaster.setReturntoRole(returntoRole);
+ log.info(username+"将病案:"+emrFaultDetail.getArchiveDetailId()+"退回给"+returntoRole);
+ if(StringUtils.isNotBlank(emrFaultDetail.getStatus())) {
+ int status = Integer.valueOf(emrFaultDetail.getStatus());
+ //计算状态code
+ //查询审核角色集合,根据有效进行计算状态code
+ List archiveFlowRoles = flowRoleMapper.selectAll();
+ //定义masterId
+ String masterId = emrFaultDetail.getArchiveDetailId();
+ //定义下个节点code
+ String targetCode = "";
+ //为空为病案室退回
+ if(null == emrFaultDetail.getTargetCode()){
+ targetCode = EnumVerify.DocState.MedicalRoomCheck.getCode() + "";
+ }else{
+ targetCode = emrFaultDetail.getTargetCode() + "";
+ }
+ //定义退回内容
+ String remark = emrFaultDetail.getBackContent();
+ Integer backToCode = 0;
+ //流转记录的最新id
+ Integer flowInfoId = 0;
+ //参数输入
+ SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String nowTime = format1.format(new Date());
+ //修改复审内容
+ emrFaultDetail.setCreater(username);
+ emrFaultDetail.setCreateTime(nowTime);
+ switch (returntoRole) {
+ //退回给医生
+ case "DOCTOR":
+ status = EnumVerify.DocState.backToDoctor(Integer.valueOf(emrFaultDetail.getStatus()),archiveFlowRoles);
+ //添加进流转记录
+ backToCode = EnumVerify.DocState.DortorBack.getCode();
+ flowInfoId = flowInfoService.insertFlowInfo(masterId,targetCode,remark,backToCode,new Date());
+ emrFaultDetail.setParentId(flowInfoId);
+ //添加缺陷记录
+ emrFaultDetailService.insertSel(emrFaultDetail);
+ break;
+ //退回给护士
+ case "NURSE":
+ backToCode = EnumVerify.DocState.NurseBack.getCode();
+ status = EnumVerify.DocState.backToNurse(Integer.valueOf(emrFaultDetail.getStatus()),archiveFlowRoles);
+ //添加进流转记录
+ flowInfoId = flowInfoService.insertFlowInfo(masterId,targetCode,remark,backToCode,new Date());
+ emrFaultDetail.setParentId(flowInfoId);
+ //添加缺陷记录
+ emrFaultDetailService.insertSel(emrFaultDetail);
+ break;
+ //退回给医生和护士
+ case "ALL":
+ status = EnumVerify.DocState.backToAll();
+ backToCode = EnumVerify.DocState.DortorBack.getCode();
+ flowInfoId = flowInfoService.insertFlowInfo(masterId,targetCode,remark,backToCode,new Date());
+ emrFaultDetail.setParentId(flowInfoId);
+ //添加缺陷记录
+ emrFaultDetailService.insertSel(emrFaultDetail);
+ backToCode = EnumVerify.DocState.NurseBack.getCode();
+ flowInfoId = flowInfoService.insertFlowInfo(masterId,targetCode,remark,backToCode,new Date());
+ emrFaultDetail.setParentId(flowInfoId);
+ //添加缺陷记录
+ emrFaultDetailService.insertSel(emrFaultDetail);
+ break;
+ }
+ archiveMaster.setArchivestate(status + "");
+ }
+ //设置回退操作人信息
+ archiveMaster.setReturnOperUsername(username);
+ updateByClo(archiveMaster);
+
+ //退回金蝶
+ //获取基本信息
+ /*Archive_Master archiveMaster1 = selectByPrimaryKey(emrFaultDetail.getArchiveDetailId());
+ try {
+ String msg = "" +
+ "" + archiveMaster1.getPatientId() + "" +
+ "" + archiveMaster1.getVisitId() + "" +
+ "" + archiveMaster1.getInpNo() + "" +
+ "" + emrFaultDetail.getReturntoRole() + "" +
+ "01" +
+ "修改病历" +
+ "" + archiveMaster1.getDeptName() + "" +
+ "" + username + "" +
+ "8913" +
+ "" + nowTime + "" +
+ "24" +
+ "";
+ log.info(msg);
+ JAXDynamicClientFactory clientFactory = JAXDynamicClientFactory.newInstance();
+ String url = "http://192.168.10.39:8001/KingdeeEmrArchiveReturn.asmx?wsdl";
+ String param1 = "http://tempuri.org/";
+ String param2 = "SetArchieveReturn";
+ Client client = clientFactory.createClient(url);
+ QName qname = new QName(param1, param2);
+ Object[] result = client.invoke(qname, msg);
+ *//*Document document = DocumentHelper.parseText(result[0].toString());
+ Element rootElement = document.getRootElement();
+ Iterator iterator = rootElement.elementIterator();
+ while (iterator.hasNext()) {
+ Element element = (Element) iterator.next();
+ if ("resultCode".equals(element.getName())) {
+ System.out.println("resultCode:" + element.getTextTrim());
+ }
+ if ("resultDesc".equals(element.getName())) {
+ System.out.println("resultDesc:" + element.getTextTrim());
+ }
+ }*//*
+ log.info("回退成功!");
+ }catch(Exception e){
+ log.info("回退出错了!");
+ log.info(e.getMessage());
+ throw new RuntimeException();
+ }*/
+ return 1;
+ }
+
+ @Override
+ public List selectByObject(Archive_Master master) {
+ return archiveMasterMapper.selectByObject(master);
+ }
+
+ /**
+ * author:zwh
+ * 初审审核操作
+ * */
+ @Override
+ public Msg updateStateByArchivId(Archive_Master_Vo master) throws Exception{
+ //修改病案归档状态
+ //计算审核状态code
+ String archivestate = master.getArchivestate();
+ if (StringUtils.isNotBlank(archivestate)) {
+ Integer code = Integer.valueOf(archivestate);
+ //查询审核角色集合,根据有效进行计算状态code
+ List archiveFlowRoles = flowRoleMapper.selectAll();
+ Integer role = master.getRole();
+ //计算状态code
+ //code:当前状态code,role:角色1医生2护士3护士长,archiveFlowRoles:根据有效的审核角色进行计算
+ int statuCode = EnumVerify.DocState.GetNextStepCode(code,role, archiveFlowRoles);
+ master.setArchivestate(statuCode+"");
+ //复制对象
+ Archive_Master archiveMaster = new Archive_Master();
+ BeanUtils.copyProperties(master,archiveMaster);
+ //更新
+ updateByClo(archiveMaster);
+ //添加进流转记录
+ flowInfoService.insertFlowInfo(master.getId(),master.getStatus()+"",master.getRemark(),null,new Date());
+ return Msg.success();
+ } else {
+ return Msg.fail("初始状态出错了!");
+ }
+ }
+
+ /**
+ * author:zwh
+ * 终审审核操作
+ * */
+ @Override
+ public void updateFiled(Archive_Master_Vo master) throws Exception{
+ // 从session获取用户名
+ String username = (String) SecurityUtils.getSubject().getSession().getAttribute("userSession");//获取前面登录的用户名
+ SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ //修改病案归档状态
+ Archive_Master archiveMaster = new Archive_Master();
+ //拷贝对象
+ BeanUtils.copyProperties(master,archiveMaster);
+ //定义提交时间
+ //设置审核时间
+ Date sumbitDate = new Date();
+ if(StringUtils.isBlank(master.getCheckedDatetime())){
+ //未手动修改终审时间,使用当前时间
+ archiveMaster.setCheckedDatetime(format1.format(new Date()));
+ }else{
+ //手动修改终审时间,是否修改的时间
+ archiveMaster.setCheckedDatetime(master.getCheckedDatetime());
+ sumbitDate = format1.parse(master.getCheckedDatetime());
+ }
+ //设置审核人
+ archiveMaster.setCheckedDoctor(username);
+ //设为已归档状态
+ archiveMaster.setArchivestate(EnumVerify.DocState.MedicalRoomCheck.getCode()+"");
+ //更新
+ updateByClo(archiveMaster);
+ //当前节点两种可能病案室审核和已召回
+ //是已召回,将当前节点code置为病案室审核
+ String currentStatus = EnumVerify.DocState.MedicalRoomCheck.getCode() + "";
+ //添加流转节点
+ flowInfoService.insertFlowInfo(master.getId(),currentStatus,master.getRemark(),EnumVerify.DocState.MedicalRoomCheck.getCode(),sumbitDate);
+ /*//masterId;
+ flowInfo.setMasterId(master.getId());
+ //stepIndex:当前步骤
+ ArchiveFlowRole currentRole = new ArchiveFlowRole();
+ //查询审核角色集合,根据有效进行计算状态code
+ List archiveFlowRoles = flowRoleMapper.selectAll();
+ for (ArchiveFlowRole archiveFlowRole:archiveFlowRoles) {
+ if(archiveFlowRole.getCode().equals(EnumVerify.DocState.MedicalRoomCheck.getCode()+"")){
+ currentRole = archiveFlowRole;
+ break;
+ }
+ }
+ flowInfo.setStepIndex(currentRole.getStepIndex());
+ //startStep:当前步骤name
+ flowInfo.setStartStep(currentRole.getName());
+ //sumbitName:按钮名称
+ flowInfo.setSumbitName(currentRole.getSumbitName());
+ //targetStep:下一步骤name
+ flowInfo.setTargetStep("已归档");
+ //useSeconds:距离上次提交用时s数
+ Date preDate = new Date();
+ //查询上次节点的时间
+ List archiveFlowInfos = flowInfoMapper.selectPreInfo(master.getId(), currentRole.getName());
+ if(null != archiveFlowInfos && !archiveFlowInfos.isEmpty()){
+ //存在取最后一次提交时间
+ preDate = archiveFlowInfos.get(0).getCreatetime();
+ }else{
+ //取出院时间
+ Archive_Master archiveMaster1 = archiveMasterMapper.selectByPrimaryKey(master.getId());
+ SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String dischargeDateTime = archiveMaster1.getDischargeDateTime();
+ if(StringUtils.isNotBlank(dischargeDateTime)){
+ preDate = fmt.parse(dischargeDateTime);
+ }
+ }
+ if(null != preDate){
+ long millis = sumbitDate.getTime() - preDate.getTime();
+ flowInfo.setUseSeconds(millis/1000);
+ }
+ //remark:提交内容
+ flowInfo.setRemark(master.getRemark());
+ //userName:提交人用户名
+ // 从session获取用户名
+ flowInfo.setUserName(username);
+ //createtime:提交时间
+ flowInfo.setSumbitTime(sumbitDate);
+ //createtime:创建时间
+ flowInfo.setCreatetime(new Date());
+ flowInfoMapper.insert(flowInfo);*/
+ }
+
+ /**
+ * 获取当前角色属于审核哪种角色
+ * 医生支线返回1,护士支线返回2,一般审核者返回3
+ * */
+ @Override
+ public Msg getRole(){
+ Msg msg = new Msg();
+ //获取用户功能权限信息
+ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+ Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER");
+ Set menus = user.getMenus();
+ if(null != menus && !menus.isEmpty()){
+ //定义医生支线role
+ int doctorRole = 0;
+ //定义护士支线role
+ int nurseRole = 0;
+ //护士长审核权限标识
+ String headNurseCheck = "/beHosp/headNurseCheck";
+ //医生提交权限标识
+ String doctorSumbit = "/beHosp/doctorSumbit";
+ //医生质控员质控权限标识
+ String doctorCheckSumbit = "/beHosp/doctorCheckSumbit";
+ //科主任审核权限标识
+ String directorCheckSumbit = "/beHosp/directorCheckSumbit";
+ //护士提交权限标识
+ String nurseSumbit = "/beHosp/nurseSumbit";
+ //护士质控员质控权限标识
+ String nurseCheckSumbit = "/beHosp/nurseCheckSumbit";
+ int genegrateRole = 0;
+ //拼接有权限的code
+ String powerCode = "";
+ Integer role = 0;
+ //遍历,判断拥有权限,拥有护士长权限立即返回4,拥有医生支线赋值doctorRole=1,拥有护士支线赋值nurseRole=1
+ for (String menu : menus) {
+ if(StringUtils.isNotBlank(menu)){
+ if(menu.equals(doctorSumbit)){
+ doctorRole = 1;
+ powerCode += EnumVerify.DocState.DortorSubmit.getCode() + ",";
+ }
+ if(menu.equals(doctorCheckSumbit)){
+ doctorRole = 1;
+ powerCode += EnumVerify.DocState.DortorCheck.getCode() + ",";
+ }
+ if(menu.equals(directorCheckSumbit)){
+ doctorRole = 1;
+ powerCode += EnumVerify.DocState.DirectorCheck.getCode() + ",";
+ }
+ if(menu.equals(nurseSumbit)){
+ nurseRole = 1;
+ powerCode += EnumVerify.DocState.NurseSubmit.getCode() + ",";
+ }
+ if(menu.equals(nurseCheckSumbit)){
+ nurseRole = 1;
+ powerCode += EnumVerify.DocState.NurseCheck.getCode() + ",";
+ }
+ if(menu.equals(headNurseCheck)){
+ genegrateRole = 1;
+ powerCode += EnumVerify.DocState.HeadNurseCheck.getCode() + ",";
+ }
+ }
+ }
+ if(powerCode.endsWith(",")){
+ powerCode = powerCode.substring(0,powerCode.length()-1);
+ }
+ msg.setMsg(powerCode);
+ //判断属于哪个支线权限
+ if(doctorRole == 1 && nurseRole == 0){
+ msg.setCode(1);
+ }
+ if(doctorRole == 0 && nurseRole == 1){
+ msg.setCode(2);
+ }
+ if(doctorRole == 1 && nurseRole == 1 || genegrateRole == 1){
+ msg.setCode(4);
+ }
+ return msg;
+ }
+ return null;
+ }
+}
+
+
diff --git a/src/main/java/com/emr/service/ipml/Emr_Archive_DetailServiceImpl.java b/src/main/java/com/emr/service/ipml/Emr_Archive_DetailServiceImpl.java
new file mode 100644
index 0000000..ba215e1
--- /dev/null
+++ b/src/main/java/com/emr/service/ipml/Emr_Archive_DetailServiceImpl.java
@@ -0,0 +1,21 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 15:41
+ * Description:病历文件归类管理
+ */
+package com.emr.service.ipml;
+
+import com.emr.dao.Emr_Archive_DetailMapper;
+import com.emr.service.Emr_Archive_DetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class Emr_Archive_DetailServiceImpl implements Emr_Archive_DetailService {
+
+ @Autowired
+ private Emr_Archive_DetailMapper emrArchiveDetailMapper;
+}
+
+
diff --git a/src/main/java/com/emr/service/ipml/Emr_DictionaryServiceImpl.java b/src/main/java/com/emr/service/ipml/Emr_DictionaryServiceImpl.java
new file mode 100644
index 0000000..f89462a
--- /dev/null
+++ b/src/main/java/com/emr/service/ipml/Emr_DictionaryServiceImpl.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/26 15:51
+ * Description:
+ */
+package com.emr.service.ipml;
+
+import com.emr.dao.Emr_Archive_DetailMapper;
+import com.emr.dao.Emr_DictionaryMapper;
+import com.emr.entity.Emr_Dictionary;
+import com.emr.service.Emr_DictionaryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class Emr_DictionaryServiceImpl implements Emr_DictionaryService {
+
+ @Autowired
+ private Emr_DictionaryMapper emrDictionaryMapper;
+ @Override
+ public List dicByTypeCode(Emr_Dictionary emrDictionary) {
+ return emrDictionaryMapper.dicByTypeCode(emrDictionary);
+ }
+
+ @Override
+ public List dicByClo(Emr_Dictionary emrDictionary) {
+ return emrDictionaryMapper.dicByClo(emrDictionary);
+ }
+
+ @Override
+ public int insertSel(Emr_Dictionary emrDictionary) {
+ return emrDictionaryMapper.insertSel(emrDictionary);
+ }
+
+ @Override
+ public int delById(Integer id) {
+ return emrDictionaryMapper.delById(id);
+ }
+
+ @Override
+ public int updateCloById(Emr_Dictionary emrDictionary) {
+ return emrDictionaryMapper.updateCloById(emrDictionary);
+ }
+}
+
+
diff --git a/src/main/java/com/emr/service/ipml/Emr_Fault_DetailServiceImpl.java b/src/main/java/com/emr/service/ipml/Emr_Fault_DetailServiceImpl.java
new file mode 100644
index 0000000..79db32b
--- /dev/null
+++ b/src/main/java/com/emr/service/ipml/Emr_Fault_DetailServiceImpl.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 15:43
+ * Description:缺陷管理
+ */
+package com.emr.service.ipml;
+
+import com.emr.dao.Emr_Fault_DetailMapper;
+import com.emr.entity.*;
+import com.emr.service.Archive_MasterService;
+import com.emr.service.Emr_DictionaryService;
+import com.emr.service.Emr_Fault_DetailService;
+import com.emr.service.Emr_Fault_TypeService;
+import com.emr.util.Msg;
+import com.emr.vo.User;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import org.apache.commons.lang3.StringUtils;
+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 java.util.Arrays;
+import java.util.List;
+
+@Service
+@Transactional
+public class Emr_Fault_DetailServiceImpl implements Emr_Fault_DetailService {
+
+ @Autowired
+ private Emr_Fault_DetailMapper emrFaultDetailMapper;
+
+ @Autowired
+ private Emr_Fault_TypeService emrFaultTypeService;
+
+ @Autowired
+ private Emr_DictionaryService emrDictionaryService;
+ @Autowired
+ private Archive_MasterService archiveMasterService;
+ @Autowired
+ private StatisticsService statisticsService;
+ /**
+ * 根据条件查询缺陷列表
+ * 病案终审退回
+ * @param emrFaultVo
+ * @return
+ */
+ @Override
+ public OffsetLimitPage selectByCol(Emr_Fault_Vo emrFaultVo, Integer offset, Integer limit) {
+ PageHelper.offsetPage(offset, limit);
+ List list = selectByCol(emrFaultVo);
+ return new OffsetLimitPage((Page) list);
+ }
+
+ @Override
+ public List selectByCol(Emr_Fault_Vo emrFaultVo) {
+ List list = emrFaultDetailMapper.selectByCol(emrFaultVo);
+ Emr_Dictionary dic = new Emr_Dictionary();
+ dic.setEffective(1);
+ dic.setTypecode("dept_code");
+ //科室列表
+ List dicList = emrDictionaryService.dicByTypeCode(dic);
+ //获取缺陷类别列表
+ Emr_Fault_Type obj = new Emr_Fault_Type();
+ obj.setEffective(1);
+ List typeLis = emrFaultTypeService.selectByCol(obj);
+ Msg role = archiveMasterService.getRole();
+ List userList = statisticsService.getUserList();
+ if(null != role) {
+ for (int i = 0; i < list.size(); i++) {
+ //根据状态code转换状态及判断显示按钮
+ //计算属于哪种审核角色
+ String archivestate = list.get(i).getArchivestate();
+ if (StringUtils.isNotBlank(archivestate)) {
+ //转换中文状态
+ Integer status = Integer.valueOf(archivestate);
+ archivestate = EnumVerify.DocState.GetStepName(status, role.getCode());
+ list.get(i).setArchivestate(archivestate);
+ }
+ //替换科室
+ for (int k = 0; k < dicList.size(); k++) {
+ String deptName = list.get(i).getDeptName();
+ //入院科室dept_admission_to
+ String dept2 = list.get(i).getDeptAdmissionTo();
+
+ if ((deptName != null && deptName.equals(dicList.get(k).getCode())) || (dept2 != null && dept2.equals(dicList.get(k).getCode()))) {
+ //出院科室
+ deptName = deptName.replace(deptName, dicList.get(k).getName());
+ list.get(i).setDeptName(deptName);
+
+ dept2 = dept2.replace(dept2, dicList.get(k).getName());
+ list.get(i).setDeptAdmissionTo(dept2);
+ }
+ }
+
+ String assortId = list.get(i).getAssortId();
+ if (assortId != "" && assortId != null) {
+ String[] assorArr = assortId.split(",");
+ //替换类别
+ for (int j = 0; j < typeLis.size(); j++) {
+ String id = String.valueOf(typeLis.get(j).getId());
+ if (Arrays.asList(assorArr).contains(id)) {
+ assortId = assortId.replace(id, typeLis.get(j).getTypeName());
+ list.get(i).setAssortId(assortId);
+ }
+ }
+ }
+ //替换姓名
+ if(!CollectionUtils.isEmpty(userList)) {
+ //转换姓名
+ String userName = list.get(i).getCreater();
+ for (User user : userList) {
+ if (StringUtils.isNotBlank(userName) && userName.equals(user.getUserName())) {
+ list.get(i).setCreater(user.getName());
+ break;
+ }
+ }
+ }
+ }
+ }
+ return list;
+ }
+
+ @Override
+ public int updateCloByPrimaryKey(Emr_Fault_Detail emrFaultDetail) {
+ return emrFaultDetailMapper.updateCloByPrimaryKey(emrFaultDetail);
+ }
+
+ @Override
+ public Emr_Fault_Detail selectByArchiveDetailId(Emr_Fault_Detail record) {
+ return emrFaultDetailMapper.selectByArchiveDetailId(record);
+ }
+
+ @Override
+ public int insertSel(Emr_Fault_Detail record) {
+ return emrFaultDetailMapper.insertSel(record);
+ }
+}
+
+
diff --git a/src/main/java/com/emr/service/ipml/Emr_Fault_TypeServiceImpl.java b/src/main/java/com/emr/service/ipml/Emr_Fault_TypeServiceImpl.java
new file mode 100644
index 0000000..2c35547
--- /dev/null
+++ b/src/main/java/com/emr/service/ipml/Emr_Fault_TypeServiceImpl.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 15:46
+ * Description:缺陷类别管理
+ */
+package com.emr.service.ipml;
+
+import com.emr.dao.Emr_Fault_TypeMapper;
+import com.emr.entity.Emr_Fault_Type;
+import com.emr.service.Emr_Fault_TypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class Emr_Fault_TypeServiceImpl implements Emr_Fault_TypeService {
+
+ @Autowired
+ private Emr_Fault_TypeMapper emrFaultTypeMapper;
+
+ @Override
+ public List selectByCol(Emr_Fault_Type record) {
+ return emrFaultTypeMapper.selectByCol(record);
+ }
+
+ @Override
+ public int updateByClo(Emr_Fault_Type record) {
+ return emrFaultTypeMapper.updateByClo(record);
+ }
+
+ @Override
+ public int insertClo(Emr_Fault_Type record) {
+ return emrFaultTypeMapper.insertClo(record);
+ }
+
+ @Override
+ public int delById(Integer id) {
+ return emrFaultTypeMapper.delById(id);
+ }
+
+ @Override
+ public Emr_Fault_Type selectById(Integer id) {
+ return emrFaultTypeMapper.selectById(id);
+ }
+}
+
+
diff --git a/src/main/java/com/emr/service/ipml/Emr_PictureServiceImpl.java b/src/main/java/com/emr/service/ipml/Emr_PictureServiceImpl.java
new file mode 100644
index 0000000..24f4811
--- /dev/null
+++ b/src/main/java/com/emr/service/ipml/Emr_PictureServiceImpl.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 15:48
+ * Description:
+ */
+package com.emr.service.ipml;
+
+import com.emr.dao.Emr_PictureMapper;
+import com.emr.entity.Emr_Picture;
+import com.emr.service.Emr_PictureService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class Emr_PictureServiceImpl implements Emr_PictureService {
+
+ @Autowired
+ private Emr_PictureMapper emrPictureMapper;
+
+ @Override
+ public Emr_Picture selectByid(String id) {
+ return emrPictureMapper.selectByid(id);
+ }
+
+ @Override
+ public int insertSel(Emr_Picture record) {
+ return emrPictureMapper.insertSel(record);
+ }
+
+ @Override
+ public int updateCloByIdOrFlay(Emr_Picture record) {
+ return emrPictureMapper.updateCloByIdOrFlay(record);
+ }
+
+ @Override
+ public List selectByClo(Emr_Picture record) {
+ return emrPictureMapper.selectByClo(record);
+ }
+
+ @Override
+ public int deleteById(String id) {
+ return emrPictureMapper.deleteById(id);
+ }
+
+
+}
+
+
diff --git a/src/main/java/com/emr/service/ipml/EnumVerify.java b/src/main/java/com/emr/service/ipml/EnumVerify.java
new file mode 100644
index 0000000..53bce65
--- /dev/null
+++ b/src/main/java/com/emr/service/ipml/EnumVerify.java
@@ -0,0 +1,480 @@
+package com.emr.service.ipml;
+
+import com.emr.entity.ArchiveFlowRole;
+import org.junit.jupiter.api.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+public class EnumVerify {
+ /**
+ * 审核角色枚举
+ * */
+ public enum Checker
+ {
+ Dortor(1,"医生"),
+ Nurse(2,"护士"),
+ Generate(4,"一般审核者");
+
+ private int code;
+ private String name;
+
+ private Checker(int code, String name)
+ {
+ this.code = code;
+ this.name = name;
+ }
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }}
+
+ /**
+ * 流转节点角色枚举
+ * */
+ public enum DocState
+ {
+ None(1, "初始状态"),
+ DortorSubmit(2, "医生提交"),
+ DortorCheck(4, "医生质控员质控"),
+ DirectorCheck(8, "科主任审核"),
+ NurseSubmit(16, "护士提交"),
+ NurseCheck(32, "护士质控员质控"),
+ HeadNurseCheck(64, "护士长审核"),
+ MedicalRoomCheck(128, "病案室审核"),
+ DortorBack(256, "医生退回"),
+ NurseBack(512, "护士退回"),
+ CallBacked(1024, "召回");
+
+ private int code;
+ private String name;
+
+ DocState(int code, String name) {
+ this.code = code;
+ this.name = name;
+ }
+
+ DocState() {
+ }
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+/* public static boolean HasCurrentState(int curState, int ds)
+ {
+ return (curState & ds) != 0;
+ }
+
+ public static boolean HasCurrentState(DocState curState, DocState ds)
+ {
+ return (curState.code & ds.code) != 0;
+ }*/
+
+
+ //判断是否包含
+ public static boolean HasCurrentState(int curState, DocState ds)
+ {
+ return (curState & ds.code) != 0;
+ }
+
+ //获取当前步骤的显示名称,可以考虑用JS实现
+ //根据当前状态获取获取状态中文逗号隔开的字符串
+ public static String GetStepName(Integer curState,int role)
+ {
+ String doctorV = "";
+ String nurseV = "";
+ if((Checker.Nurse.code != role)){
+ if(!HasCurrentState(curState, DortorSubmit) && !HasCurrentState(curState, DortorCheck) && !HasCurrentState(curState, DirectorCheck)){
+ doctorV += "," + None.name;
+ }
+ }
+ if((Checker.Dortor.code != role)){
+ if(!HasCurrentState(curState, NurseSubmit) && !HasCurrentState(curState, NurseCheck)){
+ nurseV += "," + None.name;
+ }
+ }
+ if (HasCurrentState(curState, DortorSubmit) && (Checker.Nurse.code != role))
+ {
+ doctorV += ",医生已提交";
+ }
+ if (HasCurrentState(curState, DortorCheck) && (Checker.Nurse.code != role))
+ {
+ doctorV += ",医生质控员已质控";
+ }
+ if (HasCurrentState(curState, DirectorCheck) && (Checker.Nurse.code != role))
+ {
+ doctorV += ",科主任已质控";
+ }
+ if (HasCurrentState(curState, NurseSubmit) && (Checker.Dortor.code != role))
+ {
+ nurseV += ",护士已提交";
+ }
+ if (HasCurrentState(curState, NurseCheck) && (Checker.Dortor.code != role))
+ {
+ nurseV += ",护士质控员已质控";
+ }
+ String tmpV = "";
+ if (HasCurrentState(curState, DortorBack))
+ {
+ if(Checker.Nurse.code != role){
+ doctorV = "医生退回";
+ }
+ }
+ if (HasCurrentState(curState, NurseBack))
+ {
+ if(Checker.Dortor.code != role){
+ nurseV = "护士退回";
+ }
+ }
+ if(Checker.Dortor.code == role){
+ tmpV = doctorV;
+ }else if(Checker.Nurse.code == role){
+ tmpV = nurseV;
+ }else if(Checker.Generate.code == role){
+ if("护士退回".equals(nurseV)){
+ tmpV = doctorV + "," + nurseV;
+ }else{
+ tmpV = doctorV + nurseV;
+ }
+ }
+ if (HasCurrentState(curState, HeadNurseCheck))
+ {
+ tmpV = "护士长已质控";
+ }
+ if (HasCurrentState(curState, MedicalRoomCheck))
+ {
+ tmpV = "已归档";
+ }
+ if (HasCurrentState(curState, CallBacked))
+ {
+ tmpV = "病案室审核";
+ }
+ if(tmpV.startsWith(","))
+ {
+ tmpV = tmpV.substring(1);
+ }
+
+ return tmpV;
+ }
+
+ //获取当前步骤所包含的枚举值,可以返回多个值
+ public static ArrayList GetCurrentStepContainStates(int curState) throws Exception
+ {
+ ArrayList rets = new ArrayList<>();
+ if (HasCurrentState(curState, DortorSubmit))
+ {
+ rets.add(DortorSubmit.code);
+ }
+ if (HasCurrentState(curState, DortorCheck))
+ {
+ rets.add(DortorCheck.code);
+ }
+ if (HasCurrentState(curState, DirectorCheck))
+ {
+ rets.add(DirectorCheck.code);
+ }
+ if (HasCurrentState(curState, NurseSubmit))
+ {
+ rets.add(NurseSubmit.code);
+ }
+ if (HasCurrentState(curState, NurseCheck))
+ {
+ rets.add(NurseCheck.code);
+ }
+ if (HasCurrentState(curState, HeadNurseCheck))
+ {
+ rets.add(HeadNurseCheck.code);
+ }
+ if (HasCurrentState(curState, MedicalRoomCheck))
+ {
+ rets.add(MedicalRoomCheck.code);
+ }
+ if (HasCurrentState(curState, DortorBack))
+ {
+ rets.add(DortorBack.code);
+ }
+ if (HasCurrentState(curState, NurseBack))
+ {
+ rets.add(NurseBack.code);
+ }
+ if (HasCurrentState(curState, None))
+ {
+ rets.add(None.code);
+ }
+ return rets;
+ }
+ //医生累加code
+ public static int GetNextStepCode_Dortor(int curState,List flowRoles) throws Exception
+ {
+ //定义医生提交是否有效
+ int doctorSubmitEffective = 0;
+ //定义医生质控员是否有效
+ int dortorCheckEffective = 0;
+ //定义科主任审核是否有效
+ int directorCheckEffective = 0;
+ if(null != flowRoles && !flowRoles.isEmpty()) {
+ for (ArchiveFlowRole flowRole : flowRoles) {
+ if (flowRole.getCode().equals(DortorSubmit.code+"")){
+ doctorSubmitEffective = flowRole.getEffective();
+ }
+ if (flowRole.getCode().equals(DortorCheck.code+"")){
+ dortorCheckEffective = flowRole.getEffective();
+ }
+ if (flowRole.getCode().equals(DirectorCheck.code+"")){
+ directorCheckEffective = flowRole.getEffective();
+ }
+ //如果遍历完立即退出循环
+ if(doctorSubmitEffective == 1 && dortorCheckEffective == 1 && directorCheckEffective == 1){
+ break;
+ }
+ }
+ }
+ if(!HasCurrentState(curState, DortorSubmit) && doctorSubmitEffective == 1)
+ {
+ //有退回情况,需减去医生退回code再加当前提交
+ int state = curState ^ DortorBack.code | DortorSubmit.code;
+ //无退回情况,^退回编码会更大,不需要^退回编码
+ if(state > (curState | DortorSubmit.code)){
+ return curState | DortorSubmit.code;
+ }else{
+ //否则需要减去医生退回部分
+ return state;
+ }
+ }
+ if(!HasCurrentState(curState, DortorCheck) && dortorCheckEffective == 1)
+ {
+ return curState | DortorCheck.code;
+ }
+ if(!HasCurrentState(curState, DirectorCheck) && directorCheckEffective == 1)
+ {
+ return curState | DirectorCheck.code;
+ }
+ /* if(HasCurrentState(curState,DirectorCheck))
+ {
+ if(HasCurrentState(curState, NurseCheck))
+ {
+ if(HasCurrentState(curState, HeadNurseCheck))
+ {
+ return curState;
+ }
+ else
+ {
+ return curState | HeadNurseCheck.code;
+ }
+ }
+ else
+ {
+ return curState;
+ }
+ }*/
+ throw new Exception("医生提交的状态未知。");
+ }
+
+ //护士累加code
+ public static int GetNextStepCode_Nurse(int curState,List flowRoles) throws Exception
+ {
+ int nurseSubmitEffective = 0;
+ int nurseCheckEffective = 0;
+ if(null != flowRoles && !flowRoles.isEmpty()) {
+ for (ArchiveFlowRole flowRole : flowRoles) {
+ if (flowRole.getCode().equals(NurseSubmit.code+"")){
+ nurseSubmitEffective = flowRole.getEffective();
+ }
+ if (flowRole.getCode().equals(NurseCheck.code+"")){
+ nurseCheckEffective = flowRole.getEffective();
+ }
+ //两者都遍历到立即退出循环
+ if(nurseSubmitEffective == 1 && nurseCheckEffective == 1){
+ break;
+ }
+ }
+ }
+ if(!HasCurrentState(curState, NurseSubmit) && nurseSubmitEffective == 1)
+ {
+ int state = curState ^ NurseBack.code | NurseSubmit.code;
+ if(state > (curState | NurseSubmit.code)){
+ return curState | NurseSubmit.code;
+ }else{
+ return state;
+ }
+ }
+ if(!HasCurrentState(curState, NurseCheck) && nurseCheckEffective == 1)
+ {
+ return curState | NurseCheck.code;
+ }
+ throw new Exception("护士提交的状态未知。");
+ }
+
+ //一般审核者累加code
+ public static int GetNextStepCode_Generate(int curState,List flowRoles) throws Exception
+ {
+ int headNurseCheckEffective = 0;
+ int medicalRoomCheckEffective = 0;
+ if(null != flowRoles && !flowRoles.isEmpty()) {
+ for (ArchiveFlowRole flowRole : flowRoles) {
+ if (flowRole.getCode().equals(HeadNurseCheck.code+"")){
+ headNurseCheckEffective = flowRole.getEffective();
+ }
+ if (flowRole.getCode().equals(MedicalRoomCheck.code+"")){
+ medicalRoomCheckEffective = flowRole.getEffective();
+ }
+ }
+ }
+ if (!HasCurrentState(curState, HeadNurseCheck) && headNurseCheckEffective == 1)
+ {
+ return HeadNurseCheck.code;
+ }
+ if(!HasCurrentState(curState, MedicalRoomCheck) && medicalRoomCheckEffective == 1)
+ {
+ return MedicalRoomCheck.code;
+ }
+ throw new Exception("一般工作者提交的状态未知。");
+ }
+
+ //累加当前code
+ public static int GetNextStepCode(int curState, Integer isDortor,List flowRoles) throws Exception
+ {
+ if(curState == None.code)
+ {
+ if(isDortor == Checker.Dortor.code)
+ {
+ return DortorSubmit.code;
+ }
+ if(isDortor == Checker.Nurse.code)
+ {
+ return NurseSubmit.code;
+ }
+ throw new Exception("初始状态,只有可能是医生或护士进行提交");
+ }
+
+ if(isDortor == Checker.Dortor.code)
+ {
+ return GetNextStepCode_Dortor(curState,flowRoles);
+ }
+ if(isDortor == Checker.Nurse.code)
+ {
+ return GetNextStepCode_Nurse(curState,flowRoles);
+ }
+ if(isDortor == Checker.Generate.code)
+ {
+ return GetNextStepCode_Generate(curState,flowRoles);
+ }
+ throw new Exception(String.format("参数出错 %d", curState));
+ }
+ //医生退回
+ public static int backToDoctor(int curState,List flowRoles) throws Exception{
+ if(curState != HeadNurseCheck.code && curState != CallBacked.code){
+ //不是病案室退回节点,删除医生code
+ if(HasCurrentState(curState, DirectorCheck)){
+ curState ^= DirectorCheck.code;
+ }
+ if(HasCurrentState(curState, DortorCheck)){
+ curState ^= DortorCheck.code;
+ }
+ if(HasCurrentState(curState, DortorSubmit)){
+ curState ^= DortorSubmit.code;
+ }
+ if(HasCurrentState(curState, HeadNurseCheck)){
+ curState ^= HeadNurseCheck.code;
+ }
+ }else{
+ curState = 0;
+ //是病案室退回节点,累加护士code
+ for(ArchiveFlowRole flowRole : flowRoles) {
+ if (flowRole.getEffective() == 1) {
+ if(flowRole.getCode().equals(NurseSubmit.getCode()+"")){
+ curState = curState | NurseSubmit.getCode();
+ }else if(flowRole.getCode().equals(NurseCheck.getCode()+"")){
+ curState = curState | NurseCheck.getCode();
+ }
+ }
+ }
+ }
+ return curState | DortorBack.code;
+ }
+ //护士退回
+ public static int backToNurse(int curState,List flowRoles) throws Exception{
+ if(curState != HeadNurseCheck.code && curState != CallBacked.code) {
+ //不是病案室退回节点,删除护士code
+ if(HasCurrentState(curState, NurseCheck)){
+ curState ^= NurseCheck.code;
+ }
+ if(HasCurrentState(curState, NurseSubmit)){
+ curState ^= NurseSubmit.code;
+ }
+ if(HasCurrentState(curState, HeadNurseCheck)){
+ curState ^= HeadNurseCheck.code;
+ }
+ }else{
+ curState = 0;
+ //是病案室退回节点,累加医生节点
+ for(ArchiveFlowRole flowRole : flowRoles) {
+ if (flowRole.getEffective() == 1) {
+ if(flowRole.getCode().equals(DortorSubmit.getCode()+"")){
+ curState = curState | DortorSubmit.getCode();
+ }else if(flowRole.getCode().equals(DortorCheck.getCode()+"")){
+ curState = curState | DortorCheck.getCode();
+ }else if(flowRole.getCode().equals(DirectorCheck.getCode()+"")){
+ curState = curState | DirectorCheck.getCode();
+ }
+ }
+ }
+ }
+ return curState | NurseBack.code;
+ }
+ //医生护士全退回
+ public static int backToAll(){
+ return DortorBack.code | NurseBack.code;
+ }
+ }
+
+
+
+ @Test
+ public void Test() {
+ int curState= 2;
+ try
+ {
+ /* String name = DocState.None.name;
+ System.out.println(name);
+ ArrayList integers = DocState.GetCurrentStepContainStates(curState);
+ for (int i = 0; i < integers.size(); i++) {
+ System.out.println(integers.get(i));
+ }*/
+ //String s = DocState.GetStepName(curState);
+ //System.out.println(s);
+// List roles = new ArrayList<>();
+// int stepName = DocState.backToDoctor(curState);
+// stepName = DocState.GetNextStepCode(stepName,Checker.Dortor,roles);
+// System.out.println(stepName);
+ }
+ catch (Exception ex)
+ {
+ System.out.println(ex.getMessage());
+ }
+ }
+
+}
diff --git a/src/main/java/com/emr/service/ipml/HolidaySetService.java b/src/main/java/com/emr/service/ipml/HolidaySetService.java
new file mode 100644
index 0000000..7f5a405
--- /dev/null
+++ b/src/main/java/com/emr/service/ipml/HolidaySetService.java
@@ -0,0 +1,135 @@
+package com.emr.service.ipml;
+
+import com.emr.dao.EmrHolidaySetMapper;
+import com.emr.entity.*;
+import com.emr.util.AccountDate;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@Service
+@Transactional
+public class HolidaySetService {
+ @Autowired
+ private EmrHolidaySetMapper holidaySetMapper;
+ public OffsetLimitPage selectByColumn(EmrHolidaySetVo holidaySetVo){
+ PageHelper.offsetPage(holidaySetVo.getOffset(), holidaySetVo.getLimit());
+ List list = holidaySetMapper.selectByColumn(holidaySetVo);
+ return new OffsetLimitPage((Page) list);
+ }
+
+ /**
+ * 批量新增
+ * @param startTime
+ * @param endTime
+ * @param checkBoxes
+ * @param flag
+ * @throws Exception
+ */
+ public void update(String startTime,String endTime,String checkBoxes,Integer flag) throws Exception{
+ Map map = new HashMap<>();
+ //将选中星期几添加进map
+ String[] checkBoxList = checkBoxes.split(",");
+ for(String checkBoxed:checkBoxList){
+ if(StringUtils.isNoneBlank(checkBoxed)){
+ map.put(Integer.valueOf(checkBoxed),checkBoxed);
+ }
+ }
+ List dateList = AccountDate.getEveryday(startTime,endTime);
+ //查询时间段记录
+ List emrHolidaySets = holidaySetMapper.selectAllByDates(startTime, endTime);
+ //定义批量添加集合
+ List insertList = new ArrayList<>();
+ //定义批量更新集合
+ List updateList = new ArrayList<>();
+ //定义批量修改的时间字符串
+ String dates = "";
+ SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ //没有记录添加进insertList
+ for(String date : dateList){
+ //查询几天星期几
+ Integer weekDay = AccountDate.getWeekDayByStr(date);
+ //无记录,全部添加进批量添加集合
+ EmrHolidaySet holidaySet = new EmrHolidaySet();
+ holidaySet.setDate(date);
+ holidaySet.setUpdateTime(fmt.format(new Date()));
+ if(flag == 1){
+ if(map.containsKey(weekDay)){
+ holidaySet.setFlag(Short.valueOf("1"));
+ }else{
+ holidaySet.setFlag(Short.valueOf("2"));
+ }
+ }else{
+ if(map.containsKey(weekDay)){
+ holidaySet.setFlag(Short.valueOf("2"));
+ }else{
+ holidaySet.setFlag(Short.valueOf("1"));
+ }
+ }
+ //如果存在记录就区分更新部分还是添加部分
+ if(null != emrHolidaySets && !emrHolidaySets.isEmpty()){
+ boolean isExist = false;
+ for (int i = 0; i < emrHolidaySets.size(); i++) {
+ if(emrHolidaySets.get(i).getDate().equals(date)){
+ isExist = true;
+ holidaySet.setId(emrHolidaySets.get(i).getId());
+ break;
+ }
+ }
+ //如果存在,添加进更新的字符串
+ if(isExist){
+ updateList.add(holidaySet);
+ }else{
+ //否则添加进批量添加集合
+ insertList.add(holidaySet);
+ }
+ }else{
+ //数据库无数,添加全部记录
+ insertList.add(holidaySet);
+ }
+ }
+ int colCount = holidaySetMapper.selectColByTableName("emr_holiday_set");
+ int simpleInsertCount = 2100/(colCount);
+ if(null != insertList && !insertList.isEmpty()){
+ List list = new ArrayList<>();
+ for (int i = 0; i < insertList.size(); i++) {
+ list.add(insertList.get(i));
+ if(list.size()%simpleInsertCount == 0 || i == insertList.size() - 1){
+ holidaySetMapper.SampleInsert(list);
+ list.clear();
+ }
+ }
+ }
+ if(null != updateList && !updateList.isEmpty()){
+ List list = new ArrayList<>();
+ for (int i = 0; i < updateList.size(); i++) {
+ list.add(updateList.get(i));
+ if(list.size()%simpleInsertCount == 0 || i == updateList.size() - 1){
+ holidaySetMapper.SampleUpdate(updateList);
+ list.clear();
+ }
+ }
+ }
+ }
+
+ /**
+ * 单个修改状态
+ * @param flag
+ * @param id
+ */
+ public void update(Integer flag,Integer id){
+ EmrHolidaySet emrHolidaySet = holidaySetMapper.selectByPrimaryKey(id);
+ if(flag == 1){
+ emrHolidaySet.setFlag(Short.valueOf("2"));
+ }else{
+ emrHolidaySet.setFlag(Short.valueOf("1"));
+ }
+ holidaySetMapper.updateByPrimaryKeySelective(emrHolidaySet);
+ }
+}
diff --git a/src/main/java/com/emr/service/ipml/StatisticsService.java b/src/main/java/com/emr/service/ipml/StatisticsService.java
new file mode 100644
index 0000000..1939f92
--- /dev/null
+++ b/src/main/java/com/emr/service/ipml/StatisticsService.java
@@ -0,0 +1,214 @@
+package com.emr.service.ipml;
+
+import com.alibaba.fastjson.JSON;
+import com.emr.dao.StatisticsMapper;
+import com.emr.dao.TUuInfoMapper;
+import com.emr.dao.TUuPrintMapper;
+import com.emr.entity.Archive_Master_Vo;
+import com.emr.entity.OffsetLimitPage;
+import com.emr.entity.TUuPrint;
+import com.emr.vo.*;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import net.sf.json.JSONObject;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+import org.apache.shiro.util.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @ProjectName:
+ * @Description:
+ * @Param 传输参数
+ * @Return
+ * @Author: 曾文和
+ * @CreateDate: 2020/1/8 15:54
+ * @UpdateUser: 曾文和
+ * @UpdateDate: 2020/1/8 15:54
+ * @UpdateRemark: 更新说明
+ * @Version: 1.0
+ */
+@Service
+@Transactional
+public class StatisticsService {
+ @Value("${POWER_URLHEAD}")
+ private String POWER_URLHEAD;
+ @Autowired
+ private StatisticsMapper statisticsMapper;
+ @Autowired
+ private TUuPrintMapper uuPrintMapper;
+ @Autowired
+ private TUuInfoMapper uuInfoMapper;
+ //终审按天统计
+ public List getFinalStatistics(Integer offset, Integer limit, String startDate, String endDate,String sql) {
+ if(null != offset && null != limit){
+ PageHelper.offsetPage(offset, limit);
+ }
+ List list = statisticsMapper.finalStatistics(startDate, endDate,sql);
+ //转换姓名
+ List userList = getUserList();
+ if(!CollectionUtils.isEmpty(list) && !CollectionUtils.isEmpty(userList)) {
+ for (FinalAndFirstStatistics statistics : list) {
+ for (User user : userList) {
+ if (StringUtils.isNotBlank(statistics.getCheckCode()) && statistics.getCheckCode().equals(user.getUserName())) {
+ statistics.setCheckName(user.getName());
+ break;
+ }
+ }
+ }
+ }
+ return list;
+ }
+
+
+ //初审按天统计
+ public List getFirstStatistics(HttpServletRequest request, Integer offset, Integer limit, String startDate, String endDate,String sql) {
+ if(null != offset && null != limit){
+ PageHelper.offsetPage(offset, limit);
+ }
+ List list = statisticsMapper.firstStatistics(startDate, endDate,sql);
+ //转换姓名
+ List userList = getUserList();
+ if(!CollectionUtils.isEmpty(list) && !CollectionUtils.isEmpty(userList)) {
+ for (FinalAndFirstStatistics statistics : list) {
+ for (User user : userList) {
+ if (statistics.getCheckCode().equals(user.getUserName())) {
+ statistics.setCheckName(user.getName());
+ break;
+ }
+ }
+ }
+ }
+ return list;
+ }
+
+ /**
+ * 终审审核明细
+ * @param offset
+ * @param limit
+ * @param disStartDate
+ * @param disEndDate
+ * @param archiveMasterVo
+ * @return
+ */
+ public OffsetLimitPage getStatisticsDetail(Integer offset, Integer limit,String disStartDate, String disEndDate, Archive_Master_Vo archiveMasterVo,Integer flag) {
+ if(null != offset && null != limit){
+ PageHelper.offsetPage(offset, limit);
+ }
+ List list = getDetailList(disStartDate, disEndDate, archiveMasterVo,flag,null);
+ return new OffsetLimitPage((Page) list);
+ }
+
+ public List getDetailList(String disStartDate, String disEndDate, Archive_Master_Vo archiveMasterVo,Integer flag,String sql){
+ //转换姓名
+ List userList = getUserList();
+ String checkDoctor = archiveMasterVo.getCheckDoctor();
+ //模糊搜索审核姓名转换工号
+ if(StringUtils.isNoneBlank(checkDoctor)){
+ String checkNames = "";
+ for(User user:userList){
+ if(StringUtils.isNoneBlank(user.getName()) && user.getName().contains(checkDoctor)){
+ checkNames += "'" + user.getUserName() + "',";
+ }
+ }
+ if(StringUtils.isNotBlank(checkNames)){
+ checkNames = checkNames.substring(0,checkNames.length()-1);
+ archiveMasterVo.setCheckDoctor(checkNames);
+ }else{
+ archiveMasterVo.setCheckDoctor("'" + checkDoctor + "'");
+ }
+ }
+ List list = statisticsMapper.statistics(disStartDate,disEndDate,archiveMasterVo,flag,sql);
+ if(!CollectionUtils.isEmpty(list) && !CollectionUtils.isEmpty(userList)) {
+ for (Archive_Master_Vo statistics : list) {
+ for (User user : userList) {
+ if (StringUtils.isNotBlank(statistics.getCheckDoctor()) && statistics.getCheckDoctor().equals(user.getUserName())) {
+ statistics.setCheckName(user.getName());
+ }
+ if (StringUtils.isNotBlank(statistics.getCheckedDoctor()) && statistics.getCheckedDoctor().equals(user.getUserName())) {
+ statistics.setCheckedName(user.getName());
+ }
+ }
+ }
+ }
+ return list;
+ }
+
+ //复印记录报表
+ public List getPrintCount(TUuPrintSearch search){
+ List list = uuPrintMapper.getPrintCount(search);
+ return list;
+ }
+
+ //复印记录明细
+ public List getPrintInfo(TUuPrintSearch search){
+ List list = uuPrintMapper.getPrintInfo(search);
+ if(null != list && !list.isEmpty()){
+ SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ for(TUuPrintVo printVo : list){
+ Date cpytime = printVo.getCpytime();
+ printVo.setPrintTime(fmt.format(cpytime));
+ }
+ }
+ return list;
+ }
+
+ //扫描记录报表
+ public List getScanCount(TUuPrintSearch search){
+ List list = uuInfoMapper.getScanCount(search);
+ return list;
+ }
+
+ //扫描记录明细
+ public List getScanInfo(TUuPrintSearch search){
+ List list = uuInfoMapper.getScanInfo(search);
+ return list;
+ }
+
+ public List getUserList(){
+ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+ List userList = new ArrayList<>();
+ try {
+ //查询缓存时候存在
+ userList = (List)request.getSession().getAttribute("USER_LIST");
+ if(null == userList || userList.isEmpty()){
+ String userName = (String) request.getSession().getAttribute("userSession");
+ //调用接口查询
+ String resultString = "";
+ // 创建uri
+ String url = POWER_URLHEAD+"/font/getUserList?userName="+userName;
+ // 执行请求
+ CloseableHttpResponse response = HttpClients.createDefault().execute(new HttpGet(url));
+ // 判断返回状态是否为200
+ if (response.getStatusLine().getStatusCode() == 200) {
+ resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
+ }
+ JSONObject jsonObject = JSONObject.fromObject(resultString);
+ String extend = jsonObject.getString("extend");
+ JSONObject extendObject = JSONObject.fromObject(extend);
+ String userList1 = extendObject.getString("userList");
+ userList = (List) JSON.parseArray(userList1,User.class);
+ //设置进session
+ request.getSession().setAttribute("USER_LIST",userList);
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return userList;
+ }
+}
+
diff --git a/src/main/java/com/emr/service/ipml/TPrintinfoService.java b/src/main/java/com/emr/service/ipml/TPrintinfoService.java
new file mode 100644
index 0000000..b2640b2
--- /dev/null
+++ b/src/main/java/com/emr/service/ipml/TPrintinfoService.java
@@ -0,0 +1,27 @@
+package com.emr.service.ipml;
+
+import com.emr.dao.TPrintinfoMapper;
+import com.emr.entity.TPrintinfo;
+import com.emr.util.Msg;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class TPrintinfoService {
+ @Autowired
+ private TPrintinfoMapper tPrintinfoMapper;
+ public Msg selectIsPrintByPatienId(String patientId){
+ TPrintinfo tPrintinfo = tPrintinfoMapper.selectLockByPatienId(patientId);
+ if(!"0".equals(tPrintinfo.getIsprint())){
+ return Msg.success().add("isPrint","1");
+ }
+ List list = tPrintinfoMapper.selectIsPrintByPatienId(patientId);
+ if(null != list && !list.isEmpty()){
+ return Msg.success().add("isPrint",list.get(0).getIsprint());
+ }else{
+ return Msg.success().add("isPrint","0");
+ }
+ }
+}
diff --git a/src/main/java/com/emr/service/ipml/V_CountServiceImpl.java b/src/main/java/com/emr/service/ipml/V_CountServiceImpl.java
new file mode 100644
index 0000000..948154d
--- /dev/null
+++ b/src/main/java/com/emr/service/ipml/V_CountServiceImpl.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/7/19 15:46
+ * Description:统计管理
+ */
+package com.emr.service.ipml;
+
+import com.emr.dao.V_CountMapper;
+import com.emr.entity.*;
+import com.emr.service.V_CountService;
+import com.emr.vo.V_CountVo;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+
+@Service
+public class V_CountServiceImpl implements V_CountService {
+ @Autowired
+ private V_CountMapper vCountMapper;
+
+ @Override
+ public List selectByCol(V_CountVo record) {
+ List v_counts = vCountMapper.selectByCol(record);
+ return v_counts;
+ }
+
+ @Override
+ public OffsetLimitPage selectPageByClo(V_CountVo record, Integer offset, Integer limit) {
+ PageHelper.offsetPage(offset, limit);
+ List list = selectByCol(record);
+ return new OffsetLimitPage((Page) list);
+ }
+}
+
+
diff --git a/src/main/java/com/emr/service/ipml/ZdAssortService.java b/src/main/java/com/emr/service/ipml/ZdAssortService.java
new file mode 100644
index 0000000..5b3c8e5
--- /dev/null
+++ b/src/main/java/com/emr/service/ipml/ZdAssortService.java
@@ -0,0 +1,31 @@
+package com.emr.service.ipml;
+
+import com.emr.dao.Zd_AssortMapper;
+import com.emr.entity.Zd_Assort;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @ProjectName:
+ * @Description:
+ * @Param 传输参数
+ * @Return
+ * @Author: 曾文和
+ * @CreateDate: 2020/4/22 15:47
+ * @UpdateUser: 曾文和
+ * @UpdateDate: 2020/4/22 15:47
+ * @UpdateRemark: 更新说明
+ * @Version: 1.0
+ */
+@Service
+@Transactional
+public class ZdAssortService {
+ @Autowired
+ private Zd_AssortMapper assortMapper;
+ public List selectAll(Zd_Assort assort){
+ return assortMapper.selectAll(assort);
+ }
+}
diff --git a/src/main/java/com/emr/shiro/MyRealm.java b/src/main/java/com/emr/shiro/MyRealm.java
new file mode 100644
index 0000000..995e854
--- /dev/null
+++ b/src/main/java/com/emr/shiro/MyRealm.java
@@ -0,0 +1,80 @@
+package com.emr.shiro;
+
+import com.alibaba.fastjson.JSONObject;
+import com.emr.util.HttpClientUtils;
+import org.apache.poi.ss.formula.functions.T;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authc.*;
+import org.apache.shiro.authz.AuthorizationInfo;
+import org.apache.shiro.authz.SimpleAuthorizationInfo;
+import org.apache.shiro.realm.AuthorizingRealm;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.subject.PrincipalCollection;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+
+import java.util.List;
+
+/**
+ * @author HJL
+ * @create 2019/4/29
+ */
+public class MyRealm extends AuthorizingRealm {
+ //获取权限列表
+ /*@Autowired
+ private PermissionService permissionService;
+ //获取用户
+ @Autowired
+ private UserService userService;
+ ////获取用户角色
+ @Autowired
+ private RoleService roleService;*/
+
+ @Value("${powerUrl}")
+ private String powerUrl;
+
+
+ /**
+ * 授权查询回调函数, 进行鉴权但缓存中无用户的授权信息时调用.
+ */
+ @Override
+ protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
+ //获取登录时输入的用户名
+ String username = (String) principalCollection.getPrimaryPrincipal();
+ if (username != null) {
+ SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
+ info.addStringPermission("/login");
+ info.addStringPermission("index");
+ info.addRole("0");
+ return info;
+ }
+ return null;
+ }
+
+ /**
+ * 认证回调函数,登录时调用.
+ */
+ @Override
+ protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
+ UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;
+ //通过表单接收的用户名
+ String username = token.getUsername();
+ String userpwd = String.valueOf(token.getPassword());
+ if (username != null && !"".equals(username)) {
+ String url = powerUrl+"?sysFlag=emr_medical_record&userName="+ username;
+ JSONObject obj = HttpClientUtils.httpGet(url);
+ if(obj!=null){
+ if((obj.getString("code")).equals("100")){
+ //当验证都通过后,把用户信息放在 session 里
+ Session session = SecurityUtils.getSubject().getSession();
+ session.setAttribute("menuList", obj);
+ session.setAttribute("userSession", username);
+ return new SimpleAuthenticationInfo(username, userpwd, getName());
+ }
+ }
+ }
+ return null;
+ }
+}
+
+
diff --git a/src/main/java/com/emr/util/AccountDate.java b/src/main/java/com/emr/util/AccountDate.java
new file mode 100644
index 0000000..b391bf4
--- /dev/null
+++ b/src/main/java/com/emr/util/AccountDate.java
@@ -0,0 +1,162 @@
+package com.emr.util;
+
+import java.text.DecimalFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 遍历两个时间段中间的每一天
+ * @author 天涯鬼域
+ * 2019.01.30
+ */
+public class AccountDate {
+
+ private static transient int gregorianCutoverYear = 1582;
+
+ /** 闰年中每月天数 */
+ private static final int[] DAYS_P_MONTH_LY= {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
+
+ /** 非闰年中每月天数 */
+ private static final int[] DAYS_P_MONTH_CY= {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
+
+ /** 代表数组里的年、月、日 */
+ private static final int Y = 0, M = 1, D = 2;
+
+ /**
+ * 将代表日期的字符串分割为代表年月日的整形数组
+ * @param date
+ * @return
+ */
+ public static int[] splitYMD(String date){
+ date = date.replace("-", "");
+ int[] ymd = {0, 0, 0};
+ ymd[Y] = Integer.parseInt(date.substring(0, 4));
+ ymd[M] = Integer.parseInt(date.substring(4, 6));
+ ymd[D] = Integer.parseInt(date.substring(6, 8));
+ return ymd;
+ }
+
+ /**
+ * 检查传入的参数代表的年份是否为闰年
+ * @param year
+ * @return
+ */
+ public static boolean isLeapYear(int year) {
+ return year >= gregorianCutoverYear ?
+ ((year%4 == 0) && ((year%100 != 0) || (year%400 == 0))) : (year%4 == 0);
+ }
+
+ /**
+ * 日期加1天
+ * @param year
+ * @param month
+ * @param day
+ * @return
+ */
+ private static int[] addOneDay(int year, int month, int day){
+ if(isLeapYear( year )){
+ day++;
+ if( day > DAYS_P_MONTH_LY[month -1 ] ){
+ month++;
+ if(month > 12){
+ year++;
+ month = 1;
+ }
+ day = 1;
+ }
+ }else{
+ day++;
+ if( day > DAYS_P_MONTH_CY[month -1 ] ){
+ month++;
+ if(month > 12){
+ year++;
+ month = 1;
+ }
+ day = 1;
+ }
+ }
+ int[] ymd = {year, month, day};
+ return ymd;
+ }
+
+ /**
+ * 将不足两位的月份或日期补足为两位
+ * @param decimal
+ * @return
+ */
+ public static String formatMonthDay(int decimal){
+ DecimalFormat df = new DecimalFormat("00");
+ return df.format( decimal );
+ }
+
+ /**
+ * 将不足四位的年份补足为四位
+ * @param decimal
+ * @return
+ */
+ public static String formatYear(int decimal){
+ DecimalFormat df = new DecimalFormat("0000");
+ return df.format( decimal );
+ }
+
+ /**
+ * 计算两个日期之间相隔的天数
+ * @param begin
+ * @param end
+ * @return
+ * @throws ParseException
+ */
+ public static long countDay(String begin,String end){
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+ Date beginDate , endDate;
+ long day = 0;
+ try {
+ beginDate= format.parse(begin);
+ endDate= format.parse(end);
+ day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return day;
+ }
+
+ /**
+ * 以循环的方式计算日期
+ * @param beginDate endDate
+ * @return
+ */
+ public static List getEveryday(String beginDate , String endDate){
+ long days = countDay(beginDate, endDate);
+ int[] ymd = splitYMD( beginDate );
+ List everyDays = new ArrayList();
+ everyDays.add(beginDate);
+ for(int i = 0; i < days; i++){
+ ymd = addOneDay(ymd[Y], ymd[M], ymd[D]);
+ everyDays.add(formatYear(ymd[Y])+"-"+formatMonthDay(ymd[M])+"-"+formatMonthDay(ymd[D]));
+ }
+ return everyDays;
+ }
+
+ /**
+ * 计算字符串日期是星期几
+ * */
+ public static Integer getWeekDayByStr(String date) throws Exception{
+ SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
+ Date dt = sim.parse(date);//将指定格式的字符串解析成Date时间对象
+ SimpleDateFormat sim1 = new SimpleDateFormat("yyyy年-MM月-dd日");
+ Calendar ca = Calendar.getInstance();
+ ca.setTime(dt);//将date对象转换为Calendar对象
+ return ca.get(Calendar.DAY_OF_WEEK)-1;
+ }
+ public static void main(String[] args) throws Exception{
+ List list = AccountDate.getEveryday("2007-08-29", "2008-09-02");
+ /*for (String result : list) {
+ System.out.println(result);
+ }*/
+ System.out.println(getWeekDayByStr("2019-12-21"));
+ }
+}
diff --git a/src/main/java/com/emr/util/ActionScopeUtils.java b/src/main/java/com/emr/util/ActionScopeUtils.java
new file mode 100644
index 0000000..90440f6
--- /dev/null
+++ b/src/main/java/com/emr/util/ActionScopeUtils.java
@@ -0,0 +1,42 @@
+package com.emr.util;
+
+
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+/**
+ * 关于作用域的操作
+ * @Author:
+ * @Date:
+ * @Version 1.0
+ */
+public class ActionScopeUtils {
+
+ public static HttpSession getSession(HttpServletRequest request){
+ return request.getSession();
+ }
+
+ public static HttpServletRequest getRequest(){
+ return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+ }
+
+ public static void setSessionAttribute(String key,Object value){
+ getSession(getRequest()).setAttribute(key,value);
+ }
+
+ public static Object getSessionAttribute(String key){
+ return getSession(getRequest()).getAttribute(key);
+ }
+
+ public static void setRequestAttribute(String key,Object value){
+ getRequest().setAttribute(key,value);
+ }
+
+ public static Object getRequestAttribute(String key){
+ return getRequest().getAttribute(key);
+ }
+
+}
diff --git a/src/main/java/com/emr/util/ExportExcelUtil.java b/src/main/java/com/emr/util/ExportExcelUtil.java
new file mode 100644
index 0000000..351a1c0
--- /dev/null
+++ b/src/main/java/com/emr/util/ExportExcelUtil.java
@@ -0,0 +1,187 @@
+/**
+ * 系统数据导出Excel 生成器
+ * @version 1.0
+ */
+package com.emr.util;
+
+import org.apache.commons.lang3.CharUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.hssf.util.HSSFColor;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+
+public class ExportExcelUtil {
+
+ private final int SPLIT_COUNT = 1000;
+
+ private static List fieldName = null;
+
+ private static List> fieldData = null;
+
+ private String fileName;
+
+ private HSSFWorkbook workBook = null;
+ public List getFieldName(String tableThNames){
+ String[] names = tableThNames.split(",");
+ List fieldName = new ArrayList<>();
+ if (names != null) {
+ for (int i = 0; i < names.length; i++) {
+ if (StringUtils.isNoneBlank(names[i])) {
+ fieldName.add(names[i]);
+ }
+ }
+ }
+ return fieldName;
+ }
+
+ public List> getFieldData(String fieldCns, Collection list){
+ List> fieldData = new ArrayList>();
+ String[] fieldList = fieldCns.split(",");
+ Object[] objects = list.toArray();
+ for (Object object : objects) {
+ List data = new ArrayList();
+ for (String english : fieldList) {
+ String field = fieldToProperty(english);
+ String value = getFieldValueByFieldName(field,object);
+ data.add(value);
+ }
+ fieldData.add(data);
+ }
+ return fieldData;
+ }
+ public void expordExcel(String tableThNames,String fieldCns,Collection list,String fileName,HttpServletResponse response) throws Exception {
+ this.fieldName = getFieldName(tableThNames);
+ this.fieldData = getFieldData(fieldCns,list);
+ this.fileName = fileName;
+ OutputStream os = response.getOutputStream();
+ response.reset();
+ response.setContentType("application/OCTET-STREAM;charset=gbk");
+ response.setHeader("pragma", "no-cache");
+ fileName = new String(fileName.getBytes("utf-8"), "iso-8859-1");
+ response.setHeader("Content-disposition", "attachment;filename=\"" + fileName + "\"");
+ response.setBufferSize(1024);
+ workBook = createWorkbook();
+ workBook.write(os);
+ os.close();
+ }
+ public HSSFWorkbook createWorkbook() {
+ workBook = new HSSFWorkbook();
+ int rows = fieldData.size();
+ int sheetNum = 0;
+
+ if (rows % SPLIT_COUNT == 0) {
+ sheetNum = rows / SPLIT_COUNT;
+ } else {
+ sheetNum = rows / SPLIT_COUNT + 1;
+ }
+ if(sheetNum == 0){
+ sheetNum = 1;
+ }
+ for (int i = 1; i <= sheetNum; i++) {
+ HSSFSheet sheet = workBook.createSheet("Sheet " + i);
+ HSSFRow headRow = sheet.createRow((short) 0);
+ HSSFCellStyle cellStyle = workBook.createCellStyle();
+ cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+ cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+
+ HSSFFont font = workBook.createFont();
+ font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
+ font.setColor(HSSFColor.RED.index);
+ font.setFontHeightInPoints((short) 12);
+ cellStyle.setFont(font);
+
+ for (int j = 0; j < fieldName.size(); j++) {
+ HSSFCell cell = headRow.createCell( j);
+ sheet.setColumnWidth(j, 6000);
+ cell.setCellType(HSSFCell.CELL_TYPE_STRING);
+ if(fieldName.get(j) != null){
+ cell.setCellStyle(cellStyle);
+ cell.setCellValue((String) fieldName.get(j));
+ }else{
+ cell.setCellValue("-");
+ }
+ }
+ HSSFCellStyle cellStyle1 = workBook.createCellStyle();
+ cellStyle1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+ cellStyle1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+ //数字格式
+ for (int k = 0; k < (rows < SPLIT_COUNT ? rows : SPLIT_COUNT); k++) {
+ if (((i - 1) * SPLIT_COUNT + k) >= rows)
+ break;
+ HSSFRow row = sheet.createRow((short) (k + 1));
+ ArrayList rowList = (ArrayList) fieldData.get((i - 1) * SPLIT_COUNT + k);
+ for (int n = 0; n < rowList.size(); n++) {
+ HSSFCell cell = row.createCell( n);
+ if(rowList.get(n) != null){
+ cell.setCellStyle(cellStyle1);
+ cell.setCellValue((String) rowList.get(n).toString());
+ }else{
+ cell.setCellValue("");
+ }
+ }
+ }
+ //设置自动列宽
+ for (int j = 0; j < rows; j++) {
+ sheet.autoSizeColumn(j);
+ int width = sheet.getColumnWidth(j)*2;
+ if(width < 3000){
+ sheet.setColumnWidth(j,sheet.getColumnWidth(j)*17/7);
+ }
+ }
+ //冻结表头
+ sheet.createFreezePane( 0, 1, 0, 1 );
+ }
+ return workBook;
+ }
+
+ public static String fieldToProperty(String field) {
+ if (null == field) {
+ return "";
+ }
+ char[] chars = field.toCharArray();
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < chars.length; i++) {
+ char c = chars[i];
+ if (c == '_') {
+ int j = i + 1;
+ if (j < chars.length) {
+ sb.append(StringUtils.upperCase(CharUtils.toString(chars[j])));
+ i++;
+ }
+ } else {
+ sb.append(c);
+ }
+ }
+ return sb.toString();
+ }
+
+ public static String getFieldValueByFieldName(String fieldName, Object object) {
+ try {
+ Class> clazz = object.getClass();
+ for (; clazz != Object.class; clazz = clazz.getSuperclass()) {
+ Field[] field = clazz.getDeclaredFields();
+ for (Field f : field) {
+ if(fieldName.equals(f.getName())){
+ f.setAccessible(true);
+ if(f.get(object) != null){
+ return f.get(object).toString();
+ }else{
+ return "";
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/emr/util/ExportExcelUtil1.java b/src/main/java/com/emr/util/ExportExcelUtil1.java
new file mode 100644
index 0000000..4afa4ac
--- /dev/null
+++ b/src/main/java/com/emr/util/ExportExcelUtil1.java
@@ -0,0 +1,183 @@
+/**
+ * 系统数据导出Excel 生成器
+ * @version 1.0
+ */
+package com.emr.util;
+import org.apache.commons.lang3.CharUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.hssf.util.HSSFColor;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+
+public class ExportExcelUtil1 {
+
+ private final int SPLIT_COUNT = 1000;
+
+ private static List fieldName = null;
+
+ private static List> fieldData = null;
+
+ private String fileName;
+
+ private HSSFWorkbook workBook = null;
+ public List getFieldName(String tableThNames){
+ String[] names = tableThNames.split(",");
+ List fieldName = new ArrayList<>();
+ if (names != null) {
+ for (int i = 0; i < names.length; i++) {
+ if (StringUtils.isNoneBlank(names[i])) {
+ fieldName.add(names[i]);
+ }
+ }
+ }
+ return fieldName;
+ }
+
+ public List> getFieldData(String fieldCns, Collection list){
+ List> fieldData = new ArrayList>();
+ String[] fieldList = fieldCns.split(",");
+ Object[] objects = list.toArray();
+ for (Object object : objects) {
+ List data = new ArrayList();
+ for (String english : fieldList) {
+ String field = fieldToProperty(english);
+ String value = getFieldValueByFieldName(field,object);
+ data.add(value);
+ }
+ fieldData.add(data);
+ }
+ return fieldData;
+ }
+ public void expordExcel(String tableThNames,String fieldCns,Collection list,String fileName,HttpServletResponse response) throws Exception {
+ this.fieldName = getFieldName(tableThNames);
+ this.fieldData = getFieldData(fieldCns,list);
+ this.fileName = fileName;
+ OutputStream os = response.getOutputStream();
+ response.reset();
+ response.setContentType("application/OCTET-STREAM;charset=gbk");
+ response.setHeader("pragma", "no-cache");
+ fileName = new String(fileName.getBytes("utf-8"), "iso-8859-1");
+ response.setHeader("Content-disposition", "attachment;filename=\"" + fileName + "\"");
+ response.setBufferSize(1024);
+ workBook = createWorkbook();
+ workBook.write(os);
+ os.close();
+ }
+ public HSSFWorkbook createWorkbook() {
+ workBook = new HSSFWorkbook();
+ int rows = fieldData.size();
+ int sheetNum = 0;
+
+ if (rows % SPLIT_COUNT == 0) {
+ sheetNum = rows / SPLIT_COUNT;
+ } else {
+ sheetNum = rows / SPLIT_COUNT + 1;
+ }
+ if(sheetNum == 0){
+ sheetNum = 1;
+ }
+ for (int i = 1; i <= sheetNum; i++) {
+ HSSFSheet sheet = workBook.createSheet("Sheet " + i);
+ HSSFRow headRow = sheet.createRow((short) 0);
+
+ HSSFCellStyle cellStyle = workBook.createCellStyle();
+ cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+ cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+
+ HSSFFont font = workBook.createFont();
+ font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
+ font.setColor(HSSFColor.RED.index);
+ font.setFontHeightInPoints((short) 12);
+ cellStyle.setFont(font);
+
+ for (int j = 0; j < fieldName.size(); j++) {
+ HSSFCell cell = headRow.createCell( j);
+ sheet.setColumnWidth(j, 6000);
+ cell.setCellType(HSSFCell.CELL_TYPE_STRING);
+ if(fieldName.get(j) != null){
+ cell.setCellStyle(cellStyle);
+ cell.setCellValue((String) fieldName.get(j));
+ }else{
+ cell.setCellValue("-");
+ }
+ }
+ HSSFCellStyle cellStyle1 = workBook.createCellStyle();
+ cellStyle1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+ cellStyle1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+ for (int k = 0; k < (rows < SPLIT_COUNT ? rows : SPLIT_COUNT); k++) {
+ if (((i - 1) * SPLIT_COUNT + k) >= rows)
+ break;
+ HSSFRow row = sheet.createRow((short) (k + 1));
+ ArrayList rowList = (ArrayList) fieldData.get((i - 1) * SPLIT_COUNT + k);
+ for (int n = 0; n < rowList.size(); n++) {
+ HSSFCell cell = row.createCell( n);
+ if(rowList.get(n) != null){
+ cell.setCellStyle(cellStyle1);
+ cell.setCellValue((String) rowList.get(n).toString());
+ }else{
+ cell.setCellValue("");
+ }
+ }
+ }
+ //设置自动列宽
+ for (int j = 0; j < rows; j++) {
+ sheet.autoSizeColumn(j);
+ sheet.setColumnWidth(j,sheet.getColumnWidth(j)*17/10);
+ }
+ //冻结表头
+ sheet.createFreezePane( 0, 1, 0, 1 );
+ }
+ return workBook;
+ }
+
+ public static String fieldToProperty(String field) {
+ if (null == field) {
+ return "";
+ }
+ char[] chars = field.toCharArray();
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < chars.length; i++) {
+ char c = chars[i];
+ if (c == '_') {
+ int j = i + 1;
+ if (j < chars.length) {
+ sb.append(StringUtils.upperCase(CharUtils.toString(chars[j])));
+ i++;
+ }
+ } else {
+ sb.append(c);
+ }
+ }
+ return sb.toString();
+ }
+
+ public static String getFieldValueByFieldName(String fieldName, Object object) {
+ try {
+ Class> clazz = object.getClass();
+ for (; clazz != Object.class; clazz = clazz.getSuperclass()) {
+ Field[] field = clazz.getDeclaredFields();
+ for (Field f : field) {
+ if(fieldName.equals(f.getName())){
+ f.setAccessible(true);
+ if(f.get(object) != null){
+ return f.get(object).toString();
+ }else{
+ return "";
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/emr/util/HttpClientUtils.java b/src/main/java/com/emr/util/HttpClientUtils.java
new file mode 100644
index 0000000..8d44c1a
--- /dev/null
+++ b/src/main/java/com/emr/util/HttpClientUtils.java
@@ -0,0 +1,282 @@
+/**
+ * Copyright (C), 2015-2019
+ * Author: HJL
+ * Date: 2019/6/13 18:49
+ * Description:
+ */
+package com.emr.util;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpStatus;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * HttpClient4.3工具类
+ *
+ * @author
+ */
+public class HttpClientUtils {
+ private static Logger logger = LoggerFactory.getLogger(HttpClientUtils.class); // 日志记录
+
+ private static RequestConfig requestConfig = null;
+
+ static {
+ // 设置请求和传输超时时间
+ requestConfig = RequestConfig.custom().setSocketTimeout(600000).setConnectTimeout(600000).build();
+ }
+
+ /**
+ * post请求传输json参数
+ *
+ * @param url url地址
+ * @param jsonParam 参数
+ * @return
+ */
+ public static JSONObject httpPost(String url, JSONObject jsonParam) {
+ // post请求返回结果
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ JSONObject jsonResult = null;
+ HttpPost httpPost = new HttpPost(url);
+ // 设置请求和传输超时时间
+ httpPost.setConfig(requestConfig);
+ try {
+ if (null != jsonParam) {
+ // 解决中文乱码问题
+ StringEntity entity = new StringEntity(jsonParam.toString(), "utf-8");
+ entity.setContentEncoding("UTF-8");
+ entity.setContentType("application/json");
+ httpPost.setEntity(entity);
+ }
+ CloseableHttpResponse result = httpClient.execute(httpPost);
+ // 请求发送成功,并得到响应
+ if (result.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
+ String str = "";
+ try {
+ // 读取服务器返回过来的json字符串数据
+ str = EntityUtils.toString(result.getEntity(), "utf-8");
+ // 把json字符串转换成json对象
+ jsonResult = JSONObject.parseObject(str);
+ } catch (Exception e) {
+ logger.error("post请求提交失败:" + url, e);
+ }
+ }
+ } catch (IOException e) {
+ logger.error("post请求提交失败:" + url, e);
+ } finally {
+ httpPost.releaseConnection();
+ }
+ return jsonResult;
+ }
+
+ /**
+ * post请求传输String参数 例如:name=Jack&sex=1&type=2
+ * Content-type:application/x-www-form-urlencoded
+ *
+ * @param url url地址
+ * @param strParam 参数
+ * @return
+ */
+ public static JSONObject httpPost(String url, String strParam) {
+ // post请求返回结果
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ JSONObject jsonResult = null;
+ HttpPost httpPost = new HttpPost(url);
+ httpPost.setConfig(requestConfig);
+ try {
+ if (null != strParam) {
+ // 解决中文乱码问题
+ StringEntity entity = new StringEntity(strParam, "utf-8");
+ entity.setContentEncoding("UTF-8");
+ entity.setContentType("application/x-www-form-urlencoded");
+ httpPost.setEntity(entity);
+ }
+ CloseableHttpResponse result = httpClient.execute(httpPost);
+ // 请求发送成功,并得到响应
+ if (result.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
+ String str = "";
+ try {
+ // 读取服务器返回过来的json字符串数据
+ str = EntityUtils.toString(result.getEntity(), "utf-8");
+ // 把json字符串转换成json对象
+ jsonResult = JSONObject.parseObject(str);
+ } catch (Exception e) {
+ logger.error("post请求提交失败:" + url, e);
+ }
+ }
+ } catch (IOException e) {
+ logger.error("post请求提交失败:" + url, e);
+ } finally {
+ httpPost.releaseConnection();
+ }
+ return jsonResult;
+ }
+
+ /**
+ * 发送get请求
+ *
+ * @param url 路径
+ * @return
+ */
+ public static JSONObject httpGet(String url) {
+ // get请求返回结果
+ JSONObject jsonResult = null;
+ CloseableHttpClient client = HttpClients.createDefault();
+ // 发送get请求
+ HttpGet request = new HttpGet(url);
+ request.setConfig(requestConfig);
+ try {
+ CloseableHttpResponse response = client.execute(request);
+
+ // 请求发送成功,并得到响应
+ if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
+ // 读取服务器返回过来的json字符串数据
+ HttpEntity entity = response.getEntity();
+ String strResult = EntityUtils.toString(entity, "utf-8");
+ // 把json字符串转换成json对象
+ jsonResult = JSONObject.parseObject(strResult);
+ } else {
+ logger.error("get请求提交失败:" + url);
+ }
+ } catch (IOException e) {
+ logger.error("get请求提交失败:" + url, e);
+ } finally {
+ request.releaseConnection();
+ }
+ return jsonResult;
+ }
+
+ public static String doGet(String url, Map param) {
+
+ // 创建Httpclient对象
+ CloseableHttpClient httpclient = HttpClients.createDefault();
+
+ String resultString = "";
+ CloseableHttpResponse response = null;
+ try {
+ // 创建uri
+ URIBuilder builder = new URIBuilder(url);
+ if (param != null) {
+ for (String key : param.keySet()) {
+ builder.addParameter(key, param.get(key));
+ }
+ }
+ URI uri = builder.build();
+
+ // 创建http GET请求
+ HttpGet httpGet = new HttpGet(uri);
+
+ // 执行请求
+ response = httpclient.execute(httpGet);
+ // 判断返回状态是否为200
+ if (response.getStatusLine().getStatusCode() == 200) {
+ resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ if (response != null) {
+ response.close();
+ }
+ httpclient.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ return resultString;
+ }
+
+ public static String doGet(String url) {
+ return doGet(url, null);
+ }
+
+ public static String doPost(String url, Map