update 个人桩预约

This commit is contained in:
Guoqs
2024-07-25 16:18:23 +08:00
parent 8f14e4e71d
commit b05a7e6ac2
9 changed files with 255 additions and 77 deletions

View File

@@ -13,6 +13,7 @@ import com.jsowell.common.util.StringUtils;
import com.jsowell.pile.dto.*;
import com.jsowell.pile.service.PileBasicInfoService;
import com.jsowell.pile.service.PileMerchantInfoService;
import com.jsowell.pile.service.PileReservationInfoService;
import com.jsowell.pile.vo.uniapp.customer.PersonPileConnectorSumInfoVO;
import com.jsowell.pile.vo.uniapp.customer.PersonPileRealTimeVO;
import com.jsowell.pile.vo.uniapp.customer.PersonalPileInfoVO;
@@ -43,6 +44,9 @@ public class PersonPileController extends BaseController {
@Autowired
private PileBasicInfoService pileBasicInfoService;
@Autowired
private PileReservationInfoService pileReservationInfoService;
/**
* 用户绑定个人桩
@@ -137,6 +141,7 @@ public class PersonPileController extends BaseController {
/**
* 个人桩停止充电
* http://localhost:8080/uniapp/personalPile/personPileStopCharging
* 管理员可以停自己启动的和别人启动的
* 其他人员只能停止自己启动的
*/
@@ -153,7 +158,7 @@ public class PersonPileController extends BaseController {
}
String memberId = getMemberIdByAuthorization(request);
dto.setMemberId(memberId);
pileService.personPileStopCharging(dto);
pileReservationInfoService.personPileStopCharging(dto);
response = new RestApiResponse<>();
} catch (BusinessException e) {
logger.error("个人桩停止充电error", e);
@@ -192,7 +197,6 @@ public class PersonPileController extends BaseController {
/**
* 获取枪口实时数据
* <p>
* http://localhost:8080/uniapp/personalPile/getConnectorRealTimeInfo
*
* @param request
@@ -316,7 +320,7 @@ public class PersonPileController extends BaseController {
try {
String memberId = getMemberIdByAuthorization(request);
dto.setMemberId(memberId);
int reservedId = pileService.createReserved(dto);
int reservedId = pileReservationInfoService.createReservation(dto);
response = new RestApiResponse<>(ImmutableMap.of("reservedId", reservedId));
} catch (BusinessException e) {
logger.error("添加预约充电error, params:{}", dto, e);
@@ -340,7 +344,7 @@ public class PersonPileController extends BaseController {
try {
String memberId = getMemberIdByAuthorization(request);
dto.setMemberId(memberId);
PageResponse pageResponse = pileService.queryReservedList(dto);
PageResponse pageResponse = pileReservationInfoService.queryReservationList(dto);
response = new RestApiResponse<>(pageResponse);
} catch (BusinessException e) {
logger.error("查询预约列表error, params:{}", dto, e);
@@ -353,6 +357,30 @@ public class PersonPileController extends BaseController {
return response;
}
/**
* 修改预约充电
* http://localhost:8080/uniapp/personalPile/updateReservation
*/
@PostMapping("/updateReservation")
public RestApiResponse<?> updateReservation(HttpServletRequest request, @RequestBody PileReservationDTO dto) {
// logger.info("修改预约充电状态params:{}", dto);
RestApiResponse<?> response = null;
try {
String memberId = getMemberIdByAuthorization(request);
dto.setMemberId(memberId);
pileReservationInfoService.updateReservation(dto);
response = new RestApiResponse<>();
} catch (BusinessException e) {
logger.error("修改预约充电状态error, params:{}", dto, e);
response = new RestApiResponse<>(e.getCode(), e.getMessage());
} catch (Exception e) {
logger.error("修改预约充电状态error, params:{}", dto, e);
response = new RestApiResponse<>(ReturnCodeEnum.CODE_UPDATE_RESERVED_STATUS_ERROR);
}
logger.info("修改预约充电状态params:{}, result:{}", dto, response);
return response;
}
/**
* 修改预约充电状态
* http://localhost:8080/uniapp/personalPile/updateReservedStatus
@@ -364,7 +392,7 @@ public class PersonPileController extends BaseController {
try {
String memberId = getMemberIdByAuthorization(request);
dto.setMemberId(memberId);
pileService.updateReservedStatus(dto);
pileReservationInfoService.updateReservationStatus(dto);
response = new RestApiResponse<>();
} catch (BusinessException e) {
logger.error("修改预约充电状态error, params:{}", dto, e);
@@ -388,7 +416,7 @@ public class PersonPileController extends BaseController {
try {
String memberId = getMemberIdByAuthorization(request);
dto.setMemberId(memberId);
pileService.deleteReservation(dto);
pileReservationInfoService.deleteReservation(dto);
response = new RestApiResponse<>();
} catch (BusinessException e) {
logger.error("修改预约充电状态error, params:{}", dto, e);

View File

@@ -390,7 +390,7 @@ public class PileService {
public PersonPileRealTimeVO getConnectorRealTimeInfo(QueryPersonPileDTO dto) {
// 根据memberId查出该用户 正在充电、个人桩启动(白名单支付方式)的订单号
OrderBasicInfo orderBasicInfo = OrderBasicInfo.builder()
.memberId(dto.getMemberId())
// .memberId(dto.getMemberId())
.orderStatus(OrderStatusEnum.IN_THE_CHARGING.getValue())
.pileConnectorCode(dto.getPileConnectorCode())
.payMode(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue()) // 3- 白名单支付
@@ -569,60 +569,6 @@ public class PileService {
}
}
public int createReserved(CreateReservedDTO dto) {
PileReservationInfo reservedInfo = new PileReservationInfo();
reservedInfo.setMemberId(dto.getMemberId());
reservedInfo.setPileSn(dto.getPileSn());
reservedInfo.setPileConnectorCode(dto.getPileConnectorCode());
reservedInfo.setStatus(Constants.ZERO); // 默认未生效
// reservedInfo.setStartTime(DateUtils.parseDate(dto.getStartTime()));
reservedInfo.setStartTime(Time.valueOf(dto.getStartTime()));
// reservedInfo.setEndTime(DateUtils.parseDate(dto.getEndTime()));
if (StringUtils.isNotBlank(dto.getEndTime())) {
reservedInfo.setEndTime(Time.valueOf(dto.getEndTime()));
}
if (StringUtils.isNotBlank(dto.getFreq())) {
reservedInfo.setReservationType("recurring");
reservedInfo.setFreq(dto.getFreq());
} else {
reservedInfo.setReservationType("single");
reservedInfo.setFreq(null);
}
reservedInfo.setCreateBy(dto.getMemberId());
pileReservationInfoService.insertSelective(reservedInfo);
return reservedInfo.getId();
}
public PageResponse queryReservedList(PileReservationDTO dto) {
int pageNo = dto.getPageNo() == null ? Constants.one : dto.getPageNo();
int pageSize = dto.getPageSize() == null ? 10 : dto.getPageSize();
PageHelper.startPage(pageNo, pageSize);
List<PileReservationInfo> list = pileReservationInfoService.getReservationsByMemberIdAndPileSn(dto.getMemberId(), dto.getPileSn());
PageInfo<PileReservationInfo> pageInfo = new PageInfo<>(list);
PageResponse pageResponse = new PageResponse();
pageResponse.setPageNum(pageInfo.getPageNum());
pageResponse.setPageSize(pageInfo.getPageSize());
pageResponse.setPages(pageInfo.getPages());
pageResponse.setTotal(pageInfo.getTotal());
List<PileReservedVO> resultList = Lists.newArrayList();
for (PileReservationInfo reservedInfo : pageInfo.getList()) {
resultList.add(
PileReservedVO.builder()
.reservedId(reservedInfo.getId() + "")
.pileSn(reservedInfo.getPileSn())
.startTime(reservedInfo.getStartTime().toString())
.endTime(reservedInfo.getEndTime().toString())
.freq(reservedInfo.getFreq())
.status(reservedInfo.getStatus())
.build()
);
}
pageResponse.setList(resultList);
return pageResponse;
}
public void deleteReservation(PileReservationDTO dto) {
pileReservationInfoService.deleteReservation(dto);
}
@@ -657,11 +603,4 @@ public class PileService {
return String.valueOf(i);
}
/**
* 个人桩停止充电
* @param dto
*/
public void personPileStopCharging(PersonPileStopChargingDTO dto) {
}
}

View File

@@ -28,6 +28,16 @@ public class PileReservationDTO {
*/
private String pileSn;
/**
* 开始时间 hh:mm:ss
*/
private String startTime;
/**
* 结束时间 hh:mm:ss
*/
private String endTime;
private Integer pageNo;
private Integer pageSize;
@@ -38,6 +48,11 @@ public class PileReservationDTO {
.append("memberId", memberId)
.append("reservedId", reservedId)
.append("status", status)
.append("pileSn", pileSn)
.append("startTime", startTime)
.append("endTime", endTime)
.append("pageNo", pageNo)
.append("pageSize", pageSize)
.toString();
}
}

View File

@@ -3,6 +3,7 @@ package com.jsowell.pile.service;
import java.util.List;
import com.jsowell.common.core.domain.ykc.TransactionRecordsData;
import com.jsowell.pile.domain.OrderBasicInfo;
import com.jsowell.pile.domain.PersonalChargingRecord;
public interface PersonalChargingRecordService{
@@ -35,4 +36,6 @@ public interface PersonalChargingRecordService{
* @param data
*/
void processPersonalChargingRecord(TransactionRecordsData data);
void processPersonalChargingRecord(OrderBasicInfo orderBasicInfo);
}

View File

@@ -2,6 +2,9 @@ package com.jsowell.pile.service;
import java.util.List;
import com.jsowell.common.core.page.PageResponse;
import com.jsowell.pile.dto.CreateReservedDTO;
import com.jsowell.pile.dto.PersonPileStopChargingDTO;
import com.jsowell.pile.dto.PileReservationDTO;
import com.jsowell.pile.domain.PileReservationInfo;
@@ -55,5 +58,15 @@ public interface PileReservationInfoService {
void cancelOneTimeReservation(String pileConnectorCode);
void deleteReservation(PileReservationDTO dto);
int createReservation(CreateReservedDTO dto);
PageResponse queryReservationList(PileReservationDTO dto);
void updateReservationStatus(PileReservationDTO dto);
void updateReservation(PileReservationDTO dto);
void personPileStopCharging(PersonPileStopChargingDTO dto);
}

View File

@@ -1,8 +1,9 @@
package com.jsowell.pile.service.impl;
import com.jsowell.common.constant.Constants;
import com.jsowell.common.core.domain.ykc.TransactionRecordsData;
import com.jsowell.common.util.Cp56Time2a.Cp56Time2aUtil;
import com.jsowell.common.util.DateUtils;
import com.jsowell.pile.domain.OrderBasicInfo;
import com.jsowell.pile.domain.PileBasicInfo;
import com.jsowell.pile.service.PileBasicInfoService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -82,8 +83,7 @@ public class PersonalChargingRecordServiceImpl implements PersonalChargingRecord
}
/**
* 处理个人桩充电记录
*
* 收到交易记录时, 处理个人桩充电记录
* @param data
*/
@Override
@@ -133,4 +133,48 @@ public class PersonalChargingRecordServiceImpl implements PersonalChargingRecord
personalChargingRecordMapper.insertOrUpdateSelective(chargingRecord);
}
/**
* 一键启动时, 处理个人桩充电记录
* @param orderBasicInfo
*/
@Override
public void processPersonalChargingRecord(OrderBasicInfo orderBasicInfo) {
// 根据交易流水号查询,如果数据库没有就入库
PersonalChargingRecord chargingRecord = new PersonalChargingRecord();
// 处理数据
chargingRecord.setTransactionCode(orderBasicInfo.getTransactionCode());
chargingRecord.setStatus(Constants.ONE);
chargingRecord.setMemberId(orderBasicInfo.getMemberId());
chargingRecord.setStationId(orderBasicInfo.getStationId());
chargingRecord.setMerchantId(orderBasicInfo.getMerchantId());
chargingRecord.setPileSn(orderBasicInfo.getPileSn());
chargingRecord.setConnectorCode(orderBasicInfo.getConnectorCode());
chargingRecord.setPileConnectorCode(orderBasicInfo.getPileConnectorCode());
chargingRecord.setLogicCard(orderBasicInfo.getLogicCard());
chargingRecord.setVinCode(orderBasicInfo.getVinCode());
chargingRecord.setStartMode(orderBasicInfo.getStartMode());
chargingRecord.setPlateNumber(orderBasicInfo.getPlateNumber());
chargingRecord.setChargeStartTime(orderBasicInfo.getChargeStartTime());
chargingRecord.setChargeEndTime(orderBasicInfo.getChargeEndTime());
chargingRecord.setStartType(orderBasicInfo.getStartType());
chargingRecord.setReservationStartTime(orderBasicInfo.getReservedStartTime());
chargingRecord.setReservationEndTime(orderBasicInfo.getReservedEndTime());
chargingRecord.setStartSoc(orderBasicInfo.getStartSoc());
chargingRecord.setEndSoc(null);
// BigDecimal sharpUsedElectricity = new BigDecimal(data.getSharpUsedElectricity());
// chargingRecord.setSharpUsedElectricity(sharpUsedElectricity);
// BigDecimal peakUsedElectricity = new BigDecimal(data.getPeakUsedElectricity());
// chargingRecord.setPeakUsedElectricity(peakUsedElectricity);
// BigDecimal flatUsedElectricity = new BigDecimal(data.getFlatUsedElectricity());
// chargingRecord.setFlatUsedElectricity(flatUsedElectricity);
// BigDecimal valleyUsedElectricity = new BigDecimal(data.getValleyUsedElectricity());
// chargingRecord.setValleyUsedElectricity(valleyUsedElectricity);
// BigDecimal totalUsedElectricity = sharpUsedElectricity.add(peakUsedElectricity).add(flatUsedElectricity).add(valleyUsedElectricity);
// chargingRecord.setTotalUsedElectricity(totalUsedElectricity);
// chargingRecord.setReason(data.getStopReasonMsg());
// 创建或更新
personalChargingRecordMapper.insertOrUpdateSelective(chargingRecord);
}
}

