From d65c0c5f33c2b006570948715ecf538e31ef3c63 Mon Sep 17 00:00:00 2001 From: wenhui <1455474577@qq.com> Date: Thu, 17 Mar 2022 16:20:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=95=B0=E6=8D=AE=E5=A4=A7?= =?UTF-8?q?=E5=B1=8F=E5=AE=9E=E6=97=B6=E8=AE=A2=E5=8D=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../XhpcDataBigScreenController.java | 14 + .../databigscreen/domain/RealtimeOrders.java | 78 +++++ .../mapper/XhpcRateTimeMapper.java | 33 ++ .../xhpc/databigscreen/pojo/XhpcRateTime.java | 103 ++++++ .../service/XhpcDataBigScreenService.java | 9 + .../impl/XhpcDataBigScreenServiceImpl.java | 107 +++++++ .../resources/mapper/XhpcRateTimeMapper.xml | 293 ++++++++++++++++++ 7 files changed, 637 insertions(+) create mode 100644 xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/domain/RealtimeOrders.java create mode 100644 xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/mapper/XhpcRateTimeMapper.java create mode 100644 xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/pojo/XhpcRateTime.java create mode 100644 xhpc-modules/xhpc-data-big-screen/src/main/resources/mapper/XhpcRateTimeMapper.xml diff --git a/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/controller/XhpcDataBigScreenController.java b/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/controller/XhpcDataBigScreenController.java index 57d28cd6..8b64b442 100644 --- a/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/controller/XhpcDataBigScreenController.java +++ b/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/controller/XhpcDataBigScreenController.java @@ -4,6 +4,7 @@ import com.xhpc.common.core.domain.R; import com.xhpc.common.core.web.controller.BaseController; import com.xhpc.databigscreen.domain.CoreParam; import com.xhpc.databigscreen.domain.OrderRatio; +import com.xhpc.databigscreen.domain.RealtimeOrders; import com.xhpc.databigscreen.service.XhpcDataBigScreenService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -27,6 +28,19 @@ public class XhpcDataBigScreenController extends BaseController { @Resource XhpcDataBigScreenService xhpcDataBigScreenService; + /** + * query realtime orders by coreParam + * + * @author WH + * @date 2022/3/16 10:56 + * @since version-1.0 + */ + @GetMapping("/realtimeOrders") + public R queryRealtimeOrders(CoreParam coreParam) { + + return xhpcDataBigScreenService.queryRealtimeOrders(coreParam); + } + /** * Return order ratio * diff --git a/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/domain/RealtimeOrders.java b/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/domain/RealtimeOrders.java new file mode 100644 index 00000000..22da49fb --- /dev/null +++ b/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/domain/RealtimeOrders.java @@ -0,0 +1,78 @@ +package com.xhpc.databigscreen.domain; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author WH + */ +@NoArgsConstructor +@Data +public class RealtimeOrders { + + + /** + * 总条数 + */ + @JsonProperty("totalItems") + private Long totalItems; + /** + * 数据集合 + */ + @JsonProperty("data") + private List data; + + /** + * RealtimeOrder + */ + @NoArgsConstructor + @Data + public static class RealtimeOrder { + + /** + * 用户类型 + */ + @JsonProperty("userType") + private String userType; + /** + * 开始充电时间 + */ + @JsonProperty("startChargingTime") + private String startChargingTime; + /** + * 充电时长 + */ + @JsonProperty("chargingTime") + private String chargingTime; + /** + * 已充电量(度) + */ + @JsonProperty("chargedElectric") + private Double chargedElectric; + /** + * 充电金额 + */ + @JsonProperty("chargingSum") + private Double chargingSum; + /** + * 电流 + */ + @JsonProperty("electricCurrent") + private Double electricCurrent; + /** + * 电压 + */ + @JsonProperty("voltage") + private Double voltage; + /** + * SOC + */ + @JsonProperty("soc") + private String soc; + + } + +} diff --git a/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/mapper/XhpcRateTimeMapper.java b/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/mapper/XhpcRateTimeMapper.java new file mode 100644 index 00000000..66a91d5f --- /dev/null +++ b/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/mapper/XhpcRateTimeMapper.java @@ -0,0 +1,33 @@ +package com.xhpc.databigscreen.mapper; + +import com.xhpc.databigscreen.pojo.XhpcRateTime; +import org.apache.ibatis.annotations.Param; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public interface XhpcRateTimeMapper { + + int deleteByPrimaryKey(Long rateTimeId); + + int insert(XhpcRateTime record); + + int insertSelective(XhpcRateTime record); + + XhpcRateTime selectByPrimaryKey(Long rateTimeId); + + int updateByPrimaryKeySelective(XhpcRateTime record); + + int updateByPrimaryKey(XhpcRateTime record); + + /** + * query real time orders for big data screen + * + * @author WH + * @date 2022/3/17 14:46 + * @since version-1.0 + */ + List> selectByTenantIdsAndCharingStationIds(@Param("tenantIdList") List tenantIdList, @Param("xhpcChargingStationList") ArrayList xhpcChargingStationList); + +} \ No newline at end of file diff --git a/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/pojo/XhpcRateTime.java b/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/pojo/XhpcRateTime.java new file mode 100644 index 00000000..f6f0acb1 --- /dev/null +++ b/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/pojo/XhpcRateTime.java @@ -0,0 +1,103 @@ +package com.xhpc.databigscreen.pojo; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * xhpc_rate_time + * + * @author + */ +@Data +public class XhpcRateTime implements Serializable { + + /** + * 费率时段id + */ + private Long rateTimeId; + + /** + * 电站id + */ + private Long chargingStationId; + + /** + * 费率id + */ + private Long rateId; + + /** + * 启始时间 + */ + private Date startTime; + + /** + * 结束时间 + */ + private Date endTime; + + /** + * 状态(0正常 1停用) + */ + private Integer status; + + /** + * 删除标志(0代表存在 2代表删除) + */ + private Integer delFlag; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 创建者 + */ + private String createBy; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 更新者 + */ + private String updateBy; + + /** + * 备注 + */ + private String remark; + + /** + * 计费模型id + */ + private Long rateModelId; + + /** + * 时间排序 + */ + private Integer sort; + + /** + * 1 设置时间段 2默认时间段 + */ + private Integer type; + + /** + * 费率类型 00: 尖费率 01: 峰费率 02: 平费率 03: 谷费率 + */ + private String rateValue; + + /** + * 租户id + */ + private String tenantId; + + private static final long serialVersionUID = 1L; + +} \ No newline at end of file diff --git a/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/service/XhpcDataBigScreenService.java b/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/service/XhpcDataBigScreenService.java index 859842a4..c4615095 100644 --- a/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/service/XhpcDataBigScreenService.java +++ b/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/service/XhpcDataBigScreenService.java @@ -3,6 +3,7 @@ package com.xhpc.databigscreen.service; import com.xhpc.common.core.domain.R; import com.xhpc.databigscreen.domain.CoreParam; import com.xhpc.databigscreen.domain.OrderRatio; +import com.xhpc.databigscreen.domain.RealtimeOrders; import java.util.List; import java.util.Map; @@ -59,4 +60,12 @@ public interface XhpcDataBigScreenService { */ R queryOrderRatio(CoreParam coreParam); + /** + * query realtime by coreParam + * + * @param coreParam + * @return + */ + R queryRealtimeOrders(CoreParam coreParam); + } diff --git a/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/service/impl/XhpcDataBigScreenServiceImpl.java b/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/service/impl/XhpcDataBigScreenServiceImpl.java index a0c81c21..31fde462 100644 --- a/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/service/impl/XhpcDataBigScreenServiceImpl.java +++ b/xhpc-modules/xhpc-data-big-screen/src/main/java/com/xhpc/databigscreen/service/impl/XhpcDataBigScreenServiceImpl.java @@ -6,9 +6,11 @@ import com.xhpc.common.util.MyDateUtil; import com.xhpc.common.util.UserTypeUtil; import com.xhpc.databigscreen.domain.CoreParam; import com.xhpc.databigscreen.domain.OrderRatio; +import com.xhpc.databigscreen.domain.RealtimeOrders; import com.xhpc.databigscreen.mapper.XhpcAppUserMapper; import com.xhpc.databigscreen.mapper.XhpcChargingStationMapper; import com.xhpc.databigscreen.mapper.XhpcHistoryOrderMapper; +import com.xhpc.databigscreen.mapper.XhpcRateTimeMapper; import com.xhpc.databigscreen.service.XhpcDataBigScreenService; import org.springframework.stereotype.Service; @@ -33,6 +35,8 @@ public class XhpcDataBigScreenServiceImpl implements XhpcDataBigScreenService { XhpcAppUserMapper xhpcAppUserMapper; @Resource XhpcHistoryOrderMapper xhpcHistoryOrderMapper; + @Resource + XhpcRateTimeMapper xhpcRateTimeMapper; @Override public R>> returnCoreLocation(CoreParam coreParam) { @@ -397,6 +401,109 @@ public class XhpcDataBigScreenServiceImpl implements XhpcDataBigScreenService { return null; } + @Override + public R queryRealtimeOrders(CoreParam coreParam) { + + String tenantIdsStr = null; + List> xhpcChargingStationList = null; + List tenantIdList = null; + String[] tenantIdArray = null; + //judge care param function + switch (coreParam.getParamType()) { + case 0: + tenantIdsStr = coreParam.getTenantIds(); + if (!"".equals(tenantIdsStr) && tenantIdsStr != null) { + tenantIdArray = tenantIdsStr.split(","); + tenantIdList = Arrays.stream(tenantIdArray).collect(Collectors.toList()); + List> realtimeOrderList = xhpcRateTimeMapper.selectByTenantIdsAndCharingStationIds(tenantIdList, null); + return getRealtimeOrders(realtimeOrderList); + } else { + List> realtimeOrderList = xhpcRateTimeMapper.selectByTenantIdsAndCharingStationIds(tenantIdList, null); + return getRealtimeOrders(realtimeOrderList); + } + //query charging station infos of whole area + case 1: + Integer areaCode = coreParam.getAreaCode(); + tenantIdsStr = coreParam.getTenantIds(); + if (!"".equals(tenantIdsStr) && tenantIdsStr != null) { + tenantIdArray = tenantIdsStr.split(","); + tenantIdList = Arrays.stream(tenantIdArray).collect(Collectors.toList()); + xhpcChargingStationList = xhpcChargingStationMapper.selectByTenantIdAndAreaCode(tenantIdList, areaCode); + ArrayList chargingStationIdList = new ArrayList<>(); + for (Map chargingStation : xhpcChargingStationList) { + chargingStationIdList.add((Long) chargingStation.get(ConstantClass.CHARGING_STATION_ID)); + } + List> realtimeOrderList = xhpcRateTimeMapper.selectByTenantIdsAndCharingStationIds(tenantIdList, chargingStationIdList); + return getRealtimeOrders(realtimeOrderList); + } else { + xhpcChargingStationList = xhpcChargingStationMapper.selectByTenantIdAndAreaCode(tenantIdList, areaCode); + ArrayList chargingStationIdList = new ArrayList<>(); + for (Map chargingStation : xhpcChargingStationList) { + chargingStationIdList.add((Long) chargingStation.get(ConstantClass.CHARGING_STATION_ID)); + } + List> realtimeOrderList = xhpcRateTimeMapper.selectByTenantIdsAndCharingStationIds(tenantIdList, chargingStationIdList); + return getRealtimeOrders(realtimeOrderList); + } + case 2: + //query location info of special charging station of special tenant + tenantIdsStr = coreParam.getTenantIds(); + if (!"".equals(tenantIdsStr) && tenantIdsStr != null) { + tenantIdArray = tenantIdsStr.split(","); + tenantIdList = Arrays.stream(tenantIdArray).collect(Collectors.toList()); + String chargingStationIdStr = coreParam.getChargingStationIds(); + long chargingStationId = Long.parseLong(chargingStationIdStr); + xhpcChargingStationList = xhpcChargingStationMapper.selectByTenantIdAndChargingStationId(tenantIdList, chargingStationId); + ArrayList chargingStationIdList = new ArrayList<>(); + for (Map chargingStation : xhpcChargingStationList) { + chargingStationIdList.add((Long) chargingStation.get(ConstantClass.CHARGING_STATION_ID)); + } + List> realtimeOrderList = xhpcRateTimeMapper.selectByTenantIdsAndCharingStationIds(tenantIdList, chargingStationIdList); + return getRealtimeOrders(realtimeOrderList); + } else { + return R.fail("传入的参数有误"); + } + default: + return R.fail("param type is invalid"); + } + } + + /** + * 获取实时订单数据 + * + * @author WH + * @date 2022/3/17 15:46 + * @since version-1.0 + */ + private R getRealtimeOrders(List> realtimeOrderList) { + //init wrapper class object,set default value + RealtimeOrders realtimeOrders = new RealtimeOrders(); + ArrayList realtimeOrderWrapperList = new ArrayList<>(); + realtimeOrders.setData(realtimeOrderWrapperList); + realtimeOrders.setTotalItems(0L); + if (realtimeOrderList.isEmpty()) { + return R.ok(realtimeOrders); + } + realtimeOrders.setTotalItems((long) realtimeOrderList.size()); + for (Map realtimeOrderMap : realtimeOrderList) { + RealtimeOrders.RealtimeOrder realtimeOrder = new RealtimeOrders.RealtimeOrder(); + Integer userType = (Integer) realtimeOrderMap.get("source"); + if (userType == 1) { + realtimeOrder.setUserType((String) realtimeOrderMap.get("chargingMode")); + } else { + realtimeOrder.setUserType((String) realtimeOrderMap.get("sourceMap")); + } + realtimeOrder.setStartChargingTime((String) realtimeOrderMap.get("startTime")); + realtimeOrder.setChargingTime((String) realtimeOrderMap.get("chargingTime")); + realtimeOrder.setChargedElectric((Double) realtimeOrderMap.get("chargingDegree")); + realtimeOrder.setChargingSum((Double) realtimeOrderMap.get("amountCharged")); + realtimeOrder.setElectricCurrent((Double) realtimeOrderMap.get("electricCurrent")); + realtimeOrder.setVoltage((Double) realtimeOrderMap.get("voltage")); + realtimeOrder.setSoc((String) realtimeOrderMap.get("soc")); + realtimeOrderWrapperList.add(realtimeOrder); + } + return R.ok(realtimeOrders); + } + /** * 获取订单来源比例方法 * diff --git a/xhpc-modules/xhpc-data-big-screen/src/main/resources/mapper/XhpcRateTimeMapper.xml b/xhpc-modules/xhpc-data-big-screen/src/main/resources/mapper/XhpcRateTimeMapper.xml new file mode 100644 index 00000000..147deab3 --- /dev/null +++ b/xhpc-modules/xhpc-data-big-screen/src/main/resources/mapper/XhpcRateTimeMapper.xml @@ -0,0 +1,293 @@ + + + + + + + + + + + + + + + + + + + + + + + + + rate_time_id + , charging_station_id, rate_id, start_time, end_time, `status`, del_flag, + create_time, create_by, update_time, update_by, remark, rate_model_id, sort, `type`, + rate_value, tenant_id + + + + + delete + from xhpc_rate_time + where rate_time_id = #{rateTimeId,jdbcType=BIGINT} + + + insert into xhpc_rate_time (charging_station_id, rate_id, start_time, + end_time, `status`, del_flag, + create_time, create_by, update_time, + update_by, remark, rate_model_id, + sort, `type`, rate_value, + tenant_id) + values (#{chargingStationId,jdbcType=BIGINT}, #{rateId,jdbcType=BIGINT}, #{startTime,jdbcType=TIME}, + #{endTime,jdbcType=TIME}, #{status,jdbcType=INTEGER}, #{delFlag,jdbcType=INTEGER}, + #{createTime,jdbcType=TIMESTAMP}, #{createBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, + #{updateBy,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, #{rateModelId,jdbcType=BIGINT}, + #{sort,jdbcType=INTEGER}, #{type,jdbcType=INTEGER}, #{rateValue,jdbcType=VARCHAR}, + #{tenantId,jdbcType=VARCHAR}) + + + insert into xhpc_rate_time + + + charging_station_id, + + + rate_id, + + + start_time, + + + end_time, + + + `status`, + + + del_flag, + + + create_time, + + + create_by, + + + update_time, + + + update_by, + + + remark, + + + rate_model_id, + + + sort, + + + `type`, + + + rate_value, + + + tenant_id, + + + + + #{chargingStationId,jdbcType=BIGINT}, + + + #{rateId,jdbcType=BIGINT}, + + + #{startTime,jdbcType=TIME}, + + + #{endTime,jdbcType=TIME}, + + + #{status,jdbcType=INTEGER}, + + + #{delFlag,jdbcType=INTEGER}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{createBy,jdbcType=VARCHAR}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + #{updateBy,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + #{rateModelId,jdbcType=BIGINT}, + + + #{sort,jdbcType=INTEGER}, + + + #{type,jdbcType=INTEGER}, + + + #{rateValue,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=VARCHAR}, + + + + + update xhpc_rate_time + + + charging_station_id = #{chargingStationId,jdbcType=BIGINT}, + + + rate_id = #{rateId,jdbcType=BIGINT}, + + + start_time = #{startTime,jdbcType=TIME}, + + + end_time = #{endTime,jdbcType=TIME}, + + + `status` = #{status,jdbcType=INTEGER}, + + + del_flag = #{delFlag,jdbcType=INTEGER}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + create_by = #{createBy,jdbcType=VARCHAR}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + update_by = #{updateBy,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + rate_model_id = #{rateModelId,jdbcType=BIGINT}, + + + sort = #{sort,jdbcType=INTEGER}, + + + `type` = #{type,jdbcType=INTEGER}, + + + rate_value = #{rateValue,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=VARCHAR}, + + + where rate_time_id = #{rateTimeId,jdbcType=BIGINT} + + + update xhpc_rate_time + set charging_station_id = #{chargingStationId,jdbcType=BIGINT}, + rate_id = #{rateId,jdbcType=BIGINT}, + start_time = #{startTime,jdbcType=TIME}, + end_time = #{endTime,jdbcType=TIME}, + `status` = #{status,jdbcType=INTEGER}, + del_flag = #{delFlag,jdbcType=INTEGER}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + create_by = #{createBy,jdbcType=VARCHAR}, + update_time = #{updateTime,jdbcType=TIMESTAMP}, + update_by = #{updateBy,jdbcType=VARCHAR}, + remark = #{remark,jdbcType=VARCHAR}, + rate_model_id = #{rateModelId,jdbcType=BIGINT}, + sort = #{sort,jdbcType=INTEGER}, + `type` = #{type,jdbcType=INTEGER}, + rate_value = #{rateValue,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=VARCHAR} + where rate_time_id = #{rateTimeId,jdbcType=BIGINT} + + \ No newline at end of file