智能仲裁后端服务

SignAward.java 14KB

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