package com.skua.modules.job; import com.skua.common.constant.ReportConstant; import com.skua.core.context.SpringContextUtils; import com.skua.core.util.ConvertUtils; import com.skua.core.util.DateUtils; import com.skua.modules.report.service.IReportDataService; 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.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 发送消息任务 */ @Slf4j @Component public class NFDataSyncJob implements Job { @Autowired private IReportDataService reportDataService; //污水水质 private static String wsFields = "JSCOD,JSAD,JSPH,JSZD,JSZL,JSSS,CSCOD,CSAD,CSPH,CSTN,CSZL,CSSS"; //供水指标 private static String gsFields = "GSL,YSSD,CCSWD,YSWD,CCSPH,YSPH,CCSAD,YSAD,CCSHYL,YSHYL,CCSSD," + "YSNRDCGJQ,CCSRYHT,YSRYHT,CCSNRDCGJQ,CCSZDCGJQ,CCSJLZS,YSZDCGJQ,YSJLZS,CCSRYKJD,YSRYKJD,CCSCHW,YSCHW,CCSHZD,YSHZD"; /** * 若参数变量名修改 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; } Map<String,String> nfData = nfDrugConvert(); log.info("开始同步【"+yesterday+"】恩菲的数据入报表"); JdbcTemplate nfDb = (JdbcTemplate) SpringContextUtils.getBean("nf-db"); String sql = "select * from day_report_data where update_time like '"+yesterday+"%' and item_type = 'nhrb'"; List<Map<String, Object>> dataList = nfDb.queryForList(sql); if(dataList.size() > 0){ for (Map<String, Object> map : dataList) { String departId = map.get("depart_id").toString(); String time = map.get("time").toString(); String itemCode = map.get("item_code").toString(); String itemValue = map.get("item_value").toString(); String itemType = map.get("item_type").toString(); Map<String, String> data = new HashMap<>(); data.put("departId", departId); data.put("time",yesterday); if("szsl".equals(itemType)){ data.put(itemCode, itemValue); data.put("reportId", ReportConstant.view2119); reportDataService.insertOrUpdateReportData(departId, time, data, ReportConstant.view2119); }else if("hyrb".equals(itemType)){ if(wsFields.contains(itemCode)){ data.put(itemCode+"HY", itemValue); data.put("reportId", ReportConstant.view9bff); reportDataService.insertOrUpdateReportData(departId, time, data, ReportConstant.view9bff); }else if(gsFields.contains(itemCode)){ data.put(itemCode, itemValue); data.put("reportId", ReportConstant.view6643); reportDataService.insertOrUpdateReportData(departId, time, data, ReportConstant.view6643); }else{ data.put(itemCode, itemValue); } }else if("nhrb".equals(itemType)){ if(ConvertUtils.isNotEmpty(nfData.get(itemCode))){ itemCode = nfData.get(itemCode); } data.put(itemCode, itemValue); data.put("reportId", ReportConstant.view3a24); reportDataService.insertOrUpdateReportData(departId, time, data, ReportConstant.view3a24); }else { log.info("恩菲【"+itemType+"】类型数据未进行数据同步"); } } } log.info("恩菲的数据入报表完成"); } /** * 恩菲的药品转换 * @return */ private Map<String, String> nfDrugConvert() { Map<String,String> map = new HashMap<>(); map.put("PAC", "PACGT"); map.put("CPAM", "PAMZ"); map.put("APAM", "PAMF"); map.put("CPAME", "PAMRJ"); map.put("CAOH2", "SH"); return map; } }