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<ChartParamDTO> chartParamList = mcsApi.getChartParamList(params);
|
logger.info("当前月天数:" + lengthOfMonth);
|
chartParamList.forEach(chartParam -> {
|
logger.info("指标编码:" + chartParam.getParamCode());
|
List<ApiIndItemValueDTO> 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运行完成");
|
}
|
}
|