优化数据大屏实时数据接口相应速度

This commit is contained in:
yuyang 2022-09-20 18:17:08 +08:00
parent 603edc89e2
commit 91192d83cd
7 changed files with 132 additions and 100 deletions

View File

@ -0,0 +1,44 @@
package com.xhpc.card.domain;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* @author yuyang
* @date 2022/9/20 15:20
*/
@Data
public class RealtimeOrder {
/**
* 用户类型
*/
private String userType;
/**
* 开始充电时间
*/
private String startChargingTime;
/**
* 充电时长
*/
private String chargingTime;
/**
* 已充电量
*/
private Double chargedElectric;
/**
* 充电金额
*/
private Double chargingSum;
/**
* 电流
*/
private Double electricCurrent;
/**
* 电压
*/
private Double voltage;
/**
* SOC
*/
private String soc;
}

View File

@ -25,54 +25,4 @@ public class RealtimeOrders {
@JsonProperty("data") @JsonProperty("data")
private List<RealtimeOrder> data; private List<RealtimeOrder> 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;
}
} }

View File

@ -1,5 +1,6 @@
package com.xhpc.card.mapper; package com.xhpc.card.mapper;
import com.xhpc.card.domain.RealtimeOrder;
import com.xhpc.card.pojo.XhpcRateTime; import com.xhpc.card.pojo.XhpcRateTime;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -28,6 +29,6 @@ public interface XhpcRateTimeMapper {
* @date 2022/3/17 14:46 * @date 2022/3/17 14:46
* @since version-1.0 * @since version-1.0
*/ */
List<Map<String, Object>> selectByTenantIdsAndCharingStationIds(@Param("tenantIdsStr") String tenantIdsStr, @Param("xhpcChargingStationList") ArrayList<Long> xhpcChargingStationList); List<RealtimeOrder> selectByTenantIdsAndCharingStationIds(@Param("tenantIdsStr") String tenantIdsStr, @Param("xhpcChargingStationList") ArrayList<Long> xhpcChargingStationList, @Param("chargingStationId") Long chargingStationId);
} }

View File

