diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/QueryStartChargeDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/QueryStartChargeDTO.java index 373adb668..3ec44b457 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/QueryStartChargeDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/QueryStartChargeDTO.java @@ -19,6 +19,12 @@ public class QueryStartChargeDTO { @JsonProperty(value = "StartChargeSeq") private String startChargeSeq; + /** + * 业务策略查询流水号 + */ + @JsonProperty(value = "EquipBizSeq") + private String equipBizSeq; + /** * 充电设备接口编码 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/zdl/EquipBusinessPolicyVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/zdl/EquipBusinessPolicyVO.java new file mode 100644 index 000000000..4a1b158aa --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/zdl/EquipBusinessPolicyVO.java @@ -0,0 +1,86 @@ +package com.jsowell.pile.vo.zdl; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 业务策略信息体VO + * + * @author Lemon + * @Date 2024/1/3 16:24:51 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class EquipBusinessPolicyVO { + /** + * 业务策略查询流水号 + */ + @JsonProperty(value = "equipBizSeq") + private String equipBizSeq; + + /** + * 充电设备接口编码 + */ + @JsonProperty(value = "ConnectorID") + private String connectorId; + + /** + * 操作结果 + * 0:成功 + * 1:失败 + */ + @JsonProperty(value = "SuccStat") + private Integer succStat; + + /** + * 失败原因 + * 0:无 + * 1:此充电桩业务策略不存在 + */ + @JsonProperty(value = "FailReason") + private Integer failReason; + + /** + * 时段数 + * 0-32 + */ + @JsonProperty(value = "SumPeriod") + private Integer sumPeriod; + + /** + * 计费信息 + */ + @JsonProperty(value = "PolicyInfos") + private List policyInfos; + + @Data + public static class PolicyInfo { + /** + * 时段开始时间 + */ + @JsonProperty(value = "StartTime") + private String startTime; + + /** + * 电费 + * 保留小数点后四位 + */ + @JsonProperty(value = "ElecPrice") + private BigDecimal elecPrice; + + /** + * 服务费 + * 保留小数点后四位 + */ + @JsonProperty(value = "SevicePrice") + private BigDecimal servicePrice; + } +} diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java index e6c5ca240..c8fa43cbc 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java @@ -13,7 +13,10 @@ import com.jsowell.pile.service.*; import com.jsowell.pile.vo.base.MerchantInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationRelationVO; +import com.jsowell.pile.vo.uniapp.BillingPriceVO; +import com.jsowell.pile.vo.web.BillingTemplateVO; import com.jsowell.pile.vo.web.PileModelInfoVO; +import com.jsowell.pile.vo.zdl.EquipBusinessPolicyVO; import com.jsowell.thirdparty.lianlian.dto.CommonParamsDTO; import com.jsowell.thirdparty.lianlian.service.LianLianService; import com.jsowell.thirdparty.lianlian.util.Cryptos; @@ -74,6 +77,9 @@ public class ZDLServiceImpl implements ZDLService { @Autowired private IThirdPartyStationRelationService thirdPartyStationRelationService; + @Autowired + private IPileBillingTemplateService pileBillingTemplateService; + /** * 获取令牌 * @param dto @@ -353,13 +359,63 @@ public class ZDLServiceImpl implements ZDLService { } /** - * TODO 查询业务策略信息结果 + * 查询业务策略信息结果 * @param dto * @return */ @Override public Map queryEquipBusinessPolicy(QueryStartChargeDTO dto) { - return null; + List policyInfoList = new ArrayList<>(); + String pileConnectorCode = dto.getConnectorID(); + ThirdPartyPlatformConfig configInfo = thirdPartyPlatformConfigService.getInfoByOperatorId(dto.getOperatorId()); + if (configInfo == null) { + return null; + } + // 截取桩号 + String pileSn = StringUtils.substring(pileConnectorCode, 0, 14); + // 查询该桩的站点id + PileBasicInfo pileBasicInfo = pileBasicInfoService.selectPileBasicInfoBySN(pileSn); + // 根据桩号查询正在使用的计费模板 + List billingPriceVOList = pileBillingTemplateService.queryBillingPrice(String.valueOf(pileBasicInfo.getStationId())); + + if (CollectionUtils.isEmpty(billingPriceVOList)) { + return null; + } + EquipBusinessPolicyVO.PolicyInfo policyInfo = null; + for (BillingPriceVO billingPriceVO : billingPriceVOList) { + // 将时段开始时间、电费、服务费信息进行封装 + policyInfo = new EquipBusinessPolicyVO.PolicyInfo(); + policyInfo.setStartTime(billingPriceVO.getStartTime()); + policyInfo.setElecPrice(new BigDecimal(billingPriceVO.getElectricityPrice()).setScale(4, BigDecimal.ROUND_HALF_UP)); + policyInfo.setServicePrice(new BigDecimal(billingPriceVO.getServicePrice()).setScale(4, BigDecimal.ROUND_HALF_UP)); + + policyInfoList.add(policyInfo); + } + + // 拼装所需要的数据格式 + EquipBusinessPolicyVO vo = EquipBusinessPolicyVO.builder() + .equipBizSeq(dto.getEquipBizSeq()) + .connectorId(dto.getConnectorID()) + .succStat(0) + .failReason(0) + .sumPeriod(policyInfoList.size()) + .policyInfos(policyInfoList) + + .build(); + + // 加密 + Map resultMap = Maps.newLinkedHashMap(); + // 加密数据 + byte[] encryptText = Cryptos.aesEncrypt(JSONObject.toJSONString(vo).getBytes(), + configInfo.getDataSecret().getBytes(), configInfo.getDataSecretIv().getBytes()); + String encryptData = Encodes.encodeBase64(encryptText); + + resultMap.put("Data", encryptData); + // 生成sig + String resultSign = GBSignUtils.sign(resultMap, configInfo.getSignSecret()); + resultMap.put("Sig", resultSign); + + return resultMap; } /**