档案管理系统对接电子签章系统纯技术落地全流程实操指南

一、前期准备清单

本指南以国内通用开源/低代码档案原型(使用Spring Boot+Vue3)和自研轻量级电子签章API为对接对象,需提前准备:

  • 本地开发环境:JDK17、Node.js 18.17 LTS、Maven 3.8.8、MySQL 8.0
  • 基础系统源码:Spring Boot档案后端(https://github.com/ruoyi-vue-pro/ruoyi-vue-pro 分支3.8.5)、自研轻量级电子签章服务(https://github.com/weiliangy/esign-api-demo 分支v1.0.0)
  • 测试环境:两台可互访的虚拟机/本地端口映射后的设备

二、基础系统部署与测试

2.1 部署开源档案后端

1. 克隆源码:git clone -b 3.8.5 https://github.com/ruoyi-vue-pro/ruoyi-vue-pro.git

2. 配置application-dev.yml:修改数据库连接信息为本地/虚拟机MySQL,账号root,密码自定义

3. 初始化数据库:执行SQL目录下的ry-vue-pro.sql和ry_20240501.sql(最新更新SQL)

4. 启动后端:运行RuoYiApplication.java,访问http://localhost:8080/doc.html验证接口文档是否正常

2.2 部署轻量级电子签章服务

1. 克隆源码:git clone -b v1.0.0 https://github.com/weiliangy/esign-api-demo.git

2. 配置application.yml:无需修改,默认端口9090,使用内置H2数据库

档案管理系统对接电子签章系统纯技术落地全流程实操指南

3. 启动服务:运行EsignApplication.java,访问http://localhost:9090/esign/doc.html验证接口

4. 生成测试印章:调用POST /esign/seal/create接口,参数{"name":"测试单位","width":200,"height":200,"type":"CIRCLE"},保存返回的sealId(示例:1001)

三、核心集成逻辑设计

采用RESTful API单向回调架构,无状态通信,降低耦合:

  1. 档案系统上传归档文件(PDF)→ 生成临时文件链接
  2. 档案系统调用电子签章服务的“位置标注-自动签章”接口,传入PDF链接、sealId、签章位置(页号、XY坐标)
  3. 电子签章服务下载PDF→完成自动签章→返回签章后PDF的永久链接
  4. 档案系统替换归档文件为签章后PDF,更新归档状态为“已签章归档”

四、档案后端集成代码开发

4.1 新增电子签章服务配置类

在ruoyi-system模块下创建com.ruoyi.system.config.EsignConfig.java,内容如下:

```java package com.ruoyi.system.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "esign") @Data public class EsignConfig { // 电子签章服务地址 private String serverUrl = "http://localhost:9090"; // 测试印章ID(可改为配置数据库) private String defaultSealId = "1001"; // PDF签章位置:第1页,左上角X200,Y300 private Integer pageNum = 1; private Integer sealX = 200; private Integer sealY = 300; } ```

4.2 新增电子签章调用工具类

在ruoyi-common模块下创建com.ruoyi.common.utils.EsignUtils.java,使用RestTemplate:

```java package com.ruoyi.common.utils; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.ruoyi.system.config.EsignConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; import javax.annotation.PostConstruct; import java.util.HashMap; import java.util.Map; @Component public class EsignUtils { @Autowired private EsignConfig esignConfig; @Autowired private RestTemplate restTemplate; private static EsignUtils esignUtils; @PostConstruct public void init() { esignUtils = this; } / 自动签章PDF @param pdfUrl 待签章PDF临时链接 @return 签章后PDF永久链接 / public static String autoSign(String pdfUrl) { String url = esignUtils.esignConfig.getServerUrl() + "/esign/document/sign"; Map params = new HashMap<>(); params.put("pdfUrl", pdfUrl); params.put("sealId", esignUtils.esignConfig.getDefaultSealId()); params.put("pageNum", esignUtils.esignConfig.getPageNum()); params.put("sealX", esignUtils.esignConfig.getSealX()); params.put("sealY", esignUtils.esignConfig.getSealY()); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity> entity = new HttpEntity<>(params, headers); ResponseEntity response = esignUtils.restTemplate.postForEntity(url, entity, String.class); JSONObject json = JSON.parseObject(response.getBody()); if (json.getIntValue("code") != 200) { throw new RuntimeException("电子签章失败:" + json.getString("msg")); } return json.getString("data"); } } ```

4.3 修改归档文件上传接口

找到ruoyi-system模块下的com.ruoyi.system.controller.SysFileController.java,修改upload方法,在文件保存成功后添加自动签章逻辑:

```java // 原文件上传成功代码:返回SysFile对象sysFile // 添加自动签章代码(仅处理PDF文件) if (sysFile.getFileSuffix().equalsIgnoreCase("pdf")) { // 生成临时访问链接(有效期10分钟,用RuoYi自带的文件服务生成) String tempPdfUrl = FileUtils.getUrlPrefix() + sysFile.getUrl(); // 调用电子签章 String signedPdfUrl = EsignUtils.autoSign(tempPdfUrl); // 更新SysFile对象的url为签章后链接 sysFile.setUrl(signedPdfUrl); sysFileService.updateFile(sysFile); } // 原返回代码 return success(sysFile); ```

五、档案前端集成代码开发

5.1 修改文件上传组件提示

找到ruoyi-ui/src/components/Upload/index.vue,修改el-upload组件的accept属性为仅允许PDF,添加提示文本:

```vue 点击上传PDF档案(自动签章)
只能上传PDF文件,上传后将自动加盖测试印章
```

5.2 新增签章后PDF预览逻辑

在档案列表页面(如ruoyi-ui/src/views/system/archive/index.vue)的表格操作列添加“预览签章”按钮:

```vue
```

六、集成测试与问题排查

6.1 全流程测试

  1. 启动后端、电子签章服务、前端(npm install && npm run dev)
  2. 登录档案系统(默认账号admin,密码admin123)
  3. 进入“系统工具-文件管理”,上传本地测试PDF
  4. 点击“预览”,检查PDF第1页指定位置是否有测试印章

6.2 常见问题排查

  • 电子签章失败:连接超时:检查两台设备是否互访,修改EsignConfig.java的serverUrl为对应IP
  • PDF无法预览:检查签章后PDF链接是否可直接在浏览器打开,可能是文件服务权限问题
  • 签章位置偏移:调整EsignConfig.java的sealX、sealY,坐标系为PDF左下角为原点
AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统