diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java index e190f9d..f99c612 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -16,9 +16,14 @@ private String electronicSealImageUrl; /** - * 电子签章资源路径(列表扩展) + * 电子签章资源路径(扩展) */ private String electronicSealImageUrls; + + /** + * 电子签章资源路径目录(扩展) + */ + private String SealImageUrlsDir; /** * 电子签名标记 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java index e190f9d..f99c612 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -16,9 +16,14 @@ private String electronicSealImageUrl; /** - * 电子签章资源路径(列表扩展) + * 电子签章资源路径(扩展) */ private String electronicSealImageUrls; + + /** + * 电子签章资源路径目录(扩展) + */ + private String SealImageUrlsDir; /** * 电子签名标记 */ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java index bdc90ed..4b5e18f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java @@ -152,9 +152,6 @@ TimeUnit.SECONDS, new LinkedBlockingQueue<>(2)); StandardEquipmentPrint equipmentPrint = getStandardEquipmentPrint(request); BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class); - //新增对检定地点的转换,如果找不到该地点,则显示为空 - String measureAddress = bizBusinessMapper.getMeasureAddress(request.getMeasureAddress()); - request.setMeasureAddress(StringUtils.isNoneEmpty(measureAddress) ? measureAddress : ""); //生成证书报告的 CompletableFuture> certificateFutureTask = CompletableFuture.supplyAsync( () -> equipmentPrint.doCreateCertificateFile(request), threadPool); diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java index e190f9d..f99c612 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -16,9 +16,14 @@ private String electronicSealImageUrl; /** - * 电子签章资源路径(列表扩展) + * 电子签章资源路径(扩展) */ private String electronicSealImageUrls; + + /** + * 电子签章资源路径目录(扩展) + */ + private String SealImageUrlsDir; /** * 电子签名标记 */ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java index bdc90ed..4b5e18f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java @@ -152,9 +152,6 @@ TimeUnit.SECONDS, new LinkedBlockingQueue<>(2)); StandardEquipmentPrint equipmentPrint = getStandardEquipmentPrint(request); BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class); - //新增对检定地点的转换,如果找不到该地点,则显示为空 - String measureAddress = bizBusinessMapper.getMeasureAddress(request.getMeasureAddress()); - request.setMeasureAddress(StringUtils.isNoneEmpty(measureAddress) ? measureAddress : ""); //生成证书报告的 CompletableFuture> certificateFutureTask = CompletableFuture.supplyAsync( () -> equipmentPrint.doCreateCertificateFile(request), threadPool); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java index bd4bace..a945f1b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java @@ -21,10 +21,15 @@ //技术文件处理 if (map.containsKey("technologyFile") && ObjectUtils.isNotEmpty(map.get("technologyFile"))) { //技术文件用逗号隔开 - String[] technologyFiles = ((String) map.get("technologyFile")).split(","); - List technologyFileList = Arrays.asList(technologyFiles); - map.put("technologyFileList", technologyFileList); + String technologyFiles = ((String) map.get("technologyFile")); + if (StringUtils.isNotEmpty(technologyFiles) && technologyFiles.contains("[")) { + technologyFiles = technologyFiles.substring(1, technologyFiles.length() - 1); + } + map.put("technologyFileList", StringUtils.isEmpty(technologyFiles) ? "" : technologyFiles); } + //新增对检定地点的转换,如果找不到该地点,则显示为空 +// String measureAddress = bizBusinessMapper.getMeasureAddress(request.getMeasureAddress()); +// request.setMeasureAddress(StringUtils.isNoneEmpty(measureAddress) ? measureAddress : ""); //健壮性校验 if (StringUtils.isEmpty(labCode)) { log.warn("组织接口不能传入为空,打印文档生成文档填充组织失败..."); @@ -48,7 +53,7 @@ if (ObjectUtils.isNotEmpty(map.get(MEASURE_VALID_DATE))) { String measureValidDate = (String) map.get(MEASURE_VALID_DATE); try { - map.put(MEASURE_DATE, new SimpleDateFormat("yyyy年MM月dd日").format( new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate))); + map.put(MEASURE_DATE, new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate))); } catch (Exception e) { throw new BusinessException(1500, String.format(measureValidDate, "检定有效日期,格式不正确")); } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java index e190f9d..f99c612 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -16,9 +16,14 @@ private String electronicSealImageUrl; /** - * 电子签章资源路径(列表扩展) + * 电子签章资源路径(扩展) */ private String electronicSealImageUrls; + + /** + * 电子签章资源路径目录(扩展) + */ + private String SealImageUrlsDir; /** * 电子签名标记 */ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java index bdc90ed..4b5e18f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java @@ -152,9 +152,6 @@ TimeUnit.SECONDS, new LinkedBlockingQueue<>(2)); StandardEquipmentPrint equipmentPrint = getStandardEquipmentPrint(request); BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class); - //新增对检定地点的转换,如果找不到该地点,则显示为空 - String measureAddress = bizBusinessMapper.getMeasureAddress(request.getMeasureAddress()); - request.setMeasureAddress(StringUtils.isNoneEmpty(measureAddress) ? measureAddress : ""); //生成证书报告的 CompletableFuture> certificateFutureTask = CompletableFuture.supplyAsync( () -> equipmentPrint.doCreateCertificateFile(request), threadPool); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java index bd4bace..a945f1b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java @@ -21,10 +21,15 @@ //技术文件处理 if (map.containsKey("technologyFile") && ObjectUtils.isNotEmpty(map.get("technologyFile"))) { //技术文件用逗号隔开 - String[] technologyFiles = ((String) map.get("technologyFile")).split(","); - List technologyFileList = Arrays.asList(technologyFiles); - map.put("technologyFileList", technologyFileList); + String technologyFiles = ((String) map.get("technologyFile")); + if (StringUtils.isNotEmpty(technologyFiles) && technologyFiles.contains("[")) { + technologyFiles = technologyFiles.substring(1, technologyFiles.length() - 1); + } + map.put("technologyFileList", StringUtils.isEmpty(technologyFiles) ? "" : technologyFiles); } + //新增对检定地点的转换,如果找不到该地点,则显示为空 +// String measureAddress = bizBusinessMapper.getMeasureAddress(request.getMeasureAddress()); +// request.setMeasureAddress(StringUtils.isNoneEmpty(measureAddress) ? measureAddress : ""); //健壮性校验 if (StringUtils.isEmpty(labCode)) { log.warn("组织接口不能传入为空,打印文档生成文档填充组织失败..."); @@ -48,7 +53,7 @@ if (ObjectUtils.isNotEmpty(map.get(MEASURE_VALID_DATE))) { String measureValidDate = (String) map.get(MEASURE_VALID_DATE); try { - map.put(MEASURE_DATE, new SimpleDateFormat("yyyy年MM月dd日").format( new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate))); + map.put(MEASURE_DATE, new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate))); } catch (Exception e) { throw new BusinessException(1500, String.format(measureValidDate, "检定有效日期,格式不正确")); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java index c252d8f..d7ca374 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java @@ -22,6 +22,7 @@ import liquibase.pro.packaged.D; import liquibase.pro.packaged.E; import lombok.extern.slf4j.Slf4j; +import org.docx4j.wml.R; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; @@ -138,11 +139,14 @@ * * @param document */ - public static void headerFooter(Document document) { + public static void headerFooter(Document document, String recordNo) { int sectionCounts = document.getSections().getCount(); for (int i = 0; i < sectionCounts; i++) { - HeaderFooter footer = document.getSections().get(i).getHeadersFooters().getFooter(); + HeaderFooter footer = document.getSections().get(i).getHeadersFooters().getHeader(); Paragraph footerParagraph = footer.addParagraph(); + recordNo = StringUtils.isEmpty(recordNo) ? "" : recordNo; + footerParagraph.appendText(" 证书号:" + recordNo); + footerParagraph.appendText(" "); footerParagraph.appendText(" 第 "); footerParagraph.appendField("第 " + "page number" + "页", FieldType.Field_Page); footerParagraph.appendText(" 页 共"); @@ -172,12 +176,17 @@ (ObjectUtils.isNotEmpty(imageConfig.getColIndex()) && imageConfig.getColIndex() != -1)) { String[] imageUrls = electronicSeal.getElectronicSealImageUrls().split(","); if (ObjectUtils.isNotEmpty(imageConfig.getRowIndex()) && imageConfig.getRowIndex() != -1) { - TableCell cell = rows.get(imageConfig.getRowIndex()).getCells().get(imageConfig.getColIndex() - 1); - doPopulateMultiImage(cell, imageUrls[0], imageConfig, electronicSeal,rows,imageConfig.getRowIndex()); + TableCell cell = rows.get(imageConfig.getRowIndex() - 1).getCells().get(imageConfig.getColIndex() - 1); + if (ObjectUtils.isEmpty(imageUrls)) { + return; + } + for (String imageUrl : imageUrls) { + doPopulateMultiImage(cell, imageUrl, imageConfig, electronicSeal, rows, imageConfig.getRowIndex() - 1); + } } else { for (int i = 1; i < rows.getCount(); i++) { TableCell cell = rows.get(i).getCells().get(imageConfig.getColIndex() - 1); - doPopulateMultiImage(cell, imageUrls[i - 1], imageConfig, electronicSeal,rows,i); + doPopulateMultiImage(cell, imageUrls[i - 1], imageConfig, electronicSeal, rows, i); } } } @@ -185,14 +194,24 @@ private static void doPopulateMultiImage(TableCell cell, String imageUrl, ImageConfig imageConfig, ElectronicImage electronicSeal, RowCollection rows, int index) { - DocPicture docPicture = cell.getFirstParagraph().appendPicture(electronicSeal.getElectronicSealImageUrl() + imageUrl); - //水平位置 - docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Center); - //垂直位置 - docPicture.setVerticalAlignment(ShapeVerticalAlignment.Center); - //设置电子章大小 //宽度可以计算 - docPicture.setWidth(cell.getWidth() * 2); - docPicture.setHeight(rows.get(index).getHeight()); + DocPicture docPicture = cell.getFirstParagraph().appendPicture(electronicSeal.getSealImageUrlsDir() + imageUrl); + if ("1".equals(imageConfig.getApprovalFlag())) { + //水平位置 + docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Left); + //垂直位置 + docPicture.setVerticalAlignment(ShapeVerticalAlignment.Top); + //设置电子章大小 //宽度可以计算 + docPicture.setWidth(cell.getWidth()); + docPicture.setHeight(rows.get(index).getHeight()); + } else { + //水平位置 + docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Center); + //垂直位置 + docPicture.setVerticalAlignment(ShapeVerticalAlignment.Center); + //设置电子章大小 //宽度可以计算 + docPicture.setWidth(cell.getWidth() * 2); + docPicture.setHeight(rows.get(index).getHeight()); + } //合并行列是选填,需要进一步判断 if (ObjectUtils.isNotEmpty(imageConfig.getRowSpan())) { docPicture.setHeight(docPicture.getHeight() * imageConfig.getRowSpan()); diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java index e190f9d..f99c612 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -16,9 +16,14 @@ private String electronicSealImageUrl; /** - * 电子签章资源路径(列表扩展) + * 电子签章资源路径(扩展) */ private String electronicSealImageUrls; + + /** + * 电子签章资源路径目录(扩展) + */ + private String SealImageUrlsDir; /** * 电子签名标记 */ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java index bdc90ed..4b5e18f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java @@ -152,9 +152,6 @@ TimeUnit.SECONDS, new LinkedBlockingQueue<>(2)); StandardEquipmentPrint equipmentPrint = getStandardEquipmentPrint(request); BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class); - //新增对检定地点的转换,如果找不到该地点,则显示为空 - String measureAddress = bizBusinessMapper.getMeasureAddress(request.getMeasureAddress()); - request.setMeasureAddress(StringUtils.isNoneEmpty(measureAddress) ? measureAddress : ""); //生成证书报告的 CompletableFuture> certificateFutureTask = CompletableFuture.supplyAsync( () -> equipmentPrint.doCreateCertificateFile(request), threadPool); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java index bd4bace..a945f1b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java @@ -21,10 +21,15 @@ //技术文件处理 if (map.containsKey("technologyFile") && ObjectUtils.isNotEmpty(map.get("technologyFile"))) { //技术文件用逗号隔开 - String[] technologyFiles = ((String) map.get("technologyFile")).split(","); - List technologyFileList = Arrays.asList(technologyFiles); - map.put("technologyFileList", technologyFileList); + String technologyFiles = ((String) map.get("technologyFile")); + if (StringUtils.isNotEmpty(technologyFiles) && technologyFiles.contains("[")) { + technologyFiles = technologyFiles.substring(1, technologyFiles.length() - 1); + } + map.put("technologyFileList", StringUtils.isEmpty(technologyFiles) ? "" : technologyFiles); } + //新增对检定地点的转换,如果找不到该地点,则显示为空 +// String measureAddress = bizBusinessMapper.getMeasureAddress(request.getMeasureAddress()); +// request.setMeasureAddress(StringUtils.isNoneEmpty(measureAddress) ? measureAddress : ""); //健壮性校验 if (StringUtils.isEmpty(labCode)) { log.warn("组织接口不能传入为空,打印文档生成文档填充组织失败..."); @@ -48,7 +53,7 @@ if (ObjectUtils.isNotEmpty(map.get(MEASURE_VALID_DATE))) { String measureValidDate = (String) map.get(MEASURE_VALID_DATE); try { - map.put(MEASURE_DATE, new SimpleDateFormat("yyyy年MM月dd日").format( new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate))); + map.put(MEASURE_DATE, new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate))); } catch (Exception e) { throw new BusinessException(1500, String.format(measureValidDate, "检定有效日期,格式不正确")); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java index c252d8f..d7ca374 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java @@ -22,6 +22,7 @@ import liquibase.pro.packaged.D; import liquibase.pro.packaged.E; import lombok.extern.slf4j.Slf4j; +import org.docx4j.wml.R; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; @@ -138,11 +139,14 @@ * * @param document */ - public static void headerFooter(Document document) { + public static void headerFooter(Document document, String recordNo) { int sectionCounts = document.getSections().getCount(); for (int i = 0; i < sectionCounts; i++) { - HeaderFooter footer = document.getSections().get(i).getHeadersFooters().getFooter(); + HeaderFooter footer = document.getSections().get(i).getHeadersFooters().getHeader(); Paragraph footerParagraph = footer.addParagraph(); + recordNo = StringUtils.isEmpty(recordNo) ? "" : recordNo; + footerParagraph.appendText(" 证书号:" + recordNo); + footerParagraph.appendText(" "); footerParagraph.appendText(" 第 "); footerParagraph.appendField("第 " + "page number" + "页", FieldType.Field_Page); footerParagraph.appendText(" 页 共"); @@ -172,12 +176,17 @@ (ObjectUtils.isNotEmpty(imageConfig.getColIndex()) && imageConfig.getColIndex() != -1)) { String[] imageUrls = electronicSeal.getElectronicSealImageUrls().split(","); if (ObjectUtils.isNotEmpty(imageConfig.getRowIndex()) && imageConfig.getRowIndex() != -1) { - TableCell cell = rows.get(imageConfig.getRowIndex()).getCells().get(imageConfig.getColIndex() - 1); - doPopulateMultiImage(cell, imageUrls[0], imageConfig, electronicSeal,rows,imageConfig.getRowIndex()); + TableCell cell = rows.get(imageConfig.getRowIndex() - 1).getCells().get(imageConfig.getColIndex() - 1); + if (ObjectUtils.isEmpty(imageUrls)) { + return; + } + for (String imageUrl : imageUrls) { + doPopulateMultiImage(cell, imageUrl, imageConfig, electronicSeal, rows, imageConfig.getRowIndex() - 1); + } } else { for (int i = 1; i < rows.getCount(); i++) { TableCell cell = rows.get(i).getCells().get(imageConfig.getColIndex() - 1); - doPopulateMultiImage(cell, imageUrls[i - 1], imageConfig, electronicSeal,rows,i); + doPopulateMultiImage(cell, imageUrls[i - 1], imageConfig, electronicSeal, rows, i); } } } @@ -185,14 +194,24 @@ private static void doPopulateMultiImage(TableCell cell, String imageUrl, ImageConfig imageConfig, ElectronicImage electronicSeal, RowCollection rows, int index) { - DocPicture docPicture = cell.getFirstParagraph().appendPicture(electronicSeal.getElectronicSealImageUrl() + imageUrl); - //水平位置 - docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Center); - //垂直位置 - docPicture.setVerticalAlignment(ShapeVerticalAlignment.Center); - //设置电子章大小 //宽度可以计算 - docPicture.setWidth(cell.getWidth() * 2); - docPicture.setHeight(rows.get(index).getHeight()); + DocPicture docPicture = cell.getFirstParagraph().appendPicture(electronicSeal.getSealImageUrlsDir() + imageUrl); + if ("1".equals(imageConfig.getApprovalFlag())) { + //水平位置 + docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Left); + //垂直位置 + docPicture.setVerticalAlignment(ShapeVerticalAlignment.Top); + //设置电子章大小 //宽度可以计算 + docPicture.setWidth(cell.getWidth()); + docPicture.setHeight(rows.get(index).getHeight()); + } else { + //水平位置 + docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Center); + //垂直位置 + docPicture.setVerticalAlignment(ShapeVerticalAlignment.Center); + //设置电子章大小 //宽度可以计算 + docPicture.setWidth(cell.getWidth() * 2); + docPicture.setHeight(rows.get(index).getHeight()); + } //合并行列是选填,需要进一步判断 if (ObjectUtils.isNotEmpty(imageConfig.getRowSpan())) { docPicture.setHeight(docPicture.getHeight() * imageConfig.getRowSpan()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index 2cf2437..2d67d61 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -367,7 +367,7 @@ */ public static String exportWord(String temDir, List fileNames, Map params, List mergeColNames) { //两个文档合并为fileNames[0]文档 - String fileName = mergeDoc(temDir, fileNames); + String fileName = mergeDoc(temDir, fileNames,(String)params.get("certificateNo")); Assert.notNull(temDir, "临时文件路径不能为空"); Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式"); File dir = new File(temDir); @@ -412,7 +412,7 @@ * @param fileNames * @return */ - public static String mergeDoc(String localPathUrl, List fileNames) { + public static String mergeDoc(String localPathUrl, List fileNames,String recordNo) { //doc合并 if (CollectionUtils.isEmpty(fileNames)) { return null; @@ -424,7 +424,7 @@ String word2Url = localPathUrl + fileNames.get(i++); mainDoc.insertTextFromFile(word2Url, FileFormat.Docx_2010); } - DocPictureProvider.headerFooter(mainDoc); + DocPictureProvider.headerFooter(mainDoc,recordNo); //保存合并后的文档 mainDoc.saveToFile(word1Url, FileFormat.Docx_2010); } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java index e190f9d..f99c612 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -16,9 +16,14 @@ private String electronicSealImageUrl; /** - * 电子签章资源路径(列表扩展) + * 电子签章资源路径(扩展) */ private String electronicSealImageUrls; + + /** + * 电子签章资源路径目录(扩展) + */ + private String SealImageUrlsDir; /** * 电子签名标记 */ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java index bdc90ed..4b5e18f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java @@ -152,9 +152,6 @@ TimeUnit.SECONDS, new LinkedBlockingQueue<>(2)); StandardEquipmentPrint equipmentPrint = getStandardEquipmentPrint(request); BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class); - //新增对检定地点的转换,如果找不到该地点,则显示为空 - String measureAddress = bizBusinessMapper.getMeasureAddress(request.getMeasureAddress()); - request.setMeasureAddress(StringUtils.isNoneEmpty(measureAddress) ? measureAddress : ""); //生成证书报告的 CompletableFuture> certificateFutureTask = CompletableFuture.supplyAsync( () -> equipmentPrint.doCreateCertificateFile(request), threadPool); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java index bd4bace..a945f1b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java @@ -21,10 +21,15 @@ //技术文件处理 if (map.containsKey("technologyFile") && ObjectUtils.isNotEmpty(map.get("technologyFile"))) { //技术文件用逗号隔开 - String[] technologyFiles = ((String) map.get("technologyFile")).split(","); - List technologyFileList = Arrays.asList(technologyFiles); - map.put("technologyFileList", technologyFileList); + String technologyFiles = ((String) map.get("technologyFile")); + if (StringUtils.isNotEmpty(technologyFiles) && technologyFiles.contains("[")) { + technologyFiles = technologyFiles.substring(1, technologyFiles.length() - 1); + } + map.put("technologyFileList", StringUtils.isEmpty(technologyFiles) ? "" : technologyFiles); } + //新增对检定地点的转换,如果找不到该地点,则显示为空 +// String measureAddress = bizBusinessMapper.getMeasureAddress(request.getMeasureAddress()); +// request.setMeasureAddress(StringUtils.isNoneEmpty(measureAddress) ? measureAddress : ""); //健壮性校验 if (StringUtils.isEmpty(labCode)) { log.warn("组织接口不能传入为空,打印文档生成文档填充组织失败..."); @@ -48,7 +53,7 @@ if (ObjectUtils.isNotEmpty(map.get(MEASURE_VALID_DATE))) { String measureValidDate = (String) map.get(MEASURE_VALID_DATE); try { - map.put(MEASURE_DATE, new SimpleDateFormat("yyyy年MM月dd日").format( new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate))); + map.put(MEASURE_DATE, new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate))); } catch (Exception e) { throw new BusinessException(1500, String.format(measureValidDate, "检定有效日期,格式不正确")); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java index c252d8f..d7ca374 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java @@ -22,6 +22,7 @@ import liquibase.pro.packaged.D; import liquibase.pro.packaged.E; import lombok.extern.slf4j.Slf4j; +import org.docx4j.wml.R; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; @@ -138,11 +139,14 @@ * * @param document */ - public static void headerFooter(Document document) { + public static void headerFooter(Document document, String recordNo) { int sectionCounts = document.getSections().getCount(); for (int i = 0; i < sectionCounts; i++) { - HeaderFooter footer = document.getSections().get(i).getHeadersFooters().getFooter(); + HeaderFooter footer = document.getSections().get(i).getHeadersFooters().getHeader(); Paragraph footerParagraph = footer.addParagraph(); + recordNo = StringUtils.isEmpty(recordNo) ? "" : recordNo; + footerParagraph.appendText(" 证书号:" + recordNo); + footerParagraph.appendText(" "); footerParagraph.appendText(" 第 "); footerParagraph.appendField("第 " + "page number" + "页", FieldType.Field_Page); footerParagraph.appendText(" 页 共"); @@ -172,12 +176,17 @@ (ObjectUtils.isNotEmpty(imageConfig.getColIndex()) && imageConfig.getColIndex() != -1)) { String[] imageUrls = electronicSeal.getElectronicSealImageUrls().split(","); if (ObjectUtils.isNotEmpty(imageConfig.getRowIndex()) && imageConfig.getRowIndex() != -1) { - TableCell cell = rows.get(imageConfig.getRowIndex()).getCells().get(imageConfig.getColIndex() - 1); - doPopulateMultiImage(cell, imageUrls[0], imageConfig, electronicSeal,rows,imageConfig.getRowIndex()); + TableCell cell = rows.get(imageConfig.getRowIndex() - 1).getCells().get(imageConfig.getColIndex() - 1); + if (ObjectUtils.isEmpty(imageUrls)) { + return; + } + for (String imageUrl : imageUrls) { + doPopulateMultiImage(cell, imageUrl, imageConfig, electronicSeal, rows, imageConfig.getRowIndex() - 1); + } } else { for (int i = 1; i < rows.getCount(); i++) { TableCell cell = rows.get(i).getCells().get(imageConfig.getColIndex() - 1); - doPopulateMultiImage(cell, imageUrls[i - 1], imageConfig, electronicSeal,rows,i); + doPopulateMultiImage(cell, imageUrls[i - 1], imageConfig, electronicSeal, rows, i); } } } @@ -185,14 +194,24 @@ private static void doPopulateMultiImage(TableCell cell, String imageUrl, ImageConfig imageConfig, ElectronicImage electronicSeal, RowCollection rows, int index) { - DocPicture docPicture = cell.getFirstParagraph().appendPicture(electronicSeal.getElectronicSealImageUrl() + imageUrl); - //水平位置 - docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Center); - //垂直位置 - docPicture.setVerticalAlignment(ShapeVerticalAlignment.Center); - //设置电子章大小 //宽度可以计算 - docPicture.setWidth(cell.getWidth() * 2); - docPicture.setHeight(rows.get(index).getHeight()); + DocPicture docPicture = cell.getFirstParagraph().appendPicture(electronicSeal.getSealImageUrlsDir() + imageUrl); + if ("1".equals(imageConfig.getApprovalFlag())) { + //水平位置 + docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Left); + //垂直位置 + docPicture.setVerticalAlignment(ShapeVerticalAlignment.Top); + //设置电子章大小 //宽度可以计算 + docPicture.setWidth(cell.getWidth()); + docPicture.setHeight(rows.get(index).getHeight()); + } else { + //水平位置 + docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Center); + //垂直位置 + docPicture.setVerticalAlignment(ShapeVerticalAlignment.Center); + //设置电子章大小 //宽度可以计算 + docPicture.setWidth(cell.getWidth() * 2); + docPicture.setHeight(rows.get(index).getHeight()); + } //合并行列是选填,需要进一步判断 if (ObjectUtils.isNotEmpty(imageConfig.getRowSpan())) { docPicture.setHeight(docPicture.getHeight() * imageConfig.getRowSpan()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index 2cf2437..2d67d61 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -367,7 +367,7 @@ */ public static String exportWord(String temDir, List fileNames, Map params, List mergeColNames) { //两个文档合并为fileNames[0]文档 - String fileName = mergeDoc(temDir, fileNames); + String fileName = mergeDoc(temDir, fileNames,(String)params.get("certificateNo")); Assert.notNull(temDir, "临时文件路径不能为空"); Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式"); File dir = new File(temDir); @@ -412,7 +412,7 @@ * @param fileNames * @return */ - public static String mergeDoc(String localPathUrl, List fileNames) { + public static String mergeDoc(String localPathUrl, List fileNames,String recordNo) { //doc合并 if (CollectionUtils.isEmpty(fileNames)) { return null; @@ -424,7 +424,7 @@ String word2Url = localPathUrl + fileNames.get(i++); mainDoc.insertTextFromFile(word2Url, FileFormat.Docx_2010); } - DocPictureProvider.headerFooter(mainDoc); + DocPictureProvider.headerFooter(mainDoc,recordNo); //保存合并后的文档 mainDoc.saveToFile(word1Url, FileFormat.Docx_2010); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/image/ApprovalImage.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/image/ApprovalImage.java index 3cfad1a..273b088 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/image/ApprovalImage.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/image/ApprovalImage.java @@ -100,24 +100,51 @@ timeSeqCount++; continue; } + //这里新增处理多个签名的情况和处理放到定制表格内的情况 final String customizedSignName = approvalImageList.get(i).getDocName(); List approvalLogList = approvalLogMap.get(approvalImageList.get(i).getFiledName()); if (CollectionUtils.isNotEmpty(approvalLogList)) { - for (ApprovalLogResponse approvalLog : approvalLogList) { - ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); - filePrintRegister.getParams().putAll(createApprovalParam(timeSeqCount, approvalLog)); - timeSeqCount++; - String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); - if (StringUtils.isEmpty(signFileName)) { - continue; + if (StringUtils.isEmpty(approvalImageList.get(i).getDocName())) { + //多个签名的情况 + String signFileNames = ""; + for (ApprovalLogResponse approvalLog : approvalLogList) { + filePrintRegister.getParams().putAll(createApprovalParam(timeSeqCount, approvalLog)); + timeSeqCount++; + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + continue; + } + signFileNames += signFileName + ","; + log.debug("工作图片签名url为:{}", filePrintRegister.getTemDir() + signFileName); } - log.debug("工作图片签名url为:{}", filePrintRegister.getTemDir() + signFileName); - //将工作流图片签名放置待下载的文件和图片信息集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + if(StringUtils.isNotEmpty(signFileNames)){ + signFileNames = signFileNames.substring(0, signFileNames.length() - 1); + } + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + electronicImage.setSealImageUrlsDir(filePrintRegister.getTemDir()); + electronicImage.setElectronicSealImageUrls(signFileNames); electronicImage.setImageConfig(approvalImageList.get(i)); //放入待下载的文件集合 - filePrintRegister.setBeDownloadedFileNames(signFileName); + filePrintRegister.getBeDownloadedFileNames().add(signFileNames); electronicImageList.add(electronicImage); + } else { + //多个工作流字段签名 + for (ApprovalLogResponse approvalLog : approvalLogList) { + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + filePrintRegister.getParams().putAll(createApprovalParam(timeSeqCount, approvalLog)); + timeSeqCount++; + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + continue; + } + log.debug("工作图片签名url为:{}", filePrintRegister.getTemDir() + signFileName); + //将工作流图片签名放置待下载的文件和图片信息集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + electronicImage.setImageConfig(approvalImageList.get(i)); + //放入待下载的文件集合 + filePrintRegister.setBeDownloadedFileNames(signFileName); + electronicImageList.add(electronicImage); + } } } } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java index e190f9d..f99c612 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/certificate/ElectronicImage.java @@ -16,9 +16,14 @@ private String electronicSealImageUrl; /** - * 电子签章资源路径(列表扩展) + * 电子签章资源路径(扩展) */ private String electronicSealImageUrls; + + /** + * 电子签章资源路径目录(扩展) + */ + private String SealImageUrlsDir; /** * 电子签名标记 */ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java index bdc90ed..4b5e18f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java @@ -152,9 +152,6 @@ TimeUnit.SECONDS, new LinkedBlockingQueue<>(2)); StandardEquipmentPrint equipmentPrint = getStandardEquipmentPrint(request); BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class); - //新增对检定地点的转换,如果找不到该地点,则显示为空 - String measureAddress = bizBusinessMapper.getMeasureAddress(request.getMeasureAddress()); - request.setMeasureAddress(StringUtils.isNoneEmpty(measureAddress) ? measureAddress : ""); //生成证书报告的 CompletableFuture> certificateFutureTask = CompletableFuture.supplyAsync( () -> equipmentPrint.doCreateCertificateFile(request), threadPool); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java index bd4bace..a945f1b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/StandardEquipmentSupport.java @@ -21,10 +21,15 @@ //技术文件处理 if (map.containsKey("technologyFile") && ObjectUtils.isNotEmpty(map.get("technologyFile"))) { //技术文件用逗号隔开 - String[] technologyFiles = ((String) map.get("technologyFile")).split(","); - List technologyFileList = Arrays.asList(technologyFiles); - map.put("technologyFileList", technologyFileList); + String technologyFiles = ((String) map.get("technologyFile")); + if (StringUtils.isNotEmpty(technologyFiles) && technologyFiles.contains("[")) { + technologyFiles = technologyFiles.substring(1, technologyFiles.length() - 1); + } + map.put("technologyFileList", StringUtils.isEmpty(technologyFiles) ? "" : technologyFiles); } + //新增对检定地点的转换,如果找不到该地点,则显示为空 +// String measureAddress = bizBusinessMapper.getMeasureAddress(request.getMeasureAddress()); +// request.setMeasureAddress(StringUtils.isNoneEmpty(measureAddress) ? measureAddress : ""); //健壮性校验 if (StringUtils.isEmpty(labCode)) { log.warn("组织接口不能传入为空,打印文档生成文档填充组织失败..."); @@ -48,7 +53,7 @@ if (ObjectUtils.isNotEmpty(map.get(MEASURE_VALID_DATE))) { String measureValidDate = (String) map.get(MEASURE_VALID_DATE); try { - map.put(MEASURE_DATE, new SimpleDateFormat("yyyy年MM月dd日").format( new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate))); + map.put(MEASURE_DATE, new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate))); } catch (Exception e) { throw new BusinessException(1500, String.format(measureValidDate, "检定有效日期,格式不正确")); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java index c252d8f..d7ca374 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java @@ -22,6 +22,7 @@ import liquibase.pro.packaged.D; import liquibase.pro.packaged.E; import lombok.extern.slf4j.Slf4j; +import org.docx4j.wml.R; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; @@ -138,11 +139,14 @@ * * @param document */ - public static void headerFooter(Document document) { + public static void headerFooter(Document document, String recordNo) { int sectionCounts = document.getSections().getCount(); for (int i = 0; i < sectionCounts; i++) { - HeaderFooter footer = document.getSections().get(i).getHeadersFooters().getFooter(); + HeaderFooter footer = document.getSections().get(i).getHeadersFooters().getHeader(); Paragraph footerParagraph = footer.addParagraph(); + recordNo = StringUtils.isEmpty(recordNo) ? "" : recordNo; + footerParagraph.appendText(" 证书号:" + recordNo); + footerParagraph.appendText(" "); footerParagraph.appendText(" 第 "); footerParagraph.appendField("第 " + "page number" + "页", FieldType.Field_Page); footerParagraph.appendText(" 页 共"); @@ -172,12 +176,17 @@ (ObjectUtils.isNotEmpty(imageConfig.getColIndex()) && imageConfig.getColIndex() != -1)) { String[] imageUrls = electronicSeal.getElectronicSealImageUrls().split(","); if (ObjectUtils.isNotEmpty(imageConfig.getRowIndex()) && imageConfig.getRowIndex() != -1) { - TableCell cell = rows.get(imageConfig.getRowIndex()).getCells().get(imageConfig.getColIndex() - 1); - doPopulateMultiImage(cell, imageUrls[0], imageConfig, electronicSeal,rows,imageConfig.getRowIndex()); + TableCell cell = rows.get(imageConfig.getRowIndex() - 1).getCells().get(imageConfig.getColIndex() - 1); + if (ObjectUtils.isEmpty(imageUrls)) { + return; + } + for (String imageUrl : imageUrls) { + doPopulateMultiImage(cell, imageUrl, imageConfig, electronicSeal, rows, imageConfig.getRowIndex() - 1); + } } else { for (int i = 1; i < rows.getCount(); i++) { TableCell cell = rows.get(i).getCells().get(imageConfig.getColIndex() - 1); - doPopulateMultiImage(cell, imageUrls[i - 1], imageConfig, electronicSeal,rows,i); + doPopulateMultiImage(cell, imageUrls[i - 1], imageConfig, electronicSeal, rows, i); } } } @@ -185,14 +194,24 @@ private static void doPopulateMultiImage(TableCell cell, String imageUrl, ImageConfig imageConfig, ElectronicImage electronicSeal, RowCollection rows, int index) { - DocPicture docPicture = cell.getFirstParagraph().appendPicture(electronicSeal.getElectronicSealImageUrl() + imageUrl); - //水平位置 - docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Center); - //垂直位置 - docPicture.setVerticalAlignment(ShapeVerticalAlignment.Center); - //设置电子章大小 //宽度可以计算 - docPicture.setWidth(cell.getWidth() * 2); - docPicture.setHeight(rows.get(index).getHeight()); + DocPicture docPicture = cell.getFirstParagraph().appendPicture(electronicSeal.getSealImageUrlsDir() + imageUrl); + if ("1".equals(imageConfig.getApprovalFlag())) { + //水平位置 + docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Left); + //垂直位置 + docPicture.setVerticalAlignment(ShapeVerticalAlignment.Top); + //设置电子章大小 //宽度可以计算 + docPicture.setWidth(cell.getWidth()); + docPicture.setHeight(rows.get(index).getHeight()); + } else { + //水平位置 + docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Center); + //垂直位置 + docPicture.setVerticalAlignment(ShapeVerticalAlignment.Center); + //设置电子章大小 //宽度可以计算 + docPicture.setWidth(cell.getWidth() * 2); + docPicture.setHeight(rows.get(index).getHeight()); + } //合并行列是选填,需要进一步判断 if (ObjectUtils.isNotEmpty(imageConfig.getRowSpan())) { docPicture.setHeight(docPicture.getHeight() * imageConfig.getRowSpan()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index 2cf2437..2d67d61 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -367,7 +367,7 @@ */ public static String exportWord(String temDir, List fileNames, Map params, List mergeColNames) { //两个文档合并为fileNames[0]文档 - String fileName = mergeDoc(temDir, fileNames); + String fileName = mergeDoc(temDir, fileNames,(String)params.get("certificateNo")); Assert.notNull(temDir, "临时文件路径不能为空"); Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式"); File dir = new File(temDir); @@ -412,7 +412,7 @@ * @param fileNames * @return */ - public static String mergeDoc(String localPathUrl, List fileNames) { + public static String mergeDoc(String localPathUrl, List fileNames,String recordNo) { //doc合并 if (CollectionUtils.isEmpty(fileNames)) { return null; @@ -424,7 +424,7 @@ String word2Url = localPathUrl + fileNames.get(i++); mainDoc.insertTextFromFile(word2Url, FileFormat.Docx_2010); } - DocPictureProvider.headerFooter(mainDoc); + DocPictureProvider.headerFooter(mainDoc,recordNo); //保存合并后的文档 mainDoc.saveToFile(word1Url, FileFormat.Docx_2010); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/image/ApprovalImage.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/image/ApprovalImage.java index 3cfad1a..273b088 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/image/ApprovalImage.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/image/ApprovalImage.java @@ -100,24 +100,51 @@ timeSeqCount++; continue; } + //这里新增处理多个签名的情况和处理放到定制表格内的情况 final String customizedSignName = approvalImageList.get(i).getDocName(); List approvalLogList = approvalLogMap.get(approvalImageList.get(i).getFiledName()); if (CollectionUtils.isNotEmpty(approvalLogList)) { - for (ApprovalLogResponse approvalLog : approvalLogList) { - ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); - filePrintRegister.getParams().putAll(createApprovalParam(timeSeqCount, approvalLog)); - timeSeqCount++; - String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); - if (StringUtils.isEmpty(signFileName)) { - continue; + if (StringUtils.isEmpty(approvalImageList.get(i).getDocName())) { + //多个签名的情况 + String signFileNames = ""; + for (ApprovalLogResponse approvalLog : approvalLogList) { + filePrintRegister.getParams().putAll(createApprovalParam(timeSeqCount, approvalLog)); + timeSeqCount++; + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + continue; + } + signFileNames += signFileName + ","; + log.debug("工作图片签名url为:{}", filePrintRegister.getTemDir() + signFileName); } - log.debug("工作图片签名url为:{}", filePrintRegister.getTemDir() + signFileName); - //将工作流图片签名放置待下载的文件和图片信息集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + if(StringUtils.isNotEmpty(signFileNames)){ + signFileNames = signFileNames.substring(0, signFileNames.length() - 1); + } + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + electronicImage.setSealImageUrlsDir(filePrintRegister.getTemDir()); + electronicImage.setElectronicSealImageUrls(signFileNames); electronicImage.setImageConfig(approvalImageList.get(i)); //放入待下载的文件集合 - filePrintRegister.setBeDownloadedFileNames(signFileName); + filePrintRegister.getBeDownloadedFileNames().add(signFileNames); electronicImageList.add(electronicImage); + } else { + //多个工作流字段签名 + for (ApprovalLogResponse approvalLog : approvalLogList) { + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + filePrintRegister.getParams().putAll(createApprovalParam(timeSeqCount, approvalLog)); + timeSeqCount++; + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + continue; + } + log.debug("工作图片签名url为:{}", filePrintRegister.getTemDir() + signFileName); + //将工作流图片签名放置待下载的文件和图片信息集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + electronicImage.setImageConfig(approvalImageList.get(i)); + //放入待下载的文件集合 + filePrintRegister.setBeDownloadedFileNames(signFileName); + electronicImageList.add(electronicImage); + } } } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/image/ElectronicSignSeal.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/image/ElectronicSignSeal.java index 98fd377..059de78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/image/ElectronicSignSeal.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/image/ElectronicSignSeal.java @@ -79,7 +79,7 @@ List electronicImageSeals = new ArrayList<>(); for (ImageConfig extendImageConfig : extendImageList) { ElectronicImage electronicImage = defaultElectronicImage(extendImageConfig.getDocName()); - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir()); + electronicImage.setSealImageUrlsDir(filePrintRegister.getTemDir()); if (getKeyDataByMetaData(metaDataMap, extendImageConfig.getFiledName(),extendImageConfig.getDocName(), electronicImage, filePrintRegister)) { electronicImage.setImageConfig(extendImageConfig); electronicImage.setIsSealImage(true); @@ -105,23 +105,18 @@ keyData = (String) metaData.get(layerKeys[1]) + ","; } } - keyData = keyData.substring(0, keyData.length() - 1); + if(StringUtils.isNotEmpty(keyData)){ + keyData = keyData.substring(0, keyData.length() - 1); + } electronicImage.setElectronicSealImageUrls(keyData); //放入待下载的文件集合 filePrintRegister.getBeDownloadedFileNames().add(keyData); return true; } } - }else if(StringUtils.isEmpty(docName)){ + } else { //处理一般关键字和单个打印图片 if (metaDataMap.containsKey(fileName) && ObjectUtils.isNotEmpty(metaDataMap.get(fileName))) { - electronicImage.setElectronicSealImageUrls((String) metaDataMap.get(fileName)); - filePrintRegister.getBeDownloadedFileNames().add((String) metaDataMap.get(fileName)); - return true; - } - } - else { //处理一般关键字和单个打印图片 - if (metaDataMap.containsKey(fileName) && ObjectUtils.isNotEmpty(metaDataMap.get(fileName))) { - electronicImage.setElectronicSealImageUrl(electronicImage.getElectronicSealImageUrl() + (String) metaDataMap.get(fileName)); + electronicImage.setElectronicSealImageUrl(electronicImage.getSealImageUrlsDir() + (String) metaDataMap.get(fileName)); filePrintRegister.getBeDownloadedFileNames().add((String) metaDataMap.get(fileName)); return true; }