diff --git a/micro-modules/micro-print/libs/esspdf-client-1.5.0-SNAPSHOT.jar b/micro-modules/micro-print/libs/esspdf-client-1.5.0-SNAPSHOT.jar
new file mode 100644
index 0000000..bf85722
Binary files /dev/null and b/micro-modules/micro-print/libs/esspdf-client-1.5.0-SNAPSHOT.jar differ
diff --git a/micro-modules/micro-print/libs/jackson-all-2.0.1.jar b/micro-modules/micro-print/libs/jackson-all-2.0.1.jar
new file mode 100644
index 0000000..9e04bc6
Binary files /dev/null and b/micro-modules/micro-print/libs/jackson-all-2.0.1.jar differ
diff --git a/micro-modules/micro-print/libs/jackson-module-jaxb-annotations-2.0.6.jar b/micro-modules/micro-print/libs/jackson-module-jaxb-annotations-2.0.6.jar
new file mode 100644
index 0000000..f8d5275
Binary files /dev/null and b/micro-modules/micro-print/libs/jackson-module-jaxb-annotations-2.0.6.jar differ
diff --git a/micro-modules/micro-print/pom.xml b/micro-modules/micro-print/pom.xml
index 4446146..4919156 100644
--- a/micro-modules/micro-print/pom.xml
+++ b/micro-modules/micro-print/pom.xml
@@ -201,6 +201,27 @@
com.fasterxml.jackson.dataformat
jackson-dataformat-xml
+
+ com.esspdf
+ esspdf-common
+ 1.5.0
+ system
+ ${project.basedir}/libs/esspdf-client-1.5.0-SNAPSHOT.jar
+
+
+ com.jackson
+ jackson-common
+ 2.0.1
+ system
+ ${project.basedir}/libs/jackson-all-2.0.1.jar
+
+
+ com.jaxb
+ jaxb-common
+ 2.0.6
+ system
+ ${project.basedir}/libs/jackson-module-jaxb-annotations-2.0.6.jar
+
diff --git a/micro-modules/micro-print/src/main/java/com/sinosoft/print/core/files/WordToPdfConverter.java b/micro-modules/micro-print/src/main/java/com/sinosoft/print/core/files/WordToPdfConverter.java
index 7b1e909..6ccd59d 100644
--- a/micro-modules/micro-print/src/main/java/com/sinosoft/print/core/files/WordToPdfConverter.java
+++ b/micro-modules/micro-print/src/main/java/com/sinosoft/print/core/files/WordToPdfConverter.java
@@ -32,6 +32,7 @@ import java.io.*;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -152,6 +153,35 @@ public void mergeDocuments(List inputStreams, OutputStream outputSt
// 调用方应负责在使用完毕后清理返回的临时文件
}
+ public static void main(String[] args) throws Exception {
+
+ // ================== 1. 准备 PDF 文件 ==================
+ File pdf1 = new File("C:\\Users\\szy\\Desktop\\FZ接口\\a.pdf");
+ File pdf2 = new File("C:\\Users\\szy\\Desktop\\FZ接口\\b.pdf");
+
+ List pdfFiles = Arrays.asList(pdf1, pdf2);
+
+ // ================== 2. 输出文件 ==================
+ File outputFile = new File("C:\\Users\\szy\\Desktop\\FZ接口\\c.pdf");
+
+ try (OutputStream os = new FileOutputStream(outputFile)) {
+ new WordToPdfConverter().mergePdfDocumentsWithPageNumbers(
+ pdfFiles,
+ os,
+ 1, // startPageNumber
+ 300 // totalPages(可写预估)
+ );
+ }
+
+ // ================== 3. 简单校验 ==================
+ if (!outputFile.exists()) {
+ throw new RuntimeException("❌ 合并失败,文件不存在");
+ }
+
+ System.out.println("✅ PDF 合并成功");
+ System.out.println("📁 输出路径:" + outputFile.getAbsolutePath());
+ }
+
public void mergePdfDocumentsWithPageNumbers(
List pdfFiles,
OutputStream finalOutput,
diff --git a/micro-modules/micro-print/src/main/java/com/sinosoft/print/core/sign/strategy/SignByCA.java b/micro-modules/micro-print/src/main/java/com/sinosoft/print/core/sign/strategy/SignByCA.java
index 70c1e4b..8b13522 100644
--- a/micro-modules/micro-print/src/main/java/com/sinosoft/print/core/sign/strategy/SignByCA.java
+++ b/micro-modules/micro-print/src/main/java/com/sinosoft/print/core/sign/strategy/SignByCA.java
@@ -1,7 +1,7 @@
package com.sinosoft.print.core.sign.strategy;
-//import cn.org.bjca.seal.esspdf.client.message.ChannelMessage;
-//import cn.org.bjca.seal.esspdf.client.tools.ESSPDFClientTool;
+import cn.org.bjca.seal.esspdf.client.message.ChannelMessage;
+import cn.org.bjca.seal.esspdf.client.tools.ESSPDFClientTool;
import com.sinosoft.common.core.exception.ServiceException;
import com.sinosoft.print.core.constant.PrintTempConstants;
import com.sinosoft.print.domain.vo.SignServiceConfigVo;
@@ -18,22 +18,22 @@ public class SignByCA implements SignInterface {
@Override
public byte[] sign(byte[] signFile, String signNumber,SignServiceConfigVo configVo,String fileName, Map signParams) {
-// try {
-// ESSPDFClientTool tool = new ESSPDFClientTool(configVo.getIp(),configVo.getPort().intValue());
-// tool.setRespTimeout(configVo.getReadTimeout().intValue());
-// tool.setTimeout(configVo.getConnectTimeout().intValue());
-// ChannelMessage message = tool.pdfSign(signNumber,signFile);
-// if(PrintTempConstants.SIGN_SUCESS_CODE.equals(message.getStatusCode())) {
-// return message.getBody();
-// }else {
-// throw new ServiceException(message.getStatusInfo());
-// }
-// } catch (Exception e) {
-// throw new ServiceException("签章失败"+e.getMessage());
-// }
+ try {
+ ESSPDFClientTool tool = new ESSPDFClientTool(configVo.getIp(),configVo.getPort().intValue());
+ tool.setRespTimeout(configVo.getReadTimeout().intValue());
+ tool.setTimeout(configVo.getConnectTimeout().intValue());
+ ChannelMessage message = tool.pdfSign(signNumber,signFile);
+ if(PrintTempConstants.SIGN_SUCESS_CODE.equals(message.getStatusCode())) {
+ return message.getBody();
+ }else {
+ throw new ServiceException(message.getStatusInfo());
+ }
+ } catch (Exception e) {
+ throw new ServiceException("签章失败"+e.getMessage());
+ }
//去除私有包
- return new byte[0];
+// return new byte[0];
}
@Override
diff --git a/micro-modules/micro-print/src/main/java/com/sinosoft/print/domain/ContPrintRequestReturn.java b/micro-modules/micro-print/src/main/java/com/sinosoft/print/domain/ContPrintRequestReturn.java
index 313d3d3..e61560f 100644
--- a/micro-modules/micro-print/src/main/java/com/sinosoft/print/domain/ContPrintRequestReturn.java
+++ b/micro-modules/micro-print/src/main/java/com/sinosoft/print/domain/ContPrintRequestReturn.java
@@ -1,7 +1,10 @@
package com.sinosoft.print.domain;
+import com.sinosoft.print.domain.bo.BiliCard;
import lombok.Data;
+import java.util.List;
+
/**
* 保单打印结果回传请求体详细信息
*/
@@ -20,5 +23,7 @@ public class ContPrintRequestReturn {
//打印日期
String printDate;
//打印时间
- String printTime;
+ String printSize;
+ //单证信息
+ List biliCardList;
}
diff --git a/micro-modules/micro-print/src/main/java/com/sinosoft/print/domain/bo/BiliCard.java b/micro-modules/micro-print/src/main/java/com/sinosoft/print/domain/bo/BiliCard.java
new file mode 100644
index 0000000..0e47f6e
--- /dev/null
+++ b/micro-modules/micro-print/src/main/java/com/sinosoft/print/domain/bo/BiliCard.java
@@ -0,0 +1,15 @@
+package com.sinosoft.print.domain.bo;
+
+import lombok.Data;
+
+/**
+ * Description:
+ * Author:szy
+ * Create:2026/06/04
+ */
+@Data
+public class BiliCard {
+ private String bilicardMain;
+
+ private String bilicardnoMain;
+}
diff --git a/micro-modules/micro-print/src/main/java/com/sinosoft/print/domain/bo/ContPrintCallbackReqBo.java b/micro-modules/micro-print/src/main/java/com/sinosoft/print/domain/bo/ContPrintCallbackReqBo.java
index 8fe719d..abbb70a 100644
--- a/micro-modules/micro-print/src/main/java/com/sinosoft/print/domain/bo/ContPrintCallbackReqBo.java
+++ b/micro-modules/micro-print/src/main/java/com/sinosoft/print/domain/bo/ContPrintCallbackReqBo.java
@@ -2,6 +2,8 @@ package com.sinosoft.print.domain.bo;
import lombok.Data;
+import java.util.List;
+
@Data
public class ContPrintCallbackReqBo {
//文件名
@@ -13,11 +15,15 @@ public class ContPrintCallbackReqBo {
//打印日期
private String printDate;
//打印时间
- private String printTime;
+ private String printSize;
//打印类型
private String contType;
//流水号
String serialNo;
//保单号
String grpContNo;
+ //单证信息
+ List biliCardList;
+
}
+
diff --git a/micro-modules/micro-print/src/main/java/com/sinosoft/print/service/impl/ContPrintCallbackServiceImpl.java b/micro-modules/micro-print/src/main/java/com/sinosoft/print/service/impl/ContPrintCallbackServiceImpl.java
index 09ce915..d32a300 100644
--- a/micro-modules/micro-print/src/main/java/com/sinosoft/print/service/impl/ContPrintCallbackServiceImpl.java
+++ b/micro-modules/micro-print/src/main/java/com/sinosoft/print/service/impl/ContPrintCallbackServiceImpl.java
@@ -4,9 +4,12 @@ import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.dtflys.forest.exceptions.ForestNetworkException;
import com.dtflys.forest.exceptions.ForestRuntimeException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.sinosoft.print.domain.ClientInfoReturn;
import com.sinosoft.print.domain.ContPrintRequestReturn;
import com.sinosoft.print.domain.InputData;
+import com.sinosoft.print.domain.bo.BiliCard;
import com.sinosoft.print.domain.bo.ContPrintCallbackReqBo;
import com.sinosoft.print.domain.bo.ContPrintCallbackReturnBo;
import com.sinosoft.print.domain.PrintConttrackLog;
@@ -56,7 +59,7 @@ public class ContPrintCallbackServiceImpl implements IContPrintCallbackService {
for (Map.Entry entry : callbackReqMap.entrySet()) {
String fileName = entry.getKey();
JsonNode jsonNode = entry.getValue();
- if (jsonNode == null || !jsonNode.has("PrintDate") || !jsonNode.has("PrintTime") || !jsonNode.has("PrintFlag") || !jsonNode.has("ContType")) {
+ if (jsonNode == null) {
log.warn("文件:[{}] 数据或关键字段为空", fileName);
resultList.add(new PrintResultNotifyInfoObj(ResultProcStatusEnum.EMPTY_FILE_NAME, fileName));
continue;
@@ -74,11 +77,23 @@ public class ContPrintCallbackServiceImpl implements IContPrintCallbackService {
private ResultProcStatusEnum processSingleData(String fileName, JsonNode jsonNode) {
ContPrintCallbackReqBo callbackReq = new ContPrintCallbackReqBo();
callbackReq.setPringName(fileName);
- callbackReq.setPrintDate(jsonNode.get("PrintDate").asText());
- callbackReq.setPrintTime(jsonNode.get("PrintTime").asText());
- callbackReq.setPrintResult(jsonNode.get("PrintFlag").asText());
- callbackReq.setContType(jsonNode.get("ContType").asText());
+ callbackReq.setPrintDate(jsonNode.get("PRINT_DATE").asText());
+ callbackReq.setPrintResult(jsonNode.get("PRINT_STATUS").asText());
+ callbackReq.setContType(jsonNode.get("DM").asText());
callbackReq.setErrorMsg(jsonNode.has("ErrorMsg") ? jsonNode.get("ErrorMsg").asText() : null);
+ callbackReq.setGrpContNo(jsonNode.get("POLICY_NO").asText());
+ callbackReq.setSerialNo(jsonNode.get("PRINT_ID").asText());
+ callbackReq.setPrintSize(jsonNode.get("PRINT_SIZE").asText());
+
+ JsonNode bilcardNode = jsonNode.get("BILCARD_LIST");
+ ObjectMapper objectMapper = new ObjectMapper();
+ List biliCards = objectMapper.convertValue(
+ bilcardNode,
+ new TypeReference>() {}
+ );
+ callbackReq.setBiliCardList(biliCards);
+
+
// 根据文件名查询数据库,获取业务流水号和保单号
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PrintConttrackLog::getXmlfileName, fileName);
@@ -88,7 +103,7 @@ public class ContPrintCallbackServiceImpl implements IContPrintCallbackService {
return ResultProcStatusEnum.ERROR;
}
callbackReq.setSerialNo(printConttrackLog.getBussinessNo());
- callbackReq.setGrpContNo(printConttrackLog.getContNo());
+// callbackReq.setGrpContNo(printConttrackLog.getContNo());
log.info("文件:[{}] 查询到业务流水号:[{}],保单号:[{}]", fileName, printConttrackLog.getBussinessNo(), printConttrackLog.getContNo());
return processCallbackReq(callbackReq);
@@ -108,7 +123,8 @@ public class ContPrintCallbackServiceImpl implements IContPrintCallbackService {
contPrintRequestReturn.setPrintFlag(callbackReq.getPrintResult());
contPrintRequestReturn.setErrorMsg(callbackReq.getErrorMsg());
contPrintRequestReturn.setPrintDate(callbackReq.getPrintDate());
- contPrintRequestReturn.setPrintTime(callbackReq.getPrintTime());
+ contPrintRequestReturn.setPrintSize(callbackReq.getPrintSize());
+ contPrintRequestReturn.setBiliCardList(callbackReq.getBiliCardList());
//保单打印请求体
InputData inputData = new InputData();
inputData.setResponse(List.of(contPrintRequestReturn));
diff --git a/micro-modules/micro-print/src/main/java/com/sinosoft/print/service/impl/FileUploadAndDownService.java b/micro-modules/micro-print/src/main/java/com/sinosoft/print/service/impl/FileUploadAndDownService.java
index 7d895ec..851be40 100644
--- a/micro-modules/micro-print/src/main/java/com/sinosoft/print/service/impl/FileUploadAndDownService.java
+++ b/micro-modules/micro-print/src/main/java/com/sinosoft/print/service/impl/FileUploadAndDownService.java
@@ -99,6 +99,7 @@ public class FileUploadAndDownService {
String printName = jsonObject.getString(PrintTempConstants.CONT_PRINT_NAME);
String system = jsonObject.getString(PrintTempConstants.CONT_PRINT_FROM_SYSTEM);
String XmlData =PrintTempConstants.XML_DECLARATION + JSONUtil.toXmlStr(JSONUtil.parse(Xml0bject));
+ log.info("保单打印报文xml:" + XmlData);
if(StringUtils.isEmpty(XmlData)){
return failedResponse("打印请求数据不能为空");
//throw new RuntimeException("打印请求数据不能为空");