BE_Call_QueryFee.groovy 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import com.sweetfish.convert.json.JsonConvert
  2. import com.sweetfish.service.RetResult
  3. import com.yinjie.heating.common.api.BusinessExecutor
  4. import com.yinjie.heating.common.datas.ERPModule
  5. import com.yinjie.heating.common.datas.HeatingAppInvokerCode
  6. import com.yinjie.heating.common.entity.base.ProcessMapItem
  7. import com.yinjie.heating.common.entity.callthird.QueryFeeResponse
  8. import com.yinjie.heating.common.entity.heating.HeatingApp
  9. import com.yinjie.heating.common.entity.heating.HeatingAppInvoker
  10. import com.yinjie.heating.common.http.HttpTools
  11. import com.yinjie.heating.common.tool.PaySignatureUtil
  12. import org.apache.commons.lang3.StringUtils
  13. import org.apache.logging.log4j.LogManager
  14. import org.apache.logging.log4j.Logger
  15. import org.rex.RMap
  16. import javax.annotation.Resource
  17. import java.time.LocalDateTime
  18. import java.util.concurrent.ExecutionException
  19. import java.util.concurrent.TimeUnit
  20. import java.util.concurrent.TimeoutException
  21. class BE_Call_QueryFee implements BusinessExecutor<ProcessMapItem, QueryFeeResponse> {
  22. private final Logger logger = LogManager.getLogger(this.getClass().getSimpleName())
  23. @Resource
  24. private JsonConvert jsonConvert
  25. @Override
  26. String scriptName() {
  27. return "调用外部热力服务商接口-查询欠费"
  28. }
  29. @Override
  30. ERPModule module() {
  31. return ERPModule.CALL_THIRD
  32. }
  33. RetResult<QueryFeeResponse> execute(ProcessMapItem source) {
  34. long currentTime = LocalDateTime.now().toDate().time
  35. RMap params = source.itemData
  36. String dataSourceId = source.dataSourceId
  37. long supplierCode = source.supplierCode
  38. String billKey = params.getString("billKey")
  39. HeatingApp app = params.get("app") as HeatingApp
  40. //接口均返回正确,错误放在result里
  41. if (StringUtils.isBlank(billKey) || app == null) {
  42. logger.error("传入参数不正确")
  43. return RetResult.<QueryFeeResponse> successT().result(new QueryFeeResponse.Builder()
  44. .respCode("DEF0006")
  45. .respMsg("系统错误")
  46. .build())
  47. }
  48. Map<String, String> header = new HashMap<>()
  49. header.put("Content-Type", "application/json")
  50. Map<String, String> body = [
  51. appId : app.appId,
  52. billKey : billKey,
  53. nonceStr : UUID.randomUUID().toString().replace("-", ""),
  54. timeStamp: currentTime as String
  55. ]
  56. //签名
  57. String sign = PaySignatureUtil.generateSign(body, "RSA_1_256", app.appPrivateKey)
  58. body.put("sign", sign)
  59. HeatingAppInvoker invoker = app.invokerList.find { it.invokerCode == HeatingAppInvokerCode.queryFee.code }
  60. if (invoker == null) {
  61. logger.error(app.appName + "未配置[查询欠费]接口")
  62. return RetResult.<QueryFeeResponse> successT().result(new QueryFeeResponse.Builder()
  63. .respCode("DEF0006")
  64. .respMsg("系统错误")
  65. .build())
  66. }
  67. try {
  68. String resp = HttpTools.postHttpContentAsync(invoker.invokerUrl, header, jsonConvert.convertTo(body)).get(20, TimeUnit.SECONDS)
  69. QueryFeeResponse response = jsonConvert.convertFrom(resp)
  70. return RetResult.<QueryFeeResponse> successT().result(response)
  71. } catch (InterruptedException | ExecutionException | TimeoutException e) {
  72. logger.error(app.appName + "请求[查询欠费]接口失败")
  73. return RetResult.<QueryFeeResponse> successT().result(new QueryFeeResponse.Builder()
  74. .respCode("DEF0006")
  75. .respMsg("系统错误")
  76. .build())
  77. }
  78. }
  79. }