This commit is contained in:
2023-11-23 11:51:43 +08:00
7 changed files with 116 additions and 45 deletions

View File

@@ -14,6 +14,7 @@ import com.jsowell.thirdparty.lianlian.dto.CommonParamsDTO;
import com.jsowell.thirdparty.lianlian.service.LianLianService;
import com.jsowell.thirdparty.lianlian.util.Cryptos;
import com.jsowell.thirdparty.lianlian.util.Encodes;
import com.jsowell.thirdparty.yongchengboche.dto.YCBCGetTokenDTO;
import com.jsowell.thirdparty.yongchengboche.service.YCBCService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -58,6 +59,24 @@ public class YCBCController extends BaseController {
}
}
/**
* 获取token接口
* http://localhost:8080/ycbc/v1/query_token
*/
@PostMapping("/v1/ycbcQuery_token")
public String ycbcQueryToken(@RequestBody YCBCGetTokenDTO dto) {
logger.info("请求甬城泊车平台令牌 params:{}", JSONObject.toJSONString(dto));
String token = "";
try {
token = ycbcService.YCBCGetToken(dto);
logger.info("请求甬城泊车平台令牌 result:{}", token);
} catch (Exception e) {
logger.error("请求甬城泊车平台令牌接口 异常");
return "";
}
return token;
}
/**
* 甬城泊车平台查询充电站信息
@@ -92,7 +111,7 @@ public class YCBCController extends BaseController {
QueryStationInfoDTO queryStationInfoDTO = JSONObject.parseObject(dataStr, QueryStationInfoDTO.class);
queryStationInfoDTO.setOperatorId(dto.getOperatorID());
Map<String, String> map = ycbcService.queryStationsInfo(queryStationInfoDTO);
logger.info("甬城泊车平台查询充电站信息 result:{}", JSONObject.toJSONString(map));
return CommonResult.success(0, "查询充电站信息成功!", map.get("Data"), map.get("Sig"));
} catch (Exception e) {
logger.info("甬城泊车平台查询充电站信息 error:", e);
@@ -135,7 +154,7 @@ public class YCBCController extends BaseController {
QueryStationInfoDTO queryStationInfoDTO = JSONObject.parseObject(dataStr, QueryStationInfoDTO.class);
queryStationInfoDTO.setOperatorId(dto.getOperatorID());
Map<String, String> map = ycbcService.queryStationStatus(queryStationInfoDTO);
logger.info("甬城泊车平台查询充电站状态信息 result:{}", JSONObject.toJSONString(map));
return CommonResult.success(0, "查询充电站状态信息成功!", map.get("Data"), map.get("Sig"));
} catch (Exception e) {
logger.info("甬城泊车平台查询充电站状态信息 error:", e);
@@ -230,7 +249,7 @@ public class YCBCController extends BaseController {
QueryEquipmentDTO queryEquipmentDTO = JSONObject.parseObject(dataStr, QueryEquipmentDTO.class);
queryEquipmentDTO.setOperatorID(dto.getOperatorID());
Map<String, String> map = ycbcService.queryEquipAuth(queryEquipmentDTO);
logger.info("甬城泊车平台请求设备认证 result:{}", JSONObject.toJSONString(map));
return CommonResult.success(0, "请求设备认证成功!", map.get("Data"), map.get("Sig"));
} catch (Exception e) {
logger.info("甬城泊车平台请求设备认证 error:", e);
@@ -272,7 +291,7 @@ public class YCBCController extends BaseController {
QueryStartChargeDTO queryStartChargeDTO = JSONObject.parseObject(dataStr, QueryStartChargeDTO.class);
queryStartChargeDTO.setOperatorId(dto.getOperatorID());
Map<String, String> map = ycbcService.queryStartCharge(queryStartChargeDTO);
logger.info("甬城泊车平台请求启动充电 result:{}", JSONObject.toJSONString(map));
return CommonResult.success(0, "请求启动充电成功!", map.get("Data"), map.get("Sig"));
} catch (Exception e) {
logger.error("甬城泊车平台请求启动充电 error", e);
@@ -313,7 +332,7 @@ public class YCBCController extends BaseController {
QueryEquipChargeStatusDTO queryEquipChargeStatusDTO = JSONObject.parseObject(dataStr, QueryEquipChargeStatusDTO.class);
queryEquipChargeStatusDTO.setOperatorID(dto.getOperatorID());
Map<String, String> map = ycbcService.queryEquipChargeStatus(queryEquipChargeStatusDTO);
logger.info("甬城泊车平台查询充电状态 result:{}", JSONObject.toJSONString(map));
return CommonResult.success(0, "查询充电状态成功!", map.get("Data"), map.get("Sig"));
} catch (Exception e) {
logger.error("甬城泊车平台查询充电状态 error", e);
@@ -378,7 +397,7 @@ public class YCBCController extends BaseController {
QueryStartChargeDTO queryStartChargeDTO = JSONObject.parseObject(dataStr, QueryStartChargeDTO.class);
queryStartChargeDTO.setOperatorId(dto.getOperatorID());
Map<String, String> map = ycbcService.queryStopCharge(queryStartChargeDTO);
logger.info("甬城泊车平台请求停止充电 result:{}", JSONObject.toJSONString(map));
return CommonResult.success(0, "请求停止充电成功!", map.get("Data"), map.get("Sig"));
} catch (Exception e) {
logger.error("甬城泊车平台请求停止充电 error", e);

View File

@@ -94,7 +94,7 @@ public class ZDLController extends BaseController {
queryStationInfoDTO.setOperatorId(dto.getOperatorID());
queryStationInfoDTO.setAddress("宁波");
Map<String, String> map = zdlService.queryStationsInfo(queryStationInfoDTO);
logger.info("中电联平台查询充电站信息 result:{}", JSONObject.toJSONString(map));
return CommonResult.success(0, "查询充电站信息成功!", map.get("Data"), map.get("Sig"));
} catch (Exception e) {
logger.info("中电联平台查询充电站信息 error:", e);
@@ -137,7 +137,7 @@ public class ZDLController extends BaseController {
QueryStationInfoDTO queryStationInfoDTO = JSONObject.parseObject(dataStr, QueryStationInfoDTO.class);
queryStationInfoDTO.setOperatorId(dto.getOperatorID());
Map<String, String> map = zdlService.queryStationStats(queryStationInfoDTO);
logger.info("中电联平台查询统计信息 result:{}", JSONObject.toJSONString(map));
return CommonResult.success(0, "查询统计信息成功!", map.get("Data"), map.get("Sig"));
} catch (Exception e) {
logger.info("中电联平台查询统计信息 error:", e);
@@ -184,7 +184,7 @@ public class ZDLController extends BaseController {
QueryStationInfoDTO queryStationInfoDTO = JSONObject.parseObject(dataStr, QueryStationInfoDTO.class);
queryStationInfoDTO.setOperatorId(dto.getOperatorID());
Map<String, String> map = zdlService.queryStationStatus(queryStationInfoDTO);
logger.info("中电联平台设备接口状态查询 result:{}", JSONObject.toJSONString(map));
return CommonResult.success(0, "设备接口状态查询成功!", map.get("Data"), map.get("Sig"));
} catch (Exception e) {
logger.info("中电联平台设备接口状态查询 error:", e);

View File

@@ -183,6 +183,11 @@ public class CacheConstants {
*/
public static final String LTYT_TOKEN_BY_APPID = "ltyt_token_by_appid:";
/**
* 甬城泊车系统Token
*/
public static final String YCBC_TOKEN_BY_OPERATORID = "yong_cheng_bo_che_token_by_operatorId:";
/**
* 桩硬件故障
*/

