package com.iailab.module.shasteel.job.task; import com.iailab.module.data.api.ind.IndItemApi; import com.iailab.module.data.api.ind.dto.ApiIndItemValueDTO; import com.iailab.module.data.api.point.DataPointApi; import com.iailab.module.data.api.point.dto.ApiPointValueWriteDTO; import com.iailab.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mcs.dto.ChartParamDTO; 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 java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; import java.time.YearMonth; import java.util.Calendar; import java.util.List; /** * 蒸汽评价指标(汽耗率) * * @author Jay */ @Component("saveIndDataToPointDataTask") public class SaveIndDataToPointDataTask implements ITask { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private McsApi mcsApi; @Autowired private DataPointApi dataPointApi; @Autowired private IndItemApi indItemApi; @Override public void run(String params) { logger.info("SaveIndDataToPointDataTask,参数为:{}", params); try { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.SECOND, 0); if (StringUtils.isEmpty(params)) { logger.info("参数为空"); return; } //获取当前月天数 LocalDate today = LocalDate.now(); // 使用YearMonth来获取当前年份和月份的天数 YearMonth yearMonth = YearMonth.of(today.getYear(), today.getMonthValue()); int lengthOfMonth = yearMonth.lengthOfMonth(); List chartParamList = mcsApi.getChartParamList(params); logger.info("当前月天数:" + lengthOfMonth); chartParamList.forEach(chartParam -> { logger.info("指标编码:" + chartParam.getParamCode()); List indItemlist = indItemApi.queryIndItemDefaultValue(chartParam.getParamCode()); logger.info("查询到的指标值:" + indItemlist); if (indItemlist != null && indItemlist.size() > 0) { try { ApiPointValueWriteDTO apiPointValueWriteDTO = new ApiPointValueWriteDTO(); apiPointValueWriteDTO.setPointNo(chartParam.getParamValue()); BigDecimal indValue = BigDecimal.valueOf((Double) indItemlist.get(0).getDataValue()); logger.info("指标值:" + indValue); BigDecimal pointValue = indValue.divide(new BigDecimal(lengthOfMonth), 3, RoundingMode.HALF_UP); logger.info("测点值:" + pointValue); apiPointValueWriteDTO.setValue(pointValue); logger.info("写入测点值:" + apiPointValueWriteDTO); dataPointApi.writePointRealValue(apiPointValueWriteDTO); }catch (Exception ex){ logger.error("SaveIndDataToPointDataTask运行异常" + ex); ex.printStackTrace(); } } }); logger.info(params + "调度方案执行完成"); } catch (Exception ex) { logger.error("SaveIndDataToPointDataTask运行异常"); ex.printStackTrace(); } logger.info("SaveIndDataToPointDataTask运行完成"); } }