From 500a87a77e50caa08660272ae1991a65bd2c4a29 Mon Sep 17 00:00:00 2001 From: hcy <314517173@qq.com> Date: Tue, 14 May 2024 21:17:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=B9=E7=94=A8=E6=B8=85=E5=8D=95=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 45 ++++++ .../emr/controller/ExportExcelController.java | 30 ++++ .../commomSearch/CommomSearchController.java | 11 ++ src/main/java/com/emr/dao/CommomMapper.java | 8 + .../java/com/emr/dao/Zd_AssortMapper.java | 7 + .../java/com/emr/service/CommomService.java | 133 ++++++++++++++- .../service/ImportExcel/ImportExcelUtil.java | 53 +++++- .../java/com/emr/util/CompressFileUtils.java | 123 ++++++++++++++ src/main/java/com/emr/util/Pdf2ImgUtil.java | 151 ++++++++++++++++++ src/main/java/com/emr/util/UploadUtil.java | 89 +++++++++++ src/main/resources/mapper/CommomMapper.xml | 8 + src/main/resources/mapper/Zd_AssortMapper.xml | 3 + .../webapp/WEB-INF/jspf/importPackageJsp.jspf | 9 +- .../commomSearch/commomListqf.jsp | 48 ++++++ .../recordManage/exportTask/exportTaskList.js | 31 ---- 15 files changed, 708 insertions(+), 41 deletions(-) create mode 100644 src/main/java/com/emr/util/CompressFileUtils.java create mode 100644 src/main/java/com/emr/util/Pdf2ImgUtil.java create mode 100644 src/main/java/com/emr/util/UploadUtil.java diff --git a/pom.xml b/pom.xml index 2e0e885..8253604 100644 --- a/pom.xml +++ b/pom.xml @@ -241,6 +241,33 @@ imageio-tiff 3.6 + + + org.mybatis.generator + mybatis-generator-core + 1.3.5 + + + + ant + ant + 1.6.5 + + + commons-fileupload + commons-fileupload + 1.3.1 + + + commons-io + commons-io + 2.4 + + + com.github.junrar + junrar + 0.7 + @@ -267,6 +294,24 @@ true + + + org.mybatis.generator + mybatis-generator-maven-plugin + 1.3.5 + + + src/main/resources/generatorConfig.xml + true + + + + org.mybatis.generator + mybatis-generator-core + 1.3.5 + + + diff --git a/src/main/java/com/emr/controller/ExportExcelController.java b/src/main/java/com/emr/controller/ExportExcelController.java index 82e6aa8..0a16ada 100644 --- a/src/main/java/com/emr/controller/ExportExcelController.java +++ b/src/main/java/com/emr/controller/ExportExcelController.java @@ -52,4 +52,34 @@ public class ExportExcelController { } } } + + @RequestMapping(value="exportWrongExcel1") + public void exportWrongExcel1(String workBookKey,String fileName, HttpServletResponse response){ + OutputStream os = null; + if(StringUtils.isNoneBlank(fileName)){ + //文件名 + fileName = fileName+"上传出错数据列表.xls"; + try { + //导出excel的操作 + Workbook workbook = ImportExcelUtil.getWorkBookMapByKey(workBookKey); + 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 + "\""); + workbook.write(os); + }catch (Exception e){ + e.printStackTrace(); + }finally { + if(os != null){ + try { + os.close(); + }catch (Exception e){ + e.printStackTrace(); + } + } + } + } + } } diff --git a/src/main/java/com/emr/controller/commomSearch/CommomSearchController.java b/src/main/java/com/emr/controller/commomSearch/CommomSearchController.java index 9415024..a131788 100644 --- a/src/main/java/com/emr/controller/commomSearch/CommomSearchController.java +++ b/src/main/java/com/emr/controller/commomSearch/CommomSearchController.java @@ -1301,4 +1301,15 @@ public class CommomSearchController { } return result.toString(); } + + /** + * 上传费用清单压缩文件 + */ + @RequiresPermissions("/commom/uploadCostList") + @RequestMapping("/uploadCostList") + @ResponseBody + public ResultUtil uploadCost(HttpServletRequest request) { + return commomService.uploadCost(request); + + } } diff --git a/src/main/java/com/emr/dao/CommomMapper.java b/src/main/java/com/emr/dao/CommomMapper.java index 6619e69..d5a9c04 100644 --- a/src/main/java/com/emr/dao/CommomMapper.java +++ b/src/main/java/com/emr/dao/CommomMapper.java @@ -142,4 +142,12 @@ public interface CommomMapper { String getPatientIdByInpNoAndVisitId(@Param("inpNo")String inpNo,@Param("visitId")String visitId); + /** + *根据病案号、出院日期查询commomtable对象 + * @param inpatientNo + * @param disDate + * @return + */ + CommomVo getCommomTableList(@Param("inpatientNo") String inpatientNo, @Param("disDate") String disDate); + } \ No newline at end of file diff --git a/src/main/java/com/emr/dao/Zd_AssortMapper.java b/src/main/java/com/emr/dao/Zd_AssortMapper.java index ae7d7bc..c976abe 100644 --- a/src/main/java/com/emr/dao/Zd_AssortMapper.java +++ b/src/main/java/com/emr/dao/Zd_AssortMapper.java @@ -41,4 +41,11 @@ public interface Zd_AssortMapper { * 查询全部根据用户id关联角色分配表 * */ List selectAllAndUserReaderByUserIdAndRoleId(@Param("userId") Integer userId,@Param("roleId") Integer roleId); + + /** + * 根据分类名称查询分类对象 + * @param assortName + * @return + */ + Zd_Assort getZdAssortByName(@Param("assortName") String assortName); } \ No newline at end of file diff --git a/src/main/java/com/emr/service/CommomService.java b/src/main/java/com/emr/service/CommomService.java index a577f92..cbffc22 100644 --- a/src/main/java/com/emr/service/CommomService.java +++ b/src/main/java/com/emr/service/CommomService.java @@ -4,18 +4,26 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.emr.dao.Archive_DetailMapper; import com.emr.dao.CommomMapper; +import com.emr.dao.Zd_AssortMapper; import com.emr.dao.emrPdfWaterSet.EmrPdfWaterSetMapper; import com.emr.entity.EmrComomSet; import com.emr.entity.Power_User; import com.emr.entity.ResultUtil; +import com.emr.entity.Zd_Assort; import com.emr.entity.emrPdfWaterSet.EmrPdfWaterSet; import com.emr.entity.tScanAssort.T_Scan_Assort; +import com.emr.service.ImportExcel.ImportExcelEntity; +import com.emr.service.ImportExcel.ImportExcelUtil; import com.emr.service.tScanAssort.T_Scan_AssortService; import com.emr.util.Jpg2PdfUtil; +import com.emr.util.Pdf2ImgUtil; +import com.emr.util.UploadUtil; import com.emr.util.img2PdfUtil; +import com.emr.vo.ExportInpVo; import com.emr.vo.User; import com.emr.vo.commomSearch.CommomTree; import com.emr.vo.commomSearch.CommomVo; +import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -28,9 +36,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import org.springframework.util.ObjectUtils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.imageio.ImageIO; @@ -69,6 +79,10 @@ public class CommomService { private String EMRRECORDJSP; @Value("${waterTifToJpgPath}") private String WATERTIFTOJPGPATH; + + @Value("${cost_pdf_path}") + private String costPdfPath; + @Autowired private CommomMapper commomMapper; @Autowired @@ -79,6 +93,10 @@ public class CommomService { private EmrPdfWaterSetMapper pdfWaterSetMapper; @Autowired private Archive_DetailMapper archiveDetailMapper; + + @Autowired + private Zd_AssortMapper zd_assortMapper; + public static final Map CACHE_MAP = new ConcurrentHashMap<>(); //获取所属医院用户名集合 @@ -633,8 +651,8 @@ public class CommomService { //定义输出地址 String outSrc = ""; //获取项目上下文地址 - if ((printEffective != null && printEffective == 1 ) || - (printIsImg != null && printIsImg == 1) ) { + if ((printEffective != null && printEffective == 1) || + (printIsImg != null && printIsImg == 1)) { if ("99".equals(sourceList[i])) { String rootSrcPath = selectRootByNotWater(srcPath); String str2 = srcPath.substring(0, srcPath.indexOf(File.separator)); @@ -981,4 +999,115 @@ public class CommomService { } } } + + /** + * 费用清单文件上传 + * + * @param request + * @return + */ + public ResultUtil uploadCost(HttpServletRequest request) { + + //读取文件 + MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) (request); + MultipartFile multipartFile = multiRequest.getFile("upfile"); + + if (multipartFile == null) { + return ResultUtil.error("上传文件不能为空"); + } + + try { + + //解析压缩包文件上传并解压,返回存放pdf的全路径 + String saveFileName = UploadUtil.resolveCompressUploadFile(request, multipartFile, costPdfPath); + //获取pdf文件名 + List pdfNameList = Pdf2ImgUtil.getPdfName(saveFileName); + //导出失败病案号,出院日期数组 + List exportInpVoList = new ArrayList<>(); + //定义导出异常病案号,出院日期实体对象 + ExportInpVo exportInpVo = null; + + if (pdfNameList != null && pdfNameList.size() > 0) { + //病案号 + String inpatientNo = ""; + //出院日期 + String disDate = ""; + + + for (int i = 0; i < pdfNameList.size(); i++) { + + String pdfName = pdfNameList.get(i); + if (pdfName.contains("_")) { + inpatientNo = pdfName.substring(0, pdfName.indexOf("_")); + disDate = pdfName.substring(pdfName.lastIndexOf("_") + 1); + } + if (pdfName.contains("-")) { + inpatientNo = pdfName.substring(0, pdfName.indexOf("-")); + disDate = pdfName.substring(pdfName.lastIndexOf("-") + 1); + } + //病案号转为数值型 + //inpatientNo =String.valueOf(Long.parseLong(inpatientNo)); + + //格式化日期 + String disDateStr = disDate.substring(0, 4) + "-" + disDate.substring(4, 6) + "-" + disDate.substring(6, 8); + + CommomVo commomVo = commomMapper.getCommomTableList(inpatientNo, disDateStr); + + + if (ObjectUtils.isEmpty(commomVo)) { + + exportInpVo = new ExportInpVo(); + exportInpVo.setInpatientNo(inpatientNo); + exportInpVo.setDisDate(disDateStr); + exportInpVoList.add(exportInpVo); + continue; + + } + + + if (commomVo != null && StringUtils.isNotBlank(commomVo.getFilePath())) { + File filePath = new File(commomVo.getFilePath()); + if (!filePath.exists()) { + filePath.mkdirs(); + } + //pdf转jpg图片生成到指定路徑 + List picNameList = Pdf2ImgUtil.pdfToPic(saveFileName, pdfName, "jpg", commomVo.getFilePath()); + + if (picNameList != null && picNameList.size() > 0) { + Zd_Assort zd_assort = zd_assortMapper.getZdAssortByName("费用"); + List insertList = new ArrayList<>(); + T_Scan_Assort t_scan_assort = null; + for (int k = 0; k < picNameList.size(); k++) { + t_scan_assort = new T_Scan_Assort(); + t_scan_assort.setPatientId(commomVo.getPatientId()); + t_scan_assort.setAssortId(zd_assort.getAssortId()); + t_scan_assort.setScanPage(picNameList.get(k)); + t_scan_assort.setIsDel((short) 0); + t_scan_assort.setSource((short) 1); + insertList.add(t_scan_assort); + } + //批量新增图片记录 + scanAssortService.SimpleInsert(insertList); + } + } + } + + ImportExcelEntity excelEntity = null; + if (exportInpVoList != null && exportInpVoList.size() > 0) { + //创建生成excel + excelEntity = ImportExcelUtil.getExcle(exportInpVoList); + } + FileUtils.deleteDirectory(new File(saveFileName)); + return ResultUtil.ok(excelEntity); + } else { + //FileUtils.deleteDirectory(new File(saveFileName)); + return ResultUtil.error("pdf文件不存在"); + } + + + } catch (Exception e) { + e.printStackTrace(); + return ResultUtil.error("费用清单上传失败"); + } + } } diff --git a/src/main/java/com/emr/service/ImportExcel/ImportExcelUtil.java b/src/main/java/com/emr/service/ImportExcel/ImportExcelUtil.java index cb46056..bcf10b2 100644 --- a/src/main/java/com/emr/service/ImportExcel/ImportExcelUtil.java +++ b/src/main/java/com/emr/service/ImportExcel/ImportExcelUtil.java @@ -1,10 +1,9 @@ package com.emr.service.ImportExcel; import com.emr.util.UUIDUtils; +import com.emr.vo.ExportInpVo; import org.apache.commons.lang3.StringUtils; -import org.apache.poi.hssf.usermodel.HSSFCell; -import org.apache.poi.hssf.usermodel.HSSFDateUtil; -import org.apache.poi.hssf.usermodel.HSSFFont; +import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.*; import org.springframework.web.context.ContextLoader; @@ -496,4 +495,52 @@ public class ImportExcelUtil { } return null; } + + + public static ImportExcelEntity getExcle(List exportInpVoList) throws Exception { + + //1.创建HSSFWorkbook 对象 + HSSFWorkbook wb = new HSSFWorkbook(); + // 2.在workbook中添加一个sheet,对应Excel中的一个sheet + HSSFSheet sheet = wb.createSheet("费用清单"); + // 3.在sheet中添加表头第0行,老版本poi对excel行数列数有限制short + HSSFRow row = sheet.createRow((int) 0); + // 4.创建单元格,设置值表头,设置表头居中 + HSSFCellStyle style = wb.createCellStyle(); + // 居中格式 + style.setAlignment(HSSFCellStyle.ALIGN_CENTER); + + //设置颜色 + Font font = wb.createFont(); + font.setColor(HSSFColor.RED.index); + style.setFont(font); + + + // 5. 设置表头 + HSSFCell cell = row.createCell(0); + cell.setCellValue("病案号"); + cell.setCellStyle(style); + + + cell = row.createCell(1); + cell.setCellValue("出院日期"); + cell.setCellStyle(style); + + // 6.设置excle内容 + for (int i = 0; i < exportInpVoList.size(); i++) { + row = sheet.createRow((int) i + 1); + ExportInpVo exportInpVo = exportInpVoList.get(i); + // 创建单元格,设置值 + row.createCell(0).setCellValue(exportInpVo.getInpatientNo()); + row.createCell(1).setCellValue(exportInpVo.getDisDate()); + } + + String workBookKey = UUIDUtils.getUUID(); + workBookMap.put(workBookKey, wb); + + ImportExcelEntity excelEntity = new ImportExcelEntity(); + excelEntity.setWorkBookKey(workBookKey); + return excelEntity; + + } } diff --git a/src/main/java/com/emr/util/CompressFileUtils.java b/src/main/java/com/emr/util/CompressFileUtils.java new file mode 100644 index 0000000..9c1ca70 --- /dev/null +++ b/src/main/java/com/emr/util/CompressFileUtils.java @@ -0,0 +1,123 @@ +package com.emr.util; + +import com.github.junrar.Archive; +import com.github.junrar.rarfile.FileHeader; + +import java.io.*; +import java.nio.charset.Charset; +import java.util.Enumeration; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + +/** + * 解压工具类 + */ +public class CompressFileUtils { + /** + * 解压到指定目录 + * + * @param zipPath + * @param descDir + * @author + */ + public static void unZipFiles(String zipPath, String descDir) throws IOException { + unZipFiles(new File(zipPath), descDir); + } + + /** + * 解压文件到指定目录 + * + * @param zipFile + * @param descDir + * @author isea533 + */ + @SuppressWarnings("rawtypes") + public static void unZipFiles(File zipFile, String descDir) throws IOException { + File pathFile = new File(descDir); + if (!pathFile.exists()) { + pathFile.mkdirs(); + } + ZipFile zip = new ZipFile(zipFile,Charset.forName("GBK")); + for (Enumeration entries = zip.entries(); entries.hasMoreElements(); ) { + ZipEntry entry = (ZipEntry) entries.nextElement(); + String zipEntryName = entry.getName(); + InputStream in = zip.getInputStream(entry); + String outPath = (descDir + zipEntryName).replaceAll("\\*", "/"); + ; + //判断路径是否存在,不存在则创建文件路径 + File file = new File(outPath.substring(0, outPath.lastIndexOf('/'))); + if (!file.exists()) { + file.mkdirs(); + } + //判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压 + if (new File(outPath).isDirectory()) { + continue; + } + //输出文件路径信息 + System.out.println(outPath); + + OutputStream out = new FileOutputStream(outPath); + byte[] buf1 = new byte[1024]; + int len; + while ((len = in.read(buf1)) > 0) { + out.write(buf1, 0, len); + } + in.close(); + out.close(); + } + System.out.println("******************解压完毕********************"); + } + + /** + * 根据原始rar路径,解压到指定文件夹下. + * + * @param srcRarPath 原始rar路径 + * @param dstDirectoryPath 解压到的文件夹 + */ + public static void unRarFile(String srcRarPath, String dstDirectoryPath) { + if (!srcRarPath.toLowerCase().endsWith(".rar")) { + System.out.println("非rar文件!"); + return; + } + File dstDiretory = new File(dstDirectoryPath); + if (!dstDiretory.exists()) {// 目标目录不存在时,创建该文件夹 + dstDiretory.mkdirs(); + } + Archive a = null; + try { + a = new Archive(new File(srcRarPath)); + if (a != null) { + a.getMainHeader().print(); // 打印文件信息. + FileHeader fh = a.nextFileHeader(); + while (fh != null) { + if (fh.isDirectory()) { // 文件夹 + File fol = new File(dstDirectoryPath + File.separator + + fh.getFileNameString()); + fol.mkdirs(); + } else { // 文件 + File out = new File(dstDirectoryPath + File.separator + + fh.getFileNameString().trim()); + //System.out.println(out.getAbsolutePath()); + try {// 之所以这么写try,是因为万一这里面有了异常,不影响继续解压. + if (!out.exists()) { + if (!out.getParentFile().exists()) {// 相对路径可能多级,可能需要创建父目录. + out.getParentFile().mkdirs(); + } + out.createNewFile(); + } + FileOutputStream os = new FileOutputStream(out); + a.extractFile(fh, os); + os.close(); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + fh = a.nextFileHeader(); + } + a.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/emr/util/Pdf2ImgUtil.java b/src/main/java/com/emr/util/Pdf2ImgUtil.java new file mode 100644 index 0000000..6a57ff6 --- /dev/null +++ b/src/main/java/com/emr/util/Pdf2ImgUtil.java @@ -0,0 +1,151 @@ +package com.emr.util; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.rendering.PDFRenderer; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FilenameFilter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class Pdf2ImgUtil { + /** + * 使用pdfbox将整个pdf转换成图片 + * + * @param fileAddress 文件地址 如:C:\\Users\\user\\Desktop\\test + * @param filename PDF文件名不带后缀名 + * @param type 图片类型 png 和jpg + * @param picPath 存放图片的文件路径 + * @return List 图片名数组 + */ + public static List pdfToPic(String fileAddress, String filename, String type, String picPath) throws IOException { + //long startTime = System.currentTimeMillis(); + // 将文件地址和文件名拼接成路径 注意:线上环境不能使用\\拼接 + File file = new File(fileAddress + "\\" + filename + ".pdf"); + List picNameList = new ArrayList<>(); + PDDocument doc = null; + try { + // 写入文件 + doc = PDDocument.load(file); + PDFRenderer renderer = new PDFRenderer(doc); + int pageCount = doc.getNumberOfPages(); + for (int i = 0; i < pageCount; i++) { + // dpi为144,越高越清晰,转换越慢 + BufferedImage image = renderer.renderImageWithDPI(i, 150); // Windows native DPI + // 将图片写出到该路径下 + ImageIO.write(image, type, new File(picPath + "\\" + "FY_" + filename + "_" + (i + 1) + "." + type)); + picNameList.add("FY_" + filename + "_" + (i + 1) + "." + type); + } + + //long endTime = System.currentTimeMillis(); + //System.out.println("共耗时:" + ((endTime - startTime) / 1000.0) + "秒"); //转化用时 + return picNameList; + } catch (IOException e) { + e.printStackTrace(); + return null; + } finally { + if (doc != null) { + doc.close(); + } + } + + } + + public static void main(String[] args) { + //pdf2png("D://cost///467f76bec51b4853b640609b0b8feb35/", "35923-20180918", "jpg"); + + + //File file = new File("D://cost///467f76bec51b4853b640609b0b8feb35/"); + //File file1 = new File("C:\\Users\\user\\Desktop\\test//"); + //System.out.println(file); + //System.out.println(file1); + + /*File folder = new File("D://cost///e8554937829b4624b20c89b427bae411/"); + File[] files = folder.listFiles(); // 获取路径下的所有文件和文件夹 + + if (files != null) { + for (File file : files) { + if (file.isFile()) { + System.out.println(file.getName()); // 输出文件名 + } + } + }*/ + + /*String extension = ".pdf"; // 设置你想要的文件后缀 + + File folder = new File("D://cost///467f76bec51b4853b640609b0b8feb35/"); + String[] files = folder.list(new FilenameFilter() { + public boolean accept(File dir, String name) { + return name.endsWith(extension); + } + }); + + if (files != null) { + for (String file : files) { + System.out.println(file.substring(0, file.lastIndexOf("."))); + } + }*/ + + //String pathName="\\\\192.168.2.22\\d\\厦门仙岳1期图像\\22盘\\01930\\35923-20180918-64efbec3f1e84472b013dd8f5383d448"; + //File file = new File("\\192.168.2.22\d\\厦门仙岳1期图像\\22盘\\01930\\35923-20180918-64efbec3f1e84472b013dd8f5383d448") + + + + /*List fileNameList = new ArrayList<>(); + String extension = ".pdf"; // 设置你想要的文件后缀 + + File folder = new File("D://cost///467f76bec51b4853b640609b0b8feb35/"); + String[] files = folder.list(new FilenameFilter() { + public boolean accept(File dir, String name) { + return name.endsWith(extension); + } + }); + + if (files != null) { + for (String file : files) { + String fileName = file.substring(0, file.lastIndexOf(".")); + fileNameList.add(fileName); + } + } + + System.out.println(fileNameList);*/ + + /*String disDateStr ="2018-09-18"; + String disDateStr1 = disDateStr.substring(0, 4) + disDateStr.substring(5, 7) + disDateStr.substring(8, 10); + System.out.println(disDateStr1);*/ + } + + + /** + * 根据文件路径名获取pdf文件名 + * + * @param pathName pdf所在的文件路径名 + * @return + */ + public static List getPdfName(String pathName) { + + List fileNameList = new ArrayList<>(); + String extension = ".pdf"; // 设置你想要的文件后缀 + + File folder = new File(pathName); + String[] files = folder.list(new FilenameFilter() { + public boolean accept(File dir, String name) { + return name.endsWith(extension); + } + }); + + if (files != null) { + String fileName = ""; + for (String file : files) { + fileName = file.substring(0, file.lastIndexOf(".")); + fileNameList.add(fileName); + } + } + return fileNameList; + } + + +} diff --git a/src/main/java/com/emr/util/UploadUtil.java b/src/main/java/com/emr/util/UploadUtil.java new file mode 100644 index 0000000..fff82d1 --- /dev/null +++ b/src/main/java/com/emr/util/UploadUtil.java @@ -0,0 +1,89 @@ +package com.emr.util; + +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import java.io.File; + +@Component +public class UploadUtil { + + /** + * 解析上传的压缩文件 + * + * @param request 请求 + * @param file 上传文件 + * @return + * @throws Exception + */ + public static String resolveCompressUploadFile(HttpServletRequest request, MultipartFile file, String path) throws Exception { + + /* 截取后缀名 */ + if (file.isEmpty()) { + return "文件不能为空"; + } + String fileName = file.getOriginalFilename(); + int pos = fileName.lastIndexOf("."); + String extName = fileName.substring(pos + 1).toLowerCase(); + //判断上传文件必须是zip或者是rar否则不允许上传 + if (!extName.equals("zip") && !extName.equals("rar")) { + throw new Exception("上传文件格式错误,请重新上传"); + } + // 时间加后缀名保存 + //SimpleDateFormat dateFormat = new SimpleDateFormat ("yyyy-MM-dd"); + //String format = dateFormat.format (new Date()); + String saveName = UUIDUtils.getUUID() + "." + extName; //353fdsfdfsdfdsf7887878.zip + //文件名 + String saveFileName = saveName.substring(0, saveName.lastIndexOf("."));//353fdsfdfsdfdsf7887878 + // 根据服务器的文件保存地址和原文件名创建目录文件全路径 + //设置上传文件夹的真实路径 + //String realPath = request.getSession().getServletContext().getRealPath("/upfile"); + File pushFile = new File(path + "/" + saveFileName + "/" + saveName);//存放压缩包文件的路径下的压缩文件 + + File descFile = new File(path + "/" + saveFileName);//存放压缩包文件的路径 + if (!descFile.exists()) { + descFile.mkdirs(); + } + //解压目的文件 + String descDir = path + "/" + saveFileName + "/"; + + file.transferTo(pushFile); + + //开始解压zip + if (extName.equals("zip")) { + CompressFileUtils.unZipFiles(pushFile, descDir); + + } else if (extName.equals("rar")) { + //开始解压rar + CompressFileUtils.unRarFile(pushFile.getAbsolutePath(), descDir); + } else { + throw new Exception("文件格式不正确不能解压"); + } + + return descDir; + } + + /** + * 解压后生成MultipartFile集合 + * + * @param strPath + * @return + */ + /*public static List getMultipartFileListByPath(String strPath) throws IOException { + + File dir = new File(strPath); + File[] files = dir.listFiles(); // 该文件目录下文件全部放入数组 + List multipartFiles = new ArrayList<>(); + if (files != null) { + for (File file : files) { + FileInputStream input = new FileInputStream(file); + MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(), "text/plain", input); + multipartFiles.add(multipartFile); + input.close(); + } + } + return multipartFiles; + }*/ + +} diff --git a/src/main/resources/mapper/CommomMapper.xml b/src/main/resources/mapper/CommomMapper.xml index c24e6a1..c2ad873 100644 --- a/src/main/resources/mapper/CommomMapper.xml +++ b/src/main/resources/mapper/CommomMapper.xml @@ -1336,4 +1336,12 @@ where patient_id = #{patientId} + + \ No newline at end of file diff --git a/src/main/resources/mapper/Zd_AssortMapper.xml b/src/main/resources/mapper/Zd_AssortMapper.xml index aae845c..fbb5d73 100644 --- a/src/main/resources/mapper/Zd_AssortMapper.xml +++ b/src/main/resources/mapper/Zd_AssortMapper.xml @@ -156,4 +156,7 @@ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jspf/importPackageJsp.jspf b/src/main/webapp/WEB-INF/jspf/importPackageJsp.jspf index e856687..c51ed5e 100644 --- a/src/main/webapp/WEB-INF/jspf/importPackageJsp.jspf +++ b/src/main/webapp/WEB-INF/jspf/importPackageJsp.jspf @@ -50,6 +50,7 @@ $("#form1").attr('disabled', 'disabled'); $('#loadingModel').modal('show'); $("#loading").css("background", "url(" + path + "/static/img/load.gif) no-repeat 10px 50%"); + $('#myModal3').modal('hide'); $('#form1').ajaxSubmit({ type: 'POST', url: path + '/commom/uploadCostList', @@ -60,19 +61,16 @@ toastr.warning("上传文件出错!") }, success: function (data) { + $('#loadingModel').modal('hide'); var dataObj = eval("(" + data + ")"); if (dataObj.code == 0) { var dataExcel = dataObj.data; toastr.success("费用清单上传成功"); - if (dataExcel.workBookKey != null && dataExcel.workBookKey != '') { + if (dataExcel != null && dataExcel.workBookKey != null && dataExcel.workBookKey != '') { var exportFileName = "费用清单"; window.location.href = path + "/exportWrongExcel1?fileName=" + exportFileName + "&workBookKey=" + dataExcel.workBookKey; - } else { - setTimeout(function () { - window.location.reload(); - }, 1000) } } else { toastr.error("费用清单上传失败"); @@ -80,6 +78,7 @@ $("#upfile").val(""); $("#form1").removeAttr('disabled'); + } }); } diff --git a/src/main/webapp/WEB-INF/views/recordManage/commomSearch/commomListqf.jsp b/src/main/webapp/WEB-INF/views/recordManage/commomSearch/commomListqf.jsp index 1096a82..07b9b9c 100644 --- a/src/main/webapp/WEB-INF/views/recordManage/commomSearch/commomListqf.jsp +++ b/src/main/webapp/WEB-INF/views/recordManage/commomSearch/commomListqf.jsp @@ -4,6 +4,7 @@ <%@ include file="/WEB-INF/jspf/common.jspf" %> <%@ include file="/WEB-INF/jspf/boostrapSelect.jspf" %> +<%@ include file="/WEB-INF/jspf/importPackageJsp.jspf" %> @@ -105,7 +106,17 @@ background-color: #199ED8; text-align: center; } + .control-label1{ + width:30%; + text-align: right; + padding-top:2px; + font-weight: 700; + } + .modelBtns{ + /*text-align: center;*/ + margin-left: 40%; + } /*搜索按钮div*/ .searchDiv { margin-left: 33px; @@ -638,6 +649,11 @@
+ +
+ +
+
@@ -855,6 +871,38 @@
+ +