TbCctvCtlr.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. package com.its.op.entity.its.cctv;
  2. import com.its.op.dto.its.cctv.TbCctvCtlrDto;
  3. import com.its.op.dto.its.cctv.TbCctvCtlrSttsDto;
  4. import com.its.op.dto.its.facility.TbFcltSttsAlrmStupDto;
  5. import com.its.op.global.CmmnCdManager;
  6. import com.its.utils.ItsUtils;
  7. import io.swagger.annotations.ApiModel;
  8. import io.swagger.annotations.ApiModelProperty;
  9. import lombok.AllArgsConstructor;
  10. import lombok.Builder;
  11. import lombok.Getter;
  12. import lombok.NoArgsConstructor;
  13. import org.hibernate.annotations.NotFound;
  14. import org.hibernate.annotations.NotFoundAction;
  15. import javax.persistence.*;
  16. import java.io.Serializable;
  17. /**
  18. * CCTV 제어기 Entity Class
  19. */
  20. @Getter
  21. @NoArgsConstructor//(access = AccessLevel.PROTECTED)
  22. @Builder
  23. @AllArgsConstructor
  24. @ApiModel("CCTV 제어기")
  25. @Entity
  26. @Table(name = "TB_CCTV_CTLR")
  27. public class TbCctvCtlr implements Serializable {
  28. private static final long serialVersionUID = 1L;
  29. @ApiModelProperty("CCTV 관리 번호") // N NUMBER(10)
  30. @Id
  31. @Column(name = "CCTV_CTLR_NMBR", nullable = false, columnDefinition = "NUMBER", length = 10)
  32. private Long cctvCtlrNmbr;
  33. @ApiModelProperty("CCTV 제어기 ID") // Y VARCHAR2(10)
  34. @Column(name = "CCTV_CTLR_ID", length = 10)
  35. private String cctvCtlrId;
  36. @ApiModelProperty("CCTV 명칭") // Y VARCHAR2(40)
  37. @Column(name = "CCTV_NM", length = 40)
  38. private String cctvNm;
  39. @ApiModelProperty("설치 위치 명") // Y VARCHAR2(40)
  40. @Column(name = "ISTL_LCTN_NM", length = 40)
  41. private String istlLctnNm;
  42. @ApiModelProperty("설치 위치 주소") // Y VARCHAR2(200)
  43. @Column(name = "ISTL_LCTN_ADDR", length = 200)
  44. private String istlLctnAddr;
  45. @ApiModelProperty("CCTV 제어기 아이피") // Y VARCHAR2(20)
  46. @Column(name = "CCTV_CTLR_IP", length = 20)
  47. private String cctvCtlrIp;
  48. @ApiModelProperty("CCTV 제어기 포트") // Y NUMBER(5)
  49. @Column(name = "CCTV_CTLR_PORT", columnDefinition = "NUMBER", length = 5)
  50. private Integer cctvCtlrPort;
  51. @ApiModelProperty("CCTV 제어기 지역번호") // Y NUMBER(5)
  52. @Column(name = "CCTV_CTLR_LOCAL_NO", columnDefinition = "NUMBER", length = 5)
  53. private Integer cctvCtlrLocalNo;
  54. @ApiModelProperty("CCTV 유형 코드('CCTVT')") // Y VARCHAR2(7)
  55. @Column(name = "CCTV_TYPE_CD", length = 7)
  56. private String cctvTypeCd;
  57. @ApiModelProperty("CCTV 자막기 아이피") // Y VARCHAR2(20)
  58. @Column(name = "CCTV_CAPT_IP", length = 20)
  59. private String cctvCaptIp;
  60. @ApiModelProperty("CCTV 자막기 포트") // Y NUMBER(5)
  61. @Column(name = "CCTV_CAPT_PORT", columnDefinition = "NUMBER", length = 5)
  62. private Integer cctvCaptPort;
  63. @ApiModelProperty("스트리밍 서버 아이피--->분배서버ip") // Y VARCHAR2(20)
  64. @Column(name = "STRM_SVR_IP", length = 20)
  65. private String strmSvrIp;
  66. @ApiModelProperty("스트리밍 서버 포트--->분배서버port") // Y NUMBER(5)
  67. @Column(name = "STRM_SVR_PORT", columnDefinition = "NUMBER", length = 5)
  68. private Integer strmSvrPort;
  69. @ApiModelProperty("스트리밍 세션 명") // Y VARCHAR2(200)
  70. @Column(name = "STRM_SESN_NM", length = 200)
  71. private String strmSesnNm;
  72. @ApiModelProperty("X 좌표") // Y NUMBER(11,8)
  73. @Column(name = "X_CRDN", columnDefinition = "NUMBER", length = 11, precision = 8)
  74. private Double xCrdn;
  75. @ApiModelProperty("Y 좌표") // Y NUMBER(10,8)
  76. @Column(name = "Y_CRDN", columnDefinition = "NUMBER", length = 10, precision = 8)
  77. private Double yCrdn;
  78. @ApiModelProperty("스트리밍 RTSP 주소") // Y VARCHAR2(200)
  79. @Column(name = "STRM_RTSP_ADDR", length = 200)
  80. private String strmRtspAddr;
  81. @ApiModelProperty("스트리밍 HTTP 주소") // Y VARCHAR2(200)
  82. @Column(name = "STRM_HTTP_ADDR", length = 200)
  83. private String strmHttpAddr;
  84. @ApiModelProperty("인터넷 HLS 주소") // Y VARCHAR2(200)
  85. @Column(name = "INTR_HTTP_ADDR", length = 200)
  86. private String intrHttpAddr;
  87. @ApiModelProperty("WEB RTC 서버 아이피") // Y VARCHAR2(20)
  88. @Column(name = "WEB_RTC_SVR_IP", length = 20)
  89. private String webRtcSvrIp;
  90. @ApiModelProperty("WEB RTC 서버 포트") // Y NUMBER(5)
  91. @Column(name = "WEB_RTC_SVR_PORT", columnDefinition = "NUMBER", length = 5)
  92. private Integer webRtcSvrPort;
  93. @ApiModelProperty("WEB RTC ID") // Y VARCHAR2(56)
  94. @Column(name = "WEB_RTC_ID", length = 56)
  95. private String webRtcId;
  96. @ApiModelProperty("CCTV 대체 영상 이미지 번호") // Y NUMBER(5)
  97. @Column(name = "ALTT_IMAG_NMBR", columnDefinition = "NUMBER", length = 5)
  98. private Integer alttImagNmbr;
  99. @ApiModelProperty("CCTV 대체 표출 여부") // Y CHAR(1)
  100. @Column(name = "ALTT_IMAG_DSPL_YN", columnDefinition = "CHAR", length = 1)
  101. private String alttImagDsplYn;
  102. @ApiModelProperty("운영자 제어 여부") // Y CHAR(1)
  103. @Column(name = "SYOP_CNTL_YN", columnDefinition = "CHAR", length = 1)
  104. private String syopCntlYn;
  105. @ApiModelProperty("링크ID") // Y NUMBER(10)
  106. @Column(name = "LINK_ID", columnDefinition = "NUMBER", length = 10)
  107. private Long linkId;
  108. @ApiModelProperty("노드ID") // Y NUMBER(10)
  109. @Column(name = "NODE_ID", columnDefinition = "NUMBER", length = 10)
  110. private Long nodeId;
  111. @ApiModelProperty("공단 CCTV ID") // Y VARCHAR2(10)
  112. @Column(name = "CCTV_ID", length = 10)
  113. private String cctvId;
  114. @ApiModelProperty("CCTV 지역 구분") // Y VARCHAR2(7)
  115. @Column(name = "CCTV_AREA_DVSN", length = 7)
  116. private String cctvAreaDvsn;
  117. @ApiModelProperty("사용 여부") // Y CHAR(1)
  118. @Column(name = "USE_YN", columnDefinition = "CHAR", length = 1)
  119. private String useYn;
  120. @ApiModelProperty("팬 ON 온도") // Y NUMBER(3)
  121. @Column(name = "FAN_ON_TMPR", columnDefinition = "NUMBER", length = 3)
  122. private Integer fanOnTmpr;
  123. @ApiModelProperty("팬 OFF 온도") // Y NUMBER(3)
  124. @Column(name = "FAN_OFF_TMPR", columnDefinition = "NUMBER", length = 3)
  125. private Integer fanOffTmpr;
  126. @ApiModelProperty("히터 ON 온도") // Y NUMBER(3)
  127. @Column(name = "HETR_ON_TMPR", columnDefinition = "NUMBER", length = 3)
  128. private Integer hetrOnTmpr;
  129. @ApiModelProperty("히터 OFF 온도") // Y NUMBER(3)
  130. @Column(name = "HETR_OFF_TMPR", columnDefinition = "NUMBER", length = 3)
  131. private Integer hetrOffTmpr;
  132. @ApiModelProperty("삭제 여부") // Y CHAR(1)
  133. @Column(name = "DEL_YN", columnDefinition = "CHAR", length = 1)
  134. private String delYn;
  135. @ApiModelProperty("RTC 서버 아이피") // Y VARCHAR2(20)
  136. @Column(name = "RTC_SVR_IP", length = 20)
  137. private String rtcSvrIp;
  138. @ApiModelProperty("RTC 서버 포트") // Y NUMBER(5)
  139. @Column(name = "RTC_SVR_PORT", columnDefinition = "NUMBER", length = 5)
  140. private Integer rtcSvrPort;
  141. @ApiModelProperty("RTC ID") // Y VARCHAR2(56)
  142. @Column(name = "RTC_ID", length = 56)
  143. private String rtcId;
  144. @OneToOne
  145. @JoinColumn(insertable=false, updatable=false, name="CCTV_CTLR_NMBR", referencedColumnName = "CCTV_CTLR_NMBR")
  146. @NotFound(action = NotFoundAction.IGNORE)
  147. private TbCctvCtlrStts state;
  148. public void setDelete() {
  149. this.delYn = "Y";
  150. }
  151. public TbCctvCtlrDto toDto() {
  152. TbCctvCtlrDto dto = TbCctvCtlrDto.builder()
  153. .cctvCtlrNmbr(this.cctvCtlrNmbr)
  154. .cctvCtlrId(this.cctvCtlrId)
  155. .cctvNm(this.cctvNm)
  156. .istlLctnNm(this.istlLctnNm)
  157. .istlLctnAddr(this.istlLctnAddr)
  158. .cctvCtlrIp(this.cctvCtlrIp)
  159. .cctvCtlrPort(this.cctvCtlrPort)
  160. .cctvCtlrLocalNo(this.cctvCtlrLocalNo)
  161. .cctvTypeCd(this.cctvTypeCd)
  162. .cctvCaptIp(this.cctvCaptIp)
  163. .cctvCaptPort(this.cctvCaptPort)
  164. .strmSvrIp(this.strmSvrIp)
  165. .strmSvrPort(this.strmSvrPort)
  166. .strmSesnNm(this.strmSesnNm)
  167. .xCrdn(this.xCrdn)
  168. .yCrdn(this.yCrdn)
  169. .strmRtspAddr(this.strmRtspAddr)
  170. .strmHttpAddr(this.strmHttpAddr)
  171. .intrHttpAddr(this.intrHttpAddr)
  172. .webRtcSvrIp(this.webRtcSvrIp)
  173. .webRtcSvrPort(this.webRtcSvrPort)
  174. .webRtcId(this.webRtcId)
  175. .alttImagNmbr(this.alttImagNmbr)
  176. .alttImagDsplYn(this.alttImagDsplYn)
  177. .syopCntlYn(this.syopCntlYn)
  178. .linkId(this.linkId)
  179. .nodeId(this.nodeId)
  180. .cctvId(this.cctvId)
  181. .cctvAreaDvsn(this.cctvAreaDvsn)
  182. .useYn(this.useYn)
  183. .fanOnTmpr(this.fanOnTmpr)
  184. .fanOffTmpr(this.fanOffTmpr)
  185. .hetrOnTmpr(this.hetrOnTmpr)
  186. .hetrOffTmpr(this.hetrOffTmpr)
  187. .delYn(this.delYn)
  188. .rtcSvrIp(this.rtcSvrIp)
  189. .rtcSvrPort(this.rtcSvrPort)
  190. .rtcId(this.rtcId)
  191. .build();
  192. dto.setCctvTypeDesc(CmmnCdManager.getCodeDesc(CmmnCdManager.CCTV_TYPE_CD, dto.getCctvTypeCd()));
  193. return dto;
  194. }
  195. public TbCctvCtlrSttsDto toSttsDto() {
  196. TbCctvCtlrSttsDto dto = TbCctvCtlrSttsDto.builder()
  197. .cctvCtlrNmbr(this.cctvCtlrNmbr)
  198. .collCnt(100)
  199. .cctvCtlrId(this.cctvCtlrId)
  200. .istlLctnNm(this.istlLctnNm)
  201. .updtDt(CmmnCdManager.CMNC_STTS_ERROR_DT)
  202. .cmncSttsCd(CmmnCdManager.CMNC_STTS_ERROR)
  203. .build();
  204. if (this.state != null) {
  205. dto.setUpdtDt(this.state.getUpdtDt());
  206. dto.setCmncSttsCd(this.state.getCmncSttsCd());
  207. dto.setCboxDoorSttsCd(this.state.getCboxDoorSttsCd());
  208. dto.setFrontDoorSttsCd(this.state.getFrontDoorSttsCd());
  209. dto.setBackDoorSttsCd(this.state.getBackDoorSttsCd());
  210. dto.setFanSttsCd(this.state.getFanSttsCd());
  211. dto.setHetrSttsCd(this.state.getHetrSttsCd());
  212. dto.setVideoInput(this.state.getVideoInput());
  213. dto.setCboxTmpr(this.state.getCboxTmpr());
  214. dto.setCboxHmdt(this.state.getCboxHmdt());
  215. dto.setPan(this.state.getPan());
  216. dto.setTilt(this.state.getTilt());
  217. dto.setZoom(this.state.getZoom());
  218. dto.setFocus(this.state.getFocus());
  219. dto.setCboxDoorSttsDesc(CmmnCdManager.getCodeDescShort(CmmnCdManager.DOOR_STTS_CD, dto.getCboxDoorSttsCd()));
  220. dto.setFrontDoorSttsDesc(CmmnCdManager.getCodeDescShort(CmmnCdManager.DOOR_STTS_CD, dto.getFrontDoorSttsCd()));
  221. dto.setBackDoorSttsDesc(CmmnCdManager.getCodeDescShort(CmmnCdManager.DOOR_STTS_CD, dto.getBackDoorSttsCd()));
  222. dto.setFanSttsDesc(CmmnCdManager.getCodeDescShort(CmmnCdManager.FAN_STTS_CD, dto.getFanSttsCd()));
  223. dto.setHetrSttsDesc(CmmnCdManager.getCodeDescShort(CmmnCdManager.HETR_STTS_CD, dto.getHetrSttsCd()));
  224. dto.setVideoInputDesc(CmmnCdManager.getCodeDescShort(CmmnCdManager.VIDEO_INPUT_CD, dto.getVideoInput()));
  225. }
  226. if ("N".equals(this.syopCntlYn)) {
  227. // 제어불가 CCTV 는 정상으로 설정
  228. // 운영단말 화면에서 제어 못하도록 화면설정 해야함
  229. dto.setUpdtDt(ItsUtils.getSysTime());
  230. dto.setCmncSttsCd(CmmnCdManager.CMNC_STTS_NORMAL);
  231. dto.setCboxDoorSttsCd("CDS0");
  232. dto.setFrontDoorSttsCd("CDS0");
  233. dto.setBackDoorSttsCd("CDS0");
  234. dto.setFanSttsCd("PAS0");
  235. dto.setHetrSttsCd("HTS0");
  236. dto.setVideoInput("VDI0");
  237. dto.setCboxTmpr(0);
  238. dto.setCboxHmdt(0);
  239. dto.setPan(0);
  240. dto.setTilt(0);
  241. dto.setZoom(0);
  242. dto.setFocus(0);
  243. dto.setCboxDoorSttsDesc(CmmnCdManager.getCodeDescShort(CmmnCdManager.DOOR_STTS_CD, dto.getCboxDoorSttsCd()));
  244. dto.setFrontDoorSttsDesc(CmmnCdManager.getCodeDescShort(CmmnCdManager.DOOR_STTS_CD, dto.getFrontDoorSttsCd()));
  245. dto.setBackDoorSttsDesc(CmmnCdManager.getCodeDescShort(CmmnCdManager.DOOR_STTS_CD, dto.getBackDoorSttsCd()));
  246. dto.setFanSttsDesc(CmmnCdManager.getCodeDescShort(CmmnCdManager.FAN_STTS_CD, dto.getFanSttsCd()));
  247. dto.setHetrSttsDesc(CmmnCdManager.getCodeDescShort(CmmnCdManager.HETR_STTS_CD, dto.getHetrSttsCd()));
  248. dto.setVideoInputDesc(CmmnCdManager.getCodeDescShort(CmmnCdManager.VIDEO_INPUT_CD, dto.getVideoInput()));
  249. }
  250. dto.setMissSttsYn(ItsUtils.getMissSttsYn(dto.getUpdtDt()));
  251. if (("Y").equals(dto.getMissSttsYn())) {
  252. // 기준시각 보다 크기 때문에 상태정보를 통신두절로 설정
  253. dto.setCmncSttsCd(CmmnCdManager.CMNC_STTS_ERROR);
  254. }
  255. dto.setCmncSttsDesc(CmmnCdManager.getCodeDescShort(CmmnCdManager.CMNC_STTS_CD, dto.getCmncSttsCd()));
  256. return dto;
  257. }
  258. public TbCctvCtlr(Long cctvCtlrNmbr) {
  259. this.cctvCtlrNmbr = cctvCtlrNmbr;
  260. }
  261. public void updateInfo(TbCctvCtlrDto.TbCctvCtlrUpdReq req) {
  262. this.cctvCtlrId = req.getCctvCtlrId();
  263. this.cctvNm = req.getCctvNm();
  264. this.istlLctnNm = req.getIstlLctnNm();
  265. this.istlLctnAddr = req.getIstlLctnAddr();
  266. this.cctvCtlrIp = req.getCctvCtlrIp();
  267. this.cctvCtlrPort = req.getCctvCtlrPort();
  268. this.cctvCtlrLocalNo = req.getCctvCtlrLocalNo();
  269. this.cctvTypeCd = req.getCctvTypeCd();
  270. this.cctvCaptIp = req.getCctvCaptIp();
  271. this.cctvCaptPort = req.getCctvCaptPort();
  272. this.strmSvrIp = req.getStrmSvrIp();
  273. this.strmSvrPort = req.getStrmSvrPort();
  274. this.strmSesnNm = req.getStrmSesnNm();
  275. this.xCrdn = req.getXCrdn();
  276. this.yCrdn = req.getYCrdn();
  277. this.strmRtspAddr = req.getStrmRtspAddr();
  278. this.strmHttpAddr = req.getStrmHttpAddr();
  279. this.intrHttpAddr = req.getIntrHttpAddr();
  280. this.webRtcSvrIp = req.getWebRtcSvrIp();
  281. this.webRtcSvrPort = req.getWebRtcSvrPort();
  282. this.webRtcId = req.getWebRtcId();
  283. this.alttImagNmbr = req.getAlttImagNmbr();
  284. this.alttImagDsplYn = req.getAlttImagDsplYn();
  285. this.syopCntlYn = req.getSyopCntlYn();
  286. this.linkId = req.getLinkId();
  287. this.nodeId = req.getNodeId();
  288. this.cctvId = req.getCctvId();
  289. this.cctvAreaDvsn = req.getCctvAreaDvsn();
  290. this.useYn = req.getUseYn();
  291. this.fanOnTmpr = req.getFanOnTmpr();
  292. this.fanOffTmpr = req.getFanOffTmpr();
  293. this.hetrOnTmpr = req.getHetrOnTmpr();
  294. this.hetrOffTmpr = req.getHetrOffTmpr();
  295. this.delYn = req.getDelYn();
  296. }
  297. public String getCmncSttsCd() {
  298. String result = CmmnCdManager.CMNC_STTS_ERROR;
  299. if (this.state != null) {
  300. result = this.state.getCmncSttsCd();
  301. }
  302. return result;
  303. }
  304. public TbCctvCtlrStts getState() {
  305. if (this.state == null) {
  306. TbCctvCtlrStts state = TbCctvCtlrStts.builder()
  307. .cctvCtlrNmbr(this.cctvCtlrNmbr)
  308. .updtDt(CmmnCdManager.CMNC_STTS_ERROR_DT)
  309. .cmncSttsCd(CmmnCdManager.CMNC_STTS_ERROR)
  310. .cboxDoorSttsCd("CDS2")
  311. .frontDoorSttsCd("CDS2")
  312. .backDoorSttsCd("CDS2")
  313. .fanSttsCd("PAS2")
  314. .hetrSttsCd("HTS2")
  315. .videoInput("VDI2")
  316. .cboxTmpr(0)
  317. .cboxHmdt(0)
  318. .pan(0)
  319. .tilt(0)
  320. .zoom(0)
  321. .focus(0)
  322. .build();
  323. if ("N".equals(this.syopCntlYn)) {
  324. // 제어불가 CCTV 는 정상으로 설정
  325. // 운영단말 화면에서 제어 못하도록 화면설정 해야함
  326. state.setUpdtDt(ItsUtils.getSysTime());
  327. state.setCmncSttsCd(CmmnCdManager.CMNC_STTS_NORMAL);
  328. state.setCboxDoorSttsCd("CDS0");
  329. state.setFrontDoorSttsCd("CDS0");
  330. state.setBackDoorSttsCd("CDS0");
  331. state.setFanSttsCd("PAS0");
  332. state.setHetrSttsCd("HTS0");
  333. state.setVideoInput("VDI0");
  334. state.setCboxTmpr(0);
  335. state.setCboxHmdt(0);
  336. state.setPan(0);
  337. state.setTilt(0);
  338. state.setZoom(0);
  339. state.setFocus(0);
  340. }
  341. this.state = state;
  342. }
  343. return this.state;
  344. }
  345. public void setAlrmSetup(TbFcltSttsAlrmStupDto alarm) {
  346. if (alarm == null || "N".equals(alarm.getUseYn())) {
  347. return;
  348. }
  349. if ("N".equals(this.syopCntlYn)) {
  350. return;
  351. }
  352. if ("N".equals(alarm.getCmncStts())) {
  353. getState().setCmncSttsCd(CmmnCdManager.CMNC_STTS_NORMAL);
  354. getState().setUpdtDt(ItsUtils.getSysTime());
  355. }
  356. if (CmmnCdManager.CMNC_STTS_NORMAL.equals(getState().getCmncSttsCd())) {
  357. if ("N".equals(alarm.getDoorStts())) {
  358. getState().setCboxDoorSttsCd("CDS0");
  359. getState().setFrontDoorSttsCd("CDS0");
  360. getState().setBackDoorSttsCd("CDS0");
  361. }
  362. if ("N".equals(alarm.getVideoInput())) {
  363. getState().setVideoInput("VDI0");
  364. }
  365. }
  366. }
  367. }