From ff9a10c99238453b05efc6b91a1e5099a75169e8 Mon Sep 17 00:00:00 2001 From: Lemon Date: Tue, 10 Oct 2023 16:20:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E5=8D=97=E7=91=9E?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pile/domain/nanrui}/NROrderInfo.java | 26 ++++++++----- .../pile/dto/nanrui/NRQueryOrderDTO.java | 28 ++++++++++++++ .../pile/mapper/OrderBasicInfoMapper.java | 9 +++++ .../pile/service/IOrderBasicInfoService.java | 16 ++++++++ .../impl/OrderBasicInfoServiceImpl.java | 38 +++++++++++++++++++ .../mapper/pile/OrderBasicInfoMapper.xml | 29 ++++++++++++++ .../thirdparty/nanrui/service/NRService.java | 23 ++++++++++- .../nanrui/service/impl/NRServiceImpl.java | 27 ++++++++++--- 8 files changed, 181 insertions(+), 15 deletions(-) rename {jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/domain => jsowell-pile/src/main/java/com/jsowell/pile/domain/nanrui}/NROrderInfo.java (79%) create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/dto/nanrui/NRQueryOrderDTO.java diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/domain/NROrderInfo.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/nanrui/NROrderInfo.java similarity index 79% rename from jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/domain/NROrderInfo.java rename to jsowell-pile/src/main/java/com/jsowell/pile/domain/nanrui/NROrderInfo.java index ec364552a..6afc20277 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/domain/NROrderInfo.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/nanrui/NROrderInfo.java @@ -1,7 +1,12 @@ -package com.jsowell.thirdparty.nanrui.domain; +package com.jsowell.pile.domain.nanrui; import com.alibaba.fastjson2.annotation.JSONField; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; /** * 订单信息 @@ -10,6 +15,9 @@ import lombok.Data; * @Date 2023/9/25 14:33 */ @Data +@AllArgsConstructor +@NoArgsConstructor +@Builder public class NROrderInfo { /** * 运营商 ID @@ -37,7 +45,7 @@ public class NROrderInfo { * 3:其他 */ @JSONField(name = "UserChargeType") - private String userChargeType; + private Integer userChargeType; /** * 本次充电电量 @@ -45,35 +53,35 @@ public class NROrderInfo { * 如果不设置峰谷电价,平电量等于本次充电电量,其他分电量为零 */ @JSONField(name = "Elect") - private String elect; + private BigDecimal elect; /** * 尖阶段电量 * 单位 kWh,精度 0.001 */ @JSONField(name = "CuspElect") - private String cuspElect; + private BigDecimal cuspElect; /** * 峰阶段电量 * 单位 kWh,精度 0.001 */ @JSONField(name = "PeakElect") - private String peakElect; + private BigDecimal peakElect; /** * 平阶段电量 * 单位 kWh,精度 0.001 */ @JSONField(name = "FlatElect") - private String flatElect; + private BigDecimal flatElect; /** * 谷阶段电量 * 单位 kWh,精度 0.001 */ @JSONField(name = "ValleyElect") - private String valleyElect; + private BigDecimal valleyElect; /** * 本次充电开始时间 @@ -95,12 +103,12 @@ public class NROrderInfo { * 单位 kWh,精度 0.001 */ @JSONField(name = "MeterValueStart") - private String meterValueStart; + private BigDecimal meterValueStart; /** * 电表总止值 * 单位 kWh,精度 0.001 */ @JSONField(name = "MeterValueEnd") - private String meterValueEnd; + private BigDecimal meterValueEnd; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/nanrui/NRQueryOrderDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/nanrui/NRQueryOrderDTO.java new file mode 100644 index 000000000..2679397a1 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/nanrui/NRQueryOrderDTO.java @@ -0,0 +1,28 @@ +package com.jsowell.pile.dto.nanrui; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; + +/** + * 南瑞平台查询订单信息DTO + * + * @author Lemon + * @Date 2023/10/10 14:59 + */ +@Data +public class NRQueryOrderDTO { + + private String orderCode; + + /** + * yyyy-MM-dd HH:mm:ss 格式,必填,以充电结束时间为准 + */ + @JSONField(name = "QueryStartTime") + private String queryStartTime; + + /** + * yyyy-MM-dd HH:mm:ss 格式,必填,以充电结束时间为准 + */ + @JSONField(name = "QueryEndTime") + private String queryEndTime; +} \ No newline at end of file diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java index 3cde8e245..3228cbfe7 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java @@ -2,7 +2,9 @@ package com.jsowell.pile.mapper; import com.jsowell.pile.domain.OrderBasicInfo; import com.jsowell.pile.domain.OrderDetail; +import com.jsowell.pile.domain.nanrui.NROrderInfo; import com.jsowell.pile.dto.*; +import com.jsowell.pile.dto.nanrui.NRQueryOrderDTO; import com.jsowell.pile.vo.base.MerchantOrderInfoVO; import com.jsowell.pile.vo.lianlian.AccumulativeInfoVO; import com.jsowell.pile.vo.uniapp.OrderVO; @@ -246,4 +248,11 @@ public interface OrderBasicInfoMapper { * @return */ int updateMerchantByStationId(@Param("stationId")Long stationId, @Param("newMerchantId")String newMerchantId); + + /** + * 通过订单编号获取南瑞平台所需要的订单数据信息 + * @param dto + * @return + */ + List getNROrderInfoByOrderCode(@Param("dto") NRQueryOrderDTO dto); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java index 8c3f0aebf..9a74a8138 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java @@ -6,7 +6,9 @@ import com.jsowell.adapay.vo.OrderSettleResult; import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; import com.jsowell.common.core.domain.ykc.TransactionRecordsData; import com.jsowell.pile.domain.*; +import com.jsowell.pile.domain.nanrui.NROrderInfo; import com.jsowell.pile.dto.*; +import com.jsowell.pile.dto.nanrui.NRQueryOrderDTO; import com.jsowell.pile.service.orderlogic.AbstractOrderLogic; import com.jsowell.pile.vo.base.MerchantOrderInfoVO; import com.jsowell.pile.vo.base.OrderAmountDetailVO; @@ -353,4 +355,18 @@ public interface IOrderBasicInfoService { * @return */ int updateMerchantByStationId(Long stationId, String newMerchantId); + + /** + * 通过订单编号获取南瑞平台所需要的订单数据信息 + * @param orderCode + * @return + */ + NROrderInfo getNROrderInfoByOrderCode(String orderCode); + + /** + * 通过充电结束时间批量查询 + * @param dto + * @return + */ + List getNROrderInfos(NRQueryOrderDTO dto); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index 7dbeaa846..c12f6fab7 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -35,7 +35,9 @@ import com.jsowell.common.util.bean.BeanUtils; import com.jsowell.common.util.id.IdUtils; import com.jsowell.common.util.id.SnowflakeIdWorker; import com.jsowell.pile.domain.*; +import com.jsowell.pile.domain.nanrui.NROrderInfo; import com.jsowell.pile.dto.*; +import com.jsowell.pile.dto.nanrui.NRQueryOrderDTO; import com.jsowell.pile.mapper.OrderBasicInfoMapper; import com.jsowell.pile.service.*; import com.jsowell.pile.service.orderlogic.AbstractOrderLogic; @@ -165,6 +167,9 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { @Autowired private ClearingBillInfoService clearingBillInfoService; + @Autowired + private IPileMsgRecordService pileMsgRecordService; + /** * 条件查询订单基本信息 * @@ -989,6 +994,39 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { return orderBasicInfoMapper.updateMerchantByStationId(stationId, newMerchantId); } + /** + * 通过订单编号获取南瑞平台所需要的订单数据信息 + * @param orderCode + * @return + */ + @Override + public NROrderInfo getNROrderInfoByOrderCode(String orderCode) { + NRQueryOrderDTO dto = new NRQueryOrderDTO(); + dto.setOrderCode(orderCode); + List nrOrderInfos = orderBasicInfoMapper.getNROrderInfoByOrderCode(dto); + if (CollectionUtils.isEmpty(nrOrderInfos)) { + return null; + } + // 此方法仅通过订单编号查,因此只有一条数据 + NROrderInfo nrOrderInfo = nrOrderInfos.get(0); + // 将组织机构代码截取后九位 + String organizationCode = nrOrderInfo.getOperatorId(); + String operatorId = StringUtils.substring(organizationCode, organizationCode.length() - 9); + nrOrderInfo.setOperatorId(operatorId); + nrOrderInfo.setUserChargeType(1); + // TODO 获取电表总起、止值 + // pileMsgRecordService.getPileFeedList() + + nrOrderInfo.setMeterValueStart(BigDecimal.ZERO); + nrOrderInfo.setMeterValueEnd(BigDecimal.ZERO); + return nrOrderInfo; + } + + @Override + public List getNROrderInfos(NRQueryOrderDTO dto) { + return orderBasicInfoMapper.getNROrderInfoByOrderCode(dto); + } + /** * 卡状态解锁 */ diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml index cf5a7a214..c6529ef5a 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml @@ -1165,4 +1165,33 @@ where station_id = #{stationId,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/service/NRService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/service/NRService.java index 8e03aeb1a..5236c8e57 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/service/NRService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/service/NRService.java @@ -1,7 +1,10 @@ package com.jsowell.thirdparty.nanrui.service; import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; +import com.jsowell.pile.domain.nanrui.NROrderInfo; +import com.jsowell.pile.dto.QueryOrderDTO; import com.jsowell.pile.dto.QueryStationInfoDTO; +import com.jsowell.pile.dto.nanrui.NRQueryOrderDTO; import com.jsowell.thirdparty.nanrui.domain.NRStationStatusInfo; import java.text.ParseException; @@ -52,8 +55,26 @@ public interface NRService { /** * 查询设备接口状态 + * 此接口用于批量查询设备实时状态 + * 由充电运营商方实现此接口,省、市两级监管平台调用。 * @param stationIds * @return */ - String query_station_status(List stationIds); + Map query_station_status(List stationIds); + + + /** + * 充电电量信息推送 + * 当运营商平台完成一次充电时,将充电电量信息推送至省、市两级监管平台 + * @param orderCode + * @return + */ + String notification_orderInfo(String orderCode); + + /** + * 此接口用于批量查询时间区段内交易记录 + * @param dto + * @return + */ + List query_order_info(NRQueryOrderDTO dto); } \ No newline at end of file diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/service/impl/NRServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/service/impl/NRServiceImpl.java index 063f55dfd..2cbbfbb64 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/service/impl/NRServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/service/impl/NRServiceImpl.java @@ -11,16 +11,15 @@ import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.PageUtils; import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.*; +import com.jsowell.pile.domain.nanrui.NROrderInfo; import com.jsowell.pile.dto.QueryConnectorListDTO; import com.jsowell.pile.dto.QueryStationInfoDTO; +import com.jsowell.pile.dto.nanrui.NRQueryOrderDTO; import com.jsowell.pile.service.*; -import com.jsowell.pile.vo.base.ConnectorInfoVO; import com.jsowell.pile.vo.uniapp.CurrentTimePriceDetails; import com.jsowell.pile.vo.web.PileConnectorInfoVO; import com.jsowell.pile.vo.web.PileModelInfoVO; import com.jsowell.pile.vo.web.PileStationVO; -import com.jsowell.thirdparty.lianlian.domain.ConnectorInfo; -import com.jsowell.thirdparty.lianlian.domain.StationInfo; import com.jsowell.thirdparty.nanrui.domain.*; import com.jsowell.thirdparty.nanrui.service.NRService; import org.apache.commons.collections4.CollectionUtils; @@ -266,7 +265,7 @@ public class NRServiceImpl implements NRService { } @Override - public String query_station_status(List stationIds) { + public Map query_station_status(List stationIds) { List resultList = new ArrayList<>(); // 将 stationIdList 转换成 List @@ -279,7 +278,7 @@ public class NRServiceImpl implements NRService { .build(); List connectorInfoVOS = pileConnectorInfoService.getConnectorInfoListByParams(dto); if (CollectionUtils.isEmpty(connectorInfoVOS)) { - return null; + return new LinkedHashMap<>(); } // 根据stationId分组 Map> collect = connectorInfoVOS.stream() @@ -327,11 +326,29 @@ public class NRServiceImpl implements NRService { Map map = new LinkedHashMap<>(); map.put("StationStatusInfos", resultList); + return map; + } + + @Override + public String notification_orderInfo(String orderCode) { + // 根据订单号查询订单信息 + NROrderInfo nrOrderInfo = orderBasicInfoService.getNROrderInfoByOrderCode(orderCode); // TODO 发送请求 + Map map = new LinkedHashMap<>(); + map.put("OrderInfo", nrOrderInfo); return null; } + @Override + public List query_order_info(NRQueryOrderDTO dto) { + List nrOrderInfos = orderBasicInfoService.getNROrderInfos(dto); + if (CollectionUtils.isEmpty(nrOrderInfos)) { + return new ArrayList<>(); + } + return nrOrderInfos; + } + public static void main(String[] args) { String chargingTime = "30"; Date beginTime = DateUtils.addMinute(new Date(), -Integer.parseInt(chargingTime));