mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-26 22:15:06 +08:00
Merge branch 'dev' of http://192.168.2.46:8099/jsowell/jsowell-charger-web into dev
This commit is contained in:
@@ -5,6 +5,7 @@ import com.jsowell.pile.domain.PileStationInfo;
|
||||
import com.jsowell.pile.dto.FastCreateStationDTO;
|
||||
import com.jsowell.pile.dto.QueryStationDTO;
|
||||
import com.jsowell.pile.dto.QueryStationInfoDTO;
|
||||
import com.jsowell.pile.dto.StationStatisticsInfoDTO;
|
||||
import com.jsowell.pile.dto.amap.GetStationInfoDTO;
|
||||
import com.jsowell.pile.dto.lutongyunting.BindParkingPlatformDTO;
|
||||
import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO;
|
||||
@@ -150,11 +151,13 @@ public interface PileStationInfoService {
|
||||
|
||||
|
||||
|
||||
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 后管小程序 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||||
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 后管小程序 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||||
|
||||
public List<PileStationInfo> getStationInfosByMerchantIds(List<String> merchantIds);
|
||||
|
||||
/**
|
||||
* 获取站点统计信息
|
||||
* @param merchantId
|
||||
* @param dto
|
||||
*/
|
||||
List<StationStatisticsInfosVO> getStationStatisticsInfos(String merchantId);
|
||||
List<StationStatisticsInfosVO> getStationStatisticsInfos(StationStatisticsInfoDTO dto);
|
||||
}
|
||||
|
||||
@@ -10,29 +10,29 @@ import com.jsowell.common.core.domain.entity.SysUser;
|
||||
import com.jsowell.common.core.domain.vo.AuthorizedDeptVO;
|
||||
import com.jsowell.common.core.page.PageResponse;
|
||||
import com.jsowell.common.core.redis.RedisCache;
|
||||
import com.jsowell.common.enums.thirdparty.BusinessInformationExchangeEnum;
|
||||
import com.jsowell.common.enums.ykc.PileConnectorDataBaseStatusEnum;
|
||||
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
|
||||
import com.jsowell.common.exception.BusinessException;
|
||||
import com.jsowell.common.util.*;
|
||||
import com.jsowell.common.util.ip.AddressUtils;
|
||||
import com.jsowell.pile.domain.PileBasicInfo;
|
||||
import com.jsowell.pile.domain.PileStationInfo;
|
||||
import com.jsowell.pile.domain.SettleOrderReport;
|
||||
import com.jsowell.pile.domain.ThirdpartyParkingConfig;
|
||||
import com.jsowell.pile.dto.FastCreateStationDTO;
|
||||
import com.jsowell.pile.dto.QueryStationDTO;
|
||||
import com.jsowell.pile.dto.QueryStationInfoDTO;
|
||||
import com.jsowell.pile.dto.*;
|
||||
import com.jsowell.pile.dto.amap.GetStationInfoDTO;
|
||||
import com.jsowell.pile.dto.lutongyunting.BindParkingPlatformDTO;
|
||||
import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO;
|
||||
import com.jsowell.pile.mapper.PileStationInfoMapper;
|
||||
import com.jsowell.pile.service.*;
|
||||
import com.jsowell.pile.util.UserUtils;
|
||||
import com.jsowell.pile.vo.base.MerchantInfoVO;
|
||||
import com.jsowell.pile.vo.base.PileInfoVO;
|
||||
import com.jsowell.pile.vo.base.StationInfoVO;
|
||||
import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO;
|
||||
import com.jsowell.pile.vo.SupStationStatsVO;
|
||||
import com.jsowell.pile.vo.base.*;
|
||||
import com.jsowell.pile.vo.ningxiajiaotou.NXJTStationInfoVO;
|
||||
import com.jsowell.pile.vo.uniapp.business.StationStatisticsInfosVO;
|
||||
import com.jsowell.pile.vo.uniapp.customer.CurrentTimePriceDetails;
|
||||
import com.jsowell.pile.vo.web.MerchantOrderReportVO;
|
||||
import com.jsowell.pile.vo.web.PileStationVO;
|
||||
import com.jsowell.system.service.SysDeptService;
|
||||
import com.jsowell.system.service.SysUserService;
|
||||
@@ -44,9 +44,13 @@ import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -88,6 +92,9 @@ public class PileStationInfoServiceImpl implements PileStationInfoService {
|
||||
@Autowired
|
||||
private OrderBasicInfoService orderBasicInfoService;
|
||||
|
||||
@Autowired
|
||||
private SettleOrderReportService settleOrderReportService;
|
||||
|
||||
|
||||
/**
|
||||
* 查询充电站信息
|
||||
@@ -623,16 +630,115 @@ public class PileStationInfoServiceImpl implements PileStationInfoService {
|
||||
return pileStationInfoMapper.queryInfoByDeptId(deptId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PileStationInfo> getStationInfosByMerchantIds(List<String> merchantIds){
|
||||
return pileStationInfoMapper.getStationInfosByMerchantIds(merchantIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取站点统计信息
|
||||
* @param merchantId
|
||||
* @param dto
|
||||
*/
|
||||
@Override
|
||||
public List<StationStatisticsInfosVO> getStationStatisticsInfos(String merchantId) {
|
||||
// 根据运营商id查出所有站点id
|
||||
public List<StationStatisticsInfosVO> getStationStatisticsInfos(StationStatisticsInfoDTO dto) {
|
||||
String merchantId = dto.getMerchantId();
|
||||
// 获取当前登录账号的运营商权限
|
||||
List<MerchantInfoVO> merchantInfoVOList = UserUtils.getMerchantInfoVOList();
|
||||
List<String> merchantIds = new ArrayList<>();
|
||||
List<StationStatisticsInfosVO> resultList = new ArrayList<>();
|
||||
if (StringUtils.isBlank(merchantId)) {
|
||||
merchantIds = merchantInfoVOList.stream()
|
||||
.map(MerchantInfoVO::getMerchantId)
|
||||
.collect(Collectors.toList());
|
||||
}else {
|
||||
merchantIds.add(merchantId);
|
||||
}
|
||||
// 根据运营商ids查出所有站点id
|
||||
List<PileStationInfo> pileStationInfos = getStationInfosByMerchantIds(merchantIds);
|
||||
if (CollectionUtils.isEmpty(pileStationInfos)) {
|
||||
// 未查到该运营商下的站点
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_SELECT_INFO_IS_NULL);
|
||||
}
|
||||
List<String> stationIds = pileStationInfos.stream()
|
||||
.map(x -> String.valueOf(x.getId()))
|
||||
.collect(Collectors.toList());
|
||||
// 创建DecimalFormat对象并设置格式
|
||||
DecimalFormat df = new DecimalFormat("0.00%");
|
||||
// 根据站点ids查询站点营收报表
|
||||
List<SettleOrderReport> list = settleOrderReportService.queryOrderReport(stationIds, dto.getStartTime(), dto.getEndTime());
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_SELECT_INFO_IS_NULL);
|
||||
}
|
||||
// 根据站点id分组,将充电度数、充电金额、充电次数进行累加
|
||||
Map<String, SettleOrderReport> collect = list.stream()
|
||||
.sorted(Comparator.comparing(SettleOrderReport::getStationId))
|
||||
// .filter(vo -> vo.getChargingTime() != null && vo.getTotalPower() != null)
|
||||
.collect(Collectors.toMap(SettleOrderReport::getStationId, Function.identity(),
|
||||
(a, b) -> {
|
||||
a.setUseElectricity(a.getUseElectricity().add(b.getUseElectricity()));
|
||||
a.setTotalAmount(a.getTotalAmount().add(b.getTotalAmount()));
|
||||
a.setChargeNum(String.valueOf(Integer.parseInt(a.getChargeNum()) + Integer.parseInt(b.getChargeNum())));
|
||||
return a;
|
||||
}));
|
||||
|
||||
return null;
|
||||
|
||||
for (Map.Entry<String, SettleOrderReport> entry: collect.entrySet()) {
|
||||
String stationId = entry.getKey();
|
||||
SettleOrderReport report = entry.getValue();
|
||||
|
||||
// 查询枪口列表
|
||||
List<ConnectorInfoVO> uniAppConnectorList = pileConnectorInfoService.getUniAppConnectorList(Long.parseLong(stationId));
|
||||
|
||||
int chargingConnectorNum = Constants.zero; // 充电中
|
||||
int freeConnectorNum = Constants.zero; // 空闲
|
||||
int occupiedConnectorNum = Constants.zero; // 占用
|
||||
int hangingConnectorNum = Constants.zero; // 挂起
|
||||
int offlineConnectorNum = Constants.zero; // 离线
|
||||
int faultConnectorNum = Constants.zero; // 故障
|
||||
|
||||
for (ConnectorInfoVO connectorInfoVO : uniAppConnectorList) {
|
||||
String connectorStatus = connectorInfoVO.getConnectorStatus();
|
||||
if (StringUtils.equals(PileConnectorDataBaseStatusEnum.FREE.getValue(), connectorStatus)) {
|
||||
// 空闲
|
||||
freeConnectorNum += 1;
|
||||
}else if (StringUtils.equals(PileConnectorDataBaseStatusEnum.OCCUPIED_NOT_CHARGED.getValue(), connectorStatus)) {
|
||||
// 占用(未充电)
|
||||
occupiedConnectorNum += 1;
|
||||
}else if (StringUtils.equals(PileConnectorDataBaseStatusEnum.OCCUPIED_CHARGING.getValue(), connectorStatus)) {
|
||||
// 充电中
|
||||
chargingConnectorNum += 1;
|
||||
}else if (StringUtils.equals(PileConnectorDataBaseStatusEnum.OFF_NETWORK.getValue(), connectorStatus)) {
|
||||
// 离线
|
||||
offlineConnectorNum += 1;
|
||||
}else if(StringUtils.equals(PileConnectorDataBaseStatusEnum.FAULT.getValue(), connectorStatus)) {
|
||||
// 故障
|
||||
faultConnectorNum += 1;
|
||||
}
|
||||
}
|
||||
// 计算枪口可使用率
|
||||
int totalConnectorNum = uniAppConnectorList.size();
|
||||
double connectorAvailability = (double) freeConnectorNum / totalConnectorNum;
|
||||
String format = df.format(connectorAvailability);
|
||||
|
||||
StationStatisticsInfosVO vo = StationStatisticsInfosVO.builder()
|
||||
.stationId(stationId)
|
||||
// .stationName(pileStationInfo.getStationName())
|
||||
.chargeDegree(report.getUseElectricity())
|
||||
.chargeAmount(report.getTotalAmount())
|
||||
.orderQuantity(Integer.parseInt(report.getChargeNum()))
|
||||
.connectorAvailability(format)
|
||||
.chargingConnectorNum(chargingConnectorNum)
|
||||
.freeConnectorNum(freeConnectorNum)
|
||||
.occupiedConnectorNum(occupiedConnectorNum)
|
||||
.hangingConnectorNum(hangingConnectorNum)
|
||||
.offlineConnectorNum(offlineConnectorNum)
|
||||
.faultConnectorNum(faultConnectorNum)
|
||||
.build();
|
||||
|
||||
resultList.add(vo);
|
||||
}
|
||||
|
||||
return resultList;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user