View File

@@ -1,18 +1,24 @@
package com.jsowell.pile.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import com.jsowell.common.constant.Constants;
import com.jsowell.common.core.page.PageResponse;
import com.jsowell.common.enums.DelFlagEnum;
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.DateUtils;
import com.jsowell.common.util.StringUtils;
import com.jsowell.pile.domain.ykcCommond.ReservationChargingCommand;
import com.jsowell.pile.dto.CreateReservedDTO;
import com.jsowell.pile.dto.PersonPileStopChargingDTO;
import com.jsowell.pile.dto.PileReservationDTO;
import com.jsowell.pile.dto.StartPersonPileDTO;
import com.jsowell.pile.service.MemberPlateNumberRelationService;
import com.jsowell.pile.service.PileBasicInfoService;
import com.jsowell.pile.service.PileRemoteService;
import com.jsowell.pile.vo.PileReservedVO;
import com.jsowell.pile.vo.uniapp.customer.MemberPlateNumberVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@@ -291,5 +297,122 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic
pileReservationInfo.setDelFlag(DelFlagEnum.DELETE.getValue());
pileReservationInfoMapper.updateByPrimaryKey(pileReservationInfo);
}
@Override
public int createReservation(CreateReservedDTO dto) {
PileReservationInfo reservedInfo = new PileReservationInfo();
reservedInfo.setMemberId(dto.getMemberId());
reservedInfo.setPileSn(dto.getPileSn());
reservedInfo.setPileConnectorCode(dto.getPileConnectorCode());
reservedInfo.setStatus(Constants.ZERO); // 默认未生效
// reservedInfo.setStartTime(DateUtils.parseDate(dto.getStartTime()));
reservedInfo.setStartTime(Time.valueOf(dto.getStartTime()));
// reservedInfo.setEndTime(DateUtils.parseDate(dto.getEndTime()));
if (StringUtils.isNotBlank(dto.getEndTime())) {
reservedInfo.setEndTime(Time.valueOf(dto.getEndTime()));
}
// 2024年7月25日14点36分, 此段代码注释掉, 采用默认设置
// if (StringUtils.isNotBlank(dto.getFreq())) {
// reservedInfo.setReservationType("recurring");
// reservedInfo.setFreq(dto.getFreq());
// } else {
// reservedInfo.setReservationType("single");
// reservedInfo.setFreq(null);
// }
// 默认每天
reservedInfo.setReservationType("recurring");
reservedInfo.setFreq("daily");
reservedInfo.setCreateBy(dto.getMemberId());
this.insertSelective(reservedInfo);
return reservedInfo.getId();
}
@Override
public PageResponse queryReservationList(PileReservationDTO dto) {
int pageNo = dto.getPageNo() == null ? Constants.one : dto.getPageNo();
int pageSize = dto.getPageSize() == null ? 10 : dto.getPageSize();
PageHelper.startPage(pageNo, pageSize);
List<PileReservationInfo> list = this.getReservationsByMemberIdAndPileSn(dto.getMemberId(), dto.getPileSn());
PageInfo<PileReservationInfo> pageInfo = new PageInfo<>(list);
PageResponse pageResponse = new PageResponse();
pageResponse.setPageNum(pageInfo.getPageNum());
pageResponse.setPageSize(pageInfo.getPageSize());
pageResponse.setPages(pageInfo.getPages());
pageResponse.setTotal(pageInfo.getTotal());
List<PileReservedVO> resultList = Lists.newArrayList();
for (PileReservationInfo reservedInfo : pageInfo.getList()) {
resultList.add(
PileReservedVO.builder()
.reservedId(reservedInfo.getId() + "")
.pileSn(reservedInfo.getPileSn())
.startTime(reservedInfo.getStartTime().toString())
.endTime(reservedInfo.getEndTime().toString())
.freq(reservedInfo.getFreq())
.status(reservedInfo.getStatus())
.build()
);
}
pageResponse.setList(resultList);
return pageResponse;
}
/**
* 修改预约状态
* @param dto
*/
@Override
public void updateReservationStatus(PileReservationDTO dto) {
if (StringUtils.equals(dto.getStatus(), Constants.ZERO)) {
// 停用
this.deactivateReserved(dto);
} else if (StringUtils.equals(dto.getStatus(), Constants.ONE)) {
// 启用
this.activateReserved(dto);
}
}
/**
* 修改预约充电信息
* @param dto
*/
@Override
public void updateReservation(PileReservationDTO dto) {
PileReservationInfo pileReservationInfo = pileReservationInfoMapper.selectByPrimaryKey(Integer.valueOf(dto.getReservedId()));
if (pileReservationInfo == null) {
return;
}
if (!StringUtils.equals(dto.getMemberId(), pileReservationInfo.getMemberId())) {
return;
}
if (StringUtils.isNotBlank(dto.getStartTime())) {
pileReservationInfo.setStartTime(Time.valueOf(dto.getStartTime()));
}
if (StringUtils.isNotBlank(dto.getEndTime())) {
pileReservationInfo.setEndTime(Time.valueOf(dto.getEndTime()));
}
if (StringUtils.isNotBlank(dto.getStatus())) {
pileReservationInfo.setStatus(dto.getStatus());
}
this.insertOrUpdateSelective(pileReservationInfo);
}
/**
* 个人桩停止充电
* @param dto
*/
@Override
public void personPileStopCharging(PersonPileStopChargingDTO dto) {
// 查询个人桩信息
// 发送请求的用户有没有权限停止充电
}
}

