From c2df9ad56966d106aa28597611dfbfac53ce7d8c Mon Sep 17 00:00:00 2001 From: liwen Date: Tue, 21 May 2024 21:44:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=97=A0=E5=9B=BE=E7=89=87=E6=97=B6=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../safeproduct/vo/RehearsalRecordDetailImgVO.java | 16 ++++++++ .../safeproduct/vo/RehearsalRecordDetailStrVO.java | 15 +++++++ .../safeproduct/vo/RehearsalRecordDetailVO.java | 3 -- .../service/impl/RehearsalRecordServiceImpl.java | 43 ++++++++++++--------- .../com/hnac/hzims/safeproduct/utils/BaseUtil.java | 33 ++++++++++++++++ .../main/resources/template/演练记录表.docx | Bin 12341 -> 12368 bytes 6 files changed, 89 insertions(+), 21 deletions(-) create mode 100644 hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailImgVO.java create mode 100644 hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailStrVO.java diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailImgVO.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailImgVO.java new file mode 100644 index 0000000..abb312d --- /dev/null +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailImgVO.java @@ -0,0 +1,16 @@ +package com.hnac.hzims.safeproduct.vo; + +import cn.afterturn.easypoi.entity.ImageEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(value = "演练记录表VO类") +public class RehearsalRecordDetailImgVO extends RehearsalRecordDetailVO{ + + @ApiModelProperty("图片列表") + private List images; +} diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailStrVO.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailStrVO.java new file mode 100644 index 0000000..2a7c8bf --- /dev/null +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailStrVO.java @@ -0,0 +1,15 @@ +package com.hnac.hzims.safeproduct.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(value = "演练记录表VO类") +public class RehearsalRecordDetailStrVO extends RehearsalRecordDetailVO{ + + @ApiModelProperty("图片列表") + private List images; +} diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailVO.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailVO.java index e1d414f..545065f 100644 --- a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailVO.java +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailVO.java @@ -55,9 +55,6 @@ public class RehearsalRecordDetailVO { @ApiModelProperty("演练科目") private String subject; - @ApiModelProperty("图片列表") - private List images; - @ApiModelProperty("年份") private String year; diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/RehearsalRecordServiceImpl.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/RehearsalRecordServiceImpl.java index 2b9b50c..4018a62 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/RehearsalRecordServiceImpl.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/RehearsalRecordServiceImpl.java @@ -19,10 +19,13 @@ import com.hnac.hzims.safeproduct.mapper.RehearsalRecordMapper; import com.hnac.hzims.safeproduct.service.IRehearsalRecordService; import com.hnac.hzims.safeproduct.utils.BaseUtil; import com.hnac.hzims.safeproduct.utils.TimeUtils; +import com.hnac.hzims.safeproduct.vo.RehearsalRecordDetailImgVO; +import com.hnac.hzims.safeproduct.vo.RehearsalRecordDetailStrVO; import com.hnac.hzims.safeproduct.vo.RehearsalRecordDetailVO; import com.hnac.hzims.safeproduct.vo.RehearsalRecordlVO; import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.support.Query; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -150,23 +153,6 @@ public class RehearsalRecordServiceImpl extends ServiceImpl list = new ArrayList<>(); - if (StringUtils.isNotEmpty(rehearsalRecordDetailVO.getImgPath())) { - String[] imgArr = rehearsalRecordDetailVO.getImgPath().split(","); - for (String img : imgArr) { - ImageEntity imageEntity = new ImageEntity(BaseUtil.imgToByte(savePath + - BaseUtil.downloadFileByUrl(img, savePath)), 180, 150); - list.add(imageEntity); - } - } else { - // 添加空的ImageEntity,防止数据填入时显示"{{" - ImageEntity imageEntity = new ImageEntity(); - // 设置空字符串,防止空指针报错 - imageEntity.setUrl(""); - list.add(imageEntity); - } - rehearsalRecordDetailVO.setImages(list); // 记录:换行符使用\r\n String standardRecord = rehearsalRecordDetailVO.getRecord().replaceAll("\n", "\r\n"); rehearsalRecordDetailVO.setRecord(standardRecord); @@ -186,7 +172,28 @@ public class RehearsalRecordServiceImpl extends ServiceImpl params = BaseUtil.obj2Map(rehearsalRecordDetailVO); + // 图片 + Map params; + if (StringUtils.isNotEmpty(rehearsalRecordDetailVO.getImgPath())) { + List list = new ArrayList<>(); + RehearsalRecordDetailImgVO imgVO = new RehearsalRecordDetailImgVO(); + BeanUtils.copyProperties(rehearsalRecordDetailVO, imgVO); + String[] imgArr = rehearsalRecordDetailVO.getImgPath().split(","); + for (String img : imgArr) { + ImageEntity imageEntity = new ImageEntity(BaseUtil.imgToByte(savePath + + BaseUtil.downloadFileByUrl(img, savePath)), 180, 150); + list.add(imageEntity); + } + imgVO.setImages(list); + params = BaseUtil.obj2Map(imgVO); + } else { + List list = new ArrayList<>(); + list.add(""); + RehearsalRecordDetailStrVO strVO = new RehearsalRecordDetailStrVO(); + BeanUtils.copyProperties(rehearsalRecordDetailVO, strVO); + strVO.setImages(list); + params = BaseUtil.obj2Map(strVO); + } String templateFile = "template/演练记录表" + SafeProductConstant.DOCX_SUFFIX; String wordPath = savePath + "/演练记录表" + SafeProductConstant.DOCX_SUFFIX; String pdfPath = savePath + "/演练记录表" + SafeProductConstant.PDF_SUFFIX; diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/utils/BaseUtil.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/utils/BaseUtil.java index 3c84c29..da74c7f 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/utils/BaseUtil.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/utils/BaseUtil.java @@ -119,6 +119,7 @@ public class BaseUtil { XWPFDocument xwpfDocument = null; try { xwpfDocument = WordExportUtil.exportWord07(templatePath, params); + // 超链接处理 if (findName != null && !findName.isEmpty()) { String findText = params.get(findName).toString(); if (findText != null && !findText.isEmpty()) { @@ -142,6 +143,7 @@ public class BaseUtil { } } } + // 表格处理 if (templatePath.equals("template/卫生自查表.docx")) { formatHygieneRecordTable(xwpfDocument); } @@ -151,6 +153,36 @@ public class BaseUtil { return xwpfDocument; } + /** + * 车辆检查表格式处理 + * @param xwpfDocument word文件类 + */ + private static void formatCarCheckRecordTable(XWPFDocument xwpfDocument) { + // 获取文档中所有的表格 + List tableList = xwpfDocument.getTables(); + if (tableList.size() > 0) { + // 循环表格 + for (XWPFTable table : tableList) { + // 获取表格所有行数 + List rows = table.getRows(); + // 第五行到倒数第三行为需合并区域 + for (int row = 5; row < rows.size() - 2;) { + XWPFTableCell startCell = rows.get(row).getCell(0); + String startText = startCell.getText(); + int index = row + 1; + for (; index < rows.size(); index++) { + XWPFTableCell endCell = rows.get(index).getCell(0); + String endText = endCell.getText(); + if (!startText.equals(endText)) { + break; + } + } + mergeCellsVertically(table, 0, row, index - 1); + row = index; + } + } + } + } private static void insertJsonArrayIntoParagraph(JSONArray jsonArray, XWPFParagraph paragraph) throws IOException { for (int i = 0; i < jsonArray.length(); i++) { @@ -175,6 +207,7 @@ public class BaseUtil { } } } + /** * 卫生自查表格式处理 * @param xwpfDocument word文件类 diff --git a/hzims-service/safeproduct/src/main/resources/template/演练记录表.docx b/hzims-service/safeproduct/src/main/resources/template/演练记录表.docx index c83a99c9bb39ebd1d1ae7ced45cd96bb4028312e..38209f5d8c5c03de5ceb57815dc08da24b9aaf6b 100644 GIT binary patch delta 5126 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 delta 5085 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 bdmjY1Fx