| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- import com.sweetfish.convert.json.JsonConvert
- import com.sweetfish.service.RetResult
- import com.yinjie.heating.common.api.BusinessExecutor
- import com.yinjie.heating.common.datas.ERPModule
- import com.yinjie.heating.common.datas.HeatingAppInvokerCode
- import com.yinjie.heating.common.entity.base.ProcessMapItem
- import com.yinjie.heating.common.entity.callthird.BaseResponse
- import com.yinjie.heating.common.entity.callthird.QueryFeeResponse
- import com.yinjie.heating.common.entity.heating.HeatingApp
- import com.yinjie.heating.common.entity.heating.HeatingAppInvoker
- import com.yinjie.heating.common.http.HttpTools
- import com.yinjie.heating.common.tool.CommonUtils
- import com.yinjie.heating.common.tool.PaySignatureUtil
- import org.apache.commons.lang3.StringUtils
- import org.apache.logging.log4j.LogManager
- import org.apache.logging.log4j.Logger
- import org.rex.RMap
- import javax.annotation.Resource
- import java.time.LocalDateTime
- import java.util.concurrent.ExecutionException
- import java.util.concurrent.TimeUnit
- import java.util.concurrent.TimeoutException
- class BE_Call_RequestPay implements BusinessExecutor<ProcessMapItem, BaseResponse> {
- private final Logger logger = LogManager.getLogger(this.getClass().getSimpleName())
- @Resource
- private JsonConvert jsonConvert
- @Override
- String scriptName() {
- return "调用外部热力服务商接口-请求销账"
- }
- @Override
- ERPModule module() {
- return ERPModule.CALL_THIRD
- }
- RetResult<BaseResponse> execute(ProcessMapItem source) {
- long currentTime = LocalDateTime.now().toDate().time
- RMap params = source.itemData
- String dataSourceId = source.dataSourceId
- long supplierCode = source.supplierCode
- String billKey = params.getString("billKey")
- HeatingApp app = params.get("app") as HeatingApp
- String payDate = params.getString("payDate")
- String bankBillNo = params.getString("bankBillNo")
- String payAmount = params.getString("payAmount")
- //接口均返回正确,错误放在result里
- if (StringUtils.isBlank(billKey) || app == null) {
- logger.error("传入参数不正确")
- return RetResult.<BaseResponse> successT().result(new BaseResponse.Builder()
- .respCode("DEF0006")
- .respMsg("系统错误")
- .build())
- }
- Map<String, String> header = new HashMap<>()
- header.put("Content-Type", "application/json")
- Map<String, String> body = [
- appId : app.appId,
- billKey : billKey,
- payDate : payDate,
- bankBillNo: bankBillNo,
- payAmount : CommonUtils.money100(new BigDecimal(payAmount)) as String,
- nonceStr : UUID.randomUUID().toString().replace("-", ""),
- timeStamp : currentTime as String
- ]
- //签名
- String sign = PaySignatureUtil.generateSign(body, "RSA_1_256", app.appPrivateKey)
- body.put("sign", sign)
- HeatingAppInvoker invoker = app.invokerList.find { it.invokerCode == HeatingAppInvokerCode.requestPay.code }
- if (invoker == null) {
- logger.error(app.appName + "未配置[请求销账]接口")
- return RetResult.<BaseResponse> successT().result(new BaseResponse.Builder()
- .respCode("DEF0006")
- .respMsg("系统错误")
- .build())
- }
- try {
- String resp = HttpTools.postHttpContentAsync(invoker.invokerUrl, header, jsonConvert.convertTo(body)).get(20, TimeUnit.SECONDS)
- BaseResponse response = jsonConvert.convertFrom(resp)
- return RetResult.<BaseResponse> successT().result(response)
- } catch (InterruptedException | ExecutionException | TimeoutException e) {
- logger.error(app.appName + "请求[请求销账]接口失败")
- return RetResult.<BaseResponse> successT().result(new BaseResponse.Builder()
- .respCode("DEF0006")
- .respMsg("系统错误")
- .build())
- }
- }
- }
|