package com.iailab.module.ansteel.job.task; import com.iailab.module.ansteel.page.service.PageParamService; import com.iailab.module.data.api.point.DataPointApi; import com.iailab.module.data.api.point.dto.ApiPointValueDTO; import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO; import com.iailab.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mcs.dto.ScheduleSuggestRespDTO; import com.iailab.module.model.api.mdk.MdkApi; import com.iailab.module.model.api.mdk.dto.MdkScheduleReqDTO; import com.iailab.module.model.api.mdk.dto.MdkScheduleRespDTO; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map; /** * 有功优化模型 * 30 0/1 * * * ? *
* 实时检测望铁1#+望铁2#有功功率,当望铁1#+望铁2#连续5分钟上网(望铁1#+望铁2#有功功率>=0)触发模型
* M0000101267+M0000101265
* {'status_code': 100, 'result': {'reason': '135机组发电出力增加35.43%、CCPP发电出力增加12.10%、1#LF炉处于未生产状态:建议发电减少14MW'}}
*
* @author PanZhibao
* @Description
* @createTime 2025年06月11日
*/
@Component("runOnPowerOptimTask")
public class RunOnPowerOptimTask implements ITask {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private DataPointApi dataPointApi;
@Autowired
private MdkApi mdkApi;
@Autowired
private McsApi mcsApi;
@Autowired
private PageParamService pageParamService;
private final static String POINT_NO = "C0000201107";
@Override
public void run(String params) {
logger.info("RunOnPowerOptimTask定时任务正在执行,参数为:{}", params);
try {
// 查询配置参数
// 触发频率
Integer cfpl = Integer.parseInt(pageParamService.getValue(""));
// 望铁关口触发边界
Double wtbj = Double.parseDouble(pageParamService.getValue(""));
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.SECOND, 0);
Date endTime = calendar.getTime();
calendar.add(Calendar.MINUTE, cfpl * -1);
Date startTime = calendar.getTime();
ApiPointValueQueryDTO pointValueQueryDTO = new ApiPointValueQueryDTO();
pointValueQueryDTO.setPointNo(POINT_NO);
pointValueQueryDTO.setStart(startTime);
pointValueQueryDTO.setEnd(endTime);
List