智能仲裁后端服务

SignAward.java 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423
  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.DeptIdentify;
  12. import com.ruoyi.wisdomarbitrate.domain.SealSignRecord;
  13. import java.io.File;
  14. import java.util.Date;
  15. import java.util.Map;
  16. public class SignAward {
  17. private static String eSignHost= EsignApplicaConfig.EsignHost;
  18. private static String eSignAppId= EsignApplicaConfig.EsignAppId;
  19. private static String eSignAppSecret= EsignApplicaConfig.EsignAppSecret;
  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. // DeptIdentify deptIdentify = new DeptIdentify();
  54. // deptIdentify.setDeptName("西安云美电子科技有限公司");
  55. // EsignHttpResponse identifyInfo = getDeptIdentifyInfo(deptIdentify);
  56. // JsonObject identifyInfoJsonObject = gson.fromJson(identifyInfo.getBody(), JsonObject.class);
  57. // JsonObject identifyInfoData = identifyInfoJsonObject.getAsJsonObject("data");
  58. // int realnameStatus = identifyInfoData.get("realnameStatus").getAsInt();
  59. // String orgId = identifyInfoData.get("orgId").getAsString();
  60. // System.out.println("机构认证状态:" +realnameStatus);
  61. // System.out.println("机构id:" +orgId);
  62. // EsignHttpResponse identifyInfo = deptIdentifySealList(orgId);
  63. // JsonObject identifyInfoJsonObject = gson.fromJson(identifyInfo.getBody(), JsonObject.class);
  64. // JsonObject identifyInfoData = identifyInfoJsonObject.getAsJsonObject("data");
  65. // JsonArray sealArray = identifyInfoData.get("seals").getAsJsonArray();
  66. // String sealNames = "";
  67. // if(sealArray.size()>0){
  68. // for (int i = 0; i < sealArray.size(); i++) {
  69. // JsonObject sealObject = (JsonObject)sealArray.get(i);
  70. // String sealName = sealObject.get("sealName").toString();
  71. // String sealNamenew = sealName.substring(1,sealName.length()-1);
  72. // sealNames += sealNamenew +",";
  73. // }
  74. // }
  75. // System.out.println("机构印章名称:" +sealNames.substring(0,sealNames.length()-1));
  76. //查询签署流程详情
  77. // EsignHttpResponse signFlowDetail = signFlowDetail(sealSignRecord);
  78. // JsonObject signFlowDetailJsonObject = gson.fromJson(signFlowDetail.getBody(),JsonObject.class);
  79. // JsonObject flowDetailData = signFlowDetailJsonObject.getAsJsonObject("data");
  80. // JsonArray signersArray = flowDetailData.get("signers").getAsJsonArray();
  81. // for (int i = 0; i < signersArray.size(); i++) {
  82. // JsonObject signerObject = (JsonObject)signersArray.get(i);
  83. // Integer psnsignStatus ;
  84. // Integer orgsignStatus ;
  85. // if(!(signerObject.get("psnSigner").toString()).equals("null")){
  86. // JsonObject psnSignerData = signerObject.getAsJsonObject("psnSigner");
  87. // if(psnSignerData!=null){
  88. // psnsignStatus = signerObject.get("signStatus").getAsInt();
  89. // sealSignRecord.setPsnsignStatus(psnsignStatus);
  90. // }
  91. // }
  92. // if(!(signerObject.get("orgSigner").toString()).equals("null")){
  93. // JsonObject orgSignerData = signerObject.getAsJsonObject("orgSigner");
  94. // if(orgSignerData!=null){
  95. // orgsignStatus = signerObject.get("signStatus").getAsInt();
  96. // sealSignRecord.setOrgsignStatus(orgsignStatus);
  97. // }
  98. //
  99. // }
  100. // }
  101. // System.out.println(signFlowDetailJsonObject);
  102. }
  103. /**
  104. * 查询签署流程详情
  105. * @return
  106. */
  107. public static EsignHttpResponse signFlowDetail(SealSignRecord sealSignRecord) throws EsignDemoException {
  108. String signFlowId = sealSignRecord.getSignFlowid();
  109. String apiaddr= "/v3/sign-flow/"+ signFlowId + "/detail";
  110. String jsonParm = null;
  111. //请求方法
  112. EsignRequestType requestType = EsignRequestType.GET;
  113. //生成签名鉴权方式的的header
  114. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,true);
  115. //发起接口请求
  116. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,true);
  117. }
  118. /**
  119. * 发起签署
  120. * @return
  121. * @throws EsignDemoException
  122. */
  123. public static EsignHttpResponse createByFile(SealSignRecord sealSignRecord) throws EsignDemoException {
  124. String apiaddr = "/v3/sign-flow/create-by-file";
  125. String fileId = sealSignRecord.getFileid();
  126. String fileName = sealSignRecord.getFilename();
  127. String psnAccount = sealSignRecord.getPensonAccount();
  128. String psnName = sealSignRecord.getPensonName();
  129. String orgName = sealSignRecord.getOrgnizeName();
  130. String orgNamePsnAccount = sealSignRecord.getOrgnizeNamePsnAccount();
  131. String orgNamepsnName = sealSignRecord.getOrgnizeNamepsnName();
  132. String positionPagepsn = sealSignRecord.getPositionPagepsn();
  133. double positionXpsn = sealSignRecord.getPositionXpsn();
  134. double positionYpsn = sealSignRecord.getPositionYpsn();
  135. String positionPageorg = sealSignRecord.getPositionPageorg();
  136. double positionXorg = sealSignRecord.getPositionXorg();
  137. double positionYorg = sealSignRecord.getPositionYorg();
  138. String availableSealId = "209af82b-5f87-4e0a-b0d8-cc4923b6e652";
  139. String jsonParm = "{\n" +
  140. " \"docs\": [\n" +
  141. " {\n" +
  142. " \"fileId\": \"" + fileId + "\",\n" +
  143. " \"fileName\": \"" + fileName + "\"\n" +
  144. " }\n" +
  145. " ],\n" +
  146. " \"signFlowConfig\": {\n" +
  147. " \"signFlowTitle\": \"测试合同\",\n" +
  148. " \"autoStart\": true,\n" +
  149. " \"authConfig\": {\n" +
  150. " \"willingnessAuthModes\": [\n" +
  151. " \"CODE_SMS\"\n" +
  152. " ],\n" +
  153. " \"psnAvailableAuthModes\": [\n" +
  154. " \"PSN_MOBILE3\"\n" +
  155. " ],\n" +
  156. " \"orgAvailableAuthModes\": [\n" +
  157. " \"ORG_LEGALREP\"\n" +
  158. " ]\n" +
  159. " },\n" +
  160. " \"signConfig\": {\n" +
  161. " \"availableSignClientTypes\": \"1\"\n" +
  162. " },\n" +
  163. " \"autoFinish\": true\n" +
  164. " },\n" +
  165. " \"signers\": [\n" +
  166. " {\n" +
  167. " \"psnSignerInfo\": {\n" +
  168. " \"psnAccount\": \"" + psnAccount + "\",\n" +
  169. " \"psnInfo\": {\n" +
  170. " \"psnName\": \"" + psnName + "\"\n" +
  171. " }\n" +
  172. " },\n" +
  173. " \"signFields\": [\n" +
  174. " {\n" +
  175. " \"fileId\": \"" + fileId + "\",\n" +
  176. " \"normalSignFieldConfig\": {\n" +
  177. " \"autoSign\": false,\n" +
  178. " \"freeMode\": false,\n" +
  179. " \"movableSignField\": false,\n" +
  180. " \"signFieldPosition\": {\n" +
  181. " \"positionPage\": \"" + positionPagepsn + "\",\n" +
  182. " \"positionX\": " + positionXpsn + ",\n" +
  183. " \"positionY\": " + positionYpsn + "\n" +
  184. " },\n" +
  185. " \"signFieldStyle\": 1\n" +
  186. " },\n" +
  187. " \"signFieldType\": 0\n" +
  188. " }\n" +
  189. " ],\n" +
  190. " \"signerType\": 0\n" +
  191. " },\n" +
  192. " {\n" +
  193. " \"orgSignerInfo\": {\n" +
  194. " \"orgName\": \"" + orgName + "\",\n" +
  195. " \"transactorInfo\": {\n" +
  196. " \"psnAccount\": \"" + orgNamePsnAccount + "\",\n" +
  197. " \"psnInfo\": {\n" +
  198. " \"psnName\": \"" + orgNamepsnName + "\"\n" +
  199. " }\n" +
  200. " }\n" +
  201. " },\n" +
  202. " \"signFields\": [\n" +
  203. " {\n" +
  204. " \"fileId\": \"" + fileId + "\",\n" +
  205. " \"normalSignFieldConfig\": {\n" +
  206. " \"autoSign\": false,\n" +
  207. " \"freeMode\": false,\n" +
  208. " \"availableSealIds\": [\n" +
  209. " \"" + availableSealId + "\"\n" +
  210. " ],\n" +
  211. " \"signFieldPosition\": {\n" +
  212. " \"positionPage\": \"" + positionPageorg + "\",\n" +
  213. " \"positionX\": " + positionXorg + ",\n" +
  214. " \"positionY\": " + positionYorg + "\n" +
  215. " },\n" +
  216. " \"signFieldStyle\": 1\n" +
  217. " },\n" +
  218. " \"signFieldType\": 0\n" +
  219. " }\n" +
  220. " ],\n" +
  221. " \"signerType\": 1\n" +
  222. " }\n" +
  223. " ]\n" +
  224. "}";
  225. //请求方法
  226. EsignRequestType requestType = EsignRequestType.POST;
  227. //生成请求签名鉴权方式的Header
  228. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
  229. //发起接口请求
  230. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
  231. }
  232. /**
  233. * 获取合同文件签名链接
  234. * @return
  235. * @throws EsignDemoException
  236. */
  237. public static EsignHttpResponse signUrl(SealSignRecord sealSignRecord) throws EsignDemoException {
  238. String signFlowId = sealSignRecord.getSignFlowid();
  239. String psnAccount = sealSignRecord.getPensonAccount();
  240. String apiaddr = "/v3/sign-flow/" + signFlowId + "/sign-url";
  241. String jsonParm = "{\n" +
  242. " \"clientType\": \"PC\",\n" +
  243. " \"operator\": {\n" +
  244. " \"psnAccount\": \"" + psnAccount + "\"\n" +
  245. " }\n" +
  246. "}";
  247. //请求方法
  248. EsignRequestType requestType = EsignRequestType.POST;
  249. //生成请求签名鉴权方式的Header
  250. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
  251. //发起接口请求
  252. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
  253. }
  254. /**
  255. * 获取合同文件用印链接
  256. * @return
  257. * @throws EsignDemoException
  258. */
  259. public static EsignHttpResponse usesealUrl(SealSignRecord sealSignRecord) throws EsignDemoException {
  260. String signFlowId = sealSignRecord.getSignFlowid();
  261. String apiaddr = "/v3/sign-flow/" + signFlowId + "/sign-url";
  262. String psnAccount = sealSignRecord.getOrgnizeNamePsnAccount();
  263. String orgName = sealSignRecord.getOrgnizeName();
  264. String jsonParm = "{\n" +
  265. " \"operator\": {\n" +
  266. " \"psnAccount\": \"" + psnAccount + "\"\n" +
  267. " },\n" +
  268. " \"organization\": {\n" +
  269. " \"orgName\": \"" + orgName + "\"\n" +
  270. " }\n" +
  271. "}";
  272. //请求方法
  273. EsignRequestType requestType = EsignRequestType.POST;
  274. //生成请求签名鉴权方式的Header
  275. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
  276. //发起接口请求
  277. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
  278. }
  279. /**
  280. * 获取机构认证链接
  281. * @return
  282. * @throws EsignDemoException
  283. */
  284. public static EsignHttpResponse deptIdentifyUrl(DeptIdentify deptIdentify) throws EsignDemoException {
  285. String apiaddr = "/v3/org-auth-url";
  286. String nickName = deptIdentify.getNickName();
  287. String phonenumber = deptIdentify.getPhonenumber();
  288. String deptName = deptIdentify.getDeptName();
  289. String jsonParm = "{\n" +
  290. " \"orgAuthConfig\": {\n" +
  291. " \"orgName\": \"" + deptName + "\",\n" +
  292. " \"transactorInfo\": {\n" +
  293. " \"psnAccount\": \"" + phonenumber + "\",\n" +
  294. " \"psnInfo\": {\n" +
  295. " \"psnName\": \"" + nickName + "\",\n" +
  296. " \"psnMobile\": \"" + phonenumber + "\"\n" +
  297. " }\n" +
  298. " }\n" +
  299. " }\n" +
  300. "}";
  301. //请求方法
  302. EsignRequestType requestType = EsignRequestType.POST;
  303. //生成请求签名鉴权方式的Header
  304. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
  305. //发起接口请求
  306. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
  307. }
  308. /**
  309. * 查询企业认证状态
  310. */
  311. public static EsignHttpResponse getDeptIdentifyInfo(DeptIdentify deptIdentify) throws EsignDemoException {
  312. String apiaddr="/v3/organizations/identity-info?orgName="+deptIdentify.getDeptName();
  313. String jsonParm="{}";
  314. //请求方法
  315. EsignRequestType requestType= EsignRequestType.GET;
  316. //生成签名鉴权方式的的header
  317. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,true);
  318. //发起接口请求
  319. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,true);
  320. }
  321. /**
  322. * 查询企业认证印章信息
  323. */
  324. public static EsignHttpResponse deptIdentifySealList(String orgId) throws EsignDemoException {
  325. int pageNum=1;
  326. int pageSize=10;
  327. String apiaddr="/v3/seals/org-own-seal-list?orgId="+orgId+"&pageNum="+pageNum+"&pageSize="+pageSize;
  328. String jsonParm=null;
  329. //请求方法
  330. EsignRequestType requestType= EsignRequestType.GET;
  331. //生成签名鉴权方式的的header
  332. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,true);
  333. //发起接口请求
  334. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,true);
  335. }
  336. /**
  337. * 获取文件签名印章位置
  338. * @return
  339. * @throws EsignDemoException
  340. */
  341. public static EsignHttpResponse getPositions(SealSignRecord sealSignRecord) throws EsignDemoException {
  342. String fileId = sealSignRecord.getFileid();
  343. String apiaddr = "/v3/files/" + fileId + "/keyword-positions";
  344. String jsonParm = "{\n" +
  345. " \"keywords\": [\n" +
  346. " \"仲裁员:\",\n" +
  347. " \"(仲裁委员会盖章)\"\n" +
  348. " ]\n" +
  349. "}";
  350. //请求方法
  351. EsignRequestType requestType = EsignRequestType.POST;
  352. //生成请求签名鉴权方式的Header
  353. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
  354. //发起接口请求
  355. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
  356. }
  357. }