@ -1,14 +1,11 @@
package com.xhpc.card.service.impl; package com.xhpc.card.service.impl;
import com.xhpc.card.domain.*;
import com.xhpc.common.constant.ConstantClass; import com.xhpc.common.constant.ConstantClass;
import com.xhpc.common.core.domain.R; import com.xhpc.common.core.domain.R;
import com.xhpc.common.redis.service.RedisService; import com.xhpc.common.redis.service.RedisService;
import com.xhpc.common.util.MyDateUtil; import com.xhpc.common.util.MyDateUtil;
import com.xhpc.common.util.UserTypeUtil; import com.xhpc.common.util.UserTypeUtil;
import com.xhpc.card.domain.CoreParam;
import com.xhpc.card.domain.OrderRatio;
import com.xhpc.card.domain.OrderTrend;
import com.xhpc.card.domain.RealtimeOrders;
import com.xhpc.card.mapper.XhpcAppUserMapper; import com.xhpc.card.mapper.XhpcAppUserMapper;
import com.xhpc.card.mapper.XhpcChargingStationMapper; import com.xhpc.card.mapper.XhpcChargingStationMapper;
import com.xhpc.card.mapper.XhpcHistoryOrderMapper; import com.xhpc.card.mapper.XhpcHistoryOrderMapper;
@ -524,18 +521,25 @@ public class XhpcDataBigScreenServiceImpl implements XhpcDataBigScreenService {
String tenantIdsStr = null; String tenantIdsStr = null;
List<Map<String, Object>> xhpcChargingStationList = null; List<Map<String, Object>> xhpcChargingStationList = null;
List<RealtimeOrder> realtimeOrderList =new ArrayList<>();
RealtimeOrders realtimeOrders = new RealtimeOrders();
//judge care param function //judge care param function
switch (coreParam.getParamType()) { switch (coreParam.getParamType()) {
case 0: case 0:
tenantIdsStr = coreParam.getTenantIds(); tenantIdsStr = coreParam.getTenantIds();
if (!"".equals(tenantIdsStr) && tenantIdsStr != null) { if (!"".equals(tenantIdsStr) && tenantIdsStr != null) {
List<Map<String, Object>> realtimeOrderList = xhpcRateTimeMapper.selectByTenantIdsAndCharingStationIds(tenantIdsStr, null); realtimeOrderList = xhpcRateTimeMapper.selectByTenantIdsAndCharingStationIds(tenantIdsStr, null,null);
return getRealtimeOrders(realtimeOrderList);
} else { } else {
List<Map<String, Object>> realtimeOrderList = xhpcRateTimeMapper.selectByTenantIdsAndCharingStationIds(tenantIdsStr, null); realtimeOrderList = xhpcRateTimeMapper.selectByTenantIdsAndCharingStationIds(tenantIdsStr, null,null);
return getRealtimeOrders(realtimeOrderList);
} }
//query charging station infos of whole area realtimeOrders.setTotalItems(0L);
if (realtimeOrderList.size()==0) {
realtimeOrders.setData(new ArrayList<>());
return R.ok(realtimeOrders);
}
realtimeOrders.setData(realtimeOrderList);
realtimeOrders.setTotalItems((long) realtimeOrderList.size());
return R.ok(realtimeOrders);
case 1: case 1:
Integer areaCode = coreParam.getAreaCode(); Integer areaCode = coreParam.getAreaCode();
tenantIdsStr = coreParam.getTenantIds(); tenantIdsStr = coreParam.getTenantIds();
@ -549,30 +553,38 @@ public class XhpcDataBigScreenServiceImpl implements XhpcDataBigScreenService {
for (Map<String, Object> chargingStation : xhpcChargingStationList) { for (Map<String, Object> chargingStation : xhpcChargingStationList) {
chargingStationIdList.add((Long) chargingStation.get(ConstantClass.CHARGING_STATION_ID)); chargingStationIdList.add((Long) chargingStation.get(ConstantClass.CHARGING_STATION_ID));
} }
List<Map<String, Object>> realtimeOrderList = xhpcRateTimeMapper.selectByTenantIdsAndCharingStationIds(tenantIdsStr, chargingStationIdList); realtimeOrderList = xhpcRateTimeMapper.selectByTenantIdsAndCharingStationIds(tenantIdsStr, chargingStationIdList,null);
return getRealtimeOrders(realtimeOrderList);
} else { } else {
xhpcChargingStationList = xhpcChargingStationMapper.selectByTenantIdAndAreaCode(tenantIdsStr, areaCode,number); xhpcChargingStationList = xhpcChargingStationMapper.selectByTenantIdAndAreaCode(tenantIdsStr, areaCode,number);
ArrayList<Long> chargingStationIdList = new ArrayList<>(); ArrayList<Long> chargingStationIdList = new ArrayList<>();
for (Map<String, Object> chargingStation : xhpcChargingStationList) { for (Map<String, Object> chargingStation : xhpcChargingStationList) {
chargingStationIdList.add((Long) chargingStation.get(ConstantClass.CHARGING_STATION_ID)); chargingStationIdList.add((Long) chargingStation.get(ConstantClass.CHARGING_STATION_ID));
} }
List<Map<String, Object>> realtimeOrderList = xhpcRateTimeMapper.selectByTenantIdsAndCharingStationIds(tenantIdsStr, chargingStationIdList); realtimeOrderList = xhpcRateTimeMapper.selectByTenantIdsAndCharingStationIds(tenantIdsStr, chargingStationIdList,null);
return getRealtimeOrders(realtimeOrderList);
} }
realtimeOrders.setTotalItems(0L);
if (realtimeOrderList.size()==0) {
realtimeOrders.setData(new ArrayList<>());
return R.ok(realtimeOrders);
}
realtimeOrders.setData(realtimeOrderList);
realtimeOrders.setTotalItems((long) realtimeOrderList.size());
return R.ok(realtimeOrders);
case 2: case 2:
//query location info of special charging station of special tenant //query location info of special charging station of special tenant
tenantIdsStr = coreParam.getTenantIds(); tenantIdsStr = coreParam.getTenantIds();
if (!"".equals(tenantIdsStr) && tenantIdsStr != null) { if (!"".equals(tenantIdsStr) && tenantIdsStr != null) {
String chargingStationIdStr = coreParam.getChargingStationIds(); long chargingStationId = Long.parseLong(coreParam.getChargingStationIds());
long chargingStationId = Long.parseLong(chargingStationIdStr); realtimeOrderList = xhpcRateTimeMapper.selectByTenantIdsAndCharingStationIds(tenantIdsStr,null,chargingStationId);
xhpcChargingStationList = xhpcChargingStationMapper.selectByTenantIdAndChargingStationId(tenantIdsStr, chargingStationId); realtimeOrders.setTotalItems(0L);
ArrayList<Long> chargingStationIdList = new ArrayList<>(); if (realtimeOrderList.size()==0) {
for (Map<String, Object> chargingStation : xhpcChargingStationList) { realtimeOrders.setData(new ArrayList<>());
chargingStationIdList.add((Long) chargingStation.get(ConstantClass.CHARGING_STATION_ID)); return R.ok(realtimeOrders);
} }
List<Map<String, Object>> realtimeOrderList = xhpcRateTimeMapper.selectByTenantIdsAndCharingStationIds(tenantIdsStr, chargingStationIdList); realtimeOrders.setData(realtimeOrderList);
return getRealtimeOrders(realtimeOrderList); realtimeOrders.setTotalItems((long) realtimeOrderList.size());
return R.ok(realtimeOrders);
} else { } else {
return R.fail("传入的参数有误"); return R.fail("传入的参数有误");
} }
@ -716,25 +728,25 @@ public class XhpcDataBigScreenServiceImpl implements XhpcDataBigScreenService {
private R<RealtimeOrders> getRealtimeOrders(List<Map<String, Object>> realtimeOrderList) { private R<RealtimeOrders> getRealtimeOrders(List<Map<String, Object>> realtimeOrderList) {
//init wrapper class object,set default value //init wrapper class object,set default value
RealtimeOrders realtimeOrders = new RealtimeOrders(); RealtimeOrders realtimeOrders = new RealtimeOrders();
ArrayList<RealtimeOrders.RealtimeOrder> realtimeOrderWrapperList = new ArrayList<>(); // ArrayList<RealtimeOrders.RealtimeOrder> realtimeOrderWrapperList = new ArrayList<>();
realtimeOrders.setData(realtimeOrderWrapperList); // realtimeOrders.setData(realtimeOrderWrapperList);
realtimeOrders.setTotalItems(0L); // realtimeOrders.setTotalItems(0L);
if (realtimeOrderList.isEmpty()) { // if (realtimeOrderList.isEmpty()) {
return R.ok(realtimeOrders); // return R.ok(realtimeOrders);
} // }
realtimeOrders.setTotalItems((long) realtimeOrderList.size()); // realtimeOrders.setTotalItems((long) realtimeOrderList.size());
for (Map<String, Object> realtimeOrderMap : realtimeOrderList) { // for (Map<String, Object> realtimeOrderMap : realtimeOrderList) {
RealtimeOrders.RealtimeOrder realtimeOrder = new RealtimeOrders.RealtimeOrder(); // RealtimeOrders.RealtimeOrder realtimeOrder = new RealtimeOrders.RealtimeOrder();
realtimeOrder.setUserType((String) realtimeOrderMap.get("chargingMode")); // realtimeOrder.setUserType((String) realtimeOrderMap.get("chargingMode"));
realtimeOrder.setStartChargingTime((String) realtimeOrderMap.get("startTime")); // realtimeOrder.setStartChargingTime((String) realtimeOrderMap.get("startTime"));
realtimeOrder.setChargingTime((String) realtimeOrderMap.get("chargingTime")); // realtimeOrder.setChargingTime((String) realtimeOrderMap.get("chargingTime"));
realtimeOrder.setChargedElectric((Double) realtimeOrderMap.get("chargingDegree")); // realtimeOrder.setChargedElectric((Double) realtimeOrderMap.get("chargingDegree"));
realtimeOrder.setChargingSum((Double) realtimeOrderMap.get("amountCharged")); // realtimeOrder.setChargingSum((Double) realtimeOrderMap.get("amountCharged"));
realtimeOrder.setElectricCurrent((Double) realtimeOrderMap.get("electricCurrent")); // realtimeOrder.setElectricCurrent((Double) realtimeOrderMap.get("electricCurrent"));
realtimeOrder.setVoltage((Double) realtimeOrderMap.get("voltage")); // realtimeOrder.setVoltage((Double) realtimeOrderMap.get("voltage"));
realtimeOrder.setSoc((String) realtimeOrderMap.get("soc")); // realtimeOrder.setSoc((String) realtimeOrderMap.get("soc"));
realtimeOrderWrapperList.add(realtimeOrder); // realtimeOrderWrapperList.add(realtimeOrder);
} // }
return R.ok(realtimeOrders); return R.ok(realtimeOrders);
} }

View File

@ -33,11 +33,11 @@
from xhpc_rate_time from xhpc_rate_time
where rate_time_id = #{rateTimeId,jdbcType=BIGINT} where rate_time_id = #{rateTimeId,jdbcType=BIGINT}
</select> </select>
<select id="selectByTenantIdsAndCharingStationIds" resultType="Map"> <select id="selectByTenantIdsAndCharingStationIds" resultType="com.xhpc.card.domain.RealtimeOrder">
select select
ifnull(ROUND(ro.charging_degree,2),0) as chargingDegree, ifnull(ROUND(ro.charging_degree,2),0) as chargedElectric,
DATE_FORMAT(co.start_time,"%H:%i") as startTime, DATE_FORMAT(co.start_time,"%H:%i") as startChargingTime,
ifnull(ro.amount_charged,0) amountCharged, ifnull(ro.amount_charged,0) chargingSum,
ifnull(ro.electric_current,0) electricCurrent, ifnull(ro.electric_current,0) electricCurrent,
ro.real_time_order_id as realTimeOrderId, ro.real_time_order_id as realTimeOrderId,
ifnull(ro.voltage,0) as voltage, ifnull(ro.voltage,0) as voltage,
@ -54,8 +54,7 @@
"小桔用户" "小桔用户"
ELSE ELSE
"C端用户" "C端用户"
END chargingMode END userType
from xhpc_charge_order co
left join xhpc_internet_user as inu on inu.internet_user_id = co.user_id and co.source =1 left join xhpc_internet_user as inu on inu.internet_user_id = co.user_id and co.source =1
left join xhpc_app_user as apu on apu.app_user_id = co.user_id and co.source =0 left join xhpc_app_user as apu on apu.app_user_id = co.user_id and co.source =0
left join xhpc_community_personnel as cop on cop.community_personnel_id = co.user_id and co.source =2 left join xhpc_community_personnel as cop on cop.community_personnel_id = co.user_id and co.source =2
@ -74,8 +73,12 @@
#{chargingStationId} #{chargingStationId}
</foreach> </foreach>
</if> </if>
<if test="chargingStationId !=null">
and co.charging_station_id =#{chargingStationId}
</if>
order by co.create_time desc order by co.create_time desc
</select> </select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete delete
from xhpc_rate_time from xhpc_rate_time

View File

@ -1,7 +1,9 @@
package com.xhpc.order.service.impl; package com.xhpc.order.service.impl;
import com.xhpc.common.api.WorkOrderYuService;
import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.common.core.web.service.BaseService; import com.xhpc.common.core.web.service.BaseService;
import com.xhpc.common.redis.service.RedisService;
import com.xhpc.common.security.service.TokenService; import com.xhpc.common.security.service.TokenService;
import com.xhpc.order.domain.XhpcPileRegularInspect; import com.xhpc.order.domain.XhpcPileRegularInspect;
import com.xhpc.order.mapper.XhpcPileRegularInspectMapper; import com.xhpc.order.mapper.XhpcPileRegularInspectMapper;
@ -10,8 +12,6 @@ import com.xhpc.system.api.model.LoginUser;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -20,6 +20,11 @@ public class XhpcPileRegularInspectServiceImpl extends BaseService implements IX
@Resource @Resource
private TokenService tokenService; private TokenService tokenService;
@Resource
private RedisService redisService;
@Resource
private WorkOrderYuService workOrderService;
@Resource @Resource
private XhpcPileRegularInspectMapper xhpcPileRegularInspectMapper; private XhpcPileRegularInspectMapper xhpcPileRegularInspectMapper;
@ -131,6 +136,22 @@ public class XhpcPileRegularInspectServiceImpl extends BaseService implements IX
List<Map<String, Object>> list = xhpcPileRegularInspectMapper.verificationPileRepeat(); List<Map<String, Object>> list = xhpcPileRegularInspectMapper.verificationPileRepeat();
for (int i = 0; i <list.size() ; i++) { for (int i = 0; i <list.size() ; i++) {
Map<String, Object> map=list.get(i); Map<String, Object> map=list.get(i);
String serialNumber = map.get("serialNumber").toString();
String directNumber = map.get("directNumber").toString();
String communicationNumber = map.get("communicationNumber").toString();
Integer type =Integer.parseInt(map.get("type").toString());
Map<String, Object> cachePile = redisService.getCacheMap("pile:" + serialNumber);
//Long rateModelId = (Long) cachePile.get("rateModelId");
String firmwareVersion = cachePile.get("firmwareVersion").toString();
if(type==1){
if(!directNumber.equals(firmwareVersion)){
//添加一条工单
}
}else{
if(!communicationNumber.equals(firmwareVersion)){
//添加一条工单
}
}

View File

@ -130,7 +130,8 @@
xcp.charging_pile_id, xcp.charging_pile_id,
xcp.serial_number serialNumber, xcp.serial_number serialNumber,
xpe.direct_number directNumber, xpe.direct_number directNumber,
xpe.communication_number communicationNumber xpe.communication_number communicationNumber,
xcp.type as type
FROM FROM
xhpc_charging_pile xcp xhpc_charging_pile xcp
LEFT JOIN xhpc_pile_edition xpe on xpe.charging_station_id = xcp.charging_station_id LEFT JOIN xhpc_pile_edition xpe on xpe.charging_station_id = xcp.charging_station_id