DayDataSyncJob.java 5.1 KB
package com.skua.modules.job;
import com.skua.common.constant.ReportConstant;
import com.skua.core.util.DateUtils;
import com.skua.modules.alarmtmp.entity.SysFactoryDevice;
import com.skua.modules.alarmtmp.service.ISysFactoryDeviceService;
import com.skua.modules.report.service.IReportDataService;
import com.skua.modules.system.datestandard.entity.SysMonitorMetricInfo;
import com.skua.modules.system.datestandard.service.ISysMonitorMetricInfoService;
import com.skua.modules.system.service.IPgService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 发送消息任务
 */

@Slf4j
@Component
public class DayDataSyncJob implements Job {

	@Autowired
	private IPgService pgService;
	@Autowired
	private ISysMonitorMetricInfoService sysMonitorMetricInfoService;
	@Autowired
	private ISysFactoryDeviceService sysFactoryDeviceService;
	@Autowired
	private IReportDataService reportDataService;
	private DecimalFormat df = new DecimalFormat("######0");

	/**
	 * 若参数变量名修改 QuartzJobController中也需对应修改
	 */
	private String parameter;

	public void setParameter(String parameter) {
		this.parameter = parameter;
	}

	@Override
	public void execute(JobExecutionContext jobExecutionContext) {
		String yesterday = DateUtils.getYesterday();
		if(StringUtils.isNotEmpty(this.parameter)){
			yesterday = this.parameter;
		}
		log.info("开始同步【"+yesterday+"】数据入报表");

		List<SysFactoryDevice> deviceList = sysFactoryDeviceService.getList();
		if(deviceList.size() > 0){
			Map<String, String> tagMap = new HashMap<>();
			List<SysMonitorMetricInfo> list = sysMonitorMetricInfoService.getTagDataList();
			for (SysMonitorMetricInfo monitorMetricInfo : list) {
				tagMap.put(monitorMetricInfo.getMetricUidTag()+"-"+monitorMetricInfo.getDepartId(),monitorMetricInfo.getId());
			}
			for (SysFactoryDevice sysFactoryDevice : deviceList) {
				String departId = sysFactoryDevice.getDepartId();
				String deviceId = sysFactoryDevice.getDeviceId();
				String fields = "";
				for (SysMonitorMetricInfo monitorMetricInfo : list) {
					if(departId.equals(monitorMetricInfo.getDepartId())){
						fields = fields + monitorMetricInfo.getId() + ",";
					}
				}
				if(!"".equals(fields)){
					Map<String, Object> dataMap = new HashMap<>();
					try{
						dataMap = pgService.queryDayData(fields, deviceId, yesterday);
					}catch (Exception e){
						dataMap = new HashMap<>();
					}
					Map<String, String> data = new HashMap<>();
					if(dataMap.size() != 0){
						//出水数据
						data = setReportDataValue(data,departId,"CSLL","CSL",tagMap,dataMap);
						data = setReportDataValue(data,departId,"CSNH3N","CSAD",tagMap,dataMap);
						data = setReportDataValue(data,departId,"CSCOD","CSCOD",tagMap,dataMap);
						data = setReportDataValue(data,departId,"CSPH","CSPH",tagMap,dataMap);
						data = setReportDataValue(data,departId,"CSSS","CSSS",tagMap,dataMap);
						data = setReportDataValue(data,departId,"CSTP","CSZL",tagMap,dataMap);
						data = setReportDataValue(data,departId,"CSTN","CSTN",tagMap,dataMap);
						//进水数据
						data = setReportDataValue(data,departId,"JSLL","JSL",tagMap,dataMap);
						data = setReportDataValue(data,departId,"JSNH3N","JSAD",tagMap,dataMap);
						data = setReportDataValue(data,departId,"JSCOD","JSCOD",tagMap,dataMap);
						data = setReportDataValue(data,departId,"JSPH","JSPH",tagMap,dataMap);
						data = setReportDataValue(data,departId,"JSSS","JSSS",tagMap,dataMap);
						data = setReportDataValue(data,departId,"JSTP","JSZL",tagMap,dataMap);
						data = setReportDataValue(data,departId,"JSTN","JSZD",tagMap,dataMap);
						data.put("departId", departId);
						data.put("reportId", ReportConstant.view2119);
						data.put("time",yesterday);
						reportDataService.insertOrUpdateReportData(departId, yesterday, data, ReportConstant.view2119);
//						log.info("========="+departId+"数据同步完成"+data);
					}
				}
			}
			log.info("同步"+yesterday+"的数据入报表完成");
		}else {
			log.info("没有需要同步数据的水厂");
		}

	}

	/**
	 * 填充报表数据
	 * @param data
	 * @param departId
	 * @param tagCode
	 * @param itemCode
	 * @param tagMap
	 * @param dataMap
	 * @return
	 */
	private Map<String, String> setReportDataValue(Map<String, String> data, String departId, String tagCode, String itemCode,
												   Map<String, String> tagMap, Map<String, Object> dataMap) {
		if(tagMap.get(tagCode+"-"+departId)!=null){
			if(dataMap.get(tagMap.get(tagCode+"-"+departId)) != null){
				if("CSLL".equals(tagCode)||"JSLL".equals(tagCode)){
					data.put(itemCode, df.format(24*Double.parseDouble(dataMap.get(tagMap.get(tagCode+"-"+departId)).toString())));
				}else{
					data.put(itemCode, dataMap.get(tagMap.get(tagCode+"-"+departId)).toString());
				}
			}else{
				data.put(itemCode, "");
			}
		}else{
			data.put(itemCode, "");
		}
		return data;
	}
}