【验收】2 运行策略配置同步
This commit is contained in:
@ -0,0 +1,39 @@
|
||||
package com.xzzn.ems.domain.vo;
|
||||
|
||||
import com.xzzn.common.annotation.Excel;
|
||||
import com.xzzn.ems.domain.EmsStrategyTemp;
|
||||
|
||||
/**
|
||||
* 同步策略模版对象
|
||||
*
|
||||
* @author xzzn
|
||||
* @date 2025-11-16
|
||||
*/
|
||||
public class SyncStrategyTempVo extends EmsStrategyTemp
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 策略名称,如“削峰填谷” */
|
||||
@Excel(name = "策略名称,如“削峰填谷”")
|
||||
private String strategyName;
|
||||
|
||||
/** 策略类型:1 - 主策略;2 - 辅助策略 */
|
||||
@Excel(name = "策略类型:1 - 主策略;2 - 辅助策略")
|
||||
private Long strategyType;
|
||||
|
||||
public String getStrategyName() {
|
||||
return strategyName;
|
||||
}
|
||||
|
||||
public void setStrategyName(String strategyName) {
|
||||
this.strategyName = strategyName;
|
||||
}
|
||||
|
||||
public Long getStrategyType() {
|
||||
return strategyType;
|
||||
}
|
||||
|
||||
public void setStrategyType(Long strategyType) {
|
||||
this.strategyType = strategyType;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,40 @@
|
||||
package com.xzzn.ems.domain.vo;
|
||||
|
||||
import com.xzzn.common.annotation.Excel;
|
||||
import com.xzzn.ems.domain.EmsStrategyTemp;
|
||||
import com.xzzn.ems.domain.EmsStrategyTimeConfig;
|
||||
|
||||
/**
|
||||
* 同步策略时间配置对象
|
||||
*
|
||||
* @author xzzn
|
||||
* @date 2025-11-16
|
||||
*/
|
||||
public class SyncStrategyTimeConfigVo extends EmsStrategyTimeConfig
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 策略名称,如“削峰填谷” */
|
||||
@Excel(name = "策略名称,如“削峰填谷”")
|
||||
private String strategyName;
|
||||
|
||||
/** 策略类型:1 - 主策略;2 - 辅助策略 */
|
||||
@Excel(name = "策略类型:1 - 主策略;2 - 辅助策略")
|
||||
private Long strategyType;
|
||||
|
||||
public String getStrategyName() {
|
||||
return strategyName;
|
||||
}
|
||||
|
||||
public void setStrategyName(String strategyName) {
|
||||
this.strategyName = strategyName;
|
||||
}
|
||||
|
||||
public Long getStrategyType() {
|
||||
return strategyType;
|
||||
}
|
||||
|
||||
public void setStrategyType(Long strategyType) {
|
||||
this.strategyType = strategyType;
|
||||
}
|
||||
}
|
||||
@ -60,4 +60,7 @@ public interface EmsStrategyMapper
|
||||
public int deleteEmsStrategyByIds(Long[] ids);
|
||||
|
||||
public List<EmsStrategy> getStrategyListByType(Long type);
|
||||
|
||||
// 通过名称获取策略
|
||||
public EmsStrategy getStrategyByName(String strategyName);
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package com.xzzn.ems.mapper;
|
||||
import java.util.List;
|
||||
import com.xzzn.ems.domain.EmsStrategyTimeConfig;
|
||||
import com.xzzn.ems.domain.vo.StrategyTimeConfigVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 时间配置Mapper接口
|
||||
@ -71,4 +72,9 @@ public interface EmsStrategyTimeConfigMapper
|
||||
|
||||
// 设置该模版的时间配置为待下发
|
||||
public void updateTimeConfigWaitingPost(String templateId);
|
||||
|
||||
// 判断时间配置是否存在
|
||||
public EmsStrategyTimeConfig getExistTimeConfig(@Param("siteId")String siteId,
|
||||
@Param("strategyId")Long strategyId,
|
||||
@Param("month")Long month);
|
||||
}
|
||||
|
||||
@ -29,5 +29,5 @@ public interface IEmsStrategyService
|
||||
public int configStrategy(EmsStrategyRunning emsStrategyRunning);
|
||||
|
||||
// 接收云上运行策略配置
|
||||
public void dealStrategyData(String content, String operateType);
|
||||
public void dealStrategyRunningData(String content, String operateType);
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package com.xzzn.ems.service;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.xzzn.ems.domain.EmsStrategyTemp;
|
||||
import com.xzzn.ems.domain.vo.StrategyTempConfigRequest;
|
||||
|
||||
@ -32,4 +33,7 @@ public interface IEmsStrategyTempService
|
||||
|
||||
//根据templateId删除模板
|
||||
public int deleteStrategyTempById(String templateId);
|
||||
|
||||
// 处理同步数据
|
||||
public void dealStrategyTempData(String content, String operateType) throws JsonProcessingException;
|
||||
}
|
||||
|
||||
@ -67,4 +67,7 @@ public interface IEmsStrategyTimeConfigService
|
||||
* @return 时间配置集合
|
||||
*/
|
||||
public List<StrategyTimeConfigVo> getStrategyTimeList(EmsStrategyTimeConfig emsStrategyTimeConfig);
|
||||
|
||||
// 处理同步数据
|
||||
public void dealStrategyTimeData(String content, String operateType);
|
||||
}
|
||||
|
||||
@ -3,11 +3,13 @@ package com.xzzn.ems.service.impl;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.xzzn.common.enums.StrategyStatus;
|
||||
import com.xzzn.common.utils.DateUtils;
|
||||
import com.xzzn.common.utils.StringUtils;
|
||||
import com.xzzn.ems.domain.EmsStrategyRunning;
|
||||
import com.xzzn.ems.domain.vo.StrategyRunningVo;
|
||||
import com.xzzn.ems.mapper.EmsStrategyRunningMapper;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.xzzn.ems.mapper.EmsStrategyMapper;
|
||||
@ -67,31 +69,43 @@ public class EmsStrategyServiceImpl implements IEmsStrategyService
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dealStrategyData(String content, String operateType) {
|
||||
public void dealStrategyRunningData(String content, String operateType) {
|
||||
if (StringUtils.isEmpty(content)) {
|
||||
return;
|
||||
}
|
||||
EmsStrategyRunning emsStrategyRunning = JSON.parseObject(content, EmsStrategyRunning.class);
|
||||
String siteId = "";
|
||||
EmsStrategyRunning emsStrategyRunning = new EmsStrategyRunning();
|
||||
switch (operateType) {
|
||||
case "INSERT":
|
||||
StrategyRunningVo insertVo = JSON.parseObject(content, StrategyRunningVo.class);
|
||||
BeanUtils.copyProperties(insertVo, emsStrategyRunning);
|
||||
// 先校验策略是否存在,不存在则插入
|
||||
dealStrategyData(emsStrategyRunning, insertVo);
|
||||
// 新增策略运行数据
|
||||
emsStrategyRunningMapper.insertEmsStrategyRunning(emsStrategyRunning);
|
||||
break;
|
||||
case "STOP":
|
||||
Long id = emsStrategyRunning.getId();
|
||||
emsStrategyRunningMapper.stopEmsStrategyRunning(id);
|
||||
EmsStrategyRunning vo = JSON.parseObject(content, EmsStrategyRunning.class);
|
||||
siteId = vo.getSiteId();
|
||||
// 停止站点正在运行的策略即可
|
||||
EmsStrategyRunning runningStrategy = emsStrategyRunningMapper.getRunningStrategy(siteId);
|
||||
emsStrategyRunningMapper.stopEmsStrategyRunning(runningStrategy.getId());
|
||||
break;
|
||||
case "UPDATE":
|
||||
String siteId = emsStrategyRunning.getSiteId();
|
||||
Long mainId = emsStrategyRunning.getMainStrategyId();
|
||||
Long auxId = emsStrategyRunning.getAuxiliaryStrategyId();
|
||||
StrategyRunningVo updateVo = JSON.parseObject(content, StrategyRunningVo.class);
|
||||
siteId = updateVo.getSiteId();
|
||||
// 获取该站点是否有正在运行的策略,无则新增,有则更新
|
||||
EmsStrategyRunning existStrategy = emsStrategyRunningMapper.getRunningStrategy(siteId);
|
||||
if (existStrategy != null) { // 存在正在运行的则更新
|
||||
existStrategy.setMainStrategyId(mainId);
|
||||
existStrategy.setAuxiliaryStrategyId(auxId);
|
||||
emsStrategyRunningMapper.updateEmsStrategyRunning(emsStrategyRunning);
|
||||
} else { // 不存在着插入
|
||||
emsStrategyRunning.setCreateTime(DateUtils.getNowDate());
|
||||
if (existStrategy == null) {
|
||||
BeanUtils.copyProperties(updateVo, emsStrategyRunning);
|
||||
// 先校验策略是否存在,不存在则插入
|
||||
dealStrategyData(emsStrategyRunning, updateVo);
|
||||
emsStrategyRunningMapper.insertEmsStrategyRunning(emsStrategyRunning);
|
||||
} else {
|
||||
// 校验更新的主副策略是否存在,不存在则插入,存在则获取id
|
||||
dealStrategyData(existStrategy, updateVo);
|
||||
emsStrategyRunning.setCreateTime(DateUtils.getNowDate());
|
||||
emsStrategyRunningMapper.updateEmsStrategyRunning(existStrategy);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -99,4 +113,36 @@ public class EmsStrategyServiceImpl implements IEmsStrategyService
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void dealStrategyData(EmsStrategyRunning emsStrategyRunning, StrategyRunningVo insertVo) {
|
||||
// 主策略
|
||||
String mainStrategyName = insertVo.getMainStrategyName();
|
||||
EmsStrategy mainStrategy = emsStrategyMapper.getStrategyByName(mainStrategyName);
|
||||
if (mainStrategy != null) {
|
||||
emsStrategyRunning.setMainStrategyId(mainStrategy.getId());
|
||||
} else {
|
||||
mainStrategy = createStrategyEntity(mainStrategyName, 1L);
|
||||
emsStrategyMapper.insertEmsStrategy(mainStrategy);
|
||||
emsStrategyRunning.setMainStrategyId(mainStrategy.getId());
|
||||
}
|
||||
// 副策略
|
||||
String auxStrategyName = insertVo.getAuxStrategyName();
|
||||
EmsStrategy auxStrategy = emsStrategyMapper.getStrategyByName(auxStrategyName);
|
||||
if (auxStrategy != null) {
|
||||
emsStrategyRunning.setAuxiliaryStrategyId(auxStrategy.getId());
|
||||
} else {
|
||||
auxStrategy = createStrategyEntity(mainStrategyName, 2L);
|
||||
emsStrategyMapper.insertEmsStrategy(auxStrategy);
|
||||
emsStrategyRunning.setAuxiliaryStrategyId(auxStrategy.getId());
|
||||
}
|
||||
}
|
||||
|
||||
private EmsStrategy createStrategyEntity(String strategyName, Long type) {
|
||||
EmsStrategy strategy = new EmsStrategy();
|
||||
strategy.setStrategyType(type);
|
||||
strategy.setStrategyName(strategyName);
|
||||
strategy.setStatus(StrategyStatus.RUNNING.getCode());
|
||||
strategy.setCreateTime(DateUtils.getNowDate());
|
||||
return strategy;
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,12 +3,22 @@ package com.xzzn.ems.service.impl;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.xzzn.common.enums.StrategyStatus;
|
||||
import com.xzzn.common.utils.DateUtils;
|
||||
import com.xzzn.common.utils.StringUtils;
|
||||
import com.xzzn.common.utils.bean.BeanUtils;
|
||||
import com.xzzn.ems.domain.EmsStrategy;
|
||||
import com.xzzn.ems.domain.EmsStrategyRunning;
|
||||
import com.xzzn.ems.domain.EmsStrategyTempTimeConfig;
|
||||
import com.xzzn.ems.domain.vo.StrategyRunningVo;
|
||||
import com.xzzn.ems.domain.vo.StrategyTempConfigRequest;
|
||||
import com.xzzn.ems.domain.vo.SyncStrategyTempVo;
|
||||
import com.xzzn.ems.mapper.EmsStrategyCurveMapper;
|
||||
import com.xzzn.ems.mapper.EmsStrategyMapper;
|
||||
import com.xzzn.ems.mapper.EmsStrategyTimeConfigMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -33,7 +43,10 @@ public class EmsStrategyTempServiceImpl implements IEmsStrategyTempService
|
||||
private EmsStrategyTimeConfigMapper emsStrategyTimeConfigMapper;
|
||||
@Autowired
|
||||
private EmsStrategyCurveMapper emsStrategyCurveMapper;
|
||||
@Autowired
|
||||
private EmsStrategyMapper emsStrategyMapper;
|
||||
|
||||
private static final ObjectMapper objectMapper = new ObjectMapper();
|
||||
/**
|
||||
* 查询模板列表
|
||||
*
|
||||
@ -123,4 +136,54 @@ public class EmsStrategyTempServiceImpl implements IEmsStrategyTempService
|
||||
|
||||
return emsStrategyTempMapper.deleteTempByTempId(templateId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dealStrategyTempData(String content, String operateType) throws JsonProcessingException {
|
||||
if (StringUtils.isEmpty(content)) {
|
||||
return;
|
||||
}
|
||||
String siteId = "";
|
||||
EmsStrategyTemp temp = new EmsStrategyTemp();
|
||||
switch (operateType) {
|
||||
case "INSERT":
|
||||
SyncStrategyTempVo syncVo = JSON.parseObject(content, SyncStrategyTempVo.class);
|
||||
BeanUtils.copyProperties(syncVo, temp);
|
||||
// 先校验策略是否存在,不存在则插入
|
||||
dealStrategyData(temp, syncVo);
|
||||
// 新增策略运行数据
|
||||
emsStrategyTempMapper.insertEmsStrategyTemp(temp);
|
||||
break;
|
||||
case "DELETE":
|
||||
JsonNode jsonNode = objectMapper.readTree(content);
|
||||
String tempId = jsonNode.get("templateId").asText();
|
||||
// 删除模版
|
||||
deleteStrategyTempById(tempId);
|
||||
break;
|
||||
default:
|
||||
// 未知操作类型-不同步
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void dealStrategyData(EmsStrategyTemp temp, SyncStrategyTempVo syncVo) {
|
||||
// 主策略
|
||||
String mainStrategyName = syncVo.getStrategyName();
|
||||
EmsStrategy strategy = emsStrategyMapper.getStrategyByName(mainStrategyName);
|
||||
if (strategy != null) {
|
||||
temp.setStrategyId(strategy.getId());
|
||||
} else {
|
||||
strategy = createStrategyEntity(mainStrategyName, syncVo.getStrategyType());
|
||||
emsStrategyMapper.insertEmsStrategy(strategy);
|
||||
temp.setStrategyId(strategy.getId());
|
||||
}
|
||||
}
|
||||
|
||||
private EmsStrategy createStrategyEntity(String strategyName, Long type) {
|
||||
EmsStrategy strategy = new EmsStrategy();
|
||||
strategy.setStrategyType(type);
|
||||
strategy.setStrategyName(strategyName);
|
||||
strategy.setStatus(StrategyStatus.RUNNING.getCode());
|
||||
strategy.setCreateTime(DateUtils.getNowDate());
|
||||
return strategy;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,10 +1,17 @@
|
||||
package com.xzzn.ems.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.xzzn.common.enums.StrategyStatus;
|
||||
import com.xzzn.common.utils.DateUtils;
|
||||
import com.xzzn.common.utils.StringUtils;
|
||||
import com.xzzn.common.utils.bean.BeanUtils;
|
||||
import com.xzzn.ems.domain.EmsStrategy;
|
||||
import com.xzzn.ems.domain.vo.StrategyTimeConfigVo;
|
||||
import com.xzzn.ems.domain.vo.SyncStrategyTimeConfigVo;
|
||||
import com.xzzn.ems.mapper.EmsStrategyCurveMapper;
|
||||
import com.xzzn.ems.mapper.EmsStrategyMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.xzzn.ems.mapper.EmsStrategyTimeConfigMapper;
|
||||
@ -24,6 +31,8 @@ public class EmsStrategyTimeConfigServiceImpl implements IEmsStrategyTimeConfigS
|
||||
private EmsStrategyTimeConfigMapper emsStrategyTimeConfigMapper;
|
||||
@Autowired
|
||||
private EmsStrategyCurveMapper emsStrategyCurveMapper;
|
||||
@Autowired
|
||||
private EmsStrategyMapper emsStrategyMapper;
|
||||
|
||||
/**
|
||||
* 查询时间配置
|
||||
@ -129,4 +138,69 @@ public class EmsStrategyTimeConfigServiceImpl implements IEmsStrategyTimeConfigS
|
||||
{
|
||||
return emsStrategyTimeConfigMapper.getStrategyTimeList(emsStrategyTimeConfig);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dealStrategyTimeData(String content, String operateType) {
|
||||
if (StringUtils.isEmpty(content)) {
|
||||
return;
|
||||
}
|
||||
String siteId = "";
|
||||
EmsStrategyTimeConfig timeConfig = new EmsStrategyTimeConfig();
|
||||
SyncStrategyTimeConfigVo syncVo = JSON.parseObject(content, SyncStrategyTimeConfigVo.class);
|
||||
BeanUtils.copyProperties(syncVo, timeConfig);
|
||||
// 先校验策略是否存在,不存在则插入
|
||||
dealStrategyData(timeConfig, syncVo);
|
||||
switch (operateType) {
|
||||
case "INSERT":
|
||||
// 新增策略运行数据
|
||||
emsStrategyTimeConfigMapper.insertEmsStrategyTimeConfig(timeConfig);
|
||||
break;
|
||||
case "UPDATE":
|
||||
// 根据站点 + strategyId + 月份判断是否存在数据存在则更新否则插入
|
||||
if (checkExistConfig(timeConfig)) {
|
||||
emsStrategyTimeConfigMapper.updateEmsStrategyTimeConfig(timeConfig);
|
||||
} else {
|
||||
timeConfig.setCreateTime(DateUtils.getNowDate());
|
||||
emsStrategyTimeConfigMapper.insertEmsStrategyTimeConfig(timeConfig);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// 未知操作类型-不同步
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkExistConfig(EmsStrategyTimeConfig timeConfig) {
|
||||
boolean result = true;
|
||||
String siteId = timeConfig.getSiteId();
|
||||
Long strategyId = timeConfig.getStrategyId();
|
||||
Long month = timeConfig.getMonth();
|
||||
EmsStrategyTimeConfig emsStrategyTimeConfig = emsStrategyTimeConfigMapper.getExistTimeConfig(siteId,strategyId,month);
|
||||
if (emsStrategyTimeConfig == null) {
|
||||
result = false;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void dealStrategyData(EmsStrategyTimeConfig temp, SyncStrategyTimeConfigVo syncVo) {
|
||||
// 主策略
|
||||
String mainStrategyName = syncVo.getStrategyName();
|
||||
EmsStrategy strategy = emsStrategyMapper.getStrategyByName(mainStrategyName);
|
||||
if (strategy != null) {
|
||||
temp.setStrategyId(strategy.getId());
|
||||
} else {
|
||||
strategy = createStrategyEntity(mainStrategyName, syncVo.getStrategyType());
|
||||
emsStrategyMapper.insertEmsStrategy(strategy);
|
||||
temp.setStrategyId(strategy.getId());
|
||||
}
|
||||
}
|
||||
|
||||
private EmsStrategy createStrategyEntity(String strategyName, Long type) {
|
||||
EmsStrategy strategy = new EmsStrategy();
|
||||
strategy.setStrategyType(type);
|
||||
strategy.setStrategyName(strategyName);
|
||||
strategy.setStatus(StrategyStatus.RUNNING.getCode());
|
||||
strategy.setCreateTime(DateUtils.getNowDate());
|
||||
return strategy;
|
||||
}
|
||||
}
|
||||
|
||||
@ -89,4 +89,9 @@
|
||||
and strategy_type = #{type}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="getStrategyByName" parameterType="String" resultMap="EmsStrategyResult">
|
||||
<include refid="selectEmsStrategyVo"/>
|
||||
where strategy_name = #{strategyName}
|
||||
</select>
|
||||
</mapper>
|
||||
@ -127,4 +127,11 @@
|
||||
<update id="updateTimeConfigWaitingPost" parameterType="String">
|
||||
update ems_strategy_time_config set isPost = 1 where template_id = #{templateId}
|
||||
</update>
|
||||
|
||||
<select id="getExistTimeConfig" resultMap="EmsStrategyTimeConfigResult">
|
||||
<include refid="selectEmsStrategyTimeConfigVo"/>
|
||||
where site_id = #{siteId}
|
||||
and strategy_id = #{strategyId}
|
||||
and month = #{month}
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user