diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 66b9724..55de92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -79,7 +79,10 @@ @ApiOperation("设备批量改变状态") @PostMapping("/status/batchChange") - public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO) { + public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); return ReturnUtil.success(bizDispatchService.statusBatchChange(deviceBatchStatusChangeDTO)); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 66b9724..55de92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -79,7 +79,10 @@ @ApiOperation("设备批量改变状态") @PostMapping("/status/batchChange") - public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO) { + public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); return ReturnUtil.success(bizDispatchService.statusBatchChange(deviceBatchStatusChangeDTO)); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index ace84fc..07fd394 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -12,7 +12,7 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileNameById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); @Select(" SELECT minio_file_name " + " FROM system_sign " + diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 66b9724..55de92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -79,7 +79,10 @@ @ApiOperation("设备批量改变状态") @PostMapping("/status/batchChange") - public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO) { + public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); return ReturnUtil.success(bizDispatchService.statusBatchChange(deviceBatchStatusChangeDTO)); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index ace84fc..07fd394 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -12,7 +12,7 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileNameById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); @Select(" SELECT minio_file_name " + " FROM system_sign " + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java index 278951a..96b427c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java @@ -1,32 +1,15 @@ package com.casic.missiles.dto.business.certificate; +import lombok.Builder; import lombok.Data; /** * 电子签名 */ @Data +@Builder public class ElectronicImage { - /** - * 默认电子签章值 - */ { - //关键字索引 (-1) - keyWordIndex = -1; - /** - * 该电子签章位置是关键字的相对位置 - */ - // 电子印章水平位置 - horizontal = 300f; - // 电子印章垂直位置 - vertical = -55f; - // 电子印章宽度 - stampWidth = 120f; - // 电子印章高度 - stampHeight = 120f; - //照片透明度设置 - diaphaneity = 150f; - } /** diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 66b9724..55de92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -79,7 +79,10 @@ @ApiOperation("设备批量改变状态") @PostMapping("/status/batchChange") - public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO) { + public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); return ReturnUtil.success(bizDispatchService.statusBatchChange(deviceBatchStatusChangeDTO)); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index ace84fc..07fd394 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -12,7 +12,7 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileNameById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); @Select(" SELECT minio_file_name " + " FROM system_sign " + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java index 278951a..96b427c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java @@ -1,32 +1,15 @@ package com.casic.missiles.dto.business.certificate; +import lombok.Builder; import lombok.Data; /** * 电子签名 */ @Data +@Builder public class ElectronicImage { - /** - * 默认电子签章值 - */ { - //关键字索引 (-1) - keyWordIndex = -1; - /** - * 该电子签章位置是关键字的相对位置 - */ - // 电子印章水平位置 - horizontal = 300f; - // 电子印章垂直位置 - vertical = -55f; - // 电子印章宽度 - stampWidth = 120f; - // 电子印章高度 - stampHeight = 120f; - //照片透明度设置 - diaphaneity = 150f; - } /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java index 8362c94..6b5601c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.Valid; import java.util.List; /** @@ -13,6 +14,7 @@ @ApiModel("设备批量更新状态请求参数") public class DeviceBatchStatusChangeDTO { + @Valid @ApiModelProperty(value = "委托书样品关系列表", dataType = "list") private List deviceStatusChangeDTOS; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 66b9724..55de92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -79,7 +79,10 @@ @ApiOperation("设备批量改变状态") @PostMapping("/status/batchChange") - public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO) { + public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); return ReturnUtil.success(bizDispatchService.statusBatchChange(deviceBatchStatusChangeDTO)); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index ace84fc..07fd394 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -12,7 +12,7 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileNameById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); @Select(" SELECT minio_file_name " + " FROM system_sign " + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java index 278951a..96b427c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java @@ -1,32 +1,15 @@ package com.casic.missiles.dto.business.certificate; +import lombok.Builder; import lombok.Data; /** * 电子签名 */ @Data +@Builder public class ElectronicImage { - /** - * 默认电子签章值 - */ { - //关键字索引 (-1) - keyWordIndex = -1; - /** - * 该电子签章位置是关键字的相对位置 - */ - // 电子印章水平位置 - horizontal = 300f; - // 电子印章垂直位置 - vertical = -55f; - // 电子印章宽度 - stampWidth = 120f; - // 电子印章高度 - stampHeight = 120f; - //照片透明度设置 - diaphaneity = 150f; - } /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java index 8362c94..6b5601c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.Valid; import java.util.List; /** @@ -13,6 +14,7 @@ @ApiModel("设备批量更新状态请求参数") public class DeviceBatchStatusChangeDTO { + @Valid @ApiModelProperty(value = "委托书样品关系列表", dataType = "list") private List deviceStatusChangeDTOS; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java index 30b79d2..91e49fe 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java @@ -4,13 +4,17 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; + @ApiModel("设备接收") @Data public class DeviceStatusChangeDTO { + @NotNull @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; + @NotNull @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 66b9724..55de92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -79,7 +79,10 @@ @ApiOperation("设备批量改变状态") @PostMapping("/status/batchChange") - public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO) { + public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); return ReturnUtil.success(bizDispatchService.statusBatchChange(deviceBatchStatusChangeDTO)); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index ace84fc..07fd394 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -12,7 +12,7 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileNameById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); @Select(" SELECT minio_file_name " + " FROM system_sign " + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java index 278951a..96b427c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java @@ -1,32 +1,15 @@ package com.casic.missiles.dto.business.certificate; +import lombok.Builder; import lombok.Data; /** * 电子签名 */ @Data +@Builder public class ElectronicImage { - /** - * 默认电子签章值 - */ { - //关键字索引 (-1) - keyWordIndex = -1; - /** - * 该电子签章位置是关键字的相对位置 - */ - // 电子印章水平位置 - horizontal = 300f; - // 电子印章垂直位置 - vertical = -55f; - // 电子印章宽度 - stampWidth = 120f; - // 电子印章高度 - stampHeight = 120f; - //照片透明度设置 - diaphaneity = 150f; - } /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java index 8362c94..6b5601c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.Valid; import java.util.List; /** @@ -13,6 +14,7 @@ @ApiModel("设备批量更新状态请求参数") public class DeviceBatchStatusChangeDTO { + @Valid @ApiModelProperty(value = "委托书样品关系列表", dataType = "list") private List deviceStatusChangeDTOS; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java index 30b79d2..91e49fe 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java @@ -4,13 +4,17 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; + @ApiModel("设备接收") @Data public class DeviceStatusChangeDTO { + @NotNull @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; + @NotNull @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java index bb611b9..6077b9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java @@ -17,6 +17,7 @@ import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; +import java.util.ArrayList; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -54,14 +55,15 @@ // } //按关键字进行分组 Map> sameKeyWordSealMaps = filePrintRegister.getElectronicImageList().stream() - .filter(electronicImage->StringUtils.isNotEmpty(electronicImage.getKeyWord())) + .filter(electronicImage -> StringUtils.isNotEmpty(electronicImage.getKeyWord())) .collect( - Collectors.groupingBy(ElectronicImage::getKeyWord) - ); + Collectors.groupingBy(ElectronicImage::getKeyWord) + ); // 初始化world,pdf名称参数 String[] filePrintType = filePrintRegister.getTemplatePath().split("\\."); String wordNewUrl = filePrintRegister.getTemplatePath(); String pdfNewUrl = filePrintType[0] + "." + "pdf"; + //3、根据关键字进行添加签章和签字 for (Map.Entry> entry : sameKeyWordSealMaps.entrySet()) { List electronicSeals = entry.getValue(); @@ -69,12 +71,12 @@ } //获取没有关键字的图片,即绝对路径的图片 - List absolutePathImageList= filePrintRegister.getElectronicImageList().stream() - .filter(electronicImage->StringUtils.isEmpty(electronicImage.getKeyWord())) + List absolutePathImageList = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isEmpty(electronicImage.getKeyWord())) .collect(Collectors.toList()); //根据设置的绝对路径进行图片的填充 - for(ElectronicImage absolutePathImage:absolutePathImageList){ - addAbsolutePathStamp(wordOldUrl, wordNewUrl,absolutePathImage); + for (ElectronicImage absolutePathImage : absolutePathImageList) { + addAbsolutePathStamp(wordOldUrl, wordNewUrl, absolutePathImage); } // 4、将新word转化为pdf文件 wordToPdf(wordNewUrl, pdfNewUrl); @@ -147,10 +149,10 @@ //水平位置 docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); //垂直位置 - docPicture.setVerticalPosition(electronicSeal.getStampHeight()); + docPicture.setVerticalPosition(electronicSeal.getVertical()); //设置电子章大小 docPicture.setWidth(electronicSeal.getStampWidth()); - docPicture.setHeight(electronicSeal.getDiaphaneity()); + docPicture.setHeight(electronicSeal.getStampHeight()); } //保存添加电子章的Word文档 document.saveToFile(wordNewUrl); @@ -239,8 +241,8 @@ * 1、自定义位置添加电子印章 * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 * - * @param wordOldUrl word文件路径 - * @param wordNewUrl 新word文件路径 + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 */ private static void addAbsolutePathStamp(String wordOldUrl, String wordNewUrl, ElectronicImage absolutePathImage) { // 加载文档 @@ -423,57 +425,76 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "http://111.198.10.15:21408/test"; - String localPathUrl = "D:\\cz\\203\\file"; + String pathUrl = "D:\\tmp\\1640635147069263874"; + String localPathUrl = "D:\\tmp\\1640635147069263874"; - //文件与BufferedImage间的转换 - //读取图片 - BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); - BufferedImage bii = convertLayout(bi, alpha); - //生成透明背景图片 - saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); - - //文件与BufferedImage间的转换 - //读取图片 - BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); - BufferedImage b0 = convertLayout(b, alpha); - //生成透明背景图片 - saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - -// // 目标文件地址 -// String wordOldUrl = pathUrl + "/力学监测记录模板_1670813172669.docx"; +// //文件与BufferedImage间的转换 +// //读取图片 +// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +// BufferedImage bii = convertLayout(bi, alpha); +// //生成透明背景图片 +// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); // -// // 添加电子印章后文件存放地址 -// String wordNewUrl = localPathUrl + "\\tem.docx"; -// //WORD转PDF存放位置 -// String pdfNewUrl = localPathUrl + "\\tem.pdf"; -// //电子印章图片地址 -// String stampImgUrl = localPathUrl + "\\sign3.png"; -// //电子签名图片地址 -// String stampImgUrl1 = localPathUrl + "\\name3.png"; -// // word文档内容关键字 -// String keyWord = "盖章"; -// StampUtils addStampUtils = new StampUtils(); -// List electronicSealList = new ArrayList(11); -// int count = 0; -// for (; count < 2; count++) { -// ElectronicImage electronicSeal = new ElectronicImage(); -// String tempStampImgUrl = count == 0 ? stampImgUrl : stampImgUrl1; -// electronicSeal.setElectronicSealImageUrl(tempStampImgUrl); -// electronicSeal.setMereFlag(count == 1); -// electronicSeal.setKeyWord(keyWord); -// electronicSeal.setKeyWordIndex(keyWordIndex); -// electronicSeal.setHorizontal(horizontal); -// electronicSeal.setVertical(vertical); -// electronicSeal.setStampHeight(stampHeight); -// electronicSeal.setStampWidth(stampWidth); -// electronicSealList.add(electronicSeal); -// } -// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); -// // 将新word转化为pdf文件 -// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// //文件与BufferedImage间的转换 +// //读取图片 +// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +// BufferedImage b0 = convertLayout(b, alpha); +// //生成透明背景图片 +// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); + + + // 目标文件地址 + String wordOldUrl = pathUrl + "\\测试.docx"; + // 添加电子印章后文件存放地址 + String wordNewUrl = localPathUrl + "\\测试.docx"; + //WORD转PDF存放位置 + String pdfNewUrl = localPathUrl + "\\tem.pdf"; + //电子印章图片地址 + String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; + //电子签名图片地址 + String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; + // word文档内容关键字 + String keyWord = "批准人"; + FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); + List electronicSealList = new ArrayList(11); + int count = 0; + ElectronicImage electronicImage=defaultElectronicSignName("批准人"); + electronicImage.setElectronicSealImageUrl(stampNameImgUr); + electronicSealList.add(electronicImage); + addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); + // 将新word转化为pdf文件 + electronicSealList = new ArrayList(11); + electronicImage=defaultElectronicSignSeal("发证单位"); + electronicImage.setElectronicSealImageUrl(stampSealImgUrl); + electronicSealList.add(electronicImage); + addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); + // 将新word转化为pdf文件 + addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); } + protected static ElectronicImage defaultElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(80f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } } \ No newline at end of file diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 66b9724..55de92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -79,7 +79,10 @@ @ApiOperation("设备批量改变状态") @PostMapping("/status/batchChange") - public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO) { + public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); return ReturnUtil.success(bizDispatchService.statusBatchChange(deviceBatchStatusChangeDTO)); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index ace84fc..07fd394 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -12,7 +12,7 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileNameById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); @Select(" SELECT minio_file_name " + " FROM system_sign " + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java index 278951a..96b427c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java @@ -1,32 +1,15 @@ package com.casic.missiles.dto.business.certificate; +import lombok.Builder; import lombok.Data; /** * 电子签名 */ @Data +@Builder public class ElectronicImage { - /** - * 默认电子签章值 - */ { - //关键字索引 (-1) - keyWordIndex = -1; - /** - * 该电子签章位置是关键字的相对位置 - */ - // 电子印章水平位置 - horizontal = 300f; - // 电子印章垂直位置 - vertical = -55f; - // 电子印章宽度 - stampWidth = 120f; - // 电子印章高度 - stampHeight = 120f; - //照片透明度设置 - diaphaneity = 150f; - } /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java index 8362c94..6b5601c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.Valid; import java.util.List; /** @@ -13,6 +14,7 @@ @ApiModel("设备批量更新状态请求参数") public class DeviceBatchStatusChangeDTO { + @Valid @ApiModelProperty(value = "委托书样品关系列表", dataType = "list") private List deviceStatusChangeDTOS; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java index 30b79d2..91e49fe 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java @@ -4,13 +4,17 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; + @ApiModel("设备接收") @Data public class DeviceStatusChangeDTO { + @NotNull @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; + @NotNull @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java index bb611b9..6077b9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java @@ -17,6 +17,7 @@ import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; +import java.util.ArrayList; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -54,14 +55,15 @@ // } //按关键字进行分组 Map> sameKeyWordSealMaps = filePrintRegister.getElectronicImageList().stream() - .filter(electronicImage->StringUtils.isNotEmpty(electronicImage.getKeyWord())) + .filter(electronicImage -> StringUtils.isNotEmpty(electronicImage.getKeyWord())) .collect( - Collectors.groupingBy(ElectronicImage::getKeyWord) - ); + Collectors.groupingBy(ElectronicImage::getKeyWord) + ); // 初始化world,pdf名称参数 String[] filePrintType = filePrintRegister.getTemplatePath().split("\\."); String wordNewUrl = filePrintRegister.getTemplatePath(); String pdfNewUrl = filePrintType[0] + "." + "pdf"; + //3、根据关键字进行添加签章和签字 for (Map.Entry> entry : sameKeyWordSealMaps.entrySet()) { List electronicSeals = entry.getValue(); @@ -69,12 +71,12 @@ } //获取没有关键字的图片,即绝对路径的图片 - List absolutePathImageList= filePrintRegister.getElectronicImageList().stream() - .filter(electronicImage->StringUtils.isEmpty(electronicImage.getKeyWord())) + List absolutePathImageList = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isEmpty(electronicImage.getKeyWord())) .collect(Collectors.toList()); //根据设置的绝对路径进行图片的填充 - for(ElectronicImage absolutePathImage:absolutePathImageList){ - addAbsolutePathStamp(wordOldUrl, wordNewUrl,absolutePathImage); + for (ElectronicImage absolutePathImage : absolutePathImageList) { + addAbsolutePathStamp(wordOldUrl, wordNewUrl, absolutePathImage); } // 4、将新word转化为pdf文件 wordToPdf(wordNewUrl, pdfNewUrl); @@ -147,10 +149,10 @@ //水平位置 docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); //垂直位置 - docPicture.setVerticalPosition(electronicSeal.getStampHeight()); + docPicture.setVerticalPosition(electronicSeal.getVertical()); //设置电子章大小 docPicture.setWidth(electronicSeal.getStampWidth()); - docPicture.setHeight(electronicSeal.getDiaphaneity()); + docPicture.setHeight(electronicSeal.getStampHeight()); } //保存添加电子章的Word文档 document.saveToFile(wordNewUrl); @@ -239,8 +241,8 @@ * 1、自定义位置添加电子印章 * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 * - * @param wordOldUrl word文件路径 - * @param wordNewUrl 新word文件路径 + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 */ private static void addAbsolutePathStamp(String wordOldUrl, String wordNewUrl, ElectronicImage absolutePathImage) { // 加载文档 @@ -423,57 +425,76 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "http://111.198.10.15:21408/test"; - String localPathUrl = "D:\\cz\\203\\file"; + String pathUrl = "D:\\tmp\\1640635147069263874"; + String localPathUrl = "D:\\tmp\\1640635147069263874"; - //文件与BufferedImage间的转换 - //读取图片 - BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); - BufferedImage bii = convertLayout(bi, alpha); - //生成透明背景图片 - saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); - - //文件与BufferedImage间的转换 - //读取图片 - BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); - BufferedImage b0 = convertLayout(b, alpha); - //生成透明背景图片 - saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - -// // 目标文件地址 -// String wordOldUrl = pathUrl + "/力学监测记录模板_1670813172669.docx"; +// //文件与BufferedImage间的转换 +// //读取图片 +// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +// BufferedImage bii = convertLayout(bi, alpha); +// //生成透明背景图片 +// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); // -// // 添加电子印章后文件存放地址 -// String wordNewUrl = localPathUrl + "\\tem.docx"; -// //WORD转PDF存放位置 -// String pdfNewUrl = localPathUrl + "\\tem.pdf"; -// //电子印章图片地址 -// String stampImgUrl = localPathUrl + "\\sign3.png"; -// //电子签名图片地址 -// String stampImgUrl1 = localPathUrl + "\\name3.png"; -// // word文档内容关键字 -// String keyWord = "盖章"; -// StampUtils addStampUtils = new StampUtils(); -// List electronicSealList = new ArrayList(11); -// int count = 0; -// for (; count < 2; count++) { -// ElectronicImage electronicSeal = new ElectronicImage(); -// String tempStampImgUrl = count == 0 ? stampImgUrl : stampImgUrl1; -// electronicSeal.setElectronicSealImageUrl(tempStampImgUrl); -// electronicSeal.setMereFlag(count == 1); -// electronicSeal.setKeyWord(keyWord); -// electronicSeal.setKeyWordIndex(keyWordIndex); -// electronicSeal.setHorizontal(horizontal); -// electronicSeal.setVertical(vertical); -// electronicSeal.setStampHeight(stampHeight); -// electronicSeal.setStampWidth(stampWidth); -// electronicSealList.add(electronicSeal); -// } -// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); -// // 将新word转化为pdf文件 -// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// //文件与BufferedImage间的转换 +// //读取图片 +// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +// BufferedImage b0 = convertLayout(b, alpha); +// //生成透明背景图片 +// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); + + + // 目标文件地址 + String wordOldUrl = pathUrl + "\\测试.docx"; + // 添加电子印章后文件存放地址 + String wordNewUrl = localPathUrl + "\\测试.docx"; + //WORD转PDF存放位置 + String pdfNewUrl = localPathUrl + "\\tem.pdf"; + //电子印章图片地址 + String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; + //电子签名图片地址 + String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; + // word文档内容关键字 + String keyWord = "批准人"; + FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); + List electronicSealList = new ArrayList(11); + int count = 0; + ElectronicImage electronicImage=defaultElectronicSignName("批准人"); + electronicImage.setElectronicSealImageUrl(stampNameImgUr); + electronicSealList.add(electronicImage); + addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); + // 将新word转化为pdf文件 + electronicSealList = new ArrayList(11); + electronicImage=defaultElectronicSignSeal("发证单位"); + electronicImage.setElectronicSealImageUrl(stampSealImgUrl); + electronicSealList.add(electronicImage); + addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); + // 将新word转化为pdf文件 + addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); } + protected static ElectronicImage defaultElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(80f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } } \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java index 6abd3af..4545881 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java @@ -16,7 +16,10 @@ import javax.annotation.Resource; import java.util.*; - +/** + * @author cz + * @date 2023-03-10 + */ public class PrintFileDataSupport { @Autowired @@ -50,7 +53,7 @@ */ protected void initialization(FilePrintRegister filePrintRegister, String templateFileDir, BusinessCertificateReport certificateReport) { templateFileDir = templateFileDir + certificateReport.getId() + "\\"; - String fileName = fileRegisterMapper.getSignFileNameById(certificateReport.getTemplateId(), "system_template"); + String fileName = fileRegisterMapper.getSignFileSealById(certificateReport.getTemplateId(), "system_template"); filePrintRegister.setFileName(fileName); filePrintRegister.setTemDir(templateFileDir); filePrintRegister.setTemplatePath(templateFileDir + fileName); @@ -64,8 +67,8 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList=Arrays.asList("发起人","审批中","审批完成"); - customizedSignNames=Arrays.asList("发起人","核验人","批准人"); + keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } /** @@ -74,7 +77,7 @@ protected List customizedSignNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { List electronicImageList = new ArrayList<>(); for (int i = 0; i < keyParamList.size(); i++) { - if (approvalLogMap.containsKey(keyParamList.get(i))) { + if (!approvalLogMap.containsKey(keyParamList.get(i))) { continue; } final String customizedSignName = customizedSignNames.get(i); @@ -84,8 +87,11 @@ approvalLog -> { ElectronicImage electronicImage = defaultElectronicSignName(); String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); - electronicImage.setElectronicSealImageUrl(signFileName); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 filePrintRegister.getBeDownloadedFileNames().add(signFileName); + //设置关键字 electronicImage.setKeyWord(customizedSignName); electronicImageList.add(electronicImage); } @@ -99,8 +105,12 @@ * 默认电子签名的图片设置,允许重写 */ protected ElectronicImage defaultElectronicSignName() { - ElectronicImage electronicImage = new ElectronicImage(); - electronicImage.setHorizontal(200f); + ElectronicImage electronicImage = ElectronicImage.builder() + .vertical(0f) + .horizontal(20f) + .stampHeight(20f) + .stampWidth(40f) + .build(); return electronicImage; } @@ -108,7 +118,14 @@ * 默认电子签章的图片设置,允许重写 */ protected ElectronicImage defaultElectronicSignSeal() { - ElectronicImage electronicImage = new ElectronicImage(); + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .vertical(-55f) + .horizontal(300f) + .stampHeight(120f) + .stampWidth(120f) + .diaphaneity(150f) + .build(); return electronicImage; } @@ -119,10 +136,14 @@ * @param keyWord 关键字 * @return */ - protected ElectronicImage doCreateElectronicSignSeal(Long electronicSealId, String keyWord) { + protected ElectronicImage doCreateElectronicSignSeal(Long electronicSealId, String keyWord, FilePrintRegister filePrintRegister) { ElectronicImage electronicImage = defaultElectronicSignSeal(); - String electronicSealName = fileRegisterMapper.getSignFileNameById(electronicSealId, "system_sign"); - electronicImage.setElectronicSealImageUrl(electronicSealName); + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + //设置关键字 electronicImage.setKeyWord(keyWord); return electronicImage; } @@ -134,6 +155,7 @@ Map params = new HashMap<>(); params.put("customerName", businessOrder.getCustomerName()); params.put("customerAddress", businessOrder.getCustomerAddress()); + params.put("sampleModel", customerSampleInfo.getSampleModel()); params.put("sampleNo", customerSampleInfo.getSampleNo()); params.put("sampleName", customerSampleInfo.getSampleName()); params.put("manufacturingNo", customerSampleInfo.getManufacturingNo()); @@ -144,6 +166,4 @@ } - - } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 66b9724..55de92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -79,7 +79,10 @@ @ApiOperation("设备批量改变状态") @PostMapping("/status/batchChange") - public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO) { + public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); return ReturnUtil.success(bizDispatchService.statusBatchChange(deviceBatchStatusChangeDTO)); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index ace84fc..07fd394 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -12,7 +12,7 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileNameById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); @Select(" SELECT minio_file_name " + " FROM system_sign " + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java index 278951a..96b427c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java @@ -1,32 +1,15 @@ package com.casic.missiles.dto.business.certificate; +import lombok.Builder; import lombok.Data; /** * 电子签名 */ @Data +@Builder public class ElectronicImage { - /** - * 默认电子签章值 - */ { - //关键字索引 (-1) - keyWordIndex = -1; - /** - * 该电子签章位置是关键字的相对位置 - */ - // 电子印章水平位置 - horizontal = 300f; - // 电子印章垂直位置 - vertical = -55f; - // 电子印章宽度 - stampWidth = 120f; - // 电子印章高度 - stampHeight = 120f; - //照片透明度设置 - diaphaneity = 150f; - } /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java index 8362c94..6b5601c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.Valid; import java.util.List; /** @@ -13,6 +14,7 @@ @ApiModel("设备批量更新状态请求参数") public class DeviceBatchStatusChangeDTO { + @Valid @ApiModelProperty(value = "委托书样品关系列表", dataType = "list") private List deviceStatusChangeDTOS; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java index 30b79d2..91e49fe 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java @@ -4,13 +4,17 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; + @ApiModel("设备接收") @Data public class DeviceStatusChangeDTO { + @NotNull @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; + @NotNull @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java index bb611b9..6077b9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java @@ -17,6 +17,7 @@ import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; +import java.util.ArrayList; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -54,14 +55,15 @@ // } //按关键字进行分组 Map> sameKeyWordSealMaps = filePrintRegister.getElectronicImageList().stream() - .filter(electronicImage->StringUtils.isNotEmpty(electronicImage.getKeyWord())) + .filter(electronicImage -> StringUtils.isNotEmpty(electronicImage.getKeyWord())) .collect( - Collectors.groupingBy(ElectronicImage::getKeyWord) - ); + Collectors.groupingBy(ElectronicImage::getKeyWord) + ); // 初始化world,pdf名称参数 String[] filePrintType = filePrintRegister.getTemplatePath().split("\\."); String wordNewUrl = filePrintRegister.getTemplatePath(); String pdfNewUrl = filePrintType[0] + "." + "pdf"; + //3、根据关键字进行添加签章和签字 for (Map.Entry> entry : sameKeyWordSealMaps.entrySet()) { List electronicSeals = entry.getValue(); @@ -69,12 +71,12 @@ } //获取没有关键字的图片,即绝对路径的图片 - List absolutePathImageList= filePrintRegister.getElectronicImageList().stream() - .filter(electronicImage->StringUtils.isEmpty(electronicImage.getKeyWord())) + List absolutePathImageList = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isEmpty(electronicImage.getKeyWord())) .collect(Collectors.toList()); //根据设置的绝对路径进行图片的填充 - for(ElectronicImage absolutePathImage:absolutePathImageList){ - addAbsolutePathStamp(wordOldUrl, wordNewUrl,absolutePathImage); + for (ElectronicImage absolutePathImage : absolutePathImageList) { + addAbsolutePathStamp(wordOldUrl, wordNewUrl, absolutePathImage); } // 4、将新word转化为pdf文件 wordToPdf(wordNewUrl, pdfNewUrl); @@ -147,10 +149,10 @@ //水平位置 docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); //垂直位置 - docPicture.setVerticalPosition(electronicSeal.getStampHeight()); + docPicture.setVerticalPosition(electronicSeal.getVertical()); //设置电子章大小 docPicture.setWidth(electronicSeal.getStampWidth()); - docPicture.setHeight(electronicSeal.getDiaphaneity()); + docPicture.setHeight(electronicSeal.getStampHeight()); } //保存添加电子章的Word文档 document.saveToFile(wordNewUrl); @@ -239,8 +241,8 @@ * 1、自定义位置添加电子印章 * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 * - * @param wordOldUrl word文件路径 - * @param wordNewUrl 新word文件路径 + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 */ private static void addAbsolutePathStamp(String wordOldUrl, String wordNewUrl, ElectronicImage absolutePathImage) { // 加载文档 @@ -423,57 +425,76 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "http://111.198.10.15:21408/test"; - String localPathUrl = "D:\\cz\\203\\file"; + String pathUrl = "D:\\tmp\\1640635147069263874"; + String localPathUrl = "D:\\tmp\\1640635147069263874"; - //文件与BufferedImage间的转换 - //读取图片 - BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); - BufferedImage bii = convertLayout(bi, alpha); - //生成透明背景图片 - saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); - - //文件与BufferedImage间的转换 - //读取图片 - BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); - BufferedImage b0 = convertLayout(b, alpha); - //生成透明背景图片 - saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - -// // 目标文件地址 -// String wordOldUrl = pathUrl + "/力学监测记录模板_1670813172669.docx"; +// //文件与BufferedImage间的转换 +// //读取图片 +// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +// BufferedImage bii = convertLayout(bi, alpha); +// //生成透明背景图片 +// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); // -// // 添加电子印章后文件存放地址 -// String wordNewUrl = localPathUrl + "\\tem.docx"; -// //WORD转PDF存放位置 -// String pdfNewUrl = localPathUrl + "\\tem.pdf"; -// //电子印章图片地址 -// String stampImgUrl = localPathUrl + "\\sign3.png"; -// //电子签名图片地址 -// String stampImgUrl1 = localPathUrl + "\\name3.png"; -// // word文档内容关键字 -// String keyWord = "盖章"; -// StampUtils addStampUtils = new StampUtils(); -// List electronicSealList = new ArrayList(11); -// int count = 0; -// for (; count < 2; count++) { -// ElectronicImage electronicSeal = new ElectronicImage(); -// String tempStampImgUrl = count == 0 ? stampImgUrl : stampImgUrl1; -// electronicSeal.setElectronicSealImageUrl(tempStampImgUrl); -// electronicSeal.setMereFlag(count == 1); -// electronicSeal.setKeyWord(keyWord); -// electronicSeal.setKeyWordIndex(keyWordIndex); -// electronicSeal.setHorizontal(horizontal); -// electronicSeal.setVertical(vertical); -// electronicSeal.setStampHeight(stampHeight); -// electronicSeal.setStampWidth(stampWidth); -// electronicSealList.add(electronicSeal); -// } -// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); -// // 将新word转化为pdf文件 -// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// //文件与BufferedImage间的转换 +// //读取图片 +// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +// BufferedImage b0 = convertLayout(b, alpha); +// //生成透明背景图片 +// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); + + + // 目标文件地址 + String wordOldUrl = pathUrl + "\\测试.docx"; + // 添加电子印章后文件存放地址 + String wordNewUrl = localPathUrl + "\\测试.docx"; + //WORD转PDF存放位置 + String pdfNewUrl = localPathUrl + "\\tem.pdf"; + //电子印章图片地址 + String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; + //电子签名图片地址 + String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; + // word文档内容关键字 + String keyWord = "批准人"; + FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); + List electronicSealList = new ArrayList(11); + int count = 0; + ElectronicImage electronicImage=defaultElectronicSignName("批准人"); + electronicImage.setElectronicSealImageUrl(stampNameImgUr); + electronicSealList.add(electronicImage); + addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); + // 将新word转化为pdf文件 + electronicSealList = new ArrayList(11); + electronicImage=defaultElectronicSignSeal("发证单位"); + electronicImage.setElectronicSealImageUrl(stampSealImgUrl); + electronicSealList.add(electronicImage); + addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); + // 将新word转化为pdf文件 + addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); } + protected static ElectronicImage defaultElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(80f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } } \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java index 6abd3af..4545881 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java @@ -16,7 +16,10 @@ import javax.annotation.Resource; import java.util.*; - +/** + * @author cz + * @date 2023-03-10 + */ public class PrintFileDataSupport { @Autowired @@ -50,7 +53,7 @@ */ protected void initialization(FilePrintRegister filePrintRegister, String templateFileDir, BusinessCertificateReport certificateReport) { templateFileDir = templateFileDir + certificateReport.getId() + "\\"; - String fileName = fileRegisterMapper.getSignFileNameById(certificateReport.getTemplateId(), "system_template"); + String fileName = fileRegisterMapper.getSignFileSealById(certificateReport.getTemplateId(), "system_template"); filePrintRegister.setFileName(fileName); filePrintRegister.setTemDir(templateFileDir); filePrintRegister.setTemplatePath(templateFileDir + fileName); @@ -64,8 +67,8 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList=Arrays.asList("发起人","审批中","审批完成"); - customizedSignNames=Arrays.asList("发起人","核验人","批准人"); + keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } /** @@ -74,7 +77,7 @@ protected List customizedSignNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { List electronicImageList = new ArrayList<>(); for (int i = 0; i < keyParamList.size(); i++) { - if (approvalLogMap.containsKey(keyParamList.get(i))) { + if (!approvalLogMap.containsKey(keyParamList.get(i))) { continue; } final String customizedSignName = customizedSignNames.get(i); @@ -84,8 +87,11 @@ approvalLog -> { ElectronicImage electronicImage = defaultElectronicSignName(); String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); - electronicImage.setElectronicSealImageUrl(signFileName); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 filePrintRegister.getBeDownloadedFileNames().add(signFileName); + //设置关键字 electronicImage.setKeyWord(customizedSignName); electronicImageList.add(electronicImage); } @@ -99,8 +105,12 @@ * 默认电子签名的图片设置,允许重写 */ protected ElectronicImage defaultElectronicSignName() { - ElectronicImage electronicImage = new ElectronicImage(); - electronicImage.setHorizontal(200f); + ElectronicImage electronicImage = ElectronicImage.builder() + .vertical(0f) + .horizontal(20f) + .stampHeight(20f) + .stampWidth(40f) + .build(); return electronicImage; } @@ -108,7 +118,14 @@ * 默认电子签章的图片设置,允许重写 */ protected ElectronicImage defaultElectronicSignSeal() { - ElectronicImage electronicImage = new ElectronicImage(); + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .vertical(-55f) + .horizontal(300f) + .stampHeight(120f) + .stampWidth(120f) + .diaphaneity(150f) + .build(); return electronicImage; } @@ -119,10 +136,14 @@ * @param keyWord 关键字 * @return */ - protected ElectronicImage doCreateElectronicSignSeal(Long electronicSealId, String keyWord) { + protected ElectronicImage doCreateElectronicSignSeal(Long electronicSealId, String keyWord, FilePrintRegister filePrintRegister) { ElectronicImage electronicImage = defaultElectronicSignSeal(); - String electronicSealName = fileRegisterMapper.getSignFileNameById(electronicSealId, "system_sign"); - electronicImage.setElectronicSealImageUrl(electronicSealName); + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + //设置关键字 electronicImage.setKeyWord(keyWord); return electronicImage; } @@ -134,6 +155,7 @@ Map params = new HashMap<>(); params.put("customerName", businessOrder.getCustomerName()); params.put("customerAddress", businessOrder.getCustomerAddress()); + params.put("sampleModel", customerSampleInfo.getSampleModel()); params.put("sampleNo", customerSampleInfo.getSampleNo()); params.put("sampleName", customerSampleInfo.getSampleName()); params.put("manufacturingNo", customerSampleInfo.getManufacturingNo()); @@ -144,6 +166,4 @@ } - - } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java index 7dc234d..22074aa 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java @@ -19,6 +19,10 @@ import java.io.*; import java.util.Objects; +/** + * @author cz + * @date 2023-03-06 + */ @Component @Slf4j public class PrintFileRegister{ @@ -62,11 +66,10 @@ for (String fileName : metaData.getBeDownloadedFileNames()) { downTemplateFile(fileName, tempLocalFileDir); } - ; //合并注册 String certificatePdfName = FilePrintRegisterUtils.filePrintGenerate(metaData); //上传到服务器 - uploadCertificate(certificatePdfName); +// uploadCertificate(certificatePdfName); //删除无效的文件 File invalidFile = new File(tempLocalFileDir); log.debug("invalid print file start delete, the file directory is {}", tempLocalFileDir); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 66b9724..55de92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -79,7 +79,10 @@ @ApiOperation("设备批量改变状态") @PostMapping("/status/batchChange") - public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO) { + public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); return ReturnUtil.success(bizDispatchService.statusBatchChange(deviceBatchStatusChangeDTO)); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index ace84fc..07fd394 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -12,7 +12,7 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileNameById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); @Select(" SELECT minio_file_name " + " FROM system_sign " + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java index 278951a..96b427c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java @@ -1,32 +1,15 @@ package com.casic.missiles.dto.business.certificate; +import lombok.Builder; import lombok.Data; /** * 电子签名 */ @Data +@Builder public class ElectronicImage { - /** - * 默认电子签章值 - */ { - //关键字索引 (-1) - keyWordIndex = -1; - /** - * 该电子签章位置是关键字的相对位置 - */ - // 电子印章水平位置 - horizontal = 300f; - // 电子印章垂直位置 - vertical = -55f; - // 电子印章宽度 - stampWidth = 120f; - // 电子印章高度 - stampHeight = 120f; - //照片透明度设置 - diaphaneity = 150f; - } /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java index 8362c94..6b5601c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.Valid; import java.util.List; /** @@ -13,6 +14,7 @@ @ApiModel("设备批量更新状态请求参数") public class DeviceBatchStatusChangeDTO { + @Valid @ApiModelProperty(value = "委托书样品关系列表", dataType = "list") private List deviceStatusChangeDTOS; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java index 30b79d2..91e49fe 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java @@ -4,13 +4,17 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; + @ApiModel("设备接收") @Data public class DeviceStatusChangeDTO { + @NotNull @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; + @NotNull @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java index bb611b9..6077b9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java @@ -17,6 +17,7 @@ import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; +import java.util.ArrayList; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -54,14 +55,15 @@ // } //按关键字进行分组 Map> sameKeyWordSealMaps = filePrintRegister.getElectronicImageList().stream() - .filter(electronicImage->StringUtils.isNotEmpty(electronicImage.getKeyWord())) + .filter(electronicImage -> StringUtils.isNotEmpty(electronicImage.getKeyWord())) .collect( - Collectors.groupingBy(ElectronicImage::getKeyWord) - ); + Collectors.groupingBy(ElectronicImage::getKeyWord) + ); // 初始化world,pdf名称参数 String[] filePrintType = filePrintRegister.getTemplatePath().split("\\."); String wordNewUrl = filePrintRegister.getTemplatePath(); String pdfNewUrl = filePrintType[0] + "." + "pdf"; + //3、根据关键字进行添加签章和签字 for (Map.Entry> entry : sameKeyWordSealMaps.entrySet()) { List electronicSeals = entry.getValue(); @@ -69,12 +71,12 @@ } //获取没有关键字的图片,即绝对路径的图片 - List absolutePathImageList= filePrintRegister.getElectronicImageList().stream() - .filter(electronicImage->StringUtils.isEmpty(electronicImage.getKeyWord())) + List absolutePathImageList = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isEmpty(electronicImage.getKeyWord())) .collect(Collectors.toList()); //根据设置的绝对路径进行图片的填充 - for(ElectronicImage absolutePathImage:absolutePathImageList){ - addAbsolutePathStamp(wordOldUrl, wordNewUrl,absolutePathImage); + for (ElectronicImage absolutePathImage : absolutePathImageList) { + addAbsolutePathStamp(wordOldUrl, wordNewUrl, absolutePathImage); } // 4、将新word转化为pdf文件 wordToPdf(wordNewUrl, pdfNewUrl); @@ -147,10 +149,10 @@ //水平位置 docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); //垂直位置 - docPicture.setVerticalPosition(electronicSeal.getStampHeight()); + docPicture.setVerticalPosition(electronicSeal.getVertical()); //设置电子章大小 docPicture.setWidth(electronicSeal.getStampWidth()); - docPicture.setHeight(electronicSeal.getDiaphaneity()); + docPicture.setHeight(electronicSeal.getStampHeight()); } //保存添加电子章的Word文档 document.saveToFile(wordNewUrl); @@ -239,8 +241,8 @@ * 1、自定义位置添加电子印章 * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 * - * @param wordOldUrl word文件路径 - * @param wordNewUrl 新word文件路径 + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 */ private static void addAbsolutePathStamp(String wordOldUrl, String wordNewUrl, ElectronicImage absolutePathImage) { // 加载文档 @@ -423,57 +425,76 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "http://111.198.10.15:21408/test"; - String localPathUrl = "D:\\cz\\203\\file"; + String pathUrl = "D:\\tmp\\1640635147069263874"; + String localPathUrl = "D:\\tmp\\1640635147069263874"; - //文件与BufferedImage间的转换 - //读取图片 - BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); - BufferedImage bii = convertLayout(bi, alpha); - //生成透明背景图片 - saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); - - //文件与BufferedImage间的转换 - //读取图片 - BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); - BufferedImage b0 = convertLayout(b, alpha); - //生成透明背景图片 - saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - -// // 目标文件地址 -// String wordOldUrl = pathUrl + "/力学监测记录模板_1670813172669.docx"; +// //文件与BufferedImage间的转换 +// //读取图片 +// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +// BufferedImage bii = convertLayout(bi, alpha); +// //生成透明背景图片 +// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); // -// // 添加电子印章后文件存放地址 -// String wordNewUrl = localPathUrl + "\\tem.docx"; -// //WORD转PDF存放位置 -// String pdfNewUrl = localPathUrl + "\\tem.pdf"; -// //电子印章图片地址 -// String stampImgUrl = localPathUrl + "\\sign3.png"; -// //电子签名图片地址 -// String stampImgUrl1 = localPathUrl + "\\name3.png"; -// // word文档内容关键字 -// String keyWord = "盖章"; -// StampUtils addStampUtils = new StampUtils(); -// List electronicSealList = new ArrayList(11); -// int count = 0; -// for (; count < 2; count++) { -// ElectronicImage electronicSeal = new ElectronicImage(); -// String tempStampImgUrl = count == 0 ? stampImgUrl : stampImgUrl1; -// electronicSeal.setElectronicSealImageUrl(tempStampImgUrl); -// electronicSeal.setMereFlag(count == 1); -// electronicSeal.setKeyWord(keyWord); -// electronicSeal.setKeyWordIndex(keyWordIndex); -// electronicSeal.setHorizontal(horizontal); -// electronicSeal.setVertical(vertical); -// electronicSeal.setStampHeight(stampHeight); -// electronicSeal.setStampWidth(stampWidth); -// electronicSealList.add(electronicSeal); -// } -// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); -// // 将新word转化为pdf文件 -// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// //文件与BufferedImage间的转换 +// //读取图片 +// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +// BufferedImage b0 = convertLayout(b, alpha); +// //生成透明背景图片 +// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); + + + // 目标文件地址 + String wordOldUrl = pathUrl + "\\测试.docx"; + // 添加电子印章后文件存放地址 + String wordNewUrl = localPathUrl + "\\测试.docx"; + //WORD转PDF存放位置 + String pdfNewUrl = localPathUrl + "\\tem.pdf"; + //电子印章图片地址 + String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; + //电子签名图片地址 + String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; + // word文档内容关键字 + String keyWord = "批准人"; + FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); + List electronicSealList = new ArrayList(11); + int count = 0; + ElectronicImage electronicImage=defaultElectronicSignName("批准人"); + electronicImage.setElectronicSealImageUrl(stampNameImgUr); + electronicSealList.add(electronicImage); + addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); + // 将新word转化为pdf文件 + electronicSealList = new ArrayList(11); + electronicImage=defaultElectronicSignSeal("发证单位"); + electronicImage.setElectronicSealImageUrl(stampSealImgUrl); + electronicSealList.add(electronicImage); + addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); + // 将新word转化为pdf文件 + addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); } + protected static ElectronicImage defaultElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(80f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } } \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java index 6abd3af..4545881 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java @@ -16,7 +16,10 @@ import javax.annotation.Resource; import java.util.*; - +/** + * @author cz + * @date 2023-03-10 + */ public class PrintFileDataSupport { @Autowired @@ -50,7 +53,7 @@ */ protected void initialization(FilePrintRegister filePrintRegister, String templateFileDir, BusinessCertificateReport certificateReport) { templateFileDir = templateFileDir + certificateReport.getId() + "\\"; - String fileName = fileRegisterMapper.getSignFileNameById(certificateReport.getTemplateId(), "system_template"); + String fileName = fileRegisterMapper.getSignFileSealById(certificateReport.getTemplateId(), "system_template"); filePrintRegister.setFileName(fileName); filePrintRegister.setTemDir(templateFileDir); filePrintRegister.setTemplatePath(templateFileDir + fileName); @@ -64,8 +67,8 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList=Arrays.asList("发起人","审批中","审批完成"); - customizedSignNames=Arrays.asList("发起人","核验人","批准人"); + keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } /** @@ -74,7 +77,7 @@ protected List customizedSignNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { List electronicImageList = new ArrayList<>(); for (int i = 0; i < keyParamList.size(); i++) { - if (approvalLogMap.containsKey(keyParamList.get(i))) { + if (!approvalLogMap.containsKey(keyParamList.get(i))) { continue; } final String customizedSignName = customizedSignNames.get(i); @@ -84,8 +87,11 @@ approvalLog -> { ElectronicImage electronicImage = defaultElectronicSignName(); String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); - electronicImage.setElectronicSealImageUrl(signFileName); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 filePrintRegister.getBeDownloadedFileNames().add(signFileName); + //设置关键字 electronicImage.setKeyWord(customizedSignName); electronicImageList.add(electronicImage); } @@ -99,8 +105,12 @@ * 默认电子签名的图片设置,允许重写 */ protected ElectronicImage defaultElectronicSignName() { - ElectronicImage electronicImage = new ElectronicImage(); - electronicImage.setHorizontal(200f); + ElectronicImage electronicImage = ElectronicImage.builder() + .vertical(0f) + .horizontal(20f) + .stampHeight(20f) + .stampWidth(40f) + .build(); return electronicImage; } @@ -108,7 +118,14 @@ * 默认电子签章的图片设置,允许重写 */ protected ElectronicImage defaultElectronicSignSeal() { - ElectronicImage electronicImage = new ElectronicImage(); + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .vertical(-55f) + .horizontal(300f) + .stampHeight(120f) + .stampWidth(120f) + .diaphaneity(150f) + .build(); return electronicImage; } @@ -119,10 +136,14 @@ * @param keyWord 关键字 * @return */ - protected ElectronicImage doCreateElectronicSignSeal(Long electronicSealId, String keyWord) { + protected ElectronicImage doCreateElectronicSignSeal(Long electronicSealId, String keyWord, FilePrintRegister filePrintRegister) { ElectronicImage electronicImage = defaultElectronicSignSeal(); - String electronicSealName = fileRegisterMapper.getSignFileNameById(electronicSealId, "system_sign"); - electronicImage.setElectronicSealImageUrl(electronicSealName); + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + //设置关键字 electronicImage.setKeyWord(keyWord); return electronicImage; } @@ -134,6 +155,7 @@ Map params = new HashMap<>(); params.put("customerName", businessOrder.getCustomerName()); params.put("customerAddress", businessOrder.getCustomerAddress()); + params.put("sampleModel", customerSampleInfo.getSampleModel()); params.put("sampleNo", customerSampleInfo.getSampleNo()); params.put("sampleName", customerSampleInfo.getSampleName()); params.put("manufacturingNo", customerSampleInfo.getManufacturingNo()); @@ -144,6 +166,4 @@ } - - } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java index 7dc234d..22074aa 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java @@ -19,6 +19,10 @@ import java.io.*; import java.util.Objects; +/** + * @author cz + * @date 2023-03-06 + */ @Component @Slf4j public class PrintFileRegister{ @@ -62,11 +66,10 @@ for (String fileName : metaData.getBeDownloadedFileNames()) { downTemplateFile(fileName, tempLocalFileDir); } - ; //合并注册 String certificatePdfName = FilePrintRegisterUtils.filePrintGenerate(metaData); //上传到服务器 - uploadCertificate(certificatePdfName); +// uploadCertificate(certificatePdfName); //删除无效的文件 File invalidFile = new File(tempLocalFileDir); log.debug("invalid print file start delete, the file directory is {}", tempLocalFileDir); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/CalibrationPrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/CalibrationPrintFileData.java index b0639ad..283473d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/CalibrationPrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/CalibrationPrintFileData.java @@ -44,7 +44,7 @@ .collect(Collectors.toMap(e -> e.get(0).getApprovalStatus(), e -> e)); customizedSignNamesParamCreator(); List electronicSignList = this.customizedSignNamesCreator(ApprovalLogMap, filePrintRegister); - electronicSignList.addAll(customizedElectronicSignSeals(metaData)); + electronicSignList.addAll(customizedElectronicSignSeals(metaData,filePrintRegister)); filePrintRegister.setElectronicImageList(electronicSignList); filePrintRegister.setParams(certificateFilePopulateParamCreator(metaData)); return filePrintRegister; @@ -56,13 +56,13 @@ * @param metaData * @return */ - private List customizedElectronicSignSeals(BusinessCertificateReport metaData) { + private List customizedElectronicSignSeals(BusinessCertificateReport metaData, FilePrintRegister filePrintRegister) { List electronicImageSeals = new ArrayList<>(); - electronicImageSeals.add(doCreateElectronicSignSeal(metaData.getSignId(), "发证单位")); + electronicImageSeals.add(doCreateElectronicSignSeal(metaData.getSignId(), "发证单位",filePrintRegister)); if (StringUtils.isNotEmpty(metaData.getApprovalSignId())) { String[] approvalSignIds = metaData.getApprovalSignId().split(","); for (String approvalSignId : approvalSignIds) { - electronicImageSeals.add(doCreateElectronicSignSeal(Long.valueOf(approvalSignId), "")); + electronicImageSeals.add(doCreateElectronicSignSeal(Long.valueOf(approvalSignId), "",filePrintRegister)); } } return electronicImageSeals; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 66b9724..55de92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -79,7 +79,10 @@ @ApiOperation("设备批量改变状态") @PostMapping("/status/batchChange") - public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO) { + public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); return ReturnUtil.success(bizDispatchService.statusBatchChange(deviceBatchStatusChangeDTO)); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index ace84fc..07fd394 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -12,7 +12,7 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileNameById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); @Select(" SELECT minio_file_name " + " FROM system_sign " + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java index 278951a..96b427c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java @@ -1,32 +1,15 @@ package com.casic.missiles.dto.business.certificate; +import lombok.Builder; import lombok.Data; /** * 电子签名 */ @Data +@Builder public class ElectronicImage { - /** - * 默认电子签章值 - */ { - //关键字索引 (-1) - keyWordIndex = -1; - /** - * 该电子签章位置是关键字的相对位置 - */ - // 电子印章水平位置 - horizontal = 300f; - // 电子印章垂直位置 - vertical = -55f; - // 电子印章宽度 - stampWidth = 120f; - // 电子印章高度 - stampHeight = 120f; - //照片透明度设置 - diaphaneity = 150f; - } /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java index 8362c94..6b5601c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.Valid; import java.util.List; /** @@ -13,6 +14,7 @@ @ApiModel("设备批量更新状态请求参数") public class DeviceBatchStatusChangeDTO { + @Valid @ApiModelProperty(value = "委托书样品关系列表", dataType = "list") private List deviceStatusChangeDTOS; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java index 30b79d2..91e49fe 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java @@ -4,13 +4,17 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; + @ApiModel("设备接收") @Data public class DeviceStatusChangeDTO { + @NotNull @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; + @NotNull @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java index bb611b9..6077b9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java @@ -17,6 +17,7 @@ import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; +import java.util.ArrayList; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -54,14 +55,15 @@ // } //按关键字进行分组 Map> sameKeyWordSealMaps = filePrintRegister.getElectronicImageList().stream() - .filter(electronicImage->StringUtils.isNotEmpty(electronicImage.getKeyWord())) + .filter(electronicImage -> StringUtils.isNotEmpty(electronicImage.getKeyWord())) .collect( - Collectors.groupingBy(ElectronicImage::getKeyWord) - ); + Collectors.groupingBy(ElectronicImage::getKeyWord) + ); // 初始化world,pdf名称参数 String[] filePrintType = filePrintRegister.getTemplatePath().split("\\."); String wordNewUrl = filePrintRegister.getTemplatePath(); String pdfNewUrl = filePrintType[0] + "." + "pdf"; + //3、根据关键字进行添加签章和签字 for (Map.Entry> entry : sameKeyWordSealMaps.entrySet()) { List electronicSeals = entry.getValue(); @@ -69,12 +71,12 @@ } //获取没有关键字的图片,即绝对路径的图片 - List absolutePathImageList= filePrintRegister.getElectronicImageList().stream() - .filter(electronicImage->StringUtils.isEmpty(electronicImage.getKeyWord())) + List absolutePathImageList = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isEmpty(electronicImage.getKeyWord())) .collect(Collectors.toList()); //根据设置的绝对路径进行图片的填充 - for(ElectronicImage absolutePathImage:absolutePathImageList){ - addAbsolutePathStamp(wordOldUrl, wordNewUrl,absolutePathImage); + for (ElectronicImage absolutePathImage : absolutePathImageList) { + addAbsolutePathStamp(wordOldUrl, wordNewUrl, absolutePathImage); } // 4、将新word转化为pdf文件 wordToPdf(wordNewUrl, pdfNewUrl); @@ -147,10 +149,10 @@ //水平位置 docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); //垂直位置 - docPicture.setVerticalPosition(electronicSeal.getStampHeight()); + docPicture.setVerticalPosition(electronicSeal.getVertical()); //设置电子章大小 docPicture.setWidth(electronicSeal.getStampWidth()); - docPicture.setHeight(electronicSeal.getDiaphaneity()); + docPicture.setHeight(electronicSeal.getStampHeight()); } //保存添加电子章的Word文档 document.saveToFile(wordNewUrl); @@ -239,8 +241,8 @@ * 1、自定义位置添加电子印章 * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 * - * @param wordOldUrl word文件路径 - * @param wordNewUrl 新word文件路径 + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 */ private static void addAbsolutePathStamp(String wordOldUrl, String wordNewUrl, ElectronicImage absolutePathImage) { // 加载文档 @@ -423,57 +425,76 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "http://111.198.10.15:21408/test"; - String localPathUrl = "D:\\cz\\203\\file"; + String pathUrl = "D:\\tmp\\1640635147069263874"; + String localPathUrl = "D:\\tmp\\1640635147069263874"; - //文件与BufferedImage间的转换 - //读取图片 - BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); - BufferedImage bii = convertLayout(bi, alpha); - //生成透明背景图片 - saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); - - //文件与BufferedImage间的转换 - //读取图片 - BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); - BufferedImage b0 = convertLayout(b, alpha); - //生成透明背景图片 - saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - -// // 目标文件地址 -// String wordOldUrl = pathUrl + "/力学监测记录模板_1670813172669.docx"; +// //文件与BufferedImage间的转换 +// //读取图片 +// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +// BufferedImage bii = convertLayout(bi, alpha); +// //生成透明背景图片 +// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); // -// // 添加电子印章后文件存放地址 -// String wordNewUrl = localPathUrl + "\\tem.docx"; -// //WORD转PDF存放位置 -// String pdfNewUrl = localPathUrl + "\\tem.pdf"; -// //电子印章图片地址 -// String stampImgUrl = localPathUrl + "\\sign3.png"; -// //电子签名图片地址 -// String stampImgUrl1 = localPathUrl + "\\name3.png"; -// // word文档内容关键字 -// String keyWord = "盖章"; -// StampUtils addStampUtils = new StampUtils(); -// List electronicSealList = new ArrayList(11); -// int count = 0; -// for (; count < 2; count++) { -// ElectronicImage electronicSeal = new ElectronicImage(); -// String tempStampImgUrl = count == 0 ? stampImgUrl : stampImgUrl1; -// electronicSeal.setElectronicSealImageUrl(tempStampImgUrl); -// electronicSeal.setMereFlag(count == 1); -// electronicSeal.setKeyWord(keyWord); -// electronicSeal.setKeyWordIndex(keyWordIndex); -// electronicSeal.setHorizontal(horizontal); -// electronicSeal.setVertical(vertical); -// electronicSeal.setStampHeight(stampHeight); -// electronicSeal.setStampWidth(stampWidth); -// electronicSealList.add(electronicSeal); -// } -// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); -// // 将新word转化为pdf文件 -// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// //文件与BufferedImage间的转换 +// //读取图片 +// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +// BufferedImage b0 = convertLayout(b, alpha); +// //生成透明背景图片 +// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); + + + // 目标文件地址 + String wordOldUrl = pathUrl + "\\测试.docx"; + // 添加电子印章后文件存放地址 + String wordNewUrl = localPathUrl + "\\测试.docx"; + //WORD转PDF存放位置 + String pdfNewUrl = localPathUrl + "\\tem.pdf"; + //电子印章图片地址 + String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; + //电子签名图片地址 + String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; + // word文档内容关键字 + String keyWord = "批准人"; + FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); + List electronicSealList = new ArrayList(11); + int count = 0; + ElectronicImage electronicImage=defaultElectronicSignName("批准人"); + electronicImage.setElectronicSealImageUrl(stampNameImgUr); + electronicSealList.add(electronicImage); + addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); + // 将新word转化为pdf文件 + electronicSealList = new ArrayList(11); + electronicImage=defaultElectronicSignSeal("发证单位"); + electronicImage.setElectronicSealImageUrl(stampSealImgUrl); + electronicSealList.add(electronicImage); + addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); + // 将新word转化为pdf文件 + addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); } + protected static ElectronicImage defaultElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(80f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } } \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java index 6abd3af..4545881 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java @@ -16,7 +16,10 @@ import javax.annotation.Resource; import java.util.*; - +/** + * @author cz + * @date 2023-03-10 + */ public class PrintFileDataSupport { @Autowired @@ -50,7 +53,7 @@ */ protected void initialization(FilePrintRegister filePrintRegister, String templateFileDir, BusinessCertificateReport certificateReport) { templateFileDir = templateFileDir + certificateReport.getId() + "\\"; - String fileName = fileRegisterMapper.getSignFileNameById(certificateReport.getTemplateId(), "system_template"); + String fileName = fileRegisterMapper.getSignFileSealById(certificateReport.getTemplateId(), "system_template"); filePrintRegister.setFileName(fileName); filePrintRegister.setTemDir(templateFileDir); filePrintRegister.setTemplatePath(templateFileDir + fileName); @@ -64,8 +67,8 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList=Arrays.asList("发起人","审批中","审批完成"); - customizedSignNames=Arrays.asList("发起人","核验人","批准人"); + keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } /** @@ -74,7 +77,7 @@ protected List customizedSignNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { List electronicImageList = new ArrayList<>(); for (int i = 0; i < keyParamList.size(); i++) { - if (approvalLogMap.containsKey(keyParamList.get(i))) { + if (!approvalLogMap.containsKey(keyParamList.get(i))) { continue; } final String customizedSignName = customizedSignNames.get(i); @@ -84,8 +87,11 @@ approvalLog -> { ElectronicImage electronicImage = defaultElectronicSignName(); String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); - electronicImage.setElectronicSealImageUrl(signFileName); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 filePrintRegister.getBeDownloadedFileNames().add(signFileName); + //设置关键字 electronicImage.setKeyWord(customizedSignName); electronicImageList.add(electronicImage); } @@ -99,8 +105,12 @@ * 默认电子签名的图片设置,允许重写 */ protected ElectronicImage defaultElectronicSignName() { - ElectronicImage electronicImage = new ElectronicImage(); - electronicImage.setHorizontal(200f); + ElectronicImage electronicImage = ElectronicImage.builder() + .vertical(0f) + .horizontal(20f) + .stampHeight(20f) + .stampWidth(40f) + .build(); return electronicImage; } @@ -108,7 +118,14 @@ * 默认电子签章的图片设置,允许重写 */ protected ElectronicImage defaultElectronicSignSeal() { - ElectronicImage electronicImage = new ElectronicImage(); + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .vertical(-55f) + .horizontal(300f) + .stampHeight(120f) + .stampWidth(120f) + .diaphaneity(150f) + .build(); return electronicImage; } @@ -119,10 +136,14 @@ * @param keyWord 关键字 * @return */ - protected ElectronicImage doCreateElectronicSignSeal(Long electronicSealId, String keyWord) { + protected ElectronicImage doCreateElectronicSignSeal(Long electronicSealId, String keyWord, FilePrintRegister filePrintRegister) { ElectronicImage electronicImage = defaultElectronicSignSeal(); - String electronicSealName = fileRegisterMapper.getSignFileNameById(electronicSealId, "system_sign"); - electronicImage.setElectronicSealImageUrl(electronicSealName); + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + //设置关键字 electronicImage.setKeyWord(keyWord); return electronicImage; } @@ -134,6 +155,7 @@ Map params = new HashMap<>(); params.put("customerName", businessOrder.getCustomerName()); params.put("customerAddress", businessOrder.getCustomerAddress()); + params.put("sampleModel", customerSampleInfo.getSampleModel()); params.put("sampleNo", customerSampleInfo.getSampleNo()); params.put("sampleName", customerSampleInfo.getSampleName()); params.put("manufacturingNo", customerSampleInfo.getManufacturingNo()); @@ -144,6 +166,4 @@ } - - } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java index 7dc234d..22074aa 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java @@ -19,6 +19,10 @@ import java.io.*; import java.util.Objects; +/** + * @author cz + * @date 2023-03-06 + */ @Component @Slf4j public class PrintFileRegister{ @@ -62,11 +66,10 @@ for (String fileName : metaData.getBeDownloadedFileNames()) { downTemplateFile(fileName, tempLocalFileDir); } - ; //合并注册 String certificatePdfName = FilePrintRegisterUtils.filePrintGenerate(metaData); //上传到服务器 - uploadCertificate(certificatePdfName); +// uploadCertificate(certificatePdfName); //删除无效的文件 File invalidFile = new File(tempLocalFileDir); log.debug("invalid print file start delete, the file directory is {}", tempLocalFileDir); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/CalibrationPrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/CalibrationPrintFileData.java index b0639ad..283473d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/CalibrationPrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/CalibrationPrintFileData.java @@ -44,7 +44,7 @@ .collect(Collectors.toMap(e -> e.get(0).getApprovalStatus(), e -> e)); customizedSignNamesParamCreator(); List electronicSignList = this.customizedSignNamesCreator(ApprovalLogMap, filePrintRegister); - electronicSignList.addAll(customizedElectronicSignSeals(metaData)); + electronicSignList.addAll(customizedElectronicSignSeals(metaData,filePrintRegister)); filePrintRegister.setElectronicImageList(electronicSignList); filePrintRegister.setParams(certificateFilePopulateParamCreator(metaData)); return filePrintRegister; @@ -56,13 +56,13 @@ * @param metaData * @return */ - private List customizedElectronicSignSeals(BusinessCertificateReport metaData) { + private List customizedElectronicSignSeals(BusinessCertificateReport metaData, FilePrintRegister filePrintRegister) { List electronicImageSeals = new ArrayList<>(); - electronicImageSeals.add(doCreateElectronicSignSeal(metaData.getSignId(), "发证单位")); + electronicImageSeals.add(doCreateElectronicSignSeal(metaData.getSignId(), "发证单位",filePrintRegister)); if (StringUtils.isNotEmpty(metaData.getApprovalSignId())) { String[] approvalSignIds = metaData.getApprovalSignId().split(","); for (String approvalSignId : approvalSignIds) { - electronicImageSeals.add(doCreateElectronicSignSeal(Long.valueOf(approvalSignId), "")); + electronicImageSeals.add(doCreateElectronicSignSeal(Long.valueOf(approvalSignId), "",filePrintRegister)); } } return electronicImageSeals; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/TestReportPrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/TestReportPrintFileData.java index a168d46..13a6d3a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/TestReportPrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/TestReportPrintFileData.java @@ -47,19 +47,19 @@ .collect(Collectors.toMap(e -> e.get(0).getApprovalStatus(), e -> e)); customizedSignNamesParamCreator(); List electronicSignList = this.customizedSignNamesCreator(ApprovalLogMap, filePrintRegister); - electronicSignList.addAll(customizedElectronicSignSeals(metaData)); + electronicSignList.addAll(customizedElectronicSignSeals(metaData,filePrintRegister)); filePrintRegister.setElectronicImageList(electronicSignList); filePrintRegister.setParams(certificateFilePopulateParamCreator(metaData)); return filePrintRegister; } - private List customizedElectronicSignSeals(BusinessCertificateReport metaData) { + private List customizedElectronicSignSeals(BusinessCertificateReport metaData, FilePrintRegister filePrintRegister ) { List electronicImageSeals = new ArrayList<>(); - electronicImageSeals.add(doCreateElectronicSignSeal(metaData.getSignId(), "发证单位")); + electronicImageSeals.add(doCreateElectronicSignSeal(metaData.getSignId(), "发证单位",filePrintRegister)); if (StringUtils.isNotEmpty(metaData.getApprovalSignId())) { String[] approvalSignIds = metaData.getApprovalSignId().split(","); for (String approvalSignId : approvalSignIds) { - electronicImageSeals.add(doCreateElectronicSignSeal(metaData.getSignId(), approvalSignId)); + electronicImageSeals.add(doCreateElectronicSignSeal(Long.valueOf(approvalSignId), "",filePrintRegister)); } } return electronicImageSeals; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 66b9724..55de92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -79,7 +79,10 @@ @ApiOperation("设备批量改变状态") @PostMapping("/status/batchChange") - public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO) { + public ReturnDTO statusBatchChange(@RequestBody @Valid DeviceBatchStatusChangeDTO deviceBatchStatusChangeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); return ReturnUtil.success(bizDispatchService.statusBatchChange(deviceBatchStatusChangeDTO)); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index ace84fc..07fd394 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -12,7 +12,7 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileNameById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); @Select(" SELECT minio_file_name " + " FROM system_sign " + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java index 278951a..96b427c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/ElectronicImage.java @@ -1,32 +1,15 @@ package com.casic.missiles.dto.business.certificate; +import lombok.Builder; import lombok.Data; /** * 电子签名 */ @Data +@Builder public class ElectronicImage { - /** - * 默认电子签章值 - */ { - //关键字索引 (-1) - keyWordIndex = -1; - /** - * 该电子签章位置是关键字的相对位置 - */ - // 电子印章水平位置 - horizontal = 300f; - // 电子印章垂直位置 - vertical = -55f; - // 电子印章宽度 - stampWidth = 120f; - // 电子印章高度 - stampHeight = 120f; - //照片透明度设置 - diaphaneity = 150f; - } /** diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java index 8362c94..6b5601c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceBatchStatusChangeDTO.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.Valid; import java.util.List; /** @@ -13,6 +14,7 @@ @ApiModel("设备批量更新状态请求参数") public class DeviceBatchStatusChangeDTO { + @Valid @ApiModelProperty(value = "委托书样品关系列表", dataType = "list") private List deviceStatusChangeDTOS; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java index 30b79d2..91e49fe 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/DeviceStatusChangeDTO.java @@ -4,13 +4,17 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; + @ApiModel("设备接收") @Data public class DeviceStatusChangeDTO { + @NotNull @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; + @NotNull @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java index bb611b9..6077b9d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/FilePrintRegisterUtils.java @@ -17,6 +17,7 @@ import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; +import java.util.ArrayList; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -54,14 +55,15 @@ // } //按关键字进行分组 Map> sameKeyWordSealMaps = filePrintRegister.getElectronicImageList().stream() - .filter(electronicImage->StringUtils.isNotEmpty(electronicImage.getKeyWord())) + .filter(electronicImage -> StringUtils.isNotEmpty(electronicImage.getKeyWord())) .collect( - Collectors.groupingBy(ElectronicImage::getKeyWord) - ); + Collectors.groupingBy(ElectronicImage::getKeyWord) + ); // 初始化world,pdf名称参数 String[] filePrintType = filePrintRegister.getTemplatePath().split("\\."); String wordNewUrl = filePrintRegister.getTemplatePath(); String pdfNewUrl = filePrintType[0] + "." + "pdf"; + //3、根据关键字进行添加签章和签字 for (Map.Entry> entry : sameKeyWordSealMaps.entrySet()) { List electronicSeals = entry.getValue(); @@ -69,12 +71,12 @@ } //获取没有关键字的图片,即绝对路径的图片 - List absolutePathImageList= filePrintRegister.getElectronicImageList().stream() - .filter(electronicImage->StringUtils.isEmpty(electronicImage.getKeyWord())) + List absolutePathImageList = filePrintRegister.getElectronicImageList().stream() + .filter(electronicImage -> StringUtils.isEmpty(electronicImage.getKeyWord())) .collect(Collectors.toList()); //根据设置的绝对路径进行图片的填充 - for(ElectronicImage absolutePathImage:absolutePathImageList){ - addAbsolutePathStamp(wordOldUrl, wordNewUrl,absolutePathImage); + for (ElectronicImage absolutePathImage : absolutePathImageList) { + addAbsolutePathStamp(wordOldUrl, wordNewUrl, absolutePathImage); } // 4、将新word转化为pdf文件 wordToPdf(wordNewUrl, pdfNewUrl); @@ -147,10 +149,10 @@ //水平位置 docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); //垂直位置 - docPicture.setVerticalPosition(electronicSeal.getStampHeight()); + docPicture.setVerticalPosition(electronicSeal.getVertical()); //设置电子章大小 docPicture.setWidth(electronicSeal.getStampWidth()); - docPicture.setHeight(electronicSeal.getDiaphaneity()); + docPicture.setHeight(electronicSeal.getStampHeight()); } //保存添加电子章的Word文档 document.saveToFile(wordNewUrl); @@ -239,8 +241,8 @@ * 1、自定义位置添加电子印章 * 2、替换书签名位置文本内容 bookmarkName传参为null,则不进行书签替换操作 * - * @param wordOldUrl word文件路径 - * @param wordNewUrl 新word文件路径 + * @param wordOldUrl word文件路径 + * @param wordNewUrl 新word文件路径 */ private static void addAbsolutePathStamp(String wordOldUrl, String wordNewUrl, ElectronicImage absolutePathImage) { // 加载文档 @@ -423,57 +425,76 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "http://111.198.10.15:21408/test"; - String localPathUrl = "D:\\cz\\203\\file"; + String pathUrl = "D:\\tmp\\1640635147069263874"; + String localPathUrl = "D:\\tmp\\1640635147069263874"; - //文件与BufferedImage间的转换 - //读取图片 - BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); - BufferedImage bii = convertLayout(bi, alpha); - //生成透明背景图片 - saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); - - //文件与BufferedImage间的转换 - //读取图片 - BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); - BufferedImage b0 = convertLayout(b, alpha); - //生成透明背景图片 - saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - -// // 目标文件地址 -// String wordOldUrl = pathUrl + "/力学监测记录模板_1670813172669.docx"; +// //文件与BufferedImage间的转换 +// //读取图片 +// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +// BufferedImage bii = convertLayout(bi, alpha); +// //生成透明背景图片 +// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); // -// // 添加电子印章后文件存放地址 -// String wordNewUrl = localPathUrl + "\\tem.docx"; -// //WORD转PDF存放位置 -// String pdfNewUrl = localPathUrl + "\\tem.pdf"; -// //电子印章图片地址 -// String stampImgUrl = localPathUrl + "\\sign3.png"; -// //电子签名图片地址 -// String stampImgUrl1 = localPathUrl + "\\name3.png"; -// // word文档内容关键字 -// String keyWord = "盖章"; -// StampUtils addStampUtils = new StampUtils(); -// List electronicSealList = new ArrayList(11); -// int count = 0; -// for (; count < 2; count++) { -// ElectronicImage electronicSeal = new ElectronicImage(); -// String tempStampImgUrl = count == 0 ? stampImgUrl : stampImgUrl1; -// electronicSeal.setElectronicSealImageUrl(tempStampImgUrl); -// electronicSeal.setMereFlag(count == 1); -// electronicSeal.setKeyWord(keyWord); -// electronicSeal.setKeyWordIndex(keyWordIndex); -// electronicSeal.setHorizontal(horizontal); -// electronicSeal.setVertical(vertical); -// electronicSeal.setStampHeight(stampHeight); -// electronicSeal.setStampWidth(stampWidth); -// electronicSealList.add(electronicSeal); -// } -// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); -// // 将新word转化为pdf文件 -// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// //文件与BufferedImage间的转换 +// //读取图片 +// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +// BufferedImage b0 = convertLayout(b, alpha); +// //生成透明背景图片 +// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); + + + // 目标文件地址 + String wordOldUrl = pathUrl + "\\测试.docx"; + // 添加电子印章后文件存放地址 + String wordNewUrl = localPathUrl + "\\测试.docx"; + //WORD转PDF存放位置 + String pdfNewUrl = localPathUrl + "\\tem.pdf"; + //电子印章图片地址 + String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; + //电子签名图片地址 + String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; + // word文档内容关键字 + String keyWord = "批准人"; + FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); + List electronicSealList = new ArrayList(11); + int count = 0; + ElectronicImage electronicImage=defaultElectronicSignName("批准人"); + electronicImage.setElectronicSealImageUrl(stampNameImgUr); + electronicSealList.add(electronicImage); + addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); + // 将新word转化为pdf文件 + electronicSealList = new ArrayList(11); + electronicImage=defaultElectronicSignSeal("发证单位"); + electronicImage.setElectronicSealImageUrl(stampSealImgUrl); + electronicSealList.add(electronicImage); + addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); + // 将新word转化为pdf文件 + addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); } + protected static ElectronicImage defaultElectronicSignSeal(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(80f) + .stampHeight(100f) + .stampWidth(100f) + .diaphaneity(150f) + .build(); + return electronicImage; + } + protected static ElectronicImage defaultElectronicSignName(String keyWord) { + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .keyWord(keyWord) + .vertical(-10f) + .horizontal(60f) + .stampHeight(40f) + .stampWidth(60f) + .diaphaneity(150f) + .build(); + return electronicImage; + } } \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java index 6abd3af..4545881 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileDataSupport.java @@ -16,7 +16,10 @@ import javax.annotation.Resource; import java.util.*; - +/** + * @author cz + * @date 2023-03-10 + */ public class PrintFileDataSupport { @Autowired @@ -50,7 +53,7 @@ */ protected void initialization(FilePrintRegister filePrintRegister, String templateFileDir, BusinessCertificateReport certificateReport) { templateFileDir = templateFileDir + certificateReport.getId() + "\\"; - String fileName = fileRegisterMapper.getSignFileNameById(certificateReport.getTemplateId(), "system_template"); + String fileName = fileRegisterMapper.getSignFileSealById(certificateReport.getTemplateId(), "system_template"); filePrintRegister.setFileName(fileName); filePrintRegister.setTemDir(templateFileDir); filePrintRegister.setTemplatePath(templateFileDir + fileName); @@ -64,8 +67,8 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList=Arrays.asList("发起人","审批中","审批完成"); - customizedSignNames=Arrays.asList("发起人","核验人","批准人"); + keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } /** @@ -74,7 +77,7 @@ protected List customizedSignNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { List electronicImageList = new ArrayList<>(); for (int i = 0; i < keyParamList.size(); i++) { - if (approvalLogMap.containsKey(keyParamList.get(i))) { + if (!approvalLogMap.containsKey(keyParamList.get(i))) { continue; } final String customizedSignName = customizedSignNames.get(i); @@ -84,8 +87,11 @@ approvalLog -> { ElectronicImage electronicImage = defaultElectronicSignName(); String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); - electronicImage.setElectronicSealImageUrl(signFileName); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 filePrintRegister.getBeDownloadedFileNames().add(signFileName); + //设置关键字 electronicImage.setKeyWord(customizedSignName); electronicImageList.add(electronicImage); } @@ -99,8 +105,12 @@ * 默认电子签名的图片设置,允许重写 */ protected ElectronicImage defaultElectronicSignName() { - ElectronicImage electronicImage = new ElectronicImage(); - electronicImage.setHorizontal(200f); + ElectronicImage electronicImage = ElectronicImage.builder() + .vertical(0f) + .horizontal(20f) + .stampHeight(20f) + .stampWidth(40f) + .build(); return electronicImage; } @@ -108,7 +118,14 @@ * 默认电子签章的图片设置,允许重写 */ protected ElectronicImage defaultElectronicSignSeal() { - ElectronicImage electronicImage = new ElectronicImage(); + ElectronicImage electronicImage = ElectronicImage.builder() + .keyWordIndex(-1) + .vertical(-55f) + .horizontal(300f) + .stampHeight(120f) + .stampWidth(120f) + .diaphaneity(150f) + .build(); return electronicImage; } @@ -119,10 +136,14 @@ * @param keyWord 关键字 * @return */ - protected ElectronicImage doCreateElectronicSignSeal(Long electronicSealId, String keyWord) { + protected ElectronicImage doCreateElectronicSignSeal(Long electronicSealId, String keyWord, FilePrintRegister filePrintRegister) { ElectronicImage electronicImage = defaultElectronicSignSeal(); - String electronicSealName = fileRegisterMapper.getSignFileNameById(electronicSealId, "system_sign"); - electronicImage.setElectronicSealImageUrl(electronicSealName); + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + //设置关键字 electronicImage.setKeyWord(keyWord); return electronicImage; } @@ -134,6 +155,7 @@ Map params = new HashMap<>(); params.put("customerName", businessOrder.getCustomerName()); params.put("customerAddress", businessOrder.getCustomerAddress()); + params.put("sampleModel", customerSampleInfo.getSampleModel()); params.put("sampleNo", customerSampleInfo.getSampleNo()); params.put("sampleName", customerSampleInfo.getSampleName()); params.put("manufacturingNo", customerSampleInfo.getManufacturingNo()); @@ -144,6 +166,4 @@ } - - } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java index 7dc234d..22074aa 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/PrintFileRegister.java @@ -19,6 +19,10 @@ import java.io.*; import java.util.Objects; +/** + * @author cz + * @date 2023-03-06 + */ @Component @Slf4j public class PrintFileRegister{ @@ -62,11 +66,10 @@ for (String fileName : metaData.getBeDownloadedFileNames()) { downTemplateFile(fileName, tempLocalFileDir); } - ; //合并注册 String certificatePdfName = FilePrintRegisterUtils.filePrintGenerate(metaData); //上传到服务器 - uploadCertificate(certificatePdfName); +// uploadCertificate(certificatePdfName); //删除无效的文件 File invalidFile = new File(tempLocalFileDir); log.debug("invalid print file start delete, the file directory is {}", tempLocalFileDir); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/CalibrationPrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/CalibrationPrintFileData.java index b0639ad..283473d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/CalibrationPrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/CalibrationPrintFileData.java @@ -44,7 +44,7 @@ .collect(Collectors.toMap(e -> e.get(0).getApprovalStatus(), e -> e)); customizedSignNamesParamCreator(); List electronicSignList = this.customizedSignNamesCreator(ApprovalLogMap, filePrintRegister); - electronicSignList.addAll(customizedElectronicSignSeals(metaData)); + electronicSignList.addAll(customizedElectronicSignSeals(metaData,filePrintRegister)); filePrintRegister.setElectronicImageList(electronicSignList); filePrintRegister.setParams(certificateFilePopulateParamCreator(metaData)); return filePrintRegister; @@ -56,13 +56,13 @@ * @param metaData * @return */ - private List customizedElectronicSignSeals(BusinessCertificateReport metaData) { + private List customizedElectronicSignSeals(BusinessCertificateReport metaData, FilePrintRegister filePrintRegister) { List electronicImageSeals = new ArrayList<>(); - electronicImageSeals.add(doCreateElectronicSignSeal(metaData.getSignId(), "发证单位")); + electronicImageSeals.add(doCreateElectronicSignSeal(metaData.getSignId(), "发证单位",filePrintRegister)); if (StringUtils.isNotEmpty(metaData.getApprovalSignId())) { String[] approvalSignIds = metaData.getApprovalSignId().split(","); for (String approvalSignId : approvalSignIds) { - electronicImageSeals.add(doCreateElectronicSignSeal(Long.valueOf(approvalSignId), "")); + electronicImageSeals.add(doCreateElectronicSignSeal(Long.valueOf(approvalSignId), "",filePrintRegister)); } } return electronicImageSeals; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/TestReportPrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/TestReportPrintFileData.java index a168d46..13a6d3a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/TestReportPrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/register/data/certificate/TestReportPrintFileData.java @@ -47,19 +47,19 @@ .collect(Collectors.toMap(e -> e.get(0).getApprovalStatus(), e -> e)); customizedSignNamesParamCreator(); List electronicSignList = this.customizedSignNamesCreator(ApprovalLogMap, filePrintRegister); - electronicSignList.addAll(customizedElectronicSignSeals(metaData)); + electronicSignList.addAll(customizedElectronicSignSeals(metaData,filePrintRegister)); filePrintRegister.setElectronicImageList(electronicSignList); filePrintRegister.setParams(certificateFilePopulateParamCreator(metaData)); return filePrintRegister; } - private List customizedElectronicSignSeals(BusinessCertificateReport metaData) { + private List customizedElectronicSignSeals(BusinessCertificateReport metaData, FilePrintRegister filePrintRegister ) { List electronicImageSeals = new ArrayList<>(); - electronicImageSeals.add(doCreateElectronicSignSeal(metaData.getSignId(), "发证单位")); + electronicImageSeals.add(doCreateElectronicSignSeal(metaData.getSignId(), "发证单位",filePrintRegister)); if (StringUtils.isNotEmpty(metaData.getApprovalSignId())) { String[] approvalSignIds = metaData.getApprovalSignId().split(","); for (String approvalSignId : approvalSignIds) { - electronicImageSeals.add(doCreateElectronicSignSeal(metaData.getSignId(), approvalSignId)); + electronicImageSeals.add(doCreateElectronicSignSeal(Long.valueOf(approvalSignId), "",filePrintRegister)); } } return electronicImageSeals; diff --git a/tem_1680055159014.docxpdf b/tem_1680055159014.docxpdf new file mode 100644 index 0000000..5362a3c --- /dev/null +++ b/tem_1680055159014.docxpdf Binary files differ