shjung 3 år sedan
förälder
incheckning
b02a2cbea5

+ 2 - 2
src/main/java/com/its/op/controller/cctv/TbCctvMonitoringController.java

@@ -58,8 +58,8 @@ public class TbCctvMonitoringController {
     }
 
     @ApiOperation(value = "정보삭제(TB_CCTV_MONITORING)", response = CctvMonitoringDto.CctvMonitoringInfo.class)
-    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
-    public ResponseEntity<List<CctvMonitoringDto.CctvMonitoringInfo>> deleteByName(@RequestBody final String name) {
+    @DeleteMapping(value = "/{name}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<CctvMonitoringDto.CctvMonitoringInfo>> deleteByName(@PathVariable("name") String name) {
         List<CctvMonitoringDto.CctvMonitoringInfo> result = new ArrayList<>();
         List<CctvMonitoring> data = this.service.deleteByName(name);
         if (data != null) {

+ 8 - 5
src/main/java/com/its/op/controller/database/TbLeglHldyInfrController.java

@@ -62,12 +62,15 @@ public class TbLeglHldyInfrController {
 
     @ApiOperation(value = "정보변경/생성(TB_LEGL_HLDY_INFR)", response = LeglHldyInfrDto.LeglHldyInfo.class)
     @PostMapping(value = "", produces = {"application/json; charset=utf8"})
-    public ResponseEntity<LeglHldyInfrDto.LeglHldyInfo> mergeInfo(@RequestBody @Valid final LeglHldyInfrDto.LeglHldyUpdateReq req) {
-        LeglHldyInfr obj = this.service.mergeInfo(req);
-        if (obj != null) {
-            return new ResponseEntity<>(new LeglHldyInfrDto.LeglHldyInfo(obj), HttpStatus.OK);
+    public ResponseEntity<List<LeglHldyInfrDto.LeglHldyInfo>> mergeInfo(@RequestBody @Valid final List<LeglHldyInfrDto.LeglHldyUpdateReq> req) {
+        List<LeglHldyInfrDto.LeglHldyInfo> result = new ArrayList<>();
+        List<LeglHldyInfr> data = this.service.mergeInfo(req);
+        if (data != null) {
+            for (LeglHldyInfr obj : data) {
+                result.add(new LeglHldyInfrDto.LeglHldyInfo(obj));
+            }
         }
-        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+        return new ResponseEntity<>(result, HttpStatus.OK);
     }
 
     @ApiOperation(value = "정보삭제(TB_LEGL_HLDY_INFR)", response = LeglHldyInfrDto.LeglHldyInfo.class)

+ 60 - 0
src/main/java/com/its/op/model/dto/vms/VmsMonitoringDto.java

@@ -0,0 +1,60 @@
+package com.its.op.model.dto.vms;
+
+import com.its.op.model.entity.vms.VmsMonitoring;
+import lombok.*;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.Positive;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+public class VmsMonitoringDto implements Serializable {
+
+    @Getter
+    public static class CctvMonitoringInfo {
+
+        private final String  MONITORING_NM;        //	N	VARCHAR2(40)	N			모니터링명칭
+        private final Integer MONITORING_SEQ;       //	N	NUMBER(3)	    N			모니터링순서
+        private final Long    VMS_CTLR_NMBR;        //	N	NUMBER(10)	    N			VMS 제어기 번호
+        private final String  VMS_CTLR_ID;          //	N	VARCHAR2(30)	Y			VMS 제어기 ID
+        private final String  VMS_NM;               //	N	VARCHAR2(40)	Y			VMS 명
+
+        public CctvMonitoringInfo(VmsMonitoring entity) {
+            this.MONITORING_NM  = entity.getMONITORING_NM();
+            this.MONITORING_SEQ = entity.getMONITORING_SEQ();
+            this.VMS_CTLR_NMBR = entity.getVMS_CTLR_NMBR();
+
+            if (entity.getVms() != null) {
+                this.VMS_CTLR_ID = entity.getVms().getVMS_CTLR_ID();
+                this.VMS_NM = entity.getVms().getVMS_NM();
+            }
+            else {
+                this.VMS_CTLR_ID = "-";
+                this.VMS_NM = "?";
+            }
+        }
+    }
+
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class VmsMonitoringUpdateReq {
+
+        @NotEmpty
+        @Size(min=1, max=40)
+        private String  MONITORING_NM;      //	N	VARCHAR2(40)	N			모니터링명칭
+        @Positive
+        private Integer MONITORING_SEQ;     //	N	NUMBER(3)	    N			모니터링순서
+        @Positive
+        private Long    VMS_CTLR_NMBR;     //	N	NUMBER(10)	    N			VMS 제어기 번호
+
+        @Builder
+        public VmsMonitoringUpdateReq(String MONITORING_NM, Integer MONITORING_SEQ, Long VMS_CTLR_NMBR) {
+            this.MONITORING_NM = MONITORING_NM;
+            this.MONITORING_SEQ = MONITORING_SEQ;
+            this.VMS_CTLR_NMBR = VMS_CTLR_NMBR;
+        }
+    }
+
+}

+ 1 - 1
src/main/java/com/its/op/model/entity/cctv/CctvMonitoring.java

@@ -36,7 +36,7 @@ public class CctvMonitoring {
     @Column(length = 1)
     private Integer VIEW_MODE;          //	N	NUMBER(1)	    Y	0		화면에 보여지는 방식(0:기본,1:화면맞춤))
 
-    @OneToOne//(cascade = CascadeType.ALL)
+    @OneToOne(cascade = CascadeType.ALL)
     @JoinColumn(insertable=false, updatable=false, name="CCTV_CTLR_NMBR", referencedColumnName="CCTV_MNGM_NMBR")
     @NotFound(action = NotFoundAction.IGNORE)
     private CctvCtlr cctv = new CctvCtlr();

+ 106 - 0
src/main/java/com/its/op/model/entity/vms/VmsCtlr.java

@@ -0,0 +1,106 @@
+package com.its.op.model.entity.vms;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.ColumnDefault;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@DynamicInsert
+@DynamicUpdate
+@Getter
+@NoArgsConstructor
+@Builder
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_VMS_CTLR")
+public class VmsCtlr {
+
+    @Id
+    @Column(nullable = false, unique = true, length = 10)
+    private Long    VMS_CTLR_NMBR;          //	N	NUMBER(10)	    N			VMS 제어기 번호
+    private String  VMS_ID;                 //	N	VARCHAR2(4)	    Y			VMS ID
+    private String  VMS_CTLR_ID;            //	N	VARCHAR2(30)	Y			VMS 제어기 ID
+    private String  VMS_NM;                 //	N	VARCHAR2(40)	Y			VMS 명
+    private String  VMS_CTLR_IP;            //	N	VARCHAR2(20)	Y			VMS 제어기 아이피
+    private String  VMS_USAG_TYPE_CD;       //	N	VARCHAR2(7)	    Y			VMS 용도 유형 코드
+    private String  VMS_FRM_TYPE_CD;        //	N	VARCHAR2(7)	    Y			VMS 형식 유형 코드
+    private String  VMS_TYPE_CD;            //	N	VARCHAR2(7)	    Y			VMS 유형 코드
+    private String  VMS_MODL_TYPE_CD;       //	N	VARCHAR2(7)	    Y			VMS 모듈 유형 코드
+    private String  VMS_CMNC_PORT;          //	N	VARCHAR2(5)	    Y			VMS 통신 포트
+
+    private String  OPER_MODE;              //	N	VARCHAR2(7)	    Y			운영 모드
+
+    @Column(columnDefinition = "NUMBER", length = 11, precision = 8)
+    private Double  X_CRDN;                 //	N	NUMBER(11,8)	Y			X 좌표
+    @Column(columnDefinition = "NUMBER", length = 11, precision = 8)
+    private Double  Y_CRDN;                 //	N	NUMBER(10,8)	Y			Y 좌표
+    private String  ISTL_LCTN_NM;           //	N	VARCHAR2(40)	Y			설치 위치 명
+
+    private String  WEB_CMRA_IP;            //	N	VARCHAR2(20)	Y			웹 카메라 아이피
+    private String  WEB_CMRA_PORT;          //	N	VARCHAR2(5)	    Y			웹 카메라 포트
+    private String  WEB_CMRA_ID;            //	N	VARCHAR2(30)	Y			웹 카메라 ID
+    private String  WEB_CMRA_PWD;           //	N	VARCHAR2(64)	Y			웹 카메라 암호
+
+    private Integer VMS_MAX_PHSE_NUM;       //	N	NUMBER(2)	    Y			VMS 최대 표출면 개수
+    private String  PANL_ON_TIME;           //	N	VARCHAR2(4)	    Y			전광판 ON TIME
+    private String  PANL_OFF_TIME;          //	N	VARCHAR2(4)	    Y			전광판 OFF TIME
+
+    private Integer VMS_CMNC_ERR_BASS_VAL;  //	N	NUMBER(3)	    Y			VMS 통신 오류 기본 값
+    private Integer VMS_NGHT_BRGH_STEP;     //	N	NUMBER(2)	    Y			VMS 야간 휘도 단계
+    private Integer VMS_WEEK_BRGH_STEP;     //	N	NUMBER(2)	    Y			VMS 주간 휘도 단계
+    private Integer VMS_PHSE_CHNG_CYCL;     //	N	NUMBER(3)	    Y			VMS 표출면 변경 주기
+    private Integer VMS_MODL_ERR_RATE;      //	N	NUMBER(3)	    Y			VMS 모듈 오류 율
+    private Integer CMNCFAIL_SLOT_NMBR;     //	N	NUMBER(4)	    Y	0		통신장애 SLOT 번호
+    private Integer PWER_FAIL_SLOT_NMBR;    //	N	NUMBER(4)	    Y	0		전원 장애 SLOT 번호
+    private String  PANL_PWER_MODE;         //	N	VARCHAR2(7)	    Y			전광판 전원 모드
+    private String  BRGH_MODE;              //	N	VARCHAR2(7)	    Y			휘도 모드
+
+    private Integer VMS_LOC_IFSC_ID;        //	N	NUMBER(10)	    Y			VMS 위치 정보제공구간 ID
+    @Column(columnDefinition = "NUMBER", length = 6, precision = 3)
+    private String  FAN_MTNS_TMPR;          //	N	NUMBER(6,3)	    Y			팬 동작 온도
+    @Column(columnDefinition = "NUMBER", length = 6, precision = 3)
+    private String  HETR_MTNS_TMPR;         //	N	NUMBER(6,3)	    Y			히터 동작 온도
+    private String  STRM_SESN_NM;           //	N	VARCHAR2(200)	Y			스트리밍 세션 명
+
+    @Column(columnDefinition = "CHAR", length = 1) @ColumnDefault(value = "N")
+    private String  CMTRINFR_CNCT_YN;       //	N	CHAR(1)	        Y	'N'		소통정보 연계 여부
+    @Column(columnDefinition = "CHAR", length = 1) @ColumnDefault(value = "N")
+    private String  WTHRINFR_CNCT_YN;       //	N	CHAR(1)	        Y	'N'		기상정보 연계 여부
+    @Column(columnDefinition = "CHAR", length = 1) @ColumnDefault(value = "N")
+    private String  ENVRINFR_CNCT_YN;       //	N	CHAR(1)	        Y	'N'		환경정보 연계 여부
+    @Column(columnDefinition = "CHAR", length = 1) @ColumnDefault(value = "N")
+    private String  TRFC_STRG_USE_YN;       //	N	CHAR(1)	        Y	'N'		교통 전략 사용 여부
+    @Column(columnDefinition = "CHAR", length = 1) @ColumnDefault(value = "N")
+    private String  DEL_YN;                 //	N	CHAR(1)	        Y	'N'		삭제 여부
+
+
+    public VmsCtlr(Long VMS_CTLR_NMBR) {
+        this.VMS_CTLR_NMBR = VMS_CTLR_NMBR;
+    }
+/*
+    public void updateInfo(CctvCtlrDto.CctvCtlrUpdateReq req) {
+        this.CCTV_CTLR_ID = req.getCCTV_CTLR_ID();
+        this.CCTV_CTLR_IP = req.getCCTV_CTLR_IP();
+        this.CCTV_CTLR_PORT = req.getCCTV_CTLR_PORT();
+        this.STRM_SESN_NM = req.getSTRM_SESN_NM();
+        this.X_CRDN = req.getX_CRDN();
+        this.Y_CRDN = req.getY_CRDN();
+        this.ISTL_LCTN_NM = req.getISTL_LCTN_NM();
+        this.ISTL_LCTN_ADDR = req.getISTL_LCTN_ADDR();
+        this.STRM_RTSP_ADDR = req.getSTRM_RTSP_ADDR();
+        this.STRM_RTMP_ADDR = req.getSTRM_RTMP_ADDR();
+        this.STRM_HTTP_ADDR = req.getSTRM_HTTP_ADDR();
+        this.CCTV_TYPE = req.getCCTV_TYPE();
+        this.DEL_YN = req.getDEL_YN();
+
+    }*/
+
+}

+ 56 - 0
src/main/java/com/its/op/model/entity/vms/VmsMonitoring.java

@@ -0,0 +1,56 @@
+package com.its.op.model.entity.vms;
+
+import com.its.op.model.dto.cctv.CctvMonitoringDto;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+import org.hibernate.annotations.NotFound;
+import org.hibernate.annotations.NotFoundAction;
+
+import javax.persistence.*;
+
+@DynamicInsert
+@DynamicUpdate
+@Getter
+@NoArgsConstructor
+@Builder
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_VMS_MONITORING")
+@IdClass(VmsMonitoringKey.class)
+public class VmsMonitoring {
+
+    @Id
+    @Column(nullable = false, length = 3)
+    private Integer MONITORING_TYPE;    //	N	NUMBER(3)	    N			모니터링유형(1:현시,2:시나리오,3:영상,4:모듈)
+    @Id
+    @Column(nullable = false, length = 40)
+    private String  MONITORING_NM;      //	N	VARCHAR2(40)	N			모니터링명칭
+    @Id
+    @Column(nullable = false, length = 3)
+    private Integer MONITORING_SEQ;     //	N	NUMBER(3)	    N			모니터링순서
+
+    @Column(nullable = false, length = 10)
+    private Long    VMS_CTLR_NMBR;     //	N	NUMBER(10)	    N			웹카메라 제어기번호
+
+    @OneToOne(cascade = CascadeType.ALL)
+    @JoinColumn(insertable=false, updatable=false, name="VMS_CTLR_NMBR", referencedColumnName="VMS_CTLR_NMBR")
+    @NotFound(action = NotFoundAction.IGNORE)
+    private VmsCtlr vms = new VmsCtlr();
+
+    public VmsMonitoring(Integer MONITORING_TYPE, CctvMonitoringDto.CctvMonitoringUpdateReq req) {
+        this.MONITORING_TYPE = MONITORING_TYPE;
+        this.MONITORING_NM  = req.getMONITORING_NM();
+        this.MONITORING_SEQ = req.getMONITORING_SEQ();
+        this.VMS_CTLR_NMBR = req.getCCTV_CTLR_NMBR();
+    }
+    public void updateInfo(Integer MONITORING_TYPE, CctvMonitoringDto.CctvMonitoringUpdateReq req) {
+        this.MONITORING_TYPE = MONITORING_TYPE;
+        this.MONITORING_NM  = req.getMONITORING_NM();
+        this.MONITORING_SEQ = req.getMONITORING_SEQ();
+        this.VMS_CTLR_NMBR = req.getCCTV_CTLR_NMBR();
+    }
+}

+ 19 - 0
src/main/java/com/its/op/model/entity/vms/VmsMonitoringKey.java

@@ -0,0 +1,19 @@
+package com.its.op.model.entity.vms;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+//@Embeddable
+public class VmsMonitoringKey implements Serializable {
+
+    private Integer MONITORING_TYPE;    //	N	NUMBER(3)	N			모니터링유형(1:예비,2,예비,3,영상,4:예비)
+    private String  MONITORING_NM;      //	N	VARCHAR2(40)	N			모니터링명칭
+    private Integer MONITORING_SEQ;     //	N	NUMBER(3)	N			모니터링순서
+
+}

+ 5 - 5
src/main/java/com/its/op/repository/cctv/CctvMonitoringRepository.java

@@ -15,15 +15,15 @@ public interface CctvMonitoringRepository extends JpaRepository<CctvMonitoring,
     @Query("select p from CctvMonitoring p inner join fetch p.cctv")
     List<CctvMonitoring> findAll();
 
-    @Query("select p from CctvMonitoring p inner join fetch p.cctv where p.MONITORING_NM = :monitoringNm")
-    List<CctvMonitoring> findByName(String monitoringNm);
+    @Query("select p from CctvMonitoring p inner join fetch p.cctv where p.MONITORING_NM = :MONITORING_NM")
+    List<CctvMonitoring> findByName(String MONITORING_NM);
 
     @Modifying // select 문이 아님을 나타낸다
-    @Query("delete from CctvMonitoring m where m.MONITORING_NM = :monitoringNm")
-    void deleteByName(String monitoringNm) throws Exception;
+    @Query("delete from CctvMonitoring m where m.MONITORING_NM = :MONITORING_NM")
+    void deleteByName(String MONITORING_NM) throws Exception;
 
     @Modifying // select 문이 아님을 나타낸다
-    @Query(value = "insert into CctvMonitoring m values(:mtype, :name, :seq, :nmbr, :mode)", nativeQuery = true)
+    @Query(value = "insert into TB_CCTV_MONITORING m values(:mtype, :name, :seq, :nmbr, :mode)", nativeQuery = true)
     void insertValue(Integer mtype, String name, Integer seq, Long nmbr, Integer mode) throws Exception;
 
 }

+ 2 - 1
src/main/java/com/its/op/service/cctv/TbCctvMonitoringService.java

@@ -49,9 +49,10 @@ public class TbCctvMonitoringService {
             for (String name : names) {
                 this.repo.deleteByName(name);
             }
-
+            //this.repo.flush();
             for (CctvMonitoringDto.CctvMonitoringUpdateReq obj : req) {
                 CctvMonitoring data = new CctvMonitoring(3, obj);
+                //this.repo.save(data);
                 this.repo.insertValue(data.getMONITORING_TYPE(),
                         data.getMONITORING_NM(),
                         data.getMONITORING_SEQ(),

+ 15 - 12
src/main/java/com/its/op/service/database/TbLeglHldyInfrService.java

@@ -40,24 +40,27 @@ public class TbLeglHldyInfrService {
         return null;
     }
 
-    public LeglHldyInfr mergeInfo(LeglHldyInfrDto.LeglHldyUpdateReq req) {
+    public List<LeglHldyInfr> mergeInfo(List<LeglHldyInfrDto.LeglHldyUpdateReq> req) {
+        List<LeglHldyInfr> result = new ArrayList<>();
         try {
-            Optional<LeglHldyInfr> data = this.repo.findById(req.getYMD());
-            LeglHldyInfr obj;
-            if (data.isPresent()) {
-                obj = data.get();
-            }
-            else {
-                obj = new LeglHldyInfr(req.getYMD());
+            LeglHldyInfr newObj;
+            for (LeglHldyInfrDto.LeglHldyUpdateReq obj : req) {
+                Optional<LeglHldyInfr> data = this.repo.findById(obj.getYMD());
+                if (data.isPresent()) {
+                    newObj = data.get();
+                } else {
+                    newObj = new LeglHldyInfr(obj.getYMD());
+                }
+                newObj.updateInfo(obj);
+                this.repo.save(newObj);
+
+                result.add(newObj);
             }
-            obj.updateInfo(req);
-            this.repo.save(obj);
-            return obj;
         }
         catch (Exception e) {
             log.error("{}.mergeInfo: Object: {}, Exception: {}", getClass().getSimpleName(), req, e.getMessage());
         }
-        return null;
+        return result;
     }
 
     public LeglHldyInfr deleteById(String id) {