diff --git a/base-commons/common-mongodb/pom.xml b/base-commons/common-mongodb/pom.xml index 59cc9df..5396fb5 100644 --- a/base-commons/common-mongodb/pom.xml +++ b/base-commons/common-mongodb/pom.xml @@ -21,5 +21,10 @@ lombok provided + + io.swagger.core.v3 + swagger-models + 2.2.19 + \ No newline at end of file diff --git a/base-commons/common-mongodb/src/main/java/com/evotech/hd/common/constant/MongoConstant.java b/base-commons/common-mongodb/src/main/java/com/evotech/hd/common/constant/MongoConstant.java index 3be50a9..b791c28 100644 --- a/base-commons/common-mongodb/src/main/java/com/evotech/hd/common/constant/MongoConstant.java +++ b/base-commons/common-mongodb/src/main/java/com/evotech/hd/common/constant/MongoConstant.java @@ -35,9 +35,10 @@ public class MongoConstant { */ public static final String EQ = "and"; public static final String IN = "in"; - public static final String NOT_IN = "not_in"; + public static final String NOT_IN = "not-in"; public static final String GT = "gt"; public static final String GE = "ge"; + public static final String GT_GE = "ge-ge"; public static final String LT = "lt"; public static final String LE = "le"; public static final String REGEX = "regex"; diff --git a/base-commons/common-mongodb/src/main/java/com/evotech/hd/common/service/MongoDBService.java b/base-commons/common-mongodb/src/main/java/com/evotech/hd/common/service/MongoDBService.java index 968abfe..e845489 100644 --- a/base-commons/common-mongodb/src/main/java/com/evotech/hd/common/service/MongoDBService.java +++ b/base-commons/common-mongodb/src/main/java/com/evotech/hd/common/service/MongoDBService.java @@ -192,6 +192,11 @@ public class MongoDBService { case MongoConstant.GE: query.addCriteria(Criteria.where(keyAndQueryType[1]).gte(params.get(key))); break; + case MongoConstant.GT_GE: + String begin = String.valueOf(params.get(key)).split(MongoConstant.SEPARATION)[0]; + String end = String.valueOf(params.get(key)).split(MongoConstant.SEPARATION)[1]; + query.addCriteria(Criteria.where(keyAndQueryType[1]).gte(begin).lte(end)); + break; case MongoConstant.LT: query.addCriteria(Criteria.where(keyAndQueryType[1]).lt(params.get(key))); break; diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/BatteryStationDcController.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/BatteryStationDcController.java index c5f58db..afec707 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/BatteryStationDcController.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/BatteryStationDcController.java @@ -1,11 +1,18 @@ package com.evotech.hd.cloud.controller; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.evotech.hd.cloud.entity.request.PageListBatteryStationDcRequest; +import com.evotech.hd.cloud.mqtt.message.dto.older.BatData; +import com.evotech.hd.cloud.mqtt.message.dto.older.state.HdChargingData; import com.evotech.hd.cloud.service.BatteryStationDcService; +import com.evotech.hd.common.constant.MongoConstant; import com.evotech.hd.common.core.Dto.Result; import com.evotech.hd.common.core.entity.cloud.BatteryStationDc; import com.evotech.hd.common.core.entity.cloud.BatteryTrace; +import com.evotech.hd.common.core.utils.Collections; +import com.evotech.hd.common.dtos.BatDataDto; +import com.evotech.hd.common.service.MongoDBService; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport; import io.swagger.v3.oas.annotations.Operation; @@ -13,13 +20,12 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; +import org.apache.commons.lang3.StringUtils; import org.springdoc.core.annotations.ParameterObject; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Map; @Tag(name = "换电站电池") @ApiSupport(order = 12) @@ -30,7 +36,10 @@ public class BatteryStationDcController { @Resource private BatteryStationDcService batteryStationDcService; - + @Resource + MongoDBService mongoDBService; + + @Operation(summary = "增加") @PostMapping("/add") @ApiOperationSupport(order = 1) @@ -83,4 +92,45 @@ public class BatteryStationDcController { return batteryStationDcService.deleteTrace(id); } + + @Operation(summary = "电池动态图") + @PostMapping("/dynamic/detail") + @ApiOperationSupport(order = 8) + public Result> dynamicDetail(@RequestBody BatDataDto batDataDto) { + List batDataList = mongoDBService.find(MongoConstant.BATTERY_BOX_DATA_BASE, batDataDto.getBatCode(), + com.evotech.hd.common.documnet.BatData.class, + Collections.asMap( + MongoConstant.GT_GE+ MongoConstant.SEPARATION+"id",String.valueOf(batDataDto.getBeginTime().getTime())+MongoConstant.SEPARATION+String.valueOf(batDataDto.getEndTime().getTime()), + MongoConstant.SORT+ MongoConstant.SEPARATION+MongoConstant.SORT_DESC, "id" + )); + List resultBatDataList = Collections.emptyList(); + if(Collections.isNotEmpty(batDataList)){ + batDataList.stream().forEach(data->{ + if(StringUtils.isNotEmpty(data.getValue())){ + BatData batData = JSONUtil.toBean(data.getValue(), BatData.class); + batData.setId(data.getId()); + resultBatDataList.add(batData); + } + }); + }; + + + List chargingDataList = mongoDBService.find(MongoConstant.BATTERY_DATA_BASE, batDataDto.getBatCode(), + com.evotech.hd.common.documnet.ChargingData.class, + Collections.asMap( + MongoConstant.GT_GE+ MongoConstant.SEPARATION+"id",String.valueOf(batDataDto.getBeginTime().getTime())+MongoConstant.SEPARATION+String.valueOf(batDataDto.getEndTime().getTime()), + MongoConstant.SORT+ MongoConstant.SEPARATION+MongoConstant.SORT_DESC, "id" + )); + List resultChargingDataList = Collections.emptyList(); + if(Collections.isNotEmpty(batDataList)){ + chargingDataList.stream().forEach(data->{ + if(StringUtils.isNotEmpty(data.getValue())){ + HdChargingData chargingData = JSONUtil.toBean(data.getValue(), HdChargingData.class); + chargingData.setId(data.getId()); + resultChargingDataList.add(chargingData); + } + }); + }; + return new Result().success(Collections.asMap("batData", resultBatDataList, "chargingData", resultChargingDataList)); + } } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/alarm/AlarmController.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/alarm/AlarmController.java index 51b8eed..99e1fab 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/alarm/AlarmController.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/alarm/AlarmController.java @@ -66,7 +66,7 @@ public class AlarmController { } @Operation(summary = "推送通知") - @PostMapping("/send/{path}") + @PostMapping("/send/{path}") public Result deleteDetail(@RequestBody AlarmTemplate param,@PathVariable("path")String path) { AlarmTemplate alarmTemplate = alarmTemplateService.getOne(new LambdaQueryWrapper().eq(AlarmTemplate::getPath, path), false); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/older/state/HdChargingData.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/older/state/HdChargingData.java index 709dc0f..3353f00 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/older/state/HdChargingData.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/older/state/HdChargingData.java @@ -2,6 +2,7 @@ package com.evotech.hd.cloud.mqtt.message.dto.older.state; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; import java.util.Date; @@ -10,6 +11,7 @@ import java.util.Date; * @date 2023-12-03 */ @Schema(name = "电池箱实时信息", hidden = true) +@Data public class HdChargingData { @Schema(name = "主键") diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/MqttMessageHandleService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/MqttMessageHandleService.java index 2520c70..e1359ef 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/MqttMessageHandleService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/MqttMessageHandleService.java @@ -36,7 +36,7 @@ public class MqttMessageHandleService { } // 2. keepalive不加密,单独处理 if (MqttMessageTypeEnum.KEEPALIVE.getType().equals(topic.getMessageType())) { - keepaliveMessageService.keepAlive(topic, message); + keepaliveMessageService.keepAlive(topic, message); return; } // 3. 其他 AES加密 diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/open/processor/StrategyFactory.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/open/processor/StrategyFactory.java index 8eda524..46bcd29 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/open/processor/StrategyFactory.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/open/processor/StrategyFactory.java @@ -75,7 +75,7 @@ public class StrategyFactory implements InitializingBean, ApplicationContextAwar MessageMqtt messageMqtt = new MessageMqtt(); messageMqtt.setStationCode(json.getString("stationCode")); messageMqtt.setDirection("M2S"); - messageMqtt.setType("状态信息类"); + messageMqtt.setType("WEB站控推送"); messageMqtt.setMessageFunction(json.getString("method")); messageMqtt.setTopic(json.getString("class")); messageMqtt.setContent(json.toJSONString()); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/open/processor/impl/AlarmProcessor.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/open/processor/impl/AlarmProcessor.java index 601c308..b59cce8 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/open/processor/impl/AlarmProcessor.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/open/processor/impl/AlarmProcessor.java @@ -57,6 +57,6 @@ public class AlarmProcessor implements StationMessageStrategyExchangeProcessor { } - return null; + return Result.getInstance().build(Boolean.class).success(true); } } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/open/processor/impl/OrderSwapProcessor.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/open/processor/impl/OrderSwapProcessor.java index 2539f44..f67fb4a 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/open/processor/impl/OrderSwapProcessor.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/open/processor/impl/OrderSwapProcessor.java @@ -95,7 +95,7 @@ public class OrderSwapProcessor implements StationMessageStrategyExchangeProcess return Result.getInstance().build(Boolean.class).success(true); } catch (Exception e) { e.printStackTrace();; - return Result.getInstance().build(Boolean.class).error(e.getMessage(), null); + return Result.getInstance().build(Boolean.class).error(e.getMessage(), false); } } @@ -124,6 +124,21 @@ public class OrderSwapProcessor implements StationMessageStrategyExchangeProcess e.printStackTrace(); return Result.getInstance().build(JSONObject.class).error(e.getMessage(), null); } + } + /*** + * 关闭订单信息 + * @param json + * @return + */ + public Result closeOrderStatus(JSONObject json){ + try { + Order order = orderService.getById(json.getInteger("pkId")); + order.setStatus(json.getInteger("status")); + return Result.getInstance().build(Boolean.class).success(orderService.updateById(order)); + } catch (Exception e) { + e.printStackTrace(); + return Result.getInstance().build(Boolean.class).error(e.getMessage(), false); + } } } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/task/HomeDataOrderSwapTask.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/task/HomeDataOrderSwapTask.java index 343679c..552da92 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/task/HomeDataOrderSwapTask.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/task/HomeDataOrderSwapTask.java @@ -30,7 +30,7 @@ public class HomeDataOrderSwapTask { Date d = new Date(); List list = orderDao.selectList(new QueryWrapper() .or(i -> i.and(j -> j.ge("order_time", DateUtil.beginOfDay(d)).le("order_time", DateUtil.endOfDay(d))) - .or(j -> j.ge("uptime", DateUtil.beginOfDay(d)).le("uptime", DateUtil.endOfDay(d))))); + .or(j -> j.ge("ctime", DateUtil.beginOfDay(d)).le("ctime", DateUtil.endOfDay(d))))); List dayStringList = list.stream().map(i -> DateUtil.format(i.getOrderTime(), DatePattern.PURE_DATE_PATTERN)).distinct().toList(); for (int i = 0; i < dayStringList.size(); i++) { String dayString = dayStringList.get(i); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/DateUtils.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/DateUtils.java index c491dab..8b33814 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/DateUtils.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/DateUtils.java @@ -54,6 +54,16 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils return dateTimeNow(YYYY_MM_DD); } + public static Long getDateTime() + { + return System.currentTimeMillis(); + } + + public static Long getDateTime(Date date) + { + return date.getTime(); + } + public static final String getTime() { return dateTimeNow(YYYY_MM_DD_HH_MM_SS); diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/service/gzh/GZHAccessTokenService.java b/wechat-server/src/main/java/com/evotech/hd/wechat/service/gzh/GZHAccessTokenService.java index 5bdee0f..bdc98b4 100644 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/service/gzh/GZHAccessTokenService.java +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/service/gzh/GZHAccessTokenService.java @@ -31,7 +31,7 @@ public class GZHAccessTokenService { if (StringUtils.hasText(jo.getStr("errcode"))) { throw new RuntimeException(res); } - redisUtil.set(accessTokenPrefix + gzhProperties.getAppid(), jo.getStr("access_token"), 7200L); + redisUtil.set(accessTokenPrefix + gzhProperties.getAppid(), jo.getStr("access_token"), 7000L); return jo.getStr("access_token"); }