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 4d2ded797..b5e63cf0e 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 @@ -412,6 +412,18 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic return 0; } + // 是否发指令 false:不发指令 true:发指令, 默认不发指令 + boolean sendFlag = false; + if (StringUtils.equals(pileReservationInfo.getStatus(), "1")) { + sendFlag = true; + } + + // 发指令结果 false:失败 true:成功, 默认失败 + boolean sendResult = false; + + // 是否更新数据库 false:不更新 true:更新, 默认更新 + boolean updateFlag = true; + // 操作 0x01:启动 0x02:取消 0x03:修改 String operation = "03"; if (StringUtils.isNotBlank(dto.getStartTime())) { @@ -431,47 +443,55 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic if (StringUtils.equals(dto.getStatus(), Constants.ZERO)) { // 停用 operation = "02"; + sendFlag = true; } else if (StringUtils.equals(dto.getStatus(), Constants.ONE)) { // 启用 operation = "01"; + sendFlag = true; } } pileReservationInfo.setUpdateBy(dto.getMemberId()); /* - 先发送指令, 收到回复更新数据库 + 发送指令 */ - // 查询会员的绑定vin列表 2024年7月30日11点04分 以当前请求会员的VIN为准 - List plateNumberVOList = memberPlateNumberRelationService.selectMemberPlateNumberRelation(dto.getMemberId()); - List vinCodes = Lists.newArrayList(); - int count = 0; - for (MemberPlateNumberVO vo : plateNumberVOList) { - if (count < 3 && StringUtils.isNotBlank(vo.getVinCode())) { - vinCodes.add(vo.getVinCode()); - count++; + if (sendFlag) { + // 查询会员的绑定vin列表 2024年7月30日11点04分 以当前请求会员的VIN为准 + List plateNumberVOList = memberPlateNumberRelationService.selectMemberPlateNumberRelation(dto.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(""); + } + 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(operation) + .reservationType(type) + .verifyIdentity(pileReservationInfo.getVerifyIdentity()) + .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(); + String result = pileRemoteService.reservationCharging(command); + sendResult = StringUtils.equals(result, Constants.ONE); } - // 如果 vinCodes 的数量少于 3,用 "0" 补足 - while (vinCodes.size() < 3) { - vinCodes.add(""); - } - 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(operation) - .reservationType(type) - .verifyIdentity(pileReservationInfo.getVerifyIdentity()) - .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(); - String result = pileRemoteService.reservationCharging(command); - if (StringUtils.equals(result, Constants.ONE)) { + + log.info("修改预约充电信息, updateFlag:{}, sendFlag:{}, sendResult:{}", updateFlag, sendFlag, sendResult); + // 更新数据库, 一般情况下是都更新的, 只有在发送指令并发送失败的情况下才不更新 + if (updateFlag && (sendFlag == sendResult)) { return this.insertOrUpdateSelective(pileReservationInfo); } return 0;