BE_Call_RequestPay.groovy 4.1 KB

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