dev #2

Merged
dashixiong merged 349 commits from dev into main 2026-02-11 01:55:46 +00:00
343 changed files with 50164 additions and 1113 deletions
Showing only changes of commit 3735c4f4d8 - Show all commits

View File

@ -118,6 +118,17 @@ public class EmsStatisticalReportController extends BaseController
return getDataTable(dataList); return getDataTable(dataList);
} }
/**
* 概率统计-电表收益报表
*/
@GetMapping("/getAmmeterRevenueData")
public TableDataInfo getAmmeterRevenueData(StatisAmmeterDateRequest requestVo)
{
startPage();
List<AmmeterRevenueStatisListVo> dataList = ieEmsStatsReportService.getAmmeterRevenueDataResult(requestVo);
return getDataTable(dataList);
}
/** /**
* 概率统计-功率曲线 * 概率统计-功率曲线
*/ */

View File

@ -1,6 +1,9 @@
package com.xzzn.web.controller.ems; package com.xzzn.web.controller.ems;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.xzzn.common.constant.RedisKeyConstants;
import com.xzzn.common.core.redis.RedisCache;
import com.xzzn.common.enums.TopicHandleType;
import com.xzzn.common.utils.StringUtils; import com.xzzn.common.utils.StringUtils;
import com.xzzn.ems.domain.EmsMqttTopicConfig; import com.xzzn.ems.domain.EmsMqttTopicConfig;
import com.xzzn.ems.domain.MqttSyncLog; import com.xzzn.ems.domain.MqttSyncLog;
@ -39,6 +42,9 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
@Autowired @Autowired
private IDDSDataProcessService dDSDataProcessService; private IDDSDataProcessService dDSDataProcessService;
@Autowired
private IDeviceDataProcessService deviceDataProcessService;
@Autowired @Autowired
private IFXXAlarmDataProcessService fXXAlarmDataProcessService; private IFXXAlarmDataProcessService fXXAlarmDataProcessService;
@Autowired @Autowired
@ -48,6 +54,9 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
@Autowired @Autowired
private IMqttSyncLogService iMqttSyncLogService; private IMqttSyncLogService iMqttSyncLogService;
@Autowired
private RedisCache redisCache;
@Autowired @Autowired
public MqttMessageController(MqttLifecycleManager mqttLifecycleManager) { public MqttMessageController(MqttLifecycleManager mqttLifecycleManager) {
this.mqttLifecycleManager = mqttLifecycleManager; this.mqttLifecycleManager = mqttLifecycleManager;
@ -75,7 +84,7 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
qos = 1; qos = 1;
} }
IMqttMessageListener listener = getMqttListenerByTopic(topic, topicConfig.getId()); IMqttMessageListener listener = getMqttListenerByTopic(topic, topicConfig.getHandleType());
subscribe(topic, qos, listener); subscribe(topic, qos, listener);
} }
// 订阅奉贤系统状态主题 // 订阅奉贤系统状态主题
@ -93,23 +102,28 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
} }
private IMqttMessageListener getMqttListenerByTopic(String topic, Long id) { private IMqttMessageListener getMqttListenerByTopic(String topic, String handleType) {
if (topic.contains("ALARM_UP")) { TopicHandleType topicHandleType = TopicHandleType.getEnumByCode(handleType);
return this::handleAlarmData; switch (topicHandleType) {
} else if (topic.endsWith("_01")) { case DEVICE:
return this::handleSystemStatus; return this::handleDeviceData;
} else if (topic.contains("STRATEGY")) { case DEVICE_ALARM:
return this::handleStrategyData; return this::handleAlarmData;
} else if (topic.equals("FAULT_PROTECTION_PLAN_UP")) { case STRATEGY:
return this::handleFaultProtPlanData; if (topic.equals("FAULT_PROTECTION_PLAN_UP")) {
} else if (topic.equals("FAULT_ALARM_RECORD_UP")) { return this::handleFaultProtPlanData;
return this::handleFaultAlarmData; } else if (topic.equals("FAULT_ALARM_RECORD_UP")) {
} else if (topic.equals("FAULT_PLAN_ISSUE_UP")) { return this::handleFaultAlarmData;
return this::handleFaultPlanIssueData; } else if (topic.equals("FAULT_PLAN_ISSUE_UP")) {
} else if (topic.equals("DEVICE_CHANGE_LOG_UP")) { return this::handleFaultPlanIssueData;
return this::handleDeviceChangeLogData; } else if (topic.equals("DEVICE_CHANGE_LOG_UP")) {
} else { return this::handleDeviceChangeLogData;
return this::handleDeviceData; } else {
return this::handleStrategyData;
}
default:
log.warn("Unknown handle type: " + handleType + ", using default handler");
return this::handleSystemStatus;
} }
} }
@ -129,18 +143,19 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
// 处理设备数据 // 处理设备数据
private void handleDeviceData(String topic, MqttMessage message) { private void handleDeviceData(String topic, MqttMessage message) {
String payload = new String(message.getPayload()); String payload = new String(message.getPayload());
System.out.println("[DEVICE] data: " + payload); log.info("[DEVICE] data: " + payload);
try { try {
// 业务处理逻辑 // 业务处理逻辑
if (topic.startsWith("021_DDS")) { // if (topic.startsWith("021_DDS")) {
dDSDataProcessService.handleDdsData(payload); // dDSDataProcessService.handleDdsData(payload);
} else if (topic.startsWith("021_FXX")) { // } else if (topic.startsWith("021_FXX")) {
fXXDataProcessService.handleFxData(payload); // fXXDataProcessService.handleFxData(payload);
} // }
deviceDataProcessService.handleDeviceData(payload, getSiteIdByTopic(topic));
emsMqttMessageService.insertMqttOriginalMessage(topic,payload); emsMqttMessageService.insertMqttOriginalMessage(topic, payload);
} catch (Exception e) { } catch (Exception e) {
log.error("Failed to process system status message: " + e.getMessage(), e); log.error("Failed to process device data message: " + e.getMessage(), e);
} }
} }
@ -151,17 +166,29 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
System.out.println("[DEVICE] data: " + payload); System.out.println("[DEVICE] data: " + payload);
try { try {
// 业务处理逻辑 // 业务处理逻辑
if (topic.startsWith("021_FXX")) { // if (topic.startsWith("021_FXX")) {
fXXAlarmDataProcessService.handleFxAlarmData(payload); // fXXAlarmDataProcessService.handleFxAlarmData(payload);
} // }
deviceDataProcessService.handleAlarmData(payload, getSiteIdByTopic(topic));
emsMqttMessageService.insertMqttOriginalMessage(topic,payload); emsMqttMessageService.insertMqttOriginalMessage(topic, payload);
} catch (Exception e) { } catch (Exception e) {
log.error("Failed to process alarm data message: " + e.getMessage(), e); log.error("Failed to process device alarm data message: " + e.getMessage(), e);
} }
} }
private String getSiteIdByTopic(String topic) {
String siteId = redisCache.getCacheObject(RedisKeyConstants.SITE_ID + topic);
if (StringUtils.isEmpty(siteId)) {
EmsMqttTopicConfig topicConfig = emsMqttTopicConfigMapper.selectOneByTopic(topic);
siteId = topicConfig.getSiteId();
redisCache.setCacheObject(RedisKeyConstants.SITE_ID + topic, siteId);
}
log.info("当前处理数据站点:" + siteId + ",topic: " + topic);
return siteId;
}
// 处理运行策略数据:云端-本地 // 处理运行策略数据:云端-本地
private void handleStrategyData(String topic, MqttMessage message) { private void handleStrategyData(String topic, MqttMessage message) {
String payload = new String(message.getPayload()); String payload = new String(message.getPayload());

View File

@ -67,6 +67,11 @@ public class RedisKeyConstants
*/ */
public static final String POINT_MATCH = "POINT_MATCH_"; public static final String POINT_MATCH = "POINT_MATCH_";
/**
* topic对应站点ID redis key
*/
public static final String SITE_ID = "SITE_ID_";
/** /**
* 存放单个设备同步过来的原始数据-最晚一次数据 * 存放单个设备同步过来的原始数据-最晚一次数据
*/ */

View File

@ -0,0 +1,45 @@
package com.xzzn.common.enums;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* 设备点位类型
*/
public enum PointType
{
YES(1, ""),
NO(0, "");
private final Integer code;
private final String info;
private static final Map<Integer, String> CODE_NAME_MAP = new HashMap<>(PointType.values().length);
static {
Arrays.stream(PointType.values()).forEach(record -> {
CODE_NAME_MAP.put(record.code, record.info);
});
}
PointType(Integer code, String info)
{
this.code = code;
this.info = info;
}
public String getInfoByCode(Integer code) {
return CODE_NAME_MAP.get(code);
}
public Integer getCode()
{
return code;
}
public String getInfo()
{
return info;
}
}

View File

@ -0,0 +1,57 @@
package com.xzzn.common.enums;
/**
*
*/
public enum SiteDevice
{
/**
* 电池堆
*/
BMSD,
/**
* 电池簇
*/
BMSC,
/**
* PCS设备
*/
PCS,
/**
* 电表-总表
*/
LOAD,
/**
* 电表-光伏电表
*/
METEGF,
/**
* 电表-储能电表
*/
METE,
/**
* 电表-储能电表
*/
METE0,
/**
* 动环
*/
donghuan,
/**
* 动环
*/
DH,
/**
* 中水冷却
*/
ZSLQ
}

View File

@ -0,0 +1,39 @@
package com.xzzn.common.enums;
/**
* MQTT主题处理类型未知类型
*/
public enum TopicHandleType {
DEVICE("DEVICE", "设备数据"),
DEVICE_ALARM("DEVICE_ALARM", "设备告警数据"),
STRATEGY("STRATEGY", "策略数据"),
SYSTEM("SYSTEM", "系统数据"),
;
private final String code;
private final String info;
TopicHandleType(String code, String info) {
this.code = code;
this.info = info;
}
public String getName() {
return code;
}
public String getInfo() {
return info;
}
// 根据名称查找枚举
public static TopicHandleType getEnumByCode(String code) {
for (TopicHandleType type : values()) {
if (type.getName().equals(code)) {
return type;
}
}
// 默认返回SYSTEM
return SYSTEM;
}
}

View File

@ -33,8 +33,8 @@ public class EmsMqttTopicConfig extends BaseEntity
@Excel(name = "对应方法") @Excel(name = "对应方法")
private String handleMethod; private String handleMethod;
/** 处理器类型:(device=设备数据system=系统状态,alarm=告警数据等) */ /** 处理器类型:(DEVICE=设备数据SYSTEM=系统状态,ALARM=告警数据等) */
@Excel(name = "处理器类型:(device=设备数据system=系统状态,alarm=告警数据等)") @Excel(name = "处理器类型:(DEVICE=设备数据SYSTEM=系统状态,ALARM=告警数据等)")
private String handleType; private String handleType;
/** 站点id */ /** 站点id */

View File

@ -70,9 +70,9 @@ public class EmsPointMatch extends BaseEntity
@Excel(name = "点位是否需要区分多设备0-不需要 1-需要") @Excel(name = "点位是否需要区分多设备0-不需要 1-需要")
private Long needDiffDeviceId; private Long needDiffDeviceId;
/** 设备唯一标识符 */ /** 是否告警点位 */
@Excel(name = "设备唯一标识符") @Excel(name = "是否告警点位", readConverterExp = "0=否,1=是")
private String deviceId; private Integer isAlarm;
public void setId(Long id) public void setId(Long id)
{ {
@ -212,12 +212,12 @@ public class EmsPointMatch extends BaseEntity
return needDiffDeviceId; return needDiffDeviceId;
} }
public String getDeviceId() { public Integer getIsAlarm() {
return deviceId; return isAlarm;
} }
public void setDeviceId(String deviceId) { public void setIsAlarm(Integer isAlarm) {
this.deviceId = deviceId; this.isAlarm = isAlarm;
} }
@Override @Override
@ -242,7 +242,7 @@ public class EmsPointMatch extends BaseEntity
.append("updateBy", getUpdateBy()) .append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime()) .append("updateTime", getUpdateTime())
.append("remark", getRemark()) .append("remark", getRemark())
.append("deviceId", getDeviceId()) .append("isAlarm", getIsAlarm())
.toString(); .toString();
} }
} }

View File

@ -0,0 +1,131 @@
package com.xzzn.ems.domain.vo;
import java.math.BigDecimal;
/**
* 电表收益数据
*/
public class AmmeterRevenueStatisListVo {
/** 类别 */
private String dataTime;
/** 组合有功-总 */
private BigDecimal activeTotalPrice = BigDecimal.ZERO;
/** 组合有功-尖 */
private BigDecimal activePeakPrice = BigDecimal.ZERO;
/** 组合有功-峰 */
private BigDecimal activeHighPrice = BigDecimal.ZERO;
/** 组合有功-平 */
private BigDecimal activeFlatPrice = BigDecimal.ZERO;
/** 组合有功-谷 */
private BigDecimal activeValleyPrice = BigDecimal.ZERO;
/** 组合无功-总 */
private BigDecimal reActiveTotalPrice = BigDecimal.ZERO;
/** 组合无功-尖 */
private BigDecimal reActivePeakPrice = BigDecimal.ZERO;
/** 组合无功-峰 */
private BigDecimal reActiveHighPrice = BigDecimal.ZERO;
/** 组合无功-平 */
private BigDecimal reActiveFlatPrice = BigDecimal.ZERO;
/** 组合无功-谷 */
private BigDecimal reActiveValleyPrice = BigDecimal.ZERO;
public String getDataTime() {
return dataTime;
}
public void setDataTime(String dataTime) {
this.dataTime = dataTime;
}
public BigDecimal getActiveTotalPrice() {
return activeTotalPrice;
}
public void setActiveTotalPrice(BigDecimal activeTotalPrice) {
this.activeTotalPrice = activeTotalPrice;
}
public BigDecimal getActivePeakPrice() {
return activePeakPrice;
}
public void setActivePeakPrice(BigDecimal activePeakPrice) {
this.activePeakPrice = activePeakPrice;
}
public BigDecimal getActiveHighPrice() {
return activeHighPrice;
}
public void setActiveHighPrice(BigDecimal activeHighPrice) {
this.activeHighPrice = activeHighPrice;
}
public BigDecimal getActiveFlatPrice() {
return activeFlatPrice;
}
public void setActiveFlatPrice(BigDecimal activeFlatPrice) {
this.activeFlatPrice = activeFlatPrice;
}
public BigDecimal getActiveValleyPrice() {
return activeValleyPrice;
}
public void setActiveValleyPrice(BigDecimal activeValleyPrice) {
this.activeValleyPrice = activeValleyPrice;
}
public BigDecimal getReActiveTotalPrice() {
return reActiveTotalPrice;
}
public void setReActiveTotalPrice(BigDecimal reActiveTotalPrice) {
this.reActiveTotalPrice = reActiveTotalPrice;
}
public BigDecimal getReActivePeakPrice() {
return reActivePeakPrice;
}
public void setReActivePeakPrice(BigDecimal reActivePeakPrice) {
this.reActivePeakPrice = reActivePeakPrice;
}
public BigDecimal getReActiveHighPrice() {
return reActiveHighPrice;
}
public void setReActiveHighPrice(BigDecimal reActiveHighPrice) {
this.reActiveHighPrice = reActiveHighPrice;
}
public BigDecimal getReActiveFlatPrice() {
return reActiveFlatPrice;
}
public void setReActiveFlatPrice(BigDecimal reActiveFlatPrice) {
this.reActiveFlatPrice = reActiveFlatPrice;
}
public BigDecimal getReActiveValleyPrice() {
return reActiveValleyPrice;
}
public void setReActiveValleyPrice(BigDecimal reActiveValleyPrice) {
this.reActiveValleyPrice = reActiveValleyPrice;
}
}

