Selaa lähdekoodia

vds dtct positive value remove

shjung 3 vuotta sitten
vanhempi
commit
669572a465

+ 1 - 1
src/main/java/com/its/api/bis/service/BitService.java

@@ -281,6 +281,6 @@ public class BitService {
     @Transactional(readOnly = true)
     public List<FcltSttsDto> findAllListCommStts() {
         FcltSttsListDto result = findAllListSttsTotal();
-        return result.getSttsMap().get(0);
+        return result.getSttsMap().get("BIT");
     }
 }

+ 68 - 0
src/main/java/com/its/api/config/ThreadPoolTaskExecutorConfig.java

@@ -0,0 +1,68 @@
+package com.its.api.config;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.AsyncConfigurerSupport;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import javax.annotation.PostConstruct;
+import java.util.concurrent.Executor;
+
+@EqualsAndHashCode(callSuper = true)
+@Slf4j
+@Data
+@Configuration
+public class ThreadPoolTaskExecutorConfig extends AsyncConfigurerSupport {
+
+    private int poolCore = 0;
+
+    @PostConstruct
+    private void init() {
+
+        this.poolCore = Runtime.getRuntime().availableProcessors();
+        if (this.poolCore < 8) {
+            this.poolCore = 16;
+        }
+
+        log.info("[{}] ----------------------------", getClass().getSimpleName());
+        log.info("[{}]  availableProcessors: {} EA", getClass().getSimpleName(), Runtime.getRuntime().availableProcessors());
+        log.info("[{}]             PoolCore: {} EA", getClass().getSimpleName(), this.poolCore);
+    }
+
+    public ThreadPoolTaskExecutor getDefaultExecutor(int poolSize) {
+        ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
+        threadPoolTaskExecutor.setCorePoolSize(poolSize);           // 인스턴스 되면서 기본적으로 띄울 스레드 개수.
+                                                                    // 아무작업이 없어도 corePoolSize 만큼 스레드가 생성
+        threadPoolTaskExecutor.setMaxPoolSize(poolSize*2);          // 풀 최대개수, Queue Capacity 까지 꽉차는 경우 maxPoolSize 만큼 넓혀감
+        threadPoolTaskExecutor.setQueueCapacity(poolSize*4);        // 스레드 대기큐, Queue Capacity 가 꽉차면 스레드가 추가로 생성됨. Async 처리시 Queue Size
+                                                                    // (설정하지 않으면 Integer.MAX 이기 때문에 성능에 문제가 발생함)
+        return threadPoolTaskExecutor;
+    }
+
+    @Bean(name="cctvPsetScnrExecutor")
+    public Executor getCctvPsetScnrExecutor() {
+        ThreadPoolTaskExecutor threadPoolTaskExecutor = getDefaultExecutor(this.poolCore);
+        threadPoolTaskExecutor.setThreadNamePrefix("pset-scnr-pool-");
+        threadPoolTaskExecutor.initialize();
+        return threadPoolTaskExecutor;
+    }
+
+    @Bean(name="dbmsJobExecutor")
+    public Executor getDbmsJobExecutor() {
+        ThreadPoolTaskExecutor threadPoolTaskExecutor = getDefaultExecutor(this.poolCore);
+        threadPoolTaskExecutor.setThreadNamePrefix("dbms-pool-");
+        threadPoolTaskExecutor.initialize();
+        return threadPoolTaskExecutor;
+    }
+
+    @Override
+    public Executor getAsyncExecutor() {
+        ThreadPoolTaskExecutor threadPoolTaskExecutor = getDefaultExecutor(this.poolCore *2);
+        threadPoolTaskExecutor.setThreadNamePrefix("async-pool-");
+        threadPoolTaskExecutor.initialize();
+        return threadPoolTaskExecutor;
+    }
+}

+ 1 - 6
src/main/java/com/its/api/its/model/dto/cctv/TbCctvPsetDto.java

