| 
					
				 | 
			
			
				@@ -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"; 
			 |