View File

@ -25,6 +25,10 @@ public class DevicePointMatchVo implements Serializable {
/** 数据单位 */ /** 数据单位 */
@Excel(name = "数据单位") @Excel(name = "数据单位")
private String dataUnit; private String dataUnit;
/** 是否告警点位 */
@Excel(name = "是否告警点位", readConverterExp = "0=否,1=是")
private String isAlarm;
// //
// /** 数据点位来源设备 */ // /** 数据点位来源设备 */
// @Excel(name = "数据点位来源设备") // @Excel(name = "数据点位来源设备")
@ -78,6 +82,15 @@ public class DevicePointMatchVo implements Serializable {
// this.dataDevice = dataDevice; // this.dataDevice = dataDevice;
// } // }
public String getIsAlarm() {
return isAlarm;
}
public void setIsAlarm(String isAlarm) {
this.isAlarm = isAlarm;
}
public String getIpAddress() { public String getIpAddress() {
return ipAddress; return ipAddress;
} }

View File

@ -17,9 +17,6 @@ public class ImportPointDataRequest {
/** 站点id */ /** 站点id */
@NotBlank(message = "站点ID不能为空") @NotBlank(message = "站点ID不能为空")
private String siteId; private String siteId;
/** 设备id */
@NotBlank(message = "设备ID不能为空")
private String deviceId;
/** 设备类型 */ /** 设备类型 */
@NotBlank(message = "设备类型不能为空") @NotBlank(message = "设备类型不能为空")
private String deviceCategory; private String deviceCategory;
@ -35,14 +32,6 @@ public class ImportPointDataRequest {
this.siteId = siteId; this.siteId = siteId;
} }
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getDeviceCategory() { public String getDeviceCategory() {
return deviceCategory; return deviceCategory;
} }

View File

@ -35,6 +35,16 @@ public class PointDataRequest {
private String ipAddress; private String ipAddress;
/** modbus端口 */ /** modbus端口 */
private Integer ipPort; private Integer ipPort;
/** 是否告警点位 */
private Integer isAlarm;
public Integer getIsAlarm() {
return isAlarm;
}
public void setIsAlarm(Integer isAlarm) {
this.isAlarm = isAlarm;
}
public String getIpAddress() { public String getIpAddress() {
return ipAddress; return ipAddress;

View File

@ -43,7 +43,7 @@ public class PointQueryResponse
private String dataUnit; private String dataUnit;
/** 地址 */ /** 地址 */
@Excel(name = "地址") @Excel(name = "寄存器地址")
private String ipAddress; private String ipAddress;
/** 端口 */ /** 端口 */

View File

@ -5,10 +5,14 @@ import com.xzzn.ems.domain.EmsBatteryCluster;
import com.xzzn.ems.domain.EmsBatteryData; import com.xzzn.ems.domain.EmsBatteryData;
import com.xzzn.ems.domain.EmsBatteryGroup; import com.xzzn.ems.domain.EmsBatteryGroup;
import com.xzzn.ems.domain.EmsBatteryStack; import com.xzzn.ems.domain.EmsBatteryStack;
import com.xzzn.ems.domain.EmsClusterAlarmData;
import com.xzzn.ems.domain.EmsCoolingAlarmData;
import com.xzzn.ems.domain.EmsCoolingData; import com.xzzn.ems.domain.EmsCoolingData;
import com.xzzn.ems.domain.EmsDhData; import com.xzzn.ems.domain.EmsDhData;
import com.xzzn.ems.domain.EmsPcsAlarmData;
import com.xzzn.ems.domain.EmsPcsBranchData; import com.xzzn.ems.domain.EmsPcsBranchData;
import com.xzzn.ems.domain.EmsPcsData; import com.xzzn.ems.domain.EmsPcsData;
import com.xzzn.ems.domain.EmsStackAlarmData;
import com.xzzn.ems.domain.EmsXfData; import com.xzzn.ems.domain.EmsXfData;
import java.util.HashMap; import java.util.HashMap;
@ -28,7 +32,14 @@ public enum DeviceMatchTable
COOLING("COOLING", "ems_cooling_data", EmsCoolingData.class), COOLING("COOLING", "ems_cooling_data", EmsCoolingData.class),
DH("DH", "ems_dh_data", EmsDhData.class), DH("DH", "ems_dh_data", EmsDhData.class),
XF("XF", "ems_xf_data", EmsXfData.class), XF("XF", "ems_xf_data", EmsXfData.class),
BATTERY_GROUP("BATTERY_GROUP", "ems_battery_group", EmsBatteryGroup.class); BATTERY_GROUP("BATTERY_GROUP", "ems_battery_group", EmsBatteryGroup.class),
/** 告警点位 */
COOLING_ALARM("COOLING_ALARM", "ems_cooling_alarm_data", EmsCoolingAlarmData.class),
STACK_ALARM("STACK_ALARM", "ems_stack_alarm_data", EmsStackAlarmData.class),
CLUSTER_ALARM("CLUSTER_ALARM", "ems_cluster_alarm_data", EmsClusterAlarmData.class),
PCS_ALARM("PCS_ALARM", "ems_pcs_alarm_data", EmsPcsAlarmData.class),
;
private final String code; private final String code;
private final String matchTable; private final String matchTable;
@ -80,4 +91,8 @@ public enum DeviceMatchTable
return TABLE_TO_CLASS_MAP.get(matchTable); // 从缓存中直接获取,效率高 return TABLE_TO_CLASS_MAP.get(matchTable); // 从缓存中直接获取,效率高
} }
public static String getAlarmMatchTableByCode(String code) {
return DEVICE_MATCH_TABLE_MAP.get(code + "_ALARM"); // 从缓存中直接获取,效率高
}
} }

View File

@ -76,4 +76,8 @@ public interface EmsEnergyPriceConfigMapper
// 获取所有有效站点的电价配置 // 获取所有有效站点的电价配置
public List<EmsEnergyPriceConfig> getAllSitePriceConfig( @Param("currentYear")int currentYear, public List<EmsEnergyPriceConfig> getAllSitePriceConfig( @Param("currentYear")int currentYear,
@Param("currentMonth")int currentMonth); @Param("currentMonth")int currentMonth);
// 查询指定时间范围的电价配置列表
public List<EmsEnergyPriceConfig> getConfigListByTimeFrame(@Param("siteId")String siteId,
@Param("startTime")String startTime,
@Param("endTime")String endTime);
} }

View File

@ -61,4 +61,6 @@ public interface EmsMqttTopicConfigMapper
// 判断topic是否存在 // 判断topic是否存在
public String checkTopicIsExist(String strategyTopic); public String checkTopicIsExist(String strategyTopic);
EmsMqttTopicConfig selectOneByTopic(String topic);
} }

View File

@ -127,7 +127,8 @@ public interface EmsPointMatchMapper
@Param("pointName")String pointName, @Param("pointName")String pointName,
@Param("dataPoint")String dataPoint, @Param("dataPoint")String dataPoint,
@Param("ipAddress")String ipAddress, @Param("ipAddress")String ipAddress,
@Param("ipPort")Integer ipPort); @Param("ipPort")Integer ipPort,
@Param("isAlarm")Integer isAlarm);
// 单个站点单个设备点位查询-电池簇使用 // 单个站点单个设备点位查询-电池簇使用
public List<PointQueryResponse> getClusterDevicePoints(@Param("siteId")String siteId, public List<PointQueryResponse> getClusterDevicePoints(@Param("siteId")String siteId,
@Param("deviceId")String deviceId, @Param("deviceId")String deviceId,
@ -136,12 +137,13 @@ public interface EmsPointMatchMapper
@Param("pointName")String pointName, @Param("pointName")String pointName,
@Param("dataPoint")String dataPoint, @Param("dataPoint")String dataPoint,
@Param("ipAddress")String ipAddress, @Param("ipAddress")String ipAddress,
@Param("ipPort")Integer ipPort); @Param("ipPort")Integer ipPort,
@Param("isAlarm")Integer isAlarm);
// 根据站点,设备类别,点位,获取唯一数据 // 根据站点,设备类别,点位,获取唯一数据
public EmsPointMatch getUniquePoint(@Param("siteId")String siteId, @Param("deviceCategory")String deviceCategory, @Param("dataPoint")String dataPoint); public EmsPointMatch getUniquePoint(@Param("siteId")String siteId, @Param("deviceCategory")String deviceCategory, @Param("dataPoint")String dataPoint);
EmsPointMatch getOnePointMatch(@Param("siteId") String siteId, @Param("deviceId") String deviceId, @Param("deviceCategory") String deviceCategory, @Param("dataPoint") String dataPoint); EmsPointMatch getOnePointMatch(@Param("siteId") String siteId, @Param("deviceCategory") String deviceCategory, @Param("dataPoint") String dataPoint);
List<EmsPointMatch> getDevicePointMatchList(@Param("siteId") String siteId, @Param("deviceId") String deviceId, @Param("deviceCategory") String deviceCategory); List<EmsPointMatch> getDevicePointMatchList(@Param("siteId") String siteId, @Param("deviceCategory") String deviceCategory);
} }

View File

@ -0,0 +1,8 @@
package com.xzzn.ems.service;
public interface IDeviceDataProcessService {
public void handleDeviceData(String message, String siteId);
public void handleAlarmData(String message, String siteId);
}

View File

@ -26,6 +26,8 @@ public interface IEmsStatsReportService
public List<AmmeterStatisListVo> getAmmeterDataResult(StatisAmmeterDateRequest requestVo); public List<AmmeterStatisListVo> getAmmeterDataResult(StatisAmmeterDateRequest requestVo);
List<AmmeterRevenueStatisListVo> getAmmeterRevenueDataResult(StatisAmmeterDateRequest requestVo);
public List<PowerStatisListVo> getPowerDataList(DateSearchRequest requestVo); public List<PowerStatisListVo> getPowerDataList(DateSearchRequest requestVo);
public List<BatteryDataStatsListVo> getSingleBatteryData(DateSearchRequest requestVo); public List<BatteryDataStatsListVo> getSingleBatteryData(DateSearchRequest requestVo);

View File

@ -6,6 +6,7 @@ import com.alibaba.fastjson2.TypeReference;
import com.xzzn.common.constant.RedisKeyConstants; import com.xzzn.common.constant.RedisKeyConstants;
import com.xzzn.common.core.redis.RedisCache; import com.xzzn.common.core.redis.RedisCache;
import com.xzzn.common.enums.DeviceCategory; import com.xzzn.common.enums.DeviceCategory;
import com.xzzn.common.enums.PointType;
import com.xzzn.common.enums.SiteEnum; import com.xzzn.common.enums.SiteEnum;
import com.xzzn.common.utils.DateUtils; import com.xzzn.common.utils.DateUtils;
import com.xzzn.common.utils.StringUtils; import com.xzzn.common.utils.StringUtils;
@ -142,15 +143,16 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService
String parentDeviceId = request.getParentId(); String parentDeviceId = request.getParentId();
String ipAddress = request.getIpAddress(); String ipAddress = request.getIpAddress();
Integer ipPort = request.getIpPort(); Integer ipPort = request.getIpPort();
Integer isAlarm = request.getIsAlarm() == null ? PointType.YES.getCode() : request.getIsAlarm();
// 电动所的电池簇特殊处理-来源pcs+bmsd // 电动所的电池簇特殊处理-来源pcs+bmsd
if (siteId.equals(DDS_SITE_ID) && DeviceCategory.CLUSTER.getCode().equals(deviceCategory)) { if (siteId.equals(DDS_SITE_ID) && DeviceCategory.CLUSTER.getCode().equals(deviceCategory)) {
response = specialDealWithDDSCluster(siteId,deviceId,deviceCategory,dataPointName,dataPoint,ipAddress,ipPort); response = specialDealWithDDSCluster(siteId,deviceId,deviceCategory,dataPointName,dataPoint,ipAddress,ipPort,isAlarm);
} else if (DeviceCategory.BATTERY.getCode().equals(deviceCategory)) { } else if (DeviceCategory.BATTERY.getCode().equals(deviceCategory)) {
response = specialDealWithBattery(siteId,deviceId,deviceCategory, response = specialDealWithBattery(siteId,deviceId,deviceCategory,
dataPointName,dataPoint,parentDeviceId,ipAddress,ipPort); dataPointName,dataPoint,parentDeviceId,ipAddress,ipPort,isAlarm);
} else { } else {
response = emsPointMatchMapper.getSingleSiteDevicePoints( response = emsPointMatchMapper.getSingleSiteDevicePoints(
siteId,deviceCategory,dataPointName,dataPoint,ipAddress,ipPort); siteId,deviceCategory,dataPointName,dataPoint,ipAddress,ipPort,isAlarm);
// 从redis取最新数据 // 从redis取最新数据
JSONObject mqttJson = redisCache.getCacheObject(RedisKeyConstants.ORIGINAL_MQTT_DATA + siteId + "_" + deviceId); JSONObject mqttJson = redisCache.getCacheObject(RedisKeyConstants.ORIGINAL_MQTT_DATA + siteId + "_" + deviceId);
if(mqttJson == null){ if(mqttJson == null){
@ -235,9 +237,10 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService
} }
private List<PointQueryResponse> specialDealWithBattery(String siteId, String deviceId, String deviceCategory, private List<PointQueryResponse> specialDealWithBattery(String siteId, String deviceId, String deviceCategory,
String dataPointName, String dataPoint, String parentDeviceId, String ipAddress, Integer ipPort) { String dataPointName, String dataPoint, String parentDeviceId,
String ipAddress, Integer ipPort, Integer isAlarm) {
List<PointQueryResponse> response = emsPointMatchMapper.getSingleSiteDevicePoints(siteId,deviceCategory, List<PointQueryResponse> response = emsPointMatchMapper.getSingleSiteDevicePoints(siteId,deviceCategory,
dataPointName,dataPoint,ipAddress,ipPort); dataPointName,dataPoint,ipAddress,ipPort,isAlarm);
// 获取redis同步最新数据 // 获取redis同步最新数据
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
@ -316,12 +319,13 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService
// 对于dds的电池簇点位最新数据获取特殊处理 // 对于dds的电池簇点位最新数据获取特殊处理
private List<PointQueryResponse> specialDealWithDDSCluster(String siteId, String deviceId, String deviceCategory, private List<PointQueryResponse> specialDealWithDDSCluster(String siteId, String deviceId, String deviceCategory,
String dataPointName, String dataPoint, String ipAddress, Integer ipPort) { String dataPointName, String dataPoint, String ipAddress,
Integer ipPort, Integer isAlarm) {
// 替换为对应的父类id // 替换为对应的父类id
String bmsdDeviceId = deviceId.replace("BMSC","BMSD"); String bmsdDeviceId = deviceId.replace("BMSC","BMSD");
List<PointQueryResponse> response = emsPointMatchMapper List<PointQueryResponse> response = emsPointMatchMapper
.getClusterDevicePoints(siteId,deviceId,bmsdDeviceId,deviceCategory,dataPointName,dataPoint,ipAddress,ipPort); .getClusterDevicePoints(siteId,deviceId,bmsdDeviceId,deviceCategory,dataPointName,dataPoint,ipAddress,ipPort,isAlarm);
JSONObject mergedData = new JSONObject(); JSONObject mergedData = new JSONObject();

View File

@ -2,16 +2,22 @@ package com.xzzn.ems.service.impl;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.xzzn.common.constant.RedisKeyConstants; import com.xzzn.common.constant.RedisKeyConstants;
import com.xzzn.common.core.redis.RedisCache; import com.xzzn.common.core.redis.RedisCache;
import com.xzzn.common.enums.PointType;
import com.xzzn.common.exception.ServiceException; import com.xzzn.common.exception.ServiceException;
import com.xzzn.common.utils.StringUtils; import com.xzzn.common.utils.StringUtils;
import com.xzzn.common.utils.bean.BeanValidators; import com.xzzn.common.utils.bean.BeanValidators;
import org.apache.commons.compress.utils.Lists;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -140,7 +146,6 @@ public class EmsPointMatchServiceImpl implements IEmsPointMatchService
} }
String siteId = request.getSiteId(); String siteId = request.getSiteId();
String deviceId = request.getDeviceId();
String deviceCategory = request.getDeviceCategory(); String deviceCategory = request.getDeviceCategory();
List<DevicePointMatchVo> errorList = new ArrayList<>(); List<DevicePointMatchVo> errorList = new ArrayList<>();
for (DevicePointMatchVo pointMatch : pointMatchList) { for (DevicePointMatchVo pointMatch : pointMatchList) {
@ -152,17 +157,22 @@ public class EmsPointMatchServiceImpl implements IEmsPointMatchService
EmsPointMatch savePoint = new EmsPointMatch(); EmsPointMatch savePoint = new EmsPointMatch();
BeanUtils.copyProperties(pointMatch, savePoint); BeanUtils.copyProperties(pointMatch, savePoint);
savePoint.setSiteId(siteId); savePoint.setSiteId(siteId);
savePoint.setDeviceId(deviceId);
savePoint.setDeviceCategory(deviceCategory); savePoint.setDeviceCategory(deviceCategory);
savePoint.setMatchTable(DeviceMatchTable.getMatchTableByCode(deviceCategory)); if (StringUtils.isNotBlank(pointMatch.getIsAlarm()) && String.valueOf(PointType.YES.getCode()).equals(pointMatch.getIsAlarm())) {
savePoint.setMatchTable(DeviceMatchTable.getAlarmMatchTableByCode(deviceCategory));
savePoint.setIsAlarm(PointType.YES.getCode());
} else {
savePoint.setMatchTable(DeviceMatchTable.getMatchTableByCode(deviceCategory));
}
savePoint.setPointName(DevicePointMatchDataProcessor.getFieldAnnotation(DeviceMatchTable.getClassByTable(savePoint.getMatchTable()), StringUtils.toCamelCase(savePoint.getMatchField()))); savePoint.setPointName(DevicePointMatchDataProcessor.getFieldAnnotation(DeviceMatchTable.getClassByTable(savePoint.getMatchTable()), StringUtils.toCamelCase(savePoint.getMatchField())));
savePoint.setCreateBy(operName); savePoint.setCreateBy(operName);
savePoint.setUpdateBy(operName); savePoint.setUpdateBy(operName);
// 验证点位是否存在 // 验证点位是否存在
EmsPointMatch dbPoint = emsPointMatchMapper.getOnePointMatch(siteId, deviceId, deviceCategory, pointMatch.getDataPoint()); EmsPointMatch dbPoint = emsPointMatchMapper.getOnePointMatch(siteId, deviceCategory, pointMatch.getDataPoint());
if (Objects.isNull(dbPoint)) { if (Objects.isNull(dbPoint)) {
emsPointMatchMapper.insertEmsPointMatch(savePoint); emsPointMatchMapper.insertEmsPointMatch(savePoint);
} else { } else {
savePoint.setId(dbPoint.getId());
emsPointMatchMapper.updateEmsPointMatch(savePoint); emsPointMatchMapper.updateEmsPointMatch(savePoint);
} }
} catch (Exception e) { } catch (Exception e) {
@ -171,7 +181,7 @@ public class EmsPointMatchServiceImpl implements IEmsPointMatchService
} }
} }
// 同步到Redis // 同步到Redis
syncToRedis(siteId, deviceId, deviceCategory); syncToRedis(siteId, deviceCategory);
return errorList; return errorList;
} }
@ -197,10 +207,10 @@ public class EmsPointMatchServiceImpl implements IEmsPointMatchService
return false; return false;
} }
private void syncToRedis(String siteId, String deviceId, String deviceCategory) { private void syncToRedis(String siteId, String deviceCategory) {
// 同步到Redis // 同步到Redis
String pointMatchKey = RedisKeyConstants.POINT_MATCH + deviceCategory + "_" + siteId + "_" + deviceId; String pointMatchKey = DevicePointMatchDataProcessor.getPointMacthCacheKey(siteId, deviceCategory);
List<EmsPointMatch> pointMatchData = emsPointMatchMapper.getDevicePointMatchList(siteId, deviceId, deviceCategory); List<EmsPointMatch> pointMatchData = emsPointMatchMapper.getDevicePointMatchList(siteId, deviceCategory);
// log.info("同步点位匹配数据到Redis key:{} data:{}", pointMatchKey, pointMatchData); // log.info("同步点位匹配数据到Redis key:{} data:{}", pointMatchKey, pointMatchData);
redisCache.setCacheObject(pointMatchKey, pointMatchData); redisCache.setCacheObject(pointMatchKey, pointMatchData);
log.info("点位匹配数据同步完成 data:{}", JSON.toJSONString(redisCache.getCacheObject(pointMatchKey))); log.info("点位匹配数据同步完成 data:{}", JSON.toJSONString(redisCache.getCacheObject(pointMatchKey)));

View File

@ -3,10 +3,12 @@ package com.xzzn.ems.service.impl;
import com.xzzn.common.enums.SiteEnum; import com.xzzn.common.enums.SiteEnum;
import com.xzzn.common.utils.DateUtils; import com.xzzn.common.utils.DateUtils;
import com.xzzn.ems.domain.EmsAmmeterData; import com.xzzn.ems.domain.EmsAmmeterData;
import com.xzzn.ems.domain.EmsEnergyPriceConfig;
import com.xzzn.ems.domain.vo.*; import com.xzzn.ems.domain.vo.*;
import com.xzzn.ems.mapper.*; import com.xzzn.ems.mapper.*;
import com.xzzn.ems.service.IEmsStatsReportService; import com.xzzn.ems.service.IEmsStatsReportService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -16,6 +18,7 @@ import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -43,6 +46,8 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService
private EmsDailyChargeDataMapper emsDailyChargeDataMapper; private EmsDailyChargeDataMapper emsDailyChargeDataMapper;
@Autowired @Autowired
private EmsDailyEnergyDataMapper emsDailyEnergyDataMapper; private EmsDailyEnergyDataMapper emsDailyEnergyDataMapper;
@Autowired
private EmsEnergyPriceConfigMapper emsEnergyPriceConfigMapper;
// 电量指标 // 电量指标
@Override @Override
@ -305,6 +310,40 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService
return dataList; return dataList;
} }
@Override
public List<AmmeterRevenueStatisListVo> getAmmeterRevenueDataResult(StatisAmmeterDateRequest requestVo) {
//查询电表数据
List<AmmeterStatisListVo> dataList = emsDailyEnergyDataMapper.getDataBySiteId(requestVo.getSiteId(), requestVo.getStartTime(), requestVo.getEndTime());
if (CollectionUtils.isEmpty(dataList)){
return null;
}
//查询电价配置
List<EmsEnergyPriceConfig> priceConfigList = emsEnergyPriceConfigMapper.getConfigListByTimeFrame(requestVo.getSiteId(), requestVo.getStartTime(), requestVo.getEndTime());
if (CollectionUtils.isEmpty(priceConfigList)){
return null;
}
Map<String, EmsEnergyPriceConfig> priceConfigMap = priceConfigList.stream().collect(Collectors.toMap(data -> data.getYear() + "-" + String.format("%02d", Integer.parseInt(data.getMonth())), Function.identity()));
List<AmmeterRevenueStatisListVo> resultList = new ArrayList<>();
dataList.forEach(ammeter -> {
EmsEnergyPriceConfig price = priceConfigMap.get(ammeter.getDataTime().substring(0, 7));
resultList.add(calculateDailyBill(ammeter, price));
});
return resultList;
}
public static AmmeterRevenueStatisListVo calculateDailyBill(AmmeterStatisListVo ammeter, EmsEnergyPriceConfig price) {
AmmeterRevenueStatisListVo ammeterRevenue = new AmmeterRevenueStatisListVo();
ammeterRevenue.setDataTime(ammeter.getDataTime());
if (price != null) {
// BigDecimal activeTotalPrice = ammeter.getActiveTotalKwh().multiply(new BigDecimal(price.getPeak()));
// BigDecimal activePeakPrice = ammeter.getActivePeakKwh().multiply(new BigDecimal(price.getPeak()));
// BigDecimal activeHighPrice = ammeter.getActiveHighKwh().multiply(new BigDecimal(price.getHigh()));
// BigDecimal activeFlatPrice = ammeter.getActiveFlatKwh().multiply(new BigDecimal(price.getFlat()));
}
return ammeterRevenue;
}
private void dealWithAmmeterTotalDate(AmmeterStatisListVo ammeterStatisListVo, AmmeterStatisListVo totalVo) { private void dealWithAmmeterTotalDate(AmmeterStatisListVo ammeterStatisListVo, AmmeterStatisListVo totalVo) {
// 有功 // 有功
totalVo.setActiveTotalKwh(totalVo.getActiveTotalKwh().add(ammeterStatisListVo.getActiveTotalKwh())); totalVo.setActiveTotalKwh(totalVo.getActiveTotalKwh().add(ammeterStatisListVo.getActiveTotalKwh()));

View File

@ -155,19 +155,14 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
}); });
EmsCoolingData coolingData = new EmsCoolingData(); EmsCoolingData coolingData = new EmsCoolingData();
// 点位匹配数据
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.COOLING.getCode()); coolingData.setGsTemp(StringUtils.getBigDecimal(obj.get("GSWD")));
if (CollectionUtils.isNotEmpty(pointMatchList)) { coolingData.setHsTemp(StringUtils.getBigDecimal(obj.get("HSWD")));
saveDeviceData(pointMatchList, obj, coolingData); coolingData.setGsPressure(StringUtils.getBigDecimal(obj.get("GSYL")));
} else { coolingData.setHsPressure(StringUtils.getBigDecimal(obj.get("HSYL")));
coolingData.setGsTemp(StringUtils.getBigDecimal(obj.get("GSWD"))); coolingData.setLysTemp(StringUtils.getBigDecimal(obj.get("LYSWD")));
coolingData.setHsTemp(StringUtils.getBigDecimal(obj.get("HSWD"))); coolingData.setVb01Kd(StringUtils.getBigDecimal(obj.get("VB1KD")));
coolingData.setGsPressure(StringUtils.getBigDecimal(obj.get("GSYL"))); coolingData.setVb02Kd(StringUtils.getBigDecimal(obj.get("VB2KD")));
coolingData.setHsPressure(StringUtils.getBigDecimal(obj.get("HSYL")));
coolingData.setLysTemp(StringUtils.getBigDecimal(obj.get("LYSWD")));
coolingData.setVb01Kd(StringUtils.getBigDecimal(obj.get("VB1KD")));
coolingData.setVb02Kd(StringUtils.getBigDecimal(obj.get("VB2KD")));
}
coolingData.setCreateBy("system"); coolingData.setCreateBy("system");
coolingData.setCreateTime(DateUtils.getNowDate()); coolingData.setCreateTime(DateUtils.getNowDate());
@ -180,7 +175,6 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
redisCache.setCacheObject(RedisKeyConstants.COOLING + SITE_ID + "_" +deviceId, coolingData); redisCache.setCacheObject(RedisKeyConstants.COOLING + SITE_ID + "_" +deviceId, coolingData);
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.COOLING, "ZSLQ");
} }
private void dhDataProcess(String deviceId, String dataJson) { private void dhDataProcess(String deviceId, String dataJson) {
@ -190,14 +184,8 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
//DH //DH
EmsDhData dhData = new EmsDhData(); EmsDhData dhData = new EmsDhData();
// 点位匹配数据 dhData.setHumidity(StringUtils.getBigDecimal(obj.get("SD3")));
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.DH.getCode()); dhData.setTemperature(StringUtils.getBigDecimal(obj.get("WD3")));
if (CollectionUtils.isNotEmpty(pointMatchList)) {
saveDeviceData(pointMatchList, obj, dhData);
} else {
dhData.setHumidity(StringUtils.getBigDecimal(obj.get("SD3")));
dhData.setTemperature(StringUtils.getBigDecimal(obj.get("WD3")));
}
dhData.setCreateBy("system"); dhData.setCreateBy("system");
dhData.setCreateTime(DateUtils.getNowDate()); dhData.setCreateTime(DateUtils.getNowDate());
@ -209,7 +197,6 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
redisCache.setCacheObject(RedisKeyConstants.DH + SITE_ID + "_" +deviceId, dhData); redisCache.setCacheObject(RedisKeyConstants.DH + SITE_ID + "_" +deviceId, dhData);
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.DH, "donghuan");
} }
private void batteryStackDataProcess(String deviceId, String dataJson) { private void batteryStackDataProcess(String deviceId, String dataJson) {
@ -226,66 +213,58 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
dataStack.setPcsCommunicationStatus(CommunicationStatus.OK.getCode()); dataStack.setPcsCommunicationStatus(CommunicationStatus.OK.getCode());
dataStack.setEmsCommunicationStatus(CommunicationStatus.OK.getCode()); dataStack.setEmsCommunicationStatus(CommunicationStatus.OK.getCode());
// 点位匹配数据 // 电池堆状态数据设置
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.STACK.getCode()); dataStack.setOperationStatus(StringUtils.getString(obj.get("DCZT")));
if (CollectionUtils.isNotEmpty(pointMatchList)) { dataStack.setStackVoltage(StringUtils.getBigDecimal(obj.get("DCDDY")));
saveDeviceData(pointMatchList, obj, dataStack); dataStack.setStackCurrent(StringUtils.getBigDecimal(obj.get("DCDDL")));
} else { dataStack.setStackSoc(StringUtils.getBigDecimal(obj.get("DCDSOC")));
dataStack.setStackSoh(StringUtils.getBigDecimal(obj.get("DCDSOH")));
// 电池堆状态数据设置 // 电压极值信息
dataStack.setOperationStatus(StringUtils.getString(obj.get("DCZT"))); dataStack.setMaxCellVoltage(StringUtils.getBigDecimal(obj.get("ZGDCDY")));
dataStack.setStackVoltage(StringUtils.getBigDecimal(obj.get("DCDDY"))); dataStack.setMaxVoltageGroupId(StringUtils.getLong(obj.get("ZGDCDYZH")));
dataStack.setStackCurrent(StringUtils.getBigDecimal(obj.get("DCDDL"))); dataStack.setMaxVoltageCellId(StringUtils.getLong(obj.get("ZGDCDYZHDH")));
dataStack.setStackSoc(StringUtils.getBigDecimal(obj.get("DCDSOC"))); dataStack.setMinCellVoltage(StringUtils.getBigDecimal(obj.get("ZDDCDY")));
dataStack.setStackSoh(StringUtils.getBigDecimal(obj.get("DCDSOH"))); dataStack.setMinVoltageGroupId(StringUtils.getLong(obj.get("ZDDCDYZH")));
dataStack.setMinVoltageCellId(StringUtils.getLong(obj.get("ZDDCDYZHDH")));
// 电压极值信息 // 温度极值信息
dataStack.setMaxCellVoltage(StringUtils.getBigDecimal(obj.get("ZGDCDY"))); dataStack.setMaxCellTemp(StringUtils.getBigDecimal(obj.get("ZGDCWD")));
dataStack.setMaxVoltageGroupId(StringUtils.getLong(obj.get("ZGDCDYZH"))); dataStack.setMaxTempGroupId(StringUtils.getLong(obj.get("ZGDCWDZH")));
dataStack.setMaxVoltageCellId(StringUtils.getLong(obj.get("ZGDCDYZHDH"))); dataStack.setMaxTempCellId(StringUtils.getLong(obj.get("ZGDCWDZHDH")));
dataStack.setMinCellVoltage(StringUtils.getBigDecimal(obj.get("ZDDCDY"))); dataStack.setMinCellTemp(StringUtils.getBigDecimal(obj.get("ZDDCWD")));
dataStack.setMinVoltageGroupId(StringUtils.getLong(obj.get("ZDDCDYZH"))); dataStack.setMinTempGroupId(StringUtils.getLong(obj.get("ZDDCWDZH")));
dataStack.setMinVoltageCellId(StringUtils.getLong(obj.get("ZDDCDYZHDH"))); dataStack.setMinTempCellId(StringUtils.getLong(obj.get("ZDDCWDZHDH")));
// 温度极值信息 // 电量统计信息
dataStack.setMaxCellTemp(StringUtils.getBigDecimal(obj.get("ZGDCWD"))); dataStack.setTotalChargeCapacity(StringUtils.getBigDecimal(obj.get("DLJCDDL")));
dataStack.setMaxTempGroupId(StringUtils.getLong(obj.get("ZGDCWDZH"))); dataStack.setTotalDischargeCapacity(StringUtils.getBigDecimal(obj.get("DLCFDDL")));
dataStack.setMaxTempCellId(StringUtils.getLong(obj.get("ZGDCWDZHDH"))); dataStack.setSessionChargeCapacity(StringUtils.getBigDecimal(obj.get("DDCLJCDDL")));
dataStack.setMinCellTemp(StringUtils.getBigDecimal(obj.get("ZDDCWD"))); dataStack.setSessionDischargeCapacity(StringUtils.getBigDecimal(obj.get("DDCLJFDDL")));
dataStack.setMinTempGroupId(StringUtils.getLong(obj.get("ZDDCWDZH"))); dataStack.setAvailableChargeCapacity(StringUtils.getBigDecimal(obj.get("DKCDL")));
dataStack.setMinTempCellId(StringUtils.getLong(obj.get("ZDDCWDZHDH"))); dataStack.setAvailableDischargeCapacity(StringUtils.getBigDecimal(obj.get("DKFDL")));
// 电量统计信息 // 时间信息
dataStack.setTotalChargeCapacity(StringUtils.getBigDecimal(obj.get("DLJCDDL"))); dataStack.setRemainingDischargeTime(StringUtils.getLong(obj.get("KYFDSJ")));
dataStack.setTotalDischargeCapacity(StringUtils.getBigDecimal(obj.get("DLCFDDL"))); dataStack.setRemainingChargeTime(StringUtils.getLong(obj.get("KYCDSJ")));
dataStack.setSessionChargeCapacity(StringUtils.getBigDecimal(obj.get("DDCLJCDDL")));
dataStack.setSessionDischargeCapacity(StringUtils.getBigDecimal(obj.get("DDCLJFDDL")));
dataStack.setAvailableChargeCapacity(StringUtils.getBigDecimal(obj.get("DKCDL")));
dataStack.setAvailableDischargeCapacity(StringUtils.getBigDecimal(obj.get("DKFDL")));
// 时间信息 // 功率/电流限制
dataStack.setRemainingDischargeTime(StringUtils.getLong(obj.get("KYFDSJ"))); dataStack.setMaxDischargePower(StringUtils.getBigDecimal(obj.get("YXZDFDGL")));
dataStack.setRemainingChargeTime(StringUtils.getLong(obj.get("KYCDSJ"))); dataStack.setMaxChargePower(StringUtils.getBigDecimal(obj.get("YXZDCDGL")));
dataStack.setMaxDischargeCurrent(StringUtils.getBigDecimal(obj.get("YXZDFDDL")));
dataStack.setMaxChargeCurrent(StringUtils.getBigDecimal(obj.get("YXZDCDDL")));
// 功率/电流限制 // 当日统计
dataStack.setMaxDischargePower(StringUtils.getBigDecimal(obj.get("YXZDFDGL"))); dataStack.setDailyDischargeCycles(StringUtils.getLong(obj.get("DTFDCS")));
dataStack.setMaxChargePower(StringUtils.getBigDecimal(obj.get("YXZDCDGL"))); dataStack.setDailyChargeCycles(StringUtils.getLong(obj.get("DTCDCS")));
dataStack.setMaxDischargeCurrent(StringUtils.getBigDecimal(obj.get("YXZDFDDL"))); dataStack.setDailyDischargeCapacity(StringUtils.getBigDecimal(obj.get("DTFDDL")));
dataStack.setMaxChargeCurrent(StringUtils.getBigDecimal(obj.get("YXZDCDDL"))); dataStack.setDailyChargeCapacity(StringUtils.getBigDecimal(obj.get("DTCDDL")));
// 当日统计 // 系统状态
dataStack.setDailyDischargeCycles(StringUtils.getLong(obj.get("DTFDCS"))); dataStack.setOperatingTemp(StringUtils.getBigDecimal(obj.get("YXWD")));
dataStack.setDailyChargeCycles(StringUtils.getLong(obj.get("DTCDCS"))); dataStack.setBmsStatus(StringUtils.getString(obj.get("BMSDDQZT")));
dataStack.setDailyDischargeCapacity(StringUtils.getBigDecimal(obj.get("DTFDDL"))); dataStack.setBmsChargeStatus(StringUtils.getString(obj.get("BMSCFDZT")));
dataStack.setDailyChargeCapacity(StringUtils.getBigDecimal(obj.get("DTCDDL"))); dataStack.setStackInsulationResistance(StringUtils.getBigDecimal(obj.get("DCDJYDZ")));
// 系统状态
dataStack.setOperatingTemp(StringUtils.getBigDecimal(obj.get("YXWD")));
dataStack.setBmsStatus(StringUtils.getString(obj.get("BMSDDQZT")));
dataStack.setBmsChargeStatus(StringUtils.getString(obj.get("BMSCFDZT")));
dataStack.setStackInsulationResistance(StringUtils.getBigDecimal(obj.get("DCDJYDZ")));
}
dataStack.setCreateBy("system"); dataStack.setCreateBy("system");
@ -299,7 +278,6 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
redisCache.setCacheObject(RedisKeyConstants.STACK + SITE_ID + "_" +deviceId, dataStack); redisCache.setCacheObject(RedisKeyConstants.STACK + SITE_ID + "_" +deviceId, dataStack);
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.STACK, "BMSD");
} }
private void saveDeviceData(List<EmsPointMatch> pointMatchList, Map<String, Object> obj, Object entity) { private void saveDeviceData(List<EmsPointMatch> pointMatchList, Map<String, Object> obj, Object entity) {
@ -350,58 +328,51 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
} }
//BMS 电池簇 //BMS 电池簇
EmsBatteryCluster data = new EmsBatteryCluster(); EmsBatteryCluster data = new EmsBatteryCluster();
// 点位匹配数据 // 设置所有 BigDecimal 类型字段为 ZERO
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.CLUSTER.getCode()); data.setChargeableCapacity(StringUtils.getBigDecimal(obj.get("KCDL")));
if (CollectionUtils.isNotEmpty(pointMatchList)) { data.setClusterVoltage(StringUtils.getBigDecimal(obj.get("ZDY")));
saveDeviceData(pointMatchList, obj, data); data.setClusterCurrent(StringUtils.getBigDecimal(obj.get("ZDL")));
} else { data.setTotalChargedCapacity(StringUtils.getBigDecimal(obj.get("LJCDDL")));
data.setDischargeableCapacity(StringUtils.getBigDecimal(obj.get("KFDL")));
data.setTotalDischargedCapacity(StringUtils.getBigDecimal(obj.get("LJFDDL")));
data.setSoh(StringUtils.getBigDecimal(obj.get("ZSOH")));
data.setAverageTemperature(StringUtils.getBigDecimal(obj.get("MKWD")));
data.setInsulationResistance(StringUtils.getBigDecimal(obj.get("ZJYDZ")));
data.setCurrentSoc(StringUtils.getBigDecimal(obj.get("ZSOC")));
data.setMaxAllowedChargePower(StringUtils.getBigDecimal(obj.get("YXCDZDGL")));
data.setMaxAllowedDischargePower(StringUtils.getBigDecimal(obj.get("YXFDZDGL")));
data.setMaxAllowedChargeVoltage(StringUtils.getBigDecimal(obj.get("YXCDZDDY")));
data.setMaxAllowedDischargeVoltage(StringUtils.getBigDecimal(obj.get("YXFDZDDY")));
data.setMaxAllowedChargeCurrent(StringUtils.getBigDecimal(obj.get("YXCDZDDL")));
data.setMaxAllowedDischargeCurrent(StringUtils.getBigDecimal(obj.get("YXFDZDDL")));
data.setBatteryPackVoltage(StringUtils.getBigDecimal(obj.get("ZDY")));
data.setBatteryPackCurrent(StringUtils.getBigDecimal(obj.get("ZDL")));
data.setBatteryPackTemp(StringUtils.getBigDecimal(obj.get("MKWD")));
data.setBatteryPackSoc(StringUtils.getBigDecimal(obj.get("ZSOC")));
data.setBatteryPackSoh(StringUtils.getBigDecimal(obj.get("ZSOH")));
data.setBatteryPackInsulationResistance(StringUtils.getBigDecimal(obj.get("ZJYDZ")));
data.setAvgCellVoltage(StringUtils.getBigDecimal(obj.get("PJDTDY")));
data.setAvgCellTemp(StringUtils.getBigDecimal(obj.get("PJDTWD")));
data.setMaxCellVoltage(StringUtils.getBigDecimal(obj.get("ZGDTDY")));
data.setMinCellVoltage(StringUtils.getBigDecimal(obj.get("ZDDTDY")));
data.setMaxCellTemp(StringUtils.getBigDecimal(obj.get("ZGDTWD")));
data.setMinCellTemp(StringUtils.getBigDecimal(obj.get("ZDDTWD")));
data.setMaxCellSoc(StringUtils.getBigDecimal(obj.get("ZGDTSOC")));
data.setMinCellSoc(StringUtils.getBigDecimal(obj.get("ZDDTSOC")));
data.setMaxCellSoh(StringUtils.getBigDecimal(obj.get("ZGDTSOH")));
data.setMinCellSoh(StringUtils.getBigDecimal(obj.get("ZDDTSOH")));
data.setTotalChargeEnergy(StringUtils.getBigDecimal(obj.get("DCLJCDDL")));
data.setTotalDischargeEnergy(StringUtils.getBigDecimal(obj.get("DCLJFDDL")));
// 设置所有 BigDecimal 类型字段为 ZERO // 其他非 BigDecimal 字段
data.setChargeableCapacity(StringUtils.getBigDecimal(obj.get("KCDL"))); data.setMaxCellVoltageId(StringUtils.getString(obj.get("ZGDTDYDYD")));
data.setClusterVoltage(StringUtils.getBigDecimal(obj.get("ZDY"))); data.setMinCellVoltageId(StringUtils.getString(obj.get("ZDDTDYDYD")));
data.setClusterCurrent(StringUtils.getBigDecimal(obj.get("ZDL"))); data.setMaxCellTempId(StringUtils.getString(obj.get("ZGDTWDDYD")));
data.setTotalChargedCapacity(StringUtils.getBigDecimal(obj.get("LJCDDL"))); data.setMinCellTempId(StringUtils.getString(obj.get("ZDDTWDDYD")));
data.setDischargeableCapacity(StringUtils.getBigDecimal(obj.get("KFDL"))); data.setMaxCellSocId(StringUtils.getString(obj.get("ZGDTSOCDYD")));
data.setTotalDischargedCapacity(StringUtils.getBigDecimal(obj.get("LJFDDL"))); data.setMinCellSocId(StringUtils.getString(obj.get("ZDDTSOCDYD")));
data.setSoh(StringUtils.getBigDecimal(obj.get("ZSOH"))); data.setMaxCellSohId(StringUtils.getString(obj.get("ZGDTSOHDYD")));
data.setAverageTemperature(StringUtils.getBigDecimal(obj.get("MKWD"))); data.setMinCellSohId(StringUtils.getString(obj.get("ZDDTSOHDYD")));
data.setInsulationResistance(StringUtils.getBigDecimal(obj.get("ZJYDZ")));
data.setCurrentSoc(StringUtils.getBigDecimal(obj.get("ZSOC")));
data.setMaxAllowedChargePower(StringUtils.getBigDecimal(obj.get("YXCDZDGL")));
data.setMaxAllowedDischargePower(StringUtils.getBigDecimal(obj.get("YXFDZDGL")));
data.setMaxAllowedChargeVoltage(StringUtils.getBigDecimal(obj.get("YXCDZDDY")));
data.setMaxAllowedDischargeVoltage(StringUtils.getBigDecimal(obj.get("YXFDZDDY")));
data.setMaxAllowedChargeCurrent(StringUtils.getBigDecimal(obj.get("YXCDZDDL")));
data.setMaxAllowedDischargeCurrent(StringUtils.getBigDecimal(obj.get("YXFDZDDL")));
data.setBatteryPackVoltage(StringUtils.getBigDecimal(obj.get("ZDY")));
data.setBatteryPackCurrent(StringUtils.getBigDecimal(obj.get("ZDL")));
data.setBatteryPackTemp(StringUtils.getBigDecimal(obj.get("MKWD")));
data.setBatteryPackSoc(StringUtils.getBigDecimal(obj.get("ZSOC")));
data.setBatteryPackSoh(StringUtils.getBigDecimal(obj.get("ZSOH")));
data.setBatteryPackInsulationResistance(StringUtils.getBigDecimal(obj.get("ZJYDZ")));
data.setAvgCellVoltage(StringUtils.getBigDecimal(obj.get("PJDTDY")));
data.setAvgCellTemp(StringUtils.getBigDecimal(obj.get("PJDTWD")));
data.setMaxCellVoltage(StringUtils.getBigDecimal(obj.get("ZGDTDY")));
data.setMinCellVoltage(StringUtils.getBigDecimal(obj.get("ZDDTDY")));
data.setMaxCellTemp(StringUtils.getBigDecimal(obj.get("ZGDTWD")));
data.setMinCellTemp(StringUtils.getBigDecimal(obj.get("ZDDTWD")));
data.setMaxCellSoc(StringUtils.getBigDecimal(obj.get("ZGDTSOC")));
data.setMinCellSoc(StringUtils.getBigDecimal(obj.get("ZDDTSOC")));
data.setMaxCellSoh(StringUtils.getBigDecimal(obj.get("ZGDTSOH")));
data.setMinCellSoh(StringUtils.getBigDecimal(obj.get("ZDDTSOH")));
data.setTotalChargeEnergy(StringUtils.getBigDecimal(obj.get("DCLJCDDL")));
data.setTotalDischargeEnergy(StringUtils.getBigDecimal(obj.get("DCLJFDDL")));
// 其他非 BigDecimal 字段
data.setMaxCellVoltageId(StringUtils.getString(obj.get("ZGDTDYDYD")));
data.setMinCellVoltageId(StringUtils.getString(obj.get("ZDDTDYDYD")));
data.setMaxCellTempId(StringUtils.getString(obj.get("ZGDTWDDYD")));
data.setMinCellTempId(StringUtils.getString(obj.get("ZDDTWDDYD")));
data.setMaxCellSocId(StringUtils.getString(obj.get("ZGDTSOCDYD")));
data.setMinCellSocId(StringUtils.getString(obj.get("ZDDTSOCDYD")));
data.setMaxCellSohId(StringUtils.getString(obj.get("ZGDTSOHDYD")));
data.setMinCellSohId(StringUtils.getString(obj.get("ZDDTSOHDYD")));
}
data.setWorkStatus(WorkStatus.NORMAL.getCode()); // 或其他默认值 data.setWorkStatus(WorkStatus.NORMAL.getCode()); // 或其他默认值
data.setPcsCommunicationStatus(CommunicationStatus.OK.getCode()); data.setPcsCommunicationStatus(CommunicationStatus.OK.getCode());
@ -421,7 +392,6 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
redisCache.setCacheObject(RedisKeyConstants.CLUSTER + SITE_ID + "_" +deviceId, data); redisCache.setCacheObject(RedisKeyConstants.CLUSTER + SITE_ID + "_" +deviceId, data);
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.CLUSTER, "BMSC");
} }
private void batteryDataProcess(String deviceId, String dataJson, Date dataUpdateTime) { private void batteryDataProcess(String deviceId, String dataJson, Date dataUpdateTime) {
@ -444,8 +414,6 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
LocalDateTime oneHourAgo = LocalDateTime.now().minus(1, ChronoUnit.HOURS); LocalDateTime oneHourAgo = LocalDateTime.now().minus(1, ChronoUnit.HOURS);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String oneHourAgoStr = oneHourAgo.format(formatter); String oneHourAgoStr = oneHourAgo.format(formatter);
// 点位匹配数据
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.BATTERY.getCode());
//单体电池 //单体电池
for (Map.Entry<String, Map<String, Object>> record : records.entrySet()) { for (Map.Entry<String, Map<String, Object>> record : records.entrySet()) {
String recordId = record.getKey(); String recordId = record.getKey();
@ -455,14 +423,10 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
batteryData.setDeviceId(recordId); batteryData.setDeviceId(recordId);
batteryData.setBatteryCellId(recordId); batteryData.setBatteryCellId(recordId);
if (CollectionUtils.isNotEmpty(pointMatchList)) { batteryData.setSoc(StringUtils.getBigDecimal(fields.get("DTSOC")));
saveDeviceData(pointMatchList, fields, batteryData); batteryData.setSoh(StringUtils.getBigDecimal(fields.get("DTSOH")));
} else { batteryData.setTemperature(StringUtils.getBigDecimal(fields.get("DTWD")));
batteryData.setSoc(StringUtils.getBigDecimal(fields.get("DTSOC"))); batteryData.setVoltage(StringUtils.getBigDecimal(fields.get("DTDY")));
batteryData.setSoh(StringUtils.getBigDecimal(fields.get("DTSOH")));
batteryData.setTemperature(StringUtils.getBigDecimal(fields.get("DTWD")));
batteryData.setVoltage(StringUtils.getBigDecimal(fields.get("DTDY")));
}
batteryData.setBatteryCluster(deviceId); batteryData.setBatteryCluster(deviceId);
batteryData.setBatteryPack(stackDeviceId); batteryData.setBatteryPack(stackDeviceId);
@ -496,7 +460,6 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
redisCache.deleteList(RedisKeyConstants.BATTERY + SITE_ID + "_" + deviceId); redisCache.deleteList(RedisKeyConstants.BATTERY + SITE_ID + "_" + deviceId);
redisCache.setCacheList(RedisKeyConstants.BATTERY + SITE_ID + "_" + deviceId, list); redisCache.setCacheList(RedisKeyConstants.BATTERY + SITE_ID + "_" + deviceId, list);
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.BATTERY, "BMSC");
} }
// 批量处理每日最新数据 // 批量处理每日最新数据
@ -523,62 +486,54 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
//pcs //pcs
EmsPcsData pcsData = new EmsPcsData(); EmsPcsData pcsData = new EmsPcsData();
// 点位匹配数据 // 功率与能量类字段
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.PCS.getCode()); pcsData.setTotalActivePower(StringUtils.getBigDecimal(obj.get("YGGL")));
if (CollectionUtils.isNotEmpty(pointMatchList)) { pcsData.setDailyAcChargeEnergy(StringUtils.getBigDecimal(obj.get("RCDL")));
saveDeviceData(pointMatchList, obj, pcsData); pcsData.setTotalReactivePower(StringUtils.getBigDecimal(obj.get("XTWGGL")));
} else { pcsData.setDailyAcDischargeEnergy(StringUtils.getBigDecimal(obj.get("RFDL")));
pcsData.setTotalApparentPower(StringUtils.getBigDecimal(obj.get("XTSZGL")));
// 功率与能量类字段 pcsData.setTotalPowerFactor(StringUtils.getBigDecimal(obj.get("GLYS")));
pcsData.setTotalActivePower(StringUtils.getBigDecimal(obj.get("YGGL"))); pcsData.setDcPower(StringUtils.getBigDecimal(obj.get("XTSZGL")));
pcsData.setDailyAcChargeEnergy(StringUtils.getBigDecimal(obj.get("RCDL"))); pcsData.setTotalAcChargeEnergy(StringUtils.getBigDecimal(obj.get("ZCDL")));
pcsData.setTotalReactivePower(StringUtils.getBigDecimal(obj.get("XTWGGL"))); pcsData.setTotalAcDischargeEnergy(StringUtils.getBigDecimal(obj.get("ZFDL")));
pcsData.setDailyAcDischargeEnergy(StringUtils.getBigDecimal(obj.get("RFDL"))); pcsData.setAcChargeActivePower(StringUtils.getBigDecimal(obj.get("JLCCDYGGL")));
pcsData.setTotalApparentPower(StringUtils.getBigDecimal(obj.get("XTSZGL"))); pcsData.setAcCapacitiveReactivePower(StringUtils.getBigDecimal(obj.get("JLCRXWGGL")));
pcsData.setTotalPowerFactor(StringUtils.getBigDecimal(obj.get("GLYS"))); pcsData.setAcDischargeActivePower(StringUtils.getBigDecimal(obj.get("JLCFDYGGL")));
pcsData.setDcPower(StringUtils.getBigDecimal(obj.get("XTSZGL"))); pcsData.setAcInductiveReactivePower(StringUtils.getBigDecimal(obj.get("JLCGXWGGL")));
pcsData.setTotalAcChargeEnergy(StringUtils.getBigDecimal(obj.get("ZCDL"))); pcsData.setMaxCapacitivePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDRXWGNL")));
pcsData.setTotalAcDischargeEnergy(StringUtils.getBigDecimal(obj.get("ZFDL"))); pcsData.setMaxInductivePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDGXWGNL")));
pcsData.setAcChargeActivePower(StringUtils.getBigDecimal(obj.get("JLCCDYGGL"))); pcsData.setMaxChargePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDKCGL")));
pcsData.setAcCapacitiveReactivePower(StringUtils.getBigDecimal(obj.get("JLCRXWGGL"))); pcsData.setMaxDischargePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDKFGL")));
pcsData.setAcDischargeActivePower(StringUtils.getBigDecimal(obj.get("JLCFDYGGL")));
pcsData.setAcInductiveReactivePower(StringUtils.getBigDecimal(obj.get("JLCGXWGGL")));
pcsData.setMaxCapacitivePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDRXWGNL")));
pcsData.setMaxInductivePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDGXWGNL")));
pcsData.setMaxChargePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDKCGL")));
pcsData.setMaxDischargePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDKFGL")));
// 温度与环境参数 // 温度与环境参数
// pcsData.setPcsModuleTemperature(StringUtils.getBigDecimal(obj.get("ChargeableCapacity"))); // pcsData.setPcsModuleTemperature(StringUtils.getBigDecimal(obj.get("ChargeableCapacity")));
// pcsData.setPcsEnvironmentTemperature(StringUtils.getBigDecimal(obj.get("ChargeableCapacity"))); // pcsData.setPcsEnvironmentTemperature(StringUtils.getBigDecimal(obj.get("ChargeableCapacity")));
// pcsData.setAcFrequency(StringUtils.getBigDecimal(obj.get("ChargeableCapacity"))); // pcsData.setAcFrequency(StringUtils.getBigDecimal(obj.get("ChargeableCapacity")));
// 状态指示类 // 状态指示类
pcsData.setBranchStatus(BranchStatus.NORMAL.getCode()); pcsData.setBranchStatus(BranchStatus.NORMAL.getCode());
pcsData.setDischargeStatus(ChargeStatus.CHARGING.getCode()); pcsData.setDischargeStatus(ChargeStatus.CHARGING.getCode());
String acSwitchStatus = StringUtils.getString(obj.get("JLKGZT")); String acSwitchStatus = StringUtils.getString(obj.get("JLKGZT"));
pcsData.setAcSwitchStatus(SwitchStatus.CLOSED.getCode()); pcsData.setAcSwitchStatus(SwitchStatus.CLOSED.getCode());
String dcSwitchStatus = StringUtils.getString(obj.get("ZLKGZT")); String dcSwitchStatus = StringUtils.getString(obj.get("ZLKGZT"));
pcsData.setDcSwitchStatus(SwitchStatus.CLOSED.getCode()); pcsData.setDcSwitchStatus(SwitchStatus.CLOSED.getCode());
String controlMode = StringUtils.getString(obj.get("YCTT")); String controlMode = StringUtils.getString(obj.get("YCTT"));
pcsData.setRemoteControlStatus(ControlModeStatus.REMOTE.getCode()); pcsData.setRemoteControlStatus(ControlModeStatus.REMOTE.getCode());
// 电流参数 // 电流参数
pcsData.setSysUCurrent(StringUtils.getBigDecimal(obj.get("XTSCUXDL"))); pcsData.setSysUCurrent(StringUtils.getBigDecimal(obj.get("XTSCUXDL")));
pcsData.setSysVCurrent(StringUtils.getBigDecimal(obj.get("XTSCVXDL"))); pcsData.setSysVCurrent(StringUtils.getBigDecimal(obj.get("XTSCVXDL")));
pcsData.setSysWCurrent(StringUtils.getBigDecimal(obj.get("XTSCWXDL"))); pcsData.setSysWCurrent(StringUtils.getBigDecimal(obj.get("XTSCWXDL")));
// 直流参数 // 直流参数
// pcsData.setDcVoltage(StringUtils.getBigDecimal(obj.get("ChargeableCapacity"))); // pcsData.setDcVoltage(StringUtils.getBigDecimal(obj.get("ChargeableCapacity")));
// pcsData.setDcCurrent(StringUtils.getBigDecimal(obj.get("ChargeableCapacity"))); // pcsData.setDcCurrent(StringUtils.getBigDecimal(obj.get("ChargeableCapacity")));
// 三相温度 // 三相温度
pcsData.setuTemperature(StringUtils.getBigDecimal(obj.get("DY1UXIGBTWD"))); pcsData.setuTemperature(StringUtils.getBigDecimal(obj.get("DY1UXIGBTWD")));
pcsData.setvTemperature(StringUtils.getBigDecimal(obj.get("DY1VXIGBTWD"))); pcsData.setvTemperature(StringUtils.getBigDecimal(obj.get("DY1VXIGBTWD")));
pcsData.setwTemperature(StringUtils.getBigDecimal(obj.get("DY1WXIGBTWD"))); pcsData.setwTemperature(StringUtils.getBigDecimal(obj.get("DY1WXIGBTWD")));
}
// 时间与状态类字段 // 时间与状态类字段
pcsData.setDataUpdateTime(dataUpdateTime); pcsData.setDataUpdateTime(dataUpdateTime);
@ -599,15 +554,13 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
emsPcsDataMapper.insertEmsPcsData(pcsData); emsPcsDataMapper.insertEmsPcsData(pcsData);
redisCache.setCacheObject(RedisKeyConstants.PCS + SITE_ID + "_" +deviceId, pcsData); redisCache.setCacheObject(RedisKeyConstants.PCS + SITE_ID + "_" +deviceId, pcsData);
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.PCS, "PCS");
} }
private void pcsBranchDataProcess(String deviceId, String dataJson) { private void pcsBranchDataProcess(String deviceId, String dataJson) {
Map<String, Map<String, Object>> records = processDataPrefix(JSON.parseObject(dataJson, new TypeReference<Map<String, Object>>() {})); Map<String, Map<String, Object>> records = processDataPrefix(JSON.parseObject(dataJson, new TypeReference<Map<String, Object>>() {}));
List<EmsPcsBranchData> list = new ArrayList<>(); List<EmsPcsBranchData> list = new ArrayList<>();
// 点位匹配数据
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.BRANCH.getCode());
//PCS支路 //PCS支路
for (Map.Entry<String, Map<String, Object>> record : records.entrySet()) { for (Map.Entry<String, Map<String, Object>> record : records.entrySet()) {
@ -618,32 +571,28 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
data.setDeviceId(deviceId); data.setDeviceId(deviceId);
data.setSiteId(SITE_ID); data.setSiteId(SITE_ID);
data.setGridStatus(GridStatus.GRID.getCode()); data.setGridStatus(GridStatus.GRID.getCode());
if (CollectionUtils.isNotEmpty(pointMatchList)) { data.setDcPower(StringUtils.getBigDecimal(fields.get("ZLGL")));
saveDeviceData(pointMatchList, fields, data); data.setDcVoltage(StringUtils.getBigDecimal(fields.get("ZLDY")));
} else { data.setDcCurrent(StringUtils.getBigDecimal(fields.get("ZLDL")));
data.setDcPower(StringUtils.getBigDecimal(fields.get("ZLGL"))); data.setGridUVoltage(StringUtils.getBigDecimal(fields.get("DWUXDY")));
data.setDcVoltage(StringUtils.getBigDecimal(fields.get("ZLDY"))); data.setGridVVoltage(StringUtils.getBigDecimal(fields.get("DWVXDY")));
data.setDcCurrent(StringUtils.getBigDecimal(fields.get("ZLDL"))); data.setGridWVoltage(StringUtils.getBigDecimal(fields.get("DWWXDY")));
data.setGridUVoltage(StringUtils.getBigDecimal(fields.get("DWUXDY"))); data.setOutputUCurrent(StringUtils.getBigDecimal(fields.get("SCUXDL")));
data.setGridVVoltage(StringUtils.getBigDecimal(fields.get("DWVXDY"))); data.setOutputVCurrent(StringUtils.getBigDecimal(fields.get("SCVXDL")));
data.setGridWVoltage(StringUtils.getBigDecimal(fields.get("DWWXDY"))); data.setOutputWCurrent(StringUtils.getBigDecimal(fields.get("SCWXDL")));
data.setOutputUCurrent(StringUtils.getBigDecimal(fields.get("SCUXDL"))); data.setApparentPower(StringUtils.getBigDecimal(fields.get("SZGL")));
data.setOutputVCurrent(StringUtils.getBigDecimal(fields.get("SCVXDL"))); data.setActivePower(StringUtils.getBigDecimal(fields.get("YGGL")));
data.setOutputWCurrent(StringUtils.getBigDecimal(fields.get("SCWXDL"))); data.setReactivePower(StringUtils.getBigDecimal(fields.get("WGGL")));
data.setApparentPower(StringUtils.getBigDecimal(fields.get("SZGL"))); data.setPowerFactor(StringUtils.getBigDecimal(fields.get("GLYS")));
data.setActivePower(StringUtils.getBigDecimal(fields.get("YGGL"))); data.setFrequency(StringUtils.getBigDecimal(fields.get("PL")));
data.setReactivePower(StringUtils.getBigDecimal(fields.get("WGGL"))); data.setInternalTemp(StringUtils.getBigDecimal(fields.get("DY1WD")));
data.setPowerFactor(StringUtils.getBigDecimal(fields.get("GLYS"))); data.setuIgbtTemp(StringUtils.getBigDecimal(fields.get("UXIGBTWD")));
data.setFrequency(StringUtils.getBigDecimal(fields.get("PL"))); data.setvIgbtTemp(StringUtils.getBigDecimal(fields.get("VXIGBTWD")));
data.setInternalTemp(StringUtils.getBigDecimal(fields.get("DY1WD"))); data.setwIgbtTemp(StringUtils.getBigDecimal(fields.get("WXIGBTWD")));
data.setuIgbtTemp(StringUtils.getBigDecimal(fields.get("UXIGBTWD"))); data.setAvailablePower(StringUtils.getBigDecimal(fields.get("KYGL")));
data.setvIgbtTemp(StringUtils.getBigDecimal(fields.get("VXIGBTWD"))); data.setTotalLoadRatio(StringUtils.getBigDecimal(fields.get("ZFZB")));
data.setwIgbtTemp(StringUtils.getBigDecimal(fields.get("WXIGBTWD"))); data.setAcLeakageCurrent(StringUtils.getBigDecimal(fields.get("JLLDL")));
data.setAvailablePower(StringUtils.getBigDecimal(fields.get("KYGL"))); data.setInsulationResistance(StringUtils.getBigDecimal(fields.get("JYZK")));
data.setTotalLoadRatio(StringUtils.getBigDecimal(fields.get("ZFZB")));
data.setAcLeakageCurrent(StringUtils.getBigDecimal(fields.get("JLLDL")));
data.setInsulationResistance(StringUtils.getBigDecimal(fields.get("JYZK")));
}
data.setBranchId(recordId); data.setBranchId(recordId);
data.setCreateBy("system"); data.setCreateBy("system");
data.setCreateTime(DateUtils.getNowDate()); data.setCreateTime(DateUtils.getNowDate());
@ -656,7 +605,6 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
redisCache.setCacheObject(RedisKeyConstants.BRANCH + SITE_ID + "_" +deviceId, list); redisCache.setCacheObject(RedisKeyConstants.BRANCH + SITE_ID + "_" +deviceId, list);
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.BRANCH, "PCS");
} }
} }
@ -671,90 +619,83 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
// 更新时间 // 更新时间
dataLoad.setDataUpdateTime(dataUpdateTime); dataLoad.setDataUpdateTime(dataUpdateTime);
// 点位匹配数据 // 电能设置-组合有功
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.AMMETER.getCode()); dataLoad.setCurrentCombActiveTotal(StringUtils.getBigDecimal(obj.get("DQZHYGZDN")));
if (CollectionUtils.isNotEmpty(pointMatchList)) { dataLoad.setCurrentCombActivePeak(StringUtils.getBigDecimal(obj.get("DQZHYGJDN")));
saveDeviceData(pointMatchList, obj, dataLoad); dataLoad.setCurrentCombActiveHigh(StringUtils.getBigDecimal(obj.get("DQZHYGFDN")));
} else { dataLoad.setCurrentCombActiveFlat(StringUtils.getBigDecimal(obj.get("DQZHYGPDN")));
dataLoad.setCurrentCombActiveValley(StringUtils.getBigDecimal(obj.get("DQZHYGGDN")));
// 电能设置-正向有功
dataLoad.setCurrentForwardActiveTotal(StringUtils.getBigDecimal(obj.get("DQZXYGZDN")));
dataLoad.setCurrentForwardActivePeak(StringUtils.getBigDecimal(obj.get("DQZXYGJDN")));
dataLoad.setCurrentForwardActiveHigh(StringUtils.getBigDecimal(obj.get("DQZXYGFDN")));
dataLoad.setCurrentForwardActiveFlat(StringUtils.getBigDecimal(obj.get("DQZXYGPDN")));
dataLoad.setCurrentForwardActiveValley(StringUtils.getBigDecimal(obj.get("DQZXYGGDN")));
// 电能设置-反向有功
dataLoad.setCurrentReverseActiveTotal(StringUtils.getBigDecimal(obj.get("DQFXYGZDN")));
dataLoad.setCurrentReverseActivePeak(StringUtils.getBigDecimal(obj.get("DQFXYGJDN")));
dataLoad.setCurrentReverseActiveHigh(StringUtils.getBigDecimal(obj.get("DQFXYGFDN")));
dataLoad.setCurrentReverseActiveFlat(StringUtils.getBigDecimal(obj.get("DQFXYGPDN")));
dataLoad.setCurrentReverseActiveValley(StringUtils.getBigDecimal(obj.get("DQFXYGGDN")));
// 电能设置-组合无功
dataLoad.setCurrentCombReactiveTotal(StringUtils.getBigDecimal(obj.get("DQZHWGZDN")));
dataLoad.setCurrentCombReactivePeak(StringUtils.getBigDecimal(obj.get("DQZHWGJDN")));
dataLoad.setCurrentCombReactiveHigh(StringUtils.getBigDecimal(obj.get("DQZHWGFDN")));
dataLoad.setCurrentCombReactiveFlat(StringUtils.getBigDecimal(obj.get("DQZHWGPDN")));
dataLoad.setCurrentCombReactiveValley(StringUtils.getBigDecimal(obj.get("DQZHWGGDN")));
// 电能设置-正向无功
dataLoad.setCurrentForwardReactiveTotal(StringUtils.getBigDecimal(obj.get("DQZXWGZDN")));
dataLoad.setCurrentForwardReactivePeak(StringUtils.getBigDecimal(obj.get("DQZXWGJDN")));
dataLoad.setCurrentForwardReactiveHigh(StringUtils.getBigDecimal(obj.get("DQZXWGFDN")));
dataLoad.setCurrentForwardReactiveFlat(StringUtils.getBigDecimal(obj.get("DQZXWGPDN")));
dataLoad.setCurrentForwardReactiveValley(StringUtils.getBigDecimal(obj.get("DQZXWGGDN")));
// 电能设置-反向无功
dataLoad.setCurrentReverseReactiveTotal(StringUtils.getBigDecimal(obj.get("DQFXWGZDN")));
dataLoad.setCurrentReverseReactivePeak(StringUtils.getBigDecimal(obj.get("DQFXWGJDN")));
dataLoad.setCurrentReverseReactiveHigh(StringUtils.getBigDecimal(obj.get("DQFXWGFDN")));
dataLoad.setCurrentReverseReactiveFlat(StringUtils.getBigDecimal(obj.get("DQFXWGPDN")));
dataLoad.setCurrentReverseReactiveValley(StringUtils.getBigDecimal(obj.get("DQFXWGGDN")));
// 电能设置-组合有功 // 电压+电流
dataLoad.setCurrentCombActiveTotal(StringUtils.getBigDecimal(obj.get("DQZHYGZDN"))); dataLoad.setPhaseAVoltage(StringUtils.getBigDecimal(obj.get("AXDY")));
dataLoad.setCurrentCombActivePeak(StringUtils.getBigDecimal(obj.get("DQZHYGJDN"))); dataLoad.setPhaseBVoltage(StringUtils.getBigDecimal(obj.get("BXDY")));
dataLoad.setCurrentCombActiveHigh(StringUtils.getBigDecimal(obj.get("DQZHYGFDN"))); dataLoad.setPhaseCVoltage(StringUtils.getBigDecimal(obj.get("CXDY")));
dataLoad.setCurrentCombActiveFlat(StringUtils.getBigDecimal(obj.get("DQZHYGPDN"))); dataLoad.setPhaseACurrent(StringUtils.getBigDecimal(obj.get("AXDL")));
dataLoad.setCurrentCombActiveValley(StringUtils.getBigDecimal(obj.get("DQZHYGGDN"))); dataLoad.setPhaseBCurrent(StringUtils.getBigDecimal(obj.get("BXDL")));
// 电能设置-正向有功 dataLoad.setPhaseCCurrent(StringUtils.getBigDecimal(obj.get("CXDL")));
dataLoad.setCurrentForwardActiveTotal(StringUtils.getBigDecimal(obj.get("DQZXYGZDN")));
dataLoad.setCurrentForwardActivePeak(StringUtils.getBigDecimal(obj.get("DQZXYGJDN")));
dataLoad.setCurrentForwardActiveHigh(StringUtils.getBigDecimal(obj.get("DQZXYGFDN")));
dataLoad.setCurrentForwardActiveFlat(StringUtils.getBigDecimal(obj.get("DQZXYGPDN")));
dataLoad.setCurrentForwardActiveValley(StringUtils.getBigDecimal(obj.get("DQZXYGGDN")));
// 电能设置-反向有功
dataLoad.setCurrentReverseActiveTotal(StringUtils.getBigDecimal(obj.get("DQFXYGZDN")));
dataLoad.setCurrentReverseActivePeak(StringUtils.getBigDecimal(obj.get("DQFXYGJDN")));
dataLoad.setCurrentReverseActiveHigh(StringUtils.getBigDecimal(obj.get("DQFXYGFDN")));
dataLoad.setCurrentReverseActiveFlat(StringUtils.getBigDecimal(obj.get("DQFXYGPDN")));
dataLoad.setCurrentReverseActiveValley(StringUtils.getBigDecimal(obj.get("DQFXYGGDN")));
// 电能设置-组合无功
dataLoad.setCurrentCombReactiveTotal(StringUtils.getBigDecimal(obj.get("DQZHWGZDN")));
dataLoad.setCurrentCombReactivePeak(StringUtils.getBigDecimal(obj.get("DQZHWGJDN")));
dataLoad.setCurrentCombReactiveHigh(StringUtils.getBigDecimal(obj.get("DQZHWGFDN")));
dataLoad.setCurrentCombReactiveFlat(StringUtils.getBigDecimal(obj.get("DQZHWGPDN")));
dataLoad.setCurrentCombReactiveValley(StringUtils.getBigDecimal(obj.get("DQZHWGGDN")));
// 电能设置-正向无功
dataLoad.setCurrentForwardReactiveTotal(StringUtils.getBigDecimal(obj.get("DQZXWGZDN")));
dataLoad.setCurrentForwardReactivePeak(StringUtils.getBigDecimal(obj.get("DQZXWGJDN")));
dataLoad.setCurrentForwardReactiveHigh(StringUtils.getBigDecimal(obj.get("DQZXWGFDN")));
dataLoad.setCurrentForwardReactiveFlat(StringUtils.getBigDecimal(obj.get("DQZXWGPDN")));
dataLoad.setCurrentForwardReactiveValley(StringUtils.getBigDecimal(obj.get("DQZXWGGDN")));
// 电能设置-反向无功
dataLoad.setCurrentReverseReactiveTotal(StringUtils.getBigDecimal(obj.get("DQFXWGZDN")));
dataLoad.setCurrentReverseReactivePeak(StringUtils.getBigDecimal(obj.get("DQFXWGJDN")));
dataLoad.setCurrentReverseReactiveHigh(StringUtils.getBigDecimal(obj.get("DQFXWGFDN")));
dataLoad.setCurrentReverseReactiveFlat(StringUtils.getBigDecimal(obj.get("DQFXWGPDN")));
dataLoad.setCurrentReverseReactiveValley(StringUtils.getBigDecimal(obj.get("DQFXWGGDN")));
// 电压+电流 dataLoad.setAbLineVoltage(StringUtils.getBigDecimal(obj.get("ABXDY")));
dataLoad.setPhaseAVoltage(StringUtils.getBigDecimal(obj.get("AXDY"))); dataLoad.setCbLineVoltage(StringUtils.getBigDecimal(obj.get("CBXDY")));
dataLoad.setPhaseBVoltage(StringUtils.getBigDecimal(obj.get("BXDY"))); dataLoad.setAcLineVoltage(StringUtils.getBigDecimal(obj.get("ACXDY")));
dataLoad.setPhaseCVoltage(StringUtils.getBigDecimal(obj.get("CXDY")));
dataLoad.setPhaseACurrent(StringUtils.getBigDecimal(obj.get("AXDL")));
dataLoad.setPhaseBCurrent(StringUtils.getBigDecimal(obj.get("BXDL")));
dataLoad.setPhaseCCurrent(StringUtils.getBigDecimal(obj.get("CXDL")));
dataLoad.setAbLineVoltage(StringUtils.getBigDecimal(obj.get("ABXDY"))); // 频率
dataLoad.setCbLineVoltage(StringUtils.getBigDecimal(obj.get("CBXDY"))); dataLoad.setFrequency(StringUtils.getBigDecimal(obj.get("PL")));
dataLoad.setAcLineVoltage(StringUtils.getBigDecimal(obj.get("ACXDY")));
// 频率 // 功率 有功+总+无功+无总+视在
dataLoad.setFrequency(StringUtils.getBigDecimal(obj.get("PL"))); dataLoad.setPhaseAActivePower(StringUtils.getBigDecimal(obj.get("AXYGGL")));
dataLoad.setPhaseBActivePower(StringUtils.getBigDecimal(obj.get("BXYGGL")));
dataLoad.setPhaseCActivePower(StringUtils.getBigDecimal(obj.get("CXYGGL")));
dataLoad.setTotalActivePower(StringUtils.getBigDecimal(obj.get("ZYGGL")));
dataLoad.setPhaseAReactivePower(StringUtils.getBigDecimal(obj.get("AXWGGL")));
dataLoad.setPhaseBReactivePower(StringUtils.getBigDecimal(obj.get("BXWGGL")));
dataLoad.setPhaseCReactivePower(StringUtils.getBigDecimal(obj.get("CXWGGL")));
dataLoad.setTotalReactivePower(StringUtils.getBigDecimal(obj.get("ZWGGL")));
dataLoad.setPhaseAApparentPower(StringUtils.getBigDecimal(obj.get("AXSZGL")));
dataLoad.setPhaseBApparentPower(StringUtils.getBigDecimal(obj.get("BXSZGL")));
dataLoad.setPhaseCApparentPower(StringUtils.getBigDecimal(obj.get("CXSZGL")));
dataLoad.setTotalApparentPower(StringUtils.getBigDecimal(obj.get("ZSZGL")));
// 功率 有功+总+无功+无总+视在 // 功率因数
dataLoad.setPhaseAActivePower(StringUtils.getBigDecimal(obj.get("AXYGGL"))); dataLoad.setPhaseAPowerFactor(StringUtils.getBigDecimal(obj.get("AXGLYS")));
dataLoad.setPhaseBActivePower(StringUtils.getBigDecimal(obj.get("BXYGGL"))); dataLoad.setPhaseBPowerFactor(StringUtils.getBigDecimal(obj.get("BXGLYS")));
dataLoad.setPhaseCActivePower(StringUtils.getBigDecimal(obj.get("CXYGGL"))); dataLoad.setPhaseCPowerFactor(StringUtils.getBigDecimal(obj.get("CXGLYS")));
dataLoad.setTotalActivePower(StringUtils.getBigDecimal(obj.get("ZYGGL"))); dataLoad.setTotalPowerFactor(StringUtils.getBigDecimal(obj.get("ZGLYS")));
dataLoad.setPhaseAReactivePower(StringUtils.getBigDecimal(obj.get("AXWGGL")));
dataLoad.setPhaseBReactivePower(StringUtils.getBigDecimal(obj.get("BXWGGL")));
dataLoad.setPhaseCReactivePower(StringUtils.getBigDecimal(obj.get("CXWGGL")));
dataLoad.setTotalReactivePower(StringUtils.getBigDecimal(obj.get("ZWGGL")));
dataLoad.setPhaseAApparentPower(StringUtils.getBigDecimal(obj.get("AXSZGL")));
dataLoad.setPhaseBApparentPower(StringUtils.getBigDecimal(obj.get("BXSZGL")));
dataLoad.setPhaseCApparentPower(StringUtils.getBigDecimal(obj.get("CXSZGL")));
dataLoad.setTotalApparentPower(StringUtils.getBigDecimal(obj.get("ZSZGL")));
// 功率因数 // 需量
dataLoad.setPhaseAPowerFactor(StringUtils.getBigDecimal(obj.get("AXGLYS"))); dataLoad.setForwardAcMaxDemand(StringUtils.getBigDecimal(obj.get("ZXYGZDXL")));
dataLoad.setPhaseBPowerFactor(StringUtils.getBigDecimal(obj.get("BXGLYS"))); dataLoad.setReverseAcMaxDemand(StringUtils.getBigDecimal(obj.get("FXYGZDXL")));
dataLoad.setPhaseCPowerFactor(StringUtils.getBigDecimal(obj.get("CXGLYS"))); dataLoad.setDailyForwardMaxDemand(StringUtils.getBigDecimal(obj.get("DRZXYGZDXL")));
dataLoad.setTotalPowerFactor(StringUtils.getBigDecimal(obj.get("ZGLYS")));
// 需量
dataLoad.setForwardAcMaxDemand(StringUtils.getBigDecimal(obj.get("ZXYGZDXL")));
dataLoad.setReverseAcMaxDemand(StringUtils.getBigDecimal(obj.get("FXYGZDXL")));
dataLoad.setDailyForwardMaxDemand(StringUtils.getBigDecimal(obj.get("DRZXYGZDXL")));
}
dataLoad.setCreateBy("system"); dataLoad.setCreateBy("system");
dataLoad.setCreateTime(DateUtils.getNowDate()); dataLoad.setCreateTime(DateUtils.getNowDate());
dataLoad.setUpdateBy("system"); dataLoad.setUpdateBy("system");
@ -766,7 +707,6 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
redisCache.setCacheObject(RedisKeyConstants.AMMETER + SITE_ID + "_" +deviceId, dataLoad); redisCache.setCacheObject(RedisKeyConstants.AMMETER + SITE_ID + "_" +deviceId, dataLoad);
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.AMMETER, "LOAD");
} }
private void dealFXXDailyChargeDate(String deviceId, String dataJson) { private void dealFXXDailyChargeDate(String deviceId, String dataJson) {
@ -805,84 +745,78 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
EmsAmmeterData dataLoad = new EmsAmmeterData(); EmsAmmeterData dataLoad = new EmsAmmeterData();
// 更新时间 // 更新时间
dataLoad.setDataUpdateTime(dataUpdateTime); dataLoad.setDataUpdateTime(dataUpdateTime);
// 点位匹配数据 // 电压+电流
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.AMMETER.getCode()); dataLoad.setPhaseAVoltage(StringUtils.getBigDecimal(obj.get("AXDY")));
if (CollectionUtils.isNotEmpty(pointMatchList)) { dataLoad.setPhaseBVoltage(StringUtils.getBigDecimal(obj.get("BXDY")));
saveDeviceData(pointMatchList, obj, dataLoad); dataLoad.setPhaseCVoltage(StringUtils.getBigDecimal(obj.get("CXDY")));
} else { dataLoad.setPhaseACurrent(StringUtils.getBigDecimal(obj.get("AXDL")));
// 电压+电流 dataLoad.setPhaseBCurrent(StringUtils.getBigDecimal(obj.get("BXDL")));
dataLoad.setPhaseAVoltage(StringUtils.getBigDecimal(obj.get("AXDY"))); dataLoad.setPhaseCCurrent(StringUtils.getBigDecimal(obj.get("CXDL")));
dataLoad.setPhaseBVoltage(StringUtils.getBigDecimal(obj.get("BXDY")));
dataLoad.setPhaseCVoltage(StringUtils.getBigDecimal(obj.get("CXDY")));
dataLoad.setPhaseACurrent(StringUtils.getBigDecimal(obj.get("AXDL")));
dataLoad.setPhaseBCurrent(StringUtils.getBigDecimal(obj.get("BXDL")));
dataLoad.setPhaseCCurrent(StringUtils.getBigDecimal(obj.get("CXDL")));
dataLoad.setAbLineVoltage(StringUtils.getBigDecimal(obj.get("ABXDY"))); dataLoad.setAbLineVoltage(StringUtils.getBigDecimal(obj.get("ABXDY")));
dataLoad.setCbLineVoltage(StringUtils.getBigDecimal(obj.get("BCXDY"))); dataLoad.setCbLineVoltage(StringUtils.getBigDecimal(obj.get("BCXDY")));
dataLoad.setAcLineVoltage(StringUtils.getBigDecimal(obj.get("CAXDY"))); dataLoad.setAcLineVoltage(StringUtils.getBigDecimal(obj.get("CAXDY")));
// 频率 // 频率
dataLoad.setFrequency(StringUtils.getBigDecimal(obj.get("DWPL"))); dataLoad.setFrequency(StringUtils.getBigDecimal(obj.get("DWPL")));
// 功率 // 功率
dataLoad.setPhaseAActivePower(StringUtils.getBigDecimal(obj.get("AXYGGL"))); dataLoad.setPhaseAActivePower(StringUtils.getBigDecimal(obj.get("AXYGGL")));
dataLoad.setPhaseBActivePower(StringUtils.getBigDecimal(obj.get("BXYGGL"))); dataLoad.setPhaseBActivePower(StringUtils.getBigDecimal(obj.get("BXYGGL")));
dataLoad.setPhaseCActivePower(StringUtils.getBigDecimal(obj.get("CXYGGL"))); dataLoad.setPhaseCActivePower(StringUtils.getBigDecimal(obj.get("CXYGGL")));
dataLoad.setTotalActivePower(StringUtils.getBigDecimal(obj.get("ZYGGL"))); dataLoad.setTotalActivePower(StringUtils.getBigDecimal(obj.get("ZYGGL")));
dataLoad.setPhaseAReactivePower(StringUtils.getBigDecimal(obj.get("AXWGGL"))); dataLoad.setPhaseAReactivePower(StringUtils.getBigDecimal(obj.get("AXWGGL")));
dataLoad.setPhaseBReactivePower(StringUtils.getBigDecimal(obj.get("BXWGGL"))); dataLoad.setPhaseBReactivePower(StringUtils.getBigDecimal(obj.get("BXWGGL")));
dataLoad.setPhaseCReactivePower(StringUtils.getBigDecimal(obj.get("CXWGGL"))); dataLoad.setPhaseCReactivePower(StringUtils.getBigDecimal(obj.get("CXWGGL")));
dataLoad.setTotalReactivePower(StringUtils.getBigDecimal(obj.get("ZWGGL"))); dataLoad.setTotalReactivePower(StringUtils.getBigDecimal(obj.get("ZWGGL")));
dataLoad.setTotalApparentPower(StringUtils.getBigDecimal(obj.get("ZSZGL"))); dataLoad.setTotalApparentPower(StringUtils.getBigDecimal(obj.get("ZSZGL")));
dataLoad.setTotalPowerFactor(StringUtils.getBigDecimal(obj.get("ZGLYS"))); dataLoad.setTotalPowerFactor(StringUtils.getBigDecimal(obj.get("ZGLYS")));
// 二次相关数据 // 二次相关数据
dataLoad.setSecondaryAbLineVoltage(StringUtils.getBigDecimal(obj.get("ECABXDY"))); dataLoad.setSecondaryAbLineVoltage(StringUtils.getBigDecimal(obj.get("ECABXDY")));
dataLoad.setSecondaryAPhaseCurrent(StringUtils.getBigDecimal(obj.get("ECAXDL"))); dataLoad.setSecondaryAPhaseCurrent(StringUtils.getBigDecimal(obj.get("ECAXDL")));
dataLoad.setSecondaryAPhaseVoltage(StringUtils.getBigDecimal(obj.get("ECAXDY"))); dataLoad.setSecondaryAPhaseVoltage(StringUtils.getBigDecimal(obj.get("ECAXDY")));
dataLoad.setSecondaryAPowerFactor(StringUtils.getBigDecimal(obj.get("ECAXGLYS"))); dataLoad.setSecondaryAPowerFactor(StringUtils.getBigDecimal(obj.get("ECAXGLYS")));
dataLoad.setSecondaryAApparentPower(StringUtils.getBigDecimal(obj.get("ECAXSZGL"))); dataLoad.setSecondaryAApparentPower(StringUtils.getBigDecimal(obj.get("ECAXSZGL")));
dataLoad.setSecondaryAReactivePower(StringUtils.getBigDecimal(obj.get("ECAXWGGL"))); dataLoad.setSecondaryAReactivePower(StringUtils.getBigDecimal(obj.get("ECAXWGGL")));
dataLoad.setSecondaryAActivePower(StringUtils.getBigDecimal(obj.get("ECAXYGGL"))); dataLoad.setSecondaryAActivePower(StringUtils.getBigDecimal(obj.get("ECAXYGGL")));
dataLoad.setSecondaryBcLineVoltage(StringUtils.getBigDecimal(obj.get("ECBCXDY"))); dataLoad.setSecondaryBcLineVoltage(StringUtils.getBigDecimal(obj.get("ECBCXDY")));
dataLoad.setSecondaryBPhaseCurrent(StringUtils.getBigDecimal(obj.get("ECBXDL"))); dataLoad.setSecondaryBPhaseCurrent(StringUtils.getBigDecimal(obj.get("ECBXDL")));
dataLoad.setSecondaryBPhaseVoltage(StringUtils.getBigDecimal(obj.get("ECBXDY"))); dataLoad.setSecondaryBPhaseVoltage(StringUtils.getBigDecimal(obj.get("ECBXDY")));
dataLoad.setSecondaryBPowerFactor(StringUtils.getBigDecimal(obj.get("ECBXGLYS"))); dataLoad.setSecondaryBPowerFactor(StringUtils.getBigDecimal(obj.get("ECBXGLYS")));
dataLoad.setSecondaryBApparentPower(StringUtils.getBigDecimal(obj.get("ECBXSZGL"))); dataLoad.setSecondaryBApparentPower(StringUtils.getBigDecimal(obj.get("ECBXSZGL")));
dataLoad.setSecondaryBReactivePower(StringUtils.getBigDecimal(obj.get("ECBXWGGL"))); dataLoad.setSecondaryBReactivePower(StringUtils.getBigDecimal(obj.get("ECBXWGGL")));
dataLoad.setSecondaryBActivePower(StringUtils.getBigDecimal(obj.get("ECBXYGGL"))); dataLoad.setSecondaryBActivePower(StringUtils.getBigDecimal(obj.get("ECBXYGGL")));
dataLoad.setSecondaryCaLineVoltage(StringUtils.getBigDecimal(obj.get("ECCAXDY"))); dataLoad.setSecondaryCaLineVoltage(StringUtils.getBigDecimal(obj.get("ECCAXDY")));
dataLoad.setSecondaryCPhaseCurrent(StringUtils.getBigDecimal(obj.get("ECCXDL"))); dataLoad.setSecondaryCPhaseCurrent(StringUtils.getBigDecimal(obj.get("ECCXDL")));
dataLoad.setSecondaryCPhaseVoltage(StringUtils.getBigDecimal(obj.get("ECCXDY"))); dataLoad.setSecondaryCPhaseVoltage(StringUtils.getBigDecimal(obj.get("ECCXDY")));
dataLoad.setSecondaryCPowerFactor(StringUtils.getBigDecimal(obj.get("ECCXGLYS"))); dataLoad.setSecondaryCPowerFactor(StringUtils.getBigDecimal(obj.get("ECCXGLYS")));
dataLoad.setSecondaryCApparentPower(StringUtils.getBigDecimal(obj.get("ECCXSZGL"))); dataLoad.setSecondaryCApparentPower(StringUtils.getBigDecimal(obj.get("ECCXSZGL")));
dataLoad.setSecondaryCReactivePower(StringUtils.getBigDecimal(obj.get("ECCXWGGL"))); dataLoad.setSecondaryCReactivePower(StringUtils.getBigDecimal(obj.get("ECCXWGGL")));
dataLoad.setSecondaryCActivePower(StringUtils.getBigDecimal(obj.get("ECCXYGGL"))); dataLoad.setSecondaryCActivePower(StringUtils.getBigDecimal(obj.get("ECCXYGGL")));
dataLoad.setSecondaryGridFrequency(StringUtils.getBigDecimal(obj.get("ECDWPL"))); dataLoad.setSecondaryGridFrequency(StringUtils.getBigDecimal(obj.get("ECDWPL")));
dataLoad.setSecondaryReverseReactiveEnergy(StringUtils.getBigDecimal(obj.get("ECFXWGDN"))); dataLoad.setSecondaryReverseReactiveEnergy(StringUtils.getBigDecimal(obj.get("ECFXWGDN")));
dataLoad.setSecondaryNegativeActiveEnergy(StringUtils.getBigDecimal(obj.get("ECFXYGDN"))); dataLoad.setSecondaryNegativeActiveEnergy(StringUtils.getBigDecimal(obj.get("ECFXYGDN")));
dataLoad.setSecondaryTotalPowerFactor(StringUtils.getBigDecimal(obj.get("ECZGLYS"))); dataLoad.setSecondaryTotalPowerFactor(StringUtils.getBigDecimal(obj.get("ECZGLYS")));
dataLoad.setSecondaryTotalApparentPower(StringUtils.getBigDecimal(obj.get("ECZSZFL"))); dataLoad.setSecondaryTotalApparentPower(StringUtils.getBigDecimal(obj.get("ECZSZFL")));
dataLoad.setSecondaryTotalReactivePower(StringUtils.getBigDecimal(obj.get("ECZWGGL"))); dataLoad.setSecondaryTotalReactivePower(StringUtils.getBigDecimal(obj.get("ECZWGGL")));
dataLoad.setSecondaryPositiveReactiveEnergy(StringUtils.getBigDecimal(obj.get("ECZXWGDN"))); dataLoad.setSecondaryPositiveReactiveEnergy(StringUtils.getBigDecimal(obj.get("ECZXWGDN")));
dataLoad.setSecondaryPositiveActiveEnergy(StringUtils.getBigDecimal(obj.get("ECZXYGDN"))); dataLoad.setSecondaryPositiveActiveEnergy(StringUtils.getBigDecimal(obj.get("ECZXYGDN")));
dataLoad.setSecondaryTotalActivePower(StringUtils.getBigDecimal(obj.get("ECZYGGL"))); dataLoad.setSecondaryTotalActivePower(StringUtils.getBigDecimal(obj.get("ECZYGGL")));
// 需量 // 需量
dataLoad.setReverseReactiveEnergyEqMinus(StringUtils.getBigDecimal(obj.get("FXWGDN"))); dataLoad.setReverseReactiveEnergyEqMinus(StringUtils.getBigDecimal(obj.get("FXWGDN")));
dataLoad.setReverseActiveEnergyEpMinus(StringUtils.getBigDecimal(obj.get("FXYGDN"))); dataLoad.setReverseActiveEnergyEpMinus(StringUtils.getBigDecimal(obj.get("FXYGDN")));
dataLoad.setPositiveReactiveEnergyEqPlus(StringUtils.getBigDecimal(obj.get("ZXWGDN"))); dataLoad.setPositiveReactiveEnergyEqPlus(StringUtils.getBigDecimal(obj.get("ZXWGDN")));
dataLoad.setPositiveActiveEnergyEpPlus(StringUtils.getBigDecimal(obj.get("ZXYGDN"))); dataLoad.setPositiveActiveEnergyEpPlus(StringUtils.getBigDecimal(obj.get("ZXYGDN")));
// 正反向有功无功电能 // 正反向有功无功电能
dataLoad.setCurrentForwardActiveTotal(StringUtils.getBigDecimal(obj.get("ZXYGDN"))); dataLoad.setCurrentForwardActiveTotal(StringUtils.getBigDecimal(obj.get("ZXYGDN")));
dataLoad.setCurrentReverseActiveTotal(StringUtils.getBigDecimal(obj.get("FXYGDN"))); dataLoad.setCurrentReverseActiveTotal(StringUtils.getBigDecimal(obj.get("FXYGDN")));
dataLoad.setCurrentForwardReactiveTotal(StringUtils.getBigDecimal(obj.get("ZXWGDN"))); dataLoad.setCurrentForwardReactiveTotal(StringUtils.getBigDecimal(obj.get("ZXWGDN")));
dataLoad.setCurrentReverseReactiveTotal(StringUtils.getBigDecimal(obj.get("FXWGDN"))); dataLoad.setCurrentReverseReactiveTotal(StringUtils.getBigDecimal(obj.get("FXWGDN")));
}
dataLoad.setCreateBy("system"); dataLoad.setCreateBy("system");
dataLoad.setCreateTime(DateUtils.getNowDate()); dataLoad.setCreateTime(DateUtils.getNowDate());
dataLoad.setUpdateBy("system"); dataLoad.setUpdateBy("system");
@ -894,8 +828,6 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
redisCache.setCacheObject(RedisKeyConstants.AMMETER + SITE_ID + "_" +deviceId, dataLoad); redisCache.setCacheObject(RedisKeyConstants.AMMETER + SITE_ID + "_" +deviceId, dataLoad);
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.AMMETER, "METE");
// 处理电表每日充放电数据 // 处理电表每日充放电数据
dealAmmeterDailyDate(obj, dataUpdateTime, lastAmmeterData); dealAmmeterDailyDate(obj, dataUpdateTime, lastAmmeterData);
} }

