From 58d7974d3c26465a89a437e20e7f8ed4a338a95f Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Mon, 5 Aug 2024 15:46:59 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E9=A2=84=E7=BA=A6=E5=85=85=E7=94=B5?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...servationChargingStartupResultHandler.java | 10 +++-- .../pile/mapper/PileMemberRelationMapper.java | 3 ++ .../service/PileMemberRelationService.java | 2 + .../service/PileReservationInfoService.java | 2 + .../impl/PileBasicInfoServiceImpl.java | 29 ++++++++++++--- .../impl/PileMemberRelationServiceImpl.java | 5 +++ .../impl/PileReservationInfoServiceImpl.java | 2 +- .../pile/vo/uniapp/customer/MemberVO.java | 5 +++ .../dto/AppletTemplateMessageSendDTO.java | 31 ++++++++++++++++ .../wxpay/service/WxAppletRemoteService.java | 37 ++++++++++++------- .../mapper/pile/PileMemberRelationMapper.xml | 9 +++++ 11 files changed, 111 insertions(+), 24 deletions(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingStartupResultHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingStartupResultHandler.java index d12d14c02..32c30f8a6 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingStartupResultHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingStartupResultHandler.java @@ -5,7 +5,9 @@ import com.google.common.primitives.Bytes; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.ykc.YKCDataProtocol; import com.jsowell.common.core.domain.ykc.YKCFrameTypeCode; +import com.jsowell.common.enums.ykc.ChargingFailedReasonEnum; import com.jsowell.common.util.BytesUtil; +import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.YKCUtils; import com.jsowell.netty.factory.YKCOperateFactory; import com.jsowell.pile.dto.ReservationChargingStartupResult; @@ -72,15 +74,17 @@ public class ReservationChargingStartupResultHandler extends AbstractHandler{ length = 1; byte[] startupResultByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String startupResult = BytesUtil.bcd2Str(startupResultByteArr); + String startupResultMsg = StringUtils.equals(startupResult, "00") ? "失败" : "成功"; // 失败原因 startIndex += length; length = 1; byte[] failReasonByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String failReason = BytesUtil.bcd2Str(failReasonByteArr); + String failReasonMsg = ChargingFailedReasonEnum.getMsgByCode(Integer.parseInt(failReason, 16)); log.info("[===预约充电启动结果上送===]交易流水号:{}, 桩编号:{}, 枪号:{}, vin:{}, 启动结果:{}, 失败原因:{}", - transactionCode, pileSn, connectorCode, vinCode, startupResult, failReason); + transactionCode, pileSn, connectorCode, vinCode, startupResultMsg, failReasonMsg); ReservationChargingStartupResult chargingStartupResult = ReservationChargingStartupResult.builder() @@ -88,8 +92,8 @@ public class ReservationChargingStartupResultHandler extends AbstractHandler{ .pileSn(pileSn) .connectorCode(connectorCode) .vinCode(vinCode) - .startupResult(startupResult) - .failReason(failReason) + .startupResult(startupResultMsg) + .failReason(failReasonMsg) .build(); pileBasicInfoService.startupResult(chargingStartupResult); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileMemberRelationMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileMemberRelationMapper.java index f3c08ea7a..888dae453 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileMemberRelationMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileMemberRelationMapper.java @@ -2,6 +2,7 @@ package com.jsowell.pile.mapper; import java.util.List; import com.jsowell.pile.domain.PileMemberRelation; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; import org.springframework.stereotype.Repository; /** @@ -71,4 +72,6 @@ public interface PileMemberRelationMapper int deleteRelationByIds(List ids); + + List selectMemberList(String pileSn); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileMemberRelationService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileMemberRelationService.java index 3bca1aa31..ca480a728 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileMemberRelationService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileMemberRelationService.java @@ -1,6 +1,7 @@ package com.jsowell.pile.service; import com.jsowell.pile.domain.PileMemberRelation; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; import java.util.List; @@ -78,4 +79,5 @@ public interface PileMemberRelationService */ List selectPileMemberRelationByPileSn(String pileSn); + List selectMemberList(String pileSn); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileReservationInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileReservationInfoService.java index c40b6d290..bdd8fec85 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileReservationInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileReservationInfoService.java @@ -34,6 +34,8 @@ public interface PileReservationInfoService { List getReservationsByMemberIdAndPileSn(String memberId, String pileSn); + PileReservationInfo selectByPileConnectorCode(String pileConnectorCode); + /** * 启动预约 * @param dto diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java index 717d272bb..128d77edc 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java @@ -14,10 +14,7 @@ import com.jsowell.common.enums.lianlian.LianLianPileStatusEnum; import com.jsowell.common.enums.ykc.*; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.*; -import com.jsowell.pile.domain.PileBasicInfo; -import com.jsowell.pile.domain.PileConnectorInfo; -import com.jsowell.pile.domain.PileModelInfo; -import com.jsowell.pile.domain.PileSimInfo; +import com.jsowell.pile.domain.*; import com.jsowell.pile.dto.*; import com.jsowell.pile.mapper.PileBasicInfoMapper; import com.jsowell.pile.service.*; @@ -28,9 +25,11 @@ import com.jsowell.pile.thirdparty.EquipmentInfo; import com.jsowell.pile.thirdparty.ZDLConnectorInfo; import com.jsowell.pile.thirdparty.ZDLEquipmentInfo; import com.jsowell.pile.util.UserUtils; +import com.jsowell.pile.vo.PileReservationInfoVO; import com.jsowell.pile.vo.base.MerchantInfoVO; import com.jsowell.pile.vo.base.PileInfoVO; import com.jsowell.pile.vo.uniapp.customer.GroundLockInfoVO; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; import com.jsowell.pile.vo.uniapp.customer.PersonalPileInfoVO; import com.jsowell.pile.vo.uniapp.customer.PileConnectorDetailVO; import com.jsowell.pile.vo.web.*; @@ -44,6 +43,8 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; +import java.sql.Time; +import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -93,6 +94,9 @@ public class PileBasicInfoServiceImpl implements PileBasicInfoService { @Autowired private OrderBasicInfoService orderBasicInfoService; + @Autowired + private PileMemberRelationService pileMemberRelationService; + /** * 查询设备管理 * @@ -1226,7 +1230,20 @@ public class PileBasicInfoServiceImpl implements PileBasicInfoService { // 创建订单 orderBasicInfoService.createReservationOrder(chargingStartupResult); - // 小程序通知 - wxAppletRemoteService.reservationStartupResultSendMsg(chargingStartupResult); + // 查预约信息 + String pileConnectorCode = chargingStartupResult.getPileSn() + chargingStartupResult.getConnectorCode(); + PileReservationInfo pileReservationInfo = pileReservationInfoService.selectByPileConnectorCode(pileConnectorCode); + + LocalDateTime[] localDateTimes = DateUtils.convertStartAndEndTime(pileReservationInfo.getStartTime().toString(), pileReservationInfo.getEndTime().toString()); + // 发小程序通知消息 + String startTime = DateUtils.formatDateTime(localDateTimes[0]); + String endTime = DateUtils.formatDateTime(localDateTimes[1]); + String startUpResult = chargingStartupResult.getStartupResult(); + String failReason = chargingStartupResult.getFailReason(); + // 根据pileSn 查询使用者列表 + List memberVOS = pileMemberRelationService.selectMemberList(chargingStartupResult.getPileSn()); + for (MemberVO memberVO : memberVOS) { + wxAppletRemoteService.reservationStartupResultSendMsg(memberVO.getOpenId(), startTime, endTime, startUpResult, failReason); + } } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMemberRelationServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMemberRelationServiceImpl.java index 33f709e77..ab7a831af 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMemberRelationServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMemberRelationServiceImpl.java @@ -7,6 +7,7 @@ import com.jsowell.pile.domain.PileMemberRelation; import com.jsowell.pile.mapper.PileMemberRelationMapper; import com.jsowell.pile.service.PileConnectorInfoService; import com.jsowell.pile.service.PileMemberRelationService; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -118,4 +119,8 @@ public class PileMemberRelationServiceImpl implements PileMemberRelationService return selectPileMemberRelationList(pileMemberRelation); } + public List selectMemberList(String pileSn) { + return pileMemberRelationMapper.selectMemberList(pileSn); + } + } 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 81f23b682..8a4ce0068 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 @@ -28,7 +28,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Date; import java.sql.Time; import java.time.LocalDateTime; import java.time.LocalTime; @@ -127,6 +126,7 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic return pileReservationInfoMapper.findByMemberIdAndPileSn(memberId, pileSn); } + @Override public PileReservationInfo selectByPileConnectorCode(String pileConnectorCode) { return pileReservationInfoMapper.selectByPileConnectorCode(pileConnectorCode); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberVO.java index 1ed1215a3..47b921a6d 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberVO.java @@ -25,6 +25,11 @@ public class MemberVO { */ private String memberId; + /** + * 微信openId + */ + private String openId; + /** * 会员所属一级运营商 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/wxpay/dto/AppletTemplateMessageSendDTO.java b/jsowell-pile/src/main/java/com/jsowell/wxpay/dto/AppletTemplateMessageSendDTO.java index 06589b1d9..5441a9a67 100644 --- a/jsowell-pile/src/main/java/com/jsowell/wxpay/dto/AppletTemplateMessageSendDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/wxpay/dto/AppletTemplateMessageSendDTO.java @@ -30,6 +30,8 @@ public class AppletTemplateMessageSendDTO implements Serializable { private StopChargingMessage stopChargingMessage; + private StartUpResultMessage startUpResultMessage; + @Data public static class StartChargingMessage { @@ -100,4 +102,33 @@ public class AppletTemplateMessageSendDTO implements Serializable { */ private String chargingTime; } + + @Data + public static class StartUpResultMessage { + + /** + * 开始时间 + * time2 + */ + private String startTime; + + /** + * 预计结束时间 + * time3 + */ + private String endTime; + + /** + * 启动结果 + * phrase20 + */ + private String startUpResult; + + /** + * 失败原因 + * thing21 + */ + private String failReason; + + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/wxpay/service/WxAppletRemoteService.java b/jsowell-pile/src/main/java/com/jsowell/wxpay/service/WxAppletRemoteService.java index e36b57be1..ca5056634 100644 --- a/jsowell-pile/src/main/java/com/jsowell/wxpay/service/WxAppletRemoteService.java +++ b/jsowell-pile/src/main/java/com/jsowell/wxpay/service/WxAppletRemoteService.java @@ -234,7 +234,7 @@ public class WxAppletRemoteService { // 枪口编号 startChargingMessage.setPileConnectorCode(sendMessageVO.getPileSn() + "桩" + sendMessageVO.getConnectorCode() + "枪口"); - return uniAppSendMsg(msgInfo); + return uniAppSendMsg(msgInfo); // 开始充电 } /** @@ -269,23 +269,25 @@ public class WxAppletRemoteService { Date chargeStopTime = DateUtils.parseDate(sendMessageVO.getChargeStopTime(), DateUtils.YYYY_MM_DD_HH_MM_SS); chargingTime = DateUtils.getDatePoor(chargeStopTime, chargeStartTime); } - stopChargingMessage.setChargingTime(chargingTime); // 充电时长 - - // if (StringUtils.isBlank(sendMessageVO.getChargeStopTime())) { - // stopChargingMessage.setEndTime(DateUtils.dateTimeNow("yyyy-MM-dd HH:mm")); - // }else { - // stopChargingMessage.setEndTime(sendMessageVO.getChargeStopTime()); - // } - return uniAppSendMsg(msgInfo); + return uniAppSendMsg(msgInfo); // 停止充电 } /** * 预约充电结果小程序服务通知 */ - public Map reservationStartupResultSendMsg(ReservationChargingStartupResult chargingStartupResult) { + public Map reservationStartupResultSendMsg(String openId, String startTime, String endTime, String startUpResult, String failReason) { AppletTemplateMessageSendDTO msgInfo = new AppletTemplateMessageSendDTO(); - return uniAppSendMsg(msgInfo); + msgInfo.setType("2"); // 2-结束充电推送消息 + msgInfo.setTouser(openId); + // 封装对象并调用发送消息的方法 + AppletTemplateMessageSendDTO.StartUpResultMessage startUpResultMessage = new AppletTemplateMessageSendDTO.StartUpResultMessage(); + startUpResultMessage.setStartTime(startTime); + startUpResultMessage.setEndTime(endTime); + startUpResultMessage.setStartUpResult(startUpResult); + startUpResultMessage.setFailReason(failReason); + msgInfo.setStartUpResultMessage(startUpResultMessage); + return uniAppSendMsg(msgInfo); // 预约充电结果 } /** @@ -301,7 +303,6 @@ public class WxAppletRemoteService { // 开始充电 String templateId = startChargingTmpId; dto.setTemplate_id(templateId); - // dto.setPage("跳转的页面"); Map map = new HashMap<>(); map.put("thing5", ImmutableMap.of("value", dto.getStartChargingMessage().getStationName())); // 充电站名称 map.put("time2", ImmutableMap.of("value", dto.getStartChargingMessage().getStartTime())); // 开始时间 @@ -313,15 +314,23 @@ public class WxAppletRemoteService { // 结束充电 String templateId = stopChargingTmpId; dto.setTemplate_id(templateId); - // dto.setPage("跳转的页面"); Map map = new HashMap<>(); map.put("character_string5", ImmutableMap.of("value", dto.getStopChargingMessage().getOrderCode())); // 充电金额 map.put("amount17", ImmutableMap.of("value", dto.getStopChargingMessage().getChargingAmount())); // 充电金额 - // map.put("time3", ImmutableMap.of("value", dto.getStopChargingMessage().getEndTime())); // 结束时间 map.put("thing7", ImmutableMap.of("value", dto.getStopChargingMessage().getEndReason())); // 结束原因 map.put("thing22", ImmutableMap.of("value", dto.getStopChargingMessage().getChargingTime())); // 充电时长 map.put("number13", ImmutableMap.of("value", dto.getStopChargingMessage().getChargingDegree())); // 充电度数 dto.setData(map); + } else if (StringUtils.equals("3", type)) { + // 结束充电 + String templateId = stopChargingTmpId; + dto.setTemplate_id(templateId); + Map map = new HashMap<>(); + map.put("time2", ImmutableMap.of("value", dto.getStartUpResultMessage().getStartTime())); // 开始时间 + map.put("time3", ImmutableMap.of("value", dto.getStartUpResultMessage().getEndTime())); // 结束时间 + map.put("phrase20", ImmutableMap.of("value", dto.getStartUpResultMessage().getStartUpResult())); // 启动结果 + map.put("thing21", ImmutableMap.of("value", dto.getStartUpResultMessage().getFailReason())); // 失败原因 + } // 调用下面的发送消息接口 return uniformMessageSend(dto); diff --git a/jsowell-pile/src/main/resources/mapper/pile/PileMemberRelationMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/PileMemberRelationMapper.xml index 6a1c33d73..504b4b9b2 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/PileMemberRelationMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/PileMemberRelationMapper.xml @@ -92,4 +92,13 @@ #{id} + + \ No newline at end of file