diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberPlateNumberRelationService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberPlateNumberRelationService.java index a56eab5af..a067995bc 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberPlateNumberRelationService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberPlateNumberRelationService.java @@ -1,6 +1,7 @@ package com.jsowell.pile.service; import com.jsowell.pile.domain.MemberPlateNumberRelation; +import com.jsowell.pile.vo.uniapp.MemberPlateNumberVO; import java.util.List; @@ -88,4 +89,6 @@ public interface MemberPlateNumberRelationService String checkVinCodeUnique(String vinCode); String checkPlateNumberUnique(String plateNumber); + + List selectMemberPlateNumberRelation(String memberId); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberPlateNumberRelationServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberPlateNumberRelationServiceImpl.java index 107f73dad..10e39a777 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberPlateNumberRelationServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberPlateNumberRelationServiceImpl.java @@ -1,14 +1,15 @@ package com.jsowell.pile.service.impl; import com.alibaba.fastjson2.JSON; +import com.google.common.collect.Lists; import com.jsowell.common.constant.UserConstants; -import com.jsowell.common.enums.ykc.ReturnCodeEnum; -import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.MemberPlateNumberRelation; import com.jsowell.pile.mapper.MemberPlateNumberRelationMapper; import com.jsowell.pile.service.MemberPlateNumberRelationService; +import com.jsowell.pile.vo.uniapp.MemberPlateNumberVO; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -119,8 +120,6 @@ public class MemberPlateNumberRelationServiceImpl implements MemberPlateNumberRe /** * 用户解除绑定车牌号(逻辑删除,将 del_flag 改为 1) - * - * @param dto * @return */ @Override @@ -178,4 +177,33 @@ public class MemberPlateNumberRelationServiceImpl implements MemberPlateNumberRe } return UserConstants.NOT_UNIQUE; } + + /** + * 查询会员绑定车牌信息 + * @param memberId + * @return + */ + @Override + public List selectMemberPlateNumberRelation(String memberId) { + List resultList = Lists.newArrayList(); + if (StringUtils.isBlank(memberId)) { + return resultList; + } + MemberPlateNumberRelation relation = new MemberPlateNumberRelation(); + relation.setMemberId(memberId); + List l = memberPlateNumberRelationMapper.selectMemberPlateNumberRelationList(relation); + if (CollectionUtils.isNotEmpty(l)) { + for (MemberPlateNumberRelation memberPlateNumberRelation : l) { + resultList.add( + MemberPlateNumberVO.builder() + .memberId(memberPlateNumberRelation.getMemberId()) + .licensePlateNumber(memberPlateNumberRelation.getLicensePlateNumber()) + .vinCode(memberPlateNumberRelation.getVinCode()) + .createTime(memberPlateNumberRelation.getCreateTime()) + .build() + ); + } + } + return resultList; + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileReservationInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileReservationInfoServiceImpl.java index 16478f601..08a804136 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileReservationInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileReservationInfoServiceImpl.java @@ -1,15 +1,19 @@ package com.jsowell.pile.service.impl; +import com.google.common.collect.Lists; import com.jsowell.common.constant.Constants; 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.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.uniapp.MemberPlateNumberVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -18,6 +22,7 @@ import javax.annotation.Resource; import java.sql.Time; import java.time.LocalDateTime; import java.time.LocalTime; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -35,6 +40,12 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic @Autowired private PileBasicInfoService pileBasicInfoService; + @Autowired + private PileRemoteService pileRemoteService; + + @Autowired + private MemberPlateNumberRelationService memberPlateNumberRelationService; + @Override public int deleteByPrimaryKey(Integer id) { return pileReservationInfoMapper.deleteByPrimaryKey(id); @@ -111,7 +122,37 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic // 保存之前,校验时间是否重叠 int i = saveReservation(pileReservationInfo); if (i > 0) { - // TODO 发送指令 + // 查询会员的绑定vin列表 + List plateNumberVOList = memberPlateNumberRelationService.selectMemberPlateNumberRelation(pileReservationInfo.getMemberId()); + List vinCodes = Lists.newArrayList(); + int count = 0; + for (MemberPlateNumberVO vo : plateNumberVOList) { + if (count < 3 && StringUtils.isNotBlank(vo.getVinCode())) { + vinCodes.add(vo.getVinCode()); + count++; + } + } + // 如果 vinCodes 的数量少于 3,用 "0" 补足 + while (vinCodes.size() < 3) { + vinCodes.add("0"); + } + + String type = StringUtils.equals(pileReservationInfo.getReservationType(), "single") ? "00" : "01"; + // 发送指令 + ReservationChargingCommand command = ReservationChargingCommand.builder() + .transactionCode(Constants.ILLEGAL_TRANSACTION_CODE) + .pileSn(pileReservationInfo.getPileSn()) + .connectorCode(pileReservationInfo.getPileConnectorCode().replace(pileReservationInfo.getPileSn(), "")) + .operation("01") + .reservationType(type) + .vin1(vinCodes.get(0)) + .vin2(vinCodes.get(1)) + .vin3(vinCodes.get(2)) + .reservedStartTime(pileReservationInfo.getStartTime().toLocalTime()) + .reservedEndTime(pileReservationInfo.getEndTime().toLocalTime()) + .amount(Constants.WHITELIST_DEFAULT_AMOUNT) + .build(); + pileRemoteService.reservationCharging(command); } } @@ -131,7 +172,37 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic pileReservationInfo.setStatus(Constants.ZERO); int i = pileReservationInfoMapper.updateByPrimaryKeySelective(pileReservationInfo); if (i > 0) { - // TODO 发送指令 + // 查询会员的绑定vin列表 + List plateNumberVOList = memberPlateNumberRelationService.selectMemberPlateNumberRelation(pileReservationInfo.getMemberId()); + List vinCodes = Lists.newArrayList(); + int count = 0; + for (MemberPlateNumberVO vo : plateNumberVOList) { + if (count < 3 && StringUtils.isNotBlank(vo.getVinCode())) { + vinCodes.add(vo.getVinCode()); + count++; + } + } + // 如果 vinCodes 的数量少于 3,用 "0" 补足 + while (vinCodes.size() < 3) { + vinCodes.add("0"); + } + + String type = StringUtils.equals(pileReservationInfo.getReservationType(), "single") ? "00" : "01"; + // 发送指令 + ReservationChargingCommand command = ReservationChargingCommand.builder() + .transactionCode(Constants.ILLEGAL_TRANSACTION_CODE) + .pileSn(pileReservationInfo.getPileSn()) + .connectorCode(pileReservationInfo.getPileConnectorCode().replace(pileReservationInfo.getPileSn(), "")) + .operation("02") + .reservationType(type) + .vin1(vinCodes.get(0)) + .vin2(vinCodes.get(1)) + .vin3(vinCodes.get(2)) + .reservedStartTime(pileReservationInfo.getStartTime().toLocalTime()) + .reservedEndTime(pileReservationInfo.getEndTime().toLocalTime()) + .amount(Constants.WHITELIST_DEFAULT_AMOUNT) + .build(); + pileRemoteService.reservationCharging(command); } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberPlateNumberVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberPlateNumberVO.java index 0139d4cf6..dcd93b1ff 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberPlateNumberVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberPlateNumberVO.java @@ -1,9 +1,15 @@ package com.jsowell.pile.vo.uniapp; import com.jsowell.common.annotation.Excel; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data +@NoArgsConstructor +@AllArgsConstructor +@Builder public class MemberPlateNumberVO { /** * 主键 diff --git a/jsowell-pile/src/main/resources/mapper/pile/MemberPlateNumberRelationMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/MemberPlateNumberRelationMapper.xml index ba4a7bd69..b548b9363 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/MemberPlateNumberRelationMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/MemberPlateNumberRelationMapper.xml @@ -33,6 +33,7 @@ and member_id = #{memberId} and phone_number = #{phoneNumber} and license_plate_number = #{licensePlateNumber} + order by create_time DESC