|
@@ -3,6 +3,8 @@ package com.its.wthr.service;
|
|
|
import com.its.app.utils.SysUtils;
|
|
|
import com.its.wthr.config.AtmpConfig;
|
|
|
import com.its.wthr.mapper.AtmpMapper;
|
|
|
+import com.its.wthr.openApi.arpltnInforInqireService.MsrStnAcctoRltmMesureDnsty;
|
|
|
+import com.its.wthr.openApi.arpltnInforInqireService.entity.AtmpItem;
|
|
|
import com.its.wthr.process.DbmsJobData;
|
|
|
import com.its.wthr.process.DbmsJobProcess;
|
|
|
import com.its.wthr.process.DbmsJobType;
|
|
@@ -70,6 +72,148 @@ public class AtmpService extends AbstractXmlService {
|
|
|
String sysTime = SysUtils.getSysTimeStr();
|
|
|
log.info("AtmpService doJob Start...");
|
|
|
|
|
|
+ int errCnt = 0;
|
|
|
+ List<AtmpPltnSttsVo> atmpPltnSttsList = new ArrayList<>();
|
|
|
+ try {
|
|
|
+ log.info("AtmpService.doJbo: {} EA", AppRepository.getInstance().getAtmpPltnMap().size());
|
|
|
+ for (Map.Entry<String, AtmpPltnVo> e : AppRepository.getInstance().getAtmpPltnMap().entrySet()) {
|
|
|
+ AtmpPltnVo obj = e.getValue();
|
|
|
+ if (obj.getDEL_YN().equals("Y")) continue;
|
|
|
+
|
|
|
+ MsrStnAcctoRltmMesureDnsty request = new MsrStnAcctoRltmMesureDnsty();
|
|
|
+ boolean result = request.getMsrStnAcctoRltmMesureDnsty(this.config.getApiKey(), obj.getATMP_STTN_NM(), this.config.getApiVer());
|
|
|
+ if (result) {
|
|
|
+ AtmpItem item = request.getItem();
|
|
|
+ AtmpPltnSttsVo stts = new AtmpPltnSttsVo();
|
|
|
+
|
|
|
+ stts.setATMP_STTN_NMBR(obj.getATMP_STTN_NMBR());
|
|
|
+ stts.setMSRM_DT(item.getDataTime());
|
|
|
+ stts.setMSRM_SYST_NM(item.getMangName());
|
|
|
+ stts.setCO_VAL(item.getCoValue());
|
|
|
+ stts.setSO2_VAL(item.getSo2Value());
|
|
|
+ stts.setNO2_VAL(item.getNo2Value());
|
|
|
+ stts.setO3_VAL(item.getO3Value());
|
|
|
+ stts.setPM10_VAL(item.getPm10Value());
|
|
|
+ stts.setPM10_24HH_VAL(item.getPm10Value24());
|
|
|
+ stts.setPM25_VAL(item.getPm25Value());
|
|
|
+ stts.setPM25_24HH_VAL(item.getPm25Value24());
|
|
|
+ stts.setINTG_ATMP_VAL(item.getKhaiValue());
|
|
|
+ stts.setINTG_ATMP_GRAD(item.getKhaiGrade());
|
|
|
+ stts.setSO2_GRAD(item.getSo2Grade());
|
|
|
+ stts.setCO_GRAD(item.getCoGrade());
|
|
|
+ stts.setO3_GRAD(item.getO3Grade());
|
|
|
+ stts.setNO2_GRAD(item.getNo2Grade());
|
|
|
+ stts.setPM10_24HH_GRAD(item.getPm10Grade());
|
|
|
+ stts.setPM25_24HH_GRAD(item.getPm25Grade());
|
|
|
+ stts.setPM10_1HH_GRAD(item.getPm10Grade1h());
|
|
|
+ stts.setPM25_1HH_GRAD(item.getPm25Grade1h());
|
|
|
+ stts.setUPDT_DT(SysUtils.getSysTime());
|
|
|
+
|
|
|
+ AppRepository.getInstance().getAtmpPltnMap().get(obj.getATMP_STTN_NMBR()).setRequestResult(1);
|
|
|
+ AppRepository.getInstance().getAtmpPltnMap().get(obj.getATMP_STTN_NMBR()).setRequestValue(stts.toString());
|
|
|
+ AppRepository.getInstance().getAtmpPltnMap().get(obj.getATMP_STTN_NMBR()).setValue(stts.getValue());
|
|
|
+
|
|
|
+ atmpPltnSttsList.add(stts);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ errCnt++;
|
|
|
+ AppRepository.getInstance().getAtmpPltnMap().get(obj.getATMP_STTN_NMBR()).setRequestResult(0);
|
|
|
+ AppRepository.getInstance().getAtmpPltnMap().get(obj.getATMP_STTN_NMBR()).setRequestValue(request.getErrorMsg());
|
|
|
+ AppRepository.getInstance().getAtmpPltnMap().get(obj.getATMP_STTN_NMBR()).setValue(request.getErrorMsg());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch(Exception e) {
|
|
|
+ log.error("AtmpService.doJob: {}", e.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!atmpPltnSttsList.isEmpty()) {
|
|
|
+ this.dbmsJobProcess.add(new DbmsJobData(DbmsJobType.DATA_TYPE_ATMP, false, atmpPltnSttsList, atmpPltnSttsList.size()));
|
|
|
+ }
|
|
|
+
|
|
|
+ //////////////
|
|
|
+ ////////////// 네트워크 또는 기상청 서버 오류로 인한 오류가 발생했을 경우 재시도
|
|
|
+ //////////////
|
|
|
+ if (errCnt > 0) {
|
|
|
+ List<AtmpPltnSttsVo> atmpPltnSttsList2 = new ArrayList<>();
|
|
|
+ errCnt = 0;
|
|
|
+
|
|
|
+ try {
|
|
|
+ Thread.sleep(10000);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ log.error("AtmpService doJob thread sleep exception");
|
|
|
+ }
|
|
|
+
|
|
|
+ for (Map.Entry<String, AtmpPltnVo> e : AppRepository.getInstance().getAtmpPltnMap().entrySet()) {
|
|
|
+ AtmpPltnVo obj = e.getValue();
|
|
|
+ if (obj.getRequestResult() == 1) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("AtmpService.doJob-retry: {}-{}", obj.getATMP_STTN_NMBR(), obj.getATMP_STTN_NM());
|
|
|
+ MsrStnAcctoRltmMesureDnsty request = new MsrStnAcctoRltmMesureDnsty();
|
|
|
+ boolean result = request.getMsrStnAcctoRltmMesureDnsty(this.config.getApiKey(), obj.getATMP_STTN_NM(), this.config.getApiVer());
|
|
|
+ if (result) {
|
|
|
+ AtmpItem item = request.getItem();
|
|
|
+ AtmpPltnSttsVo stts = new AtmpPltnSttsVo();
|
|
|
+
|
|
|
+ stts.setATMP_STTN_NMBR(obj.getATMP_STTN_NMBR());
|
|
|
+ stts.setMSRM_DT(item.getDataTime());
|
|
|
+ stts.setMSRM_SYST_NM(item.getMangName());
|
|
|
+ stts.setCO_VAL(item.getCoValue());
|
|
|
+ stts.setSO2_VAL(item.getSo2Value());
|
|
|
+ stts.setNO2_VAL(item.getNo2Value());
|
|
|
+ stts.setO3_VAL(item.getO3Value());
|
|
|
+ stts.setPM10_VAL(item.getPm10Value());
|
|
|
+ stts.setPM10_24HH_VAL(item.getPm10Value24());
|
|
|
+ stts.setPM25_VAL(item.getPm25Value());
|
|
|
+ stts.setPM25_24HH_VAL(item.getPm25Value24());
|
|
|
+ stts.setINTG_ATMP_VAL(item.getKhaiValue());
|
|
|
+ stts.setINTG_ATMP_GRAD(item.getKhaiGrade());
|
|
|
+ stts.setSO2_GRAD(item.getSo2Grade());
|
|
|
+ stts.setCO_GRAD(item.getCoGrade());
|
|
|
+ stts.setO3_GRAD(item.getO3Grade());
|
|
|
+ stts.setNO2_GRAD(item.getNo2Grade());
|
|
|
+ stts.setPM10_24HH_GRAD(item.getPm10Grade());
|
|
|
+ stts.setPM25_24HH_GRAD(item.getPm25Grade());
|
|
|
+ stts.setPM10_1HH_GRAD(item.getPm10Grade1h());
|
|
|
+ stts.setPM25_1HH_GRAD(item.getPm25Grade1h());
|
|
|
+ stts.setUPDT_DT(SysUtils.getSysTime());
|
|
|
+
|
|
|
+ AppRepository.getInstance().getAtmpPltnMap().get(obj.getATMP_STTN_NMBR()).setRequestResult(1);
|
|
|
+ AppRepository.getInstance().getAtmpPltnMap().get(obj.getATMP_STTN_NMBR()).setRequestValue(stts.toString());
|
|
|
+ AppRepository.getInstance().getAtmpPltnMap().get(obj.getATMP_STTN_NMBR()).setValue(stts.getValue());
|
|
|
+
|
|
|
+ atmpPltnSttsList2.add(stts);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ errCnt++;
|
|
|
+ AppRepository.getInstance().getAtmpPltnMap().get(obj.getATMP_STTN_NMBR()).setRequestResult(0);
|
|
|
+ AppRepository.getInstance().getAtmpPltnMap().get(obj.getATMP_STTN_NMBR()).setRequestValue(request.getErrorMsg());
|
|
|
+ AppRepository.getInstance().getAtmpPltnMap().get(obj.getATMP_STTN_NMBR()).setValue(request.getErrorMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!atmpPltnSttsList2.isEmpty()) {
|
|
|
+ this.dbmsJobProcess.add(new DbmsJobData(DbmsJobType.DATA_TYPE_ATMP, false, atmpPltnSttsList2, atmpPltnSttsList2.size()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ log.info("AtmpService doJob ..End...");
|
|
|
+
|
|
|
+ MainUI UI = MainUI.getInstance();
|
|
|
+ if (UI != null) {
|
|
|
+ UI.updateAtmpPltnStts(sysTime);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void doJob_XML() {
|
|
|
+ if (!this.config.isEnabled()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ String sysTime = SysUtils.getSysTimeStr();
|
|
|
+ log.info("AtmpService doJob Start...");
|
|
|
+
|
|
|
//load();
|
|
|
|
|
|
int errCnt = 0;
|
|
@@ -199,7 +343,14 @@ public class AtmpService extends AbstractXmlService {
|
|
|
log.error("{}, {}", atmpSttnNm, e.toString());
|
|
|
atmpSttnNmUTF8 = atmpSttnNm;
|
|
|
}
|
|
|
-
|
|
|
+ // https://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty
|
|
|
+ // ?serviceKey=2y3qwo%2BwhlG6E%2BZfcyDKLMCr5Lp4gy%2BNgGuvWmgAdq7O%2Bf%2Fs4DPQz2ZD1rzDLowBq%2F6pfSi5F6UWlyM5meRiaw%3D%3D
|
|
|
+ // &returnType=json
|
|
|
+ // &numOfRows=100&
|
|
|
+ // pageNo=1
|
|
|
+ // &stationName=%EB%AA%85%EB%A5%9C%EB%8F%99
|
|
|
+ // &dataTerm=DAILY
|
|
|
+ // &ver=1.3
|
|
|
String url = "http://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty?";
|
|
|
url = url + "serviceKey=" + this.config.getApiKey();
|
|
|
url = url + "&returnType=xml";
|