package com.utic.ptis.server.service; import com.utic.common.utils.Elapsed; import com.utic.ptis.server.dao.mapper.dwdb.DwdbParamMapper; import com.utic.ptis.server.dao.mapper.utic.UticParamMapper; import com.utic.ptis.server.dto.dwdb.ParamAnalysisType; import com.utic.ptis.server.dto.dwdb.ParamMissing; import com.utic.ptis.server.dto.utic.TrafficGrade; import com.utic.ptis.server.dto.utic.TrafficWeight; import com.utic.ptis.server.utils.LogUtils; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.List; import java.util.concurrent.ConcurrentHashMap; @Slf4j @Getter @RequiredArgsConstructor @Service public class LinkTrafParamService implements AbstractProcessService { private final DwdbParamMapper dwdbParamMapper; private final UticParamMapper uticParamMapper; private final ParamAnalysisType analysisType = ParamAnalysisType.builder() .analysisType(ParamAnalysisType.ANALYSIS_TYPE_PRIORITY) .build(); private final ParamMissing missing = ParamMissing.builder() .usePst(true) .useKnn(true) .usePtn(true) .extKnn(true) .missPri(true) .build(); private final ConcurrentHashMap trafGradeMap = new ConcurrentHashMap<>(); private final ConcurrentHashMap trafWeightMap = new ConcurrentHashMap<>(); public int processing() { // log.info("[PARAM..] processing: start."); // Elapsed elapsed = new Elapsed(); loadingTrafficGrade(); loadingTrafficWeight(); loadingTrafficMissing(); loadingTrafficAnalysisType(); // log.info("[PARAM..] processing: end. {}", Elapsed.elapsedStr(elapsed.nanoSeconds())); return 0; } public void loadingTrafficAnalysisType() { Elapsed elapsed = new Elapsed(); try { ParamAnalysisType analysisType = this.dwdbParamMapper.findAnalysisType(); this.analysisType.setParam(analysisType); log.info("[PARAM..] (SEL) {} [({})(0:우선순위,1:가중치)]", LogUtils.elapsedLog("가공방식파라미터", 1, elapsed.milliSeconds()), this.analysisType.getAnalysisType()); } catch (Exception e) { log.error("[PARAM..] findAnalysisType: Exception: {}", e.getMessage()); } } public void loadingTrafficMissing() { Elapsed elapsed = new Elapsed(); try { ParamMissing missing = this.dwdbParamMapper.findMissing(); this.missing.setParam(missing); log.info("[PARAM..] (SEL) {} [PST({}), Pattern({}), 우선순위({})]", LogUtils.elapsedLog("결측파라미터", 1, elapsed.milliSeconds()), this.missing.isUsePst(), this.missing.isUsePtn(), this.missing.isMissPri()); } catch (Exception e) { log.error("[PARAM..] findMissing: Exception: {}", e.getMessage()); } } public void loadingTrafficWeight() { Elapsed elapsed = new Elapsed(); try { List trafficWeights = this.uticParamMapper.findTrafficWeight(); for (TrafficWeight trafficWeight : trafficWeights) { this.trafWeightMap.put(trafficWeight.getWeightCode(), trafficWeight); } log.info("[PARAM..] (SEL) {}", LogUtils.elapsedLog("가중치파라미터", trafficWeights.size(), elapsed.milliSeconds())); } catch (Exception e) { log.error("[PARAM..] findTrafficWeight: Exception: {}", e.getMessage()); } } public void loadingTrafficGrade() { Elapsed elapsed = new Elapsed(); try { List trafficGrades = this.uticParamMapper.findTrafficGrade(); for (TrafficGrade trafficGrade : trafficGrades) { this.trafGradeMap.put(trafficGrade.getRoadRank(), trafficGrade); } log.info("[PARAM..] (SEL) {}", LogUtils.elapsedLog("소통등급(TRAFFICGRADE)", trafficGrades.size(), elapsed.milliSeconds())); } catch (Exception e) { log.error("[PARAM..] findTrafficGrade: Exception: {}", e.getMessage()); } } }