fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/AbstractApiCameraService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,47 @@ package com.fzzy.igds.camera; import com.fzzy.igds.camera.data.ApiCameraData; import com.fzzy.igds.camera.data.ApiCameraResp; import com.fzzy.igds.camera.data.ApiSnapReq; import com.fzzy.igds.domain.Camera; import lombok.extern.slf4j.Slf4j; import java.util.List; /** * @Description æ¥å£æ½è±¡å®ç°ç±»ï¼æ½è±¡å®ç°ç±»ï¼æä¾é»è®¤å®ç°ï¼å ·ä½ä¸å¡å®ç°ç»§æ¿è¯¥æ½è±¡ç±»ï¼å¹¶å®ç°æ½è±¡æ¹æ³ * @Author CZT * @Date 2025/12/11 10:10 */ @Slf4j public abstract class AbstractApiCameraService implements ApiCameraService { @Override public ApiCameraResp getPlayAddr(ApiCameraData apiCameraDto) { return new ApiCameraResp(ApiCameraResp.CODE_SUCCESS, "å½ååè®®æ éæ§è¡å½ååè®®"); } @Override public ApiCameraResp ptzMedia(ApiCameraData apiCameraDto) { return new ApiCameraResp(ApiCameraResp.CODE_SUCCESS, "å½ååè®®æ éæ§è¡å½ååè®®"); } @Override public ApiCameraResp ptzPreset(ApiCameraData apiCameraDto) { return new ApiCameraResp(ApiCameraResp.CODE_SUCCESS, "å½ååè®®æ éæ§è¡å½ååè®®"); } @Override public ApiCameraResp keepAlive(ApiCameraData apiCameraDto) { return new ApiCameraResp(ApiCameraResp.CODE_SUCCESS, "å½ååè®®æ éæ§è¡å½ååè®®"); } @Override public List<Camera> searchCamera(ApiCameraData apiCameraDto) { return null; } @Override public ApiCameraResp snapImg(ApiSnapReq apiCameraDto) { return new ApiCameraResp(ApiCameraResp.CODE_SUCCESS, "å½ååè®®æ éæ§è¡å½ååè®®"); } } fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/ApiCameraManager.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,47 @@ package com.fzzy.igds.camera; import com.fzzy.igds.constant.CameraPlayType; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; /** * è§é¢æ¥å£ç®¡çï¼ç¨äºç®¡çä¸åææ¾æ¹å¼çåè®®æ¥å£ï¼ä¸å¡éè¿å½å管çè°ç¨ä¸åçå®ç° */ @Component(ApiCameraManager.BEAN_ID) public class ApiCameraManager implements ApplicationContextAware { public static final String BEAN_ID = "core.apiCameraManager"; public static Map<String, ApiCameraService> remoteMap = new HashMap<>(); @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { Map<String, ApiCameraService> grainMap = applicationContext.getBeansOfType(ApiCameraService.class); for (String key : grainMap.keySet()) { remoteMap.put(grainMap.get(key).getType(), grainMap.get(key)); } } /** * æ ¹æ®ç±»åæ ç¾å°è£ ä¸åçæ¥å£å®ç°ï¼ * * @param type å¯ä»¥æ¯playTypeï¼å¯ä»¥æ¯snapTypeï¼å¯ä»¥æ¯ptzType * @return æ¥å£å®ç° */ public ApiCameraService getApiCameraService(String type) { ApiCameraService apiCameraService = remoteMap.get(type); if (null == apiCameraService) { apiCameraService = remoteMap.get(CameraPlayType.PLAY_TYPE_DEFAULT.getCode()); } return apiCameraService; } } fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/ApiCameraService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,74 @@ package com.fzzy.igds.camera; import com.fzzy.igds.camera.data.ApiCameraData; import com.fzzy.igds.camera.data.ApiCameraResp; import com.fzzy.igds.camera.data.ApiSnapReq; import com.fzzy.igds.domain.Camera; import java.util.List; /** * @Description è§é¢æµåªä½è°ç¨æ¥å£ï¼éè¿ç³»ç»é ç½®çææ¾æ¹å¼è°ç¨ä¸åçæµåªä½å®ç°ã * @Author CZT * @Date 2025/12/11 10:10 */ public interface ApiCameraService { /** * @return é ç½®çç±»åæ ç¾ */ String getType(); /** * æ ¹æ®åæ°è·åææ¾å°å * * @param apiCameraDto * @return */ ApiCameraResp getPlayAddr(ApiCameraData apiCameraDto); /** * 设å¤äºå°æä½ * * @param apiCameraDto * @return */ ApiCameraResp ptzMedia(ApiCameraData apiCameraDto); /** * é¢ç½®ä½è®¾ç½® * * @param apiCameraDto * @return */ ApiCameraResp ptzPreset(ApiCameraData apiCameraDto); /** * ææ¾è¿æ¥ä¿æå¨çº¿ï¼é对éè¦å½åæ¥å£çæµåªä½çæ * * @param apiCameraDto * @return */ ApiCameraResp keepAlive(ApiCameraData apiCameraDto); /** * éè¿æµåªä½æ¥å£è°ç¨æµåªä½é ç½®çæåå¤´ä¿¡æ¯ * * @param apiCameraDto * @return */ List<Camera> searchCamera(ApiCameraData apiCameraDto); /** * æææ¥å£ï¼éè¦æ ¹æ®æææ¹å¼è°æ´ * * @param apiCameraDto * @return */ ApiCameraResp snapImg(ApiSnapReq apiCameraDto); } fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ApiCameraData.java
ÎļþÃû´Ó fzzy-igdss-core/src/main/java/com/fzzy/igds/data/ApiCameraData.java ÐÞ¸Ä @@ -1,4 +1,4 @@ package com.fzzy.igds.data; package com.fzzy.igds.camera.data; import lombok.Data; @@ -36,10 +36,15 @@ * IP */ private String ip; /** * WEBç«¯å£ */ private Integer webPort; /** * æ§å¶ç«¯å£ */ private Integer controlPort; private Integer ctrlPort; /** * ææ¾æ¹å¼ */ @@ -48,6 +53,11 @@ * æææ¹å¼ **/ private String snapType; /** * äºå°æ¹å¼ **/ private String ptzType; /** * çæ§SN */ @@ -69,8 +79,8 @@ */ private int speed = 129;//é度ï¼0-255 é»è®¤129ï¼ /** * äºå°æ§å¶å½ä»¤ 1=ä¸ï¼2=ä¸ï¼3=å·¦ï¼4=å³ï¼5=å·¦ä¸ï¼6=å·¦ä¸ï¼7=å³ä¸ï¼8=å³ä¸ï¼0=忢ï¼9=ååå°ï¼10 = ååå * é¢ç½®ä½å½ä»¤ 1=设置ï¼2=æ§è¡ï¼3=å é¤ *äºå°æ§å¶å½ä»¤ 1=ä¸ï¼2=ä¸ï¼3=å·¦ï¼4=å³ï¼5=å·¦ä¸ï¼6=å·¦ä¸ï¼7=å³ä¸ï¼8=å³ä¸ï¼0=忢ï¼9=ååå°ï¼10 = ååå ï¼11 = åç¦å *é¢ç½®ä½å½ä»¤ 1=设置ï¼2=æ§è¡ï¼3=å é¤ */ private String command; /** @@ -78,7 +88,7 @@ */ private String preset; /** * RTSPå°å * åªä½å°å */ private String mediaAddr; /** @@ -89,8 +99,9 @@ * å¤ç½ææ¾å°å */ private String urlOut; /** * è¯·æ±æ¹IPï¼ç¨äºå¤ææ¯å ç½ææ¾ï¼è¿æ¯å¤ç½ææ¾ * æ¯å¦ä½¿ç¨å¤ç½ææ¾å°åé»è®¤å¦ */ private String requireIp; private boolean extNetwork = false; } fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ApiCameraResp.java
ÎļþÃû´Ó fzzy-igdss-core/src/main/java/com/fzzy/igds/data/ApiCameraResp.java ÐÞ¸Ä @@ -1,4 +1,4 @@ package com.fzzy.igds.data; package com.fzzy.igds.camera.data; import lombok.Data; @@ -26,6 +26,7 @@ private String playUrl; //ææ¾å°å private String playType; //ææ¾æ¹å¼ private String snapType; //ææ¾æ¹å¼ private String ptzType; //äºå°æ¹å¼ private String appkey; //å®é²å¹³å°appKey private String secret; //å®é²å¹³å°ç§é¥ private String ip; //设å¤IP fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ApiSnapReq.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,97 @@ package com.fzzy.igds.camera.data; import lombok.Data; import java.io.Serializable; /** * @Description æå头ææåæ° * @Author CZT * @Date 2024/12/11 10:10 */ @Data public class ApiSnapReq implements Serializable { /** * */ private static final long serialVersionUID = 1L; private String orderId; //ç³»ç»å 鍿å头䏻鮿è é ç½®ID private String bizId; private String companyId;//ç»ç»ç¼ç private String deptId;//ååºç¼ç /** * ææ¾æ¹å¼ */ private String playType; /** * æææ¹å¼ **/ private String snapType; private String ptzType; /** * é å¥åºå· **/ private String sort; /** * 设å¤å¯ä¸IDï¼ä¸»è¦ä¸æµåªä½å¹é ä½¿ç¨ */ private String sn; /** * çæ§è´¦å· */ private String ip; /** * çæ§å¯ç */ private Integer port; /** * çæ§è´¦å· */ private String loginId; /** * çæ§å¯ç */ private String password; /** * ééå· */ private Integer chanNum; /** * RTSPå°å */ private String mediaAddr; /** * ææç»ç«¯åºåå·,éå¿ å¡«åæ®µã */ private String serSn; /** * å¾çä¿åå°å */ private String filePath; /** * å¾çåç§° */ private String fileName; private String cameraName; } fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/DefaultPlayServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.fzzy.igds.camera.impl; import com.fzzy.igds.camera.AbstractApiCameraService; import com.fzzy.igds.constant.CameraPlayType; import org.springframework.stereotype.Component; /** * @Description ç³»ç»é»è®¤ä¸å任使¥å£å®ç°åå¤ç * @Author CZT * @Date 2025/12/11 10:10 */ @Component public class DefaultPlayServiceImpl extends AbstractApiCameraService { @Override public String getType() { return CameraPlayType.PLAY_TYPE_DEFAULT.getCode(); } } fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/DefaultPtzServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.fzzy.igds.camera.impl; import com.fzzy.igds.camera.AbstractApiCameraService; import com.fzzy.igds.constant.CameraPtzType; import org.springframework.stereotype.Component; /** * @Description ç³»ç»é»è®¤ä¸å任使¥å£å®ç°åå¤ç * @Author CZT * @Date 2025/12/11 10:10 */ @Component public class DefaultPtzServiceImpl extends AbstractApiCameraService { @Override public String getType() { return CameraPtzType.PTZ_TYPE_NONE.getCode(); } } fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/DefaultSnapServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.fzzy.igds.camera.impl; import com.fzzy.igds.camera.AbstractApiCameraService; import com.fzzy.igds.constant.CameraSnapType; import org.springframework.stereotype.Component; /** * @Description ç³»ç»é»è®¤ä¸å任使¥å£å®ç°åå¤ç * @Author CZT * @Date 2025/12/11 10:10 */ @Component public class DefaultSnapServiceImpl extends AbstractApiCameraService { @Override public String getType() { return CameraSnapType.SNAP_TYPE_NONE.getCode(); } } fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/CameraPtzType.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,33 @@ package com.fzzy.igds.constant; import lombok.Getter; /** * @Description äºå°æ§å¶æ¹å¼ * @Author CZT * @Date 2024/12/10 16:38 */ @Getter public enum CameraPtzType { PTZ_TYPE_NONE("NONE", "䏿§å¶"), PTZ_TYPE_HIK_ISAPI("HIK-ISAPI", "海康IS-APIäºå°"), PTZ_TYPE_DAHUA_API("DAHUA-HTTP-API", "大åHTTP-APIäºå°"), PTZ_TYPE_FZZY_ONVIF("FZZY-ONVIF", "飿£è´è¿Onvifå ç½äºå°"); private String code; private String msg; private CameraPtzType(String code, String msg) { this.code = code; this.msg = msg; } public static String getMsg(String code) { if (null == code) return null; if (CameraPtzType.PTZ_TYPE_NONE.getCode().equals(code)) return CameraPtzType.PTZ_TYPE_NONE.getMsg(); if (CameraPtzType.PTZ_TYPE_HIK_ISAPI.getCode().equals(code)) return CameraPtzType.PTZ_TYPE_HIK_ISAPI.getMsg(); if (CameraPtzType.PTZ_TYPE_DAHUA_API.getCode().equals(code)) return CameraPtzType.PTZ_TYPE_DAHUA_API.getMsg(); if (CameraPtzType.PTZ_TYPE_FZZY_ONVIF.getCode().equals(code)) return CameraPtzType.PTZ_TYPE_FZZY_ONVIF.getMsg(); return code; } } fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/CameraSnapType.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,41 @@ package com.fzzy.igds.constant; /** * @Description æææ¹å¼ * @Author CZT * @Date 2025/11/25 15:28 */ public enum CameraSnapType { SNAP_TYPE_NONE("NONE", "䏿æ"), SNAP_TYPE_FZZY_PLUGIN("FZZY-PLUGIN", "FZZY_RSTPæä»¶ææ"), SNAP_TYPE_FZZY_PLUGIN_V2("FZZY-PLUGIN_V2", "FZZY_APIæä»¶ææ"), SNAP_TYPE_HIK_ISAPI("HIK-ISAPI", "海康ISAPIææ"), SNAP_TYPE_DAHUA_HTTP_API("DAHUA-HTTP-API", "大åHTTP_APIææ"); private String code; private String msg; private CameraSnapType(String code, String msg) { this.code = code; this.msg = msg; } public String getCode() { return code; } public String getMsg() { return msg; } public static String getMsg(String code) { if (null == code) return null; if (CameraSnapType.SNAP_TYPE_NONE.getCode().equals(code)) return CameraSnapType.SNAP_TYPE_NONE.getMsg(); if (CameraSnapType.SNAP_TYPE_FZZY_PLUGIN.getCode().equals(code)) return CameraSnapType.SNAP_TYPE_FZZY_PLUGIN.getMsg(); if (CameraSnapType.SNAP_TYPE_FZZY_PLUGIN_V2.getCode().equals(code)) return CameraSnapType.SNAP_TYPE_FZZY_PLUGIN_V2.getMsg(); if (CameraSnapType.SNAP_TYPE_HIK_ISAPI.getCode().equals(code)) return CameraSnapType.SNAP_TYPE_HIK_ISAPI.getMsg(); if (CameraSnapType.SNAP_TYPE_DAHUA_HTTP_API.getCode().equals(code)) return CameraSnapType.SNAP_TYPE_DAHUA_HTTP_API.getMsg(); return code; } } fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/SnapType.java
ÎļþÒÑɾ³ý fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/Camera.java
@@ -96,6 +96,10 @@ @TableField("snap_type") private String snapType; @Column(name = "ptz_type", columnDefinition = "varchar(40) COMMENT 'äºå°æ¹å¼'") @TableField("ptz_type") private String ptzType; @Column(name = "sort", columnDefinition = "varchar(2) COMMENT 'é å¥åºå·'") @TableField("sort") private String sort = "1"; fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DicService.java
@@ -189,7 +189,15 @@ */ public List<SysDictData> triggerSnapType() { List<SysDictData> list = new ArrayList<SysDictData>(); for (SnapType w : SnapType.values()) { for (CameraSnapType w : CameraSnapType.values()) { list.add(new SysDictData(w.getMsg(), w.getCode())); } return list; } public List<SysDictData> triggerPtzType() { List<SysDictData> list = new ArrayList<SysDictData>(); for (CameraPtzType w : CameraPtzType.values()) { list.add(new SysDictData(w.getMsg(), w.getCode())); } return list; fzzy-igdss-view/src/main/java/com/fzzy/igds/DicPR.java
@@ -132,6 +132,16 @@ } /** * äºå°æ¹å¼ * ${dorado.getDataProvider("dicPR#triggerPtzType").getResult()} * * @return */ @DataProvider public List<SysDictData> triggerPtzType() { return dicService.triggerPtzType(); } /** * æ£éªç±»å« * <p> * ${dorado.getDataProvider("dicPR#triggerCheckType").getResult()} fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml
@@ -137,7 +137,6 @@ <Property name="keyProperty">id</Property> <Property name="valueProperty">kqmc</Property> </Property> <Property name="readOnly">true</Property> </PropertyDef> <PropertyDef name="name"> <Property></Property> @@ -188,7 +187,6 @@ </PropertyDef> <PropertyDef name="sort"> <Property name="label">é å¥åºå·</Property> <Property name="required">true</Property> <Property name="mapping"> <Property name="mapValues"> <Collection> @@ -260,6 +258,16 @@ <Property name="label">æææ¹å¼</Property> <Property name="mapping"> <Property name="mapValues">${dorado.getDataProvider("dicPR#triggerSnapType").getResult()}</Property> <Property name="keyProperty">dictValue</Property> <Property name="valueProperty">dictLabel</Property> </Property> <Property name="required">true</Property> </PropertyDef> <PropertyDef name="ptzType"> <Property></Property> <Property name="label">äºå°æ¹å¼</Property> <Property name="mapping"> <Property name="mapValues">${dorado.getDataProvider("dicPR#triggerPtzType").getResult()}</Property> <Property name="keyProperty">dictValue</Property> <Property name="valueProperty">dictLabel</Property> </Property> @@ -786,6 +794,21 @@ <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">type</Property> <Property name="property">type</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">brand</Property> <Property name="property">brand</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">ip</Property> <Property name="property">ip</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">chanNum</Property> <Property name="property">chanNum</Property> <Editor/> @@ -796,8 +819,8 @@ <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">ip</Property> <Property name="property">ip</Property> <Property name="name">spdwlx</Property> <Property name="property">spdwlx</Property> <Editor/> </AutoFormElement> <AutoFormElement> @@ -808,16 +831,6 @@ <AutoFormElement> <Property name="name">webPort</Property> <Property name="property">webPort</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">spdwlx</Property> <Property name="property">spdwlx</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">sort</Property> <Property name="property">sort</Property> <Editor/> </AutoFormElement> <AutoFormElement> @@ -886,13 +899,9 @@ <Editor/> </AutoFormElement> <AutoFormElement layoutConstraint="colSpan:2"> <Property name="name">sn</Property> <Property name="property">sn</Property> <Editor> <TextEditor id="sn"> <Property name="blankText"> -- æµåªä½å¹³å°ä¸è®¾å¤SN --</Property> </TextEditor> </Editor> <Property name="name">ptzType</Property> <Property name="property">ptzType</Property> <Editor/> </AutoFormElement> <AutoFormElement layoutConstraint="colSpan:3"> <Property name="name">mediaAddr</Property> @@ -901,6 +910,15 @@ <Editor> <TextEditor id="mediaAddr"> <Property name="blankText"> -- ç¹å»å³ä¾§éæ©ï¼æè æå¨å¡«å --</Property> </TextEditor> </Editor> </AutoFormElement> <AutoFormElement layoutConstraint="colSpan:5"> <Property name="name">sn</Property> <Property name="property">sn</Property> <Editor> <TextEditor id="sn"> <Property name="blankText"> -- æµåªä½å¹³å°ä¸è®¾å¤SN --</Property> </TextEditor> </Editor> </AutoFormElement> @@ -938,23 +956,8 @@ <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">createBy</Property> <Property name="property">createBy</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">createTime</Property> <Property name="property">createTime</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">updateBy</Property> <Property name="property">updateBy</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">updateTime</Property> <Property name="property">updateTime</Property> <Editor/> </AutoFormElement> </AutoForm> @@ -994,7 +997,8 @@ </ClientEvent> </Trigger> <Dialog id="dialogMeidaSelect" layout="vbox padding:10"> <Property name="width">650</Property> <Property name="width">800</Property> <Property name="height">80%</Property> <Property name="caption">æµåªä½å°åéæ©</Property> <Buttons/> <Children> @@ -1010,10 +1014,11 @@ </Label> <Button layoutConstraint="right"> <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text1.text"));
 view.get("#dialogMeidaSelect").hide();
 </ClientEvent> view.get("#dialogMeidaSelect").hide();
 </ClientEvent> <Property name="caption">éæ©</Property> <Property name="iconClass">fa fa-check</Property> <Property name="exClassName">btn1</Property> </Button> </Container> <Container> @@ -1028,10 +1033,11 @@ </Label> <Button layoutConstraint="right"> <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text2.text"));
 view.get("#dialogMeidaSelect").hide();
 </ClientEvent> view.get("#dialogMeidaSelect").hide();
 </ClientEvent> <Property name="caption">éæ©</Property> <Property name="iconClass">fa fa-check</Property> <Property name="exClassName">btn1</Property> </Button> </Container> <Container> @@ -1046,10 +1052,11 @@ </Label> <Button layoutConstraint="right"> <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text3.text"));
 view.get("#dialogMeidaSelect").hide();
 </ClientEvent> view.get("#dialogMeidaSelect").hide();
 </ClientEvent> <Property name="caption">éæ©</Property> <Property name="iconClass">fa fa-check</Property> <Property name="exClassName">btn1</Property> </Button> </Container> <Container> @@ -1064,10 +1071,11 @@ </Label> <Button layoutConstraint="right"> <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text4.text"));
 view.get("#dialogMeidaSelect").hide();
 </ClientEvent> view.get("#dialogMeidaSelect").hide();
 </ClientEvent> <Property name="caption">éæ©</Property> <Property name="iconClass">fa fa-check</Property> <Property name="exClassName">btn1</Property> </Button> </Container> <Container> @@ -1082,10 +1090,11 @@ </Label> <Button layoutConstraint="right"> <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text5.text"));
 view.get("#dialogMeidaSelect").hide();
 </ClientEvent> view.get("#dialogMeidaSelect").hide();
 </ClientEvent> <Property name="caption">éæ©</Property> <Property name="iconClass">fa fa-check</Property> <Property name="exClassName">btn1</Property> </Button> </Container> <Container> @@ -1100,10 +1109,11 @@ </Label> <Button layoutConstraint="right"> <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text6.text"));
 view.get("#dialogMeidaSelect").hide();
 </ClientEvent> view.get("#dialogMeidaSelect").hide();
 </ClientEvent> <Property name="caption">éæ©</Property> <Property name="iconClass">fa fa-check</Property> <Property name="exClassName">btn1</Property> </Button> </Container> <Container> @@ -1118,10 +1128,11 @@ </Label> <Button layoutConstraint="right"> <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text7.text"));
 view.get("#dialogMeidaSelect").hide();
 </ClientEvent> view.get("#dialogMeidaSelect").hide();
 </ClientEvent> <Property name="caption">éæ©</Property> <Property name="iconClass">fa fa-check</Property> <Property name="exClassName">btn1</Property> </Button> </Container> <Container> @@ -1136,10 +1147,11 @@ </Label> <Button layoutConstraint="right"> <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text8.text"));
 view.get("#dialogMeidaSelect").hide();
 </ClientEvent> view.get("#dialogMeidaSelect").hide();
 </ClientEvent> <Property name="caption">éæ©</Property> <Property name="iconClass">fa fa-check</Property> <Property name="exClassName">btn1</Property> </Button> </Container> <Container> @@ -1154,10 +1166,11 @@ </Label> <Button layoutConstraint="right"> <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text9.text"));
 view.get("#dialogMeidaSelect").hide();
 </ClientEvent> view.get("#dialogMeidaSelect").hide();
 </ClientEvent> <Property name="caption">éæ©</Property> <Property name="iconClass">fa fa-check</Property> <Property name="exClassName">btn1</Property> </Button> </Container> <Container> @@ -1172,10 +1185,11 @@ </Label> <Button layoutConstraint="right"> <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text10.text"));
 view.get("#dialogMeidaSelect").hide();
 </ClientEvent> view.get("#dialogMeidaSelect").hide();
 </ClientEvent> <Property name="caption">éæ©</Property> <Property name="iconClass">fa fa-check</Property> <Property name="exClassName">btn1</Property> </Button> </Container> <Container> @@ -1190,12 +1204,24 @@ </Label> <Button layoutConstraint="right"> <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text11.text"));
 view.get("#dialogMeidaSelect").hide();
 </ClientEvent> view.get("#dialogMeidaSelect").hide();
 </ClientEvent> <Property name="caption">éæ©</Property> <Property name="iconClass">fa fa-check</Property> <Property name="exClassName">btn1</Property> </Button> </Container> <Container> <Label> <Property name="text">ä¿¡æ¯è¯´æ</Property> <Property name="style"> <Property name="font-weight">bold</Property> </Property> </Label> <Label> <Property name="text">{0}=ç¨æ·åï¼{1}=å¯ç ï¼{2}=IPï¼{3}=端å£ï¼{4}=ééå·ï¼{5}=åºåå·ï¼</Property> </Label> </Container> </Children> <Tools/> </Dialog> fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/inout/InoutApiController.java
@@ -1,5 +1,6 @@ package com.fzzy.sys.controller.inout; import com.fzzy.igds.camera.data.ApiCameraResp; import com.fzzy.igds.constant.RespCodeEnum; import com.fzzy.igds.data.*; import com.fzzy.igds.utils.SystemUtil; fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/security/SecurityController.java
@@ -17,9 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; /** @@ -40,39 +38,88 @@ private CoreDeptService deptService; /** * çæ§æ¦è§ * * åºåºå®é²é¡µé¢ * @param type 1.表示2.5Dé¸ç°å¾é¡µé¢é¢è§ï¼2.表示å表é¢è§é¡µé¢ * @param view * @return */ @RequestMapping("/aerial-video") public String aerialVideo( @RequestParam(value = "type", required = false) String type, ModelMap view) { @RequestMapping("/video-dept") public String videoDept(@RequestParam(value = "type", required = false) String type, ModelMap view) { if (StringUtils.isBlank(type)) { type = "2"; } SysUser user = ContextUtil.getLoginUser(); view.put(Constant.MODEL_KEY_LOGIN_USER, user); String deptId = ContextUtil.subDeptId(user); List<Camera> listCamera = secManager.listCamera(deptId, user.getCompanyId()); view.put("deptId", deptId); List<Camera> listCamera = secManager.listCamera(deptId, user.getCompanyId()); view.put("listCamera", listCamera); //é»è®¤çæ§åè¡¨é¡µé¢ String viewUrl = prefix + "/video-list"; String viewUrl = prefix + "/video-list-dept"; if (StringUtils.isNotBlank( type) && "1".equals(type)) { if("1".equals(type)){ viewUrl = prefix + "/video-aerial-dept"; //é¸ç°å¾ Dept dept = deptService.getDeptById(deptId); if (dept != null && StringUtils.isNotEmpty(dept.getImgPath())) { view.put("backgroundImg", dept.getImgPath()); viewUrl = prefix + "/video-aerial"; } } if("2".equals(type)){ viewUrl = prefix + "/video-list-dept"; } return viewUrl; } /** * ç管å®é²é¡µé¢ * @param type 1.表示2.5Dé¸ç°å¾é¡µé¢é¢è§ï¼2.表示å表é¢è§é¡µé¢ * @param view * @return */ @RequestMapping("/video-super") public String videoSuper(@RequestParam(value = "type", required = false) String type, ModelMap view) { if (StringUtils.isBlank(type)) { type = "2"; } SysUser user = ContextUtil.getLoginUser(); view.put(Constant.MODEL_KEY_LOGIN_USER, user); String deptId = ContextUtil.subDeptId(user); view.put("deptId", deptId); List<Camera> listCamera = secManager.listCamera(deptId, user.getCompanyId()); view.put("listCamera", listCamera); //é»è®¤çæ§åè¡¨é¡µé¢ String viewUrl = prefix + "/video-list-dept"; if("1".equals(type)){ viewUrl = prefix + "/video-aerial-dept"; //é¸ç°å¾ Dept dept = deptService.getDeptById(deptId); if (dept != null && StringUtils.isNotEmpty(dept.getImgPath())) { view.put("backgroundImg", dept.getImgPath()); } } if("2".equals(type)){ viewUrl = prefix + "/video-list-dept"; } return viewUrl; } /** * é¸ç°å¾é¡µé¢ -- è§é¢ææ¾ï¼éè¿ææ¾åæ°ä¸å跳转ä¸åé¡µé¢ææ¾ fzzy-igdss-web/src/main/resources/static/security/video-aerial-dept.js
fzzy-igdss-web/src/main/resources/static/security/video-control.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,77 @@ /** * PTZ å ¬å ±æ¹æ³ï¼å¼ç¨ä¹åéè¦å å®ä¹curCamera对象 * æ§è¡å½ä»¤ç¼ç * äºå°æ§å¶å½ä»¤ 1=ä¸ï¼2=ä¸ï¼3=å·¦ï¼4=å³ï¼5=å·¦ä¸ï¼6=å·¦ä¸ï¼7=å³ä¸ï¼8=å³ä¸ï¼0=忢ï¼9=ååå°ï¼10 = ååå ï¼11 = åç¦å * é¢ç½®ä½å½ä»¤ 1=设置ï¼2=æ§è¡ï¼3=å é¤ * æ°æ®å°curCamera对象å°è£ 为APi 对象åéç»äºå¹³å° */ function getParam(command, preset) { return { playType: curCamera.playType, ptzType: curCamera.ptzType, snapType: curCamera.snapType, cameraId: curCamera.id, cameraName: curCamera.name, ip: curCamera.ip, sn: curCamera.sn, webPort: curCamera.webPort, ctrlPort: curCamera.controlPort, channel: curCamera.chanNum, loginId: curCamera.loginId, pwd: curCamera.pwd, mediaAddr: curCamera.mediaAddr, urlIn: curCamera.urlIn, urlOut: curCamera.urlOut, command: command, preset: preset } } //äºå°æ§å¶ function ptzControl(command) { // layer.msg('å¼å§è°ç¨äºå°â¦â¦', {icon: 1, time: 1200,offset:'rb'}); const param = getParam(command, null); const url = "../../basic/security/ptz-media"; sendControlCommand(url, param); } //é¢ç½®ä½æ§å¶ function presetControl(command) { //layer.msg('å¼å§æ§è¡â¦â¦', {icon: 1, time: 1200,offset:'rb'}); const preset = $("#preset").val(); const param = getParam(command, preset); const url = "../../basic/security/ptz-media"; sendControlCommand(url, param); } //åæ¢ç§»å¨ function moveStop() { //layer.msg('å¼å§è°ç¨äºå°â¦â¦', {icon: 1, time: 1200,offset:'rb'}); const param = getParam(0, null); const url = "../../basic/security/ptz-media"; sendControlCommand(url, param); } //åç¦å function zoomStop() { //doNothing } //åéæ§å¶å½ä»¤ function sendControlCommand(url, param) { $.ajax({ type: "POST", url: url, dataType: 'JSON', contentType: "application/json;charset=UTF-8", data: JSON.stringify(param), success: function (data) { if (data.code === "ERROR") { layer.msg('æ§è¡å¤±è´¥', {icon: 2, time: 1500,offset:'rb'}); } else { layer.msg('æ§è¡æå', {icon: 1, time: 1200,offset:'rb'}); } } }) } fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js
ÎļþÃû´Ó fzzy-igdss-web/src/main/resources/static/security/video-list.js ÐÞ¸Ä @@ -1,4 +1,6 @@ var layer; var splitWin = 1; //å屿°ï¼é»è®¤1åå± var windowsNum = 1; //ææ¾çªå£ä¸æ ï¼æå¨éæ©æ¨¡å¼ä¸ä½¿ç¨ var timer; var table; var cameraData; @@ -23,6 +25,65 @@ }); /** * ææ¾çªå£éä¸ * @param win1 å屿° * @param win2 éä¸çªå£æ° */ function selectWin(win1,win2) { removeSelectCss(); splitWin = win1; windowsNum = win2; addSelectCss(); } /** * å»é¤éä¸CSS */ function removeSelectCss() { $("#f" + splitWin + "_d" + windowsNum).removeClass("selectWin"); } /** * å¢å éä¸CSS */ function addSelectCss() { $("#f" + splitWin + "_d" + windowsNum).addClass("selectWin"); } /** * åå±åæ¢ * @param tagNum å屿° */ function fenping(tagNum) { //忢åå±å¾æ åé¡µé¢ if (tagNum == 1) { $("#f_1").attr("src", "/img/web/group/fp_1_active.png"); $("#f_4").attr("src", "/img/web/group/fp_4.png"); $("#f_9").attr("src", "/img/web/group/fp_9.png"); $("#video_1").css('display', 'block'); $("#video_4").css('display', 'none'); $("#video_9").css('display', 'none'); } if (tagNum == 4) { $("#f_1").attr("src", "/img/web/group/fp_1.png"); $("#f_4").attr("src", "/img/web/group/fp_4_active.png"); $("#f_9").attr("src", "/img/web/group/fp_9.png"); $("#video_1").css('display', 'none'); $("#video_4").css('display', 'block'); $("#video_9").css('display', 'none'); } if (tagNum == 9) { $("#f_1").attr("src", "/img/web/group/fp_1.png"); $("#f_4").attr("src", "/img/web/group/fp_4.png"); $("#f_9").attr("src", "/img/web/group/fp_9_active.png"); $("#video_1").css('display', 'none'); $("#video_4").css('display', 'none'); $("#video_9").css('display', 'block'); } } /** * ç¹å»ææ¾ * @param cameraId */ fzzy-igdss-web/src/main/resources/static/security/video-list.css
@@ -43,7 +43,7 @@ .sp-boxWrap, .sp-box { height: 550px; height: 830px; } .sp-box { @@ -321,13 +321,13 @@ } .sp-bianbei{ width: 47%; width: 60%; height: 40px; background: #4c5863; -webkit-border-radius: 30px; border-radius: 30px; overflow: hidden; margin: 10px 0; margin: 10px 0 0 60px; text-align: center; } fzzy-igdss-web/src/main/resources/templates/security/video-aerial-dept.html
ÎļþÃû´Ó fzzy-igdss-web/src/main/resources/templates/security/video-aerial.html ÐÞ¸Ä @@ -67,7 +67,7 @@ <script th:src="@{/common/constant.js}"></script> <script th:src="@{/common/igds-common.js}"></script> <script th:src="@{/js/plugins/drag/drag-drop.js}"></script> <script th:src="@{/security/video-aerial.js}"></script> <script th:src="@{/security/video-aerial-dept.js}"></script> <!-- å¼¹åºæä½æ¡ --> <div class="layui-tab-content" id="aerialDialog" style="display: none;"> fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,355 @@ <!DOCTYPE html> <html lang="zh-cn" xmlns:th=http://www.thymeleaf.org> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="renderer" content="webkit"> <title>æºæ §ç²®åºç®¡çå¹³å°-çæ§å表</title> <link rel="stylesheet" th:href="@{/ajax/libs/layui/css/layui.css}"/> <link rel="stylesheet" th:href="@{/security/video-list.css}"> <style> html, body, .full { width: 100%; height: 100%; overflow-y: hidden; } .layui-fluid { position: relative; margin: 0 auto; padding: unset; } .layui-col-space20 { margin: unset; } .layui-col-space20 > * { padding: 10px 5px; } .sp-showItem2 { height: 690px; } .sp-box { height: 820px; } .sp-rl > span { line-height: 50px; color: #bbc3cd; font-size: 20px; } .sp-table { height: 355px; } .pdgxq-table1 { background-color: transparent; margin: 0; } .pdgxq-table1 thead tr th { color: #ef344a; font-size: 18px; } .pdgxq-table1 thead tr { background: #141C25 !important; border-bottom: 1px solid #ef344a; } .layui-table td, .layui-table th { padding: 9px 5px; } .pdgxq-table1 th, .pdgxq-table1 td { text-align: center; min-height: 32px; line-height: 32px; font-size: 14px; } .pdgxq-table1 tbody tr:nth-child(odd) { background-color: #262d33; } .pdgxq-table1 td em { color: #ef344a; } .layui-table td, .layui-table th { padding: 9px 5px; } .pdgxq-table1 td { color: #fff; cursor: pointer; } .fenping_icon { position: absolute; right: 30px; top: 16px; } .div_v1 { width: 99.8%; height: 760px; float: left; background-color: #333; text-align: center; color: #FFF; font-size: 20px; } .div_v4 { width: 49.88%; height: 379.5px; float: left; background-color: #333; text-align: center; color: #FFF; font-size: 20px; } .div_v9 { width: 33.22%; height: 252.6px; float: left; background-color: #333; text-align: center; color: #FFF; font-size: 20px; } .bor_t_l { border-top: 1px solid #777; border-left: 1px solid #777; } .bor_b { border-bottom: 1px solid #777; } .bor_r { border-right: 1px solid #777; } .selectWin { border: 1px solid #a52222; } .video { width: 100%; height: 100%; } </style> </head> <body class="pdgxq-body"> <div class="i-container"> <div class="jmkt-main"> <div class="layui-fluid"> <div class="sp-boxWrap layui-row layui-col-space20"> <div class="layui-col-lg9 layui-col-md9"> <div class="pdgxq-m1-left sp-box"> <div class="pdgxq-H"> <h3> <i></i>è§é¢å®æ¶é¢è§ </h3> <div class="fenping_icon"> <img onclick="fenping(1)" id="f_1" style="width: 30px" th:src="@{/img/web/group/fp_1_active.png}"/> <img onclick="fenping(4)" id="f_4" style="width: 30px" th:src="@{/img/web/group/fp_4.png}"/> <img onclick="fenping(9)" id="f_9" style="width: 30px" th:src="@{/img/web/group/fp_9.png}"/> </div> </div> <div class="sp-tab-db" style="padding: 5px 10px 15px 10px;"> <!--ä¸åå± é»è®¤æ¾ç¤º--> <div id="video_1" class="right-videoWrap"> <div id="f1_d1" onclick="selectWin(1,1)" class="div_v1 bor_t_l bor_b bor_r"> <video class="video" id="video1_1" autoplay="" muted="" playsinline=""></video> </div> </div> <!--ååå± é»è®¤æ¾ç¤º--> <div id="video_4" class="right-videoWrap" style="display: none;"> <div id="f4_d1" onclick="selectWin(4,1)" class="div_v4 bor_t_l"> <video class="video" id="video4_1" autoplay="" muted="" playsinline=""></video> </div> <div id="f4_d2" onclick="selectWin(4,2)" class="div_v4 bor_t_l bor_r"> <video class="video" id="video4_2" autoplay="" muted="" playsinline=""></video> </div> <div id="f4_d3" onclick="selectWin(4,3)" class="div_v4 bor_t_l bor_b"> <video class="video" id="video4_3" autoplay="" muted="" playsinline=""></video> </div> <div id="f4_d4" onclick="selectWin(4,4)" class="div_v4 bor_t_l bor_b bor_r"> <video class="video" id="video4_4" autoplay="" muted="" playsinline=""></video> </div> </div> <!--ä¹åå± é»è®¤éè--> <div id="video_9" class="right-videoWrap" style="display: none;"> <div id="f9_d1" onclick="selectWin(9,1)" class="div_v9 bor_t_l"> <video class="video" id="video9_1" autoplay="" muted="" playsinline=""></video> </div> <div id="f9_d2" onclick="selectWin(9,2)" class="div_v9 bor_t_l"> <video class="video" id="video9_2" autoplay="" muted="" playsinline=""></video> </div> <div id="f9_d3" onclick="selectWin(9,3)" class="div_v9 bor_t_l bor_r"> <video class="video" id="video9_3" autoplay="" muted="" playsinline=""></video> </div> <div id="f9_d4" onclick="selectWin(9,4)" class="div_v9 bor_t_l"> <video class="video" id="video9_4" autoplay="" muted="" playsinline=""></video> </div> <div id="f9_d5" onclick="selectWin(9,5)" class="div_v9 bor_t_l"> <video class="video" id="video9_5" autoplay="" muted="" playsinline=""></video> </div> <div id="f9_d6" onclick="selectWin(9,6)" class="div_v9 bor_t_l bor_r"> <video class="video" id="video9_6" autoplay="" muted="" playsinline=""></video> </div> <div id="f9_d7" onclick="selectWin(9,7)" class="div_v9 bor_t_l bor_b"> <video class="video" id="video9_7" autoplay="" muted="" playsinline=""></video> </div> <div id="f9_d8" onclick="selectWin(9,8)" class="div_v9 bor_t_l bor_b"> <video class="video" id="video9_8" autoplay="" muted="" playsinline=""></video> </div> <div id="f9_d9" onclick="selectWin(9,9)" class="div_v9 bor_t_l bor_b bor_r"> <video class="video" id="video9_9" autoplay="" muted="" playsinline=""></video> </div> </div> </div> </div> </div> <!--pdgxq-m1-left end--> <div class="layui-col-lg3 layui-col-md3"> <div class="pdgxq-m1-right sp-box" style="height: 400px"> <div class="pdgxq-H"> <h3> <i></i>äºå°æ§å¶ </h3> </div> <div class="sp-cz-wrap"> <div class="sp-cz-box"> <ul> <li class="sp-cz-l1"> <a href="javascript:;" onmousedown="ptzControl(5)" onmouseup="moveStop()"> <img th:src="@{/img/web/security/sp-arrow.png}"/> </a> </li> <li class="sp-cz-l2"> <a href="javascript:;" onmousedown="ptzControl(1)" onmouseup="moveStop()"> <img th:src="@{/img/web/security/sp-arrow.png}"/> </a> </li> <li class="sp-cz-l3"> <a href="javascript:;" onmousedown="ptzControl(7)" onmouseup="moveStop()"> <img th:src="@{/img/web/security/sp-arrow.png}"/> </a> </li> <li class="sp-cz-l4"> <a href="javascript:;" onmousedown="ptzControl(3)" onmouseup="moveStop()"> <img th:src="@{/img/web/security/sp-arrow.png}"/> </a> </li> <li class="sp-cz-l5"> <a href="javascript:;"> </a> </li> <li class="sp-cz-l6"> <a href="javascript:;" onmousedown="ptzControl(4)" onmouseup="moveStop()"> <img th:src="@{/img/web/security/sp-arrow.png}"/> </a> </li> <li class="sp-cz-l7"> <a href="javascript:;" onmousedown="ptzControl(6)" onmouseup="moveStop()"> <img th:src="@{/img/web/security/sp-arrow.png}"/> </a> </li> <li class="sp-cz-l8"> <a href="javascript:;" onmousedown="ptzControl(2)" onmouseup="moveStop()"> <img th:src="@{/img/web/security/sp-arrow.png}"/> </a></li> <li class="sp-cz-l9"> <a href="javascript:;" onmousedown="ptzControl(8)" onmouseup="moveStop()"> <img th:src="@{/img/web/security/sp-arrow.png}"/> </a></li> </ul> </div> <div class="sp-bianbei fl"> <button type="button" class="sp-sxBtn sp-czBtn" onmousedown="ptzControl(9)" onmouseup="zoomStop()"> <i>ï¼</i> </button> <span>åç¦</span> <button type="button" class="sp-fdBtn sp-czBtn" onmousedown="ptzControl(10)" onmouseup="zoomStop()"> <i>ï¼</i> </button> </div> </div> </div> <div class="pdgxq-m1-right sp-box" style="height: 410px;margin-top: 10px"> <div class="pdgxq-H"> <h3> <i></i>设å¤å表 </h3> </div> <div class="sp-table-box"> <div class="sp-table"> <table class="layui-table pdgxq-table1" lay-skin="nob"> <colgroup> <col width="70%"> <col width="15%"> <col width="15%"> </colgroup> <thead> <tr> <th>åç§°</th> <th>ç±»å</th> <th>ç¶æ</th> </tr> </thead> <tbody id="cameraList"> </tbody> </table> </div> </div> </div> </div> <!--pdgxq-m1-left end--> </div> <!--sp-boxWrap end--> </div> </div> <!--jmkt-main end--> </div> <!--i-container end--> <script th:inline="javascript"> var listCamera = [[${listCamera}]]; </script> <script th:src="@{/js/jquery.min.js}"></script> <script th:src="@{/ajax/libs/layui/layui.js}"></script> <script th:src="@{/common/constant.js}"></script> <script th:src="@{/security/video-list-dept.js}"></script> <script th:src="@{/security/video-control.js}"></script> </body> </html> fzzy-igdss-web/src/main/resources/templates/security/video-list.html
ÎļþÒÑɾ³ý