ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java
@@ -26,6 +26,11 @@ public R<TAccountingStrategyDetail> getNowData(Integer accountingStrategyId) { return R.fail("获取当前有效的计费策略明细失败:" + throwable.getMessage()); } @Override public R<TAccountingStrategyDetail> getDetailBySiteId(Integer siteId) { return R.fail("通过站点id查询当前时段使用的策略明细失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java
@@ -23,4 +23,11 @@ */ @PostMapping("/t-accounting-strategy-detail/getNowData") R<TAccountingStrategyDetail> getNowData(@RequestParam("accountingStrategyId") Integer accountingStrategyId); /** * 通过站点id查询当前时段使用的策略明细 * @param siteId * @return */ @PostMapping("/t-accounting-strategy-detail/getDetailBySiteId") R<TAccountingStrategyDetail> getDetailBySiteId(@RequestParam("siteId") Integer siteId); } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java
@@ -85,6 +85,8 @@ @TableField("two_audit_time") private LocalDateTime twoAuditTime; @ApiModelProperty(value = "父级id 上一次已审核通过的id 为空则代表是新增,或者本次数据状态审核中或已拒绝") @TableField("parent_id") private Integer parentId; } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingMode.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "acquisition_billing_mode") //指定要对应的文档名(表名) @Accessors(chain = true) public class AcquisitionBillingMode extends BaseModel { @Id private String charging_pile_code;// 桩编码 } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingModeReply.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -14,7 +15,7 @@ @Document(collection = "acquisition_billing_mode_reply") //指定要对应的文档名(表名) @Accessors(chain = true) public class AcquisitionBillingModeReply extends BaseModel { @Id private String charging_pile_code;// 桩编码 private String billing_model_code;// "计费模型编号 private BigDecimal sharp_peak_electricity_rate;// 尖费电费费率(精确到五位小数) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerify.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "billing_mode_verify") //指定要对应的文档名(表名) @Accessors(chain = true) public class BillingModeVerify extends BaseModel { @Id private String charging_pile_code;// 桩编码 private String billing_model_code;// "计费模型编号,首次连接到平台时置零 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerifyReply.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "billing_mode_verify_reply") //指定要对应的文档名(表名) @Accessors(chain = true) public class BillingModeVerifyReply extends BaseModel { @Id private String charging_pile_code; // 桩编 private String billing_model_code; // 计费模型编 private Integer billing_model_result; // 验证结果(0:桩计费模型与平台一致,1:桩计费模型与平台不一致) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsAbort.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -14,7 +15,7 @@ @Document(collection = "bms_abort") //指定要对应的文档名(表名) @Accessors(chain = true) public class BmsAbort extends BaseModel { @Id private String transaction_serial_number; // 交易流水号 private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsDemandAndChargerExportation.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -14,7 +15,7 @@ @Document(collection = "bms_demand_and_charger_exportation") //指定要对应的文档名(表名) @Accessors(chain = true) public class BmsDemandAndChargerExportation extends BaseModel { @Id private String transaction_serial_number; // 交易流水号 private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsInformation.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -14,7 +15,7 @@ @Document(collection = "bms_information") //指定要对应的文档名(表名) @Accessors(chain = true) public class BmsInformation extends BaseModel { @Id private String transaction_serial_number; // 交易流水号 private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java
@@ -18,11 +18,8 @@ **/ @Data @Document(collection = "upload_real_time_monitoring_data") //指定要对应的文档名(表名) @Accessors(chain = true) public class ChargingOrderAndUploadRealTimeMonitoringDataDto extends BaseModel { @Id private String id; private String transaction_serial_number; // 交易流水号 private String charging_pile_code; // 桩编码 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileReturnsGroundLockData.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "charging_pile_returns_ground_lock_data") //指定要对应的文档名(表名) @Accessors(chain = true) public class ChargingPileReturnsGroundLockData extends BaseModel { @Id private String charging_pile_code; //桩编码 private String charging_gun_code; // 抢号 private Integer control_state; // 地锁控制返回标志(1:鉴权成功,0:鉴权失败) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileStartsCharging.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "charging_pile_starts_charging") //指定要对应的文档名(表名) @Accessors(chain = true) public class ChargingPileStartsCharging extends BaseModel { @Id private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 private Integer start_method; // 启动方式(1:表示通过刷卡启动充电,2:表示通过帐号启动充电(暂不支持),3:表示vin码启动充电) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCard.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "clear_offline_card") //指定要对应的文档名(表名) @Accessors(chain = true) public class ClearOfflineCard extends BaseModel { @Id private String charging_pile_code; //桩编码 private Integer physical_card_number; // 清除离线卡的个数,最大 24 个 private String physical_card1; // 第 1 个卡物理卡号,离线卡物理卡号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCardReply.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "clear_offline_card_reply") //指定要对应的文档名(表名) @Accessors(chain = true) public class ClearOfflineCardReply extends BaseModel { @Id private String charging_pile_code; //桩编码 private String physical_card1; // 第 1 个卡物理卡号,离线卡物理卡号 private String physical_card2; ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ConfirmTransactionRecord.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "confirm_transaction_record") //指定要对应的文档名(表名) @Accessors(chain = true) public class ConfirmTransactionRecord extends BaseModel { @Id private String transaction_serial_number;// 桩编码 private Integer confirm_result;// 确认结果(0:上传成功,1:非法账单) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/EndCharge.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -14,7 +15,7 @@ @Document(collection = "end_charge") //指定要对应的文档名(表名) @Accessors(chain = true) public class EndCharge extends BaseModel { @Id private String transaction_serial_number; // 交易流水号 private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ErrorMessage.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -14,7 +15,7 @@ @Document(collection = "error_message") //指定要对应的文档名(表名) @Accessors(chain = true) public class ErrorMessage extends BaseModel { @Id private String transaction_serial_number; // 交易流水号 private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/GroundLockRealTimeData.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "ground_lock_real_time_data") //指定要对应的文档名(表名) @Accessors(chain = true) public class GroundLockRealTimeData extends BaseModel { @Id private String charging_pile_code; //桩编码 private String charging_gun_code; // 抢号 private Integer parking_lock_status; // 车位锁状态(0:未到位状态,1:升锁到位状态,2:降锁到位状态) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/MotorAbort.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "motor_abort") //指定要对应的文档名(表名) @Accessors(chain = true) public class MotorAbort extends BaseModel { @Id private String transaction_serial_number; // 交易流水号 private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Online.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,6 +13,7 @@ @Document(collection = "online") //指定要对应的文档名(表名) @Accessors(chain = true) public class Online extends BaseModel { @Id private String charging_pile_code;// 充电桩编号 private Integer charging_pile_type;// 充电桩类型(0 表示直流桩,1 表示交流桩) private Integer charging_gun_number;// 充电枪数量 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OnlineReply.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,6 +13,7 @@ @Document(collection = "online_reply") //指定要对应的文档名(表名) @Accessors(chain = true) public class OnlineReply extends BaseModel { @Id private String charging_pile_code;// 桩编码 private Integer online_result;// 登陆结果(0:成功,1:失败) } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OpenOrCloseGroundLock.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "open_or_close_ground_lock") //指定要对应的文档名(表名) @Accessors(chain = true) public class OpenOrCloseGroundLock extends BaseModel { @Id private String charging_pile_code; //桩编码 private String charging_gun_code; // 抢号 private Integer operate; // 升/降地锁(1:升锁,2:降锁) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ParameterSetting.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -14,7 +15,7 @@ @Document(collection = "parameter_setting") //指定要对应的文档名(表名) @Accessors(chain = true) public class ParameterSetting extends BaseModel { @Id private String transaction_serial_number; // 交易流水号 private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Ping.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "ping") //指定要对应的文档名(表名) @Accessors(chain = true) public class Ping extends BaseModel { @Id private String charging_pile_code;// 桩编码 private String charging_gun_code;// 抢号 private Integer charging_gun_status;// 抢状态(0:正常,1:故障) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformConfirmationCharging.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -14,7 +15,7 @@ @Document(collection = "platform_confirmation_charging") //指定要对应的文档名(表名) @Accessors(chain = true) public class PlatformConfirmationCharging extends BaseModel { @Id private String transaction_serial_number; // 交易流水号 private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdate.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "platform_remote_update") //指定要对应的文档名(表名) @Accessors(chain = true) public class PlatformRemoteUpdate extends BaseModel { @Id private String charging_pile_code; //桩编码 private Integer charging_pile_type; // 桩型号(1:直流,2:交流) private Integer charging_pile_power; // 桩功率 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdateReply.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "platform_remote_update_reply") //指定要对应的文档名(表名) @Accessors(chain = true) public class PlatformRemoteUpdateReply extends BaseModel { @Id private String charging_pile_code; //桩编码 private Integer escalation_state; // 升级状态(0:成功,1:编码错误,2:程序与桩型号不符,3:下载更新文件超时) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestart.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "platform_restart") //指定要对应的文档名(表名) @Accessors(chain = true) public class PlatformRestart extends BaseModel { @Id private String charging_pile_code; //桩编码 private Integer operate; // 执行控制 (1:立即执行,2:空闲执行) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestartReply.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "platform_restart_reply") //指定要对应的文档名(表名) @Accessors(chain = true) public class PlatformRestartReply extends BaseModel { @Id private String charging_pile_code; //桩编码 private Integer set_result; // 设置结果(0:失败,1:成功) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartChargingReply.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -14,7 +15,7 @@ @Document(collection = "platform_start_charging_reply") //指定要对应的文档名(表名) @Accessors(chain = true) public class PlatformStartChargingReply extends BaseModel { @Id private String transaction_serial_number; // 交易流水号 private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopCharging.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "platform_stop_charging") //指定要对应的文档名(表名) @Accessors(chain = true) public class PlatformStopCharging extends BaseModel { @Id private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopChargingReply.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -14,7 +15,7 @@ @Document(collection = "platform_stop_charging_reply") //指定要对应的文档名(表名) @Accessors(chain = true) public class PlatformStopChargingReply extends BaseModel { @Id private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 private Integer stop_result; // 停止结果(0:失败,1:成功) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Pong.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "pong") //指定要对应的文档名(表名) @Accessors(chain = true) public class Pong extends BaseModel { @Id private String charging_pile_code;// 桩编码 private String charging_gun_code;// 抢号 private Integer charging_gun_status;// 心跳应答(0) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCard.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "query_offline_card") //指定要对应的文档名(表名) @Accessors(chain = true) public class QueryOfflineCard extends BaseModel { @Id private String charging_pile_code; //桩编码 private Integer physical_card_number; //桩编码 private String physical_card1; // 第 1 个卡物理卡号,离线卡物理卡号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCardReply.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "query_offline_card_reply") //指定要对应的文档名(表名) @Accessors(chain = true) public class QueryOfflineCardReply extends BaseModel { @Id private String charging_pile_code; //桩编码 private String physical_card1; // 第 1 个卡物理卡号,离线卡物理卡号 private String physical_card2; ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ReadRealTimeMonitoringData.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "read_real_time_monitoring_data") //指定要对应的文档名(表名) @Accessors(chain = true) public class ReadRealTimeMonitoringData extends BaseModel { @Id private String charging_pile_code;// 桩编码 private String charging_gun_code;// 抢号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModel.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -14,7 +15,7 @@ @Document(collection = "setup_billing_model") //指定要对应的文档名(表名) @Accessors(chain = true) public class SetupBillingModel extends BaseModel { @Id private String charging_pile_code; //桩编码 private String billing_model_code; // 计费模型编号 private BigDecimal sharp_peak_electricity_rate; // 尖费电费费率(精确到五位小数) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModelReply.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "setup_billing_model_reply") //指定要对应的文档名(表名) @Accessors(chain = true) public class SetupBillingModelReply extends BaseModel { @Id private String charging_pile_code; //桩编码 private String set_result; //设置结果(0:失败,1:成功) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCard.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "synchronize_offline_card") //指定要对应的文档名(表名) @Accessors(chain = true) public class SynchronizeOfflineCard extends BaseModel { @Id private String charging_pile_code; //桩编码 private Integer card_number; // 下发卡个数 private String card1; // 第 1 个卡逻辑卡号,离线卡逻辑卡号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCardReply.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -14,7 +15,7 @@ @Document(collection = "synchronize_offline_card_reply") //指定要对应的文档名(表名) @Accessors(chain = true) public class SynchronizeOfflineCardReply extends BaseModel { @Id private String charging_pile_code; //桩编码 private Integer save_result; // 保存结果(0:失败,1:成功) private Integer failure_cause; // 失败原因(1:卡号格式错误,2:储存空间不足) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSetting.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "timing_setting") //指定要对应的文档名(表名) @Accessors(chain = true) public class TimingSetting extends BaseModel { @Id private String charging_pile_code; //桩编码 private String current_time; //当前时间 } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSettingReply.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "timing_setting_reply") //指定要对应的文档名(表名) @Accessors(chain = true) public class TimingSettingReply extends BaseModel { @Id private String charging_pile_code; //桩编码 private String current_time; //当前时间 } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -14,7 +15,7 @@ @Document(collection = "transaction_record") //指定要对应的文档名(表名) @Accessors(chain = true) public class TransactionRecord extends BaseModel { @Id private String transaction_serial_number;// 交易流水号 private String charging_pile_code;// 桩编码 private String charging_gun_code;// 抢号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalance.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -14,7 +15,7 @@ @Document(collection = "update_balance") //指定要对应的文档名(表名) @Accessors(chain = true) public class UpdateBalance extends BaseModel { @Id private String charging_pile_code;// 桩编码 private String charging_gun_code;// 抢号 private String physical_card_number;// 物理卡号 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalanceReply.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -14,7 +15,7 @@ @Document(collection = "update_balance_reply") //指定要对应的文档名(表名) @Accessors(chain = true) public class UpdateBalanceReply extends BaseModel { @Id private String charging_pile_code; //桩编码 private String physical_card_number; //物理卡号 private BigDecimal account_balance; //修改结果(:0:修改成功,1:设备编号错误,2:卡号错误) ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java
@@ -3,6 +3,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; @@ -15,7 +16,7 @@ @Document(collection = "upload_real_time_monitoring_data") //指定要对应的文档名(表名) @Accessors(chain = true) public class UploadRealTimeMonitoringData extends BaseModel { @Id private String transaction_serial_number; // 交易流水号 private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 @@ -43,6 +44,8 @@ private BigDecimal period_service_price;// @ApiModelProperty("时段服务费") private BigDecimal period_charging_degree;// @ApiModelProperty("时段充电度数") } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSetting.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "working_parameter_setting") //指定要对应的文档名(表名) @Accessors(chain = true) public class WorkingParameterSetting extends BaseModel { @Id private String charging_pile_code; //桩编码 private Integer allow_work;// 是否允许工作(0:表示允许正常工作,1:表示停止使用,锁定充电桩) private Integer maximum_output_power; // 充电桩最大允许输出功率 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSettingReply.java
@@ -2,6 +2,7 @@ import lombok.Data; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -12,7 +13,7 @@ @Document(collection = "working_parameter_setting_reply") //指定要对应的文档名(表名) @Accessors(chain = true) public class WorkingParameterSettingReply extends BaseModel { @Id private String charging_pile_code; //桩编码 private Integer set_result; //设置结果(0:失败,1:成功) } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
@@ -68,6 +68,11 @@ @Override public void chargeMonitoring(UploadRealTimeMonitoringDataQuery query) { } @Override public R<TChargingOrder> getOrderByCode(String code) { return R.fail("通过流水号查询订单调用失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
@@ -9,10 +9,7 @@ import com.ruoyi.order.api.query.TChargingCountQuery; import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -70,4 +67,12 @@ */ @PostMapping(value = "/t-charging-order/chargeMonitoring") void chargeMonitoring(@RequestBody UploadRealTimeMonitoringDataQuery query); /** * 通过流水号查询订单 * @param code * @return */ @PostMapping(value = "/t-charging-order/getOrderByCode/{code}") R<TChargingOrder> getOrderByCode(@PathVariable("code") String code); } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
@@ -185,12 +185,4 @@ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField("pay_time") private LocalDateTime payTime; @ApiModelProperty(value = "累计服务费") @TableField("service_charge") private BigDecimal serviceCharge; @ApiModelProperty(value = "累计电费") @TableField("electrovalence") private BigDecimal electrovalence; } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java
@@ -35,5 +35,7 @@ private String gunName; @ApiModelProperty(value = "枪号") private String gunNumber; @ApiModelProperty(value = "结束方式(0=异常终止,1=主动终止,2=满电终止,3=费用不足终止)") private Integer endMode; } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
@@ -16,6 +16,7 @@ import com.ruoyi.chargingPile.service.TChargingPileService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.dto.SteategyPassDto; import com.ruoyi.common.core.enums.AuditStateEnum; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.BaseDelete; import com.ruoyi.common.core.web.page.PageInfo; @@ -40,6 +41,7 @@ import java.time.LocalTime; import java.util.Arrays; import java.util.List; import java.util.Objects; import static com.ruoyi.common.core.context.SecurityContextHolder.getUserId; @@ -115,7 +117,6 @@ // 添加明细 dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId())); accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails()); // TODO 硬件 同步策略到充电桩 return AjaxResult.ok(dto.getId()); } @@ -125,19 +126,52 @@ @Log(title = "修改计费策略", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-计费策略", "管理后台-站点管理"},value = "修改计费策略") @PostMapping(value = "/update") public AjaxResult<Boolean> update(@RequestBody TAccountingStrategyDTO dto) { public AjaxResult<String> update(@RequestBody TAccountingStrategyDTO dto) { Boolean flag = accountingStrategyDetailService.isStrategy24Hour(dto.getAccountingStrategyDetails()); if(flag){ return AjaxResult.error("计费模板时间设置有误差"); } // 判断修改的计费策略是否为已通过 if(dto.getAuditStatus() == 3 || dto.getAuditStatus() == 4){ // 查询是否有下级审核中的策略 TAccountingStrategy children = accountingStrategyService.getOne(Wrappers.lambdaQuery(TAccountingStrategy.class) .eq(TAccountingStrategy::getParentId, dto.getId()) .ne(TAccountingStrategy::getAuditStatus, Arrays.asList(3,4))); if(Objects.nonNull(children)){ // 删除计费策略明细信息 accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) .eq(TAccountingStrategyDetail::getAccountingStrategyId, dto.getId())); .eq(TAccountingStrategyDetail::getAccountingStrategyId, children.getId())); dto.setAuditStatus(1); accountingStrategyService.updateById(dto); // 添加明细 dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId())); // TODO 硬件 同步策略到充电桩 return AjaxResult.ok(accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails())); accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails()); }else { Long userId = SecurityUtils.getLoginUser().getUserid(); dto.setUserId(userId); dto.setAuditStatus(1); dto.setId(null); dto.setParentId(dto.getId()); accountingStrategyService.save(dto); // 添加明细 List<TAccountingStrategyDetail> accountingStrategyDetails = dto.getAccountingStrategyDetails(); accountingStrategyDetails.forEach(detail -> { detail.setAccountingStrategyId(dto.getId()); detail.setId(null); }); accountingStrategyDetailService.saveBatch(accountingStrategyDetails); } }else { // 删除计费策略明细信息 accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) .eq(TAccountingStrategyDetail::getAccountingStrategyId, dto.getId())); dto.setAuditStatus(1); accountingStrategyService.updateById(dto); // 添加明细 dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId())); accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails()); } return AjaxResult.success(); } /** @@ -162,12 +196,61 @@ } /** * 查看计费策略详情-修改后 */ @ApiOperation(tags = {"后台-计费策略", "管理后台-站点管理"},value = "查看计费策略详情修改后children的数据") @GetMapping(value = "/getDetailChildrenById") public AjaxResult<TAccountingStrategyVO> getDetailChildrenById(@RequestParam("id") Integer id) { TAccountingStrategyVO accountingStrategyVO = new TAccountingStrategyVO(); // 先查询children对象 TAccountingStrategy children = accountingStrategyService.getOne(Wrappers.lambdaQuery(TAccountingStrategy.class) .eq(TAccountingStrategy::getParentId, id) .orderByDesc(TAccountingStrategy::getCreateTime) .last("LIMIT 1")); if(Objects.nonNull(children)){ BeanUtils.copyProperties(children,accountingStrategyVO); // 查询用户信息 if(null != children.getFirstUserId()){ String firstUserName = sysUserClient.getSysUser(children.getFirstUserId()).getData().getNickName(); accountingStrategyVO.setFirstUserName(firstUserName); } if(null != children.getTwoUserId()){ String twoUserName = sysUserClient.getSysUser(children.getTwoUserId()).getData().getNickName(); accountingStrategyVO.setTwoUserName(twoUserName); } accountingStrategyVO.setAccountingStrategyDetailList(accountingStrategyDetailService.list(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) .eq(TAccountingStrategyDetail::getAccountingStrategyId, children.getId()))); }else { TAccountingStrategy accountingStrategy = accountingStrategyService.getById(id); BeanUtils.copyProperties(accountingStrategy,accountingStrategyVO); // 查询用户信息 if(null != accountingStrategy.getFirstUserId()){ String firstUserName = sysUserClient.getSysUser(accountingStrategy.getFirstUserId()).getData().getNickName(); accountingStrategyVO.setFirstUserName(firstUserName); } if(null != accountingStrategy.getTwoUserId()){ String twoUserName = sysUserClient.getSysUser(accountingStrategy.getTwoUserId()).getData().getNickName(); accountingStrategyVO.setTwoUserName(twoUserName); } accountingStrategyVO.setAccountingStrategyDetailList(accountingStrategyDetailService.list(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) .eq(TAccountingStrategyDetail::getAccountingStrategyId, id))); } return AjaxResult.ok(accountingStrategyVO); } /** * 删除计费策略 */ @Log(title = "删除计费策略", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-计费策略"},value = "删除计费策略") @DeleteMapping(value = "/deleteById") public AjaxResult<Boolean> deleteById(@RequestParam("id") Integer id) { // 判断策略是否在使用 long count = siteService.count(Wrappers.lambdaQuery(Site.class) .eq(Site::getAccountingStrategyId, id)); if(count>0){ return AjaxResult.error("该计费策略正在使用中,无法删除"); } // 刪除计费策略明细信息 accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) .eq(TAccountingStrategyDetail::getAccountingStrategyId, id)); @@ -182,6 +265,12 @@ @DeleteMapping(value = "/deleteByIds") public AjaxResult<Boolean> deleteByIds(@RequestParam String ids) { String[] split = ids.split(","); // 判断策略是否在使用 long count = siteService.count(Wrappers.lambdaQuery(Site.class) .in(Site::getAccountingStrategyId, Arrays.asList(split))); if(count>0){ return AjaxResult.error("该计费策略正在使用中,无法删除"); } // 刪除计费策略明细信息 accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) .in(TAccountingStrategyDetail::getAccountingStrategyId, Arrays.asList(split))); ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
@@ -91,5 +91,25 @@ .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time")); return R.ok(one); } /** * 获取当前有效的计费模板 * @param accountingStrategyId * @return */ /** * 通过站点id查询当前时段使用的策略明细 * @param siteId * @return */ @PostMapping("/getDetailBySiteId") public R<TAccountingStrategyDetail> getDetailBySiteId(@RequestParam("siteId") Integer siteId){ Site site = siteService.getById(siteId); TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId()); TAccountingStrategyDetail one = accountingStrategyDetailService.getOne(Wrappers.<TAccountingStrategyDetail>lambdaQuery() .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()) .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time")); return R.ok(one); } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -21,6 +21,8 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; import com.ruoyi.integration.api.feignClient.IntegrationClient; import com.ruoyi.integration.api.model.EndCharge; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -51,17 +53,15 @@ @RequestMapping("/t-charging-gun") public class TChargingGunController { private final TChargingGunService chargingGunService; @Autowired private TChargingGunService chargingGunService; @Autowired private IntegrationClient integrationClient; @Resource private TChargingPileService chargingPileService; @Resource private ISiteService siteService; @Autowired public TChargingGunController(TChargingGunService chargingGunService) { this.chargingGunService = chargingGunService; } /** * 查询充电枪列表 @@ -132,6 +132,8 @@ @PutMapping(value = "/stopCharging") public AjaxResult<String> stopCharging(@RequestParam("id") Integer id) { // TODO 硬件 结束充电 EndCharge endCharge = new EndCharge(); integrationClient.endCharge(endCharge); return AjaxResult.success(); } ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
@@ -18,15 +18,16 @@ <result column="two_audit_time" property="twoAuditTime" /> <result column="create_time" property="createTime" /> <result column="del_flag" property="delFlag" /> <result column="parent_id" property="parentId" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag,parent_id </sql> <select id="pageList" resultType="com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO"> SELECT id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag,user_id id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag,user_id,parent_id FROM t_accounting_strategy <where> <if test="query.name != null and query.name != ''"> @@ -45,7 +46,7 @@ <select id="getPlatformAccountingStrategy" resultType="com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO"> SELECT id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag,parent_id FROM t_accounting_strategy where del_flag = 0 and site_id is not null order by create_time desc </select> </mapper> ruoyi-service/ruoyi-integration/pom.xml
@@ -169,6 +169,10 @@ <groupId>com.ruoyi</groupId> <artifactId>ruoyi-api-order</artifactId> </dependency> <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-api-chargingPile</artifactId> </dependency> </dependencies> <build> ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java
New file @@ -0,0 +1,109 @@ package com.ruoyi.integration.iotda.constant; /** * @author xiaochen * @Date 2024/8/22 15:28 */ public class SendTagConstant { /** * 充电桩登录认证 */ public static final String ONLINE ="online"; /** * 充电桩心跳包 */ public static final String PING ="ping"; /** * 计费模型验证请求 */ public static final String BILLING_MODE_VERIFY ="billing_mode_verify"; /** * 充电桩计费模型请求 */ public static final String ACQUISITION_BILLING_MODE ="acquisition_billing_mode"; /** * 上传实时监测数据 */ public static final String UPLOAD_REAL_TIME_MONITORING_DATA ="upload_real_time_monitoring_data"; /** * 充电握手 */ public static final String CHARGING_HANDSHAKE ="charging_handshake"; /** * 充电阶段BMS中止 */ public static final String BMS_ABORT ="bms_abort"; /** * 充电阶段充电机中止 */ public static final String MOTOR_ABORT ="motor_abort"; /** * 充电过程BMS需求、充电机输出 */ public static final String BMS_DEMAND_AND_CHARGER_EXPORTATION ="bms_demand_and_charger_exportation"; /** * 充电过程BMS信息 */ public static final String BMS_INFORMATION ="bms_information"; /** * 充电桩主动申请启动充电 */ public static final String CHARGING_PILE_STARTS_CHARGING ="charging_pile_starts_charging"; /** * 远程启机命令回复 */ public static final String PLATFORM_START_CHARGING_REPLY ="platform_start_charging_reply"; /** * 远程停机命令回复 */ public static final String PLATFORM_STOP_CHARGING_REPLY ="platform_stop_charging_reply"; /** * 交易记录 */ public static final String TRANSACTION_RECORD ="transaction_record"; /** * 余额更新应答 */ public static final String UPDATE_BALANCE_REPLY ="update_balance_reply"; /** * 卡数据同步应答 */ public static final String SYNCHRONIZE_OFFLINE_CARD_REPLY ="synchronize_offline_card_reply"; /** * 离线卡数据清除应答 */ public static final String CLEAR_OFFLINE_CARD_REPLY ="clear_offline_card_reply"; /** * 离线卡数据查询应答 */ public static final String QUERY_OFFLINE_CARD_REPLY ="query_offline_card_reply"; /** * 充电桩工作参数设置应答 */ public static final String WORKING_PARAMETER_SETTING_REPLY ="working_parameter_setting_reply"; /** * 对时设置应答 */ public static final String TIMING_SETTING_REPLY ="timing_setting_reply"; /** * 计费模型应答 */ public static final String SETUP_BILLING_MODEL_REPLY ="setup_billing_model_reply"; /** * 地锁数据上送(充电桩上送) */ public static final String GROUND_LOCK_REAL_TIME_DATA ="ground_lock_real_time_data"; /** * 充电桩返回数据(上行) */ public static final String CHARGING_PILE_RETURNS_GROUND_LOCK_DATA ="charging_pile_returns_ground_lock_data"; /** * 远程重启应答 */ public static final String PLATFORM_RESTART_REPLY ="platform_restart_reply"; /** * 远程更新应答 */ public final static String PLATFORM_REMOTE_UPDATE_REPLY ="platform_remote_update_reply"; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/SendTagMenu.java
File was deleted ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
@@ -2,7 +2,11 @@ import com.alibaba.fastjson.JSONObject; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.integration.iotda.constant.SendTagConstant; import com.ruoyi.integration.rocket.produce.EnhanceProduce; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.client.producer.SendResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @@ -16,6 +20,8 @@ @RestController public class IotMessageListener { @Autowired private EnhanceProduce enhanceProduce; /** * 设备消息监听 @@ -27,9 +33,85 @@ public AjaxResult<String> message(@RequestBody JSONObject jsonObject) throws IOException { log.info("接收到消息中转:{}",jsonObject); JSONObject content = jsonObject.getJSONObject("content"); if (content.getString("name").equals("device_status_change")){ //设备状态改变 String service_id = content.getString("service_id"); log.info("服务id:{}",service_id); SendResult sendResult; // 设备消息下发 switch (service_id){ case SendTagConstant.ONLINE: sendResult = enhanceProduce.onlineMessage(content); break; case SendTagConstant.PING: sendResult = enhanceProduce.pingMessage(content); break; case SendTagConstant.BILLING_MODE_VERIFY: sendResult = enhanceProduce.billingModeVerifyMessage(content); break; case SendTagConstant.ACQUISITION_BILLING_MODE: sendResult = enhanceProduce.acquisitionBillingModeMessage(content); break; case SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA: sendResult = enhanceProduce.uploadRealTimeMonitoringDataMessage(content); break; case SendTagConstant.CHARGING_HANDSHAKE: sendResult = enhanceProduce.chargingHandshakeMessage(content); break; case SendTagConstant.BMS_ABORT: sendResult = enhanceProduce.bmsAbortMessage(content); break; case SendTagConstant.MOTOR_ABORT: sendResult = enhanceProduce.motorAbortMessage(content); break; case SendTagConstant.BMS_DEMAND_AND_CHARGER_EXPORTATION: sendResult = enhanceProduce.bmsDemandAndChargerExportationMessage(content); break; case SendTagConstant.BMS_INFORMATION: sendResult = enhanceProduce.bmsInformationMessage(content); break; case SendTagConstant.CHARGING_PILE_STARTS_CHARGING: sendResult = enhanceProduce.chargingPileStartsChargingMessage(content); break; case SendTagConstant.PLATFORM_START_CHARGING_REPLY: sendResult = enhanceProduce.platformStartChargingReplyMessage(content); break; case SendTagConstant.PLATFORM_STOP_CHARGING_REPLY: sendResult = enhanceProduce.platformStopChargingReplyMessage(content); break; case SendTagConstant.TRANSACTION_RECORD: sendResult = enhanceProduce.transactionRecordMessage(content); break; case SendTagConstant.UPDATE_BALANCE_REPLY: sendResult = enhanceProduce.updateBalanceReplyMessage(content); break; case SendTagConstant.SYNCHRONIZE_OFFLINE_CARD_REPLY: sendResult = enhanceProduce.synchronizeOfflineCardReplyMessage(content); break; case SendTagConstant.CLEAR_OFFLINE_CARD_REPLY: sendResult = enhanceProduce.clearOfflineCardReplyMessage(content); break; case SendTagConstant.WORKING_PARAMETER_SETTING_REPLY: sendResult = enhanceProduce.workingParameterSettingReplyMessage(content); break; case SendTagConstant.TIMING_SETTING_REPLY: sendResult = enhanceProduce.timingSettingReplyMessage(content); break; case SendTagConstant.SETUP_BILLING_MODEL_REPLY: sendResult = enhanceProduce.setupBillingModelReplyMessage(content); break; case SendTagConstant.GROUND_LOCK_REAL_TIME_DATA: sendResult = enhanceProduce.groundLockRealTimeDataMessage(content); break; case SendTagConstant.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA: sendResult = enhanceProduce.chargingPileReturnsGroundLockDataMessage(content); break; case SendTagConstant.PLATFORM_RESTART_REPLY: sendResult = enhanceProduce.platformRestartReplyMessage(content); break; default: sendResult = enhanceProduce.platformRemoteUpdateReplyMessage(content); break; } log.info("rocketmq消息下发结果:{}",sendResult); return AjaxResult.success(); } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java
@@ -17,4 +17,11 @@ List<UploadRealTimeMonitoringData> getDataByOrderCode(String code); List<UploadRealTimeMonitoringData> getDataAll(Set<String> values, Integer page, Integer size); /** * 查询订单最新一条数据 * @param transaction_serial_number * @return */ UploadRealTimeMonitoringData getLastDataById(String transaction_serial_number); } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java
@@ -73,4 +73,17 @@ return uploadRealTimeMonitoringData; } @Override public UploadRealTimeMonitoringData getLastDataById(String transaction_serial_number) { Query query = new Query(); if (StringUtils.isNotEmpty(transaction_serial_number)){ query.addCriteria(Criteria.where("transaction_serial_number").is(transaction_serial_number)); } // 按照 createdAt 字段降序排序 query.with(Sort.by(Sort.Direction.DESC, "create_time")); // 限制结果只返回一条记录 query.limit(1); return mongoTemplate.findOne(query, UploadRealTimeMonitoringData.class); } } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/OnlineMessageListener.java
@@ -1,6 +1,10 @@ package com.ruoyi.integration.rocket.listener; import com.ruoyi.integration.api.model.Online; import com.ruoyi.integration.api.model.OnlineReply; import com.ruoyi.integration.iotda.enums.ServiceIdMenu; import com.ruoyi.integration.iotda.utils.produce.IotMessageProduce; import com.ruoyi.integration.iotda.utils.tools.MessageUtil; import com.ruoyi.integration.mongodb.service.OnlineService; import com.ruoyi.integration.rocket.model.OnlineMessage; import com.ruoyi.integration.rocket.model.OnlineMessage; @@ -24,6 +28,10 @@ @Autowired private OnlineService onlineService; @Autowired private MessageUtil messageUtil; @Autowired private IotMessageProduce iotMessageProduce; @Override protected void handleMessage(OnlineMessage message) throws Exception { @@ -33,7 +41,12 @@ Online online = new Online(); BeanUtils.copyProperties(message,online); onlineService.create(online); // 业务处理 // 业务处理 登录认证应答 OnlineReply onlineReply = new OnlineReply(); onlineReply.setCharging_pile_code(message.getCharging_pile_code()); onlineReply.setOnline_result(0); String result = iotMessageProduce.sendMessage(onlineReply.getCharging_pile_code(), ServiceIdMenu.ONLINE_REPLY.getKey(), messageUtil.onlineReply(onlineReply)); log.info("充电桩登录认证-返回结果:{}",result); } @Override ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PingMessageListener.java
@@ -2,6 +2,10 @@ import com.ruoyi.integration.api.model.Online; import com.ruoyi.integration.api.model.Ping; import com.ruoyi.integration.api.model.Pong; import com.ruoyi.integration.iotda.enums.ServiceIdMenu; import com.ruoyi.integration.iotda.utils.produce.IotMessageProduce; import com.ruoyi.integration.iotda.utils.tools.MessageUtil; import com.ruoyi.integration.mongodb.service.OnlineService; import com.ruoyi.integration.mongodb.service.PingService; import com.ruoyi.integration.rocket.model.PingMessage; @@ -25,7 +29,10 @@ @Autowired private PingService pingService; @Autowired private MessageUtil messageUtil; @Autowired private IotMessageProduce iotMessageProduce; @Override protected void handleMessage(PingMessage message) throws Exception { // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试 @@ -35,6 +42,12 @@ BeanUtils.copyProperties(message,ping); pingService.create(ping); // 业务处理 Pong pong = new Pong(); pong.setCharging_pile_code(message.getCharging_pile_code()); pong.setCharging_gun_code(message.getCharging_gun_code()); pong.setCharging_gun_status(0); String result = iotMessageProduce.sendMessage(pong.getCharging_pile_code(), ServiceIdMenu.PONG.getKey(), messageUtil.pong(pong)); log.info("充电桩心跳包-返回结果:{}",result); } @Override ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java
@@ -1,11 +1,14 @@ package com.ruoyi.integration.rocket.listener; import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient; import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail; import com.ruoyi.integration.api.model.Online; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService; import com.ruoyi.integration.rocket.model.UploadRealTimeMonitoringDataMessage; import com.ruoyi.integration.rocket.util.EnhanceMessageHandler; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; @@ -15,6 +18,9 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Objects; @Slf4j @Component @@ -31,10 +37,8 @@ @Resource private ChargingOrderClient chargingOrderClient; @Resource private AccountingStrategyDetailClient accountingStrategyDetailClient; @Override @@ -44,11 +48,31 @@ // 持久化消息 UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData(); BeanUtils.copyProperties(message,uploadRealTimeMonitoringData); // 查询mogondb上一条数据 UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(message.getTransaction_serial_number()); // 查询订单 TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(message.getTransaction_serial_number()).getData(); // 查询当前时间段的计费策略 TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailBySiteId(chargingOrder.getSiteId()).getData(); uploadRealTimeMonitoringData.setElectrovalence_all(accountingStrategyDetail.getElectrovalence()); uploadRealTimeMonitoringData.setService_charge(accountingStrategyDetail.getServiceCharge()); if (Objects.nonNull(data)) { uploadRealTimeMonitoringData.setLast_time(data.getLast_time()); uploadRealTimeMonitoringData.setPeriod_electric_price(message.getPaid_amount().divide(data.getPaid_amount())); uploadRealTimeMonitoringData.setPeriod_charging_degree(message.getCharging_degree().divide(data.getCharging_degree())); uploadRealTimeMonitoringData.setPeriod_service_price(message.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); }else { log.info("首次上传实时监测数据"); uploadRealTimeMonitoringData.setPeriod_electric_price(message.getPaid_amount()); uploadRealTimeMonitoringData.setPeriod_charging_degree(message.getCharging_degree()); uploadRealTimeMonitoringData.setPeriod_service_price(message.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); } uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData); // 业务处理 UploadRealTimeMonitoringDataQuery query = new UploadRealTimeMonitoringDataQuery(); BeanUtils.copyProperties(uploadRealTimeMonitoringData, query); chargingOrderClient.chargeMonitoring(query); } @Override ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java
File was renamed from ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduceController.java @@ -2,22 +2,22 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.ruoyi.integration.iotda.enums.SendTagMenu; import com.ruoyi.integration.iotda.constant.SendTagConstant; import com.ruoyi.integration.rocket.model.*; import com.ruoyi.integration.rocket.util.RocketMQEnhanceTemplate; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.client.producer.SendResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.UUID; @RestController @RequestMapping("enhance") @Slf4j public class EnhanceProduceController { @Component public class EnhanceProduce { //注入增强后的模板,可以自动实现环境隔离,日志记录 @Setter(onMethod_ = @Autowired) @@ -33,8 +33,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.ONLINE.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.ONLINE.getValue(), message); message.setSource(SendTagConstant.ONLINE); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.ONLINE, message); } /** @@ -45,8 +45,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.PING.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.PING.getValue(), message); message.setSource(SendTagConstant.PING); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.PING, message); } /** @@ -57,8 +57,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.BILLING_MODE_VERIFY.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.BILLING_MODE_VERIFY.getValue(), message); message.setSource(SendTagConstant.BILLING_MODE_VERIFY); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.BILLING_MODE_VERIFY, message); } /** @@ -69,8 +69,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.ACQUISITION_BILLING_MODE.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.ACQUISITION_BILLING_MODE.getValue(), message); message.setSource(SendTagConstant.ACQUISITION_BILLING_MODE); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.ACQUISITION_BILLING_MODE, message); } /** @@ -81,8 +81,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.UPLOAD_REAL_TIME_MONITORING_DATA.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.UPLOAD_REAL_TIME_MONITORING_DATA.getValue(), message); message.setSource(SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA, message); } /** @@ -93,8 +93,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.CHARGING_HANDSHAKE.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.CHARGING_HANDSHAKE.getValue(), message); message.setSource(SendTagConstant.CHARGING_HANDSHAKE); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.CHARGING_HANDSHAKE, message); } /** @@ -105,8 +105,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.BMS_ABORT.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.BMS_ABORT.getValue(), message); message.setSource(SendTagConstant.BMS_ABORT); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.BMS_ABORT, message); } /** @@ -117,8 +117,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.MOTOR_ABORT.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.MOTOR_ABORT.getValue(), message); message.setSource(SendTagConstant.MOTOR_ABORT); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.MOTOR_ABORT, message); } /** @@ -129,8 +129,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.BMS_DEMAND_AND_CHARGER_EXPORTATION.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.BMS_DEMAND_AND_CHARGER_EXPORTATION.getValue(), message); message.setSource(SendTagConstant.BMS_DEMAND_AND_CHARGER_EXPORTATION); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.BMS_DEMAND_AND_CHARGER_EXPORTATION, message); } /** @@ -141,8 +141,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.BMS_INFORMATION.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.BMS_INFORMATION.getValue(), message); message.setSource(SendTagConstant.BMS_INFORMATION); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.BMS_INFORMATION, message); } /** @@ -153,8 +153,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.CHARGING_PILE_STARTS_CHARGING.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.CHARGING_PILE_STARTS_CHARGING.getValue(), message); message.setSource(SendTagConstant.CHARGING_PILE_STARTS_CHARGING); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.CHARGING_PILE_STARTS_CHARGING, message); } /** @@ -165,8 +165,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.PLATFORM_START_CHARGING_REPLY.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.PLATFORM_START_CHARGING_REPLY.getValue(), message); message.setSource(SendTagConstant.PLATFORM_START_CHARGING_REPLY); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.PLATFORM_START_CHARGING_REPLY, message); } /** @@ -177,8 +177,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.PLATFORM_STOP_CHARGING_REPLY.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.PLATFORM_STOP_CHARGING_REPLY.getValue(), message); message.setSource(SendTagConstant.PLATFORM_STOP_CHARGING_REPLY); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.PLATFORM_STOP_CHARGING_REPLY, message); } /** @@ -189,8 +189,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.TRANSACTION_RECORD.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.TRANSACTION_RECORD.getValue(), message); message.setSource(SendTagConstant.TRANSACTION_RECORD); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.TRANSACTION_RECORD, message); } /** @@ -201,8 +201,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.UPDATE_BALANCE_REPLY.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.UPDATE_BALANCE_REPLY.getValue(), message); message.setSource(SendTagConstant.UPDATE_BALANCE_REPLY); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.UPDATE_BALANCE_REPLY, message); } /** @@ -213,8 +213,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.SYNCHRONIZE_OFFLINE_CARD_REPLY.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.SYNCHRONIZE_OFFLINE_CARD_REPLY.getValue(), message); message.setSource(SendTagConstant.SYNCHRONIZE_OFFLINE_CARD_REPLY); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.SYNCHRONIZE_OFFLINE_CARD_REPLY, message); } /** @@ -225,8 +225,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.CLEAR_OFFLINE_CARD_REPLY.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.CLEAR_OFFLINE_CARD_REPLY.getValue(), message); message.setSource(SendTagConstant.CLEAR_OFFLINE_CARD_REPLY); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.CLEAR_OFFLINE_CARD_REPLY, message); } /** @@ -237,8 +237,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.WORKING_PARAMETER_SETTING_REPLY.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.WORKING_PARAMETER_SETTING_REPLY.getValue(), message); message.setSource(SendTagConstant.WORKING_PARAMETER_SETTING_REPLY); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.WORKING_PARAMETER_SETTING_REPLY, message); } /** @@ -249,8 +249,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.TIMING_SETTING_REPLY.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.TIMING_SETTING_REPLY.getValue(), message); message.setSource(SendTagConstant.TIMING_SETTING_REPLY); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.TIMING_SETTING_REPLY, message); } /** @@ -261,8 +261,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.SETUP_BILLING_MODEL_REPLY.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.SETUP_BILLING_MODEL_REPLY.getValue(), message); message.setSource(SendTagConstant.SETUP_BILLING_MODEL_REPLY); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.SETUP_BILLING_MODEL_REPLY, message); } /** @@ -273,8 +273,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.GROUND_LOCK_REAL_TIME_DATA.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.GROUND_LOCK_REAL_TIME_DATA.getValue(), message); message.setSource(SendTagConstant.GROUND_LOCK_REAL_TIME_DATA); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.GROUND_LOCK_REAL_TIME_DATA, message); } /** @@ -285,8 +285,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA.getValue(), message); message.setSource(SendTagConstant.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA, message); } /** @@ -297,8 +297,8 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.PLATFORM_RESTART_REPLY.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.PLATFORM_RESTART_REPLY.getValue(), message); message.setSource(SendTagConstant.PLATFORM_RESTART_REPLY); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.PLATFORM_RESTART_REPLY, message); } /** @@ -309,7 +309,7 @@ // 设置业务key message.setKey(UUID.randomUUID().toString()); // 设置消息来源,便于查询 message.setSource(SendTagMenu.PLATFORM_REMOTE_UPDATE_REPLY.getValue()); return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.PLATFORM_REMOTE_UPDATE_REPLY.getValue(), message); message.setSource(SendTagConstant.PLATFORM_REMOTE_UPDATE_REPLY); return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.PLATFORM_REMOTE_UPDATE_REPLY, message); } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -1,4 +1,5 @@ package com.ruoyi.order.controller; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.google.common.collect.Lists; import java.math.BigDecimal; @@ -140,6 +141,12 @@ @ApiOperation(value = "列表", tags = {"管理后台-支付订单-订单信息"}) public R<PageInfo<PayOrderDto>> payOrderList(@RequestBody PayOrderQueryDto payOrderQueryDto) { return chargingOrderService.payOrderQuery(payOrderQueryDto); } @ResponseBody @PostMapping(value = "/pay/order/refund") @ApiOperation(value = "列表", tags = {"管理后台-支付订单-订单信息"}) public R refund(@RequestBody PayOrderRefundDto payOrderQueryDto) { return chargingOrderService.payRefund(payOrderQueryDto); } @ResponseBody @@ -638,6 +645,16 @@ public void chargeMonitoring(@RequestBody UploadRealTimeMonitoringDataQuery query){ chargingOrderService.chargeMonitoring(query); } /** * 通过流水号查询订单 * @param code * @return */ @PostMapping(value = "/getOrderByCode/{code}") public R<TChargingOrder> getOrderByCode(@PathVariable("code") String code){ return R.ok(chargingOrderService.getOne(Wrappers.lambdaQuery(TChargingOrder.class) .eq(TChargingOrder::getCode,code))); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderRefundDto.java
New file @@ -0,0 +1,18 @@ package com.ruoyi.order.dto; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data public class PayOrderRefundDto{ private Long orderId; @ApiModelProperty("1充电订单2购物订单3vip订单4停车订单") private Integer type; private BigDecimal refundAmount; private String reason; private String remark; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -130,6 +130,8 @@ ChargingOrderTimeVO chargingList(ChargingListQuery dto); R payRefund(PayOrderRefundDto payOrderQueryDto); ChargingOrderListInfoVO chargingInfo(String uid); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java
@@ -57,13 +57,14 @@ if (item.getOrderType() == 1) { TChargingOrder tChargingOrder = chargingOrders.stream().filter(chargingOrder -> chargingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null); if(Objects.nonNull(tChargingOrder)){ item.setChargingOrder(chargingOrders.stream().filter(chargingOrder -> chargingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null)); item.setChargingOrder(tChargingOrder); SiteNameVO siteNameVO = chargingGunClient.getAllInfoById(tChargingOrder.getChargingGunId()).getData(); item.setGunName(siteNameVO.getGunName()); item.setGunNumber(siteNameVO.getGunNumber()); item.setPileName(siteNameVO.getPileName()); item.setPileNumber(siteNameVO.getPileNumber()); item.setSiteName(siteNameVO.getSiteName()); item.setEndMode(tChargingOrder.getEndMode()); } }else if (item.getOrderType() == 2) { TShoppingOrder tShoppingOrder = shoppingOrders.stream().filter(shoppingOrder -> shoppingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null); @@ -82,7 +83,11 @@ BeanUtils.copyProperties(orderAppeal,orderAppealVO); // 查询申诉详情 if (orderAppeal.getOrderType() == 1) { orderAppealVO.setChargingOrder(chargingOrderMapper.selectById(orderAppeal.getOrderId())); TChargingOrder tChargingOrder = chargingOrderMapper.selectById(orderAppeal.getOrderId()); orderAppealVO.setChargingOrder(tChargingOrder); if(Objects.nonNull(tChargingOrder)){ orderAppealVO.setEndMode(tChargingOrder.getEndMode()); } }else if (orderAppeal.getOrderType() == 2) { TShoppingOrder tShoppingOrder = shoppingOrderMapper.selectById(orderAppeal.getOrderId()); setGoodsInfo(orderAppealVO,tShoppingOrder); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
@@ -361,6 +361,7 @@ if(1 == paymentType){ WxPaymentRefundModel model = new WxPaymentRefundModel(); model.setOut_trade_no(shoppingOrder.getCode()); model.setTransaction_id(shoppingOrder.getSerialNumber()); model.setOut_refund_no(shoppingOrderRefund.getRefundCode()); model.setReason("取消订单"); model.setNotify_url("http://127.0.0.1:9000/order/t-shopping-order/cancelShoppingOrderWxRefund");