@@ -53,9 +53,6 @@ public class TbCctvPsetDto implements Serializable {
     private String dfltYn;
 
     // Code Description Field
-    @ApiModelProperty("디폴트 여부 설명")
-    @JsonProperty("dflt_desc")    // DFLT_YN
-    private String dfltDesc;
 
     @ApiModel("TbCctvPsetUpdReq(CCTV 프리셋 정보변경)")
     @Getter
@@ -118,7 +115,7 @@ public class TbCctvPsetDto implements Serializable {
         }
 
         public TbCctvPset toEntity() {
-            TbCctvPset entity = TbCctvPset.builder()
+            return TbCctvPset.builder()
                     .cctvMngmNmbr(this.cctvMngmNmbr)
                     .psetNmbr(this.psetNmbr)
                     .panVal(this.panVal)
@@ -128,8 +125,6 @@ public class TbCctvPsetDto implements Serializable {
                     .psetNm(this.psetNm)
                     .dfltYn(this.dfltYn)
                     .build();
-
-            return entity;
         }
 
     }

+ 10 - 0
src/main/java/com/its/api/its/model/dto/cctv/TbCctvScnrDto.java

@@ -35,7 +35,16 @@ public class TbCctvScnrDto implements Serializable {
     @JsonProperty("pset_nmbr")
     private String psetNmbr;
 
+    @ApiModelProperty("시나리오수행시각, Nullable = Y, VARCHAR(14)")  // Y VARCHAR(14)
+    @JsonProperty("ctrl_dt")
+    private String ctrlDt;
+
+    @ApiModelProperty("시나리오수행결과(Y:성공, N:실패), Nullable = Y, VARCHAR(3)")  // Y CHAR(1)
+    @JsonProperty("ctrl_res_yn")
+    private String ctrlResYn;
+
     // Code Description Field
+
     @ApiModel("TbCctvScnrUpdReq(CCTV 시나리오 정보변경)")
     @Getter
     @Setter
@@ -79,6 +88,7 @@ public class TbCctvScnrDto implements Serializable {
                     .psetNmbr(this.psetNmbr)
                     .build();
 
+            entity.initEndHms();
             return entity;
         }
 

+ 0 - 4
src/main/java/com/its/api/its/model/dto/vds/TbVdsDtctDto.java

@@ -219,12 +219,10 @@ public class TbVdsDtctDto implements Serializable {
 
         @ApiModelProperty("최대 교통량, Nullable = Y, NUMBER(6)")  // Y NUMBER(6)
         @JsonProperty("max_tfvl")
-        @Positive
         private Integer maxTfvl;
 
         @ApiModelProperty("최소 교통량, Nullable = Y, NUMBER(6)")  // Y NUMBER(6)
         @JsonProperty("min_tfvl")
-        @Positive
         private Integer minTfvl;
 
         @ApiModelProperty("최대 점유 율, , NUMBER(6,2)")  // Y NUMBER(6,2)
@@ -237,12 +235,10 @@ public class TbVdsDtctDto implements Serializable {
 
         @ApiModelProperty("최대 속도, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
         @JsonProperty("max_sped")
-        @Positive
         private Integer maxSped;
 
         @ApiModelProperty("최소 속도, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
         @JsonProperty("min_sped")
-        @Positive
         private Integer minSped;
 
         @ApiModelProperty("링크ID")  // N NUMBER(10)

+ 18 - 0
src/main/java/com/its/api/its/model/entity/cctv/TbCctvScnr.java

@@ -41,12 +41,28 @@ public class TbCctvScnr implements Serializable {
     @Column(name = "PSET_NMBR", length = 3)
     private String psetNmbr;
 
+    @ApiModelProperty("시나리오수행시각")  // Y VARCHAR(14)
+    @Column(name = "CTRL_DT", length = 14)
+    private String ctrlDt;
+
+    @ApiModelProperty("시나리오수행결과(Y:성공, N:실패)")  // Y CHAR(1)
+    @Column(name = "CTRL_RES_YN", columnDefinition = "CHAR", length = 1)
+    private String ctrlResYn;
+
+    public void initEndHms() {
+        if (this.endHms == null || this.endHms.length() != 6) {
+            this.endHms = "000000";
+        }
+    }
+
     public TbCctvScnrDto toDto() {
         return TbCctvScnrDto.builder()
                 .cctvMngmNmbr(this.cctvMngmNmbr)
                 .strtHms(this.strtHms)
                 .endHms(this.endHms)
                 .psetNmbr(this.psetNmbr)
+                .ctrlDt(this.ctrlDt)
+                .ctrlResYn(this.ctrlResYn)
                 .build();
     }
 
@@ -57,6 +73,8 @@ public class TbCctvScnr implements Serializable {
     }
 
     public void updateInfo(TbCctvScnrDto.TbCctvScnrUpdReq req) {
+        //this.strtHms = req.getStrtHms();
+        //this.endHms = req.getEndHms();
         this.psetNmbr = req.getPsetNmbr();
     }
 

+ 29 - 0
src/main/java/com/its/api/scheduler/ItsApiScheduler.java

@@ -0,0 +1,29 @@
+package com.its.api.scheduler;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PreDestroy;
+
+@Slf4j
+@EnableScheduling
+@Component
+public class ItsApiScheduler {
+
+    @PreDestroy
+    public void onShutDown() {
+    }
+
+    /**
+     * CCTV Preset 제어 스케줄러
+     */
+    @Async
+    @Scheduled(cron = "0 * * * * *")  // 1분 주기 작업 실행
+    public void jobCctvPsetScnr() {
+        log.info("START jobCctvPsetScnr");
+    }
+
+}

+ 1 - 1
src/main/java/com/its/api/utis/service/RsemstService.java

@@ -79,7 +79,7 @@ public class RsemstService {
     @Transactional(readOnly = true)
     public List<FcltSttsDto> findAllListCommStts() {
         FcltSttsListDto result = findAllListSttsTotal();
-        return result.getSttsMap().get(0);
+        return result.getSttsMap().get("RSE");
     }
 
     /**