View File

@@ -105,7 +105,10 @@ public abstract class AbstractProgramLogic implements InitializingBean {
protected MemberGroupService memberGroupService;
@Autowired
private PileStationWhitelistService pileStationWhitelistService;
protected PileStationWhitelistService pileStationWhitelistService;
@Autowired
protected PersonalChargingRecordService personalChargingRecordService;
@Autowired
protected RedisCache redisCache;

View File

@@ -844,7 +844,7 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
if (!b) {
throw new BusinessException("00600006", "个人桩启动失败,无启动权限");
}
String orderCode;
// 生成订单
GenerateOrderDTO generateOrderDTO = new GenerateOrderDTO();
generateOrderDTO.setMemberId(dto.getMemberId());
@@ -853,18 +853,28 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
generateOrderDTO.setStartType(dto.getStartType());
generateOrderDTO.setPileSn(pileSn);
generateOrderDTO.setConnectorCode(connectorCode);
OrderBasicInfo orderBasicInfo;
try {
OrderBasicInfo orderBasicInfo = generateOrder(generateOrderDTO);
orderCode = orderBasicInfo.getOrderCode();
orderBasicInfo = generateOrder(generateOrderDTO);
} catch (ParseException e) {
throw new RuntimeException(e);
}
// 支付订单
PayOrderDTO payOrderDTO = new PayOrderDTO();
payOrderDTO.setOrderCode(orderCode);
payOrderDTO.setOrderCode(orderBasicInfo.getOrderCode());
payOrderDTO.setPayMode(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue());
payOrderDTO.setMemberId(dto.getMemberId());
payOrder(payOrderDTO);
return orderCode;
// 插入个人桩充电记录表
try {
personalChargingRecordService.processPersonalChargingRecord(orderBasicInfo);
} catch (Exception e) {
logger.error("插入个人桩充电记录表error, orderCode:{}, transactionCode:{}",
orderBasicInfo.getOrderCode(), orderBasicInfo.getTransactionCode());
}
return orderBasicInfo.getOrderCode();
}
}