| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- 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.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.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_QueryFee implements BusinessExecutor<ProcessMapItem, QueryFeeResponse> {
- 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<QueryFeeResponse> 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
- //接口均返回正确,错误放在result里
- if (StringUtils.isBlank(billKey) || app == null) {
- logger.error("传入参数不正确")
- return RetResult.<QueryFeeResponse> successT().result(new QueryFeeResponse.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,
- 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.queryFee.code }
- if (invoker == null) {
- logger.error(app.appName + "未配置[查询欠费]接口")
- return RetResult.<QueryFeeResponse> successT().result(new QueryFeeResponse.Builder()
- .respCode("DEF0006")
- .respMsg("系统错误")
- .build())
- }
- try {
- String resp = HttpTools.postHttpContentAsync(invoker.invokerUrl, header, jsonConvert.convertTo(body)).get(20, TimeUnit.SECONDS)
- QueryFeeResponse response = jsonConvert.convertFrom(resp)
- return RetResult.<QueryFeeResponse> successT().result(response)
- } catch (InterruptedException | ExecutionException | TimeoutException e) {
- logger.error(app.appName + "请求[查询欠费]接口失败")
- return RetResult.<QueryFeeResponse> successT().result(new QueryFeeResponse.Builder()
- .respCode("DEF0006")
- .respMsg("系统错误")
- .build())
- }
- }
- }
|