View File

@@ -472,6 +472,12 @@
<if test="dto.address != null and dto.address != ''">
and t1.address like concat('%', #{dto.address}, '%')
</if>
<if test="dto.stationIds != null and dto.stationIds.size() != 0">
and t1.id in
<foreach collection="dto.stationIds" item="stationId" open="(" separator="," close=")">
#{stationId,jdbcType=VARCHAR}
</foreach>
</if>
</select>
<select id="queryByStationDeptIds" resultType="java.lang.String">

File diff suppressed because one or more lines are too long

View File

@@ -3,8 +3,15 @@ package com.jsowell.thirdparty.yongchengboche.service.impl;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.jsowell.common.constant.CacheConstants;
import com.jsowell.common.core.redis.RedisCache;
import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum;
import com.jsowell.common.util.DateUtils;
import com.jsowell.common.util.StringUtils;
import com.jsowell.pile.domain.ThirdPartyStationRelation;
import com.jsowell.pile.dto.*;
import com.jsowell.pile.service.IThirdPartyStationRelationService;
import com.jsowell.thirdparty.lianlian.dto.CommonParamsDTO;
import com.jsowell.thirdparty.lianlian.service.LianLianService;
import com.jsowell.thirdparty.lianlian.util.Cryptos;
@@ -14,16 +21,16 @@ import com.jsowell.thirdparty.lianlian.vo.LianLianResultVO;
import com.jsowell.thirdparty.yongchengboche.dto.YCBCGetTokenDTO;
import com.jsowell.thirdparty.yongchengboche.service.YCBCService;
import com.jsowell.thirdparty.zhongdianlian.service.ZDLService;
import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* 甬城泊车 Service
@@ -40,6 +47,12 @@ public class YCBCServiceImpl implements YCBCService {
@Autowired
private LianLianService lianLianService;
@Autowired
private IThirdPartyStationRelationService relationService;
@Autowired
private RedisCache redisCache;
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@@ -57,7 +70,15 @@ public class YCBCServiceImpl implements YCBCService {
String urlAddress = dto.getUrlAddress();
String signSecret = dto.getSignSecret();
String token = "";
String redisKey = CacheConstants.YCBC_TOKEN_BY_OPERATORID + operatorId;
// 先查缓存
String token = redisCache.getCacheObject(redisKey);
if (StringUtils.isNotBlank(token)) {
logger.info("获取甬城泊车平台令牌,缓存中有值为:{}", token);
return token;
}else {
token = "";
}
try {
// 请求地址
String requestUrl = urlAddress + "query_token";
@@ -96,11 +117,21 @@ public class YCBCServiceImpl implements YCBCService {
byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64((String) result.getData()),
dataSecret.getBytes(), dataSecretIv.getBytes());
String dataStr = new String(plainText, "UTF-8");
Map<String, String> resultMap = (Map<String, String>) JSON.parse(dataStr);
token = resultMap.get("AccessToken");
JSONObject resultJson = (JSONObject) JSON.parse(dataStr);
logger.info("获取甬城泊车平台令牌 resultJson:{}", resultJson);
int succStat = resultJson.getInteger("SuccStat");
if (succStat != 0) {
logger.error("获取甬城泊车平台令牌 error:{}", result.getMsg());
return token;
}
token = resultJson.getString("AccessToken");
logger.info("甬城泊车 token: {}", token);
// 存入缓存
long tokenAvailableTime = resultJson.getLong("TokenAvailableTime");
redisCache.setCacheObject(redisKey, token, (int) tokenAvailableTime, TimeUnit.SECONDS);
}
} catch (Exception e) {
logger.error("获取甬城泊车平台令牌 error:", e);
return token;
}
return token;
@@ -124,6 +155,16 @@ public class YCBCServiceImpl implements YCBCService {
*/
@Override
public Map<String, String> queryStationsInfo(QueryStationInfoDTO dto) {
// 查询出要查询的充电站id并set进 dto 的stationIds
ThirdPartyStationRelation relation = new ThirdPartyStationRelation();
relation.setThirdPartyType(ThirdPlatformTypeEnum.YONG_CHENG_BO_CHE.getCode());
List<ThirdPartyStationRelation> ycbcList = relationService.selectThirdPartyStationRelationList(relation);
if (CollectionUtils.isNotEmpty(ycbcList)) {
List<String> stationList = ycbcList.stream()
.map(x -> String.valueOf(x.getStationId()))
.collect(Collectors.toList());
dto.setStationIds(stationList);
}
return zdlService.queryStationsInfo(dto);
}

View File

@@ -138,7 +138,7 @@ public class ZDLServiceImpl implements ZDLService {
// 截取运营商组织机构代码(去除最后一位后的最后九位)
MerchantInfoVO merchantInfo = pileMerchantInfoService.getMerchantInfoVO(String.valueOf(pileStationInfo.getMerchantId()));
String organizationCode = merchantInfo.getOrganizationCode();
if (organizationCode.length() == 18) {
if (StringUtils.isNotBlank(organizationCode) && organizationCode.length() == 18) {
String equipmentOwnerId = StringUtils.substring(organizationCode, organizationCode.length() - 10, organizationCode.length() - 1);
info.setEquipmentOwnerId(equipmentOwnerId);
}
@@ -228,7 +228,7 @@ public class ZDLServiceImpl implements ZDLService {
stationInfo.setStationId(String.valueOf(pileStationInfo.getId()));
stationInfo.setOperatorId(dto.getOperatorId()); // 组织机构代码
String organizationCode = pileStationInfo.getOrganizationCode();
if (organizationCode.length() == 18) {
if (StringUtils.isNotBlank(organizationCode) && organizationCode.length() == 18) {
String equipmentOwnerId = StringUtils.substring(organizationCode, organizationCode.length() - 10, organizationCode.length() - 1);
stationInfo.setEquipmentOwnerId(equipmentOwnerId);
}else {