| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- package com.zsElectric.boot.charging.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.fasterxml.jackson.core.JsonProcessingException;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.zsElectric.boot.charging.entity.*;
- import com.zsElectric.boot.charging.mapper.ThirdPartyConnectorInfoMapper;
- import com.zsElectric.boot.charging.mapper.ThirdPartyEquipmentInfoMapper;
- import com.zsElectric.boot.charging.mapper.ThirdPartyStationInfoMapper;
- import com.zsElectric.boot.charging.service.ThirdPartyStationDataService;
- import com.zsElectric.boot.charging.vo.QueryStationsInfoVO;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.util.CollectionUtils;
- import java.math.BigDecimal;
- import java.util.List;
- /**
- * 第三方充电站数据存储服务实现
- *
- * @author system
- * @since 2025-12-11
- */
- @Slf4j
- @Service
- @RequiredArgsConstructor
- public class ThirdPartyStationDataServiceImpl implements ThirdPartyStationDataService {
- private final ThirdPartyStationInfoMapper stationInfoMapper;
- private final ThirdPartyEquipmentInfoMapper equipmentInfoMapper;
- private final ThirdPartyConnectorInfoMapper connectorInfoMapper;
- private final ObjectMapper objectMapper;
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void saveStationsInfo(QueryStationsInfoVO queryStationsInfoVO) {
- if (queryStationsInfoVO == null || CollectionUtils.isEmpty(queryStationsInfoVO.getStationInfos())) {
- log.warn("充电站信息为空,跳过存储");
- return;
- }
- List<StationInfo> stationInfos = queryStationsInfoVO.getStationInfos();
- log.info("开始保存充电站信息,总数: {}", stationInfos.size());
- for (StationInfo stationInfo : stationInfos) {
- try {
- // 保存充电站信息
- saveStationInfo(stationInfo);
- // 保存设备信息
- if (!CollectionUtils.isEmpty(stationInfo.getEquipmentInfos())) {
- for (EquipmentInfo equipmentInfo : stationInfo.getEquipmentInfos()) {
- saveEquipmentInfo(equipmentInfo, stationInfo.getStationID());
- // 保存接口信息
- if (!CollectionUtils.isEmpty(equipmentInfo.getConnectorInfos())) {
- for (ConnectorInfo connectorInfo : equipmentInfo.getConnectorInfos()) {
- saveConnectorInfo(connectorInfo, equipmentInfo.getEquipmentID(), stationInfo.getStationID());
- }
- }
- }
- }
- } catch (Exception e) {
- log.error("保存充电站信息失败, stationId: {}", stationInfo.getStationID(), e);
- throw new RuntimeException("保存充电站信息失败: " + stationInfo.getStationID(), e);
- }
- }
- log.info("充电站信息保存完成");
- }
- /**
- * 保存充电站信息
- */
- private void saveStationInfo(StationInfo stationInfo) {
- // 查询是否已存在
- ThirdPartyStationInfo existingStation = stationInfoMapper.selectOne(
- new LambdaQueryWrapper<ThirdPartyStationInfo>()
- .eq(ThirdPartyStationInfo::getStationId, stationInfo.getStationID())
- );
- ThirdPartyStationInfo entity = new ThirdPartyStationInfo();
- if (existingStation != null) {
- entity.setId(existingStation.getId());
- }
- // 设置字段值
- entity.setStationId(stationInfo.getStationID());
- entity.setOperatorId(stationInfo.getOperatorID());
- entity.setEquipmentOwnerId(stationInfo.getEquipmentOwnerID());
- entity.setStationName(stationInfo.getStationName());
- entity.setCountryCode(stationInfo.getCountryCode());
- entity.setAreaCode(stationInfo.getAreaCode());
- entity.setAddress(stationInfo.getAddress());
- entity.setStationTel(stationInfo.getStationTel());
- entity.setServiceTel(stationInfo.getServiceTel());
- entity.setStationType(stationInfo.getStationType());
- entity.setStationStatus(stationInfo.getStationStatus());
- entity.setParkNums(stationInfo.getParkNums());
-
- // 处理经纬度
- if (stationInfo.getStationLng() != null) {
- entity.setStationLng(BigDecimal.valueOf(stationInfo.getStationLng()));
- }
- if (stationInfo.getStationLat() != null) {
- entity.setStationLat(BigDecimal.valueOf(stationInfo.getStationLat()));
- }
-
- entity.setSiteGuide(stationInfo.getSiteGuide());
- entity.setConstruction(stationInfo.getConstruction());
-
- // 处理图片列表(转JSON)
- if (!CollectionUtils.isEmpty(stationInfo.getPictures())) {
- try {
- entity.setPictures(objectMapper.writeValueAsString(stationInfo.getPictures()));
- } catch (JsonProcessingException e) {
- log.warn("图片列表转JSON失败", e);
- }
- }
-
- entity.setBusineHours(stationInfo.getBusineHours());
-
- // 处理费用(字符串转BigDecimal)
- if (stationInfo.getElectricityFee() != null) {
- try {
- entity.setElectricityFee(new BigDecimal(stationInfo.getElectricityFee()));
- } catch (NumberFormatException e) {
- log.warn("电费转换失败: {}", stationInfo.getElectricityFee(), e);
- }
- }
- if (stationInfo.getServiceFee() != null) {
- try {
- entity.setServiceFee(new BigDecimal(stationInfo.getServiceFee()));
- } catch (NumberFormatException e) {
- log.warn("服务费转换失败: {}", stationInfo.getServiceFee(), e);
- }
- }
-
- entity.setParkFee(stationInfo.getParkFee());
- entity.setPayment(stationInfo.getPayment());
- entity.setSupportOrder(stationInfo.getSupportOrder());
- entity.setRemark(stationInfo.getRemark());
- // 插入或更新
- if (existingStation == null) {
- stationInfoMapper.insert(entity);
- } else {
- stationInfoMapper.updateById(entity);
- }
- }
- /**
- * 保存充电设备信息
- */
- private void saveEquipmentInfo(EquipmentInfo equipmentInfo, String stationId) {
- // 查询是否已存在
- ThirdPartyEquipmentInfo existingEquipment = equipmentInfoMapper.selectOne(
- new LambdaQueryWrapper<ThirdPartyEquipmentInfo>()
- .eq(ThirdPartyEquipmentInfo::getEquipmentId, equipmentInfo.getEquipmentID())
- );
- ThirdPartyEquipmentInfo entity = new ThirdPartyEquipmentInfo();
- if (existingEquipment != null) {
- entity.setId(existingEquipment.getId());
- }
- // 设置字段值
- entity.setEquipmentId(equipmentInfo.getEquipmentID());
- entity.setStationId(stationId);
- entity.setManufacturerId(equipmentInfo.getManufacturerID());
- entity.setManufacturerName(equipmentInfo.getManufacturerName());
- entity.setEquipmentModel(equipmentInfo.getEquipmentModel());
- entity.setProductionDate(equipmentInfo.getProductionDate());
- entity.setEquipmentType(equipmentInfo.getEquipmentType());
-
- // 处理经纬度
- if (equipmentInfo.getEquipmentLng() != null) {
- entity.setEquipmentLng(BigDecimal.valueOf(equipmentInfo.getEquipmentLng()));
- }
- if (equipmentInfo.getEquipmentLat() != null) {
- entity.setEquipmentLat(BigDecimal.valueOf(equipmentInfo.getEquipmentLat()));
- }
-
- // 处理功率
- if (equipmentInfo.getPower() != null) {
- entity.setPower(BigDecimal.valueOf(equipmentInfo.getPower()));
- }
-
- entity.setEquipmentName(equipmentInfo.getEquipmentName());
- // 插入或更新
- if (existingEquipment == null) {
- equipmentInfoMapper.insert(entity);
- } else {
- equipmentInfoMapper.updateById(entity);
- }
- }
- /**
- * 保存充电接口信息
- */
- private void saveConnectorInfo(ConnectorInfo connectorInfo, String equipmentId, String stationId) {
- // 查询是否已存在
- ThirdPartyConnectorInfo existingConnector = connectorInfoMapper.selectOne(
- new LambdaQueryWrapper<ThirdPartyConnectorInfo>()
- .eq(ThirdPartyConnectorInfo::getConnectorId, connectorInfo.getConnectorID())
- );
- ThirdPartyConnectorInfo entity = new ThirdPartyConnectorInfo();
- if (existingConnector != null) {
- entity.setId(existingConnector.getId());
- }
- // 设置字段值
- entity.setConnectorId(connectorInfo.getConnectorID());
- entity.setEquipmentId(equipmentId);
- entity.setStationId(stationId);
- entity.setConnectorName(connectorInfo.getConnectorName());
- entity.setConnectorType(connectorInfo.getConnectorType());
- entity.setVoltageUpperLimits(connectorInfo.getVoltageUpperLimits());
- entity.setVoltageLowerLimits(connectorInfo.getVoltageLowerLimits());
- entity.setCurrent(connectorInfo.getCurrent());
-
- // 处理功率
- if (connectorInfo.getPower() != null) {
- entity.setPower(BigDecimal.valueOf(connectorInfo.getPower()));
- }
-
- entity.setParkNo(connectorInfo.getParkNo());
- entity.setNationalStandard(connectorInfo.getNationalStandard());
- // 插入或更新
- if (existingConnector == null) {
- connectorInfoMapper.insert(entity);
- } else {
- connectorInfoMapper.updateById(entity);
- }
- }
- }
|