智能仲裁后端服务

SignAward.java 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. package com.ruoyi.wisdomarbitrate.utils;
  2. import com.google.gson.Gson;
  3. import com.google.gson.JsonArray;
  4. import com.google.gson.JsonObject;
  5. import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
  6. import com.ruoyi.common.enums.EsignRequestType;
  7. import com.ruoyi.common.exception.EsignDemoException;
  8. import com.ruoyi.common.utils.EsignApplicaConfig;
  9. import com.ruoyi.common.utils.EsignHttpHelper;
  10. import com.ruoyi.wisdomarbitrate.domain.SealSignRecord;
  11. import java.util.Map;
  12. public class SignAward {
  13. private static String eSignHost= EsignApplicaConfig.EsignHost;
  14. private static String eSignAppId= EsignApplicaConfig.EsignAppId;
  15. private static String eSignAppSecret= EsignApplicaConfig.EsignAppSecret;
  16. // public static String fileId = "95d0c307d91e4985bdb8874f6f84daa5";
  17. public static String fileId = "a0c2ad21065f48ff8b872412c39d5d3a";
  18. public static void main(String[] args) throws EsignDemoException {
  19. Gson gson = new Gson();
  20. SealSignRecord sealSignRecord = new SealSignRecord();
  21. /* 发起签署*/
  22. // EsignHttpResponse createByFile = createByFile(sealSignRecord);
  23. // JsonObject createByFileJsonObject = gson.fromJson(createByFile.getBody(), JsonObject.class);
  24. // JsonObject createByFileData = createByFileJsonObject.getAsJsonObject("data");
  25. // String signFlowId = createByFileData.get("signFlowId").getAsString();
  26. // System.err.println("流程id:"+signFlowId);
  27. /* 获取文件签名印章位置*/
  28. // EsignHttpResponse positions = getPositions(sealSignRecord);
  29. // JsonObject positionsJsonObject = gson.fromJson(positions.getBody(), JsonObject.class);
  30. // JsonObject positionsData = positionsJsonObject.getAsJsonObject("data");
  31. // JsonArray keywordPositions = positionsData.get("keywordPositions").getAsJsonArray();
  32. // System.out.println("获取文件签名印章位置:" +keywordPositions.toString());
  33. // String signFlowId = "c9955453716344f9971d308abdc13464";
  34. //获取合同文件签名链接
  35. // EsignHttpResponse signUrl = signUrl(sealSignRecord);
  36. // JsonObject signUrlJsonObject = gson.fromJson(signUrl.getBody(), JsonObject.class);
  37. // JsonObject signUrlData = signUrlJsonObject.getAsJsonObject("data");
  38. // String shortUrl = signUrlData.get("shortUrl").getAsString();
  39. // String url = signUrlData.get("url").getAsString();
  40. // System.out.println("签署短链接:" +shortUrl);
  41. // System.out.println("签署长链接:"+url);
  42. //获取合同文件用印链接
  43. // EsignHttpResponse usesealUrl = usesealUrl(sealSignRecord);
  44. // JsonObject usesealUrlJsonObject = gson.fromJson(usesealUrl.getBody(), JsonObject.class);
  45. // JsonObject usesealUrlData = usesealUrlJsonObject.getAsJsonObject("data");
  46. // String shortusesealUrl = usesealUrlData.get("shortUrl").getAsString();
  47. // String sealUrl = usesealUrlData.get("url").getAsString();
  48. // System.out.println("签署长链接:" +shortusesealUrl);
  49. // System.out.println("签署短链接:"+sealUrl);
  50. //查询签署流程详情
  51. EsignHttpResponse signFlowDetail = signFlowDetail(sealSignRecord);
  52. JsonObject signFlowDetailJsonObject = gson.fromJson(signFlowDetail.getBody(),JsonObject.class);
  53. JsonObject flowDetailData = signFlowDetailJsonObject.getAsJsonObject("data");
  54. JsonArray signersArray = flowDetailData.get("signers").getAsJsonArray();
  55. for (int i = 0; i < signersArray.size(); i++) {
  56. JsonObject signerObject = (JsonObject)signersArray.get(i);
  57. Integer psnsignStatus ;
  58. Integer orgsignStatus ;
  59. if(!(signerObject.get("psnSigner").toString()).equals("null")){
  60. JsonObject psnSignerData = signerObject.getAsJsonObject("psnSigner");
  61. if(psnSignerData!=null){
  62. psnsignStatus = signerObject.get("signStatus").getAsInt();
  63. sealSignRecord.setPsnsignStatus(psnsignStatus);
  64. }
  65. }
  66. if(!(signerObject.get("orgSigner").toString()).equals("null")){
  67. JsonObject orgSignerData = signerObject.getAsJsonObject("orgSigner");
  68. if(orgSignerData!=null){
  69. orgsignStatus = signerObject.get("signStatus").getAsInt();
  70. sealSignRecord.setOrgsignStatus(orgsignStatus);
  71. }
  72. }
  73. }
  74. System.out.println(signFlowDetailJsonObject);
  75. }
  76. /**
  77. * 查询签署流程详情
  78. * @return
  79. */
  80. public static EsignHttpResponse signFlowDetail(SealSignRecord sealSignRecord) throws EsignDemoException {
  81. String signFlowId = sealSignRecord.getSignFlowid();
  82. String apiaddr= "/v3/sign-flow/"+ signFlowId + "/detail";
  83. String jsonParm = null;
  84. //请求方法
  85. EsignRequestType requestType = EsignRequestType.GET;
  86. //生成签名鉴权方式的的header
  87. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,true);
  88. //发起接口请求
  89. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,true);
  90. }
  91. /**
  92. * 发起签署
  93. * @return
  94. * @throws EsignDemoException
  95. */
  96. public static EsignHttpResponse createByFile(SealSignRecord sealSignRecord) throws EsignDemoException {
  97. String apiaddr = "/v3/sign-flow/create-by-file";
  98. String fileId = sealSignRecord.getFileid();
  99. String fileName = sealSignRecord.getFilename();
  100. String psnAccount = sealSignRecord.getPensonAccount();
  101. String psnName = sealSignRecord.getPensonName();
  102. String orgName = sealSignRecord.getOrgnizeName();
  103. String orgNamePsnAccount = sealSignRecord.getOrgnizeNamePsnAccount();
  104. String orgNamepsnName = sealSignRecord.getOrgnizeNamepsnName();
  105. String positionPagepsn = sealSignRecord.getPositionPagepsn();
  106. double positionXpsn = sealSignRecord.getPositionXpsn();
  107. double positionYpsn = sealSignRecord.getPositionYpsn();
  108. String positionPageorg = sealSignRecord.getPositionPageorg();
  109. double positionXorg = sealSignRecord.getPositionXorg();
  110. double positionYorg = sealSignRecord.getPositionYorg();
  111. String jsonParm = "{\n" +
  112. " \"docs\": [\n" +
  113. " {\n" +
  114. " \"fileId\": \"" + fileId + "\",\n" +
  115. " \"fileName\": \"" + fileName + "\"\n" +
  116. " }\n" +
  117. " ],\n" +
  118. " \"signFlowConfig\": {\n" +
  119. " \"signFlowTitle\": \"测试合同\",\n" +
  120. " \"autoStart\": true,\n" +
  121. " \"authConfig\": {\n" +
  122. " \"willingnessAuthModes\": [\n" +
  123. " \"CODE_SMS\"\n" +
  124. " ],\n" +
  125. " \"psnAvailableAuthModes\": [\n" +
  126. " \"PSN_MOBILE3\"\n" +
  127. " ],\n" +
  128. " \"orgAvailableAuthModes\": [\n" +
  129. " \"ORG_LEGALREP\"\n" +
  130. " ]\n" +
  131. " },\n" +
  132. " \"autoFinish\": true\n" +
  133. " },\n" +
  134. " \"signers\": [\n" +
  135. " {\n" +
  136. " \"psnSignerInfo\": {\n" +
  137. " \"psnAccount\": \"" + psnAccount + "\",\n" +
  138. " \"psnInfo\": {\n" +
  139. " \"psnName\": \"" + psnName + "\"\n" +
  140. " }\n" +
  141. " },\n" +
  142. " \"signFields\": [\n" +
  143. " {\n" +
  144. " \"fileId\": \"" + fileId + "\",\n" +
  145. " \"normalSignFieldConfig\": {\n" +
  146. " \"autoSign\": false,\n" +
  147. " \"freeMode\": false,\n" +
  148. " \"movableSignField\": false,\n" +
  149. " \"signFieldPosition\": {\n" +
  150. " \"positionPage\": \"" + positionPagepsn + "\",\n" +
  151. " \"positionX\": " + positionXpsn + ",\n" +
  152. " \"positionY\": " + positionYpsn + "\n" +
  153. " },\n" +
  154. " \"signFieldStyle\": 1\n" +
  155. " },\n" +
  156. " \"signFieldType\": 0\n" +
  157. " }\n" +
  158. " ],\n" +
  159. " \"signerType\": 0\n" +
  160. " },\n" +
  161. " {\n" +
  162. " \"orgSignerInfo\": {\n" +
  163. " \"orgName\": \"" + orgName + "\",\n" +
  164. " \"transactorInfo\": {\n" +
  165. " \"psnAccount\": \"" + orgNamePsnAccount + "\",\n" +
  166. " \"psnInfo\": {\n" +
  167. " \"psnName\": \"" + orgNamepsnName + "\"\n" +
  168. " }\n" +
  169. " }\n" +
  170. " },\n" +
  171. " \"signFields\": [\n" +
  172. " {\n" +
  173. " \"fileId\": \"" + fileId + "\",\n" +
  174. " \"normalSignFieldConfig\": {\n" +
  175. " \"autoSign\": false,\n" +
  176. " \"freeMode\": false,\n" +
  177. " \"signFieldPosition\": {\n" +
  178. " \"positionPage\": \"" + positionPageorg + "\",\n" +
  179. " \"positionX\": " + positionXorg + ",\n" +
  180. " \"positionY\": " + positionYorg + "\n" +
  181. " },\n" +
  182. " \"signFieldStyle\": 1\n" +
  183. " },\n" +
  184. " \"signFieldType\": 0\n" +
  185. " }\n" +
  186. " ],\n" +
  187. " \"signerType\": 1\n" +
  188. " }\n" +
  189. " ]\n" +
  190. "}";
  191. //请求方法
  192. EsignRequestType requestType = EsignRequestType.POST;
  193. //生成请求签名鉴权方式的Header
  194. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
  195. //发起接口请求
  196. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
  197. }
  198. /**
  199. * 获取合同文件签名链接
  200. * @return
  201. * @throws EsignDemoException
  202. */
  203. public static EsignHttpResponse signUrl(SealSignRecord sealSignRecord) throws EsignDemoException {
  204. String signFlowId = sealSignRecord.getSignFlowid();
  205. String psnAccount = sealSignRecord.getPensonAccount();
  206. String apiaddr = "/v3/sign-flow/" + signFlowId + "/sign-url";
  207. String jsonParm = "{\n" +
  208. " \"operator\": {\n" +
  209. " \"psnAccount\": \"" + psnAccount + "\"\n" +
  210. " }\n" +
  211. "}";
  212. //请求方法
  213. EsignRequestType requestType = EsignRequestType.POST;
  214. //生成请求签名鉴权方式的Header
  215. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
  216. //发起接口请求
  217. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
  218. }
  219. /**
  220. * 获取合同文件用印链接
  221. * @return
  222. * @throws EsignDemoException
  223. */
  224. public static EsignHttpResponse usesealUrl(SealSignRecord sealSignRecord) throws EsignDemoException {
  225. String signFlowId = sealSignRecord.getSignFlowid();
  226. String apiaddr = "/v3/sign-flow/" + signFlowId + "/sign-url";
  227. String psnAccount = sealSignRecord.getOrgnizeNamePsnAccount();
  228. String orgName = sealSignRecord.getOrgnizeName();
  229. String jsonParm = "{\n" +
  230. " \"operator\": {\n" +
  231. " \"psnAccount\": \"" + psnAccount + "\"\n" +
  232. " },\n" +
  233. " \"organization\": {\n" +
  234. " \"orgName\": \"" + orgName + "\"\n" +
  235. " }\n" +
  236. "}";
  237. //请求方法
  238. EsignRequestType requestType = EsignRequestType.POST;
  239. //生成请求签名鉴权方式的Header
  240. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
  241. //发起接口请求
  242. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
  243. }
  244. /**
  245. * 获取文件签名印章位置
  246. * @return
  247. * @throws EsignDemoException
  248. */
  249. public static EsignHttpResponse getPositions(SealSignRecord sealSignRecord) throws EsignDemoException {
  250. String fileId = sealSignRecord.getFileid();
  251. String apiaddr = "/v3/files/" + fileId + "/keyword-positions";
  252. String jsonParm = "{\n" +
  253. " \"keywords\": [\n" +
  254. " \"仲裁员:\",\n" +
  255. " \"(仲裁委员会盖章)\"\n" +
  256. " ]\n" +
  257. "}";
  258. //请求方法
  259. EsignRequestType requestType = EsignRequestType.POST;
  260. //生成请求签名鉴权方式的Header
  261. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
  262. //发起接口请求
  263. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
  264. }
  265. }