| 
					
				 | 
			
			
				@@ -1,17 +1,11 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.its.cctv.api.service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.its.app.utils.ByteUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.its.cctv.api.dto.CctvParamControlDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.its.cctv.api.dto.CctvPresetControlDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.its.cctv.api.dto.CctvPtzControlDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.its.cctv.api.dto.CctvStatusDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.its.cctv.api.dto.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.its.cctv.domain.NET; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.its.cctv.entity.TbCctvCtlr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.its.cctv.global.AppRepository; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.its.cctv.xnettcp.cctv.protocol.CctvReqParamSet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.its.cctv.xnettcp.cctv.protocol.CctvReqPresetMove; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.its.cctv.xnettcp.cctv.protocol.CctvReqPresetQry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.its.cctv.xnettcp.cctv.protocol.CctvReqPtzCtrl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.its.cctv.xnettcp.cctv.protocol.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import lombok.Getter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import lombok.RequiredArgsConstructor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import lombok.Setter; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -181,7 +175,13 @@ public class CctvControlService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * CCTV 파라미터정보 설정 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param req 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public CctvParamControlDto.CctvParamControlRes controlParam(Long id, CctvParamControlDto.CctvParamControlReq req) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log.info("controlParam: {}", id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         TbCctvCtlr cctv = this.requireOne(id); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -205,6 +205,11 @@ public class CctvControlService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * CCTV 파라미터 정보 조회 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public CctvParamControlDto.CctvParamValueRes requestParam(Long id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log.info("requestParam: {}", id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         TbCctvCtlr cctv = this.requireOne(id); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -240,6 +245,11 @@ public class CctvControlService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * CCTV 프리셋 현재위치정보 요청 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public CctvPresetControlDto.CctvPresetValueRes requestPresetValue(Long id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log.info("requestPresetValue: {}", id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         TbCctvCtlr cctv = this.requireOne(id); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -277,6 +287,11 @@ public class CctvControlService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * Object Notify TEST 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public CctvStatusDto.CctvStatusNotifyDtoRes notifyStatus(Long id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log.info("notifyStatus: {}", id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         TbCctvCtlr cctv = this.requireOne(id); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -299,4 +314,72 @@ public class CctvControlService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * CCTV 가변문자 설정 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param req 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public CctvVarCharControlDto.CctvVarCharControlRes controlVarCharSet(Long id, CctvVarCharControlDto.CctvVarCharControlSetReq req) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log.info("controlVarCharSet: {}", id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TbCctvCtlr cctv = this.requireOne(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (cctv == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return new CctvVarCharControlDto.CctvVarCharControlRes(1, "CCTV 제어기 정보를 찾을 수 없습니다."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (cctv.getNetState() != NET.LOGINED) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return new CctvVarCharControlDto.CctvVarCharControlRes(2, "CCTV 통신연결이 되어 있지 않습니다."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        CctvVarCharControlDto.CctvVarCharControlRes result = new CctvVarCharControlDto.CctvVarCharControlRes(0, "success"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        CctvReqCharVar pkt = new CctvReqCharVar(cctv.getAddress()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!pkt.setValue( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                req.getSectorNo().byteValue(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                req.getStartPan(), req.getEndPan(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                req.getCh1CharSize().byteValue(), req.getCh1PosX(), req.getCh2PosY(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                req.getCh2CharSize().byteValue(), req.getCh2PosX(), req.getCh2PosY(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                req.getCh1Char(), req.getCh2Char() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                )) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return new CctvVarCharControlDto.CctvVarCharControlRes(3, "CCTV 가변문자 설정값에 오류가 있습니다."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ByteBuffer sendBuffer = pkt.getByteBuffer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (cctv.sendData(sendBuffer, 0, "cctv_CharVarSet")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.info("CHAR-VAR-SET send success."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            result.setResult(4, "CCTV CHAR-VAR-SET 명령 전송이 실패하였습니다."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.error("CHAR-VAR-SET send failed."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * CCTV 가변문자 삭제 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param req 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public CctvVarCharControlDto.CctvVarCharControlRes controlVarCharDel(Long id, CctvVarCharControlDto.CctvVarCharControlDelReq req) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log.info("controlVarCharDel: {}", id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TbCctvCtlr cctv = this.requireOne(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (cctv == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return new CctvVarCharControlDto.CctvVarCharControlRes(1, "CCTV 제어기 정보를 찾을 수 없습니다."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (cctv.getNetState() != NET.LOGINED) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return new CctvVarCharControlDto.CctvVarCharControlRes(2, "CCTV 통신연결이 되어 있지 않습니다."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        CctvVarCharControlDto.CctvVarCharControlRes result = new CctvVarCharControlDto.CctvVarCharControlRes(0, "success"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        CctvReqCharDel pkt = new CctvReqCharDel(cctv.getAddress()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pkt.setValue(req.getSectorNo().byteValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ByteBuffer sendBuffer = pkt.getByteBuffer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (cctv.sendData(sendBuffer, 0, "cctv_CharVarDel")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.info("CHAR-VAR-DEL send success."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            result.setResult(4, "CCTV CHAR-VAR-DEL 명령 전송이 실패하였습니다."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.error("CHAR-VAR-DEL send failed."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |