重构
This commit is contained in:
@ -8,6 +8,7 @@ import com.xzzn.common.enums.BusinessType;
|
|||||||
import com.xzzn.ems.domain.EmsPointConfig;
|
import com.xzzn.ems.domain.EmsPointConfig;
|
||||||
import com.xzzn.ems.domain.vo.ImportPointTemplateRequest;
|
import com.xzzn.ems.domain.vo.ImportPointTemplateRequest;
|
||||||
import com.xzzn.ems.domain.vo.PointConfigCurveRequest;
|
import com.xzzn.ems.domain.vo.PointConfigCurveRequest;
|
||||||
|
import com.xzzn.ems.domain.vo.PointConfigGenerateRecentRequest;
|
||||||
import com.xzzn.ems.domain.vo.PointConfigLatestValueRequest;
|
import com.xzzn.ems.domain.vo.PointConfigLatestValueRequest;
|
||||||
import com.xzzn.ems.service.IEmsPointConfigService;
|
import com.xzzn.ems.service.IEmsPointConfigService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -93,4 +94,10 @@ public class EmsPointConfigController extends BaseController {
|
|||||||
public AjaxResult curve(@RequestBody PointConfigCurveRequest request) {
|
public AjaxResult curve(@RequestBody PointConfigCurveRequest request) {
|
||||||
return success(pointConfigService.getCurveData(request));
|
return success(pointConfigService.getCurveData(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Log(title = "点位配置", businessType = BusinessType.INSERT)
|
||||||
|
@PostMapping("/generateRecent7Days")
|
||||||
|
public AjaxResult generateRecent7Days(@Valid @RequestBody PointConfigGenerateRecentRequest request) {
|
||||||
|
return success(pointConfigService.generateRecent7DaysData(request));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,6 +52,15 @@ public class EmsSiteMonitorController extends BaseController{
|
|||||||
return success(iSingleSiteService.getSiteMonitorDataVo(siteId));
|
return success(iSingleSiteService.getSiteMonitorDataVo(siteId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取单站首页总累计运行数据(基于日表)
|
||||||
|
*/
|
||||||
|
@GetMapping("/homeTotalView")
|
||||||
|
public AjaxResult getSingleSiteHomeTotalView(@RequestParam String siteId)
|
||||||
|
{
|
||||||
|
return success(iSingleSiteService.getSiteMonitorTotalDataVo(siteId));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 单站监控-设备监控-实时运行头部数据
|
* 单站监控-设备监控-实时运行头部数据
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -134,6 +134,17 @@ public class EmsStatisticalReportController extends BaseController
|
|||||||
return getDataTable(dataList);
|
return getDataTable(dataList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 统计报表-电表报表(直接基于 ems_daily_energy_data)
|
||||||
|
*/
|
||||||
|
@GetMapping("/getAmmeterDataFromDaily")
|
||||||
|
public TableDataInfo getAmmeterDataFromDaily(StatisAmmeterDateRequest requestVo)
|
||||||
|
{
|
||||||
|
startPage();
|
||||||
|
List<AmmeterStatisListVo> dataList = ieEmsStatsReportService.getAmmeterDataResult(requestVo);
|
||||||
|
return getDataTable(dataList);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出电表报表
|
* 导出电表报表
|
||||||
*/
|
*/
|
||||||
@ -145,6 +156,17 @@ public class EmsStatisticalReportController extends BaseController
|
|||||||
ieEmsStatsReportService.exportAmmeterData(response, requestVo);
|
ieEmsStatsReportService.exportAmmeterData(response, requestVo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出电表报表(直接基于 ems_daily_energy_data)
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('system:ammeterData:export')")
|
||||||
|
@Log(title = "电表报表", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/exportAmmeterDataFromDaily")
|
||||||
|
public void exportAmmeterDataFromDaily(HttpServletResponse response, StatisAmmeterDateRequest requestVo)
|
||||||
|
{
|
||||||
|
ieEmsStatsReportService.exportAmmeterData(response, requestVo);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 概率统计-电表收益报表
|
* 概率统计-电表收益报表
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -25,10 +25,6 @@ public class EmsDailyChargeData extends BaseEntity
|
|||||||
@Excel(name = "站点id")
|
@Excel(name = "站点id")
|
||||||
private String siteId;
|
private String siteId;
|
||||||
|
|
||||||
/** 设备唯一标识符 */
|
|
||||||
@Excel(name = "设备唯一标识符")
|
|
||||||
private String deviceId;
|
|
||||||
|
|
||||||
/** 数据日期:yyyy-MM-dd */
|
/** 数据日期:yyyy-MM-dd */
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
@Excel(name = "数据日期:yyyy-MM-dd", width = 30, dateFormat = "yyyy-MM-dd")
|
@Excel(name = "数据日期:yyyy-MM-dd", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
@ -50,6 +46,14 @@ public class EmsDailyChargeData extends BaseEntity
|
|||||||
@Excel(name = "当日放电量")
|
@Excel(name = "当日放电量")
|
||||||
private BigDecimal dischargeData;
|
private BigDecimal dischargeData;
|
||||||
|
|
||||||
|
/** 总收入 */
|
||||||
|
@Excel(name = "总收入")
|
||||||
|
private BigDecimal totalRevenue;
|
||||||
|
|
||||||
|
/** 当日实时收入 */
|
||||||
|
@Excel(name = "当日实时收入")
|
||||||
|
private BigDecimal dayRevenue;
|
||||||
|
|
||||||
public void setId(Long id)
|
public void setId(Long id)
|
||||||
{
|
{
|
||||||
this.id = id;
|
this.id = id;
|
||||||
@ -70,16 +74,6 @@ public class EmsDailyChargeData extends BaseEntity
|
|||||||
return siteId;
|
return siteId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDeviceId(String deviceId)
|
|
||||||
{
|
|
||||||
this.deviceId = deviceId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDeviceId()
|
|
||||||
{
|
|
||||||
return deviceId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDateTime(Date dateTime)
|
public void setDateTime(Date dateTime)
|
||||||
{
|
{
|
||||||
this.dateTime = dateTime;
|
this.dateTime = dateTime;
|
||||||
@ -130,17 +124,38 @@ public class EmsDailyChargeData extends BaseEntity
|
|||||||
return dischargeData;
|
return dischargeData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setTotalRevenue(BigDecimal totalRevenue)
|
||||||
|
{
|
||||||
|
this.totalRevenue = totalRevenue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getTotalRevenue()
|
||||||
|
{
|
||||||
|
return totalRevenue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDayRevenue(BigDecimal dayRevenue)
|
||||||
|
{
|
||||||
|
this.dayRevenue = dayRevenue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getDayRevenue()
|
||||||
|
{
|
||||||
|
return dayRevenue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||||
.append("id", getId())
|
.append("id", getId())
|
||||||
.append("siteId", getSiteId())
|
.append("siteId", getSiteId())
|
||||||
.append("deviceId", getDeviceId())
|
|
||||||
.append("dateTime", getDateTime())
|
.append("dateTime", getDateTime())
|
||||||
.append("totalChargeData", getTotalChargeData())
|
.append("totalChargeData", getTotalChargeData())
|
||||||
.append("totalDischargeData", getTotalDischargeData())
|
.append("totalDischargeData", getTotalDischargeData())
|
||||||
.append("chargeData", getChargeData())
|
.append("chargeData", getChargeData())
|
||||||
.append("dischargeData", getDischargeData())
|
.append("dischargeData", getDischargeData())
|
||||||
|
.append("totalRevenue", getTotalRevenue())
|
||||||
|
.append("dayRevenue", getDayRevenue())
|
||||||
.append("createBy", getCreateBy())
|
.append("createBy", getCreateBy())
|
||||||
.append("createTime", getCreateTime())
|
.append("createTime", getCreateTime())
|
||||||
.append("updateBy", getUpdateBy())
|
.append("updateBy", getUpdateBy())
|
||||||
|
|||||||
@ -30,13 +30,9 @@ public class EmsDailyEnergyData extends BaseEntity
|
|||||||
@Excel(name = "数据日期:yyyy-MM-dd", width = 30, dateFormat = "yyyy-MM-dd")
|
@Excel(name = "数据日期:yyyy-MM-dd", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
private Date dataDate;
|
private Date dataDate;
|
||||||
|
|
||||||
/** 总收入 */
|
/** 数据小时(0-23) */
|
||||||
@Excel(name = "总收入")
|
@Excel(name = "数据小时(0-23)")
|
||||||
private BigDecimal totalRevenue;
|
private Integer dataHour;
|
||||||
|
|
||||||
/** 当日实时收入 */
|
|
||||||
@Excel(name = "当日实时收入")
|
|
||||||
private BigDecimal dayRevenue;
|
|
||||||
|
|
||||||
/** 尖峰时段充电差值 */
|
/** 尖峰时段充电差值 */
|
||||||
@Excel(name = "尖峰时段充电差值")
|
@Excel(name = "尖峰时段充电差值")
|
||||||
@ -71,6 +67,7 @@ public class EmsDailyEnergyData extends BaseEntity
|
|||||||
private BigDecimal valleyDischargeDiff;
|
private BigDecimal valleyDischargeDiff;
|
||||||
|
|
||||||
/** 差值计算时间(如2025-10-10 23:59:00) */
|
/** 差值计算时间(如2025-10-10 23:59:00) */
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
@Excel(name = "差值计算时间", readConverterExp = "如=2025-10-10,2=3:59:00")
|
@Excel(name = "差值计算时间", readConverterExp = "如=2025-10-10,2=3:59:00")
|
||||||
private Date calcTime;
|
private Date calcTime;
|
||||||
|
|
||||||
@ -104,24 +101,14 @@ public class EmsDailyEnergyData extends BaseEntity
|
|||||||
return dataDate;
|
return dataDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTotalRevenue(BigDecimal totalRevenue)
|
public void setDataHour(Integer dataHour)
|
||||||
{
|
{
|
||||||
this.totalRevenue = totalRevenue;
|
this.dataHour = dataHour;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BigDecimal getTotalRevenue()
|
public Integer getDataHour()
|
||||||
{
|
{
|
||||||
return totalRevenue;
|
return dataHour;
|
||||||
}
|
|
||||||
|
|
||||||
public void setDayRevenue(BigDecimal dayRevenue)
|
|
||||||
{
|
|
||||||
this.dayRevenue = dayRevenue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getDayRevenue()
|
|
||||||
{
|
|
||||||
return dayRevenue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPeakChargeDiff(BigDecimal peakChargeDiff)
|
public void setPeakChargeDiff(BigDecimal peakChargeDiff)
|
||||||
@ -220,8 +207,7 @@ public class EmsDailyEnergyData extends BaseEntity
|
|||||||
.append("id", getId())
|
.append("id", getId())
|
||||||
.append("siteId", getSiteId())
|
.append("siteId", getSiteId())
|
||||||
.append("dataDate", getDataDate())
|
.append("dataDate", getDataDate())
|
||||||
.append("totalRevenue", getTotalRevenue())
|
.append("dataHour", getDataHour())
|
||||||
.append("dayRevenue", getDayRevenue())
|
|
||||||
.append("peakChargeDiff", getPeakChargeDiff())
|
.append("peakChargeDiff", getPeakChargeDiff())
|
||||||
.append("peakDischargeDiff", getPeakDischargeDiff())
|
.append("peakDischargeDiff", getPeakDischargeDiff())
|
||||||
.append("highChargeDiff", getHighChargeDiff())
|
.append("highChargeDiff", getHighChargeDiff())
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.xzzn.ems.domain.vo;
|
|||||||
|
|
||||||
public class PointConfigLatestValueItemVo {
|
public class PointConfigLatestValueItemVo {
|
||||||
private String siteId;
|
private String siteId;
|
||||||
|
private String pointId;
|
||||||
private String deviceId;
|
private String deviceId;
|
||||||
private String dataKey;
|
private String dataKey;
|
||||||
|
|
||||||
@ -13,6 +14,14 @@ public class PointConfigLatestValueItemVo {
|
|||||||
this.siteId = siteId;
|
this.siteId = siteId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getPointId() {
|
||||||
|
return pointId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPointId(String pointId) {
|
||||||
|
this.pointId = pointId;
|
||||||
|
}
|
||||||
|
|
||||||
public String getDeviceId() {
|
public String getDeviceId() {
|
||||||
return deviceId;
|
return deviceId;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import java.util.Date;
|
|||||||
|
|
||||||
public class PointConfigLatestValueVo {
|
public class PointConfigLatestValueVo {
|
||||||
private String siteId;
|
private String siteId;
|
||||||
|
private String pointId;
|
||||||
private String deviceId;
|
private String deviceId;
|
||||||
private String dataKey;
|
private String dataKey;
|
||||||
private Object pointValue;
|
private Object pointValue;
|
||||||
@ -17,6 +18,14 @@ public class PointConfigLatestValueVo {
|
|||||||
this.siteId = siteId;
|
this.siteId = siteId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getPointId() {
|
||||||
|
return pointId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPointId(String pointId) {
|
||||||
|
this.pointId = pointId;
|
||||||
|
}
|
||||||
|
|
||||||
public String getDeviceId() {
|
public String getDeviceId() {
|
||||||
return deviceId;
|
return deviceId;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -69,6 +69,17 @@ public interface EmsDailyChargeDataMapper
|
|||||||
// 插入或更新站点每日充放电数据
|
// 插入或更新站点每日充放电数据
|
||||||
public void insertOrUpdateData(EmsDailyChargeData emsDailyChargeData);
|
public void insertOrUpdateData(EmsDailyChargeData emsDailyChargeData);
|
||||||
|
|
||||||
|
// 按站点+日期(天)查询当日已存在记录
|
||||||
|
public EmsDailyChargeData selectBySiteIdAndDateTime(@Param("siteId") String siteId,
|
||||||
|
@Param("dateTime") Date dateTime);
|
||||||
|
|
||||||
|
// 按站点+日期(天)更新收入字段
|
||||||
|
public int updateRevenueBySiteAndDate(@Param("siteId") String siteId,
|
||||||
|
@Param("dateTime") Date dateTime,
|
||||||
|
@Param("totalRevenue") BigDecimal totalRevenue,
|
||||||
|
@Param("dayRevenue") BigDecimal dayRevenue,
|
||||||
|
@Param("updateBy") String updateBy);
|
||||||
|
|
||||||
// 获取所有站点总充总放
|
// 获取所有站点总充总放
|
||||||
public Map<String, BigDecimal> getAllSiteChargeData(@Param("nowData")String nowData, @Param("siteId")String siteId);
|
public Map<String, BigDecimal> getAllSiteChargeData(@Param("nowData")String nowData, @Param("siteId")String siteId);
|
||||||
|
|
||||||
|
|||||||
@ -68,6 +68,12 @@ public interface EmsDailyEnergyDataMapper
|
|||||||
|
|
||||||
// 获取站点某日电表数据
|
// 获取站点某日电表数据
|
||||||
public EmsDailyEnergyData getDataByDate(@Param("siteId")String siteId,@Param("today") String today);
|
public EmsDailyEnergyData getDataByDate(@Param("siteId")String siteId,@Param("today") String today);
|
||||||
|
|
||||||
|
// 按站点+日期+小时查询当小时已存在记录
|
||||||
|
public EmsDailyEnergyData selectBySiteIdAndDateHour(@Param("siteId") String siteId,
|
||||||
|
@Param("dataDate") java.util.Date dataDate,
|
||||||
|
@Param("dataHour") Integer dataHour);
|
||||||
|
|
||||||
// 插入或更新每日尖峰平谷差值
|
// 插入或更新每日尖峰平谷差值
|
||||||
public void insertOrUpdateData(EmsDailyEnergyData energyData);
|
public void insertOrUpdateData(EmsDailyEnergyData energyData);
|
||||||
// 电表报表
|
// 电表报表
|
||||||
|
|||||||
@ -17,6 +17,8 @@ public interface EmsPointConfigMapper {
|
|||||||
|
|
||||||
int updateEmsPointConfig(EmsPointConfig emsPointConfig);
|
int updateEmsPointConfig(EmsPointConfig emsPointConfig);
|
||||||
|
|
||||||
|
int updateEmsPointConfigForImport(EmsPointConfig emsPointConfig);
|
||||||
|
|
||||||
int deleteEmsPointConfigById(Long id);
|
int deleteEmsPointConfigById(Long id);
|
||||||
|
|
||||||
int deleteEmsPointConfigByIds(Long[] ids);
|
int deleteEmsPointConfigByIds(Long[] ids);
|
||||||
|
|||||||
@ -9,6 +9,8 @@ import java.util.List;
|
|||||||
* 单站监控字段点位映射 Mapper
|
* 单站监控字段点位映射 Mapper
|
||||||
*/
|
*/
|
||||||
public interface EmsSiteMonitorPointMatchMapper {
|
public interface EmsSiteMonitorPointMatchMapper {
|
||||||
|
List<String> selectDistinctSiteIds();
|
||||||
|
|
||||||
List<EmsSiteMonitorPointMatch> selectBySiteId(@Param("siteId") String siteId);
|
List<EmsSiteMonitorPointMatch> selectBySiteId(@Param("siteId") String siteId);
|
||||||
|
|
||||||
int deleteBySiteId(@Param("siteId") String siteId);
|
int deleteBySiteId(@Param("siteId") String siteId);
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import com.xzzn.ems.domain.EmsPointConfig;
|
|||||||
import com.xzzn.ems.domain.vo.ImportPointTemplateRequest;
|
import com.xzzn.ems.domain.vo.ImportPointTemplateRequest;
|
||||||
import com.xzzn.ems.domain.vo.PointConfigCurveRequest;
|
import com.xzzn.ems.domain.vo.PointConfigCurveRequest;
|
||||||
import com.xzzn.ems.domain.vo.PointConfigCurveValueVo;
|
import com.xzzn.ems.domain.vo.PointConfigCurveValueVo;
|
||||||
|
import com.xzzn.ems.domain.vo.PointConfigGenerateRecentRequest;
|
||||||
import com.xzzn.ems.domain.vo.PointConfigLatestValueRequest;
|
import com.xzzn.ems.domain.vo.PointConfigLatestValueRequest;
|
||||||
import com.xzzn.ems.domain.vo.PointConfigLatestValueVo;
|
import com.xzzn.ems.domain.vo.PointConfigLatestValueVo;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -30,4 +31,6 @@ public interface IEmsPointConfigService {
|
|||||||
List<PointConfigLatestValueVo> getLatestValues(PointConfigLatestValueRequest request);
|
List<PointConfigLatestValueVo> getLatestValues(PointConfigLatestValueRequest request);
|
||||||
|
|
||||||
List<PointConfigCurveValueVo> getCurveData(PointConfigCurveRequest request);
|
List<PointConfigCurveValueVo> getCurveData(PointConfigCurveRequest request);
|
||||||
|
|
||||||
|
String generateRecent7DaysData(PointConfigGenerateRecentRequest request);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,8 @@ public interface ISingleSiteService
|
|||||||
|
|
||||||
public SiteMonitorHomeVo getSiteMonitorDataVo(String siteId);
|
public SiteMonitorHomeVo getSiteMonitorDataVo(String siteId);
|
||||||
|
|
||||||
|
public SiteMonitorHomeVo getSiteMonitorTotalDataVo(String siteId);
|
||||||
|
|
||||||
|
|
||||||
public SiteMonitorRunningHeadInfoVo getSiteRunningHeadInfo(String siteId);
|
public SiteMonitorRunningHeadInfoVo getSiteRunningHeadInfo(String siteId);
|
||||||
|
|
||||||
|
|||||||
@ -204,24 +204,7 @@ public class InfluxPointDataWriter {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
String queryUrl = buildQueryUrl(influxQl);
|
String queryUrl = buildQueryUrl(influxQl);
|
||||||
List<PointValue> values = parseInfluxQlResponse(executeRequestWithResponse(methodOrDefault(readMethod, "GET"), queryUrl));
|
return parseInfluxQlResponse(executeRequestWithResponse(methodOrDefault(readMethod, "GET"), queryUrl));
|
||||||
if (!values.isEmpty()) {
|
|
||||||
return values;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 兼容 pointId 大小写差异
|
|
||||||
String regexQuery = String.format(
|
|
||||||
"SELECT \"value\" FROM \"%s\" WHERE \"site_id\" = '%s' AND \"point_key\" =~ /(?i)^%s$/ " +
|
|
||||||
"AND time >= %dms AND time <= %dms ORDER BY time ASC",
|
|
||||||
measurement,
|
|
||||||
escapeTagValue(normalizedSiteId),
|
|
||||||
escapeRegex(normalizedPointKey),
|
|
||||||
startTime.getTime(),
|
|
||||||
endTime.getTime()
|
|
||||||
);
|
|
||||||
return parseInfluxQlResponse(
|
|
||||||
executeRequestWithResponse(methodOrDefault(readMethod, "GET"), buildQueryUrl(regexQuery))
|
|
||||||
);
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.warn("按 pointKey 查询 InfluxDB 曲线失败: {}", e.getMessage());
|
log.warn("按 pointKey 查询 InfluxDB 曲线失败: {}", e.getMessage());
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -19,6 +19,7 @@ import com.xzzn.common.enums.WorkStatus;
|
|||||||
import com.xzzn.common.exception.ServiceException;
|
import com.xzzn.common.exception.ServiceException;
|
||||||
import com.xzzn.common.utils.DateUtils;
|
import com.xzzn.common.utils.DateUtils;
|
||||||
import com.xzzn.common.utils.StringUtils;
|
import com.xzzn.common.utils.StringUtils;
|
||||||
|
import com.xzzn.ems.domain.EmsDailyChargeData;
|
||||||
import com.xzzn.ems.domain.EmsDevicesSetting;
|
import com.xzzn.ems.domain.EmsDevicesSetting;
|
||||||
import com.xzzn.ems.domain.EmsPointEnumMatch;
|
import com.xzzn.ems.domain.EmsPointEnumMatch;
|
||||||
import com.xzzn.ems.domain.EmsPointConfig;
|
import com.xzzn.ems.domain.EmsPointConfig;
|
||||||
@ -32,11 +33,14 @@ import com.xzzn.ems.domain.vo.PointDataRequest;
|
|||||||
import com.xzzn.ems.domain.vo.PointQueryResponse;
|
import com.xzzn.ems.domain.vo.PointQueryResponse;
|
||||||
import com.xzzn.ems.domain.vo.SiteMonitorDataSaveItemVo;
|
import com.xzzn.ems.domain.vo.SiteMonitorDataSaveItemVo;
|
||||||
import com.xzzn.ems.domain.vo.SiteMonitorDataSaveRequest;
|
import com.xzzn.ems.domain.vo.SiteMonitorDataSaveRequest;
|
||||||
|
import com.xzzn.ems.domain.vo.SiteMonitorDataVo;
|
||||||
import com.xzzn.ems.domain.vo.SiteMonitorProjectDisplayVo;
|
import com.xzzn.ems.domain.vo.SiteMonitorProjectDisplayVo;
|
||||||
import com.xzzn.ems.domain.vo.SiteMonitorProjectPointMappingSaveRequest;
|
import com.xzzn.ems.domain.vo.SiteMonitorProjectPointMappingSaveRequest;
|
||||||
import com.xzzn.ems.domain.vo.SiteMonitorProjectPointMappingVo;
|
import com.xzzn.ems.domain.vo.SiteMonitorProjectPointMappingVo;
|
||||||
import com.xzzn.ems.domain.vo.WorkStatusEnumMappingVo;
|
import com.xzzn.ems.domain.vo.WorkStatusEnumMappingVo;
|
||||||
import com.xzzn.ems.mapper.EmsBatteryDataMinutesMapper;
|
import com.xzzn.ems.mapper.EmsBatteryDataMinutesMapper;
|
||||||
|
import com.xzzn.ems.mapper.EmsDailyChargeDataMapper;
|
||||||
|
import com.xzzn.ems.mapper.EmsDailyEnergyDataMapper;
|
||||||
import com.xzzn.ems.mapper.EmsDevicesSettingMapper;
|
import com.xzzn.ems.mapper.EmsDevicesSettingMapper;
|
||||||
import com.xzzn.ems.mapper.EmsPcsSettingMapper;
|
import com.xzzn.ems.mapper.EmsPcsSettingMapper;
|
||||||
import com.xzzn.ems.mapper.EmsPointConfigMapper;
|
import com.xzzn.ems.mapper.EmsPointConfigMapper;
|
||||||
@ -52,6 +56,7 @@ import com.xzzn.system.domain.SysOperLog;
|
|||||||
import com.xzzn.system.service.ISysOperLogService;
|
import com.xzzn.system.service.ISysOperLogService;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
@ -123,6 +128,12 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService
|
|||||||
private static final long PROJECT_DISPLAY_CACHE_TTL_MS = 15_000L;
|
private static final long PROJECT_DISPLAY_CACHE_TTL_MS = 15_000L;
|
||||||
private static final int MONITOR_POINT_MATCH_REDIS_TTL_SECONDS = 300;
|
private static final int MONITOR_POINT_MATCH_REDIS_TTL_SECONDS = 300;
|
||||||
private static final int DISPLAY_DEBUG_SAMPLE_SIZE = 20;
|
private static final int DISPLAY_DEBUG_SAMPLE_SIZE = 20;
|
||||||
|
private static final Set<String> HOME_CHARGE_FIELD_SET = new HashSet<>(Arrays.asList(
|
||||||
|
"dayChargedCap", "dayDisChargedCap", "yesterdayChargedCap", "yesterdayDisChargedCap", "totalChargedCap", "totalDischargedCap"
|
||||||
|
));
|
||||||
|
private static final Set<String> HOME_REVENUE_FIELD_SET = new HashSet<>(Arrays.asList(
|
||||||
|
"totalRevenue", "dayRevenue", "yesterdayRevenue"
|
||||||
|
));
|
||||||
@Autowired
|
@Autowired
|
||||||
private EmsDevicesSettingMapper emsDevicesMapper;
|
private EmsDevicesSettingMapper emsDevicesMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -138,6 +149,10 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService
|
|||||||
@Autowired
|
@Autowired
|
||||||
private EmsBatteryDataMinutesMapper emsBatteryDataMinutesMapper;
|
private EmsBatteryDataMinutesMapper emsBatteryDataMinutesMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
private EmsDailyChargeDataMapper emsDailyChargeDataMapper;
|
||||||
|
@Autowired
|
||||||
|
private EmsDailyEnergyDataMapper emsDailyEnergyDataMapper;
|
||||||
|
@Autowired
|
||||||
private EmsBatteryClusterServiceImpl emsBatteryClusterServiceImpl;
|
private EmsBatteryClusterServiceImpl emsBatteryClusterServiceImpl;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ModbusProcessor modbusProcessor;
|
private ModbusProcessor modbusProcessor;
|
||||||
@ -695,7 +710,6 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService
|
|||||||
.filter(fieldCodeSet::contains)
|
.filter(fieldCodeSet::contains)
|
||||||
.forEach(deletedFieldCodeSet::add);
|
.forEach(deletedFieldCodeSet::add);
|
||||||
}
|
}
|
||||||
validatePcsCurvePointMappings(siteId, request.getMappings(), deletedFieldCodeSet);
|
|
||||||
int deletedRows = emsSiteMonitorPointMatchMapper.deleteBySiteId(siteId);
|
int deletedRows = emsSiteMonitorPointMatchMapper.deleteBySiteId(siteId);
|
||||||
|
|
||||||
List<EmsSiteMonitorPointMatch> saveList = new ArrayList<>();
|
List<EmsSiteMonitorPointMatch> saveList = new ArrayList<>();
|
||||||
@ -936,45 +950,6 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService
|
|||||||
return StringUtils.defaultString(deviceCategory) + "-" + StringUtils.defaultString(matchField);
|
return StringUtils.defaultString(deviceCategory) + "-" + StringUtils.defaultString(matchField);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validatePcsCurvePointMappings(String siteId, List<SiteMonitorProjectPointMappingVo> mappings, Set<String> deletedFieldCodeSet) {
|
|
||||||
List<Map<String, Object>> pcsDevices = emsDevicesMapper.getDeviceInfosBySiteIdAndCategory(siteId, DeviceCategory.PCS.getCode());
|
|
||||||
Set<String> pcsDeviceIdSet = new HashSet<>();
|
|
||||||
if (pcsDevices != null) {
|
|
||||||
pcsDevices.stream()
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.map(item -> item.get("id"))
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.map(String::valueOf)
|
|
||||||
.map(String::trim)
|
|
||||||
.filter(StringUtils::isNotBlank)
|
|
||||||
.forEach(pcsDeviceIdSet::add);
|
|
||||||
}
|
|
||||||
validateSingleCurveFieldMapping(FIELD_CURVE_PCS_ACTIVE_POWER, "PCS有功功率曲线点位", pcsDeviceIdSet, mappings, deletedFieldCodeSet);
|
|
||||||
validateSingleCurveFieldMapping(FIELD_CURVE_PCS_REACTIVE_POWER, "PCS无功功率曲线点位", pcsDeviceIdSet, mappings, deletedFieldCodeSet);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void validateSingleCurveFieldMapping(String fieldCode, String fieldName, Set<String> pcsDeviceIdSet,
|
|
||||||
List<SiteMonitorProjectPointMappingVo> mappings, Set<String> deletedFieldCodeSet) {
|
|
||||||
if (deletedFieldCodeSet != null && deletedFieldCodeSet.contains(fieldCode) && !pcsDeviceIdSet.isEmpty()) {
|
|
||||||
throw new ServiceException(fieldName + "不能删除,且配置数量必须与PCS设备数量一致");
|
|
||||||
}
|
|
||||||
Set<String> configuredDeviceIdSet = new HashSet<>();
|
|
||||||
if (mappings != null) {
|
|
||||||
mappings.stream()
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.filter(item -> fieldCode.equals(StringUtils.trim(item.getFieldCode())))
|
|
||||||
.filter(item -> StringUtils.isNotBlank(item.getDataPoint()))
|
|
||||||
.map(SiteMonitorProjectPointMappingVo::getDeviceId)
|
|
||||||
.map(StringUtils::trim)
|
|
||||||
.filter(StringUtils::isNotBlank)
|
|
||||||
.forEach(configuredDeviceIdSet::add);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (configuredDeviceIdSet.size() != pcsDeviceIdSet.size() || !configuredDeviceIdSet.equals(pcsDeviceIdSet)) {
|
|
||||||
throw new ServiceException(String.format("%s数量需与PCS设备数量一致:PCS设备%d个,已配置%d个", fieldName, pcsDeviceIdSet.size(), configuredDeviceIdSet.size()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private SiteMonitorProjectPointMappingVo buildMappingVo(EmsSiteMonitorItem item, EmsSiteMonitorPointMatch pointMatch,
|
private SiteMonitorProjectPointMappingVo buildMappingVo(EmsSiteMonitorItem item, EmsSiteMonitorPointMatch pointMatch,
|
||||||
String deviceId, String deviceName) {
|
String deviceId, String deviceName) {
|
||||||
SiteMonitorProjectPointMappingVo vo = new SiteMonitorProjectPointMappingVo();
|
SiteMonitorProjectPointMappingVo vo = new SiteMonitorProjectPointMappingVo();
|
||||||
@ -1117,6 +1092,7 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService
|
|||||||
Map<String, Object> tjbbLatestMap = safeRedisMap(redisCache.getCacheMap(buildSiteMonitorLatestRedisKey(normalizedSiteId, MODULE_TJBB)));
|
Map<String, Object> tjbbLatestMap = safeRedisMap(redisCache.getCacheMap(buildSiteMonitorLatestRedisKey(normalizedSiteId, MODULE_TJBB)));
|
||||||
Map<String, Map<String, String>> enumDataCodeMapByScope = buildEnumDataCodeMapByScope(normalizedSiteId);
|
Map<String, Map<String, String>> enumDataCodeMapByScope = buildEnumDataCodeMapByScope(normalizedSiteId);
|
||||||
Map<String, PointLatestSnapshot> pointSnapshotCache = new HashMap<>();
|
Map<String, PointLatestSnapshot> pointSnapshotCache = new HashMap<>();
|
||||||
|
HomeRunningSnapshot homeRunningSnapshot = buildHomeRunningSnapshot(normalizedSiteId);
|
||||||
|
|
||||||
List<SiteMonitorProjectDisplayVo> result = new ArrayList<>();
|
List<SiteMonitorProjectDisplayVo> result = new ArrayList<>();
|
||||||
int totalCount = 0;
|
int totalCount = 0;
|
||||||
@ -1138,6 +1114,18 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService
|
|||||||
result.add(vo);
|
result.add(vo);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (MODULE_HOME.equals(mapping.getModuleCode()) && homeRunningSnapshot != null) {
|
||||||
|
String homeFieldKey = resolveHomeFieldKey(mapping.getFieldCode());
|
||||||
|
if (StringUtils.isNotBlank(homeFieldKey)) {
|
||||||
|
String homeFieldValue = homeRunningSnapshot.getValue(homeFieldKey);
|
||||||
|
if (homeFieldValue != null) {
|
||||||
|
vo.setFieldValue(homeFieldValue);
|
||||||
|
vo.setValueTime(homeRunningSnapshot.getValueTime());
|
||||||
|
result.add(vo);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// 与“点位配置列表最新值”一致:按 pointId -> 点位配置(dataKey/deviceId) -> MQTT 最新报文读取
|
// 与“点位配置列表最新值”一致:按 pointId -> 点位配置(dataKey/deviceId) -> MQTT 最新报文读取
|
||||||
PointLatestSnapshot latestSnapshot = null;
|
PointLatestSnapshot latestSnapshot = null;
|
||||||
String dataPoint = StringUtils.trim(mapping.getDataPoint());
|
String dataPoint = StringUtils.trim(mapping.getDataPoint());
|
||||||
@ -1207,6 +1195,91 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private HomeRunningSnapshot buildHomeRunningSnapshot(String siteId) {
|
||||||
|
if (StringUtils.isBlank(siteId)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
HomeRunningSnapshot snapshot = new HomeRunningSnapshot();
|
||||||
|
String today = DateUtils.getDate();
|
||||||
|
Map<String, BigDecimal> totalChargeData = emsDailyChargeDataMapper.getAllSiteChargeData(today, siteId);
|
||||||
|
if (totalChargeData != null) {
|
||||||
|
snapshot.put("totalChargedCap", totalChargeData.get("totalChargedCap"));
|
||||||
|
snapshot.put("totalDischargedCap", totalChargeData.get("totalDischargedCap"));
|
||||||
|
}
|
||||||
|
|
||||||
|
LocalDate now = LocalDate.now();
|
||||||
|
LocalDate yesterday = now.minusDays(1);
|
||||||
|
List<SiteMonitorDataVo> chargeList = emsDailyChargeDataMapper.getSingleSiteChargeData(
|
||||||
|
siteId,
|
||||||
|
DateUtils.toDate(yesterday),
|
||||||
|
DateUtils.toDate(now)
|
||||||
|
);
|
||||||
|
if (!CollectionUtils.isEmpty(chargeList)) {
|
||||||
|
for (SiteMonitorDataVo item : chargeList) {
|
||||||
|
if (item == null || StringUtils.isBlank(item.getAmmeterDate())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (today.equals(item.getAmmeterDate())) {
|
||||||
|
snapshot.put("dayChargedCap", item.getChargedCap());
|
||||||
|
snapshot.put("dayDisChargedCap", item.getDisChargedCap());
|
||||||
|
} else if (DateUtils.getYesterdayDayString().equals(item.getAmmeterDate())) {
|
||||||
|
snapshot.put("yesterdayChargedCap", item.getChargedCap());
|
||||||
|
snapshot.put("yesterdayDisChargedCap", item.getDisChargedCap());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EmsDailyChargeData todayChargeData = emsDailyChargeDataMapper.selectBySiteIdAndDateTime(siteId, DateUtils.toDate(now));
|
||||||
|
EmsDailyChargeData yesterdayChargeData = emsDailyChargeDataMapper.selectBySiteIdAndDateTime(siteId, DateUtils.toDate(yesterday));
|
||||||
|
if (todayChargeData != null) {
|
||||||
|
snapshot.put("totalRevenue", todayChargeData.getTotalRevenue());
|
||||||
|
snapshot.put("dayRevenue", todayChargeData.getDayRevenue());
|
||||||
|
} else {
|
||||||
|
Map<String, BigDecimal> latestRevenueData = emsDailyEnergyDataMapper.getRealTimeRevenue(siteId);
|
||||||
|
if (latestRevenueData != null) {
|
||||||
|
snapshot.put("totalRevenue", latestRevenueData.get("totalRevenue"));
|
||||||
|
snapshot.put("dayRevenue", latestRevenueData.get("dayRevenue"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (yesterdayChargeData != null) {
|
||||||
|
snapshot.put("yesterdayRevenue", yesterdayChargeData.getDayRevenue());
|
||||||
|
}
|
||||||
|
return snapshot;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String resolveHomeFieldKey(String fieldCode) {
|
||||||
|
String normalizedFieldCode = StringUtils.trim(fieldCode);
|
||||||
|
if (StringUtils.isBlank(normalizedFieldCode)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
int splitIndex = normalizedFieldCode.lastIndexOf("__");
|
||||||
|
String fieldKey = splitIndex >= 0 ? normalizedFieldCode.substring(splitIndex + 2) : normalizedFieldCode;
|
||||||
|
if (HOME_CHARGE_FIELD_SET.contains(fieldKey) || HOME_REVENUE_FIELD_SET.contains(fieldKey)) {
|
||||||
|
return fieldKey;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class HomeRunningSnapshot {
|
||||||
|
private final Map<String, String> valueMap = new HashMap<>();
|
||||||
|
private final Date valueTime = new Date();
|
||||||
|
|
||||||
|
public void put(String key, BigDecimal value) {
|
||||||
|
if (StringUtils.isBlank(key) || value == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
valueMap.put(key, value.stripTrailingZeros().toPlainString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValue(String key) {
|
||||||
|
return valueMap.get(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getValueTime() {
|
||||||
|
return valueTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Map<String, Map<String, String>> buildEnumDataCodeMapByScope(String siteId) {
|
private Map<String, Map<String, String>> buildEnumDataCodeMapByScope(String siteId) {
|
||||||
Map<String, Map<String, String>> result = new HashMap<>();
|
Map<String, Map<String, String>> result = new HashMap<>();
|
||||||
if (StringUtils.isBlank(siteId)) {
|
if (StringUtils.isBlank(siteId)) {
|
||||||
|
|||||||
@ -4,11 +4,13 @@ import com.xzzn.common.constant.RedisKeyConstants;
|
|||||||
import com.xzzn.common.core.redis.RedisCache;
|
import com.xzzn.common.core.redis.RedisCache;
|
||||||
import com.xzzn.common.utils.DateUtils;
|
import com.xzzn.common.utils.DateUtils;
|
||||||
import com.xzzn.common.utils.StringUtils;
|
import com.xzzn.common.utils.StringUtils;
|
||||||
|
import com.xzzn.ems.domain.EmsDailyChargeData;
|
||||||
import com.xzzn.ems.domain.EmsDailyEnergyData;
|
import com.xzzn.ems.domain.EmsDailyEnergyData;
|
||||||
import com.xzzn.ems.domain.EmsEnergyPriceConfig;
|
import com.xzzn.ems.domain.EmsEnergyPriceConfig;
|
||||||
import com.xzzn.ems.domain.EmsPriceTimeConfig;
|
import com.xzzn.ems.domain.EmsPriceTimeConfig;
|
||||||
import com.xzzn.ems.domain.vo.EnergyPriceTimeRange;
|
import com.xzzn.ems.domain.vo.EnergyPriceTimeRange;
|
||||||
import com.xzzn.ems.domain.vo.EnergyPriceVo;
|
import com.xzzn.ems.domain.vo.EnergyPriceVo;
|
||||||
|
import com.xzzn.ems.mapper.EmsDailyChargeDataMapper;
|
||||||
import com.xzzn.ems.mapper.EmsDailyEnergyDataMapper;
|
import com.xzzn.ems.mapper.EmsDailyEnergyDataMapper;
|
||||||
import com.xzzn.ems.mapper.EmsEnergyPriceConfigMapper;
|
import com.xzzn.ems.mapper.EmsEnergyPriceConfigMapper;
|
||||||
import com.xzzn.ems.mapper.EmsPriceTimeConfigMapper;
|
import com.xzzn.ems.mapper.EmsPriceTimeConfigMapper;
|
||||||
@ -17,6 +19,7 @@ import com.xzzn.ems.service.IEmsEnergyPriceConfigService;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -45,6 +48,8 @@ public class EmsEnergyPriceConfigServiceImpl implements IEmsEnergyPriceConfigSer
|
|||||||
@Autowired
|
@Autowired
|
||||||
private RedisCache redisCache;
|
private RedisCache redisCache;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
private EmsDailyChargeDataMapper emsDailyChargeDataMapper;
|
||||||
|
@Autowired
|
||||||
private EmsDailyEnergyDataMapper emsDailyEnergyDataMapper;
|
private EmsDailyEnergyDataMapper emsDailyEnergyDataMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -280,22 +285,21 @@ public class EmsEnergyPriceConfigServiceImpl implements IEmsEnergyPriceConfigSer
|
|||||||
BigDecimal dayRevenue = BigDecimal.ZERO;
|
BigDecimal dayRevenue = BigDecimal.ZERO;
|
||||||
BigDecimal yesterdayRevenue = BigDecimal.ZERO;
|
BigDecimal yesterdayRevenue = BigDecimal.ZERO;
|
||||||
// 获取昨日数据
|
// 获取昨日数据
|
||||||
String yesterday = DateUtils.getYesterdayDayString();
|
Date yesterday = DateUtils.toDate(LocalDate.now().minusDays(1));
|
||||||
EmsDailyEnergyData yesterdayData = emsDailyEnergyDataMapper.getDataByDate(siteId, yesterday);
|
EmsDailyChargeData yesterdayData = emsDailyChargeDataMapper.selectBySiteIdAndDateTime(siteId, yesterday);
|
||||||
if (yesterdayData != null) {
|
if (yesterdayData != null) {
|
||||||
yesterdayRevenue = yesterdayData.getDayRevenue() == null ? BigDecimal.ZERO : yesterdayData.getDayRevenue();
|
yesterdayRevenue = yesterdayData.getDayRevenue() == null ? BigDecimal.ZERO : yesterdayData.getDayRevenue();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 当日实时数据
|
// 当日实时数据
|
||||||
String today = DateUtils.getDate();
|
String today = DateUtils.getDate();
|
||||||
EmsDailyEnergyData todayData = emsDailyEnergyDataMapper.getDataByDate(siteId,today);
|
|
||||||
if (todayData == null) {
|
|
||||||
Map<String, BigDecimal> lastData = emsDailyEnergyDataMapper.getRealTimeRevenue(siteId);
|
Map<String, BigDecimal> lastData = emsDailyEnergyDataMapper.getRealTimeRevenue(siteId);
|
||||||
if (lastData != null) {
|
if (lastData != null) {
|
||||||
totalRevenue = lastData.get("totalRevenue") == null ? BigDecimal.ZERO : lastData.get("totalRevenue");
|
totalRevenue = lastData.get("totalRevenue") == null ? BigDecimal.ZERO : lastData.get("totalRevenue");
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
totalRevenue = todayData.getTotalRevenue() == null ? BigDecimal.ZERO : todayData.getTotalRevenue();
|
EmsDailyEnergyData todayData = emsDailyEnergyDataMapper.getDataByDate(siteId,today);
|
||||||
|
if (todayData != null) {
|
||||||
// 获取当月电价
|
// 获取当月电价
|
||||||
int currentMonth = LocalDate.now().getMonthValue();
|
int currentMonth = LocalDate.now().getMonthValue();
|
||||||
int currentYear = LocalDate.now().getYear();
|
int currentYear = LocalDate.now().getYear();
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class EmsPointCalcConfigServiceImpl implements IEmsPointCalcConfigService {
|
public class EmsPointCalcConfigServiceImpl implements IEmsPointCalcConfigService {
|
||||||
private static final Pattern CALC_EXPRESSION_PATTERN = Pattern.compile("^[0-9A-Za-z_+\\-*/().\\s]+$");
|
private static final Pattern CALC_EXPRESSION_PATTERN = Pattern.compile("^[0-9A-Za-z_+\\-*/().,?:<>=!&|\\s]+$");
|
||||||
private static final String CALC_POINT_TYPE = "calc";
|
private static final String CALC_POINT_TYPE = "calc";
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -91,7 +91,7 @@ public class EmsPointCalcConfigServiceImpl implements IEmsPointCalcConfigService
|
|||||||
throw new ServiceException("计算表达式不能为空");
|
throw new ServiceException("计算表达式不能为空");
|
||||||
}
|
}
|
||||||
if (!CALC_EXPRESSION_PATTERN.matcher(expression).matches()) {
|
if (!CALC_EXPRESSION_PATTERN.matcher(expression).matches()) {
|
||||||
throw new ServiceException("计算表达式仅支持数字、字母、下划线、空格和四则运算符");
|
throw new ServiceException("计算表达式仅支持数字、字母、下划线、空格、运算符和函数语法");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -401,13 +401,8 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService
|
|||||||
|
|
||||||
ammeterRevenue.setActiveTotalPrice(activePeakPrice.add(activeHighPrice).add(activeFlatPrice).add(activeValleyPrice));
|
ammeterRevenue.setActiveTotalPrice(activePeakPrice.add(activeHighPrice).add(activeFlatPrice).add(activeValleyPrice));
|
||||||
ammeterRevenue.setReActiveTotalPrice(reActivePeakPrice.add(reActiveHighPrice).add(reActiveFlatPrice).add(reActiveValleyPrice));
|
ammeterRevenue.setReActiveTotalPrice(reActivePeakPrice.add(reActiveHighPrice).add(reActiveFlatPrice).add(reActiveValleyPrice));
|
||||||
// 实际收益=放电价格(尖峰平谷)-充电价格(尖峰平谷)
|
// 实际收益按“放电总价-充电总价”口径计算
|
||||||
ammeterRevenue.setActualRevenue(
|
ammeterRevenue.setActualRevenue(ammeterRevenue.getReActiveTotalPrice().subtract(ammeterRevenue.getActiveTotalPrice()));
|
||||||
reActivePeakPrice.subtract(activePeakPrice)
|
|
||||||
.add(reActiveHighPrice.subtract(activeHighPrice))
|
|
||||||
.add(reActiveFlatPrice.subtract(activeFlatPrice))
|
|
||||||
.add(reActiveValleyPrice.subtract(activeValleyPrice))
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
int weatherMissingCount = 0;
|
int weatherMissingCount = 0;
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import com.xzzn.ems.domain.EmsBatteryData;
|
|||||||
import com.xzzn.ems.domain.EmsBatteryStack;
|
import com.xzzn.ems.domain.EmsBatteryStack;
|
||||||
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.EmsDailyChargeData;
|
||||||
import com.xzzn.ems.domain.EmsDevicesSetting;
|
import com.xzzn.ems.domain.EmsDevicesSetting;
|
||||||
import com.xzzn.ems.domain.EmsEmsData;
|
import com.xzzn.ems.domain.EmsEmsData;
|
||||||
import com.xzzn.ems.domain.EmsPcsBranchData;
|
import com.xzzn.ems.domain.EmsPcsBranchData;
|
||||||
@ -215,6 +216,60 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
|
|||||||
return siteMonitorHomeVo;
|
return siteMonitorHomeVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SiteMonitorHomeVo getSiteMonitorTotalDataVo(String siteId) {
|
||||||
|
SiteMonitorHomeVo siteMonitorHomeVo = new SiteMonitorHomeVo();
|
||||||
|
if (StringUtils.isEmpty(siteId)) {
|
||||||
|
return siteMonitorHomeVo;
|
||||||
|
}
|
||||||
|
|
||||||
|
String nowDate = DateUtils.getDate();
|
||||||
|
Map<String, BigDecimal> chargeDataMap = emsDailyChargeDataMapper.getAllSiteChargeData(nowDate, siteId);
|
||||||
|
BigDecimal totalChargedCap = BigDecimal.ZERO;
|
||||||
|
BigDecimal totalDischargedCap = BigDecimal.ZERO;
|
||||||
|
if (chargeDataMap != null) {
|
||||||
|
totalChargedCap = chargeDataMap.get("totalChargedCap") == null ? BigDecimal.ZERO : chargeDataMap.get("totalChargedCap");
|
||||||
|
totalDischargedCap = chargeDataMap.get("totalDischargedCap") == null ? BigDecimal.ZERO : chargeDataMap.get("totalDischargedCap");
|
||||||
|
}
|
||||||
|
siteMonitorHomeVo.setTotalChargedCap(totalChargedCap);
|
||||||
|
siteMonitorHomeVo.setTotalDischargedCap(totalDischargedCap);
|
||||||
|
|
||||||
|
Map<String, BigDecimal> revenueMap = emsDailyEnergyDataMapper.getRealTimeRevenue(siteId);
|
||||||
|
siteMonitorHomeVo.setTotalRevenue(revenueMap == null || revenueMap.get("totalRevenue") == null ? BigDecimal.ZERO : revenueMap.get("totalRevenue"));
|
||||||
|
siteMonitorHomeVo.setDayRevenue(revenueMap == null || revenueMap.get("dayRevenue") == null ? BigDecimal.ZERO : revenueMap.get("dayRevenue"));
|
||||||
|
|
||||||
|
Date yesterdayDate = DateUtils.toDate(LocalDate.now().minusDays(1));
|
||||||
|
EmsDailyChargeData yesterdayChargeData = emsDailyChargeDataMapper.selectBySiteIdAndDateTime(siteId, yesterdayDate);
|
||||||
|
siteMonitorHomeVo.setYesterdayRevenue(yesterdayChargeData == null || yesterdayChargeData.getDayRevenue() == null
|
||||||
|
? BigDecimal.ZERO
|
||||||
|
: yesterdayChargeData.getDayRevenue());
|
||||||
|
|
||||||
|
List<SiteMonitorHomeAlarmVo> alarmList = emsAlarmRecordsMapper.getAlarmRecordsBySiteId(siteId);
|
||||||
|
siteMonitorHomeVo.setSiteMonitorHomeAlarmVo(alarmList);
|
||||||
|
|
||||||
|
LocalDate sevenDaysAgo = LocalDate.now().minusDays(6);
|
||||||
|
Date startDate = DateUtils.toDate(sevenDaysAgo);
|
||||||
|
Date endDate = new Date();
|
||||||
|
List<SiteMonitorDataVo> siteMonitorDataVoList = emsDailyChargeDataMapper.getSingleSiteChargeData(siteId, startDate, endDate);
|
||||||
|
if (!CollectionUtils.isEmpty(siteMonitorDataVoList)) {
|
||||||
|
for (SiteMonitorDataVo sitePcsData : siteMonitorDataVoList) {
|
||||||
|
String pcsDate = sitePcsData.getAmmeterDate();
|
||||||
|
if (DateUtils.checkIsToday(pcsDate)) {
|
||||||
|
siteMonitorHomeVo.setDayChargedCap(sitePcsData.getChargedCap());
|
||||||
|
siteMonitorHomeVo.setDayDisChargedCap(sitePcsData.getDisChargedCap());
|
||||||
|
}
|
||||||
|
if (DateUtils.getYesterdayDayString().equals(pcsDate)) {
|
||||||
|
siteMonitorHomeVo.setYesterdayChargedCap(sitePcsData.getChargedCap());
|
||||||
|
siteMonitorHomeVo.setYesterdayDisChargedCap(sitePcsData.getDisChargedCap());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
siteMonitorHomeVo.setEnergyStorageAvailElec(totalDischargedCap.subtract(totalChargedCap));
|
||||||
|
siteMonitorHomeVo.setSiteMonitorDataVo(siteMonitorDataVoList);
|
||||||
|
return siteMonitorHomeVo;
|
||||||
|
}
|
||||||
|
|
||||||
// 获取单站监控实时运行头部数据
|
// 获取单站监控实时运行头部数据
|
||||||
@Override
|
@Override
|
||||||
public SiteMonitorRunningHeadInfoVo getSiteRunningHeadInfo(String siteId) {
|
public SiteMonitorRunningHeadInfoVo getSiteRunningHeadInfo(String siteId) {
|
||||||
|
|||||||
@ -7,12 +7,13 @@
|
|||||||
<resultMap type="EmsDailyChargeData" id="EmsDailyChargeDataResult">
|
<resultMap type="EmsDailyChargeData" id="EmsDailyChargeDataResult">
|
||||||
<result property="id" column="id" />
|
<result property="id" column="id" />
|
||||||
<result property="siteId" column="site_id" />
|
<result property="siteId" column="site_id" />
|
||||||
<result property="deviceId" column="device_id" />
|
|
||||||
<result property="dateTime" column="date_time" />
|
<result property="dateTime" column="date_time" />
|
||||||
<result property="totalChargeData" column="total_charge_Data" />
|
<result property="totalChargeData" column="total_charge_Data" />
|
||||||
<result property="totalDischargeData" column="total_discharge_Data" />
|
<result property="totalDischargeData" column="total_discharge_Data" />
|
||||||
<result property="chargeData" column="charge_data" />
|
<result property="chargeData" column="charge_data" />
|
||||||
<result property="dischargeData" column="discharge_data" />
|
<result property="dischargeData" column="discharge_data" />
|
||||||
|
<result property="totalRevenue" column="total_revenue" />
|
||||||
|
<result property="dayRevenue" column="day_revenue" />
|
||||||
<result property="createBy" column="create_by" />
|
<result property="createBy" column="create_by" />
|
||||||
<result property="createTime" column="create_time" />
|
<result property="createTime" column="create_time" />
|
||||||
<result property="updateBy" column="update_by" />
|
<result property="updateBy" column="update_by" />
|
||||||
@ -21,20 +22,22 @@
|
|||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectEmsDailyChargeDataVo">
|
<sql id="selectEmsDailyChargeDataVo">
|
||||||
select id, site_id, device_id, date_time, total_charge_Data, total_discharge_Data, charge_data, discharge_data, create_by, create_time, update_by, update_time, remark from ems_daily_charge_data
|
select id, site_id, date_time, total_charge_Data, total_discharge_Data, charge_data, discharge_data, total_revenue, day_revenue, create_by, create_time, update_by, update_time, remark from ems_daily_charge_data
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectEmsDailyChargeDataList" parameterType="EmsDailyChargeData" resultMap="EmsDailyChargeDataResult">
|
<select id="selectEmsDailyChargeDataList" parameterType="EmsDailyChargeData" resultMap="EmsDailyChargeDataResult">
|
||||||
<include refid="selectEmsDailyChargeDataVo"/>
|
<include refid="selectEmsDailyChargeDataVo"/>
|
||||||
<where>
|
<where>
|
||||||
<if test="siteId != null and siteId != ''"> and site_id = #{siteId}</if>
|
<if test="siteId != null and siteId != ''"> and site_id = #{siteId}</if>
|
||||||
<if test="deviceId != null and deviceId != ''"> and device_id = #{deviceId}</if>
|
|
||||||
<if test="dateTime != null "> and date_time = #{dateTime}</if>
|
<if test="dateTime != null "> and date_time = #{dateTime}</if>
|
||||||
<if test="totalChargeData != null "> and total_charge_Data = #{totalChargeData}</if>
|
<if test="totalChargeData != null "> and total_charge_Data = #{totalChargeData}</if>
|
||||||
<if test="totalDischargeData != null "> and total_discharge_Data = #{totalDischargeData}</if>
|
<if test="totalDischargeData != null "> and total_discharge_Data = #{totalDischargeData}</if>
|
||||||
<if test="chargeData != null "> and charge_data = #{chargeData}</if>
|
<if test="chargeData != null "> and charge_data = #{chargeData}</if>
|
||||||
<if test="dischargeData != null "> and discharge_data = #{dischargeData}</if>
|
<if test="dischargeData != null "> and discharge_data = #{dischargeData}</if>
|
||||||
|
<if test="totalRevenue != null "> and total_revenue = #{totalRevenue}</if>
|
||||||
|
<if test="dayRevenue != null "> and day_revenue = #{dayRevenue}</if>
|
||||||
</where>
|
</where>
|
||||||
|
order by date_time desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectEmsDailyChargeDataById" parameterType="Long" resultMap="EmsDailyChargeDataResult">
|
<select id="selectEmsDailyChargeDataById" parameterType="Long" resultMap="EmsDailyChargeDataResult">
|
||||||
@ -42,16 +45,25 @@
|
|||||||
where id = #{id}
|
where id = #{id}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectBySiteIdAndDateTime" resultMap="EmsDailyChargeDataResult">
|
||||||
|
<include refid="selectEmsDailyChargeDataVo"/>
|
||||||
|
where site_id = #{siteId}
|
||||||
|
and date(date_time) = date(#{dateTime})
|
||||||
|
order by date_time desc
|
||||||
|
limit 1
|
||||||
|
</select>
|
||||||
|
|
||||||
<insert id="insertEmsDailyChargeData" parameterType="EmsDailyChargeData" useGeneratedKeys="true" keyProperty="id">
|
<insert id="insertEmsDailyChargeData" parameterType="EmsDailyChargeData" useGeneratedKeys="true" keyProperty="id">
|
||||||
insert into ems_daily_charge_data
|
insert into ems_daily_charge_data
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
<if test="siteId != null">site_id,</if>
|
<if test="siteId != null">site_id,</if>
|
||||||
<if test="deviceId != null and deviceId != ''">device_id,</if>
|
|
||||||
<if test="dateTime != null">date_time,</if>
|
<if test="dateTime != null">date_time,</if>
|
||||||
<if test="totalChargeData != null">total_charge_Data,</if>
|
<if test="totalChargeData != null">total_charge_Data,</if>
|
||||||
<if test="totalDischargeData != null">total_discharge_Data,</if>
|
<if test="totalDischargeData != null">total_discharge_Data,</if>
|
||||||
<if test="chargeData != null">charge_data,</if>
|
<if test="chargeData != null">charge_data,</if>
|
||||||
<if test="dischargeData != null">discharge_data,</if>
|
<if test="dischargeData != null">discharge_data,</if>
|
||||||
|
<if test="totalRevenue != null">total_revenue,</if>
|
||||||
|
<if test="dayRevenue != null">day_revenue,</if>
|
||||||
<if test="createBy != null">create_by,</if>
|
<if test="createBy != null">create_by,</if>
|
||||||
<if test="createTime != null">create_time,</if>
|
<if test="createTime != null">create_time,</if>
|
||||||
<if test="updateBy != null">update_by,</if>
|
<if test="updateBy != null">update_by,</if>
|
||||||
@ -60,12 +72,13 @@
|
|||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="siteId != null">#{siteId},</if>
|
<if test="siteId != null">#{siteId},</if>
|
||||||
<if test="deviceId != null and deviceId != ''">#{deviceId},</if>
|
|
||||||
<if test="dateTime != null">#{dateTime},</if>
|
<if test="dateTime != null">#{dateTime},</if>
|
||||||
<if test="totalChargeData != null">#{totalChargeData},</if>
|
<if test="totalChargeData != null">#{totalChargeData},</if>
|
||||||
<if test="totalDischargeData != null">#{totalDischargeData},</if>
|
<if test="totalDischargeData != null">#{totalDischargeData},</if>
|
||||||
<if test="chargeData != null">#{chargeData},</if>
|
<if test="chargeData != null">#{chargeData},</if>
|
||||||
<if test="dischargeData != null">#{dischargeData},</if>
|
<if test="dischargeData != null">#{dischargeData},</if>
|
||||||
|
<if test="totalRevenue != null">#{totalRevenue},</if>
|
||||||
|
<if test="dayRevenue != null">#{dayRevenue},</if>
|
||||||
<if test="createBy != null">#{createBy},</if>
|
<if test="createBy != null">#{createBy},</if>
|
||||||
<if test="createTime != null">#{createTime},</if>
|
<if test="createTime != null">#{createTime},</if>
|
||||||
<if test="updateBy != null">#{updateBy},</if>
|
<if test="updateBy != null">#{updateBy},</if>
|
||||||
@ -78,12 +91,13 @@
|
|||||||
update ems_daily_charge_data
|
update ems_daily_charge_data
|
||||||
<trim prefix="SET" suffixOverrides=",">
|
<trim prefix="SET" suffixOverrides=",">
|
||||||
<if test="siteId != null">site_id = #{siteId},</if>
|
<if test="siteId != null">site_id = #{siteId},</if>
|
||||||
<if test="deviceId != null and deviceId != ''">device_id = #{deviceId},</if>
|
|
||||||
<if test="dateTime != null">date_time = #{dateTime},</if>
|
<if test="dateTime != null">date_time = #{dateTime},</if>
|
||||||
<if test="totalChargeData != null">total_charge_Data = #{totalChargeData},</if>
|
<if test="totalChargeData != null">total_charge_Data = #{totalChargeData},</if>
|
||||||
<if test="totalDischargeData != null">total_discharge_Data = #{totalDischargeData},</if>
|
<if test="totalDischargeData != null">total_discharge_Data = #{totalDischargeData},</if>
|
||||||
<if test="chargeData != null">charge_data = #{chargeData},</if>
|
<if test="chargeData != null">charge_data = #{chargeData},</if>
|
||||||
<if test="dischargeData != null">discharge_data = #{dischargeData},</if>
|
<if test="dischargeData != null">discharge_data = #{dischargeData},</if>
|
||||||
|
<if test="totalRevenue != null">total_revenue = #{totalRevenue},</if>
|
||||||
|
<if test="dayRevenue != null">day_revenue = #{dayRevenue},</if>
|
||||||
<if test="createBy != null">create_by = #{createBy},</if>
|
<if test="createBy != null">create_by = #{createBy},</if>
|
||||||
<if test="createTime != null">create_time = #{createTime},</if>
|
<if test="createTime != null">create_time = #{createTime},</if>
|
||||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||||
@ -108,12 +122,13 @@
|
|||||||
INSERT into ems_daily_charge_data (
|
INSERT into ems_daily_charge_data (
|
||||||
id,
|
id,
|
||||||
site_id,
|
site_id,
|
||||||
device_id,
|
|
||||||
date_time,
|
date_time,
|
||||||
total_charge_Data,
|
total_charge_Data,
|
||||||
total_discharge_Data,
|
total_discharge_Data,
|
||||||
charge_data,
|
charge_data,
|
||||||
discharge_data,
|
discharge_data,
|
||||||
|
total_revenue,
|
||||||
|
day_revenue,
|
||||||
create_by,
|
create_by,
|
||||||
create_time,
|
create_time,
|
||||||
update_by,
|
update_by,
|
||||||
@ -122,12 +137,13 @@
|
|||||||
) values (
|
) values (
|
||||||
#{id},
|
#{id},
|
||||||
#{siteId},
|
#{siteId},
|
||||||
#{deviceId},
|
|
||||||
#{dateTime},
|
#{dateTime},
|
||||||
#{totalChargeData},
|
#{totalChargeData},
|
||||||
#{totalDischargeData},
|
#{totalDischargeData},
|
||||||
#{chargeData},
|
#{chargeData},
|
||||||
#{dischargeData},
|
#{dischargeData},
|
||||||
|
#{totalRevenue},
|
||||||
|
#{dayRevenue},
|
||||||
#{createBy},
|
#{createBy},
|
||||||
#{createTime},
|
#{createTime},
|
||||||
#{updateBy},
|
#{updateBy},
|
||||||
@ -139,9 +155,21 @@
|
|||||||
total_discharge_Data = #{totalDischargeData},
|
total_discharge_Data = #{totalDischargeData},
|
||||||
charge_data = #{chargeData},
|
charge_data = #{chargeData},
|
||||||
discharge_data = #{dischargeData},
|
discharge_data = #{dischargeData},
|
||||||
|
total_revenue = IFNULL(#{totalRevenue}, total_revenue),
|
||||||
|
day_revenue = IFNULL(#{dayRevenue}, day_revenue),
|
||||||
update_time = NOW()
|
update_time = NOW()
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
<update id="updateRevenueBySiteAndDate">
|
||||||
|
update ems_daily_charge_data
|
||||||
|
set total_revenue = #{totalRevenue},
|
||||||
|
day_revenue = #{dayRevenue},
|
||||||
|
update_by = #{updateBy},
|
||||||
|
update_time = NOW()
|
||||||
|
where site_id = #{siteId}
|
||||||
|
and date(date_time) = date(#{dateTime})
|
||||||
|
</update>
|
||||||
|
|
||||||
<select id="getAllSiteChargeData" resultType="map">
|
<select id="getAllSiteChargeData" resultType="map">
|
||||||
SELECT
|
SELECT
|
||||||
SUM(t.total_charge_data) AS totalChargedCap,
|
SUM(t.total_charge_data) AS totalChargedCap,
|
||||||
|
|||||||
@ -8,8 +8,7 @@
|
|||||||
<result property="id" column="id" />
|
<result property="id" column="id" />
|
||||||
<result property="siteId" column="site_id" />
|
<result property="siteId" column="site_id" />
|
||||||
<result property="dataDate" column="data_date" />
|
<result property="dataDate" column="data_date" />
|
||||||
<result property="totalRevenue" column="total_revenue" />
|
<result property="dataHour" column="data_hour" />
|
||||||
<result property="dayRevenue" column="day_revenue" />
|
|
||||||
<result property="peakChargeDiff" column="peak_charge_diff" />
|
<result property="peakChargeDiff" column="peak_charge_diff" />
|
||||||
<result property="peakDischargeDiff" column="peak_discharge_diff" />
|
<result property="peakDischargeDiff" column="peak_discharge_diff" />
|
||||||
<result property="highChargeDiff" column="high_charge_diff" />
|
<result property="highChargeDiff" column="high_charge_diff" />
|
||||||
@ -27,7 +26,11 @@
|
|||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectEmsDailyEnergyDataVo">
|
<sql id="selectEmsDailyEnergyDataVo">
|
||||||
select id, site_id, data_date, total_revenue, day_revenue, peak_charge_diff, peak_discharge_diff, high_charge_diff, high_discharge_diff, flat_charge_diff, flat_discharge_diff, valley_charge_diff, valley_discharge_diff, calc_time, create_by, create_time, update_by, update_time, remark from ems_daily_energy_data
|
select id, site_id, data_date, data_hour,
|
||||||
|
peak_charge_diff, peak_discharge_diff, high_charge_diff, high_discharge_diff,
|
||||||
|
flat_charge_diff, flat_discharge_diff, valley_charge_diff, valley_discharge_diff,
|
||||||
|
calc_time, create_by, create_time, update_by, update_time, remark
|
||||||
|
from ems_daily_energy_data
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectEmsDailyEnergyDataList" parameterType="EmsDailyEnergyData" resultMap="EmsDailyEnergyDataResult">
|
<select id="selectEmsDailyEnergyDataList" parameterType="EmsDailyEnergyData" resultMap="EmsDailyEnergyDataResult">
|
||||||
@ -35,8 +38,7 @@
|
|||||||
<where>
|
<where>
|
||||||
<if test="siteId != null and siteId != ''"> and site_id = #{siteId}</if>
|
<if test="siteId != null and siteId != ''"> and site_id = #{siteId}</if>
|
||||||
<if test="dataDate != null "> and data_date = #{dataDate}</if>
|
<if test="dataDate != null "> and data_date = #{dataDate}</if>
|
||||||
<if test="totalRevenue != null "> and total_revenue = #{totalRevenue}</if>
|
<if test="dataHour != null "> and data_hour = #{dataHour}</if>
|
||||||
<if test="dayRevenue != null "> and day_revenue = #{dayRevenue}</if>
|
|
||||||
<if test="peakChargeDiff != null "> and peak_charge_diff = #{peakChargeDiff}</if>
|
<if test="peakChargeDiff != null "> and peak_charge_diff = #{peakChargeDiff}</if>
|
||||||
<if test="peakDischargeDiff != null "> and peak_discharge_diff = #{peakDischargeDiff}</if>
|
<if test="peakDischargeDiff != null "> and peak_discharge_diff = #{peakDischargeDiff}</if>
|
||||||
<if test="highChargeDiff != null "> and high_charge_diff = #{highChargeDiff}</if>
|
<if test="highChargeDiff != null "> and high_charge_diff = #{highChargeDiff}</if>
|
||||||
@ -47,6 +49,7 @@
|
|||||||
<if test="valleyDischargeDiff != null "> and valley_discharge_diff = #{valleyDischargeDiff}</if>
|
<if test="valleyDischargeDiff != null "> and valley_discharge_diff = #{valleyDischargeDiff}</if>
|
||||||
<if test="calcTime != null "> and calc_time = #{calcTime}</if>
|
<if test="calcTime != null "> and calc_time = #{calcTime}</if>
|
||||||
</where>
|
</where>
|
||||||
|
order by data_date desc, calc_time desc, id desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectEmsDailyEnergyDataById" parameterType="Long" resultMap="EmsDailyEnergyDataResult">
|
<select id="selectEmsDailyEnergyDataById" parameterType="Long" resultMap="EmsDailyEnergyDataResult">
|
||||||
@ -59,8 +62,7 @@
|
|||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
<if test="siteId != null">site_id,</if>
|
<if test="siteId != null">site_id,</if>
|
||||||
<if test="dataDate != null">data_date,</if>
|
<if test="dataDate != null">data_date,</if>
|
||||||
<if test="totalRevenue != null">total_revenue,</if>
|
<if test="dataHour != null">data_hour,</if>
|
||||||
<if test="dayRevenue != null">day_revenue,</if>
|
|
||||||
<if test="peakChargeDiff != null">peak_charge_diff,</if>
|
<if test="peakChargeDiff != null">peak_charge_diff,</if>
|
||||||
<if test="peakDischargeDiff != null">peak_discharge_diff,</if>
|
<if test="peakDischargeDiff != null">peak_discharge_diff,</if>
|
||||||
<if test="highChargeDiff != null">high_charge_diff,</if>
|
<if test="highChargeDiff != null">high_charge_diff,</if>
|
||||||
@ -79,8 +81,7 @@
|
|||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="siteId != null">#{siteId},</if>
|
<if test="siteId != null">#{siteId},</if>
|
||||||
<if test="dataDate != null">#{dataDate},</if>
|
<if test="dataDate != null">#{dataDate},</if>
|
||||||
<if test="totalRevenue != null">#{totalRevenue},</if>
|
<if test="dataHour != null">#{dataHour},</if>
|
||||||
<if test="dayRevenue != null">#{dayRevenue},</if>
|
|
||||||
<if test="peakChargeDiff != null">#{peakChargeDiff},</if>
|
<if test="peakChargeDiff != null">#{peakChargeDiff},</if>
|
||||||
<if test="peakDischargeDiff != null">#{peakDischargeDiff},</if>
|
<if test="peakDischargeDiff != null">#{peakDischargeDiff},</if>
|
||||||
<if test="highChargeDiff != null">#{highChargeDiff},</if>
|
<if test="highChargeDiff != null">#{highChargeDiff},</if>
|
||||||
@ -103,8 +104,7 @@
|
|||||||
<trim prefix="SET" suffixOverrides=",">
|
<trim prefix="SET" suffixOverrides=",">
|
||||||
<if test="siteId != null">site_id = #{siteId},</if>
|
<if test="siteId != null">site_id = #{siteId},</if>
|
||||||
<if test="dataDate != null">data_date = #{dataDate},</if>
|
<if test="dataDate != null">data_date = #{dataDate},</if>
|
||||||
<if test="totalRevenue != null">total_revenue = #{totalRevenue},</if>
|
<if test="dataHour != null">data_hour = #{dataHour},</if>
|
||||||
<if test="dayRevenue != null">day_revenue = #{dayRevenue},</if>
|
|
||||||
<if test="peakChargeDiff != null">peak_charge_diff = #{peakChargeDiff},</if>
|
<if test="peakChargeDiff != null">peak_charge_diff = #{peakChargeDiff},</if>
|
||||||
<if test="peakDischargeDiff != null">peak_discharge_diff = #{peakDischargeDiff},</if>
|
<if test="peakDischargeDiff != null">peak_discharge_diff = #{peakDischargeDiff},</if>
|
||||||
<if test="highChargeDiff != null">high_charge_diff = #{highChargeDiff},</if>
|
<if test="highChargeDiff != null">high_charge_diff = #{highChargeDiff},</if>
|
||||||
@ -138,14 +138,22 @@
|
|||||||
<include refid="selectEmsDailyEnergyDataVo"/>
|
<include refid="selectEmsDailyEnergyDataVo"/>
|
||||||
where data_date = #{today}
|
where data_date = #{today}
|
||||||
AND site_id = #{siteId}
|
AND site_id = #{siteId}
|
||||||
|
AND data_hour IS NULL
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectBySiteIdAndDateHour" resultMap="EmsDailyEnergyDataResult">
|
||||||
|
<include refid="selectEmsDailyEnergyDataVo"/>
|
||||||
|
where site_id = #{siteId}
|
||||||
|
and data_date = DATE(#{dataDate})
|
||||||
|
and data_hour = #{dataHour}
|
||||||
|
limit 1
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<insert id="insertOrUpdateData" parameterType="com.xzzn.ems.domain.EmsDailyEnergyData"
|
<insert id="insertOrUpdateData" parameterType="com.xzzn.ems.domain.EmsDailyEnergyData"
|
||||||
useGeneratedKeys="true" keyProperty="id">
|
useGeneratedKeys="true" keyProperty="id">
|
||||||
INSERT INTO ems_daily_energy_data (
|
INSERT INTO ems_daily_energy_data (
|
||||||
id, site_id, data_date,
|
id, site_id, data_date,
|
||||||
<if test="totalRevenue != null">total_revenue,</if>
|
<if test="dataHour != null">data_hour,</if>
|
||||||
<if test="dayRevenue != null">day_revenue,</if>
|
|
||||||
<if test="peakChargeDiff != null">peak_charge_diff,</if>
|
<if test="peakChargeDiff != null">peak_charge_diff,</if>
|
||||||
<if test="peakDischargeDiff != null">peak_discharge_diff,</if>
|
<if test="peakDischargeDiff != null">peak_discharge_diff,</if>
|
||||||
<if test="highChargeDiff != null">high_charge_diff,</if>
|
<if test="highChargeDiff != null">high_charge_diff,</if>
|
||||||
@ -164,8 +172,7 @@
|
|||||||
#{id},
|
#{id},
|
||||||
#{siteId},
|
#{siteId},
|
||||||
#{dataDate},
|
#{dataDate},
|
||||||
<if test="totalRevenue != null">#{totalRevenue},</if>
|
<if test="dataHour != null">#{dataHour},</if>
|
||||||
<if test="dayRevenue != null">#{dayRevenue},</if>
|
|
||||||
<if test="peakChargeDiff != null">#{peakChargeDiff},</if>
|
<if test="peakChargeDiff != null">#{peakChargeDiff},</if>
|
||||||
<if test="peakDischargeDiff != null">#{peakDischargeDiff},</if>
|
<if test="peakDischargeDiff != null">#{peakDischargeDiff},</if>
|
||||||
<if test="highChargeDiff != null">#{highChargeDiff},</if>
|
<if test="highChargeDiff != null">#{highChargeDiff},</if>
|
||||||
@ -181,8 +188,7 @@
|
|||||||
NOW(),
|
NOW(),
|
||||||
#{remark}
|
#{remark}
|
||||||
) ON DUPLICATE KEY UPDATE
|
) ON DUPLICATE KEY UPDATE
|
||||||
<if test="totalRevenue != null">total_revenue = #{totalRevenue},</if>
|
<if test="dataHour != null">data_hour = #{dataHour},</if>
|
||||||
<if test="dayRevenue != null">day_revenue = #{dayRevenue},</if>
|
|
||||||
<if test="peakChargeDiff != null">peak_charge_diff = #{peakChargeDiff},</if>
|
<if test="peakChargeDiff != null">peak_charge_diff = #{peakChargeDiff},</if>
|
||||||
<if test="peakDischargeDiff != null">peak_discharge_diff = #{peakDischargeDiff},</if>
|
<if test="peakDischargeDiff != null">peak_discharge_diff = #{peakDischargeDiff},</if>
|
||||||
<if test="highChargeDiff != null">high_charge_diff = #{highChargeDiff},</if>
|
<if test="highChargeDiff != null">high_charge_diff = #{highChargeDiff},</if>
|
||||||
@ -196,7 +202,18 @@
|
|||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
<select id="getDataBySiteId" resultType="com.xzzn.ems.domain.vo.AmmeterStatisListVo">
|
<select id="getDataBySiteId" resultType="com.xzzn.ems.domain.vo.AmmeterStatisListVo">
|
||||||
select t.data_date as dataTime,
|
select DATE_FORMAT(r.dataDate, '%Y-%m-%d') as dataTime,
|
||||||
|
r.activePeakKwh,
|
||||||
|
r.reActivePeakKwh,
|
||||||
|
r.activeHighKwh,
|
||||||
|
r.reActiveHighKwh,
|
||||||
|
r.activeFlatKwh,
|
||||||
|
r.reActiveFlatKwh,
|
||||||
|
r.activeValleyKwh,
|
||||||
|
r.reActiveValleyKwh
|
||||||
|
from (
|
||||||
|
-- 优先使用按天汇总记录(data_hour is null)
|
||||||
|
select DATE(t.data_date) as dataDate,
|
||||||
t.peak_charge_diff as activePeakKwh,
|
t.peak_charge_diff as activePeakKwh,
|
||||||
t.peak_discharge_diff as reActivePeakKwh,
|
t.peak_discharge_diff as reActivePeakKwh,
|
||||||
t.high_charge_diff as activeHighKwh,
|
t.high_charge_diff as activeHighKwh,
|
||||||
@ -206,50 +223,95 @@
|
|||||||
t.valley_charge_diff as activeValleyKwh,
|
t.valley_charge_diff as activeValleyKwh,
|
||||||
t.valley_discharge_diff as reActiveValleyKwh
|
t.valley_discharge_diff as reActiveValleyKwh
|
||||||
from ems_daily_energy_data t
|
from ems_daily_energy_data t
|
||||||
where 1=1
|
where t.data_hour is null
|
||||||
<if test="siteId != null">
|
<if test="siteId != null and siteId != ''">
|
||||||
and t.site_id = #{siteId}
|
and t.site_id = #{siteId}
|
||||||
</if>
|
</if>
|
||||||
<if test="startTime != null">
|
<if test="startTime != null and startTime != ''">
|
||||||
and t.data_date >= #{startTime}
|
and t.data_date >= #{startTime}
|
||||||
</if>
|
</if>
|
||||||
<if test="endTime != null">
|
<if test="endTime != null and endTime != ''">
|
||||||
and t.data_date <= #{endTime}
|
and t.data_date < DATE_ADD(#{endTime}, INTERVAL 1 DAY)
|
||||||
</if>
|
</if>
|
||||||
|
|
||||||
|
union all
|
||||||
|
|
||||||
|
-- 若某天没有日汇总记录,则按小时数据汇总兜底
|
||||||
|
select DATE(h.data_date) as dataDate,
|
||||||
|
SUM(IFNULL(h.peak_charge_diff, 0)) as activePeakKwh,
|
||||||
|
SUM(IFNULL(h.peak_discharge_diff, 0)) as reActivePeakKwh,
|
||||||
|
SUM(IFNULL(h.high_charge_diff, 0)) as activeHighKwh,
|
||||||
|
SUM(IFNULL(h.high_discharge_diff, 0)) as reActiveHighKwh,
|
||||||
|
SUM(IFNULL(h.flat_charge_diff, 0)) as activeFlatKwh,
|
||||||
|
SUM(IFNULL(h.flat_discharge_diff, 0)) as reActiveFlatKwh,
|
||||||
|
SUM(IFNULL(h.valley_charge_diff, 0)) as activeValleyKwh,
|
||||||
|
SUM(IFNULL(h.valley_discharge_diff, 0)) as reActiveValleyKwh
|
||||||
|
from ems_daily_energy_data h
|
||||||
|
where h.data_hour is not null
|
||||||
|
<if test="siteId != null and siteId != ''">
|
||||||
|
and h.site_id = #{siteId}
|
||||||
|
</if>
|
||||||
|
<if test="startTime != null and startTime != ''">
|
||||||
|
and h.data_date >= #{startTime}
|
||||||
|
</if>
|
||||||
|
<if test="endTime != null and endTime != ''">
|
||||||
|
and h.data_date < DATE_ADD(#{endTime}, INTERVAL 1 DAY)
|
||||||
|
</if>
|
||||||
|
and not exists (
|
||||||
|
select 1
|
||||||
|
from ems_daily_energy_data d
|
||||||
|
where d.site_id = h.site_id
|
||||||
|
and DATE(d.data_date) = DATE(h.data_date)
|
||||||
|
and d.data_hour is null
|
||||||
|
)
|
||||||
|
group by h.site_id, DATE(h.data_date)
|
||||||
|
) r
|
||||||
|
order by r.dataDate desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getLastTotalRevenue" resultType="java.math.BigDecimal">
|
<select id="getLastTotalRevenue" resultType="java.math.BigDecimal">
|
||||||
select t.total_revenue
|
select t.total_revenue
|
||||||
from ems_daily_energy_data t
|
from ems_daily_charge_data t
|
||||||
where t.site_id = #{siteId}
|
where t.site_id = #{siteId}
|
||||||
and t.data_date < CURDATE()
|
and date(t.date_time) < CURDATE()
|
||||||
order by t.data_date desc limit 1
|
order by t.date_time desc
|
||||||
|
limit 1
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getRealTimeRevenue" resultType="java.util.Map">
|
<select id="getRealTimeRevenue" resultType="java.util.Map">
|
||||||
select t.total_revenue as totalRevenue, t.day_revenue as dayRevenue
|
select t.total_revenue as totalRevenue, t.day_revenue as dayRevenue
|
||||||
from ems_daily_energy_data t
|
from ems_daily_charge_data t
|
||||||
where t.site_id = #{siteId}
|
where t.site_id = #{siteId}
|
||||||
order by t.data_date desc limit 1
|
order by t.date_time desc
|
||||||
|
limit 1
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getRevenueDataBySiteId" resultType="com.xzzn.ems.domain.vo.AmmeterRevenueStatisListVo">
|
<select id="getRevenueDataBySiteId" resultType="com.xzzn.ems.domain.vo.AmmeterRevenueStatisListVo">
|
||||||
select
|
select
|
||||||
t.data_date as dataTime,
|
DATE_FORMAT(t.data_date, '%Y-%m-%d') as dataTime,
|
||||||
COALESCE(c.is_workday, CASE WHEN WEEKDAY(t.data_date) < 5 THEN 1 ELSE 0 END) as isWorkday,
|
COALESCE(c.is_workday, CASE WHEN WEEKDAY(t.data_date) < 5 THEN 1 ELSE 0 END) as isWorkday,
|
||||||
CASE
|
CASE
|
||||||
WHEN COALESCE(c.is_workday, CASE WHEN WEEKDAY(t.data_date) < 5 THEN 1 ELSE 0 END) = 1 THEN '工作日'
|
WHEN COALESCE(c.is_workday, CASE WHEN WEEKDAY(t.data_date) < 5 THEN 1 ELSE 0 END) = 1 THEN '工作日'
|
||||||
ELSE '节假日'
|
ELSE '节假日'
|
||||||
END as dayType,
|
END as dayType,
|
||||||
COALESCE(NULLIF(TRIM(w.weather_desc), ''), '--') as weatherDesc,
|
COALESCE(NULLIF(TRIM(w.weather_desc), ''), '--') as weatherDesc,
|
||||||
ROUND(IFNULL(t.peak_charge_diff, 0) * IFNULL(pc.peak, 0), 3) as activePeakPrice,
|
ROUND(SUM(IFNULL(t.peak_charge_diff, 0) * IFNULL(pc.peak, 0)), 3) as activePeakPrice,
|
||||||
ROUND(IFNULL(t.peak_discharge_diff, 0) * IFNULL(pc.peak, 0), 3) as reActivePeakPrice,
|
ROUND(SUM(IFNULL(t.peak_discharge_diff, 0) * IFNULL(pc.peak, 0)), 3) as reActivePeakPrice,
|
||||||
ROUND(IFNULL(t.high_charge_diff, 0) * IFNULL(pc.high, 0), 3) as activeHighPrice,
|
ROUND(SUM(IFNULL(t.high_charge_diff, 0) * IFNULL(pc.high, 0)), 3) as activeHighPrice,
|
||||||
ROUND(IFNULL(t.high_discharge_diff, 0) * IFNULL(pc.high, 0), 3) as reActiveHighPrice,
|
ROUND(SUM(IFNULL(t.high_discharge_diff, 0) * IFNULL(pc.high, 0)), 3) as reActiveHighPrice,
|
||||||
ROUND(IFNULL(t.flat_charge_diff, 0) * IFNULL(pc.flat, 0), 3) as activeFlatPrice,
|
ROUND(SUM(IFNULL(t.flat_charge_diff, 0) * IFNULL(pc.flat, 0)), 3) as activeFlatPrice,
|
||||||
ROUND(IFNULL(t.flat_discharge_diff, 0) * IFNULL(pc.flat, 0), 3) as reActiveFlatPrice,
|
ROUND(SUM(IFNULL(t.flat_discharge_diff, 0) * IFNULL(pc.flat, 0)), 3) as reActiveFlatPrice,
|
||||||
ROUND(IFNULL(t.valley_charge_diff, 0) * IFNULL(pc.valley, 0), 3) as activeValleyPrice,
|
ROUND(SUM(IFNULL(t.valley_charge_diff, 0) * IFNULL(pc.valley, 0)), 3) as activeValleyPrice,
|
||||||
ROUND(IFNULL(t.valley_discharge_diff, 0) * IFNULL(pc.valley, 0), 3) as reActiveValleyPrice
|
ROUND(SUM(IFNULL(t.valley_discharge_diff, 0) * IFNULL(pc.valley, 0)), 3) as reActiveValleyPrice,
|
||||||
|
ROUND(
|
||||||
|
SUM(
|
||||||
|
(IFNULL(t.peak_discharge_diff, 0) - IFNULL(t.peak_charge_diff, 0)) * IFNULL(pc.peak, 0)
|
||||||
|
+ (IFNULL(t.high_discharge_diff, 0) - IFNULL(t.high_charge_diff, 0)) * IFNULL(pc.high, 0)
|
||||||
|
+ (IFNULL(t.flat_discharge_diff, 0) - IFNULL(t.flat_charge_diff, 0)) * IFNULL(pc.flat, 0)
|
||||||
|
+ (IFNULL(t.valley_discharge_diff, 0) - IFNULL(t.valley_charge_diff, 0)) * IFNULL(pc.valley, 0)
|
||||||
|
),
|
||||||
|
3
|
||||||
|
) as actualRevenue
|
||||||
from ems_daily_energy_data t
|
from ems_daily_energy_data t
|
||||||
left join ems_calendar_day c on c.calendar_date = t.data_date
|
left join ems_calendar_day c on c.calendar_date = t.data_date
|
||||||
left join ems_site_weather_day w on w.site_id = t.site_id and w.calendar_date = t.data_date
|
left join ems_site_weather_day w on w.site_id = t.site_id and w.calendar_date = t.data_date
|
||||||
@ -271,6 +333,7 @@
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
where 1=1
|
where 1=1
|
||||||
|
and t.data_hour is not null
|
||||||
<if test="siteId != null">
|
<if test="siteId != null">
|
||||||
and t.site_id = #{siteId}
|
and t.site_id = #{siteId}
|
||||||
</if>
|
</if>
|
||||||
@ -280,6 +343,9 @@
|
|||||||
<if test="endTime != null">
|
<if test="endTime != null">
|
||||||
and t.data_date <= #{endTime}
|
and t.data_date <= #{endTime}
|
||||||
</if>
|
</if>
|
||||||
|
group by t.data_date,
|
||||||
|
COALESCE(c.is_workday, CASE WHEN WEEKDAY(t.data_date) < 5 THEN 1 ELSE 0 END),
|
||||||
|
COALESCE(NULLIF(TRIM(w.weather_desc), ''), '--')
|
||||||
order by t.data_date desc
|
order by t.data_date desc
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@ -52,7 +52,7 @@
|
|||||||
<include refid="selectEmsPointConfigVo"/>
|
<include refid="selectEmsPointConfigVo"/>
|
||||||
<where>
|
<where>
|
||||||
<if test="siteId != null and siteId != ''">and site_id = #{siteId}</if>
|
<if test="siteId != null and siteId != ''">and site_id = #{siteId}</if>
|
||||||
<if test="pointId != null and pointId != ''">and point_id = #{pointId}</if>
|
<if test="pointId != null and pointId != ''">and point_id like concat('%', #{pointId}, '%')</if>
|
||||||
<if test="deviceCategory != null and deviceCategory != ''">and device_category = #{deviceCategory}</if>
|
<if test="deviceCategory != null and deviceCategory != ''">and device_category = #{deviceCategory}</if>
|
||||||
<if test="deviceId != null and deviceId != ''">and device_id = #{deviceId}</if>
|
<if test="deviceId != null and deviceId != ''">and device_id = #{deviceId}</if>
|
||||||
<if test="dataKey != null and dataKey != ''">and data_key like concat('%', #{dataKey}, '%')</if>
|
<if test="dataKey != null and dataKey != ''">and data_key like concat('%', #{dataKey}, '%')</if>
|
||||||
@ -202,6 +202,36 @@
|
|||||||
where id = #{id}
|
where id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<update id="updateEmsPointConfigForImport" parameterType="EmsPointConfig">
|
||||||
|
update ems_point_config
|
||||||
|
set point_id = #{pointId},
|
||||||
|
site_id = #{siteId},
|
||||||
|
device_category = #{deviceCategory},
|
||||||
|
device_id = #{deviceId},
|
||||||
|
point_name = #{pointName},
|
||||||
|
data_key = #{dataKey},
|
||||||
|
point_desc = #{pointDesc},
|
||||||
|
register_address = #{registerAddress},
|
||||||
|
data_unit = #{dataUnit},
|
||||||
|
data_a = #{dataA},
|
||||||
|
data_k = #{dataK},
|
||||||
|
data_b = #{dataB},
|
||||||
|
data_bit = #{dataBit},
|
||||||
|
is_alarm = #{isAlarm},
|
||||||
|
point_type = #{pointType},
|
||||||
|
calc_expression = #{calcExpression},
|
||||||
|
collect_enabled = #{collectEnabled},
|
||||||
|
collect_source = #{collectSource},
|
||||||
|
modbus_register_type = #{modbusRegisterType},
|
||||||
|
modbus_data_type = #{modbusDataType},
|
||||||
|
modbus_read_order = #{modbusReadOrder},
|
||||||
|
modbus_group = #{modbusGroup},
|
||||||
|
update_by = #{updateBy},
|
||||||
|
update_time = now(),
|
||||||
|
remark = #{remark}
|
||||||
|
where id = #{id}
|
||||||
|
</update>
|
||||||
|
|
||||||
<delete id="deleteEmsPointConfigById" parameterType="Long">
|
<delete id="deleteEmsPointConfigById" parameterType="Long">
|
||||||
delete from ems_point_config where id = #{id}
|
delete from ems_point_config where id = #{id}
|
||||||
</delete>
|
</delete>
|
||||||
@ -329,11 +359,11 @@
|
|||||||
<include refid="selectEmsPointConfigVo"/>
|
<include refid="selectEmsPointConfigVo"/>
|
||||||
where collect_enabled = 1
|
where collect_enabled = 1
|
||||||
and collect_source = 'MODBUS'
|
and collect_source = 'MODBUS'
|
||||||
and (point_type is null or point_type <> 'calc')
|
and (point_type is null or point_type <> 'calc')
|
||||||
and (is_alarm is null or is_alarm = 0)
|
and (is_alarm is null or is_alarm = 0)
|
||||||
and register_address is not null and register_address <> ''
|
and register_address is not null and register_address <> ''
|
||||||
and modbus_register_type is not null and modbus_register_type <> ''
|
and modbus_register_type is not null and modbus_register_type <> ''
|
||||||
and modbus_data_type is not null and modbus_data_type <> ''
|
and modbus_data_type is not null and modbus_data_type <> ''
|
||||||
<if test="siteId != null and siteId != ''">
|
<if test="siteId != null and siteId != ''">
|
||||||
and site_id = #{siteId}
|
and site_id = #{siteId}
|
||||||
</if>
|
</if>
|
||||||
|
|||||||
@ -4,6 +4,14 @@
|
|||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.xzzn.ems.mapper.EmsSiteMonitorPointMatchMapper">
|
<mapper namespace="com.xzzn.ems.mapper.EmsSiteMonitorPointMatchMapper">
|
||||||
|
|
||||||
|
<select id="selectDistinctSiteIds" resultType="java.lang.String">
|
||||||
|
select distinct site_id
|
||||||
|
from ems_site_monitor_point_match
|
||||||
|
where site_id is not null
|
||||||
|
and site_id != ''
|
||||||
|
order by site_id asc
|
||||||
|
</select>
|
||||||
|
|
||||||
<resultMap id="EmsSiteMonitorPointMatchResult" type="com.xzzn.ems.domain.EmsSiteMonitorPointMatch">
|
<resultMap id="EmsSiteMonitorPointMatchResult" type="com.xzzn.ems.domain.EmsSiteMonitorPointMatch">
|
||||||
<result property="id" column="id"/>
|
<result property="id" column="id"/>
|
||||||
<result property="siteId" column="site_id"/>
|
<result property="siteId" column="site_id"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user