查看pdf修改

master
linjj 3 years ago
parent 2bd840766e
commit 819bf862de

@ -105,6 +105,15 @@
<version>${pagehelper.version}</version> <version>${pagehelper.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.2.5</version>
<type>pom</type>
</dependency>
<!-- Jackson Json处理工具包 --> <!-- Jackson Json处理工具包 -->
<!--alibabaJson--> <!--alibabaJson-->
<dependency> <dependency>

@ -0,0 +1,104 @@
package com.emr.controller.quality;
import com.alibaba.fastjson.JSON;
import com.emr.annotation.OptionalLog;
import com.emr.service.quality.QualityService;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @ClassName QualityController
* @Description
* @Author linjj
* @Date 2023/4/13 14:51
* @Version 1.0
*/
@Controller
@RequestMapping("qualityModel/")
public class QualityController {
@Autowired
QualityService qualityService;
@RequiresPermissions("/qualityModel/qualityJsp")
@OptionalLog(module = "查看", methods = "常用查询页面")
@RequestMapping("qualityJsp")
public String qualityModel(Model model) {
return "quality/quality";
}
/**
* @description:
* @params: startRange
* @params: endRange
* @return: String
* @author linjj
* @date: 2023/4/13 15:24
*/
@RequestMapping(value = "getPhAndDocumentNum", method = RequestMethod.POST)
@ResponseBody
public String getPhAndDocumentNum(String startRange, String endRange) {
if (StringUtils.isEmpty(startRange) && StringUtils.isEmpty(endRange)) {
return "开始范围,结束范围不能全部为空";
}
if (StringUtils.isNotEmpty(startRange) && StringUtils.isNotEmpty(endRange)) {
if (startRange.compareTo(endRange) > 0) {
return "开始范围不能小于结束范围";
}
}
String phAndDocumentNum = qualityService.getPhAndDocumentNum(startRange, endRange);
return JSON.toJSONString(phAndDocumentNum);
}
/**
* @description:
* @params: startRange
* @params: endRange
* @return: String
* @author linjj
* @date: 2023/4/14 9:32
*/
@RequestMapping(value = "examineDocument", method = RequestMethod.POST)
@ResponseBody
public String examineDocument(String startRange, String endRange) {
if (StringUtils.isEmpty(startRange) && StringUtils.isEmpty(endRange)) {
return "开始范围,结束范围不能全部为空";
}
if (StringUtils.isNotEmpty(startRange) && StringUtils.isNotEmpty(endRange)) {
if (startRange.compareTo(endRange) > 0) {
return "开始范围不能小于结束范围";
}
}
String s = qualityService.examineDocument(startRange, endRange);
return JSON.toJSONString(s);
}
/**
* @description:
* @params: startRange
* @params: endRange
* @return: String
* @author linjj
* @date: 2023/4/14 9:32
*/
@RequestMapping(value = "SeniorExamine", method = RequestMethod.POST)
@ResponseBody
public String SeniorExamine(String startRange, String endRange) {
if (StringUtils.isEmpty(startRange) && StringUtils.isEmpty(endRange)) {
return "开始范围,结束范围不能全部为空";
}
if (StringUtils.isNotEmpty(startRange) && StringUtils.isNotEmpty(endRange)) {
if (startRange.compareTo(endRange) > 0) {
return "开始范围不能小于结束范围";
}
}
String s = qualityService.SeniorExamine(startRange, endRange);
return JSON.toJSONString(s);
}
}

@ -35,6 +35,7 @@ import com.emr.vo.commomSearch.ScanPathVo;
import com.emr.vo.templateSearch.Emr_Modle_RelatedVo; import com.emr.vo.templateSearch.Emr_Modle_RelatedVo;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -45,6 +46,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
@ -1089,35 +1091,111 @@ public class TemplateSearchController {
if (StringUtils.isNoneBlank(patientIds)) { if (StringUtils.isNoneBlank(patientIds)) {
try { try {
List<ScanPathVo> scanPathVos = scanPathMapper.selectScanFileByBloodPatientIds(patientIds, null, flag); List<ScanPathVo> scanPathVos = scanPathMapper.selectScanFileByBloodPatientIds(patientIds, null, flag);
List<String> filePaths = new ArrayList<>();
// if (null != scanPathVos && !scanPathVos.isEmpty()) {
// for (int i = 0; i < scanPathVos.size(); i++) {
// String fileRealPath = scanPathVos.get(i).getFileRealPath();
// if(StringUtils.isNoneBlank(fileRealPath)){
// filePaths.add(fileRealPath);
// }
// }
// String zipName = "数字病案图片压缩包";
// downloadZip1(response,zipName,filePaths);
// }
if (null != scanPathVos && !scanPathVos.isEmpty()) { if (null != scanPathVos && !scanPathVos.isEmpty()) {
Set<ScanPathForPatientListVo> list = new LinkedHashSet<>(); // 创建临时路径,存放压缩文件
Set<String> patientIdSet = new LinkedHashSet<>(); String zipFilePath = "D://tmp";
//批量添加下载记录 File file = new File(zipFilePath);
printOrDownLoadInfoService.SimpleInsert(scanPathVos, null, Short.valueOf("2")); //查询保存文件目录是否存在
for (ScanPathVo scanPathVo : scanPathVos) { createFile(file);
patientIdSet.add(scanPathVo.getPatientId()); // 压缩输出流,包装流,将临时文件输出流包装成压缩流,将所有文件输出到这里,打成zip包
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(file));
// 循环调用压缩文件方法,将一个一个需要下载的文件打入压缩文件包
for (int i = 0; i < scanPathVos.size(); i++) {
String fileRealPath = scanPathVos.get(i).getFileRealPath();
if(StringUtils.isNoneBlank(fileRealPath)){
filePaths.add(fileRealPath);
}
}
for (String path : filePaths) {
// 该方法在下面定义
fileToZip(path, zipOut);
} }
for (String patinetId : patientIdSet) { // 压缩完成后,关闭压缩流
ScanPathForPatientListVo vo = new ScanPathForPatientListVo(); zipOut.close();
List<String> filePaths = new ArrayList<>();
for (ScanPathVo scanPathVo : scanPathVos) { //拼接下载默认名称并转为ISO-8859-1格式
if (scanPathVo.getPatientId().equals(patinetId)) { String fileName = new String(("我的压缩文件.zip").getBytes(),"ISO-8859-1");
vo.setName(scanPathVo.getName()); response.setHeader("Content-Disposition", "attchment;filename="+fileName);
vo.setInpatientNo(scanPathVo.getInpatientNo());
vo.setDisDate(scanPathVo.getDisDate()); //该流不可以手动关闭,手动关闭下载会出问题,下载完成后会自动关闭
String fileRealPath = scanPathVo.getFileRealPath(); ServletOutputStream outputStream = response.getOutputStream();
if (StringUtils.isNoneBlank(fileRealPath) && new File(fileRealPath).exists()) { FileInputStream inputStream = new FileInputStream(zipFilePath);
filePaths.add(fileRealPath); // 如果是SpringBoot框架,在这个路径
} // org.apache.tomcat.util.http.fileupload.IOUtils产品
} // 否则需要自主引入apache的 commons-io依赖
} // copy方法为文件复制,在这里直接实现了下载效果
if (!filePaths.isEmpty()) { IOUtils.copy(inputStream, outputStream);
vo.setScanPathList(filePaths);
list.add(vo); // 关闭输入流
inputStream.close();
//下载完成之后删掉这个zip包
File fileTempZip = new File(zipFilePath);
fileTempZip.delete();
}
} catch (Exception e) {
ExceptionPrintUtil.printException(e);
e.printStackTrace();
}
}
}
public void createFile(File file) {
//如果文件夹不存在则创建
if (!file.exists() && !file.isDirectory()) {
file.mkdir();
}
}
public static void fileToZip(String filePath,ZipOutputStream zipOut) throws IOException {
// 需要压缩的文件
File file = new File(filePath);
// 获取文件名称,如果有特殊命名需求,可以将参数列表拓展,传fileName
String fileName = file.getName();
FileInputStream fileInput = new FileInputStream(filePath);
// 缓冲
byte[] bufferArea = new byte[1024 * 10];
BufferedInputStream bufferStream = new BufferedInputStream(fileInput, 1024 * 10);
// 将当前文件作为一个zip实体写入压缩流,fileName代表压缩文件中的文件名称
zipOut.putNextEntry(new ZipEntry(fileName));
int length = 0;
// 最常规IO操作,不必紧张
while ((length = bufferStream.read(bufferArea, 0, 1024 * 10)) != -1) {
zipOut.write(bufferArea, 0, length);
}
//关闭流
fileInput.close();
// 需要注意的是缓冲流必须要关闭流,否则输出无效
bufferStream.close();
// 压缩流不必关闭,使用完后再关
}
public void downloadBloodZip1(HttpServletResponse response, String patientIds, String flag) {
if (StringUtils.isNoneBlank(patientIds)) {
try {
List<ScanPathVo> scanPathVos = scanPathMapper.selectScanFileByBloodPatientIds(patientIds, null, flag);
List<String> filePaths = new ArrayList<>();
if (null != scanPathVos && !scanPathVos.isEmpty()) {
for (int i = 0; i < scanPathVos.size(); i++) {
String fileRealPath = scanPathVos.get(i).getFileRealPath();
if(StringUtils.isNoneBlank(fileRealPath)){
filePaths.add(fileRealPath);
} }
} }
String zipName = "档案pdf压缩包"; String zipName = "数字病案图片压缩包";
downloadPdfZip(response, zipName, list); downloadZip1(response,zipName,filePaths);
} }
} catch (Exception e) { } catch (Exception e) {
ExceptionPrintUtil.printException(e); ExceptionPrintUtil.printException(e);
@ -1127,6 +1205,51 @@ public class TemplateSearchController {
} }
public static void downloadZip1(HttpServletResponse response,String zipName,List<String> filePaths){
try {
zipName = java.net.URLEncoder.encode(zipName, "UTF-8");
response.reset();
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + zipName + "("+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) +").zip");
ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
BufferedOutputStream bos = new BufferedOutputStream(zos);
for (int i = 0; i < filePaths.size(); i++) {
String base = filePaths.get(i);
File realFile = new File(base);
if(realFile.exists()) {
String fileName = base.substring(base.lastIndexOf("\\")+1); //每个文件名
zos.putNextEntry(new ZipEntry(fileName));
//读入转字节流
InputStream in = new FileInputStream(base);
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024 * 4];
int n = 0;
while ((n = in.read(buffer)) != -1) {
out.write(buffer, 0, n);
}
byte[] file = out.toByteArray(); //这个zip文件的字节
BufferedInputStream bis = new BufferedInputStream(new ByteArrayInputStream(file));
//输出
int len = 0;
byte[] buf = new byte[10 * 1024];
while( (len=bis.read(buf, 0, buf.length)) != -1){
bos.write(buf, 0, len);
}
bis.close();
bos.flush();
}
}
bos.close();
} catch (Exception e) {
ExceptionPrintUtil.printException(e);
e.printStackTrace();
}
}
//封装下载pdf压缩包方法 //封装下载pdf压缩包方法
private void downloadPdfZip(HttpServletResponse response, String zipName, Set<ScanPathForPatientListVo> list) { private void downloadPdfZip(HttpServletResponse response, String zipName, Set<ScanPathForPatientListVo> list) {
response.reset(); response.reset();

@ -0,0 +1,23 @@
package com.emr.dao.quality;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @ClassName QualityMapper
* @Description
* @Author linjj
* @Date 2023/4/13 15:29
* @Version 1.0
*/
public interface QualityMapper {
Integer getPhNum(@Param("startRange")String startRange, @Param("endRange")String endRange);
Integer getFileNum(@Param("startRange")String startRange, @Param("endRange")String endRange);
List<String>getFliePath(@Param("ph")String ph);
List<String>getPh(@Param("startRange")String startRange, @Param("endRange")String endRange);
}

@ -578,33 +578,6 @@ public class CommomService {
//组织输出地址 //组织输出地址
} }
outSrc = EMRRECORDJSP + File.separator + "reload" + File.separator + patientId + File.separator + sourceList[i] + File.separator + nameList[i]; outSrc = EMRRECORDJSP + File.separator + "reload" + File.separator + patientId + File.separator + sourceList[i] + File.separator + nameList[i];
/*if (srcPath.substring(srcPath.length() - 3).equals("tif")) {
//需要水印
//组织加水印后图片存放目录
String waterJpgRoot = WATERTIFTOJPGPATH + patientId + File.separator + sourceList[i] + File.separator;
//目录不存在则创建
if (!new File(waterJpgRoot).isDirectory()) {
new File(waterJpgRoot).mkdirs();
}
//获取到转换后jpg图像存放的位置
String filePathPrefix = waterJpgRoot + nameList[i];
String tifToJpgRoot = filePathPrefix.substring(0, filePathPrefix.lastIndexOf("."))+ ".jpg" ;
if (!new File(tifToJpgRoot).exists()) {
tifToJpg(srcPath, tifToJpgRoot);
//加水印存放的地址
String waterPicPath = waterPicRoot + nameList[i].substring(0, nameList[i].lastIndexOf("."))+ ".jpg";
img2PdfUtil.addWatermarkPic1(new File(tifToJpgRoot), emrPdfWaterSet, waterPicPath);
}
outSrc = EMRRECORDJSP + "\\reload\\" + patientId + File.separator + sourceList[i] + File.separator + nameList[i].substring(0, nameList[i].lastIndexOf("."))+ ".jpg";
} else {
//组织加水印后图片存放地址
String waterPicPath = waterPicRoot + nameList[i];
if (!new File(waterPicPath).exists()) {
img2PdfUtil.addWatermarkPic1(new File(srcPath), emrPdfWaterSet, waterPicPath);
//组织输出地址
}
outSrc = EMRRECORDJSP + "\\reload\\" + patientId + File.separator + sourceList[i] + File.separator + nameList[i];
}*/
} else { } else {
//不需要水印 //不需要水印
String root = ""; String root = "";

@ -0,0 +1,17 @@
package com.emr.service.quality;
/**
* @InterfaceName QualityService
* @Description
* @Author linjj
* @Date 2023/4/13 15:26
* @Version 1.0
*/
public interface QualityService {
String getPhAndDocumentNum(String startRange,String endRange);
String examineDocument(String startRange,String endRange);
String SeniorExamine(String startRange,String endRange);
}

@ -0,0 +1,98 @@
package com.emr.service.quality;
import com.emr.dao.quality.QualityMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.imageio.ImageIO;
import java.awt.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
/**
* @ClassName QualityServiceImpl
* @Description
* @Author linjj
* @Date 2023/4/13 15:26
* @Version 1.0
*/
@Service
@Transactional
public class QualityServiceImpl implements QualityService {
@Autowired
QualityMapper qualityMapper;
@Override
public String getPhAndDocumentNum(String startRange, String endRange) {
StringBuffer sb = new StringBuffer();
Integer phNum = qualityMapper.getPhNum(startRange, endRange);
Integer fileNum = qualityMapper.getFileNum(startRange, endRange);
String s = sb.append("查询结果:" + phNum + "盘," + fileNum + "个文件数据").toString();
return s;
}
@Override
public String examineDocument(String startRange, String endRange) {
//用来记录确实记录
int i = 0;
//用来拼接缺失文件地址
StringBuffer lackPath = new StringBuffer();
//用来返回记录
StringBuffer sb = new StringBuffer();
List<String> phList = qualityMapper.getPh(startRange, endRange);
for (String ph : phList) {
List<String> fliePathList = qualityMapper.getFliePath(ph);
for (String fliePath : fliePathList) {
File file = new File(fliePath);// 图片存放路径
if (!file.exists() && !file.isDirectory()) {
i++;
lackPath.append(fliePath + ",");
}
}
}
String s = sb.append("缺失" + i + "个文件," + "缺失文件为:" + lackPath).toString();
return s;
}
@Override
public String SeniorExamine(String startRange, String endRange) {
//用来记录缺失数量
int i = 0;
//用来继续故障数量
int faultNum = 0;
//用来拼接缺失文件地址
StringBuffer lackPath = new StringBuffer();
//用来拼接故障文件地址
StringBuffer faultPath = new StringBuffer();
//用来返回记录
StringBuffer sb = new StringBuffer();
List<String> phList = qualityMapper.getPh(startRange, endRange);
for (String ph : phList) {
List<String> fliePathList = qualityMapper.getFliePath(ph);
for (String fliePath : fliePathList) {
File file = new File(fliePath);// 图片存放路径
if (!file.exists() && !file.isDirectory()) {
i++;
lackPath.append(fliePath + ",");
}
}
for (String list : fliePathList) {
try {
Image image = ImageIO.read(new FileInputStream(list));
} catch (IOException e) {
faultNum++;
faultPath.append(list + ",");
}
}
}
String s = sb.append("缺失" + i + "个文件," + "缺失文件为:" + lackPath+"故障文件"+faultNum+"个文件,"+"故障文件为:"+faultPath).toString();
return s;
}
}

@ -0,0 +1,68 @@
package com.emr.util;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.kernel.pdf.xobject.PdfFormXObject;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.element.Paragraph;
import lombok.extern.slf4j.Slf4j;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/**
* pdf
* @date 2023-03-07
*/
@Slf4j
public class NewPdfUtil {
/***
* pdf
* @param source
* @param target
*/
public static void img2Pdf(String source, String target) {
File file = new File(source);
if (!file.exists()) {
log.error("文件不存在");
return;
}
Document document;
try {
PdfWriter writer = new PdfWriter(target);
PdfDocument pdf = new PdfDocument(writer);
document = new Document(pdf);
Image image = new Image(ImageDataFactory.create(source));
image.setAutoScale(true);
image.setAutoScaleHeight(true);
image.setAutoScaleWidth(true);
Paragraph p = new Paragraph().add(image);
document.add(p);
//关闭文档
document.close();
writer.close();
} catch (Exception e) {
log.error("图片:{}转pdf失败{}", source, e.getMessage());
}
}
}

@ -58,9 +58,9 @@
ON ON
dbo.zd_assort.assort_id = dbo.t_scan_assort.assort_id dbo.zd_assort.assort_id = dbo.t_scan_assort.assort_id
<where> <where>
dbo.commomtable.patient_id =#{patientIds} dbo.commomtable.patient_id in (${patientIds})
AND t_scan_assort.is_del != 1 AND t_scan_assort.is_del != 1
<if test="assortIds != null"> <if test="assortIds != null and assortIds != ''">
AND dbo.t_scan_assort.scan_page in (${assortIds}) AND dbo.t_scan_assort.scan_page in (${assortIds})
</if> </if>
</where> </where>

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.emr.dao.quality.QualityMapper" >
<select id="getPhNum" resultType="java.lang.Integer">
SELECT COUNT(distinct ph) FROM commomtable
<where> 1=1
<if test="startRange != null and startRange != ''">
and ph >= #{startRange,jdbcType=NVARCHAR}
</if>
<if test="endRange != null and endRange != ''">
and ph &lt;= #{endRange,jdbcType=NVARCHAR}
</if>
</where>
</select>
<select id="getFileNum" resultType="java.lang.Integer">
SELECT
COUNT(t.patient_id)
FROM
commomtable c
LEFT JOIN t_scan_assort t on c.patient_id=t.patient_id
<where> t.is_del!=1
<!-- <if test="startRange != null and startRange != '' and endRange != null and endRange != ''">-->
<!-- and ph >= #{startRange,jdbcType=NVARCHAR}-->
<!-- </if>-->
<!-- <if test="startRange != null and startRange != '' and endRange != null and endRange != ''">-->
<!-- and ph &lt;= #{endRange,jdbcType=NVARCHAR}-->
<!-- </if>-->
<!-- <if test="startRange != null and startRange != '' and endRange = null and endRange = ''">-->
<!-- and ph = #{startRange,jdbcType=NVARCHAR}-->
<!-- </if>-->
<!-- <if test="startRange = null and startRange = '' and endRange != null and endRange != ''">-->
<!-- and ph = #{endRange,jdbcType=NVARCHAR}-->
<!-- </if>-->
<if test="startRange != null and startRange != '' ">
and ph >= #{startRange,jdbcType=NVARCHAR}
</if>
<if test="endRange != null and endRange != ''">
and ph &lt;= #{endRange,jdbcType=NVARCHAR}
</if>
</where>
</select>
<select id="getFliePath" resultType="java.lang.String">
SELECT
c.file_path+'\'+t.scan_page as fliePath
FROM
commomtable c
LEFT JOIN t_scan_assort t on c.patient_id=t.patient_id
where t.is_del!=1 and c.ph=#{ph,jdbcType=NVARCHAR}
</select>
<select id="getPh" resultType="java.lang.String">
SELECT distinct ph FROM commomtable
<where> 1=1
<if test="startRange != null and startRange != '' ">
and ph >= #{startRange,jdbcType=NVARCHAR}
</if>
<if test="endRange != null and endRange != ''">
and ph &lt;= #{endRange,jdbcType=NVARCHAR}
</if>
</where>
</select>
</mapper>

@ -86,7 +86,7 @@
<div class="headDiv"> <div class="headDiv">
<div class="headSpanDiv"> <div class="headSpanDiv">
<span class="headspan"> <span class="headspan">
打印记录列表 浏览记录
</span> </span>
</div> </div>
</div> </div>

@ -0,0 +1,167 @@
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<c:set var="path" value="${pageContext.request.contextPath}"/>
<%@ include file="/WEB-INF/jspf/common.jspf" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>文件质检</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv=X-UA-Compatible IE=EmulateIE7>
<!--[if lt IE 9]>
<script type="text/javascript" src="${path}/static/js/html5shiv.min.js"></script>
<script type="text/javascript" src="${path}/static/js/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="${path}/static/js/respond.min.js"></script>
<![endif]-->
<script>
var path = "${path}";
</script>
<style type="text/css">
.mainDiv {
background-color: #fff;
}
/**搜索区*/
.searchDiv {
padding-top: 10px;
width: 100%;
height: 30px;
}
.dateSearchDiv {
width: 29%;
}
.dateSearchInput {
width: 30%;
margin-left: 2px;
}
.dateLabelDiv {
width: 30%;
text-align: right;
}
.searchInput {
width: 21%;
margin-left: 5px;
}
.searchElement {
text-align: right;
width: 40%;
}
.searchInputElement {
width: 60%;
}
.labelDiv {
padding-top: 4%;
margin-left: 2%;
}
/**查询按钮组*/
.btnsDiv {
margin-top: 0.4%;
height: 35px;
text-align: right;
margin-right: 25px;
}
.btns {
margin-left: 2%;
}
/**表格div*/
.tableDiv {
margin-left: 1%;
margin-right: 1%;
margin-top: -15px;
}
.hidden-xs {
max-width: 250px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.boxDiv {
width: 200px;
display: flex;
justify-content: space-between;
}
.documentNum {
padding-left: 100px;
}
.examineDocument {
padding-left: 100px;
}
.seniorExamine{
padding-left: 100px;
}
</style>
</head>
<body>
<div class="main">
<div class="headDiv">
<div class="headSpanDiv">
<span class="headspan">
文件质检
</span>
</div>
</div>
<div class="mainDiv">
<div class="searchDiv" style="margin-top: 0.4%">
<div class="dateSearchDiv left">
<div class="dateLabelDiv left">
<label class="labelDiv">盘号:</label>
</div>
<div class="dateSearchInput left">
<input type="number" class="form-control input-sm" id="startRange" placeholder="开始范围"
maxlength="10" min="0" autocomplete="off">
</div>
<div class="dateSearchInput left">
<input type="number" oninput="" min="0" class="form-control input-sm" id="endRange" placeholder="结束范围" maxlength="10"
autocomplete="off">
</div>
</div>
<div class="boxDiv">
<div class="left">
<button type="button" class="btn btn-sm btn-primary" onclick="getPhAndDocumentNum()">查询</button>
</div>
<div class="left">
<button type="button" class="btn btn-sm btn-primary" onclick="examineDocument()">检查</button>
</div>
<div class="left">
<button type="button" class="btn btn-sm btn-primary" onclick="SeniorExamine()">高级检查</button>
</div>
</div>
</div>
<!--数据表格-->
<div id="tableDiv" class="tableDiv">
<input type="hidden" id="checks">
<table id="mytab" class="table text-nowrap table-bordered">
</table>
</div>
</div>
</div>
<div class="documentNum">
</div>
<div class="examineDocument">
</div>
<div class="seniorExamine">
</div>
</div>
<script type="text/javascript" src="${path}/static/js/otherManage/quality.js?t=2022-01-17"></script>
<script type="text/javascript" src="${path}/static/js/dateUtil.js"></script>
</body>
</html>

@ -198,7 +198,7 @@
<input type="hidden" id="showPrint" value="${CURRENT_USER.userAge}"> <input type="hidden" id="showPrint" value="${CURRENT_USER.userAge}">
<input type="hidden" id="flag" value="file_path"> <input type="hidden" id="flag" value="file_path">
<!--查询的sql ORDER BY 语句--> <!--查询的sql ORDER BY 语句-->
<input type="hidden" id="orderBys" value=" order by commomtable.inpatient_no,commomtable.admiss_times"> <input type="hidden" id="orderBys" value=" order by commomtable.dis_date,commomtable.inpatient_no,commomtable.admiss_times">
<!--该用户借阅申请的审批过了且未过期的病案不可重复申请可查看的病案主键patientId--> <!--该用户借阅申请的审批过了且未过期的病案不可重复申请可查看的病案主键patientId-->
<input type="hidden" id="approves"> <input type="hidden" id="approves">
<!--该用户下载申请的审批过了且未过期的病案不可重复申请可查看的病案主键patientId--> <!--该用户下载申请的审批过了且未过期的病案不可重复申请可查看的病案主键patientId-->
@ -751,9 +751,9 @@
<button type="button" class="btn btn-sm btn-default" data-dismiss="modal"> <button type="button" class="btn btn-sm btn-default" data-dismiss="modal">
关闭 关闭
</button> </button>
<button type="button" class="btn btn-sm btn-primary" onclick="save()"> <%-- <button type="button" class="btn btn-sm btn-primary" onclick="save()">--%>
暂时保存 <%-- 暂时保存--%>
</button> <%-- </button>--%>
<button type="button" class="btn btn-sm btn-primary" onclick="add()"> <button type="button" class="btn btn-sm btn-primary" onclick="add()">
确认提交 确认提交
</button> </button>

@ -299,10 +299,10 @@ function getSql() {
whereNames += commomtable + "." + name + " IN (" + disDepts + ") AND "; whereNames += commomtable + "." + name + " IN (" + disDepts + ") AND ";
} }
//病状转归 //病状转归
if ($("#dis_thing").val() != '') { // if ($("#dis_thing").val() != '') {
name = 'main_dis_thing'; // name = 'main_dis_thing';
whereNames += commomtable + "." + name + " = '" + $("#dis_thing").val() + "' AND "; // whereNames += commomtable + "." + name + " = '" + $("#dis_thing").val() + "' AND ";
} // }
//入院日期 //入院日期
if ($("#startTime1").val() != '' && $("#endTime1").val() != '') { if ($("#startTime1").val() != '' && $("#endTime1").val() != '') {
name = 'admiss_date'; name = 'admiss_date';

@ -0,0 +1,73 @@
function getPhAndDocumentNum() {
var startRange = $("#startRange").val();
var endRange = $("#endRange").val();
if (!startRange &&!endRange) {
return toastr.warning("开始范围,结束范围不能全部为空")
}
if (!startRange &&!endRange) {
if (startRange > endRange) {
return toastr.warning("开始范围不能小于结束范围")
}
}
$.ajax({
type:'post',
url:path+"/qualityModel/getPhAndDocumentNum",
data:{startRange:startRange,endRange:endRange},
dataType:'json',
success:function(data){
$('.documentNum').html(data)
},
})
$('.examineDocument').html("")
$('.seniorExamine').html("")
}
function examineDocument(){
var startRange = $("#startRange").val();
var endRange = $("#endRange").val();
if (!startRange &&!endRange) {
return toastr.warning("开始范围,结束范围不能全部为空")
}
if (!startRange &&!endRange) {
if (startRange > endRange) {
return toastr.warning("开始范围不能小于结束范围")
}
}
$.ajax({
type:'post',
url:path+"/qualityModel/examineDocument",
data:{startRange:startRange,endRange:endRange},
dataType:'json',
success:function(data){
$('.examineDocument').html(data)
},
})
$('.seniorExamine').html("")
$('.documentNum').html("")
}
function SeniorExamine(){
var startRange = $("#startRange").val();
var endRange = $("#endRange").val();
if (!startRange &&!endRange) {
return toastr.warning("开始范围,结束范围不能全部为空")
}
if (!startRange &&!endRange) {
if (startRange > endRange) {
return toastr.warning("开始范围不能小于结束范围")
}
}
$.ajax({
type:'post',
url:path+"/qualityModel/SeniorExamine",
data:{startRange:startRange,endRange:endRange},
dataType:'json',
success:function(data){
$('.seniorExamine').html(data)
},
})
$('.examineDocument').html("")
$('.documentNum').html("")
}

@ -87,6 +87,21 @@ function freshTable(){
$("#mytab").bootstrapTable('destroy'); $("#mytab").bootstrapTable('destroy');
$("#checks").val(''); $("#checks").val('');
var columns = []; var columns = [];
var map1 = {};
map1['title'] = '操作';
map1['field'] = 'Button';
map1['align'] = 'center';
map1['formatter'] = 'AddFunctionAlty';
columns.push(map1)
var flag = $("#showPrint").val();
//固定列标识
var mixFlag = false;
if(flag == 1){
flag = true;
}else{
flag = false;
mixFlag = true;
}
columns.push({ columns.push({
title:'全选', title:'全选',
field:'select', field:'select',
@ -130,21 +145,6 @@ function freshTable(){
} }
$("#fieldCns").val(fieldCns); $("#fieldCns").val(fieldCns);
} }
var map1 = {};
map1['title'] = '操作';
map1['field'] = 'Button';
map1['align'] = 'center';
map1['formatter'] = 'AddFunctionAlty';
columns.push(map1)
var flag = $("#showPrint").val();
//固定列标识
var mixFlag = false;
if(flag == 1){
flag = true;
}else{
flag = false;
mixFlag = true;
}
//生成用户数据 //生成用户数据
$('#mytab').bootstrapTable({ $('#mytab').bootstrapTable({
method: 'post', method: 'post',

Loading…
Cancel
Save