diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java index e9da220..3131969 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java @@ -10,6 +10,7 @@ /** * 定制化配置参数 * + * @author cz * @date 2024-02-28 */ @Data @@ -25,6 +26,17 @@ * 定制化文件名称 */ private String customFileName; + + /*** + * 二维码生成会记录,及名称 + */ + private String QrUrl; + + /*** + * 二维码生成名称 + */ + private String QrUrlName; + /** * 定制化配置参数 */ @@ -40,8 +52,8 @@ private HttpServletResponse response; /** - * 前缀类型 + * 前缀类型 */ - private String prefixType; + private String prefixType; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java index e9da220..3131969 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java @@ -10,6 +10,7 @@ /** * 定制化配置参数 * + * @author cz * @date 2024-02-28 */ @Data @@ -25,6 +26,17 @@ * 定制化文件名称 */ private String customFileName; + + /*** + * 二维码生成会记录,及名称 + */ + private String QrUrl; + + /*** + * 二维码生成名称 + */ + private String QrUrlName; + /** * 定制化配置参数 */ @@ -40,8 +52,8 @@ private HttpServletResponse response; /** - * 前缀类型 + * 前缀类型 */ - private String prefixType; + private String prefixType; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index 290f3f2..364bd43 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -1,22 +1,28 @@ package com.casic.missiles.service.listeners.register; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.dto.business.certificate.RegisterCustomParameters; import com.casic.missiles.dto.business.file.FilePrintRegister; import com.casic.missiles.enums.notifyevent.AwareFilePrintTypeEnum; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.utils.MinioUtil; +import com.casic.missiles.utils.QRCodeUtil; import com.casic.missiles.utils.SpringContextUtil; import io.minio.MinioClient; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.Objects; /** @@ -76,18 +82,13 @@ FilePrintRegister filePrintRegister = fileDataGeneric.CustomizedPrintFileRegister(registerParameters, tempLocalFileDir); if (fileDataGeneric != null) { try { - //获取文件夹目录,没有则创建 - tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; - getLocalFileDir(tempLocalFileDir); - //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 - for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { - downTemplateFile(fileName, tempLocalFileDir); + //区分excel的打印 + if (filePrintRegister.getTemplateWordType()) { + printDocUrl = populateWordPrintFile(tempLocalFileDir, filePrintRegister, registerParameters.getCustomFileName()); + } else { + printDocUrl = populateExcelPrintFile(tempLocalFileDir, filePrintRegister, registerParameters.getCustomFileName()); } - //合并注册 - filePrintRegister.setCustomFileName(registerParameters.getCustomFileName()); - printDocUrl = FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); - - } catch (RuntimeException rex) { + } catch (Exception rex) { log.error("文件打印出现异常,打印参数信息为{},异常信息为{}", JSON.toJSON(registerParameters), rex); } finally { if (printDocUrl != null) { @@ -105,14 +106,47 @@ } /** - * 创建文件目录,为mini下载文件准备目录 + * 拆分成excel和word格式开发, */ - private void getLocalFileDir(String tempLocalFileDir) { - File file = new File(tempLocalFileDir); //以 - if (file.exists()) { - deleteFile(file); + private String populateWordPrintFile(String tempLocalFileDir, FilePrintRegister filePrintRegister, String customFileName) { + //获取文件夹目录,没有则创建 + tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; + createLocalFileDir(tempLocalFileDir); + //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 + for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { + downTemplateFile(fileName, tempLocalFileDir); } - boolean dr = file.mkdirs(); //创建目录 + //合并注册 + filePrintRegister.setCustomFileName(customFileName); + return FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); + } + + /** + * 此类用于处理生成Excel模板的总类 + * + * @param tempLocalFileDir + * @param filePrintRegister + * @param customFileName + * @return + * @throws Exception + */ + private String populateExcelPrintFile(String tempLocalFileDir, FilePrintRegister filePrintRegister, String customFileName) throws Exception { + OutputStream output = new FileOutputStream("D:\\casic\\cut\\test.png"); + //二维码生成和添加 + QRCodeUtil.getQRCode(tempLocalFileDir + filePrintRegister.getFileName(), output); + // 加载模板 + TemplateExportParams params = new TemplateExportParams( + customFileName + ".xlsx"); + Map>> sheetsMap = new HashMap<>(); + try { + Workbook workbook = ExcelExportUtil.exportExcel(params, filePrintRegister.getParams()); + FileOutputStream fos = new FileOutputStream("D:\\casic\\cut\\test2.xlsx"); + workbook.write(fos); + fos.close(); + } catch (IOException ioe) { + log.error("excel 填充出现异常,异常信息为{}", ioe); + } + return tempLocalFileDir + customFileName + ".xlsx"; } } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java index e9da220..3131969 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java @@ -10,6 +10,7 @@ /** * 定制化配置参数 * + * @author cz * @date 2024-02-28 */ @Data @@ -25,6 +26,17 @@ * 定制化文件名称 */ private String customFileName; + + /*** + * 二维码生成会记录,及名称 + */ + private String QrUrl; + + /*** + * 二维码生成名称 + */ + private String QrUrlName; + /** * 定制化配置参数 */ @@ -40,8 +52,8 @@ private HttpServletResponse response; /** - * 前缀类型 + * 前缀类型 */ - private String prefixType; + private String prefixType; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index 290f3f2..364bd43 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -1,22 +1,28 @@ package com.casic.missiles.service.listeners.register; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.dto.business.certificate.RegisterCustomParameters; import com.casic.missiles.dto.business.file.FilePrintRegister; import com.casic.missiles.enums.notifyevent.AwareFilePrintTypeEnum; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.utils.MinioUtil; +import com.casic.missiles.utils.QRCodeUtil; import com.casic.missiles.utils.SpringContextUtil; import io.minio.MinioClient; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.Objects; /** @@ -76,18 +82,13 @@ FilePrintRegister filePrintRegister = fileDataGeneric.CustomizedPrintFileRegister(registerParameters, tempLocalFileDir); if (fileDataGeneric != null) { try { - //获取文件夹目录,没有则创建 - tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; - getLocalFileDir(tempLocalFileDir); - //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 - for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { - downTemplateFile(fileName, tempLocalFileDir); + //区分excel的打印 + if (filePrintRegister.getTemplateWordType()) { + printDocUrl = populateWordPrintFile(tempLocalFileDir, filePrintRegister, registerParameters.getCustomFileName()); + } else { + printDocUrl = populateExcelPrintFile(tempLocalFileDir, filePrintRegister, registerParameters.getCustomFileName()); } - //合并注册 - filePrintRegister.setCustomFileName(registerParameters.getCustomFileName()); - printDocUrl = FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); - - } catch (RuntimeException rex) { + } catch (Exception rex) { log.error("文件打印出现异常,打印参数信息为{},异常信息为{}", JSON.toJSON(registerParameters), rex); } finally { if (printDocUrl != null) { @@ -105,14 +106,47 @@ } /** - * 创建文件目录,为mini下载文件准备目录 + * 拆分成excel和word格式开发, */ - private void getLocalFileDir(String tempLocalFileDir) { - File file = new File(tempLocalFileDir); //以 - if (file.exists()) { - deleteFile(file); + private String populateWordPrintFile(String tempLocalFileDir, FilePrintRegister filePrintRegister, String customFileName) { + //获取文件夹目录,没有则创建 + tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; + createLocalFileDir(tempLocalFileDir); + //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 + for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { + downTemplateFile(fileName, tempLocalFileDir); } - boolean dr = file.mkdirs(); //创建目录 + //合并注册 + filePrintRegister.setCustomFileName(customFileName); + return FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); + } + + /** + * 此类用于处理生成Excel模板的总类 + * + * @param tempLocalFileDir + * @param filePrintRegister + * @param customFileName + * @return + * @throws Exception + */ + private String populateExcelPrintFile(String tempLocalFileDir, FilePrintRegister filePrintRegister, String customFileName) throws Exception { + OutputStream output = new FileOutputStream("D:\\casic\\cut\\test.png"); + //二维码生成和添加 + QRCodeUtil.getQRCode(tempLocalFileDir + filePrintRegister.getFileName(), output); + // 加载模板 + TemplateExportParams params = new TemplateExportParams( + customFileName + ".xlsx"); + Map>> sheetsMap = new HashMap<>(); + try { + Workbook workbook = ExcelExportUtil.exportExcel(params, filePrintRegister.getParams()); + FileOutputStream fos = new FileOutputStream("D:\\casic\\cut\\test2.xlsx"); + workbook.write(fos); + fos.close(); + } catch (IOException ioe) { + log.error("excel 填充出现异常,异常信息为{}", ioe); + } + return tempLocalFileDir + customFileName + ".xlsx"; } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java index 0059289..92d43dd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; +import java.util.Arrays; import java.util.Map; @@ -54,6 +55,14 @@ return filePrintRegister; } + @Override + protected void customizedSignNamesParamCreator() { + keyParamList = Arrays.asList("发起人", "核验人", "审核人" ); + customizedSignNames = Arrays.asList("校准人", "核验人", "批准人" ); + } + + + /** * 处理定制化的日期 * diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java index e9da220..3131969 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java @@ -10,6 +10,7 @@ /** * 定制化配置参数 * + * @author cz * @date 2024-02-28 */ @Data @@ -25,6 +26,17 @@ * 定制化文件名称 */ private String customFileName; + + /*** + * 二维码生成会记录,及名称 + */ + private String QrUrl; + + /*** + * 二维码生成名称 + */ + private String QrUrlName; + /** * 定制化配置参数 */ @@ -40,8 +52,8 @@ private HttpServletResponse response; /** - * 前缀类型 + * 前缀类型 */ - private String prefixType; + private String prefixType; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index 290f3f2..364bd43 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -1,22 +1,28 @@ package com.casic.missiles.service.listeners.register; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.dto.business.certificate.RegisterCustomParameters; import com.casic.missiles.dto.business.file.FilePrintRegister; import com.casic.missiles.enums.notifyevent.AwareFilePrintTypeEnum; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.utils.MinioUtil; +import com.casic.missiles.utils.QRCodeUtil; import com.casic.missiles.utils.SpringContextUtil; import io.minio.MinioClient; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.Objects; /** @@ -76,18 +82,13 @@ FilePrintRegister filePrintRegister = fileDataGeneric.CustomizedPrintFileRegister(registerParameters, tempLocalFileDir); if (fileDataGeneric != null) { try { - //获取文件夹目录,没有则创建 - tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; - getLocalFileDir(tempLocalFileDir); - //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 - for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { - downTemplateFile(fileName, tempLocalFileDir); + //区分excel的打印 + if (filePrintRegister.getTemplateWordType()) { + printDocUrl = populateWordPrintFile(tempLocalFileDir, filePrintRegister, registerParameters.getCustomFileName()); + } else { + printDocUrl = populateExcelPrintFile(tempLocalFileDir, filePrintRegister, registerParameters.getCustomFileName()); } - //合并注册 - filePrintRegister.setCustomFileName(registerParameters.getCustomFileName()); - printDocUrl = FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); - - } catch (RuntimeException rex) { + } catch (Exception rex) { log.error("文件打印出现异常,打印参数信息为{},异常信息为{}", JSON.toJSON(registerParameters), rex); } finally { if (printDocUrl != null) { @@ -105,14 +106,47 @@ } /** - * 创建文件目录,为mini下载文件准备目录 + * 拆分成excel和word格式开发, */ - private void getLocalFileDir(String tempLocalFileDir) { - File file = new File(tempLocalFileDir); //以 - if (file.exists()) { - deleteFile(file); + private String populateWordPrintFile(String tempLocalFileDir, FilePrintRegister filePrintRegister, String customFileName) { + //获取文件夹目录,没有则创建 + tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; + createLocalFileDir(tempLocalFileDir); + //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 + for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { + downTemplateFile(fileName, tempLocalFileDir); } - boolean dr = file.mkdirs(); //创建目录 + //合并注册 + filePrintRegister.setCustomFileName(customFileName); + return FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); + } + + /** + * 此类用于处理生成Excel模板的总类 + * + * @param tempLocalFileDir + * @param filePrintRegister + * @param customFileName + * @return + * @throws Exception + */ + private String populateExcelPrintFile(String tempLocalFileDir, FilePrintRegister filePrintRegister, String customFileName) throws Exception { + OutputStream output = new FileOutputStream("D:\\casic\\cut\\test.png"); + //二维码生成和添加 + QRCodeUtil.getQRCode(tempLocalFileDir + filePrintRegister.getFileName(), output); + // 加载模板 + TemplateExportParams params = new TemplateExportParams( + customFileName + ".xlsx"); + Map>> sheetsMap = new HashMap<>(); + try { + Workbook workbook = ExcelExportUtil.exportExcel(params, filePrintRegister.getParams()); + FileOutputStream fos = new FileOutputStream("D:\\casic\\cut\\test2.xlsx"); + workbook.write(fos); + fos.close(); + } catch (IOException ioe) { + log.error("excel 填充出现异常,异常信息为{}", ioe); + } + return tempLocalFileDir + customFileName + ".xlsx"; } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java index 0059289..92d43dd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; +import java.util.Arrays; import java.util.Map; @@ -54,6 +55,14 @@ return filePrintRegister; } + @Override + protected void customizedSignNamesParamCreator() { + keyParamList = Arrays.asList("发起人", "核验人", "审核人" ); + customizedSignNames = Arrays.asList("校准人", "核验人", "批准人" ); + } + + + /** * 处理定制化的日期 * diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificateReportApprovalData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificateReportApprovalData.java index 42aae6f..6a8bbb6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificateReportApprovalData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificateReportApprovalData.java @@ -1,8 +1,10 @@ package com.casic.missiles.service.listeners.register.data.certificate; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.business.certificate.ElectronicImage; import com.casic.missiles.dto.business.certificate.RegisterCustomParameters; import com.casic.missiles.dto.business.file.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.model.business.BusinessCertificateReport; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; @@ -14,7 +16,9 @@ import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Slf4j @Component(PrintFileDataBeanNameAliasEnum.CERTIFICATE_REPORT_APPROVAL) @@ -40,8 +44,18 @@ if (ObjectUtils.isEmpty(metaData.getId())) { metaData.setId(snowflakeUtil.nextId()); } + //查询工作流审批记录 + List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); + Map> ApprovalLogMap = approvalLogList.stream() + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); + + //定制化签名开发预处理,定制化参数 + customizedSignNamesParamCreator(); //初始化,生成模板文件 FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(metaData.getTemplateId())); + //定制化签名开发 + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + filePrintRegister.setElectronicImageList(electronicSignList); //填充定制化的参数 filePrintRegister.setParams(certificateFileParamCreator(metaData.getOrderId(), metaData.getSampleId())); //定制化参数开发 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java index e9da220..3131969 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java @@ -10,6 +10,7 @@ /** * 定制化配置参数 * + * @author cz * @date 2024-02-28 */ @Data @@ -25,6 +26,17 @@ * 定制化文件名称 */ private String customFileName; + + /*** + * 二维码生成会记录,及名称 + */ + private String QrUrl; + + /*** + * 二维码生成名称 + */ + private String QrUrlName; + /** * 定制化配置参数 */ @@ -40,8 +52,8 @@ private HttpServletResponse response; /** - * 前缀类型 + * 前缀类型 */ - private String prefixType; + private String prefixType; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index 290f3f2..364bd43 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -1,22 +1,28 @@ package com.casic.missiles.service.listeners.register; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.dto.business.certificate.RegisterCustomParameters; import com.casic.missiles.dto.business.file.FilePrintRegister; import com.casic.missiles.enums.notifyevent.AwareFilePrintTypeEnum; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.utils.MinioUtil; +import com.casic.missiles.utils.QRCodeUtil; import com.casic.missiles.utils.SpringContextUtil; import io.minio.MinioClient; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.Objects; /** @@ -76,18 +82,13 @@ FilePrintRegister filePrintRegister = fileDataGeneric.CustomizedPrintFileRegister(registerParameters, tempLocalFileDir); if (fileDataGeneric != null) { try { - //获取文件夹目录,没有则创建 - tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; - getLocalFileDir(tempLocalFileDir); - //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 - for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { - downTemplateFile(fileName, tempLocalFileDir); + //区分excel的打印 + if (filePrintRegister.getTemplateWordType()) { + printDocUrl = populateWordPrintFile(tempLocalFileDir, filePrintRegister, registerParameters.getCustomFileName()); + } else { + printDocUrl = populateExcelPrintFile(tempLocalFileDir, filePrintRegister, registerParameters.getCustomFileName()); } - //合并注册 - filePrintRegister.setCustomFileName(registerParameters.getCustomFileName()); - printDocUrl = FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); - - } catch (RuntimeException rex) { + } catch (Exception rex) { log.error("文件打印出现异常,打印参数信息为{},异常信息为{}", JSON.toJSON(registerParameters), rex); } finally { if (printDocUrl != null) { @@ -105,14 +106,47 @@ } /** - * 创建文件目录,为mini下载文件准备目录 + * 拆分成excel和word格式开发, */ - private void getLocalFileDir(String tempLocalFileDir) { - File file = new File(tempLocalFileDir); //以 - if (file.exists()) { - deleteFile(file); + private String populateWordPrintFile(String tempLocalFileDir, FilePrintRegister filePrintRegister, String customFileName) { + //获取文件夹目录,没有则创建 + tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; + createLocalFileDir(tempLocalFileDir); + //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 + for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { + downTemplateFile(fileName, tempLocalFileDir); } - boolean dr = file.mkdirs(); //创建目录 + //合并注册 + filePrintRegister.setCustomFileName(customFileName); + return FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); + } + + /** + * 此类用于处理生成Excel模板的总类 + * + * @param tempLocalFileDir + * @param filePrintRegister + * @param customFileName + * @return + * @throws Exception + */ + private String populateExcelPrintFile(String tempLocalFileDir, FilePrintRegister filePrintRegister, String customFileName) throws Exception { + OutputStream output = new FileOutputStream("D:\\casic\\cut\\test.png"); + //二维码生成和添加 + QRCodeUtil.getQRCode(tempLocalFileDir + filePrintRegister.getFileName(), output); + // 加载模板 + TemplateExportParams params = new TemplateExportParams( + customFileName + ".xlsx"); + Map>> sheetsMap = new HashMap<>(); + try { + Workbook workbook = ExcelExportUtil.exportExcel(params, filePrintRegister.getParams()); + FileOutputStream fos = new FileOutputStream("D:\\casic\\cut\\test2.xlsx"); + workbook.write(fos); + fos.close(); + } catch (IOException ioe) { + log.error("excel 填充出现异常,异常信息为{}", ioe); + } + return tempLocalFileDir + customFileName + ".xlsx"; } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java index 0059289..92d43dd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; +import java.util.Arrays; import java.util.Map; @@ -54,6 +55,14 @@ return filePrintRegister; } + @Override + protected void customizedSignNamesParamCreator() { + keyParamList = Arrays.asList("发起人", "核验人", "审核人" ); + customizedSignNames = Arrays.asList("校准人", "核验人", "批准人" ); + } + + + /** * 处理定制化的日期 * diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificateReportApprovalData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificateReportApprovalData.java index 42aae6f..6a8bbb6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificateReportApprovalData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificateReportApprovalData.java @@ -1,8 +1,10 @@ package com.casic.missiles.service.listeners.register.data.certificate; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.business.certificate.ElectronicImage; import com.casic.missiles.dto.business.certificate.RegisterCustomParameters; import com.casic.missiles.dto.business.file.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.model.business.BusinessCertificateReport; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; @@ -14,7 +16,9 @@ import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Slf4j @Component(PrintFileDataBeanNameAliasEnum.CERTIFICATE_REPORT_APPROVAL) @@ -40,8 +44,18 @@ if (ObjectUtils.isEmpty(metaData.getId())) { metaData.setId(snowflakeUtil.nextId()); } + //查询工作流审批记录 + List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); + Map> ApprovalLogMap = approvalLogList.stream() + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); + + //定制化签名开发预处理,定制化参数 + customizedSignNamesParamCreator(); //初始化,生成模板文件 FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(metaData.getTemplateId())); + //定制化签名开发 + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + filePrintRegister.setElectronicImageList(electronicSignList); //填充定制化的参数 filePrintRegister.setParams(certificateFileParamCreator(metaData.getOrderId(), metaData.getSampleId())); //定制化参数开发 diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/original/OriginalRecord.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/original/OriginalRecord.java index 6e652e9..2ef3fde 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/original/OriginalRecord.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/original/OriginalRecord.java @@ -1,38 +1,72 @@ package com.casic.missiles.service.listeners.register.data.original; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.dto.business.certificate.RegisterCustomParameters; import com.casic.missiles.dto.business.file.FilePrintRegister; import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.model.business.BusinessCertificateReport; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; +import com.casic.missiles.utils.SnowflakeUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.text.SimpleDateFormat; import java.util.Arrays; +import java.util.Map; /** * 原始记录生成 * 校准证书参数生成 */ +@Slf4j @Component(PrintFileDataBeanNameAliasEnum.ORIGINAL_RECORD_BEAN) public class OriginalRecord extends PrintFileDataSupport implements PrintFileDataGeneric { + @Autowired + private SnowflakeUtil snowflakeUtil; + @Override public FilePrintRegister CustomizedPrintFileRegister(RegisterCustomParameters registerParameters, String templateFileDir) { BusinessOriginalRecord metaData = (BusinessOriginalRecord) registerParameters.getCustomObject(); + if (ObjectUtils.isEmpty(metaData.getId())) { + metaData.setId(snowflakeUtil.nextId()); + } //初始化,生成模板文件 FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(metaData.getTemplateId())); //定制化签名开发预处理,定制化参数 customizedSignNamesParamCreator(); //填充定制化的参数 filePrintRegister.setParams(certificateFileParamCreator(metaData.getOrderId(), metaData.getSampleId())); + //定制化参数开发 + customParam(metaData, filePrintRegister.getParams()); return filePrintRegister; } - @Override - protected void customizedSignNamesParamCreator() { - keyParamList = Arrays.asList("发起人", "核验人", "审核人" ); - customizedSignNames = Arrays.asList("校准人", "核验人", "批准人" ); + /** + * 处理定制化的日期 + * + * @param metaData + */ + private void customParam(BusinessOriginalRecord metaData, Map params) { + try { + if (StringUtils.isNotEmpty(metaData.getDeliverTime())) { + params.put("deliverTime", new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat("yyyy-MM-dd").parse(metaData.getDeliverTime()))); + } + if (StringUtils.isNotEmpty(metaData.getCalibrationTime())) { + params.put("calibrationTime", new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat("yyyy-MM-dd").parse(metaData.getCalibrationTime()))); + } + params.put("temperature", metaData.getTemperature() + "℃"); + params.put("humidity", metaData.getHumidity() + "%RH"); + params.put("calibrationPlace", metaData.getCalibrationPlace()); + params.put("verifierName", metaData.getVerifierName()); + } catch (Exception ex) { + log.error("日期格式转换异常,异常信息{}", ex); + } } + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java index e9da220..3131969 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/RegisterCustomParameters.java @@ -10,6 +10,7 @@ /** * 定制化配置参数 * + * @author cz * @date 2024-02-28 */ @Data @@ -25,6 +26,17 @@ * 定制化文件名称 */ private String customFileName; + + /*** + * 二维码生成会记录,及名称 + */ + private String QrUrl; + + /*** + * 二维码生成名称 + */ + private String QrUrlName; + /** * 定制化配置参数 */ @@ -40,8 +52,8 @@ private HttpServletResponse response; /** - * 前缀类型 + * 前缀类型 */ - private String prefixType; + private String prefixType; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index 290f3f2..364bd43 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -1,22 +1,28 @@ package com.casic.missiles.service.listeners.register; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.dto.business.certificate.RegisterCustomParameters; import com.casic.missiles.dto.business.file.FilePrintRegister; import com.casic.missiles.enums.notifyevent.AwareFilePrintTypeEnum; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.utils.MinioUtil; +import com.casic.missiles.utils.QRCodeUtil; import com.casic.missiles.utils.SpringContextUtil; import io.minio.MinioClient; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.Objects; /** @@ -76,18 +82,13 @@ FilePrintRegister filePrintRegister = fileDataGeneric.CustomizedPrintFileRegister(registerParameters, tempLocalFileDir); if (fileDataGeneric != null) { try { - //获取文件夹目录,没有则创建 - tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; - getLocalFileDir(tempLocalFileDir); - //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 - for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { - downTemplateFile(fileName, tempLocalFileDir); + //区分excel的打印 + if (filePrintRegister.getTemplateWordType()) { + printDocUrl = populateWordPrintFile(tempLocalFileDir, filePrintRegister, registerParameters.getCustomFileName()); + } else { + printDocUrl = populateExcelPrintFile(tempLocalFileDir, filePrintRegister, registerParameters.getCustomFileName()); } - //合并注册 - filePrintRegister.setCustomFileName(registerParameters.getCustomFileName()); - printDocUrl = FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); - - } catch (RuntimeException rex) { + } catch (Exception rex) { log.error("文件打印出现异常,打印参数信息为{},异常信息为{}", JSON.toJSON(registerParameters), rex); } finally { if (printDocUrl != null) { @@ -105,14 +106,47 @@ } /** - * 创建文件目录,为mini下载文件准备目录 + * 拆分成excel和word格式开发, */ - private void getLocalFileDir(String tempLocalFileDir) { - File file = new File(tempLocalFileDir); //以 - if (file.exists()) { - deleteFile(file); + private String populateWordPrintFile(String tempLocalFileDir, FilePrintRegister filePrintRegister, String customFileName) { + //获取文件夹目录,没有则创建 + tempLocalFileDir = tempLocalFileDir + filePrintRegister.getFileNameId() + File.separator; + createLocalFileDir(tempLocalFileDir); + //证书产生准备工作,将相应的文件下载到本地的工作空间,获取相应的模板的读取权限 + for (String fileName : filePrintRegister.getBeDownloadedFileNames()) { + downTemplateFile(fileName, tempLocalFileDir); } - boolean dr = file.mkdirs(); //创建目录 + //合并注册 + filePrintRegister.setCustomFileName(customFileName); + return FilePrintRegisterUtils.filePrintGenerate(filePrintRegister); + } + + /** + * 此类用于处理生成Excel模板的总类 + * + * @param tempLocalFileDir + * @param filePrintRegister + * @param customFileName + * @return + * @throws Exception + */ + private String populateExcelPrintFile(String tempLocalFileDir, FilePrintRegister filePrintRegister, String customFileName) throws Exception { + OutputStream output = new FileOutputStream("D:\\casic\\cut\\test.png"); + //二维码生成和添加 + QRCodeUtil.getQRCode(tempLocalFileDir + filePrintRegister.getFileName(), output); + // 加载模板 + TemplateExportParams params = new TemplateExportParams( + customFileName + ".xlsx"); + Map>> sheetsMap = new HashMap<>(); + try { + Workbook workbook = ExcelExportUtil.exportExcel(params, filePrintRegister.getParams()); + FileOutputStream fos = new FileOutputStream("D:\\casic\\cut\\test2.xlsx"); + workbook.write(fos); + fos.close(); + } catch (IOException ioe) { + log.error("excel 填充出现异常,异常信息为{}", ioe); + } + return tempLocalFileDir + customFileName + ".xlsx"; } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java index 0059289..92d43dd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificatePrintFileData.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; +import java.util.Arrays; import java.util.Map; @@ -54,6 +55,14 @@ return filePrintRegister; } + @Override + protected void customizedSignNamesParamCreator() { + keyParamList = Arrays.asList("发起人", "核验人", "审核人" ); + customizedSignNames = Arrays.asList("校准人", "核验人", "批准人" ); + } + + + /** * 处理定制化的日期 * diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificateReportApprovalData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificateReportApprovalData.java index 42aae6f..6a8bbb6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificateReportApprovalData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CertificateReportApprovalData.java @@ -1,8 +1,10 @@ package com.casic.missiles.service.listeners.register.data.certificate; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.missiles.dto.business.certificate.ElectronicImage; import com.casic.missiles.dto.business.certificate.RegisterCustomParameters; import com.casic.missiles.dto.business.file.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.model.business.BusinessCertificateReport; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; @@ -14,7 +16,9 @@ import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Slf4j @Component(PrintFileDataBeanNameAliasEnum.CERTIFICATE_REPORT_APPROVAL) @@ -40,8 +44,18 @@ if (ObjectUtils.isEmpty(metaData.getId())) { metaData.setId(snowflakeUtil.nextId()); } + //查询工作流审批记录 + List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); + Map> ApprovalLogMap = approvalLogList.stream() + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); + + //定制化签名开发预处理,定制化参数 + customizedSignNamesParamCreator(); //初始化,生成模板文件 FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(metaData.getTemplateId())); + //定制化签名开发 + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + filePrintRegister.setElectronicImageList(electronicSignList); //填充定制化的参数 filePrintRegister.setParams(certificateFileParamCreator(metaData.getOrderId(), metaData.getSampleId())); //定制化参数开发 diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/original/OriginalRecord.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/original/OriginalRecord.java index 6e652e9..2ef3fde 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/original/OriginalRecord.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/original/OriginalRecord.java @@ -1,38 +1,72 @@ package com.casic.missiles.service.listeners.register.data.original; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.dto.business.certificate.RegisterCustomParameters; import com.casic.missiles.dto.business.file.FilePrintRegister; import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.model.business.BusinessCertificateReport; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; +import com.casic.missiles.utils.SnowflakeUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.text.SimpleDateFormat; import java.util.Arrays; +import java.util.Map; /** * 原始记录生成 * 校准证书参数生成 */ +@Slf4j @Component(PrintFileDataBeanNameAliasEnum.ORIGINAL_RECORD_BEAN) public class OriginalRecord extends PrintFileDataSupport implements PrintFileDataGeneric { + @Autowired + private SnowflakeUtil snowflakeUtil; + @Override public FilePrintRegister CustomizedPrintFileRegister(RegisterCustomParameters registerParameters, String templateFileDir) { BusinessOriginalRecord metaData = (BusinessOriginalRecord) registerParameters.getCustomObject(); + if (ObjectUtils.isEmpty(metaData.getId())) { + metaData.setId(snowflakeUtil.nextId()); + } //初始化,生成模板文件 FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(metaData.getTemplateId())); //定制化签名开发预处理,定制化参数 customizedSignNamesParamCreator(); //填充定制化的参数 filePrintRegister.setParams(certificateFileParamCreator(metaData.getOrderId(), metaData.getSampleId())); + //定制化参数开发 + customParam(metaData, filePrintRegister.getParams()); return filePrintRegister; } - @Override - protected void customizedSignNamesParamCreator() { - keyParamList = Arrays.asList("发起人", "核验人", "审核人" ); - customizedSignNames = Arrays.asList("校准人", "核验人", "批准人" ); + /** + * 处理定制化的日期 + * + * @param metaData + */ + private void customParam(BusinessOriginalRecord metaData, Map params) { + try { + if (StringUtils.isNotEmpty(metaData.getDeliverTime())) { + params.put("deliverTime", new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat("yyyy-MM-dd").parse(metaData.getDeliverTime()))); + } + if (StringUtils.isNotEmpty(metaData.getCalibrationTime())) { + params.put("calibrationTime", new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat("yyyy-MM-dd").parse(metaData.getCalibrationTime()))); + } + params.put("temperature", metaData.getTemperature() + "℃"); + params.put("humidity", metaData.getHumidity() + "%RH"); + params.put("calibrationPlace", metaData.getCalibrationPlace()); + params.put("verifierName", metaData.getVerifierName()); + } catch (Exception ex) { + log.error("日期格式转换异常,异常信息{}", ex); + } } + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/CalibrationFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/CalibrationFileData.java index 1f475fc..79805e3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/CalibrationFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/CalibrationFileData.java @@ -1,86 +1,86 @@ -//package com.casic.missiles.service.listeners.register.data.site; -// -// -//import com.casic.missiles.dto.business.certificate.ElectronicImage; -//import com.casic.missiles.dto.business.certificate.RegisterCustomParameters; -//import com.casic.missiles.dto.business.file.FilePrintRegister; -//import com.casic.missiles.dto.flowable.ApprovalLogResponse; -//import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; -//import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -//import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; -//import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; -//import org.apache.commons.collections.CollectionUtils; -//import org.springframework.beans.factory.annotation.Value; -//import org.springframework.stereotype.Component; -//import org.springframework.util.ObjectUtils; -// -//import java.util.*; -//import java.util.stream.Collectors; -// -//@Component(PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN) -//public class CalibrationFileData extends PrintFileDataSupport implements PrintFileDataGeneric { -// -// @Value("${casic.template.calibration}") -// private String calibrationTemplateName; -// -// @Override -// public FilePrintRegister CustomizedPrintFileRegister(RegisterCustomParameters registerParameters, String templateFileDir) { -// BusinessSiteExecutiveInfo metaData = (BusinessSiteExecutiveInfo) registerParameters.getCustomObject(); -// //初始化,生成模板文件 -// FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(calibrationTemplateName)); -// //查询工作流审批记录 -// List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); -// Map> ApprovalLogMap = approvalLogList.stream() -// .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); -// //定制化签名开发预处理,定制化参数 -// customizedSignNamesParamCreator(); -// //定制化签名开发 -// List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); -// filePrintRegister.setElectronicImageList(electronicSignList); -// //填充定制化的参数 -// filePrintRegister.setParams(siteFileParamCreator(metaData.getOrderId(), metaData.getId())); -// filePrintRegister.getParams().putAll(populateCalibration(metaData)); -// resolverApprovalTime(filePrintRegister, ApprovalLogMap); -// return filePrintRegister; -// } -// -// private Map populateCalibration(BusinessSiteExecutiveInfo metaData) { -// Map calibrationDataParams = new HashMap<>(); -// calibrationDataParams.put("siteExecutiveNo", metaData.getSiteExecutiveNo()); -// calibrationDataParams.put("executiveAddress", metaData.getExecutiveAddress()); -// calibrationDataParams.put("siteExecutiveName", metaData.getSiteExecutiveName()); -//// environmentDataParams.put("zeroVoltage", metaData.getZeroGroundVoltage()); -// calibrationDataParams.put("executiveEnvironment", metaData.getExecutiveEnvironment()); -// return calibrationDataParams; -// } -// -// /** -// * 文件自定义名称参数构建器 -// */ -// @Override -// protected void customizedSignNamesParamCreator() { -// keyParamList = Arrays.asList("审核人", "批准人"); -// customizedSignNames = Arrays.asList("技术负责人审核", "计量测试站主任批准"); -// } -// -// private void resolverApprovalTime(FilePrintRegister filePrintRegister, Map> ApprovalLogMap) { -// for (int i = 0; i < keyParamList.size(); i++) { -// if (ApprovalLogMap.containsKey(keyParamList.get(i))) { -// List approvalLogResponseList = ApprovalLogMap.get(keyParamList.get(i)); -// if (CollectionUtils.isNotEmpty(approvalLogResponseList)) { -// Optional optionalApprovalLogResponse = approvalLogResponseList.stream().findFirst(); -// if (optionalApprovalLogResponse.isPresent()) { -// Date nodeFinishTime = optionalApprovalLogResponse.get().getFinishTime(); -// if(!ObjectUtils.isEmpty(nodeFinishTime)){ -// Calendar calendar = Calendar.getInstance(); -// calendar.setTime(nodeFinishTime); -// filePrintRegister.getParams().put("y" + i, calendar.get(Calendar.YEAR)); -// filePrintRegister.getParams().put("m" + i, calendar.get(Calendar.MONTH) + 1); -// filePrintRegister.getParams().put("d" + i, calendar.get(Calendar.DAY_OF_MONTH)); -// } -// } -// } -// } -// } -// } -//} +package com.casic.missiles.service.listeners.register.data.site; + + +import com.casic.missiles.dto.business.certificate.ElectronicImage; +import com.casic.missiles.dto.business.certificate.RegisterCustomParameters; +import com.casic.missiles.dto.business.file.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; +import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; +import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.util.ObjectUtils; + +import java.util.*; +import java.util.stream.Collectors; + +@Component("待定") +public class CalibrationFileData extends PrintFileDataSupport implements PrintFileDataGeneric { + + @Value("${casic.template.calibration}") + private String calibrationTemplateName; + + @Override + public FilePrintRegister CustomizedPrintFileRegister(RegisterCustomParameters registerParameters, String templateFileDir) { + BusinessSiteExecutiveInfo metaData = (BusinessSiteExecutiveInfo) registerParameters.getCustomObject(); + //初始化,生成模板文件 + FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(calibrationTemplateName)); + //查询工作流审批记录 + List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); + Map> ApprovalLogMap = approvalLogList.stream() + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); + //定制化签名开发预处理,定制化参数 + customizedSignNamesParamCreator(); + //定制化签名开发 + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + filePrintRegister.setElectronicImageList(electronicSignList); + //填充定制化的参数 + filePrintRegister.setParams(siteFileParamCreator(metaData.getOrderId(), metaData.getId())); + filePrintRegister.getParams().putAll(populateCalibration(metaData)); + resolverApprovalTime(filePrintRegister, ApprovalLogMap); + return filePrintRegister; + } + + private Map populateCalibration(BusinessSiteExecutiveInfo metaData) { + Map calibrationDataParams = new HashMap<>(); + calibrationDataParams.put("siteExecutiveNo", metaData.getSiteExecutiveNo()); + calibrationDataParams.put("executiveAddress", metaData.getExecutiveAddress()); + calibrationDataParams.put("siteExecutiveName", metaData.getSiteExecutiveName()); +// environmentDataParams.put("zeroVoltage", metaData.getZeroGroundVoltage()); + calibrationDataParams.put("executiveEnvironment", metaData.getExecutiveEnvironment()); + return calibrationDataParams; + } + + /** + * 文件自定义名称参数构建器 + */ + @Override + protected void customizedSignNamesParamCreator() { + keyParamList = Arrays.asList("审核人", "批准人"); + customizedSignNames = Arrays.asList("技术负责人审核", "计量测试站主任批准"); + } + + private void resolverApprovalTime(FilePrintRegister filePrintRegister, Map> ApprovalLogMap) { + for (int i = 0; i < keyParamList.size(); i++) { + if (ApprovalLogMap.containsKey(keyParamList.get(i))) { + List approvalLogResponseList = ApprovalLogMap.get(keyParamList.get(i)); + if (CollectionUtils.isNotEmpty(approvalLogResponseList)) { + Optional optionalApprovalLogResponse = approvalLogResponseList.stream().findFirst(); + if (optionalApprovalLogResponse.isPresent()) { + Date nodeFinishTime = optionalApprovalLogResponse.get().getFinishTime(); + if(!ObjectUtils.isEmpty(nodeFinishTime)){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(nodeFinishTime); + filePrintRegister.getParams().put("y" + i, calendar.get(Calendar.YEAR)); + filePrintRegister.getParams().put("m" + i, calendar.get(Calendar.MONTH) + 1); + filePrintRegister.getParams().put("d" + i, calendar.get(Calendar.DAY_OF_MONTH)); + } + } + } + } + } + } +}