diff --git a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/ComReportDict.java b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/ComReportDict.java index 668f009..8111dfa 100644 --- a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/ComReportDict.java +++ b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/ComReportDict.java @@ -12,7 +12,7 @@ import java.util.Date; @AllArgsConstructor public class ComReportDict { - private Long reportId; + private Long reportBgdh; private String reportType; private String reportCode; private String reportName; diff --git a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/ComReportInstr.java b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/ComReportInstr.java new file mode 100644 index 0000000..1e0d959 --- /dev/null +++ b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/ComReportInstr.java @@ -0,0 +1,33 @@ +package com.czlis.common.core.domain.entity.lis; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ComReportInstr { + + private Long reportId; + private String reportYq; + private Long reportBgdh; + private String reportSize; + private String reportType; + private Long reportRows; + private Long reportMinrows; + private Long reportMaxrows; + private String reportItems; + private Long reportSort; + private String status; + private String createBy; + private Date createTime; + private String updateBy; + private Date updateTime; + private String remark; + private String reportName; + + +} diff --git a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabReportinstr.java b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabReportinstr.java index 0ac24ba..d52f3d3 100644 --- a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabReportinstr.java +++ b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabReportinstr.java @@ -10,7 +10,7 @@ import lombok.NoArgsConstructor; public class LabReportinstr { private String yq; private Integer xh; - private Integer bgdh; + private Long bgdh; private String yljg; private String type; private String condition; diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabReportvsitemMapper.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabReportvsitemMapper.java index a1106fc..43a8481 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabReportvsitemMapper.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabReportvsitemMapper.java @@ -1,10 +1,15 @@ package com.czlis.interfaceCommon.mapper; +import com.czlis.common.core.domain.entity.lis.ComReportInstr; import org.apache.ibatis.annotations.Param; import java.util.Date; +import java.util.List; public interface LabReportvsitemMapper { int getLabReportvsitemCount(@Param("jyrq") Date jyrq, @Param("yq")String yq, @Param("ybh")String ybh); int getLabReport2(@Param("jyrq") Date jyrq, @Param("yq")String yq, @Param("ybh")String ybh); + int getLabReportCount(@Param("jyrq") Date jyrq, @Param("yq")String yq, @Param("ybh")String ybh); + List getComReportInstrByInstr(String reportYq); + String getreportCode(Long reportId); } diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/BarCodeParam.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/ReportParam.java similarity index 96% rename from lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/BarCodeParam.java rename to lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/ReportParam.java index 6118c60..004c2a9 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/BarCodeParam.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/ReportParam.java @@ -9,7 +9,7 @@ import java.util.Date; @Data @AllArgsConstructor @NoArgsConstructor -public class BarCodeParam { +public class ReportParam { private String sqh; private String brxm; private String brxb; diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java index 67e473b..3e7bb06 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java @@ -69,8 +69,6 @@ public class CommonUtil { @Autowired LabResultMedMapper labResultMedMapper; @Autowired - LabReportvsitemMapper labReportvsitemMapper; - @Autowired LabInputcolMapper labInputcolMapper; @Autowired ComLocalconfigMapper comLocalconfigMapper; @@ -475,9 +473,7 @@ public class CommonUtil { public List getLabInstrList(LabInstr labInstr) { return labInstrMapper.getLabInstrList(labInstr); } - public int getLabReport2(Date jyrq, String yq, String ybh) { - return labReportvsitemMapper.getLabReport2(jyrq, yq, ybh); - } + //获取流水号种子 @Transactional(rollbackFor = Exception.class) public Long getNextSeq(String seqid) { diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisfileUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisfileUtil.java new file mode 100644 index 0000000..0f7187b --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisfileUtil.java @@ -0,0 +1,254 @@ +package com.czlis.interfaceCommon.utils; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.StrUtil; +import com.czlis.common.config.RuoYiConfig; +import com.czlis.common.utils.StringUtils; +import com.czlis.common.utils.file.FileUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URLEncoder; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.*; +@Component +@Slf4j +public class LisfileUtil extends FileUtils { + + /** + * 下载文件到客户端 + * @param response 客户端下载对话框 + * @param filepath 文件路径 + * @param filename 文件名称 + */ + public static void downloadfile(HttpServletResponse response,String filepath, String filename) { + // 1. 参数校验 + if (StrUtil.isBlank(filename)) { + log.error("文件下载失败:文件名不能为空"); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + return; + } + // 2. 拼接完整文件路径(兼容Windows/Linux,Hutool工具类适配若依) + String fullFilePath = FileUtil.normalize(filepath + File.separator + filename); + File file = new File(fullFilePath); + // 3. 校验文件是否存在且是合法文件(非目录) + if (!file.exists() || file.isDirectory()) { + log.error("文件下载失败:文件不存在或为目录,路径:{}", fullFilePath); + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + return; + } + // 4. 设置响应头(解决中文文件名乱码、指定下载类型) + response.setCharacterEncoding("UTF-8"); + response.setContentType("application/octet-stream"); // 二进制流(通用下载类型) + try { + // 处理中文文件名编码,兼容不同浏览器 + String encodedFileName = URLEncoder.encode(filename,"UTF-8") + .replaceAll("\\+", "%20"); + // 设置下载文件名 + response.setHeader("Content-Disposition", + "attachment; filename=\"" + encodedFileName + "\"; filename*=UTF-8''" + encodedFileName); + // 设置文件大小 + response.setHeader("Content-Length", String.valueOf(file.length())); + + // 5. 流传输文件(JDK8 try-with-resources 自动关闭流,避免泄漏) + try (FileInputStream fis = new FileInputStream(file); + OutputStream os = response.getOutputStream()) { + byte[] buffer = new byte[1024 * 8]; // 8KB缓冲区,提升传输效率 + int len; + while ((len = fis.read(buffer)) != -1) { + os.write(buffer, 0, len); + } + os.flush(); // 刷新输出流,确保文件完整传输 + log.info("文件下载成功:{}", fullFilePath); + } + } catch (Exception e) { + log.error("文件下载异常:{},异常信息:{}", fullFilePath, e.getMessage(), e); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + } + } + /** + * 保存前端上传的MultipartFile到指定目录(保持原文件名) + * @param file 前端上传的文件 + * @param filePath 后端保存目录(如:ruoyi-admin/upload) + * @throws IOException 文件操作异常 + */ + public static void saveFile(MultipartFile file, String filePath)throws IOException{ + // 示例:用原文件名作为目标文件名(根据你的业务调整) + String originalFileName = file.getOriginalFilename(); + if (StrUtil.isBlank(originalFileName)) { + throw new IllegalArgumentException("文件原名称不能为空"); + } + saveFile(file, filePath,originalFileName); + } + public static void saveFile(MultipartFile file, String filePath, String filename) throws IOException { + // 1. 基础校验 + if (file.isEmpty()) { + throw new IllegalArgumentException("上传文件不能为空"); + } + if (StrUtil.isBlank(filename)) { + throw new IllegalArgumentException("目标文件名不能为空"); + } + + // 2. 拼接最终保存路径 + String fullPath = FileUtil.normalize(filePath + File.separator + filename); + File destFile = new File(fullPath); + + // 3. 确保目标目录存在 + File parentDir = destFile.getParentFile(); + if (!parentDir.exists()) { + boolean mkdirSuccess = parentDir.mkdirs(); + if (!mkdirSuccess) { + throw new IOException("创建保存目录失败:" + parentDir.getAbsolutePath()); + } + } + + // ========== 核心修复:先将MultipartFile转成字节数组,脱离Tomcat临时文件 ========== + byte[] fileBytes; + try (InputStream is = file.getInputStream(); + ByteArrayOutputStream baos = new ByteArrayOutputStream()) { + byte[] buffer = new byte[1024]; + int len; + while ((len = is.read(buffer)) != -1) { + baos.write(buffer, 0, len); + } + fileBytes = baos.toByteArray(); // 把文件内容读入字节数组,不再依赖Tomcat临时文件 + } catch (IOException e) { + log.error("读取上传文件内容失败", e); + throw new IOException("读取上传文件失败:" + e.getMessage(), e); + } + + // 4. 将字节数组写入目标文件(不再调用file.getInputStream(),避免临时文件问题) + try (OutputStream os = new FileOutputStream(destFile)) { + os.write(fileBytes); + os.flush(); + log.info("文件保存成功,路径:{}", fullPath); + } catch (IOException e) { + log.error("文件保存失败,路径:{}", fullPath, e); + throw new IOException("文件保存失败:" + fullPath, e); + } + } + /** 查找指定目录的地址 + * @param templates templates + * @return + */ + public static String getfilepath(String templates){ + String dir = RuoYiConfig.getProfile(); + if (dir == null || dir.trim().isEmpty()) { + throw new IllegalStateException("配置文件中未设置有效的 profile 路径,请检查 application.yml"); + } + String templateDir = dir.trim(); + String templatePath = templateDir + File.separator+templates+File.separator; + return templatePath; + + } + /** + * 查找指定路径下的文件集合 + * @param filepath templates + * @param filetype .jrxml + * @return + */ + public static String[] getfilelist(String filepath,String filetype) { + String[] filels=new String[0]; + List extensions = Arrays.asList(filetype); + List filelist= listFilesByType(filepath, extensions, true); + if(filelist.size()>0) { + filels = new String[filelist.size()]; + int i=0; + for (File file : filelist) { + String fileName = getFilename(file.getName().toLowerCase()); + filels[i++]=fileName; + } + + } + return filels; + } + /** + * 获取指定文件夹下指定类型的所有文件 + * + * @param folderPath 文件夹路径(绝对路径/相对路径) + * @param extensions 指定文件类型(如 ".txt", ".xlsx",不区分大小写) + * @param recursive 是否递归子文件夹 + * @return 符合条件的文件集合 + */ + public static List listFilesByType(String folderPath, List extensions, boolean recursive) { + List fileList = new ArrayList<>(); + + // 1. 严格参数校验(避免后续调用 contains 时对象为 null) + if (!StringUtils.hasText(folderPath)) { + throw new IllegalArgumentException("文件夹路径不能为空!"); + } + File folder = new File(folderPath); + if (!folder.exists() || !folder.isDirectory()) { + throw new IllegalArgumentException("文件夹不存在或不是有效目录:" + folderPath); + } + if (extensions == null || extensions.isEmpty()) { + throw new IllegalArgumentException("文件类型列表不能为空!"); + } + + // 2. 正确初始化 Set(Java 8 兼容) + Set extensionSet = new HashSet<>(); + for (String ext : extensions) { + if (StringUtils.hasText(ext)) { + String normalizedExt = ext.startsWith(".") ? ext.toLowerCase() : "." + ext.toLowerCase(); + extensionSet.add(normalizedExt); + } + } + // 校验转换后的集合非空(避免 contains 调用在空集合上,虽不报错但无意义) + if (extensionSet.isEmpty()) { + throw new IllegalArgumentException("有效文件类型不能为空!"); + } + + // 3. 递归遍历文件 + listFilesRecursive(folder, extensionSet, recursive, fileList); + return fileList; + } + + /** + * 递归遍历文件(内部辅助方法) + */ + private static void listFilesRecursive(File folder, Set extensionSet, boolean recursive, List fileList) { + File[] files = folder.listFiles(); + if (files == null || files.length == 0) { + return; + } + + for (File file : files) { + if (file.isFile()) { + String fileName = file.getName().toLowerCase(); + String fileExt = getFileExtension(fileName); + if (extensionSet.contains(fileExt)) { + fileList.add(file); + } + } else if (recursive && file.isDirectory()) { + listFilesRecursive(file, extensionSet, recursive, fileList); + } + } + } + /** + * 获取文件扩展名(小写,带点) + */ + private static String getFileExtension(String fileName) { + int lastDotIndex = fileName.lastIndexOf("."); + if (lastDotIndex == -1 || lastDotIndex == fileName.length() - 1) { + return ""; // 无扩展名 + } + return fileName.substring(lastDotIndex).toLowerCase(); + } + /** + * 获取文件名称 + */ + private static String getFilename(String fileName) { + int lastDotIndex = fileName.lastIndexOf("."); + if (lastDotIndex == -1 || lastDotIndex == fileName.length() - 1) { + return fileName; // 无扩展名 + } + return fileName.substring(0,lastDotIndex).toLowerCase(); + } + + + +} diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/PackBarcodeUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/PackBarcodeUtil.java index 2095226..346bd94 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/PackBarcodeUtil.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/PackBarcodeUtil.java @@ -1,17 +1,15 @@ package com.czlis.interfaceCommon.utils; -import cn.hutool.core.date.DateUtil; import com.czlis.common.core.domain.Result; import com.czlis.common.core.domain.entity.lis.LabReqmain; import com.czlis.common.core.domain.entity.lis.LabReqpack; import com.czlis.common.utils.DateUtils; -import com.czlis.interfaceCommon.pojo.entity.BarCodeParam; +import com.czlis.interfaceCommon.pojo.entity.ReportParam; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; -import java.util.Map; @Component @Slf4j @@ -73,12 +71,12 @@ public class PackBarcodeUtil { } public Result printpackid(String ksmc){ String packid=getNextPackID(); - BarCodeParam barCodeParam = new BarCodeParam(); - barCodeParam.setSqh(packid); - barCodeParam.setBrxm("检验样本"); - barCodeParam.setSfxmmc("样本数量____"); - barCodeParam.setKsmc(ksmc); - return reportUtil.printToPdf(barCodeParam, packid); + ReportParam reportParam = new ReportParam(); + reportParam.setSqh(packid); + reportParam.setBrxm("检验样本"); + reportParam.setSfxmmc("样本数量____"); + reportParam.setKsmc(ksmc); + return reportUtil.printToPdf(reportParam, packid); } public Result packup(List labReqpacks){ commonUtil.batchInsertLabReqpack(labReqpacks); diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/ReportUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/ReportUtil.java index 6433dc0..f358456 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/ReportUtil.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/ReportUtil.java @@ -6,6 +6,7 @@ import cn.hutool.core.codec.Base64; import cn.hutool.core.util.StrUtil; import com.czlis.common.config.RuoYiConfig; import com.czlis.common.core.domain.Result; +import com.czlis.common.core.domain.entity.lis.ComReportInstr; import com.czlis.common.core.domain.entity.lis.LabGraph; import com.czlis.common.core.domain.entity.lis.LabPat; import com.czlis.common.utils.file.FileUtils; @@ -13,10 +14,11 @@ import com.czlis.common.utils.file.ImageUtils; import com.czlis.common.utils.ip.IpUtils; import com.czlis.common.utils.uuid.UUID; import com.czlis.interfaceCommon.mapper.BackPaperMapper; +import com.czlis.interfaceCommon.mapper.LabReportvsitemMapper; import com.czlis.interfaceCommon.pojo.entity.BackPaperDetail; import com.czlis.interfaceCommon.pojo.entity.BackPaperParam; import com.czlis.interfaceCommon.pojo.entity.LabRptgetruledetailCX; -import com.czlis.interfaceCommon.pojo.entity.BarCodeParam; +import com.czlis.interfaceCommon.pojo.entity.ReportParam; import com.itextpdf.io.source.ByteArrayOutputStream; import com.itextpdf.kernel.geom.PageSize; import com.itextpdf.kernel.geom.Rectangle; @@ -50,6 +52,8 @@ public class ReportUtil { @Autowired BackPaperMapper backPaperMapper; @Autowired + LabReportvsitemMapper labReportvsitemMapper; + @Autowired private DataSource dataSource; @Value("${server.port:}") @@ -58,17 +62,17 @@ public class ReportUtil { String printURL; - public void printBarCode(BarCodeParam mzBarCodeParam) { + public void printBarCode(ReportParam mzReportParam) { Map parameters=new HashMap<>(); - parameters.put("barcode", mzBarCodeParam.getSqh()); - parameters.put("line1", mzBarCodeParam.getBrxm() + " " + mzBarCodeParam.getBrxb() + " " + mzBarCodeParam.getNl()); - parameters.put("line2", mzBarCodeParam.getSfxmmc()); + parameters.put("barcode", mzReportParam.getSqh()); + parameters.put("line1", mzReportParam.getBrxm() + " " + mzReportParam.getBrxb() + " " + mzReportParam.getNl()); + parameters.put("line2", mzReportParam.getSfxmmc()); try { //构造数据 JasperReportUtil.print(RuoYiConfig.getMzPrintName(), "barcode", parameters); } catch (Exception e) { e.printStackTrace(); - log.error("打印条码报错,条码号:{}", mzBarCodeParam.getSqh(), e); + log.error("打印条码报错,条码号:{}", mzReportParam.getSqh(), e); } } @@ -113,27 +117,27 @@ public class ReportUtil { } } - public Result printToPdf(BarCodeParam barCodeParam, String pdfName) { + public Result printToPdf(ReportParam reportParam, String pdfName) { String templatePath = RuoYiConfig.getProfile() + "/templates/barcode_zy.jrxml"; // 模板文件路径 - return printToPdf("barcode_zy", barCodeParam, pdfName, false); + return printToPdf("barcode_zy", reportParam, pdfName, false); } - public Result printToPdf(String templatename, BarCodeParam barCodeParam, String pdfName, boolean base64) { + public Result printToPdf(String templatename, ReportParam reportParam, String pdfName, boolean base64) { String staticpath=ImageUtils.getStaticPath()+ File.separator; String outputPath = staticpath+ File.separator + "printPDF"+ File.separator + UUID.randomUUID() + ".pdf"; // PDF输出路径(多级目录会自动创建) - Map stringObjectMap = BeanUtil.beanToMap(barCodeParam); + Map stringObjectMap = BeanUtil.beanToMap(reportParam); try { Connection connection = dataSource.getConnection(); JasperReportUtil.exportToPdf(templatename, stringObjectMap, connection, outputPath); } catch (Exception e) { e.printStackTrace(); - log.error("打印条码失败,参数{}", barCodeParam, e); + log.error("打印条码失败,参数{}", reportParam, e); } String httpPath = getPrintURL(pdfName); log.info("传给前端的pdf地址:{}", httpPath); if (base64) { //删除图片文件 - String[] pic = barCodeParam.getPic(); + String[] pic = reportParam.getPic(); if(pic != null){ for (String s : pic) { String picFilePath = staticpath + File.separator + "graphs" + File.separator + StrUtil.splitToArray(s, "graphs/")[1]; @@ -215,7 +219,7 @@ public class ReportUtil { } } //常规报告如果报告使用报告二模板,判断报告二是否A4 - int bg2 = commonUtil.getLabReport2(jyrq, yq, ybh); + int bg2 = labReportvsitemMapper.getLabReport2(jyrq, yq, ybh); if (bg2 > 0) { if ("3".equals(NOBOTH)) { return "A4"; @@ -342,20 +346,39 @@ public class ReportUtil { String ybh = labPat.getYbh(); String yljg=commonUtil.getLabInstr(yq).getYljg(); String hospitalName = commonUtil.getCompany(yljg); - BarCodeParam barCodeParam = new BarCodeParam(); - barCodeParam.setJyrq(jyrq); - barCodeParam.setYq(yq); - barCodeParam.setYbh(ybh); - barCodeParam.setHospitalName(hospitalName); - barCodeParam.setUsernopic(getSignName(labPat.getYhdh())); //检验者 - barCodeParam.setCheckerpic(getSignName(labPat.getHdys())); //审核者 - barCodeParam.setCheckercbpic(getSignName(labPat.getChecker())); //初审者 + ReportParam reportParam = new ReportParam(); + reportParam.setJyrq(jyrq); + reportParam.setYq(yq); + reportParam.setYbh(ybh); + reportParam.setHospitalName(hospitalName); + reportParam.setUsernopic(getSignName(labPat.getYhdh())); //检验者 + reportParam.setCheckerpic(getSignName(labPat.getHdys())); //审核者 + reportParam.setCheckercbpic(getSignName(labPat.getChecker())); //初审者 String[] picPath = getReportpic(jyrq, yq, ybh); - barCodeParam.setPic(picPath); - return printToPdf("report_image2", barCodeParam, UUID.randomUUID().toString(), true); + reportParam.setPic(picPath); + return printToPdf("report_image2", reportParam, UUID.randomUUID().toString(), true); } + /** + * 获取报告单模板 + * @param labPat + * @return + */ + public String getReportTemplate(LabPat labPat) { + Date jyrq = labPat.getJyrq(); + String yq = labPat.getYq().trim(); + String ybh = labPat.getYbh(); + int rows=labReportvsitemMapper.getLabReportCount(jyrq,yq,ybh); + List info=labReportvsitemMapper.getComReportInstrByInstr(yq); + for (ComReportInstr comReportInstr : info) { + Long rid=comReportInstr.getReportBgdh(); + } + + + + return ""; + } public String[] getReportpic(Date jyrq, String yq, String ybh) { List labGraphList = commonUtil.getLabGraphAll(jyrq, yq, ybh); String filepath = "graphs"; diff --git a/lis-interfaceCommon/src/main/resources/mapper/LabReportvsitemMapper.xml b/lis-interfaceCommon/src/main/resources/mapper/LabReportvsitemMapper.xml index 25aba4a..d3530d5 100644 --- a/lis-interfaceCommon/src/main/resources/mapper/LabReportvsitemMapper.xml +++ b/lis-interfaceCommon/src/main/resources/mapper/LabReportvsitemMapper.xml @@ -2,6 +2,32 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/liswork/src/main/java/com/czlis/liswork/controller/xtwh/ComReportDictController.java b/liswork/src/main/java/com/czlis/liswork/controller/xtwh/ComReportDictController.java index 5bce760..1ff63fb 100644 --- a/liswork/src/main/java/com/czlis/liswork/controller/xtwh/ComReportDictController.java +++ b/liswork/src/main/java/com/czlis/liswork/controller/xtwh/ComReportDictController.java @@ -3,9 +3,12 @@ package com.czlis.liswork.controller.xtwh; import com.czlis.common.annotation.Log; import com.czlis.common.core.controller.BaseController; import com.czlis.common.core.domain.AjaxResult; +import com.czlis.common.core.domain.Result; +import com.czlis.common.core.domain.entity.lis.ComDict; import com.czlis.common.core.domain.entity.lis.ComReportDict; import com.czlis.common.enums.BusinessType; import com.czlis.common.utils.poi.ExcelUtil; +import com.czlis.interfaceCommon.utils.LisfileUtil; import com.czlis.liswork.service.ComReportDictService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -13,8 +16,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.util.List; @Api(tags = "参数模板设置") @@ -25,26 +30,26 @@ public class ComReportDictController extends BaseController { @Autowired private ComReportDictService comReportDictService; /** - * 获取字典列表 + * 获取报表模板列表 */ - @ApiOperation("获取字典列表") + @ApiOperation("获取报表模板列表") @GetMapping("/list") public AjaxResult list(ComReportDict post) { // startPage(); List list = comReportDictService.selectComReportDictList(post); return success(list); } - @ApiOperation("字典导出") - @Log(title = "字典导出", businessType = BusinessType.EXPORT) + @ApiOperation("报表模板导出") + @Log(title = "报表模板导出", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, ComReportDict post) { List list = comReportDictService.selectComReportDictList(post); ExcelUtil util = new ExcelUtil<>(ComReportDict.class); - util.exportExcel(response, list, "字典数据"); + util.exportExcel(response, list, "报表模板数据"); } /** - * 根据字典编号获取详细信息 + * 根据报表模板编号获取详细信息 */ @ApiOperation("获取详细信息") @GetMapping(value = "/{dictId}") @@ -53,56 +58,77 @@ public class ComReportDictController extends BaseController { } /** - * 新增字典 + * 新增报表模板 */ - @ApiOperation("新增字典") - @Log(title = "字典管理", businessType = BusinessType.INSERT) + @ApiOperation("新增报表模板") + @Log(title = "报表模板管理", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@Validated @RequestBody ComReportDict post) { log.info("post:{}",post); if (!comReportDictService.checkDictNameUnique(post)) { - return error("新增字典'" + post.getReportName() + "'失败,字典名称已存在"); + return error("新增报表模板'" + post.getReportName() + "'失败,报表模板名称已存在"); } else if (!comReportDictService.checkDictCodeUnique(post)) { - return error("新增字典'" + post.getReportName() + "'失败,字典编码已存在"); + return error("新增报表模板'" + post.getReportName() + "'失败,报表模板编码已存在"); } post.setCreateBy(getUsername()); return toAjax(comReportDictService.insertDict(post)); } /** - * 修改字典 + * 修改报表模板 */ - @ApiOperation("修改字典") - @Log(title = "字典管理", businessType = BusinessType.UPDATE) + @ApiOperation("修改报表模板") + @Log(title = "报表模板管理", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@Validated @RequestBody ComReportDict post) { if (!comReportDictService.checkDictNameUnique(post)) { - return error("修改字典'" + post.getReportName() + "'失败,字典名称已存在"); + return error("修改报表模板'" + post.getReportName() + "'失败,报表模板名称已存在"); } else if (!comReportDictService.checkDictCodeUnique(post)) { - return error("修改字典'" + post.getReportName() + "'失败,字典编码已存在"); + return error("修改报表模板'" + post.getReportName() + "'失败,报表模板编码已存在"); } post.setUpdateBy(getUsername()); return toAjax(comReportDictService.updateDict(post)); } /** - * 删除字典 + * 删除报表模板 */ - @ApiOperation("删除字典") - @Log(title = "字典管理", businessType = BusinessType.DELETE) + @ApiOperation("删除报表模板") + @Log(title = "报表模板管理", businessType = BusinessType.DELETE) @DeleteMapping("/{dictIds}") public AjaxResult remove(@PathVariable Long[] dictIds) { return toAjax(comReportDictService.deleteDictByIds(dictIds)); } /** - * 获取字典选择框列表 + * 获取报表模板选择框列表 */ - @ApiOperation("获取字典选择框列表") + @ApiOperation("获取报表模板选择框列表") @GetMapping("/optionselect") - public AjaxResult optionselect() { - List posts = comReportDictService.selectComReportDictAll(); + public AjaxResult optionselect(String reportType) { + List posts = comReportDictService.selectComReportDictByType(reportType); return success(posts); } + /** + * 自动加载报表模板 + */ + @ApiOperation("自动加载报表模板") + @GetMapping("/autoload") + public AjaxResult autoload() { + return toAjax(comReportDictService.autoload()); + } + @ApiOperation("导入模板") + @Log(title = "导入模板", businessType = BusinessType.IMPORT) + @PostMapping("/importfile") + public AjaxResult importfile(MultipartFile file, Long reportBgdh) { + + return comReportDictService.importfile(file,reportBgdh); + } + @ApiOperation("导出模板") + @Log(title = "导出模板", businessType = BusinessType.EXPORT) + @PostMapping("/downloadfile") + public void downloadfile(HttpServletResponse response, @RequestParam String filename) { + LisfileUtil.downloadfile(response,LisfileUtil.getfilepath("templates"),filename+".jrxml"); + } } diff --git a/liswork/src/main/java/com/czlis/liswork/controller/xtwh/ComReportInstrController.java b/liswork/src/main/java/com/czlis/liswork/controller/xtwh/ComReportInstrController.java new file mode 100644 index 0000000..b3b9784 --- /dev/null +++ b/liswork/src/main/java/com/czlis/liswork/controller/xtwh/ComReportInstrController.java @@ -0,0 +1,97 @@ +package com.czlis.liswork.controller.xtwh; + +import com.czlis.common.annotation.Log; +import com.czlis.common.core.controller.BaseController; +import com.czlis.common.core.domain.AjaxResult; +import com.czlis.common.core.domain.entity.lis.ComReportInstr; +import com.czlis.common.enums.BusinessType; +import com.czlis.common.utils.poi.ExcelUtil; +import com.czlis.interfaceCommon.utils.LisfileUtil; +import com.czlis.liswork.service.ComReportInstrService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +@Api(tags = "参数模板设置") +@RestController +@RequestMapping("/reportinstr") +@Slf4j +public class ComReportInstrController extends BaseController { + @Autowired + private ComReportInstrService comReportInstrService; + /** + * 获取仪器报告模板列表 + */ + @ApiOperation("获取仪器报告模板列表") + @GetMapping("/list") + public AjaxResult list(ComReportInstr post) { + // startPage(); + List list = comReportInstrService.selectComReportInstrList(post); + return success(list); + } + @ApiOperation("仪器报告模板导出") + @Log(title = "仪器报告模板导出", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ComReportInstr post) { + List list = comReportInstrService.selectComReportInstrList(post); + ExcelUtil util = new ExcelUtil<>(ComReportInstr.class); + util.exportExcel(response, list, "仪器报告模板数据"); + } + + /** + * 根据仪器报告模板编号获取详细信息 + */ + @ApiOperation("获取详细信息") + @GetMapping(value = "/{InstrId}") + public AjaxResult getInfo(@PathVariable Long InstrId) { + return success(comReportInstrService.selectComReportInstrById(InstrId)); + } + + /** + * 新增仪器报告模板 + */ + @ApiOperation("新增仪器报告模板") + @Log(title = "仪器报告模板管理", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody ComReportInstr post) { + return toAjax(comReportInstrService.insertInstr(post)); + } + + /** + * 修改仪器报告模板 + */ + @ApiOperation("修改仪器报告模板") + @Log(title = "仪器报告模板管理", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody ComReportInstr post) { + return toAjax(comReportInstrService.updateInstr(post)); + } + + /** + * 删除仪器报告模板 + */ + @ApiOperation("删除仪器报告模板") + @Log(title = "仪器报告模板管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{InstrIds}") + public AjaxResult remove(@PathVariable Long[] InstrIds) { + return toAjax(comReportInstrService.deleteInstrByIds(InstrIds)); + } + + /** + * 获取仪器报告模板选择框列表 + */ + @ApiOperation("获取仪器报告模板选择框列表") + @GetMapping("/optionselect") + public AjaxResult optionselect() { + List posts = comReportInstrService.selectComReportInstrAll(); + return success(posts); + } + +} diff --git a/liswork/src/main/java/com/czlis/liswork/mapper/xtwh/ComReportDictMapper.java b/liswork/src/main/java/com/czlis/liswork/mapper/xtwh/ComReportDictMapper.java index 6a38971..8e569b2 100644 --- a/liswork/src/main/java/com/czlis/liswork/mapper/xtwh/ComReportDictMapper.java +++ b/liswork/src/main/java/com/czlis/liswork/mapper/xtwh/ComReportDictMapper.java @@ -6,7 +6,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; public interface ComReportDictMapper { - Long getCountById(Long reportId); + Long getCountById(Long reportBgdh); List selectComReportDictByType(String reportType); /** @@ -27,19 +27,19 @@ public interface ComReportDictMapper { /** * 通过报表模板ID查询报表模板信息 * - * @param reportId 报表模板ID + * @param reportBgdh 报表模板ID * @return 角色对象信息 */ - ComReportDict selectComReportDictById(Long reportId); + ComReportDict selectComReportDictById(Long reportBgdh); /** * 删除报表模板信息 * - * @param reportId 报表模板ID + * @param reportBgdh 报表模板ID * @return 结果 */ - int delComReportDictById(Long reportId); + int delComReportDictById(Long reportBgdh); /** * 批量删除报表模板信息 @@ -72,7 +72,7 @@ public interface ComReportDictMapper { * @param reportType 类别 * @return 结果 */ - ComReportDict checkDictNameUnique(@Param("reportName") String reportName, @Param("reportType") String reportType); + ComReportDict checkDictNameUnique( @Param("reportName")String reportName, @Param("reportType") String reportType); /** * 校验报表模板编码 @@ -80,6 +80,6 @@ public interface ComReportDictMapper { * @param reportCode 报表模板编码 * @return 结果 */ - ComReportDict checkDictCodeUnique(@Param("reportCode") String reportCode,@Param("reportType") String reportType); + ComReportDict checkDictCodeUnique(String reportCode); } diff --git a/liswork/src/main/java/com/czlis/liswork/mapper/xtwh/ComReportInstrMapper.java b/liswork/src/main/java/com/czlis/liswork/mapper/xtwh/ComReportInstrMapper.java new file mode 100644 index 0000000..901143a --- /dev/null +++ b/liswork/src/main/java/com/czlis/liswork/mapper/xtwh/ComReportInstrMapper.java @@ -0,0 +1,68 @@ +package com.czlis.liswork.mapper.xtwh; + +import com.czlis.common.core.domain.entity.lis.ComReportInstr; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface ComReportInstrMapper { + Long getCountById(Long reportId); + List selectComReportInstrByInstr(String reportYq); + + /** + * 查询仪器报告模板数据集合 + * + * @param Instr 仪器报告模板信息 + * @return 仪器报告模板数据集合 + */ + List selectComReportInstrList(ComReportInstr Instr); + + /** + * 查询所有仪器报告模板 + * + * @return 仪器报告模板列表 + */ + List selectComReportInstrAll(); + + /** + * 通过仪器报告模板ID查询仪器报告模板信息 + * + * @param reportId 仪器报告模板ID + * @return 角色对象信息 + */ + ComReportInstr selectComReportInstrById(Long reportId); + + + /** + * 删除仪器报告模板信息 + * + * @param reportId 仪器报告模板ID + * @return 结果 + */ + int delComReportInstrById(Long reportId); + + /** + * 批量删除仪器报告模板信息 + * + * @param InstrIds 需要删除的仪器报告模板ID + * @return 结果 + */ + int delComReportInstrByIds(Long[] InstrIds); + + /** + * 修改仪器报告模板信息 + * + * @param Instr 仪器报告模板信息 + * @return 结果 + */ + int updateComReportInstr(ComReportInstr Instr); + + /** + * 新增仪器报告模板信息 + * + * @param Instr 仪器报告模板信息 + * @return 结果 + */ + int insertComReportInstr(ComReportInstr Instr); + +} diff --git a/liswork/src/main/java/com/czlis/liswork/service/ComReportDictService.java b/liswork/src/main/java/com/czlis/liswork/service/ComReportDictService.java index 5360ad8..af8a827 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/ComReportDictService.java +++ b/liswork/src/main/java/com/czlis/liswork/service/ComReportDictService.java @@ -1,6 +1,8 @@ package com.czlis.liswork.service; +import com.czlis.common.core.domain.AjaxResult; import com.czlis.common.core.domain.entity.lis.ComReportDict; +import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -18,7 +20,7 @@ public interface ComReportDictService { * * @return 报表模板列表 */ - List selectComReportDictAll(); + List selectComReportDictByType(String type); /** * 通过报表模板ID查询报表模板信息 @@ -84,4 +86,6 @@ public interface ComReportDictService { * @return 结果 */ int updateDict(ComReportDict Dict); + int autoload(); + AjaxResult importfile(MultipartFile file, Long reportId); } diff --git a/liswork/src/main/java/com/czlis/liswork/service/ComReportInstrService.java b/liswork/src/main/java/com/czlis/liswork/service/ComReportInstrService.java new file mode 100644 index 0000000..dfce398 --- /dev/null +++ b/liswork/src/main/java/com/czlis/liswork/service/ComReportInstrService.java @@ -0,0 +1,75 @@ +package com.czlis.liswork.service; + +import com.czlis.common.core.domain.AjaxResult; +import com.czlis.common.core.domain.entity.lis.ComReportInstr; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +public interface ComReportInstrService { + /** + * 查询仪器报告模板信息集合 + * + * @param Instr 仪器报告模板信息 + * @return 仪器报告模板信息集合 + */ + List selectComReportInstrList(ComReportInstr Instr); + + /** + * 查询所有仪器报告模板 + * + * @return 仪器报告模板列表 + */ + List selectComReportInstrAll(); + + /** + * 通过仪器报告模板ID查询仪器报告模板信息 + * + * @param InstrId 仪器报告模板ID + * @return 角色对象信息 + */ + ComReportInstr selectComReportInstrById(Long InstrId); + + + + + /** + * 通过仪器报告模板ID查询仪器报告模板使用数量 + * + * @param InstrId 仪器报告模板ID + * @return 结果 + */ + int countUserInstrById(Long InstrId); + + /** + * 删除仪器报告模板信息 + * + * @param InstrId 仪器报告模板ID + * @return 结果 + */ + int deleteInstrById(Long InstrId); + + /** + * 批量删除仪器报告模板信息 + * + * @param InstrIds 需要删除的仪器报告模板ID + * @return 结果 + */ + int deleteInstrByIds(Long[] InstrIds); + + /** + * 新增保存仪器报告模板信息 + * + * @param Instr 仪器报告模板信息 + * @return 结果 + */ + int insertInstr(ComReportInstr Instr); + + /** + * 修改保存仪器报告模板信息 + * + * @param Instr 仪器报告模板信息 + * @return 结果 + */ + int updateInstr(ComReportInstr Instr); +} diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/LabReportinstrServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/LabReportinstrServiceImpl.java index 4aa40f5..c5d46ec 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/impl/LabReportinstrServiceImpl.java +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/LabReportinstrServiceImpl.java @@ -13,7 +13,6 @@ import java.util.List; @Service @Slf4j public class LabReportinstrServiceImpl implements LabReportinstrService { - @Autowired LabReportinstrMapper labReportinstrMapper; diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/ComLocalconfigServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/ComLocalconfigServiceImpl.java index 7d5c9897..b026e17 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/ComLocalconfigServiceImpl.java +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/ComLocalconfigServiceImpl.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSON; import com.czlis.common.core.domain.entity.lis.*; import com.czlis.common.utils.SecurityUtils; import com.czlis.interfaceCommon.utils.CommonUtil; +import com.czlis.liswork.mapper.xtwh.ComReportDictMapper; import com.czlis.liswork.mapper.xtwh.LocalconfigMapper; import com.czlis.liswork.service.ComConfigDictService; import com.czlis.liswork.service.ComLocalconfigService; @@ -28,7 +29,8 @@ public class ComLocalconfigServiceImpl implements ComLocalconfigService { LocalconfigMapper localconfigMapper; @Autowired CommonUtil commonUtil; - + @Autowired + ComReportDictMapper comReportDictMapper; /** * 获取登录客户端浏览器唯一ID **/ @@ -174,12 +176,40 @@ public class ComLocalconfigServiceImpl implements ComLocalconfigService { @Override public Object getComDicts(String zdlb) { - if ("INSTR".equals(zdlb)) { + if ("INSTR".equals(zdlb)||"instr".equals(zdlb)||"yq".equals(zdlb)) { return getInstr(); + }else if (zdlb.contains("item:")) { + String yq=zdlb.trim().substring(5); + return getitem(yq); + }else if ("barcode".equals(zdlb)) { + return getreportdict("2"); + } else if ("reback".equals(zdlb)) { + return getreportdict("3"); } return commonUtil.getComDictList(zdlb); } - + public List> getreportdict(String type) { + List> list = new ArrayList<>(); + List xmInfolist = comReportDictMapper.selectComReportDictByType(type); + for (ComReportDict xmInfo : xmInfolist) { + Map map = new HashMap<>(); + map.put("zddh", xmInfo.getReportBgdh().toString()); + map.put("zdmc", xmInfo.getReportName()); + list.add(map); + } + return list; + } + public List> getitem(String yq) { + List> list = new ArrayList<>(); + List xmInfolist = commonUtil.getXmInfoList(yq); + for (XmInfo xmInfo : xmInfolist) { + Map map = new HashMap<>(); + map.put("zddh", xmInfo.getXmdh().trim()); + map.put("zdmc", xmInfo.getXmmc().trim()); + list.add(map); + } + return list; + } public List> getInstr() { List> list = new ArrayList<>(); String yljg = getYLJG(); diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/ComReportDictServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/ComReportDictServiceImpl.java index 8f51204..06e6c12 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/ComReportDictServiceImpl.java +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/ComReportDictServiceImpl.java @@ -1,16 +1,30 @@ package com.czlis.liswork.service.impl.xtwh; import com.czlis.common.constant.UserConstants; +import com.czlis.common.core.domain.AjaxResult; import com.czlis.common.core.domain.entity.lis.ComReportDict; +import com.czlis.common.core.domain.entity.lis.ComReportInstr; +import com.czlis.common.core.domain.entity.lis.LabReportinstr; import com.czlis.common.exception.ServiceException; +import com.czlis.common.utils.SecurityUtils; import com.czlis.common.utils.StringUtils; +import com.czlis.common.utils.file.FileUtils; +import com.czlis.interfaceCommon.utils.LisfileUtil; import com.czlis.liswork.mapper.xtwh.ComReportDictMapper; +import com.czlis.liswork.mapper.xtwh.ComReportInstrMapper; +import com.czlis.liswork.mapper.xtwh.LabReportinstrMapper; import com.czlis.liswork.service.ComReportDictService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; -import java.util.List; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.util.*; /** * 配置参数报表模板,系统配置菜单依据本报表模板自动创建配置档 @@ -18,9 +32,59 @@ import java.util.List; @Service @Slf4j public class ComReportDictServiceImpl implements ComReportDictService { - + private static final String templates="templates"; + private static final String filetype=".jrxml"; + private static final String filetypename="jrxml"; + @Autowired + LisfileUtil lisfileUtil; @Autowired ComReportDictMapper comReportDictMapper; + @Autowired + ComReportInstrMapper comReportInstrMapper; + + + @Override + public AjaxResult importfile(MultipartFile file, Long reportId){ + String filepath=lisfileUtil.getfilepath(templates); + String filename=""; + if(reportId!=0) { + ComReportDict info= comReportDictMapper.selectComReportDictById(reportId); + filename=info.getReportCode(); + if(!"".equals(filename)&&filename!=null){filename=filename+filetype;} + }else{ + filename=file.getOriginalFilename(); + ComReportDict info = comReportDictMapper.checkDictCodeUnique(filename); + if(info != null){ + return AjaxResult.error("模板新增失败,已存在模板:" +info.getReportName() ); + } + } + try { + lisfileUtil.saveFile(file,filepath,filename); + if(reportId==0)autoload(); + return AjaxResult.success("文件上传成功", file.getOriginalFilename()); + } catch (Exception e) { + return AjaxResult.error("文件上传失败:" + e.getMessage()); + } + } + @Override + public int autoload(){ + String[] Filelist= lisfileUtil.getfilelist(lisfileUtil.getfilepath(templates),filetypename); + for(String filename : Filelist) { + ComReportDict info = comReportDictMapper.checkDictCodeUnique(filename); + if(info == null){ + ComReportDict newInfo = new ComReportDict(); + newInfo.setReportCode(filename); + newInfo.setReportName(filename); + newInfo.setReportType("0"); + newInfo.setReportOptiontype("0"); + newInfo.setReportSort(0L); + newInfo.setStatus("0"); + newInfo.setCreateBy(SecurityUtils.getLoginUser().getUsername()); + insertDict(newInfo); + } + } + return 1; + } /** * 查询报表模板信息集合 * @@ -38,8 +102,8 @@ public class ComReportDictServiceImpl implements ComReportDictService { * @return 报表模板列表 */ @Override - public List selectComReportDictAll() { - return comReportDictMapper.selectComReportDictAll(); + public List selectComReportDictByType(String type) { + return comReportDictMapper.selectComReportDictByType(type); } /** @@ -62,9 +126,9 @@ public class ComReportDictServiceImpl implements ComReportDictService { */ @Override public boolean checkDictNameUnique(ComReportDict Dict) { - Long DictId = StringUtils.isNull(Dict.getReportId()) ? -1L : Dict.getReportId(); + Long DictId = StringUtils.isNull(Dict.getReportBgdh()) ? -1L : Dict.getReportBgdh(); ComReportDict info = comReportDictMapper.checkDictNameUnique(Dict.getReportName(),Dict.getReportType()); - if (StringUtils.isNotNull(info) && info.getReportId().longValue() != DictId.longValue()) { + if (StringUtils.isNotNull(info) && info.getReportBgdh().longValue() != DictId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -78,9 +142,9 @@ public class ComReportDictServiceImpl implements ComReportDictService { */ @Override public boolean checkDictCodeUnique(ComReportDict Dict) { - Long DictId = StringUtils.isNull(Dict.getReportId()) ? -1L : Dict.getReportId(); - ComReportDict info = comReportDictMapper.checkDictCodeUnique(Dict.getReportCode(),Dict.getReportType()); - if (StringUtils.isNotNull(info) && info.getReportId().longValue() != DictId.longValue()) { + Long DictId = StringUtils.isNull(Dict.getReportBgdh()) ? -1L : Dict.getReportBgdh(); + ComReportDict info = comReportDictMapper.checkDictCodeUnique(Dict.getReportCode()); + if (StringUtils.isNotNull(info) && info.getReportBgdh().longValue() != DictId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -94,7 +158,11 @@ public class ComReportDictServiceImpl implements ComReportDictService { */ @Override public int countUserDictById(Long DictId) { - return 0;//comReportDictMapper.countUserDictById(DictId); + ComReportInstr comReportInstr=new ComReportInstr(); + comReportInstr.setReportBgdh(DictId); + List comReportInstr0 =comReportInstrMapper.selectComReportInstrList(comReportInstr); + if(comReportInstr0.size()>0)return 1; + return 0; } /** @@ -103,24 +171,38 @@ public class ComReportDictServiceImpl implements ComReportDictService { * @param DictId 报表模板ID * @return 结果 */ + @Transactional(rollbackFor = Exception.class) @Override public int deleteDictById(Long DictId) { + + ComReportDict info=comReportDictMapper.selectComReportDictById(DictId); + if (countUserDictById(DictId) > 0) { + throw new ServiceException(String.format("%1$s已分配设备,不能删除", info.getReportName())); + } + String filename=info.getReportCode(); + deletefile(filename); return comReportDictMapper.delComReportDictById(DictId); } - + public void deletefile(String filename) { + String filepath=lisfileUtil.getfilepath(templates); + String fileurl=filepath + File.separator + filename+filetype; + FileUtils.deleteFile(fileurl); + } /** * 批量删除报表模板信息 * * @param DictIds 需要删除的报表模板ID * @return 结果 */ + @Transactional(rollbackFor = Exception.class) @Override public int deleteDictByIds(Long[] DictIds) { for (Long DictId : DictIds) { ComReportDict Dict = selectComReportDictById(DictId); if (countUserDictById(DictId) > 0) { - throw new ServiceException(String.format("%1$s已分配,不能删除", Dict.getReportName())); + throw new ServiceException(String.format("%1$s已分配设备,不能删除", Dict.getReportName())); } + deletefile(Dict.getReportCode()); } return comReportDictMapper.delComReportDictByIds(DictIds); } @@ -131,6 +213,7 @@ public class ComReportDictServiceImpl implements ComReportDictService { * @param Dict 报表模板信息 * @return 结果 */ + @Transactional(rollbackFor = Exception.class) @Override public int insertDict(ComReportDict Dict) { return comReportDictMapper.insertComReportDict(Dict); @@ -142,9 +225,13 @@ public class ComReportDictServiceImpl implements ComReportDictService { * @param Dict 报表模板信息 * @return 结果 */ + @Transactional(rollbackFor = Exception.class) @Override public int updateDict(ComReportDict Dict) { return comReportDictMapper.updateComReportDict(Dict); } + + + } diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/ComReportInstrServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/ComReportInstrServiceImpl.java new file mode 100644 index 0000000..296ee95 --- /dev/null +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/ComReportInstrServiceImpl.java @@ -0,0 +1,128 @@ +package com.czlis.liswork.service.impl.xtwh; + +import com.czlis.common.constant.UserConstants; +import com.czlis.common.core.domain.AjaxResult; +import com.czlis.common.core.domain.entity.lis.ComReportInstr; +import com.czlis.common.core.domain.entity.lis.LabReportinstr; +import com.czlis.common.exception.ServiceException; +import com.czlis.common.utils.SecurityUtils; +import com.czlis.common.utils.StringUtils; +import com.czlis.common.utils.file.FileUtils; +import com.czlis.interfaceCommon.utils.LisfileUtil; +import com.czlis.liswork.mapper.xtwh.ComReportInstrMapper; +import com.czlis.liswork.mapper.xtwh.LabReportinstrMapper; +import com.czlis.liswork.service.ComReportInstrService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.util.List; + +/** + * 配置参数仪器报告模板,系统配置菜单依据本仪器报告模板自动创建配置档 + */ +@Service +@Slf4j +public class ComReportInstrServiceImpl implements ComReportInstrService { + @Autowired + ComReportInstrMapper comReportInstrMapper; + /** + * 查询仪器报告模板信息集合 + * + * @param Instr 仪器报告模板信息 + * @return 仪器报告模板信息集合 + */ + @Override + public List selectComReportInstrList(ComReportInstr Instr) { + return comReportInstrMapper.selectComReportInstrByInstr(Instr.getReportYq()); + } + + /** + * 查询所有仪器报告模板 + * + * @return 仪器报告模板列表 + */ + @Override + public List selectComReportInstrAll() { + return comReportInstrMapper.selectComReportInstrAll(); + } + + /** + * 通过仪器报告模板ID查询仪器报告模板信息 + * + * @param InstrId 仪器报告模板ID + * @return 角色对象信息 + */ + @Override + public ComReportInstr selectComReportInstrById(Long InstrId) { + return comReportInstrMapper.selectComReportInstrById(InstrId); + } + /** + * 通过仪器报告模板ID查询仪器报告模板使用数量 + * + * @param Bgdh 仪器报告模板ID + * @return 结果 + */ + @Override + public int countUserInstrById(Long Bgdh) { + ComReportInstr comReportInstr=new ComReportInstr(); + comReportInstr.setReportBgdh(Bgdh); + List comReportInstr0 =comReportInstrMapper.selectComReportInstrList(comReportInstr); + if(comReportInstr0.size()>0)return 1; + return 0; + } + + /** + * 删除仪器报告模板信息 + * + * @param InstrId 仪器报告模板ID + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int deleteInstrById(Long InstrId) { + return comReportInstrMapper.delComReportInstrById(InstrId); + } + /** + * 批量删除仪器报告模板信息 + * + * @param InstrIds 需要删除的仪器报告模板ID + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int deleteInstrByIds(Long[] InstrIds) { + return comReportInstrMapper.delComReportInstrByIds(InstrIds); + } + + /** + * 新增保存仪器报告模板信息 + * + * @param Instr 仪器报告模板信息 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int insertInstr(ComReportInstr Instr) { + return comReportInstrMapper.insertComReportInstr(Instr); + } + + /** + * 修改保存仪器报告模板信息 + * + * @param Instr 仪器报告模板信息 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int updateInstr(ComReportInstr Instr) { + return comReportInstrMapper.updateComReportInstr(Instr); + } + + + + +} diff --git a/liswork/src/main/resources/mapper/ComReportDictMapper.xml b/liswork/src/main/resources/mapper/ComReportDictMapper.xml index 319266d..cead7c3 100644 --- a/liswork/src/main/resources/mapper/ComReportDictMapper.xml +++ b/liswork/src/main/resources/mapper/ComReportDictMapper.xml @@ -3,7 +3,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > - + @@ -18,14 +18,14 @@ - select report_id,report_type,report_code,report_name,report_optiontype,report_defvalue,report_sort, + select report_bgdh,report_type,report_code,report_name,report_optiontype,report_defvalue,report_sort, status,create_by,create_time,update_by,update_time,remark from com_report_dict - where report_id = #{reportId} + where report_bgdh = #{reportBgdh} - + insert into com_report_dict( - report_id, + report_bgdh, report_type, report_code, report_name, @@ -91,7 +91,7 @@ create_by, create_time )values( - #{reportId}, + #{reportBgdh}, #{reportType}, #{reportCode}, #{reportName}, @@ -106,13 +106,13 @@ - delete from com_report_dict where report_id = #{reportId} + delete from com_report_dict where report_bgdh = #{reportBgdh} - delete from com_report_dict where report_id in - - #{reportId} + delete from com_report_dict where report_bgdh in + + #{reportBgdh} @@ -130,7 +130,7 @@ update_by = #{updateBy}, update_time = getdate() - where report_id = #{reportId} + where report_bgdh = #{reportBgdh} diff --git a/liswork/src/main/resources/mapper/ComReportInstrMapper.xml b/liswork/src/main/resources/mapper/ComReportInstrMapper.xml new file mode 100644 index 0000000..78c05cd --- /dev/null +++ b/liswork/src/main/resources/mapper/ComReportInstrMapper.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select report_id,report_type,report_yq,report_size,report_bgdh,report_sort, + report_rows,report_minrows,report_maxrows,report_items, + status,create_by,create_time,update_by,update_time,remark from com_report_instr + + + + + + + + + + insert into com_report_instr( + report_id, + report_type, + report_yq, + report_bgdh, + report_size, + report_rows, + report_minrows, + report_maxrows, + report_items, + report_sort, + status, + remark, + create_by, + create_time + )values( + #{reportId}, + #{reportType}, + #{reportYq}, + #{reportBgdh}, + #{reportSize}, + #{reportRows}, + #{reportMinrows}, + #{reportMaxrows}, + #{reportItems}, + #{reportSort}, + #{status}, + #{remark}, + #{createBy}, + getdate() + ) + + + + delete from com_report_instr where report_id = #{reportId} + + + + delete from com_report_instr where report_id in + + #{reportId} + + + + + update com_report_instr + + report_type = #{reportType}, + report_yq = #{reportYq}, + report_bgdh = #{reportBgdh}, + report_size = #{reportSize}, + report_rows = #{reportRows}, + report_minrows = #{reportMinrows}, + report_maxrows = #{reportMaxrows}, + report_items = #{reportItems}, + report_sort = #{reportSort}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = getdate() + + where report_id = #{reportId} + + + + \ No newline at end of file diff --git a/mzcx/src/main/java/com/czlis/mzcx/service/impl/MZCXServiceImpl.java b/mzcx/src/main/java/com/czlis/mzcx/service/impl/MZCXServiceImpl.java index a0e4273..f56f7ab 100644 --- a/mzcx/src/main/java/com/czlis/mzcx/service/impl/MZCXServiceImpl.java +++ b/mzcx/src/main/java/com/czlis/mzcx/service/impl/MZCXServiceImpl.java @@ -8,7 +8,7 @@ import com.czlis.common.core.domain.entity.lis.LabReqmain; import com.czlis.common.utils.SecurityUtils; import com.czlis.common.utils.ip.IpUtils; import com.czlis.interfaceCommon.constants.LisinterfaceNameConstants; -import com.czlis.interfaceCommon.pojo.entity.BarCodeParam; +import com.czlis.interfaceCommon.pojo.entity.ReportParam; import com.czlis.interfaceCommon.pojo.inter.DayMessage; import com.czlis.interfaceCommon.pojo.inter.GetReqInterface; import com.czlis.interfaceCommon.utils.CommonUtil; @@ -94,14 +94,14 @@ public class MZCXServiceImpl implements MZCXService { public Result printSQD(String sqh) { LabReqmain labReqmainOne = commonUtil.getLabReqmainOne(sqh); //List labReqdetailList = commonUtil.getLabReqdetailList(sqh); - BarCodeParam mzBarCodeParam = new BarCodeParam(); - mzBarCodeParam.setSqh(sqh); + ReportParam mzReportParam = new ReportParam(); + mzReportParam.setSqh(sqh); Map ageFromBirthDay = LisUtil.getAgeFromBirthDay(DateUtil.format(labReqmainOne.getBrsr(), "yyyy-MM-dd HH:mm:ss")); String age = ageFromBirthDay.get("age"); String unit = ageFromBirthDay.get("unit"); - mzBarCodeParam.setNl(age + unit); - mzBarCodeParam.setBrxm(labReqmainOne.getBrxm()); + mzReportParam.setNl(age + unit); + mzReportParam.setBrxm(labReqmainOne.getBrxm()); String brxb = labReqmainOne.getBrxb(); switch (brxb) { case "1": @@ -114,9 +114,9 @@ public class MZCXServiceImpl implements MZCXService { brxb = ""; } - mzBarCodeParam.setBrxb(brxb); - mzBarCodeParam.setSfxmmc(labReqmainOne.getJymd()); - reportUtil.printBarCode(mzBarCodeParam); + mzReportParam.setBrxb(brxb); + mzReportParam.setSfxmmc(labReqmainOne.getJymd()); + reportUtil.printBarCode(mzReportParam); return new Result("0", "打印成功!"); } diff --git a/sql/lis8.0/updatedb_lis8.0.sql b/sql/lis8.0/updatedb_lis8.0.sql index 028a690..897d4fe 100644 --- a/sql/lis8.0/updatedb_lis8.0.sql +++ b/sql/lis8.0/updatedb_lis8.0.sql @@ -64,19 +64,34 @@ if not exists(select 1 from com_opt where yq = '' and xxdh = 'A5MERGEA4') end --报告单仪器对应表 -if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'lab_reportinstr') +if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'com_report_instr') begin - create table lab_reportinstr - ( - yq varchar(10), - xh int , - bgdh varchar(100), - yljg varchar(10), - type int, --1.默认,2.参数,3.根据项目来判断 - condition varchar(500), - PRIMARY KEY (yq, xh,bgdh) - ) - end +CREATE TABLE [dbo].[com_report_instr]( + [report_id] [bigint] IDENTITY(1,1) NOT NULL, + [report_yq] [varchar](20) NOT NULL, + [report_bgdh] [bigint] NOT NULL, + [report_size] [varchar](10) NULL, + [report_type] [varchar](10) NULL, + [report_rows] int NULL, + [report_minrows] int NULL, + [report_maxrows] int NULL, + [report_items] [varchar](250) NULL, + [report_sort] [int] NOT NULL, + [status] [char](1) NOT NULL, + [create_by] [varchar](64) NULL, + [create_time] [datetime] NULL, + [update_by] [varchar](64) NULL, + [update_time] [datetime] NULL, + [remark] [varchar](500) NULL, + PRIMARY KEY CLUSTERED +( +[report_id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] + ) ON [PRIMARY]; +ALTER TABLE [dbo].[com_report_instr] ADD DEFAULT ('') FOR [create_by]; +ALTER TABLE [dbo].[com_report_instr] ADD DEFAULT ('') FOR [update_by]; +ALTER TABLE [dbo].[com_report_instr] ADD DEFAULT (NULL) FOR [remark]; +end if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'reg_TransitSample') begin @@ -367,4 +382,31 @@ CREATE TABLE [dbo].[com_config_dict]( ALTER TABLE [dbo].[com_config_dict] ADD DEFAULT ('') FOR [create_by] ALTER TABLE [dbo].[com_config_dict] ADD DEFAULT ('') FOR [update_by] ALTER TABLE [dbo].[com_config_dict] ADD DEFAULT (NULL) FOR [remark] -end \ No newline at end of file +end + + --报告表 +if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'com_report_dict') + begin + CREATE TABLE [dbo].[com_report_dict]( + [report_id] [bigint] IDENTITY(1,1) NOT NULL, + [report_type] [varchar](20) NOT NULL, + [report_code] [varchar](64) NOT NULL, + [report_name] [varchar](250) NOT NULL, + [report_optiontype] [char](1) NOT NULL, + [report_defvalue] [varchar](250) NULL, + [report_sort] [int] NOT NULL, + [status] [char](1) NOT NULL, + [create_by] [varchar](64) NULL, + [create_time] [datetime] NULL, + [update_by] [varchar](64) NULL, + [update_time] [datetime] NULL, + [remark] [varchar](500) NULL, + PRIMARY KEY CLUSTERED + ( + [report_id] ASC + )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] + ) ON [PRIMARY] + ALTER TABLE [dbo].[com_report_dict] ADD DEFAULT ('') FOR [create_by]; + ALTER TABLE [dbo].[com_report_dict] ADD DEFAULT ('') FOR [update_by]; + ALTER TABLE [dbo].[com_report_dict] ADD DEFAULT (NULL) FOR [remark]; + end diff --git a/zycx/src/main/java/com/czlis/zycx/service/impl/ZycxServiceImpl.java b/zycx/src/main/java/com/czlis/zycx/service/impl/ZycxServiceImpl.java index 45e5d4c..2ee41c1 100644 --- a/zycx/src/main/java/com/czlis/zycx/service/impl/ZycxServiceImpl.java +++ b/zycx/src/main/java/com/czlis/zycx/service/impl/ZycxServiceImpl.java @@ -5,7 +5,7 @@ import com.czlis.common.core.domain.Result; import com.czlis.common.core.domain.entity.lis.LabReqdetail; import com.czlis.common.core.domain.entity.lis.LabReqmain; import com.czlis.interfaceCommon.constants.LisinterfaceNameConstants; -import com.czlis.interfaceCommon.pojo.entity.BarCodeParam; +import com.czlis.interfaceCommon.pojo.entity.ReportParam; import com.czlis.interfaceCommon.pojo.inter.GetReqInterface; import com.czlis.interfaceCommon.pojo.inter.SetReqStatus; import com.czlis.interfaceCommon.utils.CommonUtil; @@ -173,14 +173,14 @@ public class ZycxServiceImpl implements ZycxService { LabReqmain labReqmainOne = commonUtil.getLabReqmainOne(sqh); //List labReqdetailList = commonUtil.getLabReqdetailList(sqh); if(labReqmainOne == null) return new Result("-1","未查到条码号:"+sqh+"的申请单数据!"); - BarCodeParam barCodeParam = new BarCodeParam(); - barCodeParam.setSqh(sqh); + ReportParam reportParam = new ReportParam(); + reportParam.setSqh(sqh); Map ageFromBirthDay = LisUtil.getAgeFromBirthDay(DateUtil.format(labReqmainOne.getBrsr(), "yyyy-MM-dd HH:mm:ss")); String age = ageFromBirthDay.get("age"); String unit = ageFromBirthDay.get("unit"); - barCodeParam.setNl(age + unit); - barCodeParam.setBrxm(labReqmainOne.getBrxm()); + reportParam.setNl(age + unit); + reportParam.setBrxm(labReqmainOne.getBrxm()); String brxb = labReqmainOne.getBrxb(); switch (brxb) { case "1": @@ -193,10 +193,10 @@ public class ZycxServiceImpl implements ZycxService { brxb = ""; } - barCodeParam.setBrxb(brxb); - barCodeParam.setSfxmmc(labReqmainOne.getJymd()); - log.info("传给打印的数据为:{},{}",barCodeParam,sqh); - return reportUtil.printToPdf(barCodeParam, sqh); + reportParam.setBrxb(brxb); + reportParam.setSfxmmc(labReqmainOne.getJymd()); + log.info("传给打印的数据为:{},{}", reportParam,sqh); + return reportUtil.printToPdf(reportParam, sqh); }