XBBImplClient.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package com.malk.service.xbongbong.impl;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.alibaba.fastjson.JSON;
  4. import com.malk.server.common.McR;
  5. import com.malk.server.common.VenR;
  6. import com.malk.server.xbongbong.DigestUtil;
  7. import com.malk.server.xbongbong.XBBConf;
  8. import com.malk.server.xbongbong.XBBR;
  9. import com.malk.service.xbongbong.XBBClient;
  10. import com.malk.utils.UtilMap;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import javax.validation.constraints.NotNull;
  15. import java.util.ArrayList;
  16. import java.util.Collections;
  17. import java.util.List;
  18. import java.util.Map;
  19. @Slf4j
  20. @Service
  21. public class XBBImplClient implements XBBClient {
  22. @Autowired
  23. private XBBConf xbbConf;
  24. // 获取签名 [字符]
  25. public static String getDataSign(Map data, String token) {
  26. return getDataSign(JSON.toJSONString(data), token);
  27. }
  28. // 获取签名 [字典]
  29. public static String getDataSign(String data, String token) {
  30. return DigestUtil.Encrypt(data + token, "SHA-256");
  31. }
  32. // 获取请求签名: string/map
  33. public Map getHeaderSign(Object param) {
  34. String sign = null;
  35. if (param instanceof String) {
  36. sign = getDataSign((String) param, xbbConf.getToken());
  37. } else {
  38. sign = getDataSign((Map) param, xbbConf.getToken());
  39. }
  40. Map header = UtilMap.map("sign", sign);
  41. return header;
  42. }
  43. /**
  44. * 表单模板列表接口
  45. *
  46. * @apiNote https://profapi.xbongbong.com/#/apilist/177
  47. */
  48. @Override
  49. public List<Map> getFormList(String name, @NotNull int saasMark, int businessType) {
  50. Map body = UtilMap.map("name, saasMark, businessType, corpid, userId", name, saasMark, businessType, xbbConf.getCorpid(), xbbConf.getUserId());
  51. XBBR xbbr = (XBBR) XBBR.doPost("https://proapi.xbongbong.com/pro/v2/api/form/list", getHeaderSign(body), null, body, VenR.RC_XBB);
  52. Map<String, List<Map>> rsp = (Map<String, List<Map>>) xbbr.getResult();
  53. return rsp.get("formList");
  54. }
  55. /**
  56. * 表单模板列表接口
  57. *
  58. * @apiNote https://profapi.xbongbong.com/#/apilist/178
  59. */
  60. @Override
  61. public List<Map> getFormDefine(long formId, int subBusinessType) {
  62. Map body = UtilMap.map("formId, subBusinessType, corpid, userId", formId, subBusinessType, xbbConf.getCorpid(), xbbConf.getUserId());
  63. XBBR xbbr = (XBBR) XBBR.doPost("https://proapi.xbongbong.com/pro/v2/api/form/get", getHeaderSign(body), null, body, VenR.RC_XBB);
  64. Map<String, List<Map>> rsp = (Map<String, List<Map>>) xbbr.getResult();
  65. return rsp.get("explainList");
  66. }
  67. /**
  68. * 表单列表接口
  69. *
  70. * @apiNote https://profapi.xbongbong.com/#/apilist/181
  71. */
  72. @Override
  73. public Map getDataResult(String url, @NotNull long formId, List<Map> conditions, Map extInfo) {
  74. Map body = UtilMap.map("formId, conditions, corpid, userId", formId, conditions, xbbConf.getCorpid(), xbbConf.getUserId());
  75. if (ObjectUtil.isNotNull(extInfo)) {
  76. body.putAll(extInfo);
  77. } else {
  78. body.put("pageSize", 100);
  79. }
  80. XBBR xbbr = (XBBR) XBBR.doPost(url, getHeaderSign(body), null, body, VenR.RC_XBB);
  81. return (Map) xbbr.getResult();
  82. }
  83. /**
  84. * 表单列表接口 [返回list]
  85. */
  86. @Override
  87. public List<Map> getDataList(String url, @NotNull long formId, List<Map> conditions, Map extInfo) {
  88. return (List<Map>) getDataResult(url, formId, conditions, extInfo).get("list");
  89. }
  90. /// 获取表单以及表单定义, 查询与数据处理, 获取后可在程序内固定, 避免无效调用
  91. @Override
  92. public List<Map> testDefine(String name, @NotNull int saasMark, int businessType) {
  93. List<Map> rsp = this.getFormList(name, saasMark, businessType);
  94. long formId = UtilMap.getLong(rsp.get(0), "formId");
  95. return this.getFormDefine(formId, businessType); // 表单定义
  96. }
  97. @Override
  98. public Map workOrderComplete(Long workOrderId) {
  99. Map body = UtilMap.map("workOrderId, corpid, userId", workOrderId, xbbConf.getCorpid(), xbbConf.getUserId());
  100. XBBR xbbr = (XBBR) XBBR.doPost("https://proapi.xbongbong.com/pro/v2/api/workOrder/complete", getHeaderSign(body), null, body, VenR.RC_XBB);
  101. return (Map) xbbr.getResult();
  102. }
  103. @Override
  104. public Map getWorkOrderInfo(String workOrderSerierNO) {
  105. // 构建查询条件(根据接口要求,value需要是集合类型)
  106. List<Map<String, Object>> conditions = new ArrayList<>();
  107. conditions.add(UtilMap.map(
  108. "attr, symbol, value",
  109. "serialNo",
  110. "equal",
  111. Collections.singletonList(workOrderSerierNO) // 修正为Java集合初始化
  112. ));
  113. Map body = UtilMap.map("conditions, formId, corpid, userId", conditions, 5798, xbbConf.getCorpid(), xbbConf.getUserId());
  114. XBBR xbbr = (XBBR) XBBR.doPost("https://proapi.xbongbong.com/pro/v2/api/workOrder/list", getHeaderSign(body), null, body, VenR.RC_XBB);
  115. return (Map) xbbr.getResult();
  116. }
  117. }