From d0743ebc6647eac0d9b155b41a6ed50700f8cebb Mon Sep 17 00:00:00 2001
From: RuicyWu <1063154311@qq.com>
Date: Sat, 2 Aug 2025 19:26:06 +0800
Subject: [PATCH] =?UTF-8?q?=E5=9B=BD=E9=80=9A=E9=A2=86=E5=9F=9Fe=E7=AD=BE?=
=?UTF-8?q?=E5=AE=9D=E9=9B=86=E6=88=90=E5=BC=80=E5=8F=91=E5=AE=8C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
esign/pom.xml | 17 +
.../seeyon/apps/esign/GtlyEsignPluginApi.java | 44 ++
.../esign/config/EsignConfigProvider.java | 20 +
.../apps/esign/constants/EsignApiUrl.java | 17 +
.../esign/constants/EsignConfigConstants.java | 37 +
.../controller/EsignCallBackController.java | 86 +++
.../seeyon/apps/esign/core/SignApiClient.java | 10 +
.../apps/esign/core/SignApiClientFactory.java | 21 +
.../seeyon/apps/esign/core/SignParams.java | 22 +
.../fieldCtrl/ContractCompareFieldCtrl.java | 64 ++
.../seeyon/apps/esign/form/ClauseFactor.java | 19 +
.../seeyon/apps/esign/form/EnumMapUtils.java | 108 +++
.../seeyon/apps/esign/form/FormColumn.java | 32 +
.../apps/esign/form/FormDataOperator.java | 630 ++++++++++++++++++
.../apps/esign/form/FormExportUtil.java | 64 ++
.../seeyon/apps/esign/form/FormFieldVo.java | 22 +
.../apps/esign/form/FormUpdateField.java | 57 ++
.../apps/esign/form/FormWhereCondition.java | 127 ++++
.../apps/esign/form/QueryWhereCondition.java | 154 +++++
.../interceptor/AuthExcludeInterceptor.java | 22 +
.../com/seeyon/apps/esign/node/EsignNode.java | 296 ++++++++
.../apps/esign/node/EsignOrgAuthNode.java | 38 ++
.../apps/esign/node/EsignPersonAuthNode.java | 56 ++
.../com/seeyon/apps/esign/po/AuthPsnInfo.java | 61 ++
.../seeyon/apps/esign/po/ContractFile.java | 61 ++
.../seeyon/apps/esign/po/EsignApiHeader.java | 220 ++++++
.../seeyon/apps/esign/po/EsignBaseResp.java | 31 +
.../apps/esign/po/EsignCallbackParams.java | 46 ++
.../seeyon/apps/esign/po/EsignException.java | 36 +
.../apps/esign/po/EsignFileUploadParams.java | 49 ++
.../apps/esign/po/EsignHttpResponse.java | 27 +
.../com/seeyon/apps/esign/po/EsignToken.java | 34 +
.../apps/esign/po/GetUploadUrlResp.java | 23 +
.../apps/esign/po/NormalSignFieldConfig.java | 31 +
.../seeyon/apps/esign/po/OrgInitiator.java | 22 +
.../seeyon/apps/esign/po/PsnAuthConfig.java | 40 ++
.../apps/esign/po/PsnAuthPageConfig.java | 45 ++
.../seeyon/apps/esign/po/PsnInitiator.java | 13 +
.../apps/esign/po/RemarkSignFieldConfig.java | 32 +
.../com/seeyon/apps/esign/po/RestUser.java | 32 +
.../com/seeyon/apps/esign/po/SignField.java | 41 ++
.../apps/esign/po/SignFieldPosition.java | 41 ++
.../com/seeyon/apps/esign/po/SignFile.java | 22 +
.../seeyon/apps/esign/po/SignFlowConfig.java | 127 ++++
.../apps/esign/po/SignFlowInitiator.java | 37 +
.../java/com/seeyon/apps/esign/po/Signer.java | 64 ++
.../apps/esign/po/TemplateComponent.java | 31 +
.../seeyon/apps/esign/po/TemplateInfo.java | 22 +
.../com/seeyon/apps/esign/po/Transactor.java | 13 +
.../apps/esign/service/EsignApiClient.java | 25 +
.../apps/esign/service/EsignAuthService.java | 35 +
.../esign/service/EsignByTemplateService.java | 57 ++
.../service/EsignByUploadFileService.java | 190 ++++++
.../service/EsignCallbackBizService.java | 96 +++
.../service/EsignFileTemplateService.java | 144 ++++
.../apps/esign/service/SealService.java | 75 +++
.../apps/esign/service/TokenCacheManager.java | 101 +++
.../apps/esign/utils/AttachmentUtils.java | 26 +
.../seeyon/apps/esign/utils/EnHancedMap.java | 17 +
.../apps/esign/utils/EsignHttpCfgHelper.java | 471 +++++++++++++
.../apps/esign/utils/EsignHttpHelper.java | 83 +++
.../apps/esign/utils/EsignRequestType.java | 38 ++
.../com/seeyon/apps/esign/utils/FileUtil.java | 530 +++++++++++++++
.../apps/esign/utils/HmacSHA256Util.java | 27 +
.../seeyon/apps/esign/utils/HttpClient.java | 499 ++++++++++++++
.../seeyon/apps/esign/utils/JsonCleaner.java | 28 +
.../com/seeyon/apps/esign/utils/ProtUtil.java | 89 +++
.../rest/resources/EsignTemplateResource.java | 49 ++
.../main/resources/needless_check_login.xml | 328 +++++++++
.../needless_check_login_recheck.xml | 433 ++++++++++++
esign/src/test/java/TestOne.java | 7 +
.../cfgHome/component/src_esign/pluginCfg.xml | 6 +
.../src_esign/spring/spring-bean.xml | 26 +
.../src_esign/spring/spring-controller.xml | 6 +
.../css/contractCompareBtn.css | 36 +
.../css/img/icon16.png | Bin 0 -> 103273 bytes
.../html/contractCompare.html | 104 +++
.../js/compareBiz.js | 99 +++
.../js/compareinit.js | 207 ++++++
79 files changed, 6996 insertions(+)
create mode 100644 esign/pom.xml
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/GtlyEsignPluginApi.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/config/EsignConfigProvider.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/constants/EsignApiUrl.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/constants/EsignConfigConstants.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/controller/EsignCallBackController.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/core/SignApiClient.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/core/SignApiClientFactory.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/core/SignParams.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/fieldCtrl/ContractCompareFieldCtrl.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/form/ClauseFactor.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/form/EnumMapUtils.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/form/FormColumn.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/form/FormDataOperator.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/form/FormExportUtil.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/form/FormFieldVo.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/form/FormUpdateField.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/form/FormWhereCondition.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/form/QueryWhereCondition.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/interceptor/AuthExcludeInterceptor.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/node/EsignNode.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/node/EsignOrgAuthNode.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/node/EsignPersonAuthNode.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/AuthPsnInfo.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/ContractFile.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/EsignApiHeader.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/EsignBaseResp.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/EsignCallbackParams.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/EsignException.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/EsignFileUploadParams.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/EsignHttpResponse.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/EsignToken.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/GetUploadUrlResp.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/NormalSignFieldConfig.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/OrgInitiator.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/PsnAuthConfig.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/PsnAuthPageConfig.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/PsnInitiator.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/RemarkSignFieldConfig.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/RestUser.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/SignField.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/SignFieldPosition.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/SignFile.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/SignFlowConfig.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/SignFlowInitiator.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/Signer.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/TemplateComponent.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/TemplateInfo.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/po/Transactor.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/service/EsignApiClient.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/service/EsignAuthService.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/service/EsignByTemplateService.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/service/EsignByUploadFileService.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/service/EsignCallbackBizService.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/service/EsignFileTemplateService.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/service/SealService.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/service/TokenCacheManager.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/utils/AttachmentUtils.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/utils/EnHancedMap.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/utils/EsignHttpCfgHelper.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/utils/EsignHttpHelper.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/utils/EsignRequestType.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/utils/FileUtil.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/utils/HmacSHA256Util.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/utils/HttpClient.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/utils/JsonCleaner.java
create mode 100644 esign/src/main/java/com/seeyon/apps/esign/utils/ProtUtil.java
create mode 100644 esign/src/main/java/com/seeyon/ctp/rest/resources/EsignTemplateResource.java
create mode 100644 esign/src/main/resources/needless_check_login.xml
create mode 100644 esign/src/main/resources/needless_check_login_recheck.xml
create mode 100644 esign/src/test/java/TestOne.java
create mode 100644 seeyon/WEB-INF/cfgHome/component/src_esign/pluginCfg.xml
create mode 100644 seeyon/WEB-INF/cfgHome/component/src_esign/spring/spring-bean.xml
create mode 100644 seeyon/WEB-INF/cfgHome/component/src_esign/spring/spring-controller.xml
create mode 100644 seeyon/apps_res/cap/customerCtrlResources/esignContractCompareBtnResources/css/contractCompareBtn.css
create mode 100644 seeyon/apps_res/cap/customerCtrlResources/esignContractCompareBtnResources/css/img/icon16.png
create mode 100644 seeyon/apps_res/cap/customerCtrlResources/esignContractCompareBtnResources/html/contractCompare.html
create mode 100644 seeyon/apps_res/cap/customerCtrlResources/esignContractCompareBtnResources/js/compareBiz.js
create mode 100644 seeyon/apps_res/cap/customerCtrlResources/esignContractCompareBtnResources/js/compareinit.js
diff --git a/esign/pom.xml b/esign/pom.xml
new file mode 100644
index 0000000..48c00c6
--- /dev/null
+++ b/esign/pom.xml
@@ -0,0 +1,17 @@
+
+
+ 4.0.0
+
+ com.seeyon.apps
+ esign
+ 1.0-SNAPSHOT
+
+
+ 8
+ 8
+ UTF-8
+
+
+
\ No newline at end of file
diff --git a/esign/src/main/java/com/seeyon/apps/esign/GtlyEsignPluginApi.java b/esign/src/main/java/com/seeyon/apps/esign/GtlyEsignPluginApi.java
new file mode 100644
index 0000000..792835f
--- /dev/null
+++ b/esign/src/main/java/com/seeyon/apps/esign/GtlyEsignPluginApi.java
@@ -0,0 +1,44 @@
+package com.seeyon.apps.esign;
+
+import com.seeyon.apps.common.plugin.api.APluginInfoApi;
+import com.seeyon.apps.common.plugin.vo.ConfigVo;
+import com.seeyon.apps.esign.constants.EsignConfigConstants;
+import org.springframework.stereotype.Component;
+
+@Component
+public class GtlyEsignPluginApi extends APluginInfoApi {
+ public GtlyEsignPluginApi() {
+ }
+
+ public String getPluginId() {
+ System.out.println(EsignConfigConstants.getPluginId());
+ return EsignConfigConstants.getPluginId();
+ }
+
+ public String getCreateUser() {
+ return "橙阳科技";
+ }
+
+ public String getDescription() {
+ return "长数鸿翼网盘集成";
+ }
+
+ public ConfigVo getDefaultConfig() {
+ ConfigVo configVo = new ConfigVo();
+ EsignConfigConstants[] var2 = EsignConfigConstants.values();
+ int var3 = var2.length;
+
+ for(int var4 = 0; var4 < var3; ++var4) {
+ EsignConfigConstants value = var2[var4];
+ if (value != EsignConfigConstants.plugin) {
+ configVo.getDevParams().put(value.name(), value.getDefaultValue());
+ configVo.getProdParams().put(value.name(), value.getDefaultValue());
+ configVo.getParamMap().put(value.name(), value.getDescription());
+ }
+ }
+
+ return configVo;
+ }
+
+}
+
diff --git a/esign/src/main/java/com/seeyon/apps/esign/config/EsignConfigProvider.java b/esign/src/main/java/com/seeyon/apps/esign/config/EsignConfigProvider.java
new file mode 100644
index 0000000..40ff2a7
--- /dev/null
+++ b/esign/src/main/java/com/seeyon/apps/esign/config/EsignConfigProvider.java
@@ -0,0 +1,20 @@
+package com.seeyon.apps.esign.config;
+
+import com.seeyon.apps.common.config.ICstConfigApi;
+import com.seeyon.apps.common.plugin.vo.ConfigVo;
+import com.seeyon.apps.esign.constants.EsignConfigConstants;
+import com.seeyon.ctp.common.AppContext;
+import org.springframework.stereotype.Component;
+
+import static com.seeyon.apps.esign.constants.EsignConfigConstants.getPluginId;
+
+@Component
+public class EsignConfigProvider {
+
+ protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi");
+
+ public String getBizConfigByKey(EsignConfigConstants key) {
+ ConfigVo config = cstConfigApi.getConfig(getPluginId());
+ return config.getParamVal(key.name());
+ }
+}
diff --git a/esign/src/main/java/com/seeyon/apps/esign/constants/EsignApiUrl.java b/esign/src/main/java/com/seeyon/apps/esign/constants/EsignApiUrl.java
new file mode 100644
index 0000000..289e49b
--- /dev/null
+++ b/esign/src/main/java/com/seeyon/apps/esign/constants/EsignApiUrl.java
@@ -0,0 +1,17 @@
+package com.seeyon.apps.esign.constants;
+
+public class EsignApiUrl {
+ public static final String QUERY_SEAL_URL = "/v3/seals/org-own-seal-list";
+ public static final String SEAL_GRANT_URL = "/v3/seals/org-seals/internal-auth";
+ public static final String SIGN_START_URL = "/v3/sign-flow/{signFlowId}/start";
+ public static final String SIGN_BY_FILE_URL = "/v3/sign-flow/create-by-file";
+ public static final String GET_UPLOAD_FILE_URL = "/v3/files/file-upload-url";
+ public static final String CONTRACT_DOWNLOAD_URL= "/v3/sign-flow/{signFlowId}/file-download-url";
+ public static final String PERSON_AUTH_URL = "/v3/psn-auth-url";
+ public static final String SIGN_POSITION_URL = "/v3/files/{fileId}/keyword-positions";
+ public static final String QUERY_TEMPLATES_URL = "/v3/sign-templates";
+ public static final String QUERY_TEMPLATE_DETAIL_URL = "/v3/sign-templates/detail";
+ public static final String QUERY_ORGINFO = "/v3/organizations/identity-info";
+ public static final String CONTRACT_COMPARE_GETURL = "/v3/contract-compare-url";
+ public static final String TOKEN_GET_URL = "/v1/oauth2/access_token";
+}
diff --git a/esign/src/main/java/com/seeyon/apps/esign/constants/EsignConfigConstants.java b/esign/src/main/java/com/seeyon/apps/esign/constants/EsignConfigConstants.java
new file mode 100644
index 0000000..91c768f
--- /dev/null
+++ b/esign/src/main/java/com/seeyon/apps/esign/constants/EsignConfigConstants.java
@@ -0,0 +1,37 @@
+package com.seeyon.apps.esign.constants;
+
+public enum EsignConfigConstants {
+ plugin("src_esign",""),
+ APP_ID("7438886882",""),
+ APP_SECRET("325c8cc6c2a303d6cf1fb5657a16e591",""),
+ OA_HOST("",""),
+ ESIGN_HOST("",""),
+ SIGN_SERVICE_PROVIDER("ESIGN",""),
+ UNITNAME("","平台方组织名称"),
+ FORMEDITLOGINNAME("","表单修改登录名"),
+ updateAccountName("表单",""),
+ getTokenUrl("/seeyon/rest/token/","调用获取TOKEN地址"),
+ nodeTokenUrl("/seeyon/rest/flow/notification/","超级节点回调URL"),
+ restName("",""),
+ restPwd("",""),
+ ;
+
+ private String defaultValue;
+ private String description;
+
+ EsignConfigConstants(String defaultValue,String description) {
+ this.defaultValue = defaultValue;
+ this.description = description;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+ public static String getPluginId() {
+ return plugin.defaultValue;
+ }
+}
diff --git a/esign/src/main/java/com/seeyon/apps/esign/controller/EsignCallBackController.java b/esign/src/main/java/com/seeyon/apps/esign/controller/EsignCallBackController.java
new file mode 100644
index 0000000..4eb1941
--- /dev/null
+++ b/esign/src/main/java/com/seeyon/apps/esign/controller/EsignCallBackController.java
@@ -0,0 +1,86 @@
+package com.seeyon.apps.esign.controller;
+
+import cn.hutool.log.Log;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.seeyon.apps.esign.po.EsignCallbackParams;
+import com.seeyon.apps.esign.service.EsignByUploadFileService;
+import com.seeyon.apps.esign.service.EsignCallbackBizService;
+import com.seeyon.ctp.common.AppContext;
+import com.seeyon.ctp.common.controller.BaseController;
+
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import java.io.BufferedReader;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class EsignCallBackController extends BaseController {
+
+ private static final Log log = Log.get(EsignCallBackController.class);
+
+ private EsignByUploadFileService esignByUploadFileService = (EsignByUploadFileService) AppContext.getBean("esignByUploadFileService");
+ private EsignCallbackBizService esignCallbackBizService = (EsignCallbackBizService) AppContext.getBean("esignCallbackBizService");
+ private ConcurrentHashMap callbackMap = new ConcurrentHashMap<>();
+
+
+ public void callback(HttpServletRequest request, HttpServletResponse response) {
+ try {
+ log.info("签署回调触发");
+ // 签署回调处理,改变超级节点状态
+ String formId = request.getParameter("formId");
+ String tableName = request.getParameter("tablename");
+ String updatefield = request.getParameter("updatefield");
+ String statusfield = request.getParameter("statusfield");
+ BufferedReader reader = request.getReader();
+ StringBuilder sb = new StringBuilder();
+ String line;
+ while ((line = reader.readLine()) != null) {
+ sb.append(line);
+ }
+ String body = sb.toString();
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ EsignCallbackParams callbackParams = mapper.readValue(body, new TypeReference() {
+ });
+ String flowId = callbackParams.getSignFlowId();
+ String action = callbackParams.getAction();
+ if(!action.equals("SIGN_MISSON_COMPLETE")) {
+ response.setStatus(HttpServletResponse.SC_OK);
+ return;
+ }
+ if(callbackMap.contains(flowId)) {
+ response.setStatus(HttpServletResponse.SC_OK);
+ return;
+ }else {
+ callbackMap.put(flowId, "1");
+ }
+ if(callbackParams.getSignResult() == 2) {
+ Map fileInfo = esignByUploadFileService.getDownloadFileInfo(flowId);
+ esignCallbackBizService.handleSuccessSignCallbackBiz(tableName,updatefield,statusfield,formId,(String)fileInfo.get("downloadUrl"),(String)fileInfo.get("fileName"));
+ }else {
+ esignCallbackBizService.handleFailSignCallbackBiz(tableName,statusfield,formId,callbackParams.getResultDescription());
+ }
+ //下载合同
+ response.setContentType("application/json;charset=UTF-8");
+ response.setCharacterEncoding("UTF-8");
+ response.setStatus(HttpServletResponse.SC_OK);
+ try (OutputStream out = response.getOutputStream()) {
+ out.write("{\"code\":\"200\",\"msg\":\"success\"}".getBytes(StandardCharsets.UTF_8));
+ out.flush();
+ }
+ log.info("回调处理完成");
+ callbackMap.remove(flowId);
+ return;
+ } catch (Exception e) {
+ log.error("回调处理失败", e);
+ }
+ response.setStatus(HttpServletResponse.SC_OK);
+// response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
+}
diff --git a/esign/src/main/java/com/seeyon/apps/esign/core/SignApiClient.java b/esign/src/main/java/com/seeyon/apps/esign/core/SignApiClient.java
new file mode 100644
index 0000000..2a0a944
--- /dev/null
+++ b/esign/src/main/java/com/seeyon/apps/esign/core/SignApiClient.java
@@ -0,0 +1,10 @@
+package com.seeyon.apps.esign.core;
+
+public interface SignApiClient {
+
+ public String signByFile();
+ public String signByTemplate();
+ public String downloadContract();
+
+
+}
diff --git a/esign/src/main/java/com/seeyon/apps/esign/core/SignApiClientFactory.java b/esign/src/main/java/com/seeyon/apps/esign/core/SignApiClientFactory.java
new file mode 100644
index 0000000..775426a
--- /dev/null
+++ b/esign/src/main/java/com/seeyon/apps/esign/core/SignApiClientFactory.java
@@ -0,0 +1,21 @@
+package com.seeyon.apps.esign.core;
+
+import com.seeyon.apps.esign.config.EsignConfigProvider;
+import com.seeyon.apps.esign.constants.EsignConfigConstants;
+import com.seeyon.apps.esign.service.EsignApiClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SignApiClientFactory {
+
+ @Autowired
+ private EsignConfigProvider configProvider;
+
+ public SignApiClient getSignApiClient() {
+ if(configProvider.getBizConfigByKey(EsignConfigConstants.SIGN_SERVICE_PROVIDER).equals("ESIGN")) {
+ return new EsignApiClient();
+ }
+ return null;
+ }
+}
diff --git a/esign/src/main/java/com/seeyon/apps/esign/core/SignParams.java b/esign/src/main/java/com/seeyon/apps/esign/core/SignParams.java
new file mode 100644
index 0000000..8ce28a3
--- /dev/null
+++ b/esign/src/main/java/com/seeyon/apps/esign/core/SignParams.java
@@ -0,0 +1,22 @@
+package com.seeyon.apps.esign.core;
+
+public abstract class SignParams {
+ private String appKey;
+ private String appSecret;
+
+ public String getAppKey() {
+ return appKey;
+ }
+
+ public void setAppKey(String appKey) {
+ this.appKey = appKey;
+ }
+
+ public String getAppSecret() {
+ return appSecret;
+ }
+
+ public void setAppSecret(String appSecret) {
+ this.appSecret = appSecret;
+ }
+}
diff --git a/esign/src/main/java/com/seeyon/apps/esign/fieldCtrl/ContractCompareFieldCtrl.java b/esign/src/main/java/com/seeyon/apps/esign/fieldCtrl/ContractCompareFieldCtrl.java
new file mode 100644
index 0000000..77a38dd
--- /dev/null
+++ b/esign/src/main/java/com/seeyon/apps/esign/fieldCtrl/ContractCompareFieldCtrl.java
@@ -0,0 +1,64 @@
+package com.seeyon.apps.esign.fieldCtrl;
+
+import com.seeyon.cap4.form.bean.ParamDefinition;
+import com.seeyon.cap4.form.bean.fieldCtrl.FormFieldCustomCtrl;
+import com.seeyon.cap4.form.util.Enums;
+import org.springframework.stereotype.Component;
+
+import java.util.UUID;
+
+@Component
+public class ContractCompareFieldCtrl extends FormFieldCustomCtrl {
+ @Override
+ public String getPCInjectionInfo() {
+ return "{path:'apps_res/cap/customCtrlResources/esignContractCompareBtnResources',jsUri:'/js/compareinit.js',initMethod:'init',nameSpace:'" + getNameSpace() + "'}";
+ }
+
+ @Override
+ public String getMBInjectionInfo() {
+ return "{path:'http://mapResource.v5.cmp/v1.0.0/',weixinpath:'invoice',jsUri:'js/location.js',initMethod:'init',nameSpace:'"+getNameSpace()+"'}";
+ }
+
+ @Override
+ public String getKey() {
+ return "8899554679928334458";
+ }
+
+ @Override
+ public boolean canUse(Enums.FormType formType) {
+ return true;
+ }
+
+ @Override
+ public String[] getDefaultVal(String s) {
+ return new String[0];
+ }
+
+ public String getNameSpace() {
+ return "field_" + this.getKey();
+ }
+
+ public String getFieldLength() {
+ return "20";
+ }
+ @Override
+ public String getText() {
+ return "e签宝合同比对按钮";
+ }
+
+ /**
+ * 控件初始化接口,此接口在控件初始化的时候,会调用,主要用于定义控件所属插件id、在表单编辑器中的图标、表单编辑器中有哪些属性可以设置。
+ * 使用举例:在接口中定义自定义控件在在表单编辑器中有哪些控件属性需要配置
+ */
+ @Override
+ public void init() {
+ //设置图标和插件ID
+ setPluginId("src_esign");
+ setIcon("cap-icon-custom-button");
+ // 自定义参数
+
+ ParamDefinition esignContractCompareBtnParam = new ParamDefinition();
+ esignContractCompareBtnParam.setParamType(Enums.ParamType.button);
+ addDefinition(esignContractCompareBtnParam);
+ }
+}
diff --git a/esign/src/main/java/com/seeyon/apps/esign/form/ClauseFactor.java b/esign/src/main/java/com/seeyon/apps/esign/form/ClauseFactor.java
new file mode 100644
index 0000000..769468d
--- /dev/null
+++ b/esign/src/main/java/com/seeyon/apps/esign/form/ClauseFactor.java
@@ -0,0 +1,19 @@
+package com.seeyon.apps.esign.form;
+
+public enum ClauseFactor {
+ EQ, //相等
+ GT, //大于
+ GE, //大于等于
+ LT, //小于
+ LE, //小于等于
+ NULL, //空
+ NOT_NULL, //非空
+ LIKE, //模糊
+ AND,
+ OR
+ ;
+
+ public boolean isNullType() {
+ return this == NULL || this == NOT_NULL;
+ }
+}
diff --git a/esign/src/main/java/com/seeyon/apps/esign/form/EnumMapUtils.java b/esign/src/main/java/com/seeyon/apps/esign/form/EnumMapUtils.java
new file mode 100644
index 0000000..ed49334
--- /dev/null
+++ b/esign/src/main/java/com/seeyon/apps/esign/form/EnumMapUtils.java
@@ -0,0 +1,108 @@
+package com.seeyon.apps.esign.form;
+
+import com.seeyon.cap4.form.api.FormApi4Cap4;
+import com.seeyon.cap4.form.bean.FormBean;
+import com.seeyon.cap4.form.bean.FormFieldBean;
+import com.seeyon.cap4.form.bean.FormTableBean;
+import com.seeyon.ctp.common.AppContext;
+import com.seeyon.ctp.common.ctpenumnew.manager.EnumManager;
+import com.seeyon.ctp.common.exceptions.BusinessException;
+import com.seeyon.ctp.common.po.ctpenumnew.CtpEnumBean;
+import com.seeyon.ctp.common.po.ctpenumnew.CtpEnumItem;
+import com.seeyon.ctp.util.JDBCAgent;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+public class EnumMapUtils {
+
+ public static String getMasterTableEnumItemValue(String formNo,String fieldDisplay, String targetValue) {
+ if(targetValue == null || "null".equals(targetValue) || "".equals(targetValue)){
+ return "";
+ }
+ try {
+ FormApi4Cap4 formApi4Cap4 = (FormApi4Cap4) AppContext.getBean("formApi4Cap4");
+ FormBean cap4FormBean = formApi4Cap4.getFormByFormCode(formNo);
+ FormTableBean masterTableBean = cap4FormBean.getMasterTableBean();
+ FormFieldBean beanByDisplay = masterTableBean.getFieldBeanByDisplay(fieldDisplay);
+ if(beanByDisplay == null || beanByDisplay.getEnumId() == 0l) {
+ return "";
+ }
+ return getEnumItemValueByEnumId(targetValue, beanByDisplay.getEnumId());
+ } catch (Exception e) {
+ return "";
+ }
+ }
+
+ public static String getEnumItemValue(String rootPCode, String groupValue, String targetValue) {
+ if(targetValue == null || "null".equals(targetValue) || "".equals(targetValue)){
+ return "";
+ }
+ String queryIdSql = "SELECT ce.ID FROM ctp_enum ce inner join ctp_enum cei on ce.`PARENT_ID` = cei.ID where CEI.`PROGRAM_CODE` = ? and ce.`ENUMNAME` = ?";
+ Long enumId = null;
+ JDBCAgent agent = new JDBCAgent();
+ try {
+ agent.execute(queryIdSql, Arrays.asList(rootPCode,groupValue));
+ List