View File

@ -7,11 +7,13 @@ import com.xzzn.common.annotation.Excel;
import com.xzzn.common.constant.RedisKeyConstants; import com.xzzn.common.constant.RedisKeyConstants;
import com.xzzn.common.core.redis.RedisCache; import com.xzzn.common.core.redis.RedisCache;
import com.xzzn.common.enums.DeviceCategory; import com.xzzn.common.enums.DeviceCategory;
import com.xzzn.common.enums.PointType;
import com.xzzn.common.utils.DataUtils; import com.xzzn.common.utils.DataUtils;
import com.xzzn.common.utils.StringUtils; import com.xzzn.common.utils.StringUtils;
import com.xzzn.ems.domain.EmsDevicesSetting; import com.xzzn.ems.domain.EmsDevicesSetting;
import com.xzzn.ems.domain.EmsPointMatch; import com.xzzn.ems.domain.EmsPointMatch;
import com.xzzn.ems.domain.vo.DevicePointMatchInfo; import com.xzzn.ems.domain.vo.DevicePointMatchInfo;
import com.xzzn.ems.domain.vo.StackStatisListVo;
import com.xzzn.ems.enums.DeviceMatchTable; import com.xzzn.ems.enums.DeviceMatchTable;
import com.xzzn.ems.mapper.EmsDevicesSettingMapper; import com.xzzn.ems.mapper.EmsDevicesSettingMapper;
import com.xzzn.ems.mapper.EmsPointMatchMapper; import com.xzzn.ems.mapper.EmsPointMatchMapper;
@ -23,6 +25,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
@ -82,15 +85,31 @@ public class DevicePointMatchDataProcessor {
} }
public List<EmsPointMatch> getDevicePointMatch(String siteId, String deviceId, String deviceCategory) { public List<EmsPointMatch> getDevicePointMatch(String siteId, String deviceId, String deviceCategory) {
return getDevicePointMatch(siteId, deviceId, deviceCategory, false);
}
public List<EmsPointMatch> getDeviceAlarmPointMatch(String siteId, String deviceId, String deviceCategory) {
return getDevicePointMatch(siteId, deviceId, deviceCategory, true);
}
private List<EmsPointMatch> getDevicePointMatch(String siteId, String deviceId, String deviceCategory, boolean isAlarm) {
// List<EmsPointMatch> pointMatchList = new ArrayList<>(); // List<EmsPointMatch> pointMatchList = new ArrayList<>();
// EmsDevicesSetting devicesSetting = emsDevicesSettingMapper.getDeviceBySiteAndDeviceId(deviceId, siteId); // EmsDevicesSetting devicesSetting = emsDevicesSettingMapper.getDeviceBySiteAndDeviceId(deviceId, siteId);
// if (devicesSetting == null) { // if (devicesSetting == null) {
// log.info("未找到设备配置信息siteId: " + siteId + ", deviceId: "+ deviceId); // log.info("未找到设备配置信息siteId: " + siteId + ", deviceId: "+ deviceId);
// return pointMatchList; // return pointMatchList;
// } // }
List<EmsPointMatch> pointMatchList = redisCache.getCacheList(getPointTacthCacheKey(siteId, deviceId, deviceCategory)); List<EmsPointMatch> pointMatchList = redisCache.getCacheList(getPointMacthCacheKey(siteId, deviceCategory));
if (CollectionUtils.isEmpty(pointMatchList)) { if (CollectionUtils.isEmpty(pointMatchList)) {
pointMatchList = emsPointMatchMapper.getDevicePointMatchList(siteId, deviceId, deviceCategory); pointMatchList = emsPointMatchMapper.getDevicePointMatchList(siteId, deviceCategory);
}
if (CollectionUtils.isNotEmpty(pointMatchList)) {
Map<Integer, List<EmsPointMatch>> map = pointMatchList.stream().collect(Collectors.groupingBy(EmsPointMatch::getIsAlarm));
if (isAlarm) {
pointMatchList = map.get(PointType.YES.getCode());
} else {
pointMatchList = map.get(PointType.NO.getCode());
}
} }
return pointMatchList; return pointMatchList;
@ -111,13 +130,12 @@ public class DevicePointMatchDataProcessor {
try { try {
devicePintointMtachInfo.forEach((key, value) -> { devicePintointMtachInfo.forEach((key, value) -> {
// 查询点位是否存在 // 查询点位是否存在
EmsPointMatch dbPoint = emsPointMatchMapper.getOnePointMatch(siteId, deviceId, deviceCategory, value); EmsPointMatch dbPoint = emsPointMatchMapper.getOnePointMatch(siteId, deviceCategory, value);
if (!Objects.isNull(dbPoint)) { if (!Objects.isNull(dbPoint)) {
return; return;
} }
EmsPointMatch pointMatch = new EmsPointMatch(); EmsPointMatch pointMatch = new EmsPointMatch();
pointMatch.setSiteId(siteId); pointMatch.setSiteId(siteId);
pointMatch.setDeviceId(deviceId);
pointMatch.setDeviceCategory(deviceCategory); pointMatch.setDeviceCategory(deviceCategory);
pointMatch.setMatchTable(DeviceMatchTable.getMatchTableByCode(deviceCategory)); pointMatch.setMatchTable(DeviceMatchTable.getMatchTableByCode(deviceCategory));
pointMatch.setMatchField(StringUtils.toUnderScoreCase(key)); pointMatch.setMatchField(StringUtils.toUnderScoreCase(key));
@ -169,12 +187,11 @@ public class DevicePointMatchDataProcessor {
/** /**
* 设置点位缓存key * 设置点位缓存key
* @param siteId * @param siteId
* @param deviceId
* @param deviceCategory * @param deviceCategory
* @return 点位缓存key * @return 点位缓存key
*/ */
public static String getPointTacthCacheKey(String siteId, String deviceId, String deviceCategory) public static String getPointMacthCacheKey(String siteId, String deviceCategory)
{ {
return RedisKeyConstants.POINT_MATCH + deviceCategory + "_" + siteId + "_" + deviceId; return RedisKeyConstants.POINT_MATCH + deviceCategory + "_" + siteId;
} }
} }

View File

@ -177,4 +177,18 @@
where t.`year` = #{currentYear} where t.`year` = #{currentYear}
and t.`month` = #{currentMonth} and t.`month` = #{currentMonth}
</select> </select>
<select id="getConfigListByTimeFrame" resultType="com.xzzn.ems.domain.EmsEnergyPriceConfig">
<include refid="selectEmsEnergyPriceConfigVo"/>
<where>
<if test="siteId != null and siteId != ''">
and site_id = #{siteId}
</if>
<if test="startTime != null and endTime != null">
and STR_TO_DATE(CONCAT(year, '-', month, '-01'), '%Y-%m-%d') between #{startTime} and #{endTime}
</if>
</where>
order by
`year` asc,
`month` desc;
</select>
</mapper> </mapper>

View File

@ -100,4 +100,9 @@
from ems_mqtt_topic_config from ems_mqtt_topic_config
where mqtt_topic = #{strategyTopic} where mqtt_topic = #{strategyTopic}
</select> </select>
<select id="selectOneByTopic" parameterType="String" resultMap="EmsMqttTopicConfigResult">
<include refid="selectEmsMqttTopicConfigVo"/>
where mqtt_topic = #{topic}
</select>
</mapper> </mapper>

View File

@ -24,11 +24,11 @@
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="remark" column="remark" /> <result property="remark" column="remark" />
<result property="deviceId" column="device_id" /> <result property="isAlarm" column="is_alarm" />
</resultMap> </resultMap>
<sql id="selectEmsPointMatchVo"> <sql id="selectEmsPointMatchVo">
select id, point_name, match_table, match_field, site_id, device_category, data_point, data_point_name, data_device, data_unit, ip_address, ip_port, data_type, need_diff_device_id, create_by, create_time, update_by, update_time, remark, device_id from ems_point_match select id, point_name, match_table, match_field, site_id, device_category, data_point, data_point_name, data_device, data_unit, ip_address, ip_port, data_type, need_diff_device_id, create_by, create_time, update_by, update_time, remark, is_alarm from ems_point_match
</sql> </sql>
<select id="selectEmsPointMatchList" parameterType="EmsPointMatch" resultMap="EmsPointMatchResult"> <select id="selectEmsPointMatchList" parameterType="EmsPointMatch" resultMap="EmsPointMatchResult">
@ -76,7 +76,7 @@
<if test="updateBy != null">update_by,</if> <if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if> <if test="updateTime != null">update_time,</if>
<if test="remark != null">remark,</if> <if test="remark != null">remark,</if>
<if test="deviceId != null">device_id,</if> <if test="isAlarm != null">is_alarm,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="pointName != null">#{pointName},</if> <if test="pointName != null">#{pointName},</if>
@ -97,7 +97,7 @@
<if test="updateBy != null">#{updateBy},</if> <if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if> <if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if> <if test="remark != null">#{remark},</if>
<if test="deviceId != null">#{deviceId},</if> <if test="isAlarm != null">#{isAlarm},</if>
</trim> </trim>
</insert> </insert>
@ -122,7 +122,7 @@
<if test="updateBy != null">update_by = #{updateBy},</if> <if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if> <if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if> <if test="remark != null">remark = #{remark},</if>
<if test="deviceId != null">device_id = #{deviceId},</if> <if test="isAlarm != null">is_alarm = #{isAlarm},</if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>
@ -380,6 +380,9 @@
<if test="ipPort != null"> <if test="ipPort != null">
and t.ip_port = #{ipPort} and t.ip_port = #{ipPort}
</if> </if>
<if test="isAlarm != null">
and t.is_alarm = #{isAlarm}
</if>
</select> </select>
<select id="getClusterDevicePoints" resultType="com.xzzn.ems.domain.vo.PointQueryResponse"> <select id="getClusterDevicePoints" resultType="com.xzzn.ems.domain.vo.PointQueryResponse">
@ -408,6 +411,9 @@
<if test="deviceCategory != null and deviceCategory != ''"> <if test="deviceCategory != null and deviceCategory != ''">
and t.device_category = #{deviceCategory} and t.device_category = #{deviceCategory}
</if> </if>
<if test="isAlarm != null">
and t.is_alarm = #{isAlarm}
</if>
) as tmp ) as tmp
where 1=1 where 1=1
<if test="pointName != null and pointName != ''"> <if test="pointName != null and pointName != ''">
@ -434,7 +440,6 @@
<include refid="selectEmsPointMatchVo"/> <include refid="selectEmsPointMatchVo"/>
where site_id = #{siteId} where site_id = #{siteId}
and device_category = #{deviceCategory} and device_category = #{deviceCategory}
and device_id = #{deviceId}
and data_point = #{dataPoint} and data_point = #{dataPoint}
order by update_time desc order by update_time desc
limit 1 limit 1
@ -444,6 +449,5 @@
<include refid="selectEmsPointMatchVo"/> <include refid="selectEmsPointMatchVo"/>
where site_id = #{siteId} where site_id = #{siteId}
and device_category = #{deviceCategory} and device_category = #{deviceCategory}
and device_id = #{deviceId}
</select> </select>
</mapper> </mapper>