From dec93e6c6923238869a5accf278028cdd6a18bec Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期五, 28 十一月 2025 16:50:15 +0800
Subject: [PATCH] 出入库流程及设备、监控、分机、粮情等配置页面及功能
---
fzzy-igdss-view/src/main/java/com/fzzy/igds/DicPR.java | 55
fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/ContextUtil.java | 25
fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/Constant.java | 10
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutSysConfPR.java | 65
fzzy-igdss-view/src/main/java/models/core.model.xml | 484 ++++
fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutSysConfRepository.java | 48
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DepotConfService.java | 249 ++
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DeviceIotService.java | 194 +
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutSysConf.view.xml | 254 ++
fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/SecCameraRepository.java | 51
fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DeviceIotRepository.java | 41
fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCameraPR.java | 183 +
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutConf.java | 2
fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceSer.view.xml | 427 ++++
fzzy-igdss-view/src/main/java/com/fzzy/igds/DepotConf.view.xml | 322 +++
fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DepotConfRepository.java | 56
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutConfPR.java | 71
fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml | 1207 +++++++++++
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DeviceSerService.java | 407 +++
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CoreDeptService.java | 17
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutConfService.java | 233 ++
fzzy-igdss-view/src/main/java/com/fzzy/igds/DepotConfPR.java | 77
fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceIotPR.java | 132 +
fzzy-igdss-view/src/main/java/com/fzzy/igds/DicArea.view.xml | 2
fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceSerPR.java | 105 +
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutConf.view.xml | 804 +++++++
fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutConfRepository.java | 41
fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DeptRepository.java | 2
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DicService.java | 64
fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceIot.view.xml | 324 +++
fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DeviceSerRepository.java | 73
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SecCameraService.java | 177 +
fzzy-igdss-view/src/main/java/com/fzzy/igds/DeptPR.java | 12
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/DepotConf.java | 4
34 files changed, 6,208 insertions(+), 10 deletions(-)
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/Constant.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/Constant.java
index d89f627..7ea3309 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/Constant.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/Constant.java
@@ -67,4 +67,14 @@
public static final String NETWORK_01 = "01";// 鏈夌嚎妯″紡
public static final String NETWORK_02 = "02";// 鏃犵嚎妯″紡
+
+ /**
+ * 缂撳瓨KEY-鍑哄叆搴撴祦绋嬮厤缃俊鎭�
+ */
+ public static final String CACHE_INOUT_SYS_CONF = "INOUT_SYS_CONF";
+
+ /**
+ * 缂撳瓨KEY-鍑哄叆搴撻厤缃俊鎭紦瀛�
+ */
+ public static final String CACHE_INOUT_CONF_LIST = "INOUT_CONF";
}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/DepotConf.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/DepotConf.java
index 2671061..ceb2be3 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/DepotConf.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/DepotConf.java
@@ -103,10 +103,6 @@
@TableField("grain_auto")
private String grainAuto = Constant.YN_N;
- @Column(name = "only_cur_depot", columnDefinition = "varchar(40) COMMENT '鏄剧ず褰撳墠'")
- @TableField("only_cur_depot")
- private String onlyCurDepot = "Y";
-
@Column(name = "is_only_th", columnDefinition = "varchar(40) COMMENT '绮儏鏄惁娓╂箍搴�'")
@TableField("is_only_th")
private String isOnlyTH = Constant.YN_N;
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutConf.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutConf.java
index 6e659d4..1a6655e 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutConf.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutConf.java
@@ -97,7 +97,7 @@
@TableField("snap_type")
private String snapType;
- @Column(name = "plate_snap_type", columnDefinition = "varchar(40) COMMENT '杞︾墝璇嗗埆鎶撴媿鏂瑰紡'")
+ @Column(name = "plate_snap_type", columnDefinition = "varchar(40) COMMENT '鎶撳浘璇嗗埆'")
@TableField("plate_snap_type")
private String plateSnapType;
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DepotConfRepository.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DepotConfRepository.java
new file mode 100644
index 0000000..8090d33
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DepotConfRepository.java
@@ -0,0 +1,56 @@
+package com.fzzy.igds.repository;
+
+import com.fzzy.igds.domain.DepotConf;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/28 15:38
+ */
+@Service
+public interface DepotConfRepository extends JpaRepository<DepotConf, String> {
+
+ /**
+ * 鏍规嵁缁勭粐缂栫爜鑾峰彇浠撳簱璐т綅淇℃伅
+ *
+ * @param companyId
+ * @return
+ */
+ @Query("from DepotConf where companyId =:companyId order by depotId")
+ List<DepotConf> getDepotConfByCompanyId(@Param("companyId") String companyId);
+
+ /**
+ * 鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栦粨搴撹揣浣嶄俊鎭�
+ *
+ * @param companyId
+ * @param deptId
+ * @return
+ */
+ @Query("from DepotConf where companyId =:companyId and deptId =:deptId order by depotId")
+ List<DepotConf> getDepotConf(@Param("companyId") String companyId, @Param("deptId") String deptId);
+
+
+ /**
+ * 鏍规嵁缁勭粐缂栫爜鍜屼粨搴撶紪鐮佽幏鍙栦粨搴撹揣浣嶄俊鎭�
+ * @param companyId
+ * @param depotId
+ * @return
+ */
+ @Query("from DepotConf where companyId =:companyId and depotId =:depotId")
+ DepotConf getDepotConfByDepotId(@Param("companyId") String companyId, @Param("depotId") String depotId);
+
+
+ @Transactional
+ @Modifying
+ @Query("update DepotConf set grainFreq=:grainFreq where companyId=:companyId and deptId =:deptId")
+ int updateGrainFreq(@Param("grainFreq") String grainFreq, @Param("companyId") String companyId, @Param("deptId") String deptId);
+
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DeptRepository.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DeptRepository.java
index 39ff99e..63e7f04 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DeptRepository.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DeptRepository.java
@@ -28,7 +28,7 @@
/**
* 鏍规嵁companyId鑾峰彇淇℃伅
*
- * @param companyId
+ * @param id
* @return
*/
@Query("from Dept where id =:id order by id")
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DeviceIotRepository.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DeviceIotRepository.java
new file mode 100644
index 0000000..98d1329
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DeviceIotRepository.java
@@ -0,0 +1,41 @@
+package com.fzzy.igds.repository;
+
+import com.fzzy.igds.domain.DeviceIot;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/28 14:42
+ */
+@Service
+public interface DeviceIotRepository extends JpaRepository<DeviceIot, String>, JpaSpecificationExecutor<DeviceIot> {
+
+ /**
+ * 鏍规嵁缁勭粐缂栫爜鑾峰彇浠撳簱璐т綅淇℃伅
+ *
+ * @param companyId
+ * @return
+ */
+ @Query("from DeviceIot where companyId =:companyId order by id")
+ List<DeviceIot> getDeviceIotByCompanyId(@Param("companyId") String companyId);
+
+ /**
+ * 鏇存柊璁惧浣嶇疆
+ * @param deviceId
+ * @param posX
+ * @param posY
+ */
+ @Transactional
+ @Modifying
+ @Query("update DeviceIot set posX =:posX,posY =:posY where id =:deviceId")
+ void updatePos(@Param("deviceId") String deviceId, @Param("posX") Double posX, @Param("posY") Double posY);
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DeviceSerRepository.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DeviceSerRepository.java
new file mode 100644
index 0000000..68d6e8d
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/DeviceSerRepository.java
@@ -0,0 +1,73 @@
+package com.fzzy.igds.repository;
+
+import com.fzzy.igds.domain.DeviceSer;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/28 13:48
+ */
+@Service
+public interface DeviceSerRepository extends JpaRepository<DeviceSer, String> {
+
+ /**
+ * 鏍规嵁缁勭粐缂栫爜鑾峰彇浠撳簱璐т綅淇℃伅
+ *
+ * @param companyId
+ * @return
+ */
+ @Query("from DeviceSer where companyId =:companyId order by orderNum")
+ List<DeviceSer> getDataByDeptId(@Param("companyId") String companyId);
+
+
+ /**
+ * 鑾峰彇涓嬪睘鍒嗘満淇℃伅
+ *
+ * @param parentId
+ * @return
+ */
+ @Query("from DeviceSer where deptId like:parentId order by orderNum")
+ List<DeviceSer> getDataByParentId(@Param("parentId") String parentId);
+
+
+ /**
+ * 鏍规嵁缁勭粐缂栫爜鑾峰彇浠撳簱璐т綅淇℃伅
+ *
+ * @param companyId
+ * @return
+ */
+ @Query("from DeviceSer where companyId =:companyId and id =:id order by orderNum")
+ DeviceSer getDataById(@Param("companyId") String companyId, @Param("id") String id);
+
+ /**
+ * 鏇存柊鍒嗘満鐘舵��
+ * @param companyId
+ * @param status
+ */
+ @Transactional
+ @Modifying
+ @Query("update DeviceSer set status =:status where companyId =:companyId")
+ void updateSerStatus(@Param("companyId") String companyId, @Param("status") String status);
+
+ /**
+ * 鏍规嵁SN鏇存柊鐘舵��
+ * @param ip
+ * @param port
+ * @param status
+ * @param sn
+ * @param updateTime
+ */
+ @Transactional
+ @Modifying
+ @Query("update DeviceSer set status =:status,ip =:ip,port =:port,updateTime =:updateTime where sn =:sn")
+ void updateBySn(@Param("ip") String ip, @Param("port") Integer port,@Param("status") String status,@Param("sn") String sn,@Param("updateTime") Date updateTime);
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutConfRepository.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutConfRepository.java
new file mode 100644
index 0000000..4f16d63
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutConfRepository.java
@@ -0,0 +1,41 @@
+package com.fzzy.igds.repository;
+
+import com.fzzy.igds.domain.InoutConf;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/27 20:23
+ */
+@Service
+public interface InoutConfRepository extends JpaRepository<InoutConf, String> {
+
+ /**
+ * 鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栦俊鎭�
+ *
+ * @param companyId
+ * @param deptId
+ * @return
+ */
+ @Query("from InoutConf where companyId =:companyId and deptId =:deptId order by sort,inoutProgress")
+ List<InoutConf> getInoutConfList(@Param("companyId") String companyId, @Param("deptId") String deptId);
+
+ /**
+ * 鏇存柊鐘舵��
+ * @param status
+ * @param ip
+ * @param port
+ */
+ @Transactional
+ @Modifying
+ @Query("update InoutConf set status =:status where ip =:ip and port =:port")
+ void updateInoutConfStatus(@Param("status") String status, @Param("ip") String ip, @Param("port") Integer port);
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutSysConfRepository.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutSysConfRepository.java
new file mode 100644
index 0000000..68de24c
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutSysConfRepository.java
@@ -0,0 +1,48 @@
+package com.fzzy.igds.repository;
+
+import com.fzzy.igds.domain.InoutSysConf;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/27 20:23
+ */
+@Service
+public interface InoutSysConfRepository extends JpaRepository<InoutSysConf, String> {
+
+ /**
+ * 鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栦俊鎭�
+ *
+ * @param companyId
+ * @param deptId
+ * @return
+ */
+ @Query("from InoutSysConf where companyId =:companyId and deptId =:deptId")
+ InoutSysConf getInoutSysConf(@Param("companyId") String companyId, @Param("deptId") String deptId);
+
+
+ /**
+ * 鏍规嵁id鑾峰彇淇℃伅
+ *
+ * @param parentId
+ * @return
+ */
+ @Query("from InoutSysConf where deptId like:parentId order by deptId")
+ List<InoutSysConf> getDataByParentId(@Param("parentId") String parentId);
+
+ /**
+ * 鏍规嵁companyId鑾峰彇淇℃伅
+ *
+ * @param companyId
+ * @return
+ */
+ @Query("from InoutSysConf where deptId =:id order by deptId")
+ List<InoutSysConf> getDataById(@Param("id") String id);
+
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/SecCameraRepository.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/SecCameraRepository.java
new file mode 100644
index 0000000..4b5ab43
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/SecCameraRepository.java
@@ -0,0 +1,51 @@
+package com.fzzy.igds.repository;
+
+import com.fzzy.igds.domain.Camera;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/28 10:48
+ */
+@Service
+public interface SecCameraRepository extends JpaRepository<Camera, String> , JpaSpecificationExecutor<Camera> {
+
+ /**
+ * 鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栦俊鎭�
+ *
+ * @param companyId
+ * @param deptId
+ * @return
+ */
+ @Query("from Camera where companyId =:companyId and deptId =:deptId order by orderNum")
+ List<Camera> listCamera(@Param("companyId") String companyId, @Param("deptId") String deptId);
+
+ /**
+ * 鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栦俊鎭�
+ *
+ * @param companyId
+ * @return
+ */
+ @Query("from Camera where companyId =:companyId order by orderNum")
+ List<Camera> listCameraByCompanyId(@Param("companyId") String companyId);
+
+ /**
+ * 鏇存柊璁惧浣嶇疆
+ * @param id
+ * @param posX
+ * @param posY
+ */
+ @Transactional
+ @Modifying
+ @Query("update Camera set posX =:posX,posY =:posY where id =:id")
+ void updatePosById(@Param("id") String id, @Param("posX") Double posX, @Param("posY") Double posY);
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CoreDeptService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CoreDeptService.java
index ad5fde1..9a33407 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CoreDeptService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CoreDeptService.java
@@ -25,6 +25,8 @@
private ISysDeptService iSysDeptService;
@Resource
private DeptRepository deptRepository;
+ @Resource
+ private InoutConfService inoutConfService;
/**
@@ -36,6 +38,14 @@
return deptRepository.getDataByParentId(parentId + "%");
}
+
+ /**
+ * jpa鏌ヨ淇℃伅
+ * @return
+ */
+ public List<Dept> getAllDeptData() {
+ return deptRepository.getAllData(ContextUtil.getCompanyId());
+ }
/**
* jpa鏌ヨ淇℃伅
@@ -70,6 +80,9 @@
dept.setCreateTime(new Date());
this.update(dept);
+
+ //鐢熸垚鍑哄叆搴撴祦绋嬮厤缃俊鎭�
+ inoutConfService.initSysConfData(sysDept.getCompanyId(), dept.getId());
}
/**
@@ -93,6 +106,10 @@
* @return
*/
public void delData(String deptId) {
+ //鍒犻櫎搴撳尯淇℃伅
deptRepository.deleteById(deptId);
+
+ //鍒犻櫎娴佺▼閰嶇疆淇℃伅
+ inoutConfService.delSysConfData(deptId);
}
}
\ No newline at end of file
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DepotConfService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DepotConfService.java
new file mode 100644
index 0000000..1dcfdd3
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DepotConfService.java
@@ -0,0 +1,249 @@
+package com.fzzy.igds.service;
+
+import com.fzzy.igds.constant.RedisConst;
+import com.fzzy.igds.domain.Depot;
+import com.fzzy.igds.domain.DepotConf;
+import com.fzzy.igds.repository.DepotConfRepository;
+import com.fzzy.igds.utils.ContextUtil;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/28 15:42
+ */
+@Slf4j
+@Service
+public class DepotConfService {
+
+ @Resource
+ private DepotConfRepository depotConfRepository;
+ @Resource
+ private DepotService depotService;
+ @Resource
+ private RedisCache redisCache;
+
+ /**
+ * jpa鏌ヨ閰嶇疆淇℃伅
+ *
+ * @param companyId
+ * @param deptId
+ * @return
+ */
+ public List<DepotConf> getConfList(String companyId, String deptId) {
+
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ if (StringUtils.isEmpty(deptId)) {
+ deptId = ContextUtil.subDeptId(null);
+ }
+ return depotConfRepository.getDepotConf(companyId, deptId);
+ }
+
+ /**
+ * jpa鏇存柊淇濆瓨閰嶇疆淇℃伅
+ *
+ * @param conf
+ */
+ public void saveConf(DepotConf conf) {
+ if (StringUtils.isEmpty(conf.getCompanyId())) {
+ conf.setCompanyId(ContextUtil.getCompanyId());
+ }
+ if (StringUtils.isEmpty(conf.getDeptId())) {
+ conf.setDeptId(ContextUtil.subDeptId(null));
+ conf.setCreateBy(ContextUtil.getLoginUserName());
+ conf.setCreateTime(new Date());
+ }
+ conf.setUpdateBy(ContextUtil.getLoginUserName());
+ conf.setUpdateTime(new Date());
+ depotConfRepository.save(conf);
+ flushConfCache(conf.getCompanyId());
+ }
+
+ /**
+ * jpa鍒犻櫎閰嶇疆淇℃伅
+ *
+ * @param conf
+ * @return
+ */
+ public void deleteDepotConf(DepotConf conf) {
+ depotConfRepository.delete(conf);
+
+ //鍒犻櫎閰嶇疆缂撳瓨
+ this.delCacheDepotConf(conf, conf.getCompanyId());
+ }
+
+ /**
+ * 璁剧疆缂撳瓨淇℃伅
+ *
+ * @param list
+ * @param companyId
+ */
+ public void setCacheDepotConf(List<DepotConf> list, String companyId) {
+ if (null != list) {
+ Depot depot;
+ String key;
+ for (DepotConf depotConf : list) {
+ depot = depotService.getCacheDepot(companyId, depotConf.getDepotId());
+ if (null != depot) {
+ depotConf.setDepotName(depot.getName());
+ depotConf.setDepotType(depot.getDepotType());
+ }
+ key = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT_CONF, depotConf.getDepotId());
+ redisCache.setCacheObject(key, depotConf);
+ }
+ }
+ }
+
+ /**
+ * 鍒犻櫎缂撳瓨淇℃伅
+ *
+ * @param depotConf
+ * @param companyId
+ */
+ public void delCacheDepotConf(DepotConf depotConf, String companyId) {
+ if (null == depotConf) {
+ return;
+ }
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ String key = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT_CONF, depotConf.getDepotId());
+ redisCache.deleteObject(key);
+ }
+
+ /**
+ * 鑾峰彇缂撳瓨-鏍规嵁缁勭粐缂栫爜鑾峰彇閰嶇疆淇℃伅闆嗗悎
+ *
+ * @param companyId
+ * @return
+ */
+ public List<DepotConf> getCacheDepotConfList(String companyId) {
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ String patten = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT_CONF) + "*";
+
+ Collection<String> keys = redisCache.keys(patten);
+ if (null == keys || keys.isEmpty()) {
+ return null;
+ }
+
+ List<DepotConf> result = new ArrayList<>();
+ for (String key : keys) {
+ result.add((DepotConf) redisCache.getCacheObject(key));
+ }
+
+ return result;
+ }
+
+ /**
+ * 鑾峰彇缂撳瓨-鏍规嵁缁勭粐缂栫爜鍜岀伯鎯呭垎鏈篒D鑾峰彇閰嶇疆淇℃伅闆嗗悎
+ *
+ * @param companyId
+ * @param serId
+ * @return
+ */
+ public List<DepotConf> getCacheDepotConfList(String companyId, String serId) {
+ List<DepotConf> list = getCacheDepotConfList(companyId);
+
+ if (null == list || list.isEmpty()) {
+ return null;
+ }
+ return list.stream()
+ .filter(item -> null != item.getGrainSer() && item.getGrainSer().equals(serId))
+ .collect(Collectors.toList());
+ }
+
+ /**
+ * 鑾峰彇缂撳瓨-鏍规嵁缁勭粐缂栫爜鍜岀伯鎯呭垎鏈篒D鑾峰彇閰嶇疆淇℃伅
+ *
+ * @param companyId
+ * @param serId
+ * @return
+ */
+ public DepotConf getCacheDepotConfBySerId(String companyId, String serId) {
+ List<DepotConf> data = getCacheDepotConfList(companyId);
+ if (null == data) {
+ return null;
+ }
+
+ return data.stream().filter(item -> serId.equals(item.getGrainSer()))
+ .findAny().orElse(null);
+ }
+
+ /**
+ * 鑾峰彇缂撳瓨-鏍规嵁缁勭粐缂栫爜鍜屼粨搴撶紪鐮佽幏鍙栭厤缃俊鎭�
+ *
+ * @param companyId
+ * @param depotId
+ * @return
+ */
+ public DepotConf getCacheDepotConfByDepotId(String companyId, String depotId) {
+ if (StringUtils.isEmpty(depotId)) {
+ return null;
+ }
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ String key = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT_CONF, depotId);
+ DepotConf depotConf = redisCache.getCacheObject(key);
+ if (null == depotConf) {
+ depotConf = depotConfRepository.getDepotConfByDepotId(companyId, depotId);
+ redisCache.setCacheObject(key, depotConf);
+ }
+
+ return depotConf;
+ }
+
+ /**
+ * 鏍规嵁浠撳簱鍒楄〃锛岃嚜鍔ㄧ敓鎴愪粨搴撻厤缃俊鎭�
+ * @param companyId
+ */
+ private void addConfByDepot(String companyId) {
+ List<Depot> list = depotService.getCacheDepotList(companyId);
+ if (null == list || list.isEmpty()) {
+ return;
+ }
+ DepotConf conf;
+ for (Depot depot : list) {
+ conf = new DepotConf();
+ conf.setDepotId(depot.getId());
+ conf.setCompanyId(depot.getCompanyId());
+ conf.setDeptId(depot.getDeptId());
+ this.saveConf(conf);
+ }
+ }
+
+ /**
+ * 鍒锋柊浠撳簱閰嶇疆缂撳瓨
+ * @param companyId
+ */
+ public void flushConfCache(String companyId) {
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+
+ List<DepotConf> list = depotConfRepository.getDepotConfByCompanyId(companyId);
+
+ this.setCacheDepotConf(list, companyId);
+ }
+
+ /**
+ * 鏇存柊绮儏淇濆瓨棰戠巼
+ * @param freq
+ */
+ public void updateFreq(String freq) {
+ depotConfRepository.updateGrainFreq(ContextUtil.getCompanyId(), ContextUtil.subDeptId(null), freq);
+ }
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DeviceIotService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DeviceIotService.java
new file mode 100644
index 0000000..b147541
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DeviceIotService.java
@@ -0,0 +1,194 @@
+package com.fzzy.igds.service;
+
+import com.fzzy.igds.constant.RedisConst;
+import com.fzzy.igds.domain.DeviceIot;
+import com.fzzy.igds.repository.DeviceIotRepository;
+import com.fzzy.igds.utils.ContextUtil;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/28 14:45
+ */
+@Slf4j
+@Service
+public class DeviceIotService {
+
+ @Resource
+ private RedisCache redisCache;
+ @Resource
+ private DeviceIotRepository deviceIotRepository;
+
+ /**
+ * JPA鍒嗛〉鏌ヨ鏁版嵁
+ *
+ * @param specification
+ * @param pageable
+ * @return
+ */
+ public Page<DeviceIot> findAll(Specification<DeviceIot> specification, Pageable pageable) {
+ return deviceIotRepository.findAll(specification, pageable);
+ }
+
+ /**
+ * JPA - 淇濆瓨鏁版嵁
+ * @param deviceIot
+ */
+ public void updateDeviceIot(DeviceIot deviceIot) {
+ if (StringUtils.isEmpty(deviceIot.getCompanyId())) {
+ deviceIot.setCompanyId(ContextUtil.getCompanyId());
+ }
+ if (StringUtils.isEmpty(deviceIot.getDeptId())) {
+ deviceIot.setDeptId(ContextUtil.subDeptId(null));
+ }
+ if (StringUtils.isEmpty(deviceIot.getId())) {
+ deviceIot.setId(ContextUtil.generateId());
+ deviceIot.setCreateBy(ContextUtil.getLoginUserName());
+ deviceIot.setCreateTime(new Date());
+ }
+ deviceIot.setUpdateBy(ContextUtil.getLoginUserName());
+ deviceIot.setUpdateTime(new Date());
+ deviceIotRepository.save(deviceIot);
+ }
+
+ /**
+ * JPA - 鍒犻櫎鏁版嵁
+ * @param deviceIot
+ */
+ public void delDepotDeviceIot(DeviceIot deviceIot) {
+ deviceIotRepository.delete(deviceIot);
+ }
+
+ /**
+ * jpa鏇存柊璁惧浣嶇疆
+ *
+ * @param deviceId
+ * @param posX
+ * @param posY
+ */
+ public void updatePos(String deviceId, Double posX, Double posY) {
+ deviceIotRepository.updatePos(deviceId, posX, posY);
+ }
+
+ /**
+ * 鍒锋柊缂撳瓨
+ * @param companyId
+ */
+ public void refreshCache(String companyId) {
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ // 鑾峰彇鎵�鏈夌殑璁惧淇℃伅
+ List<DeviceIot> listAll =deviceIotRepository.getDeviceIotByCompanyId(companyId);
+
+ if (null != listAll) {
+ this.setCacheAllDeviceIot(listAll, companyId);
+ }
+ }
+
+ /**
+ * 璁剧疆缂撳瓨
+ * @param listAll
+ * @param companyId
+ */
+ public void setCacheAllDeviceIot(List<DeviceIot> listAll, String companyId) {
+ // 棣栧厛鎸夌収鍒嗘満鍒嗙粍锛岀劧鍚庡瓨鏇存柊缂撳瓨銆�
+ Map<String, List<DeviceIot>> map = listAll.stream().collect(
+ Collectors.groupingBy(DeviceIot::getSerId));
+
+ if (null == map || map.isEmpty()) {
+ log.error("瀛楀吀淇℃伅锛氭墍鏈夎澶囨寜鐓у垎鏈哄垎缁勪繚瀛樼紦瀛樺け璐ワ紝娌℃湁鍒嗙粍鎴愬姛=={}", companyId);
+ return;
+ }
+
+ for (String serId : map.keySet()) {
+ updateCacheDeviceIotBySerId(map.get(serId), companyId, serId);
+ }
+
+ }
+
+ /**
+ * 鏇存柊缂撳瓨
+ * @param listBySer
+ * @param companyId
+ * @param serId
+ */
+ public void updateCacheDeviceIotBySerId(List<DeviceIot> listBySer,
+ String companyId, String serId) {
+
+ String key = RedisConst.buildDeviceKey(companyId,
+ RedisConst.KEY_DEVICE_IOT_LIST, serId);
+
+ log.debug("鍒嗘満-璁惧-KEY={}", key);
+
+ redisCache.setCacheObject(key, listBySer);
+ }
+
+ /**
+ * 鑾峰彇缂撳瓨鏁版嵁
+ * @param companyId
+ * @param serId
+ * @return
+ */
+ public List<DeviceIot> getCacheDeviceIotBySerId(String companyId, String serId) {
+ String key = RedisConst.buildDeviceKey(companyId,
+ RedisConst.KEY_DEVICE_IOT_LIST, serId);
+ List<DeviceIot> list = (List<DeviceIot>) redisCache.getCacheObject(key);
+ if (null == list || list.isEmpty()) {
+ log.error("瀛楀吀淇℃伅锛氭病鏈夎幏鍙栧埌缂撳瓨淇℃伅锛孠EY={}", key);
+ return null;
+ }
+ return list;
+ }
+
+ /**
+ * 鑾峰彇缂撳瓨鏁版嵁
+ * @param companyId
+ * @param depotId
+ * @return
+ */
+ public List<DeviceIot> getCacheDeviceIotByDepotId(String companyId, String depotId) {
+
+ if(org.apache.commons.lang3.StringUtils.isEmpty(depotId)){
+ log.error("浠撳簱缂栫爜涓虹┖锛岃幏鍙朓ot璁惧澶辫触锛宒epotId={}", depotId);
+ return null;
+ }
+ if(StringUtils.isEmpty(companyId)){
+ companyId = ContextUtil.getCompanyId();
+ }
+
+ String pattern = RedisConst.buildKey(companyId, RedisConst.KEY_DEVICE_IOT_LIST) + "*";
+ Collection<String> keys = redisCache.keys(pattern);
+ if (null == keys) {
+ log.error("娌℃湁鑾峰彇鍒癐ot缂撳瓨key淇℃伅");
+ return null;
+ }
+
+ List<DeviceIot> list = new ArrayList<>();
+ List<DeviceIot> result;
+
+ for (String key : keys) {
+ result = (List<DeviceIot>) redisCache.getCacheObject(key);
+ if(null == result || result.isEmpty()){
+ continue;
+ }
+ for (DeviceIot iot : result) {
+ if(depotId.equals(iot.getDepotId())){
+ list.add(iot);
+ }
+ }
+ }
+ return list;
+ }
+
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DeviceSerService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DeviceSerService.java
new file mode 100644
index 0000000..bc994f1
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DeviceSerService.java
@@ -0,0 +1,407 @@
+package com.fzzy.igds.service;
+
+import com.fzzy.igds.constant.Constant;
+import com.fzzy.igds.constant.RedisConst;
+import com.fzzy.igds.domain.DeviceSer;
+import com.fzzy.igds.repository.DeviceSerRepository;
+import com.fzzy.igds.utils.ContextUtil;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.service.ISysDeptService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/28 13:48
+ */
+@Slf4j
+@Service
+public class DeviceSerService {
+ @Resource
+ private ISysDeptService iSysDeptService;
+ @Resource
+ private DeviceSerRepository deviceSerRepository;
+ @Resource
+ private RedisCache redisCache;
+
+ /**
+ * JPA 鏌ヨ鍒嗘満鍒楄〃
+ *
+ * @return
+ */
+ public List<DeviceSer> getAllSer() {
+ SysUser user = ContextUtil.getLoginUser();
+ SysDept userDept = iSysDeptService.selectDeptById(user.getDeptId());
+ if (Constant.DEPT_TYPE_20.equals(userDept.getType())) {
+ return deviceSerRepository.getDataByDeptId(user.getDeptId() + "");
+ }else {
+ return deviceSerRepository.getDataByParentId(user.getDeptId() + "%");
+ }
+
+ }
+
+ /**
+ * JPA 鏌ヨ鍒嗘満
+ *
+ * @param companyId
+ * @param id
+ * @return
+ */
+ public DeviceSer getDataById(String companyId, String id) {
+
+ if (StringUtils.isEmpty(id)) {
+ return null;
+ }
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ return deviceSerRepository.getDataById(companyId, id);
+ }
+
+ /**
+ * JPA 鏇存柊淇濆瓨鍒嗘満
+ *
+ * @param ser
+ */
+ public void saveSer(DeviceSer ser) {
+ if (null == ser.getNetworkType()) {
+ ser.setNetworkType(Constant.NETWORK_01);
+ }
+ if (null == ser.getSn()) {
+ ser.setSn(ser.getId());
+ }
+ if (StringUtils.isEmpty(ser.getCompanyId())) {
+ ser.setCompanyId(ContextUtil.getCompanyId());
+ ser.setCreateBy(ContextUtil.getLoginUserName());
+ ser.setCreateTime(new Date());
+ }
+
+ ser.setUpdateBy(ContextUtil.getLoginUserName());
+ ser.setUpdateTime(new Date());
+ deviceSerRepository.save(ser);
+ refreshCache(ser.getCompanyId());
+ }
+
+ /**
+ * JPA 鏇存柊淇濆瓨鍒嗘満
+ *
+ * @param ser
+ */
+ public void delSer(DeviceSer ser) {
+ deviceSerRepository.delete(ser);
+
+ //鍒犻櫎缂撳瓨
+ delCache(ser.getCompanyId(), ser.getId());
+
+ }
+
+ /**
+ * 鏇存柊鍒嗘満淇℃伅
+ * @param status
+ * @param ip
+ * @param port
+ */
+ public void updateStatusByIp(String status, String ip, Integer port) {
+ String companyId = ContextUtil.getCompanyId();
+ DeviceSer ser = this.getCacheSerByIp(companyId, ip);
+
+ ser.setStatus(status);
+ ser.setIp(ip);
+ ser.setPort(port);
+ ser.setUpdateTime(new Date());
+
+ deviceSerRepository.save(ser);
+ setCacheSer(ser);
+ }
+
+ /**
+ * 鏇存柊鍒嗘満淇℃伅
+ * @param data
+ */
+ public void updateByData(DeviceSer data) {
+ if (null == data) {
+ return;
+ }
+ DeviceSer ser = this.getCacheSer(data.getCompanyId(), data.getId());
+ if (null == ser) {
+ return;
+ }
+ ser.setStatus(Constant.YN_Y);
+ ser.setIp(data.getIp());
+ ser.setPort(data.getPort());
+ ser.setUpdateTime(new Date());
+ ser.setSn(data.getSn());
+ deviceSerRepository.save(ser);
+
+ setCacheSer(ser);
+ }
+
+ /**
+ * 鏇存柊鍒嗘満淇℃伅
+ * @param companyId
+ * @param serId
+ * @param controlModel
+ */
+ public void updateControlModel(String companyId, String serId, String controlModel) {
+
+ DeviceSer ser = this.getCacheSer(companyId, serId);
+ if (null == ser) {
+ return;
+ }
+
+ ser.setStatus(Constant.YN_Y);
+ ser.setControlModel(controlModel);
+ ser.setUpdateTime(new Date());
+ deviceSerRepository.save(ser);
+
+ setCacheSer(ser);
+ }
+
+ /**
+ * 鍒锋柊缂撳瓨
+ *
+ * @param companyId
+ */
+ public void refreshCache(String companyId) {
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ List<DeviceSer> list = this.getAllSer();
+ this.setCacheSer(list, companyId);
+ }
+
+ /**
+ * 璁剧疆鍗曚釜鍒嗘満缂撳瓨
+ *
+ * @param ser
+ */
+ public void setCacheSer(DeviceSer ser) {
+ if (null == ser) {
+ return;
+ }
+ ContextUtil.addSerCompany(ser.getSn(), ser.getCompanyId());
+ String key = RedisConst.buildKey(ser.getCompanyId(), RedisConst.KEY_DEVICE_SER_LIST, ser.getId());
+ redisCache.setCacheObject(key, ser);
+ }
+
+ /**
+ * 璁剧疆缂撳瓨
+ *
+ * @param data
+ * @param companyId
+ */
+ public void setCacheSer(List<DeviceSer> data, String companyId) {
+ if (null == data) {
+ return;
+ }
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ String key;
+ for (DeviceSer ser : data) {
+ ContextUtil.addSerCompany(ser.getSn(), ser.getCompanyId());
+ key = RedisConst.buildKey(companyId, RedisConst.KEY_DEVICE_SER_LIST, ser.getId());
+ redisCache.setCacheObject(key, ser);
+ }
+ }
+
+ /**
+ * 鍒犻櫎缂撳瓨淇℃伅
+ *
+ * @param companyId
+ * @param serId
+ */
+ public void delCache(String companyId, String serId) {
+ if (StringUtils.isEmpty(serId)) {
+ return;
+ }
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ String key = RedisConst.buildKey(companyId, RedisConst.KEY_DEVICE_SER_LIST, serId);
+ redisCache.deleteObject(key);
+ }
+
+ /**
+ * 鏍规嵁缁勭粐缂栫爜鑾峰彇鍒嗘満鍒楄〃
+ *
+ * @param companyId
+ * @return
+ */
+ public List<DeviceSer> getCacheSerList(String companyId) {
+
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ String pattern = RedisConst.buildKey(companyId, RedisConst.KEY_DEVICE_SER_LIST) + "*";
+ Collection<String> keys = redisCache.keys(pattern);
+
+ List<DeviceSer> result = new ArrayList<>();
+ if (null == keys) {
+ return result;
+ }
+ for (String key : keys) {
+ result.add((DeviceSer) redisCache.getCacheObject(key));
+ }
+ if (result.size() < 1) {
+ result = getAllSer();
+ }
+ if (result.size() < 1) {
+ return null;
+ }
+ //閲嶆柊鎺掑簭
+ Collections.sort(result, (p1, p2) -> p1.getOrderNum() - p2.getOrderNum());
+ return result;
+ }
+
+ /**
+ * 鏍规嵁绫诲瀷鑾峰彇鍒嗘満淇℃伅
+ * @param companyId
+ * @param type
+ * @return
+ */
+ public List<DeviceSer> getSerCacheByType(String companyId, String type) {
+ List<DeviceSer> listAll = this.getCacheSerList(companyId);
+ if (null == listAll || listAll.isEmpty()){
+ return null;
+ }
+ if (null == type){
+ return listAll;
+ }
+ List<DeviceSer> result = new ArrayList<DeviceSer>();
+ for (DeviceSer ser : listAll) {
+ if (ser.getType().equals(type))
+ result.add(ser);
+ }
+ return result;
+ }
+
+ /**
+ * 鏍规嵁鍒嗘満ID鑾峰彇鍒嗘満淇℃伅
+ *
+ * @param companyId
+ * @param serId
+ * @return
+ */
+ public DeviceSer getCacheSer(String companyId, String serId) {
+ if (StringUtils.isEmpty(serId)) {
+ return null;
+ }
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ String key = RedisConst.buildKey(companyId, RedisConst.KEY_DEVICE_SER_LIST, serId);
+
+ DeviceSer ser = (DeviceSer) redisCache.getCacheObject(key);
+
+ if (null == ser) {
+ ser = getDataById(companyId, serId);
+ if (null == ser) {
+ log.error("---------缂撳瓨涓病鏈夎幏鍙栧埌鍒嗘満缂撳瓨----------");
+ return null;
+ }
+ redisCache.setCacheObject(key, ser);
+ }
+ return ser;
+ }
+
+ /**
+ * 鏍规嵁鍒嗘満IP鑾峰彇鍒嗘満淇℃伅
+ *
+ * @param companyId
+ * @param ip
+ * @return
+ */
+ public DeviceSer getCacheSerByIp(String companyId, String ip) {
+ if (StringUtils.isEmpty(companyId)) {
+ return null;
+ }
+ List<DeviceSer> serList = getCacheSerList(companyId);
+ if (null == serList) {
+ return null;
+ }
+ for (DeviceSer deviceSer : serList) {
+ if (deviceSer.getIp().equals(ip)) {
+ return deviceSer;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 鏍规嵁鍒嗘満IP鍜岀鍙h幏鍙栧垎鏈轰俊鎭�
+ *
+ * @param companyId
+ * @param ip
+ * @param port
+ * @return
+ */
+ public DeviceSer getCacheSerByIp(String companyId, String ip, Integer port) {
+ if (StringUtils.isEmpty(companyId)) {
+ return null;
+ }
+ List<DeviceSer> serList = getCacheSerList(companyId);
+ if (null == serList) {
+ return null;
+ }
+ for (DeviceSer deviceSer : serList) {
+ if (deviceSer.getIp().equals(ip) && deviceSer.getPort() == port) {
+ return deviceSer;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 鏍规嵁鍒嗘満SN鑾峰彇鍒嗘満淇℃伅
+ *
+ * @param companyId
+ * @param sn
+ * @return
+ */
+ public DeviceSer getCacheSerBySn(String companyId, String sn) {
+
+ if (StringUtils.isEmpty(companyId)) {
+ return null;
+ }
+ List<DeviceSer> serList = getCacheSerList(companyId);
+ if (null == serList) {
+ return null;
+ }
+ for (DeviceSer deviceSer : serList) {
+ if (deviceSer.getSn().equals(sn)) {
+ return deviceSer;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * JPA-鏇存柊璁惧鍏ㄩ儴绂荤嚎
+ * @param companyId
+ */
+ public void allOffLine(String companyId) {
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ deviceSerRepository.updateSerStatus(companyId, Constant.YN_N);
+ }
+
+ /**
+ * JPA-鏍规嵁SN鏇存柊鐘舵��
+ * @param ip
+ * @param port
+ * @param sn
+ * @param status
+ */
+ public void onlineBySn(String ip, Integer port, String sn, String status) {
+ deviceSerRepository.updateBySn(ip, port, status, sn, new Date());
+ }
+
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DicService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DicService.java
index 9662564..4f0794c 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DicService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DicService.java
@@ -306,4 +306,68 @@
return list;
}
+ /**
+ * 鐢电紗璧峰鏂逛綅
+ *
+ * @return
+ */
+ public List<SysDictData> triggerStartOrientation() {
+ List<SysDictData> list = new ArrayList<SysDictData>();
+ list.add(new SysDictData("鍙宠竟", Constant.GRAIN_START_ORIENTATION_RIGHT));
+ list.add(new SysDictData("鍙充笂", Constant.GRAIN_START_ORIENTATION_RIGHT_UP));
+ list.add(new SysDictData("宸﹁竟", Constant.GRAIN_START_ORIENTATION_LEFT));
+ list.add(new SysDictData("宸︿笂", Constant.GRAIN_START_ORIENTATION_LEFT_UP));
+ return list;
+ }
+
+ /**
+ * 鐢电紗甯冪嚎鏂瑰悜
+ *
+ * @return
+ */
+ public List<SysDictData> triggerStartDirection() {
+ List<SysDictData> list = new ArrayList<SysDictData>();
+ list.add(new SysDictData("绾靛悜", Constant.GRAIN_START_DIRECTION_PORTRAIT));
+ list.add(new SysDictData("妯悜", Constant.GRAIN_START_DIRECTION_TRANSVERSE));
+ return list;
+ }
+
+ /**
+ * 鐢电紗璧峰鐐逛綅
+ *
+ * @return
+ */
+ public List<SysDictData> triggerStartPoint() {
+ List<SysDictData> list = new ArrayList<SysDictData>();
+ list.add(new SysDictData("椤堕儴", Constant.GRAIN_START_POINT_TOP));
+ list.add(new SysDictData("搴曢儴", Constant.GRAIN_START_POINT_BELOW));
+
+ return list;
+ }
+
+ /**
+ * 灞傝杞崲
+ *
+ * @return
+ */
+ public List<SysDictData> triggerStartConvert() {
+ List<SysDictData> list = new ArrayList<SysDictData>();
+ list.add(new SysDictData("榛樿", Constant.GRAIN_CONVERT_DEFAULT));
+ list.add(new SysDictData("椤烘椂閽�", Constant.GRAIN_CONVERT_CLOCKWISE));
+ list.add(new SysDictData("閫嗘椂閽�", Constant.GRAIN_CONVERT_ANTICLOCKWISE));
+ return list;
+ }
+
+ /**
+ * 绛掍粨閿ュ舰
+ *
+ * @return
+ */
+ public List<SysDictData> triggerCableCone() {
+ List<SysDictData> list = new ArrayList<SysDictData>();
+ list.add(new SysDictData("鏃犻敟褰�", Constant.CABLE_CONE_0));
+ list.add(new SysDictData("涓婇敟褰�", Constant.CABLE_CONE_1));
+ list.add(new SysDictData("涓嬮敟褰�", Constant.CABLE_CONE_2));
+ return list;
+ }
}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutConfService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutConfService.java
new file mode 100644
index 0000000..164d4ac
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutConfService.java
@@ -0,0 +1,233 @@
+package com.fzzy.igds.service;
+
+import com.fzzy.igds.constant.Constant;
+import com.fzzy.igds.constant.RedisConst;
+import com.fzzy.igds.repository.InoutConfRepository;
+import com.fzzy.igds.repository.InoutSysConfRepository;
+import com.fzzy.igds.domain.InoutConf;
+import com.fzzy.igds.domain.InoutSysConf;
+import com.fzzy.igds.utils.ContextUtil;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.service.ISysDeptService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description 鍑哄叆搴撻厤缃畇ervice灞傦紝鍖呭惈娴佺▼閰嶇疆鍜岃澶囬厤缃�
+ * @Author CZT
+ * @Date 2025/11/28 09:23
+ */
+@Slf4j
+@Service
+public class InoutConfService {
+ @Resource
+ private ISysDeptService iSysDeptService;
+ @Resource
+ private InoutSysConfRepository inoutSysConfRepository;
+ @Resource
+ private InoutConfRepository inoutConfRepository;
+ @Resource
+ private RedisCache redisCache;
+
+ /*--------------- 鍑哄叆搴撴祦绋� ---------------*/
+ /**
+ * JPA-鏌ヨ娴佺▼閰嶇疆
+ *
+ * @return
+ */
+ public List<InoutSysConf> getSysConfData() {
+
+ SysUser user = ContextUtil.getLoginUser();
+ SysDept userDept = iSysDeptService.selectDeptById(user.getDeptId());
+ if (Constant.DEPT_TYPE_20.equals(userDept.getType())) {
+ return inoutSysConfRepository.getDataById(ContextUtil.subDeptId(user));
+ }else {
+ return inoutSysConfRepository.getDataByParentId(user.getDeptId() + "%");
+ }
+ }
+
+ /**
+ *
+ *
+ * @param companyId
+ * @param deptId
+ */
+ public void initSysConfData(String companyId, String deptId) {
+ InoutSysConf inoutSysConf = new InoutSysConf();
+ inoutSysConf.setDeptId(deptId);
+ inoutSysConf.setCompanyId(companyId);
+ inoutSysConf.setProgressIn("REGISTER-WEIGHT_FULL-HANDLE-WEIGHT_EMPTY-RECORD");
+ inoutSysConf.setProgressOut("REGISTER-WEIGHT_EMPTY-HANDLE-WEIGHT_FULL-RECORD");
+ this.saveSysConfData(inoutSysConf);
+
+ this.flushInoutSysConfCache(inoutSysConf);
+ }
+
+ /**
+ *
+ * @param deptId
+ */
+ public void delSysConfData(String deptId) {
+ inoutSysConfRepository.deleteById(deptId);
+ }
+
+ /**
+ * JPA-淇濆瓨娴佺▼閰嶇疆
+ *
+ * @param data
+ * @return
+ */
+ public void saveSysConfData(InoutSysConf data) {
+ if (StringUtils.isEmpty(data.getCompanyId())) {
+ data.setCompanyId(ContextUtil.getCompanyId());
+ }
+ data.setUpdateBy(ContextUtil.getLoginUserName());
+ data.setUpdateTime(new Date());
+ inoutSysConfRepository.save(data);
+ this.flushInoutSysConfCache(data);
+ }
+
+ /**
+ * 璁剧疆缂撳瓨
+ *
+ * @param data
+ */
+ public void flushInoutSysConfCache(InoutSysConf data) {
+ String key = RedisConst.buildKey(data.getDeptId(), Constant.CACHE_INOUT_SYS_CONF);
+ redisCache.setCacheObject(key, data);
+ }
+
+ /**
+ * 鑾峰彇缂撳瓨淇℃伅
+ *
+ * @param companyId
+ * @param deptId
+ * @return
+ */
+ public InoutSysConf getCacheInoutSysConf(String companyId, String deptId) {
+ String key = RedisConst.buildKey(deptId, Constant.CACHE_INOUT_SYS_CONF);
+ return (InoutSysConf) redisCache.getCacheObject(key);
+ }
+
+ /*--------------- 鍑哄叆搴撹澶� ---------------*/
+ /**
+ * JPA-鏌ヨ璁惧閰嶇疆
+ *
+ * @return
+ */
+ public List<InoutConf> getInoutConfList(String companyId, String deptId) {
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ if (StringUtils.isEmpty(deptId)) {
+ deptId = ContextUtil.subDeptId(null);
+ }
+ return inoutConfRepository.getInoutConfList(companyId, deptId);
+ }
+
+ /**
+ * JPA-淇濆瓨璁惧閰嶇疆
+ * @param data
+ * @return
+ */
+ public String saveData(InoutConf data) {
+ if (0 == data.getInOrder()) {
+ data.setInOrder(1);
+ }
+ if (StringUtils.isEmpty(data.getSort())) {
+ data.setSort("1");
+ }
+ if (StringUtils.isEmpty(data.getId())) {
+ data.setId(ContextUtil.generateId());
+ data.setCreateBy(ContextUtil.getLoginUserName());
+ data.setCreateTime(new Date());
+ }
+ if (StringUtils.isEmpty(data.getCompanyId())) {
+ data.setCompanyId(ContextUtil.getCompanyId());
+ }
+ if (StringUtils.isEmpty(data.getDeptId())) {
+ data.setDeptId(ContextUtil.subDeptId(null));
+ }
+ data.setUpdateBy(ContextUtil.getLoginUserName());
+ data.setUpdateTime(new Date());
+ inoutConfRepository.save(data);
+ return null;
+ }
+
+ /**
+ * JPA-鍒犻櫎璁惧閰嶇疆
+ * @param data
+ * @return
+ */
+ public String delData(InoutConf data) {
+ inoutConfRepository.delete(data);
+ return null;
+ }
+
+ /**
+ * 璁剧疆缂撳瓨
+ * @param companyId
+ * @param deptId
+ */
+ public void flushInoutConfCache(String companyId, String deptId) {
+ List<InoutConf> list = this.getInoutConfList(companyId, deptId);
+ String key = RedisConst.buildKey(companyId, Constant.CACHE_INOUT_CONF_LIST, deptId);
+ redisCache.setCacheObject(key, list);
+ }
+
+ /**
+ * 鑾峰彇缂撳瓨
+ * @param companyId
+ * @param deptId
+ * @return
+ */
+ public List<InoutConf> getCacheInoutConf(String companyId, String deptId) {
+ String key = RedisConst.buildKey(companyId, Constant.CACHE_INOUT_CONF_LIST, deptId);
+ List<InoutConf> list = redisCache.getCacheObject(key);
+ if(null == list){
+ list = this.getInoutConfList(companyId, deptId);
+ redisCache.setCacheObject(key, list);
+ }
+ return list;
+ }
+
+ /**
+ * 鑾峰彇缂撳瓨
+ * @param companyId
+ * @param deptId
+ * @param confId
+ * @return
+ */
+ public InoutConf getCacheInoutConf(String companyId, String deptId, String confId) {
+ if (null == companyId || null == deptId || null == confId) {
+ return null;
+ }
+
+ List<InoutConf> list = getCacheInoutConf(companyId, deptId);
+ if (null == list || list.isEmpty()) {
+ return null;
+ }
+ for (InoutConf inoutConf : list) {
+ if (inoutConf.getId().equals(confId)) {
+ return inoutConf;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 鏇存柊鍑哄叆搴撹澶囩姸鎬�
+ * @param ip
+ * @param port
+ * @param status
+ */
+ public void updateInoutConfStatus(String ip, Integer port, String status) {
+ inoutConfRepository.updateInoutConfStatus(status, ip, port);
+ }
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SecCameraService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SecCameraService.java
new file mode 100644
index 0000000..fd95374
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SecCameraService.java
@@ -0,0 +1,177 @@
+package com.fzzy.igds.service;
+
+import com.fzzy.igds.constant.RedisConst;
+import com.fzzy.igds.domain.Camera;
+import com.fzzy.igds.repository.SecCameraRepository;
+import com.fzzy.igds.utils.ContextUtil;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/28 10:48
+ */
+@Slf4j
+@Service
+public class SecCameraService {
+
+ @Resource
+ private SecCameraRepository secCameraRepository;
+ @Resource
+ private RedisCache redisCache;
+
+ /**
+ * JPA鍒嗛〉鏌ヨ鏁版嵁
+ *
+ * @param specification
+ * @param pageable
+ * @return
+ */
+ public Page<Camera> findAll(Specification<Camera> specification, Pageable pageable) {
+ return secCameraRepository.findAll(specification, pageable);
+ }
+
+ /**
+ * JPA - 鏌ヨ搴撳尯涓嬫墍鏈夌洃鎺�
+ * @return
+ */
+ public List<Camera> listCamera() {
+ return secCameraRepository.listCamera(ContextUtil.getCompanyId(), ContextUtil.subDeptId(null));
+ }
+
+ /**
+ * JPA - 淇濆瓨鏁版嵁
+ * @param data
+ */
+ public void saveCamera(Camera data) {
+ if (StringUtils.isEmpty(data.getCompanyId())) {
+ data.setCompanyId(ContextUtil.getCompanyId());
+ }
+ if (StringUtils.isEmpty(data.getDeptId())) {
+ data.setDeptId(ContextUtil.subDeptId(null));
+ }
+ if (data.getChanNum() == 0) {
+ data.setChanNum(1);
+ }
+ if(StringUtils.isEmpty(data.getId())){
+ data.setId(ContextUtil.generateId());
+ data.setCreateBy(ContextUtil.getLoginUserName());
+ data.setCreateTime(new Date());
+ }
+ data.setUpdateBy(ContextUtil.getLoginUserName());
+ data.setUpdateTime(new Date());
+ secCameraRepository.save(data);
+ }
+
+ /**
+ * JPA - 鍒犻櫎鏁版嵁
+ * @param data
+ * @return
+ */
+ public String delCamera(Camera data) {
+ secCameraRepository.delete(data);
+ return null;
+ }
+
+ /**
+ * 璁剧疆缂撳瓨
+ * @param companyId
+ */
+ public void refreshCache(String companyId) {
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ List<Camera> list = secCameraRepository.listCameraByCompanyId(companyId);
+ redisCache.setCacheObject(RedisConst.buildKey(companyId, RedisConst.KEY_CAMERA_LIST), list);
+ }
+
+ /**
+ * 鑾峰彇缂撳瓨涓洃鎺т俊鎭�
+ * @param companyId
+ * @return
+ */
+ public List<Camera> getAllCacheCamera(String companyId) {
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ String key = RedisConst.buildKey(companyId, RedisConst.KEY_CAMERA_LIST);
+ List<Camera> list = redisCache.getCacheObject(key);
+
+ if (null == list || list.isEmpty()) {
+ list = secCameraRepository.listCameraByCompanyId(companyId);
+ redisCache.setCacheObject(key, list);
+ }
+ return list;
+ }
+
+ /**
+ * 鏍规嵁搴撳尯缂栫爜鑾峰彇鐩戞帶淇℃伅
+ * @param companyId
+ * @param deptId
+ * @return
+ */
+ public List<Camera> getCameraByDeptId(String companyId, String deptId) {
+ if (StringUtils.isEmpty(deptId)) {
+ return null;
+ }
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ List<Camera> list = this.getAllCacheCamera(companyId);
+
+ if (null == list || list.isEmpty()){
+ return null;
+ }
+ List<Camera> result = new ArrayList<>();
+ for (Camera data : list) {
+ if (data.getDeptId().equals(deptId)){
+ result.add(data);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * 鏍规嵁鐩戞帶ID鑾峰彇鐩戞帶淇℃伅
+ * @param companyId
+ * @param cameraId
+ * @return
+ */
+ public Camera getCameraById(String companyId, String cameraId) {
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ List<Camera> list = this.getAllCacheCamera(companyId);
+
+ if (null == list || list.isEmpty()){
+ return null;
+ }
+
+ for (Camera data : list) {
+ if (data.getId().equals(cameraId)){
+ return data;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 鏇存柊璁剧疆浣嶇疆
+ * @param param
+ */
+ public void updatePos(Camera param) {
+ secCameraRepository.updatePosById(param.getId(), param.getPosX(), param.getPosY());
+ }
+
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/ContextUtil.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/ContextUtil.java
index 7134167..f36b989 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/ContextUtil.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/ContextUtil.java
@@ -26,6 +26,11 @@
public static Map<String, String> contextUserDept = new HashMap<>();
/**
+ * 鍏ㄥ眬鐢ㄤ簬瀛樻斁SN涓庣粍缁囩紪鐮佺殑鍏崇郴锛屼緥濡傚垎鏈篠N鍜岀粍缁囩紪鐮佸叧绯�
+ */
+ public static Map<String, String> contextSnCompanyIdMap = new HashMap<>();
+
+ /**
* 鐢熸垚椤哄簭ID锛氬勾鏈堟棩鏃跺垎绉掓绉�(17浣�) + 搴忓垪鍙�(4浣�) = 21浣�
*
* @return
@@ -122,4 +127,24 @@
}
return orderId;
}
+
+ /**
+ * 瀛樻斁SN涓庢墍灞炵粍缁囩殑鍏崇郴
+ *
+ * @param sn
+ * @param companyId
+ */
+ public static void addSerCompany(String sn, String companyId) {
+ contextSnCompanyIdMap.put(sn, companyId);
+ }
+
+ /**
+ * 閫氳繃SN鑾峰彇褰撳墠SN鎵�灞炵殑缁勭粐
+ *
+ * @param sn
+ * @return
+ */
+ public static String getCompanyIdBySn(String sn) {
+ return contextSnCompanyIdMap.get(sn);
+ }
}
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/DepotConf.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DepotConf.view.xml
new file mode 100644
index 0000000..cdd28e6
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DepotConf.view.xml
@@ -0,0 +1,322 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+ <Arguments/>
+ <Context/>
+ <Model/>
+ <View layout="padding:10">
+ <ClientEvent name="onReady">var depotList = null;
+</ClientEvent>
+ <Property name="packages">font-awesome,css-common</Property>
+ <DataSet id="dsMain">
+ <Property name="dataProvider">depotConfPR#getConfList</Property>
+ <Property name="dataType">[dtDepotConf]</Property>
+ </DataSet>
+ <Container>
+ <Property name="className">c-param</Property>
+ <ToolBar>
+ <ToolBarButton>
+ <ClientEvent name="onClick">view.get("#dsMain").insert();
+view.get("#depotId").set("readOnly",false);
+view.get("#dgMain").show();</ClientEvent>
+ <Property name="caption">鏂板</Property>
+ <Property name="exClassName">btn1</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-plus</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <ClientEvent name="onClick">var select = view.get("#dataGridMain").get("selection");
+if(select){
+ view.get("#dgMain").show();
+ view.get("#depotId").set("readOnly",true);
+}else{
+ $notify("璇烽�夋嫨闇�瑕佷慨鏀圭殑鏁版嵁鈥︹��");
+}</ClientEvent>
+ <Property name="caption">淇敼</Property>
+ <Property name="exClassName">btn2</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-pencil-square-o</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <ClientEvent name="onClick">
+
+var select = view.get("#dataGridMain").get("selection");
+if(select){
+ view.get("#ajaxDel2").set("parameter",select).execute(function(result){
+ if(result){
+ $alert(result);
+ }else{
+ entity.remove();
+ }
+ });
+}else{
+ $notify("璇烽�夋嫨闇�瑕佸垹闄ょ殑鏁版嵁鈥︹��");
+}</ClientEvent>
+ <Property name="caption">鍒犻櫎</Property>
+ <Property name="exClassName">btn3</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-times</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <Property name="caption">鍒锋柊缂撳瓨</Property>
+ <Property name="exClassName">btn4</Property>
+ <Property name="iconClass">fa fa-refresh</Property>
+ <Property name="width">100</Property>
+ <Property name="action">ajaxRefreshCache</Property>
+ </ToolBarButton>
+ </ToolBar>
+ <DataGrid id="dataGridMain" layoutConstraint="padding:8">
+ <ClientEvent name="onDataRowClick">view.get("#dataGridMain").set("selection",arg.data);</ClientEvent>
+ <Property name="dataSet">dsMain</Property>
+ <Property name="readOnly">true</Property>
+ <Property name="selectionMode">singleRow</Property>
+ <RowSelectorColumn/>
+ <RowNumColumn/>
+ <DataColumn name="depotId">
+ <Property name="property">depotId</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="grainSer">
+ <Property name="property">grainSer</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn>
+ <Property name="property">cableRule</Property>
+ <Property name="align">center</Property>
+ <Property name="name">cableRule</Property>
+ </DataColumn>
+ <DataColumn name="cableCir">
+ <Property name="property">cableCir</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="tempMax">
+ <Property name="property">tempMax</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="grainFreq">
+ <Property name="property">grainFreq</Property>
+ </DataColumn>
+ <DataColumn name="updateBy">
+ <Property name="property">updateBy</Property>
+ </DataColumn>
+ <DataColumn name="updateTime">
+ <Property name="property">updateTime</Property>
+ </DataColumn>
+ </DataGrid>
+ </Container>
+ <UpdateAction id="uaMain">
+ <Property name="dataResolver">depotConfPR#saveConf</Property>
+ <UpdateItem>
+ <Property name="dataSet">dsMain</Property>
+ <Property name="dataPath">[#current]</Property>
+ </UpdateItem>
+ </UpdateAction>
+ <AjaxAction id="ajaxRefreshCache">
+ <Property name="service">depotConfPR#flushConfCache</Property>
+ <Property name="successMessage">鍒锋柊鎴愬姛锛�</Property>
+ <Property name="confirmMessage">纭畾瑕佸埛鏂扮紦瀛樹箞锛�</Property>
+ </AjaxAction>
+ <Dialog id="dgMain" layout="regionPadding:8">
+ <ClientEvent name="onShow">//鏍规嵁浠撳簱绫诲瀷涓嶅悓锛屾樉绀轰笉鍚岀殑閰嶇疆淇℃伅</ClientEvent>
+ <Property name="iconClass">fa fa-tasks</Property>
+ <Property name="caption">妫�娴嬮厤缃弬鏁�</Property>
+ <Property name="width">75%</Property>
+ <Property name="closeable">false</Property>
+ <Buttons>
+ <Button>
+ <ClientEvent name="onClick">view.get("#uaMain").execute(function(){
+ view.get("#dgMain").hide();
+});</ClientEvent>
+ <Property name="caption">淇濆瓨</Property>
+ <Property name="iconClass">fa fa-check-circle</Property>
+ <Property name="exClassName">btn1</Property>
+ <Property name="width">120</Property>
+ </Button>
+ <Button>
+ <ClientEvent name="onClick">view.get("#dsMain.data:#").cancel();
+view.get("#dgMain").hide();</ClientEvent>
+ <Property name="caption">鍙栨秷</Property>
+ <Property name="exClassName">btn3</Property>
+ <Property name="iconClass">fa fa-times-circle</Property>
+ <Property name="width">120</Property>
+ </Button>
+ </Buttons>
+ <Children>
+ <FieldSet layout="padding:5">
+ <Property name="caption">绮俯妫�娴嬮厤缃�</Property>
+ <Buttons/>
+ <Children>
+ <AutoForm layoutConstraint="padding:5">
+ <Property name="dataSet">dsMain</Property>
+ <Property name="cols">*,*,*</Property>
+ <Property name="labelSeparator">锛�</Property>
+ <Property name="labelWidth">120</Property>
+ <AutoFormElement id="depotId">
+ <Property name="name">depotId</Property>
+ <Property name="property">depotId</Property>
+ <Property name="readOnly">true</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">cableRule</Property>
+ <Property name="property">cableRule</Property>
+ <Property name="label">甯冪嚎瑙勫垯</Property>
+ <Editor/>
+ </AutoFormElement>
+ <Label>
+ <Property name="text">璇存槑锛氬钩鏂逛粨锛氬眰-琛�-鍒楋紝绛掍粨锛氱1鍦堟牴鏁�-绗�2鍦堟牴鏁�-绗琻鍦堟牴鏁�</Property>
+ <Property name="style">
+ <Property name="color">blue</Property>
+ </Property>
+ </Label>
+ <AutoFormElement>
+ <Property name="name">grainSer</Property>
+ <Property name="property">grainSer</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">cableCir</Property>
+ <Property name="property">cableCir</Property>
+ <Property name="label">灞傝鍒�</Property>
+ <Editor/>
+ </AutoFormElement>
+ <Label>
+ <Property name="text">璇存槑锛氬彧閽堝绛掍粨锛氱1鍦堝眰鏁�-绗�2鍦堝眰鏁�-绗琻鍦堝眰鏁�</Property>
+ <Property name="style">
+ <Property name="color">blue</Property>
+ </Property>
+ </Label>
+ <AutoFormElement>
+ <Property name="name">cableStart</Property>
+ <Property name="property">cableStart</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">cableEnd</Property>
+ <Property name="property">cableEnd</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="property">startRow</Property>
+ <Property name="name">startRow</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">thSer</Property>
+ <Property name="property">thSer</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">thConf</Property>
+ <Property name="property">thConf</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="property">tempMax</Property>
+ <Property name="name">tempMax</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">temperature</Property>
+ <Property name="property">temperature</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">isOnlyTH</Property>
+ <Property name="property">isOnlyTH</Property>
+ <Editor/>
+ </AutoFormElement>
+ <Label>
+ <Property name="text">璇存槑锛氶粯璁ょ伯鎯呯數缂嗭紝涓烘俯婀垮害璁惧闇�閫夋嫨锛�</Property>
+ <Property name="style">
+ <Property name="color">blue</Property>
+ </Property>
+ </Label>
+ <AutoFormElement>
+ <Property name="property">cableCone</Property>
+ <Property name="name">cableCone</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="property">startOrientation</Property>
+ <Property name="name">startOrientation</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="property">startDirection</Property>
+ <Property name="name">startDirection</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="property">grainAuto</Property>
+ <Property name="name">grainAuto</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="property">startPoint</Property>
+ <Property name="name">startPoint</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="property">startConvert</Property>
+ <Property name="name">startConvert</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">grainFreq</Property>
+ <Property name="property">grainFreq</Property>
+ <Editor/>
+ </AutoFormElement>
+ <Button>
+ <ClientEvent name="onClick">var grainFreq = view.get("#dsMain.data:#").get("grainFreq");
+
+if(grainFreq){
+ view.get("#ajaxUpdateFreq").set("parameter",grainFreq).execute(function(){
+ view.get("#dgMain").hide();
+ view.get("#dsMain").flushAsync();
+ });
+}else{
+ $alert("璇峰厛閰嶇疆鏇存柊棰戠巼锛�")
+}</ClientEvent>
+ <Property name="caption">棰戠巼鍚屾</Property>
+ <Property name="tip">鏇存柊鎵�鏈変粨搴撻鐜囦竴鑷�</Property>
+ <Property name="iconClass">fa fa-refresh</Property>
+ <Property name="exClassName">btn2</Property>
+ </Button>
+ <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>
+ </Children>
+ </FieldSet>
+ </Children>
+ <Tools/>
+ </Dialog>
+ <AjaxAction id="ajaxUpdateFreq">
+ <Property name="confirmMessage">纭畾瑕佹洿鏂版墍鏈変粨搴擄紵</Property>
+ <Property name="service">depotConfPR#updateFreq</Property>
+ </AjaxAction>
+ <AjaxAction id="ajaxDel2">
+ <Property name="successMessage">鍒犻櫎鎴愬姛</Property>
+ <Property name="service">depotConfPR#delDepotConf</Property>
+ <Property name="executingMessage">姝e湪鍒犻櫎</Property>
+ <Property name="confirmMessage">纭畾瑕佸垹闄や箞锛�</Property>
+ </AjaxAction>
+ </View>
+</ViewConfig>
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/DepotConfPR.java b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DepotConfPR.java
new file mode 100644
index 0000000..b159c22
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DepotConfPR.java
@@ -0,0 +1,77 @@
+package com.fzzy.igds;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.DataResolver;
+import com.bstek.dorado.annotation.Expose;
+import com.fzzy.igds.domain.DepotConf;
+import com.fzzy.igds.service.DepotConfService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/28 15:44
+ */
+@Slf4j
+@Component
+public class DepotConfPR {
+
+ @Resource
+ private DepotConfService depotConfService;
+
+ /**
+ * 鍙傛暟閰嶇疆鍒楄〃 depotConfPR#getConfList
+ *
+ * @return
+ */
+ @DataProvider
+ public List<DepotConf> getConfList() {
+ return depotConfService.getConfList(null,null);
+ }
+
+ /**
+ * depotConfPR#saveConf 鍙傛暟閰嶇疆鏇存柊锛屽寘鎷柊澧炲拰淇敼
+ *
+ * @param conf
+ */
+ @DataResolver
+ public void saveConf(DepotConf conf) {
+ DepotConf depotConf = new DepotConf();
+ BeanUtils.copyProperties(conf, depotConf);
+ depotConfService.saveConf(depotConf);
+ }
+
+ /**
+ * depotConfPR#delDepotConf 鍒犻櫎鍙傛暟閰嶇疆
+ *
+ * @param conf
+ */
+ @Expose
+ public void delDepotConf(DepotConf conf) {
+ DepotConf depotConf = new DepotConf();
+ BeanUtils.copyProperties(conf, depotConf);
+ depotConfService.deleteDepotConf(depotConf);
+ }
+
+ /**
+ * depotConfPR#flushConfCache 鍒锋柊閰嶇疆缂撳瓨
+ */
+ @Expose
+ public void flushConfCache() {
+ depotConfService.flushConfCache(null);
+ }
+
+ /**
+ * depotConfPR#updateFreq 鏇存柊鎵�鏈夌伯搴撶殑绮儏棰戠巼
+ */
+ @Expose
+ public void updateFreq(String freq) {
+ depotConfService.updateFreq(freq);
+ }
+
+}
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeptPR.java b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeptPR.java
index 2e0b8b3..ecac0dd 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeptPR.java
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeptPR.java
@@ -24,6 +24,18 @@
@Resource
private CoreDeptService coreDeptService;
+ /**
+ * 鏌ヨ璁惧,灏嗘搷浣滀俊鎭皟鏁翠负绌猴紝榛樿鍖呮嫭鍒嗗簱鍙傛暟
+ *
+ * deptPR#getAllData
+ *
+ * @return
+ */
+ @DataProvider
+ public List<Dept> getAllData() {
+
+ return coreDeptService.getAllDeptData();
+ }
/**
* 鏌ヨ璁惧,灏嗘搷浣滀俊鎭皟鏁翠负绌猴紝榛樿鍖呮嫭鍒嗗簱鍙傛暟
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceIot.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceIot.view.xml
new file mode 100644
index 0000000..6f53ec5
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceIot.view.xml
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+ <Arguments/>
+ <Context/>
+ <Model>
+ <DataType name="dataTypeC">
+ <PropertyDef name="depotId">
+ <Property></Property>
+ <Property name="label">鎵�灞炰粨搴�</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("depotPR#getAllCache").getResult()}</Property>
+ <Property name="keyProperty">id</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="type">
+ <Property></Property>
+ <Property name="label">璁惧绫诲瀷</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#sysDictData").getResult("DEVICE_IOT_TYPE")}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="serId">
+ <Property></Property>
+ <Property name="label">鎵�灞炲垎鏈�</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("deviceSerPR#getAllSerCache").getResult()}</Property>
+ <Property name="keyProperty">id</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ </DataType>
+ </Model>
+ <View layout="padding:10">
+ <ClientEvent name="onReady">view.get("#dataSetC").insert();</ClientEvent>
+ <Property name="packages">font-awesome,css-common</Property>
+ <DataSet id="dsDeviceIot">
+ <Property name="dataProvider">deviceIotPR#loadDeviceIotPage</Property>
+ <Property name="pageSize">20</Property>
+ <Property name="loadMode">lazy</Property>
+ <Property name="dataType">[dtDeviceIot]</Property>
+ </DataSet>
+ <DataSet id="dataSetC">
+ <Property name="dataType">dataTypeC</Property>
+ </DataSet>
+ <Container>
+ <Property name="className">c-param</Property>
+ <AutoForm>
+ <Property name="cols">*,*,*,90,90,*</Property>
+ <Property name="labelWidth">100</Property>
+ <Property name="labelAlign">right</Property>
+ <Property name="dataSet">dataSetC</Property>
+ <AutoFormElement>
+ <Property name="name">depotId</Property>
+ <Property name="property">depotId</Property>
+ <Property name="trigger">autoOpenMappingDropDown2</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">serId</Property>
+ <Property name="property">serId</Property>
+ <Property name="trigger">autoOpenMappingDropDown2</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">type</Property>
+ <Property name="property">type</Property>
+ <Property name="trigger">autoOpenMappingDropDown2</Property>
+ <Editor/>
+ </AutoFormElement>
+ <Button>
+ <Property name="action">actionDeviceIotQuery</Property>
+ <Property name="caption">鎼滅储</Property>
+ <Property name="iconClass">fa fa-search</Property>
+ <Property name="exClassName">btn-q1</Property>
+ </Button>
+ <Button>
+ <ClientEvent name="onClick">view.get("#dataSetC").setData({});</ClientEvent>
+ <Property name="caption">閲嶇疆</Property>
+ <Property name="exClassName">btn-q2</Property>
+ <Property name="iconClass">fa fa-refresh</Property>
+ </Button>
+ </AutoForm>
+ </Container>
+ <Container>
+ <Property name="className">c-data</Property>
+ <ToolBar>
+ <ToolBarButton>
+ <Property name="caption">鏂板</Property>
+ <Property name="exClassName">btn1</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-plus</Property>
+ <Property name="action">actionDeviceIotAdd</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <Property name="action">actionDeviceIotUpdate</Property>
+ <Property name="caption">淇敼</Property>
+ <Property name="exClassName">btn2</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-pencil-square-o</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <Property name="action">actionDeviceIotDelete</Property>
+ <Property name="caption">鍒犻櫎</Property>
+ <Property name="exClassName">btn3</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-times</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <Property name="caption">鍒锋柊缂撳瓨</Property>
+ <Property name="action">ajaxRefreshCache</Property>
+ <Property name="exClassName">btn4</Property>
+ <Property name="iconClass">fa fa-refresh</Property>
+ <Property name="width">100</Property>
+ </ToolBarButton>
+ </ToolBar>
+ <DataGrid id="gridDeviceIot" layoutConstraint="padding:8">
+ <ClientEvent name="onDataRowClick">view.get("#gridDeviceIot").set("selection",arg.data);</ClientEvent>
+ <Property name="dataSet">dsDeviceIot</Property>
+ <Property name="readOnly">true</Property>
+ <Property name="selectionMode">singleRow</Property>
+ <RowSelectorColumn/>
+ <RowNumColumn/>
+ <DataColumn name="depotId">
+ <Property name="property">depotId</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="name">
+ <Property name="property">name</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="serId">
+ <Property name="property">serId</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="passCode">
+ <Property name="property">passCode</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="type">
+ <Property name="property">type</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="remark">
+ <Property name="property">remark</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="updateBy">
+ <Property name="property">updateBy</Property>
+ <Property name="align">center</Property>
+ <Property name="width">120</Property>
+ </DataColumn>
+ <DataColumn name="updateTime">
+ <Property name="property">updateTime</Property>
+ <Property name="align">center</Property>
+ <Property name="width">160</Property>
+ </DataColumn>
+ </DataGrid>
+ </Container>
+ <Container layoutConstraint="bottom">
+ <Property name="className">c-bottom</Property>
+ <DataPilot layoutConstraint="right">
+ <Property name="dataSet">dsDeviceIot</Property>
+ <Property name="itemCodes">pageSize,pages</Property>
+ </DataPilot>
+ </Container>
+ <Dialog id="dialogDeviceIot" layout="regionPadding:8">
+ <ClientEvent name="onHide">view.id("dsDeviceIot").getData().cancel();</ClientEvent>
+ <Property name="iconClass">fa fa-tasks</Property>
+ <Property name="caption">璁惧淇℃伅</Property>
+ <Property name="width">800</Property>
+ <Buttons>
+ <Button>
+ <Property name="action">actionDeviceIotSave</Property>
+ <Property name="caption">淇濆瓨</Property>
+ <Property name="iconClass">fa fa-check-circle</Property>
+ <Property name="exClassName">btn1</Property>
+ <Property name="width">120</Property>
+ </Button>
+ <Button>
+ <ClientEvent name="onClick">view.get("#dialogDeviceIot").hide();</ClientEvent>
+ <Property name="caption">鍙栨秷</Property>
+ <Property name="exClassName">btn3</Property>
+ <Property name="iconClass">fa fa-times-circle</Property>
+ <Property name="width">120</Property>
+ </Button>
+ </Buttons>
+ <Children>
+ <AutoForm>
+ <Property name="dataSet">dsDeviceIot</Property>
+ <Property name="cols">*,*</Property>
+ <Property name="labelWidth">100</Property>
+ <AutoFormElement>
+ <Property name="name">depotId</Property>
+ <Property name="property">depotId</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">name</Property>
+ <Property name="property">name</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">passCode</Property>
+ <Property name="property">passCode</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">serId</Property>
+ <Property name="property">serId</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">type</Property>
+ <Property name="property">type</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">remark</Property>
+ <Property name="property">remark</Property>
+ <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>
+ </Children>
+ <Tools/>
+ </Dialog>
+ <Action id="actionDeviceIotQuery">
+ <ClientEvent name="onExecute">var entity = view.get("#dataSetC.data");
+view.get("#dsDeviceIot").set("parameter",entity).flushAsync();</ClientEvent>
+ <ClientEvent name="onFailure">dorado.MessageBox.alert(arg.error,{
+ title: '绯荤粺鎻愮ず淇℃伅'
+});
+arg.processDefault = false;</ClientEvent>
+ <Property name="hotkey">alt+q</Property>
+ </Action>
+ <Action id="actionDeviceIotAdd">
+ <ClientEvent name="onExecute">var dialog=view.get("#dialogDeviceIot");
+var visible=dialog.get("actualVisible");
+if(!visible){
+ view.get("#dsDeviceIot").insert();
+ dialog.set("caption","鏂板璁惧");
+ dialog.show();
+}</ClientEvent>
+ </Action>
+ <Action id="actionDeviceIotUpdate">
+ <ClientEvent name="onExecute">var entity = view.id("dsDeviceIot").getData("#");
+var dialog=view.get("#dialogDeviceIot");
+var visible = dialog.get("actualVisible");
+var select = view.get("#gridDeviceIot").get("selection");
+if(!visible){
+ dialog.set("caption","淇敼璁惧");
+ if(select){
+ dialog.show();
+ }else{
+ dorado.MessageBox.alert("璇烽�夋嫨闇�瑕佷慨鏀圭殑鏁版嵁鈥︹��");
+ }
+}
+view.get("^isKey").each(function(item){
+ item.set("readOnly",true);
+});</ClientEvent>
+ </Action>
+ <Action id="actionDeviceIotDelete">
+ <ClientEvent name="onExecute">var dialog=view.get("#dialogDeviceIot");
+var visible = dialog.get("actualVisible");
+var dsDeviceIot=view.get("#dsDeviceIot");
+var actionDeviceIotSave=view.get("#actionDeviceIotSave");
+var select = view.get("#gridDeviceIot").get("selection");
+if(!visible){
+ if(!select){
+ dorado.MessageBox.alert("璇峰厛閫夋嫨瑕佹搷浣滅殑鏁版嵁锛�");
+ return;
+ }else{
+ dorado.MessageBox.confirm("纭畾瑕佸垹闄よ繖鏉¤褰曞悧锛�",{
+ detailCallback: function(button,text){
+ if("yes"==button){
+ select.remove();
+ actionDeviceIotSave.execute();
+ }
+ }});
+ }
+}</ClientEvent>
+ </Action>
+ <UpdateAction id="actionDeviceIotSave">
+ <ClientEvent name="onFailure">if(arg.error){
+ dorado.MessageBox.alert(arg.error,{
+ title: '绯荤粺鎻愮ず淇℃伅'
+ });
+ arg.processDefault = false;
+}</ClientEvent>
+ <ClientEvent name="onSuccess">view.get("#dialogDeviceIot").close();</ClientEvent>
+ <Property name="dataResolver">deviceIotPR#saveAll</Property>
+ <UpdateItem>
+ <Property name="dataSet">dsDeviceIot</Property>
+ </UpdateItem>
+ </UpdateAction>
+ <AjaxAction id="ajaxRefreshCache">
+ <Property name="service">deviceIotPR#refreshCache</Property>
+ <Property name="successMessage">鍒锋柊鎴愬姛锛�</Property>
+ <Property name="confirmMessage">纭畾瑕佸埛鏂扮紦瀛樹箞锛�</Property>
+ </AjaxAction>
+ </View>
+</ViewConfig>
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceIotPR.java b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceIotPR.java
new file mode 100644
index 0000000..59e6614
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceIotPR.java
@@ -0,0 +1,132 @@
+package com.fzzy.igds;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.DataResolver;
+import com.bstek.dorado.annotation.Expose;
+import com.bstek.dorado.data.entity.EntityState;
+import com.bstek.dorado.data.entity.EntityUtils;
+import com.bstek.dorado.data.provider.Page;
+import com.fzzy.igds.domain.DeviceIot;
+import com.fzzy.igds.service.DeviceIotService;
+import com.fzzy.igds.utils.ContextUtil;
+import com.ruoyi.common.utils.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/28 14:53
+ */
+@Component
+public class DeviceIotPR {
+
+ @Resource
+ private DeviceIotService deviceIotService;
+
+ /**
+ * 鏌ヨ璁惧,灏嗘搷浣滀俊鎭皟鏁翠负绌�
+ *
+ * deviceIotPR#loadDeviceIotPage
+ *
+ * @param page
+ * @param param
+ * @return
+ */
+ @DataProvider
+ public void loadDeviceIotPage(Page<DeviceIot> page, Map<String, Object> param) {
+ if (null == param) {
+ param = new HashMap<>();
+ }
+ Map<String, Object> finalParam = param;
+
+ //澶氬弬鏁板垎椤垫煡璇�
+ Pageable pageable = PageRequest.of(page.getPageNo() - 1, page.getPageSize(), Sort.Direction.ASC, DeviceIot.SORT_PROP);
+ Specification<DeviceIot> specification = new Specification<DeviceIot>() {
+ private static final long serialVersionUID = 1L;
+
+ public Predicate toPredicate(Root<DeviceIot> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+ List<Predicate> predicates = new ArrayList<Predicate>(); //鎵�鏈夌殑鏂█
+
+ Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId());
+ predicates.add(predicate1);
+ predicate1 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null));
+ predicates.add(predicate1);
+
+ String key = (String) finalParam.get("depotId");
+ if (StringUtils.isNotEmpty(key)) {
+ predicate1 = cb.equal(root.get("depotId"), key);
+ predicates.add(predicate1);
+ }
+ key = (String) finalParam.get("type");
+ if (StringUtils.isNotEmpty(key)) {
+ predicate1 = cb.equal(root.get("type"), key);
+ predicates.add(predicate1);
+ }
+ key = (String) finalParam.get("serId");
+ if (StringUtils.isNotEmpty(key)) {
+ predicate1 = cb.equal(root.get("serId"), key);
+ predicates.add(predicate1);
+ }
+
+ return cb.and(predicates.toArray(new Predicate[0]));
+ }
+ };
+ org.springframework.data.domain.Page<DeviceIot> japPage = deviceIotService.findAll(specification, pageable);
+ page.setEntityCount((int) japPage.getTotalElements());
+ page.setEntities(japPage.getContent());
+ }
+
+ /**
+ * 淇濆瓨 devicePR#saveAll
+ *
+ * @param depotDeviceIots
+ * @return
+ */
+ @DataResolver
+ @Transactional
+ public String saveAll(List<DeviceIot> depotDeviceIots) {
+ String msg = "";
+ DeviceIot deviceIot;
+ for (DeviceIot depotDeviceIot : depotDeviceIots) {
+ EntityState state = EntityUtils.getState(depotDeviceIot);
+ deviceIot = new DeviceIot();
+ BeanUtils.copyProperties(depotDeviceIot, deviceIot);
+ if (state == EntityState.NEW) {
+ deviceIotService.updateDeviceIot(deviceIot);
+ msg = "娣诲姞鎴愬姛!";
+ }
+ if (state == EntityState.DELETED) {
+ deviceIotService.delDepotDeviceIot(deviceIot);
+ msg = "鍒犻櫎鎴愬姛!";
+ }
+ if (state == EntityState.MODIFIED) {
+ deviceIotService.updateDeviceIot(deviceIot);
+ msg = "淇敼鎴愬姛!";
+ }
+ }
+ return msg;
+ }
+
+ /**
+ * devicePR#refreshCache
+ */
+ @Expose
+ public void refreshCache(){
+ deviceIotService.refreshCache(null);
+ }
+}
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceSer.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceSer.view.xml
new file mode 100644
index 0000000..c425b0d
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceSer.view.xml
@@ -0,0 +1,427 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+ <Arguments/>
+ <Context/>
+ <Model/>
+ <View layout="padding:10">
+ <ClientEvent name="onReady">
+addData = function(){
+ view.get("#dsDeviceSer").insert();
+ view.get("#dialog1").set("caption","娣诲姞鍒嗘満");
+
+ view.get("#dialog1").show();
+};
+
+delData = function(){
+ var cur = view.get("#dsDeviceSer.data:#");
+ if(!cur) return;
+ cur.setState(dorado.Entity.STATE_DELETED);
+ $confirm("纭畾瑕佸垹闄よ鏁版嵁涔堬紵",function(){
+ view.get("#uaSave").execute(function(){
+ cur.remove();
+ });
+ });
+};
+
+btnCancel = function(){
+ view.get("#dialog1").hide();
+};
+
+onDialogHide = function(){
+ var cur = view.get("#dsDeviceSer.data:#");
+ cur.cancel();
+};</ClientEvent>
+ <Property name="packages">font-awesome,css-common</Property>
+ <Property name="cache">
+ <Property name="mode">clientSide</Property>
+ </Property>
+ <DataSet id="dsDeviceSer">
+ <Property name="parameter"></Property>
+ <Property name="dataProvider">deviceSerPR#getAllSer</Property>
+ <Property name="dataType">[dtDeviceSer]</Property>
+ </DataSet>
+ <Container>
+ <Property name="className">c-param</Property>
+ <ToolBar>
+ <ToolBarButton>
+ <ClientEvent name="onClick">addData();</ClientEvent>
+ <Property name="caption">鏂板</Property>
+ <Property name="exClassName">btn1</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-plus</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <ClientEvent name="onClick">
+var select = view.get("#dataGridMain").get("selection");
+if(select){
+ view.get("#dialog1").show();
+}else{
+ $notify("璇烽�夋嫨闇�瑕佷慨鏀圭殑鏁版嵁鈥︹��");
+}</ClientEvent>
+ <Property name="caption">淇敼</Property>
+ <Property name="exClassName">btn2</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-pencil-square-o</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <ClientEvent name="onClick">
+var select = view.get("#dataGridMain").get("selection");
+if(select){
+ view.get("#ajaxActionDel").set("parameter",{
id: select.get("id")
+ }).execute(function(){
+ select.remove();
+ });
+}else{
+ $notify("璇烽�夋嫨闇�瑕佸垹闄ょ殑鏁版嵁鈥︹��");
+}
</ClientEvent>
+ <Property name="caption">鍒犻櫎</Property>
+ <Property name="exClassName">btn3</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-times</Property>
+ <Property name="action">ajaxActionDel</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <ClientEvent name="onClick">view.get("#dsDeviceSer").flushAsync();
+ </ClientEvent>
+ <Property name="caption">鍒锋柊鏁版嵁</Property>
+ <Property name="exClassName">btn2</Property>
+ <Property name="iconClass">fa fa-refresh</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <Property name="caption">鍒锋柊缂撳瓨</Property>
+ <Property name="exClassName">btn4</Property>
+ <Property name="iconClass">fa fa-refresh</Property>
+ <Property name="width">100</Property>
+ <Property name="action">ajaxRefreshCache</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <Property name="caption">杩滅▼鎿嶄綔</Property>
+ <Property name="exClassName">btn2</Property>
+ <Property name="iconClass">fa fa-flag-checkered</Property>
+ <Property name="width">120</Property>
+ <Property name="menu">menuPull</Property>
+ </ToolBarButton>
+ </ToolBar>
+ <DataGrid id="dataGridMain" layoutConstraint="padding:8">
+ <ClientEvent name="onDataRowClick">view.get("#dataGridMain").set("selection",arg.data);</ClientEvent>
+ <Property name="dataSet">dsDeviceSer</Property>
+ <Property name="readOnly">true</Property>
+ <Property name="selectionMode">singleRow</Property>
+ <RowSelectorColumn/>
+ <RowNumColumn/>
+ <DataColumn name="id">
+ <Property name="property">id</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="name">
+ <Property name="property">name</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="deptId">
+ <Property name="property">deptId</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="ip">
+ <Property name="property">ip</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="port">
+ <Property name="property">port</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="status">
+ <ClientEvent name="onRenderCell">arg.dom.style.background = arg.data.get("status")== 'Y' ?"":"#FF5722";
+arg.processDefault = true;</ClientEvent>
+ <Property name="property">status</Property>
+ <Property name="align">center</Property>
+ <Property name="width">120</Property>
+ </DataColumn>
+ <DataColumn name="protocol">
+ <Property name="property">protocol</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="updateBy">
+ <Property name="property">updateBy</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="updateTime">
+ <Property name="property">updateTime</Property>
+ <Property name="align">center</Property>
+ <Property name="width">180</Property>
+ </DataColumn>
+ </DataGrid>
+ </Container>
+ <Dialog id="dialog1" layout="regionPadding:8">
+ <ClientEvent name="onHide">onDialogHide();</ClientEvent>
+ <Property name="iconClass">fa fa-tasks</Property>
+ <Property name="width">1200</Property>
+ <Property name="caption">鍒嗘満淇℃伅</Property>
+ <Property name="closeable">false</Property>
+ <Buttons>
+ <Button>
+ <ClientEvent name="onClick">var cur = view.get("#dsDeviceSer.data:#");
+if(cur.validate() == 'ok'){
+ view.get("#updateAction").execute(function(){
+ view.get("#dialog1").close();
+ });
+}else{
+ $alert("鏁版嵁鏍¢獙澶辫触锛�");
+}</ClientEvent>
+ <Property name="caption">淇濆瓨</Property>
+ <Property name="iconClass">fa fa-check-circle</Property>
+ <Property name="exClassName">btn1</Property>
+ <Property name="width">120</Property>
+ </Button>
+ <Button>
+ <ClientEvent name="onClick">btnCancel();</ClientEvent>
+ <Property name="caption">鍙栨秷</Property>
+ <Property name="exClassName">btn3</Property>
+ <Property name="iconClass">fa fa-times-circle</Property>
+ <Property name="width">120</Property>
+ </Button>
+ </Buttons>
+ <Children>
+ <FieldSet layout="padding:5">
+ <Property name="caption">鍩烘湰淇℃伅</Property>
+ <Buttons/>
+ <Children>
+ <AutoForm>
+ <Property name="dataSet">dsDeviceSer</Property>
+ <Property name="cols">*,*,*</Property>
+ <Property name="labelSeparator">锛�</Property>
+ <Property name="labelAlign">right</Property>
+ <Property name="labelWidth">100</Property>
+ <AutoFormElement>
+ <Property name="name">id</Property>
+ <Property name="property">id</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">name</Property>
+ <Property name="property">name</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">deptId</Property>
+ <Property name="property">deptId</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">sn</Property>
+ <Property name="property">sn</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">ip</Property>
+ <Property name="property">ip</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">port</Property>
+ <Property name="property">port</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">type</Property>
+ <Property name="property">type</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">protocol</Property>
+ <Property name="property">protocol</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">controlModel</Property>
+ <Property name="property">controlModel</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">powerModel</Property>
+ <Property name="property">powerModel</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">networkType</Property>
+ <Property name="property">networkType</Property>
+ <Property name="label">缁堢鑱旂綉</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">status</Property>
+ <Property name="property">status</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">isMoreDepot</Property>
+ <Property name="property">isMoreDepot</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">orderNum</Property>
+ <Property name="property">orderNum</Property>
+ <Editor/>
+ </AutoFormElement>
+ </AutoForm>
+ </Children>
+ </FieldSet>
+ <FieldSet layout="padding:5">
+ <Property name="caption">閰嶇疆淇℃伅</Property>
+ <Buttons/>
+ <Children>
+ <AutoForm>
+ <Property name="dataSet">dsDeviceSer</Property>
+ <Property name="cols">*,*,*,*</Property>
+ <Property name="labelSeparator">锛�</Property>
+ <Property name="labelAlign">right</Property>
+ <Property name="labelWidth">100</Property>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">producer</Property>
+ <Property name="property">producer</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">contactPhone</Property>
+ <Property name="property">contactPhone</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">cableFormat</Property>
+ <Property name="property">cableFormat</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">cableZ</Property>
+ <Property name="property">cableZ</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">cableY</Property>
+ <Property name="property">cableY</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">cableX</Property>
+ <Property name="property">cableX</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">cableStart</Property>
+ <Property name="property">cableStart</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">remark</Property>
+ <Property name="property">remark</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">cableType</Property>
+ <Property name="property">cableType</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">orgId</Property>
+ <Property name="property">orgId</Property>
+ <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>
+ </Children>
+ </FieldSet>
+ </Children>
+ <Tools/>
+ </Dialog>
+ <UpdateAction id="updateAction">
+ <Property name="dataResolver">deviceSerPR#updateSer</Property>
+ <UpdateItem>
+ <Property name="dataSet">dsDeviceSer</Property>
+ <Property name="dataPath">[#current]</Property>
+ </UpdateItem>
+ </UpdateAction>
+ <AjaxAction id="ajaxActionDel">
+ <Property name="service">deviceSerPR#delSerById</Property>
+ <Property name="confirmMessage">纭畾瑕佸垹闄や箞锛�</Property>
+ <Property name="executingMessage">姝e湪鍒犻櫎</Property>
+ <Property name="successMessage">鍒犻櫎鎴愬姛</Property>
+ </AjaxAction>
+ <AjaxAction id="ajaxRefreshCache">
+ <Property name="service">deviceSerPR#refreshCache</Property>
+ <Property name="successMessage">鍒锋柊鎴愬姛锛�</Property>
+ <Property name="confirmMessage">纭畾瑕佸埛鏂扮紦瀛樹箞锛�</Property>
+ </AjaxAction>
+ <Menu id="menuPull">
+ <MenuItem>
+ <ClientEvent name="onClick">var cur = view.get("#dsDeviceSer.data:#");
+view.get("#ajaxUpdateDepot").set("parameter",cur.get("id")).execute(function(result){
+ if(result){
+ $alert(result);
+ }else{
+ $alert("鍛戒护鍙戦�佹垚鍔燂紝璇风瓑寰呯粓绔繑鍥烇紒锛�");
+ }
+});</ClientEvent>
+ <Property name="caption">杩滅▼鍚屾浠撳簱</Property>
+ <Property name="iconClass">fa fa-thumbs-o-up</Property>
+ </MenuItem>
+ <MenuItem>
+ <ClientEvent name="onClick">var cur = view.get("#dsDeviceSer.data:#");
+view.get("#ajaxUpdateDevice").set("parameter",cur.get("id")).execute(function(result){
+ if(result){
+ $alert(result);
+ }else{
+ $alert("鍛戒护鍙戦�佹垚鍔燂紝璇风瓑寰呯粓绔繑鍥烇紒锛�");
+ }
+});</ClientEvent>
+ <Property name="caption">杩滅▼鍚屾璁惧</Property>
+ <Property name="iconClass">fa fa-thumbs-o-up</Property>
+ </MenuItem>
+ <MenuItem>
+ <ClientEvent name="onClick">var cur = view.get("#dsDeviceSer.data:#");
+dorado.MessageBox.prompt("璇疯緭鍏ユ巿鏉冪爜锛�",function(txt){
+ view.get("#ajaxAccess").set("parameter",{serId:cur.get("id"),accessCode:txt}).execute(function(result){
+ if(result){
+ $alert(result);
+ }else{
+ $alert("鍛戒护鍙戦�佹垚鍔燂紝璇风瓑寰呯粓绔繑鍥烇紒锛�");
+ }
+ });
+});</ClientEvent>
+ <Property name="caption">杩滅▼鎺堟潈</Property>
+ <Property name="iconClass">fa fa-thumbs-o-up</Property>
+ </MenuItem>
+ </Menu>
+ <AjaxAction id="ajaxUpdateDevice">
+ <Property name="service">pullPR#pullDeviceBySer</Property>
+ <Property name="confirmMessage">纭畾瑕佸悓姝ヨ繙绋嬫帶鍒舵煖涓殑璁惧閰嶇疆鍒板钩鍙颁箞锛�</Property>
+ <Property name="executingMessage">鎸囦护鍙戦�佷腑鈥︹��</Property>
+ </AjaxAction>
+ <AjaxAction id="ajaxUpdateDepot">
+ <Property name="service">pullPR#pullDepotBySer</Property>
+ <Property name="confirmMessage">纭畾瑕佸悓姝ヨ繙绋嬫帶鍒舵煖涓殑浠撳簱閰嶇疆鍒板钩鍙颁箞锛�</Property>
+ <Property name="executingMessage">鎸囦护鍙戦�佷腑鈥︹��</Property>
+ </AjaxAction>
+ <AjaxAction id="ajaxAccess">
+ <Property name="service">pullPR#pullAccess</Property>
+ <Property name="executingMessage">鎸囦护鍙戦�佷腑鈥︹��</Property>
+ </AjaxAction>
+ </View>
+</ViewConfig>
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceSerPR.java b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceSerPR.java
new file mode 100644
index 0000000..b2983b0
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DeviceSerPR.java
@@ -0,0 +1,105 @@
+package com.fzzy.igds;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.DataResolver;
+import com.bstek.dorado.annotation.Expose;
+import com.fzzy.igds.domain.DeviceSer;
+import com.fzzy.igds.service.DeviceSerService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/28 13:50
+ */
+@Component
+public class DeviceSerPR {
+
+ @Resource
+ private DeviceSerService deviceSerService;
+
+ /**
+ * deviceSerPR#getAllSer
+ *
+ * @return
+ */
+ @DataProvider
+ public List<DeviceSer> getAllSer() {
+ return deviceSerService.getAllSer();
+ }
+
+ /**
+ * deviceSerPR#getDataById
+ *
+ * @param id
+ * @return
+ */
+ @Expose
+ public DeviceSer getDataById(String id) {
+ return deviceSerService.getDataById(null, id);
+ }
+
+ /**
+ * deviceSerPR#updateSer
+ *
+ * @param data
+ */
+ @DataResolver
+ public void updateSer(DeviceSer data) {
+ DeviceSer deviceSer = new DeviceSer();
+ BeanUtils.copyProperties(data, deviceSer);
+ if(null == data.getOrderNum()){
+ data.setOrderNum(1);
+ }
+ deviceSerService.saveSer(deviceSer);
+ }
+
+ /**
+ * 鏍规嵁鍒嗘満id鍜屽悕绉板垹闄ゅ垎鏈�
+ */
+ @Expose
+ @Transactional
+ public void delSerById(String id) {
+
+ DeviceSer ser = deviceSerService.getDataById(null, id);
+ deviceSerService.delSer(ser);
+ }
+
+ /**
+ * deviceSerPR#refreshCache
+ *
+ * @throws
+ * @Title: refreshCache
+ * @Description: 鍒锋柊缂撳瓨 void
+ */
+ @Expose
+ public void refreshCache() {
+ deviceSerService.refreshCache(null);
+ }
+
+ /**
+ * ${dorado.getDataProvider("deviceSerPR#getAllSerCache").getResult()}
+ *
+ * @return
+ */
+ @DataProvider
+ public List<DeviceSer> getAllSerCache() {
+ return deviceSerService.getCacheSerList(null);
+ }
+
+ /**
+ * ${dorado.getDataProvider("deviceSerPR#getSerCacheByType").getResult("01")}
+ *
+ * @param type
+ * @return
+ */
+ @DataProvider
+ public List<DeviceSer> getSerCacheByType(String type) {
+ return deviceSerService.getSerCacheByType(null, type);
+ }
+
+}
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/DicArea.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DicArea.view.xml
index 2ee1fdb..b419740 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/igds/DicArea.view.xml
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DicArea.view.xml
@@ -135,7 +135,7 @@
$notify("鏁版嵁鎵ц瀹屾垚锛侊紒");
self.get("parent").hide();
});</ClientEvent>
- <Property name="caption">纭畾</Property>
+ <Property name="caption">淇濆瓨</Property>
<Property name="iconClass">fa fa-check-circle</Property>
<Property name="exClassName">btn1</Property>
<Property name="width">120</Property>
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/DicPR.java b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DicPR.java
index 42daa21..1d693b4 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/igds/DicPR.java
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DicPR.java
@@ -222,4 +222,59 @@
return dicService.triggerNoticeType();
}
+ /**
+ * 鐢电紗璧峰鏂逛綅
+ * ${dorado.getDataProvider("dicPR#triggerStartOrientation").getResult()}
+ *
+ * @return
+ */
+ @DataProvider
+ public List<SysDictData> triggerStartOrientation() {
+ return dicService.triggerStartOrientation();
+ }
+
+ /**
+ * 鐢电紗甯冪嚎鏂瑰悜
+ * ${dorado.getDataProvider("dicPR#triggerStartDirection").getResult()}
+ *
+ * @return
+ */
+ @DataProvider
+ public List<SysDictData> triggerStartDirection() {
+ return dicService.triggerStartDirection();
+ }
+
+ /**
+ * 鐢电紗璧峰鐐逛綅
+ * ${dorado.getDataProvider("dicPR#triggerStartPoint").getResult()}
+ *
+ * @return
+ */
+ @DataProvider
+ public List<SysDictData> triggerStartPoint() {
+ return dicService.triggerStartPoint();
+ }
+
+ /**
+ * 灞傝杞崲
+ * ${dorado.getDataProvider("dicPR#triggerStartConvert").getResult()}
+ *
+ * @return
+ */
+ @DataProvider
+ public List<SysDictData> triggerStartConvert() {
+ return dicService.triggerStartConvert();
+ }
+
+ /**
+ * 绛掍粨閿ュ舰
+ * ${dorado.getDataProvider("dicPR#triggerCableCone").getResult()}
+ *
+ * @return
+ */
+ @DataProvider
+ public List<SysDictData> triggerCableCone() {
+ return dicService.triggerCableCone();
+ }
+
}
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutConf.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutConf.view.xml
new file mode 100644
index 0000000..034b457
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutConf.view.xml
@@ -0,0 +1,804 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+ <Arguments/>
+ <Context/>
+ <Model>
+ <DataType name="dtMain">
+ <Property name="creationType">com.fzzy.igds.domain.InoutConf</Property>
+ <PropertyDef name="id">
+ <Property></Property>
+ <Property name="label">涓婚敭</Property>
+ </PropertyDef>
+ <PropertyDef name="companyId">
+ <Property></Property>
+ <Property name="label">缁勭粐缂栫爜</Property>
+ </PropertyDef>
+ <PropertyDef name="deptId">
+ <Property></Property>
+ <Property name="label">鎵�灞炲簱鍖�</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("deptPR#getAllData").getResult()}</Property>
+ <Property name="keyProperty">id</Property>
+ <Property name="valueProperty">kqmc</Property>
+ </Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="sort">
+ <Property name="label">鎵�灞為厤濂楀彿</Property>
+ <Property name="required">true</Property>
+ <Property name="mapping">
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="code">1</Property>
+ <Property name="name">娴佺▼閰嶇疆#1</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">2</Property>
+ <Property name="name">娴佺▼閰嶇疆#2</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ <Property name="keyProperty">code</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="inOrder">
+ <Property name="dataType">int</Property>
+ <Property name="label">璁惧椤哄簭</Property>
+ </PropertyDef>
+ <PropertyDef name="inoutProgress">
+ <Property></Property>
+ <Property name="label">鎵�灞炴祦绋�</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#sysDictData").getResult("PROCESS_STATUS_")}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
+ <PropertyDef name="name">
+ <Property></Property>
+ <Property name="label">璁惧鍚嶇О</Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
+ <PropertyDef name="sn">
+ <Property></Property>
+ <Property name="label">璁惧搴忓垪鍙�</Property>
+ </PropertyDef>
+ <PropertyDef name="ip">
+ <Property></Property>
+ <Property name="label">IP鍦板潃</Property>
+ </PropertyDef>
+ <PropertyDef name="port">
+ <Property name="dataType">Integer</Property>
+ <Property name="label">璁惧绔彛</Property>
+ </PropertyDef>
+ <PropertyDef name="loginId">
+ <Property></Property>
+ <Property name="label">鐧诲綍甯愬彿</Property>
+ </PropertyDef>
+ <PropertyDef name="pwd">
+ <Property></Property>
+ <Property name="label">鐧诲綍瀵嗙爜</Property>
+ </PropertyDef>
+ <PropertyDef name="chanNum">
+ <Property name="dataType">int</Property>
+ <Property name="label">閫氶亾鍙�</Property>
+ </PropertyDef>
+ <PropertyDef name="portCtrl">
+ <Property name="dataType">Integer</Property>
+ <Property name="label">鎺у埗绔彛</Property>
+ </PropertyDef>
+ <PropertyDef name="type">
+ <Property></Property>
+ <Property name="label">璁惧绫诲瀷</Property>
+ <Property name="mapping">
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="code">10</Property>
+ <Property name="name">杞︾墝璇嗗埆璁惧</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">20</Property>
+ <Property name="name">鎵︽牱鏈鸿澶�</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">30</Property>
+ <Property name="name">鍦扮璁惧</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">21</Property>
+ <Property name="name">鍖栭獙鏈�</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">40</Property>
+ <Property name="name">LED鏄剧ず灞�</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">60</Property>
+ <Property name="name">杩囩▼鎽勫儚澶�</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">70</Property>
+ <Property name="name">绉伴噸鎺у埗鍣�</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">80</Property>
+ <Property name="name">鏅烘収鍗�</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ <Property name="keyProperty">code</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
+ <PropertyDef name="status">
+ <Property></Property>
+ <Property name="label">璁惧鐘舵��</Property>
+ <Property name="mapping">
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="code">NONE</Property>
+ <Property name="name">鏈煡</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">NORMAL</Property>
+ <Property name="name">姝e父鍦ㄧ嚎</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">NO_SIGNAL</Property>
+ <Property name="name">鏈繛鎺�</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ <Property name="keyProperty">code</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="protocol">
+ <Property></Property>
+ <Property name="label">鎵�灞炲崗璁�</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#sysDictData").getResult("PROTOCOL")}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="playType">
+ <Property></Property>
+ <Property name="label">鎾斁鏂瑰紡</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#triggerPlayType").getResult()}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="snapType">
+ <Property></Property>
+ <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>
+ </PropertyDef>
+ <PropertyDef name="plateSnapType">
+ <Property></Property>
+ <Property name="label">鎶撳浘璇嗗埆</Property>
+ <Property name="mapping">
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="code">Y</Property>
+ <Property name="name">鏄�</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">N</Property>
+ <Property name="name">鍚�</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ <Property name="keyProperty">code</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="urlIn">
+ <Property></Property>
+ <Property name="label">鍐呯綉鍦板潃</Property>
+ </PropertyDef>
+ <PropertyDef name="urlOut">
+ <Property></Property>
+ <Property name="label">澶栫綉鍦板潃</Property>
+ </PropertyDef>
+ <PropertyDef name="mediaAddr">
+ <Property></Property>
+ <Property name="label">RTSP鍦板潃</Property>
+ </PropertyDef>
+ <PropertyDef name="remark">
+ <Property></Property>
+ <Property name="label">澶囨敞淇℃伅</Property>
+ </PropertyDef>
+ <PropertyDef name="errorMsg">
+ <Property></Property>
+ <Property name="label">寮傚父璇存槑</Property>
+ </PropertyDef>
+ <PropertyDef name="createTime">
+ <Property name="dataType">DateTime</Property>
+ <Property name="label">鍒涘缓鏃堕棿</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="createBy">
+ <Property></Property>
+ <Property name="label">鍒涘缓浜�</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="updateTime">
+ <Property name="dataType">DateTime</Property>
+ <Property name="label">鏇存柊鏃堕棿</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="updateBy">
+ <Property></Property>
+ <Property name="label">鏇存柊浜�</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ </DataType>
+ </Model>
+ <View layout="padding:10">
+ <ClientEvent name="onReady">var deptId = "${request.getParameter('deptId')}";
+//鏌ヨ
+query = function(){
+ var data = {deptId:deptId};
+ view.get("#dsMain").set("parameter",data).flushAsync();
+};
+query();
+
+
+add = function(){
+ view.get("#dsMain").insert({
+ deptId:deptId,
+ inOrder:1,
+ chanNum:1
+ });
+ view.get("#dialogMain").show();
+}</ClientEvent>
+ <Property name="packages">font-awesome,css-common</Property>
+ <DataSet id="dsMain">
+ <Property name="dataProvider">inoutConfPR#getData</Property>
+ <Property name="dataType">[dtMain]</Property>
+ <Property name="loadMode">manual</Property>
+ </DataSet>
+ <Container>
+ <Property name="className">c-param</Property>
+ <ToolBar>
+ <ToolBarButton>
+ <ClientEvent name="onClick">add();</ClientEvent>
+ <Property name="caption">鏂板</Property>
+ <Property name="exClassName">btn1</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-plus</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <ClientEvent name="onClick">
+ var select = view.get("#dataGridMain").get("selection");
+ if(select){
+ view.get("#dialogMain").show();;
+ }else{
+ $notify("璇烽�夋嫨闇�瑕佷慨鏀圭殑鏁版嵁鈥︹��");
+ } </ClientEvent>
+ <Property name="caption">淇敼</Property>
+ <Property name="exClassName">btn2</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-pencil-square-o</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <ClientEvent name="onClick"> 
+ var select = view.get("#dataGridMain").get("selection");
+ if(select){
+ view.get("#ajaxDel").set("parameter",select).execute(function(){
+ select.remove();
+ });
+ }else{
+ $notify("璇烽�夋嫨闇�瑕佸垹闄ょ殑鏁版嵁鈥︹��");
+ }
</ClientEvent>
+ <Property name="caption">鍒犻櫎</Property>
+ <Property name="exClassName">btn3</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-times</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <ClientEvent name="onClick">var data = view.get("#dsMain.data:#");
+ if(!data){
+ return;
+ }
+ view.get("#ajaxFlushCache").set("parameter",data).execute();</ClientEvent>
+ <Property name="caption">鍒锋柊缂撳瓨</Property>
+ <Property name="exClassName">btn4</Property>
+ <Property name="iconClass">fa fa-refresh</Property>
+ <Property name="width">100</Property>
+ <Property name="action">ajaxRefreshCache</Property>
+ </ToolBarButton>
+ </ToolBar>
+ <DataGrid id="dataGridMain" layoutConstraint="padding:8">
+ <ClientEvent name="onDataRowClick">view.get("#dataGridMain").set("selection",arg.data);</ClientEvent>
+ <Property name="dataSet">dsMain</Property>
+ <Property name="selectionMode">singleRow</Property>
+ <Property name="readOnly">true</Property>
+ <Property name="groupProperty">sort</Property>
+ <RowSelectorColumn/>
+ <RowNumColumn/>
+ <DataColumn name="sort">
+ <Property name="property">sort</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="name">
+ <Property name="property">name</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="inoutProgress">
+ <Property name="property">inoutProgress</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="type">
+ <Property name="property">type</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="status">
+ <Property name="property">status</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="sn">
+ <Property name="property">sn</Property>
+ </DataColumn>
+ <DataColumn name="protocol">
+ <Property name="property">protocol</Property>
+ </DataColumn>
+ <DataColumn name="updateBy">
+ <Property name="property">updateBy</Property>
+ <Property name="align">center</Property>
+ <Property name="width">100</Property>
+ </DataColumn>
+ <DataColumn name="updateTime">
+ <Property name="property">updateTime</Property>
+ <Property name="align">center</Property>
+ <Property name="width">160</Property>
+ </DataColumn>
+ </DataGrid>
+ </Container>
+ <Dialog id="dialogMain" layout="regionPadding:8">
+ <Property name="iconClass">fa fa-tasks</Property>
+ <Property name="caption">鍑哄叆搴撻厤濂楄澶�</Property>
+ <Property name="width">70%</Property>
+ <Property name="closeable">false</Property>
+ <Buttons>
+ <Button>
+ <ClientEvent name="onClick">var data = view.get("#dsMain.data:#");
+ 
+ if(data.validate() != 'ok'){
+ $notify("鏁版嵁鏍¢獙澶辫触锛侊紒");
+ return;
+ }
+ 
+ view.get("#ajaxSave").set("parameter",data).execute(function(result){
+ if(result){
+ $alert(result);
+ return;
+ }
+ $notify("鏁版嵁鎵ц瀹屾垚锛侊紒");
+ self.get("parent").hide();
+ });</ClientEvent>
+ <Property name="caption">纭畾</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ <Property name="exClassName">btn1</Property>
+ </Button>
+ <Button>
+ <ClientEvent name="onClick">view.get("#dsMain.data:#").cancel();
+ self.get("parent").hide();</ClientEvent>
+ <Property name="caption">鍙栨秷</Property>
+ <Property name="iconClass">fa fa-times</Property>
+ <Property name="exClassName">btn3</Property>
+ </Button>
+ </Buttons>
+ <Children>
+ <FieldSet layout="padding:5">
+ <Property name="caption">璁惧淇℃伅</Property>
+ <Buttons/>
+ <Children>
+ <AutoForm>
+ <Property name="dataSet">dsMain</Property>
+ <Property name="cols">*,*,*</Property>
+ <Property name="labelAlign">right</Property>
+ <Property name="labelSeparator">锛�</Property>
+ <Property name="labelWidth">100</Property>
+ <AutoFormElement>
+ <Property name="name">name</Property>
+ <Property name="property">name</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">type</Property>
+ <Property name="property">type</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">sort</Property>
+ <Property name="property">sort</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">inoutProgress</Property>
+ <Property name="property">inoutProgress</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">protocol</Property>
+ <Property name="property">protocol</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">status</Property>
+ <Property name="property">status</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">ip</Property>
+ <Property name="property">ip</Property>
+ <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">port</Property>
+ <Property name="property">port</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>
+ </Children>
+ </FieldSet>
+ <FieldSet layoutConstraint="padding:5">
+ <Property name="caption">鐩戞帶淇℃伅</Property>
+ <Buttons/>
+ <Children>
+ <AutoForm>
+ <Property name="dataSet">dsMain</Property>
+ <Property name="cols">*,*,*</Property>
+ <Property name="labelAlign">right</Property>
+ <Property name="labelSeparator">锛�</Property>
+ <Property name="labelWidth">100</Property>
+ <AutoFormElement>
+ <Property name="name">loginId</Property>
+ <Property name="property">loginId</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">pwd</Property>
+ <Property name="property">pwd</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">portCtrl</Property>
+ <Property name="property">portCtrl</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">playType</Property>
+ <Property name="property">playType</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">chanNum</Property>
+ <Property name="property">chanNum</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">inOrder</Property>
+ <Property name="property">inOrder</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">snapType</Property>
+ <Property name="property">snapType</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">sn</Property>
+ <Property name="property">sn</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">plateSnapType</Property>
+ <Property name="property">plateSnapType</Property>
+ <Editor/>
+ </AutoFormElement>
+ <Label layoutConstraint="colSpan:2">
+ <Property name="style">
+ <Property name="color">blue</Property>
+ </Property>
+ <Property name="text">娉細姝ら厤缃�傜敤浜庨姝h嚧杩淎PI-HTTP鍗忚</Property>
+ </Label>
+ </AutoForm>
+ </Children>
+ </FieldSet>
+ <FieldSet layoutConstraint="padding:5">
+ <Property name="caption">鎾斁閰嶇疆</Property>
+ <Buttons/>
+ <Children>
+ <AutoForm>
+ <Property name="dataSet">dsMain</Property>
+ <Property name="cols">*,*</Property>
+ <Property name="labelAlign">right</Property>
+ <Property name="labelSeparator">锛�</Property>
+ <Property name="labelWidth">100</Property>
+ <AutoFormElement>
+ <Property name="name">urlIn</Property>
+ <Property name="property">urlIn</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">urlOut</Property>
+ <Property name="property">urlOut</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">mediaAddr</Property>
+ <Property name="property">mediaAddr</Property>
+ <Property name="trigger">triggerMedia</Property>
+ <Editor>
+ <TextEditor id="mediaAddr"/>
+ </Editor>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">remark</Property>
+ <Property name="property">remark</Property>
+ <Editor/>
+ </AutoFormElement>
+ </AutoForm>
+ </Children>
+ </FieldSet>
+ </Children>
+ <Tools/>
+ </Dialog>
+ <AjaxAction id="ajaxSave">
+ <Property name="service">inoutConfPR#saveData</Property>
+ </AjaxAction>
+ <AjaxAction id="ajaxDel">
+ <Property name="service">inoutConfPR#delData</Property>
+ <Property name="confirmMessage">纭畾瑕佸垹闄や箞锛�</Property>
+ </AjaxAction>
+ <AjaxAction id="ajaxFlushCache">
+ <Property name="service">inoutConfPR#flushCache</Property>
+ </AjaxAction>
+ <Trigger id="triggerMedia">
+ <ClientEvent name="onExecute">view.get("#dialogMeidaSelect").show();</ClientEvent>
+ </Trigger>
+ <Dialog id="dialogMeidaSelect" layout="vbox padding:10">
+ <Property name="width">650</Property>
+ <Property name="caption">娴佸獟浣撳湴鍧�閫夋嫨</Property>
+ <Property name="height">500</Property>
+ <Buttons/>
+ <Children>
+ <Container>
+ <Label>
+ <Property name="text">娴峰悍RTSP锛堟棫鐗�-涓荤爜娴侊級</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text1">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/h264/ch{4}/main/av_stream</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text1.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">娴峰悍RTSP锛堟棫鐗�-瀛愮爜娴侊級</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text2">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/mpeg4/ch{4}/sub/av_stream</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text2.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">娴峰悍RTSP锛堟柊鐗�-涓荤爜娴侊級</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text3">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/Streaming/Channels/{4}01</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text3.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">娴峰悍RTSP锛堟柊鐗�-瀛愮爜娴侊級</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text4">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/Streaming/Channels/{4}02</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text4.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">澶у崕RTSP锛堜富鐮佹祦锛�</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text5">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/cam/realmonitor?channel={4}&subtype=0</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text5.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">澶у崕RTSP锛堣緟鐮佹祦锛�</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text6">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/cam/realmonitor?channel={4}&subtype=1</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text6.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">闆勮繄RTSP锛堜富鐮佹祦锛�</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text7">
+ <Property name="text">rtsp://{2}:{3}/user={0}&password={1}&channel={4}&stream=0.sdp?real_stream</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text7.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">闆勮繄RTSP锛堟鐮佹祦锛�</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text8">
+ <Property name="text">rtsp://{2}:{3}/user={0}&password={1}&channel={4}&stream=1.sdp?real_stream</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text8.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">涓夋槦RTSP锛堥珮鐮佺巼锛�</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text9">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/onvif/profile2/media.smp</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text9.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">涓夋槦RTSP锛堜綆鐮佺巼锛�</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text10">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/onvif/profile3/media.smp</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text10.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">瀹囪RTSP</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text11">
+ <Property name="text">rtsp://{0}:{1}@{2}/media/video1/multicast</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text11.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ </Children>
+ <Tools/>
+ </Dialog>
+ </View>
+</ViewConfig>
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutConfPR.java b/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutConfPR.java
new file mode 100644
index 0000000..137223f
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutConfPR.java
@@ -0,0 +1,71 @@
+package com.fzzy.igds;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.Expose;
+import com.fzzy.igds.service.InoutConfService;
+import com.fzzy.igds.domain.InoutConf;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/28 09:23
+ */
+@Component
+public class InoutConfPR {
+
+ @Resource
+ private InoutConfService inoutConfService;
+
+ /**
+ * inoutConfPR#getData 鑾峰彇褰撳墠浜烘墍鍦ㄧ殑鍒嗗簱涓嬬殑閰嶇疆淇℃伅
+ *
+ * @return
+ */
+ @DataProvider
+ public List<InoutConf> getData() {
+
+ return inoutConfService.getInoutConfList(null,null);
+ }
+
+ /**
+ * inoutConfPR#saveData 淇濆瓨閰嶇疆
+ *
+ * @return
+ */
+ @Expose
+ public String saveData(InoutConf data) {
+
+ InoutConf inoutConf = new InoutConf();
+ BeanUtils.copyProperties(data, inoutConf);
+ return inoutConfService.saveData(inoutConf);
+ }
+
+ /**
+ * inoutConfPR#delData 鍒犻櫎閰嶇疆
+ *
+ * @param data
+ * @return
+ */
+ @Expose
+ public String delData(InoutConf data) {
+ InoutConf inoutConf = new InoutConf();
+ BeanUtils.copyProperties(data, inoutConf);
+ return inoutConfService.delData(inoutConf);
+ }
+
+
+ /**
+ * inoutConfPR#flushCache
+ *
+ * @return
+ */
+ @Expose
+ public void flushCache(InoutConf data) {
+ inoutConfService.flushInoutConfCache(data.getCompanyId(), data.getDeptId());
+ }
+
+}
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutSysConf.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutSysConf.view.xml
new file mode 100644
index 0000000..eb958d0
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutSysConf.view.xml
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+ <Arguments/>
+ <Context/>
+ <Model>
+ <DataType name="dtMain">
+ <Property name="creationType">com.fzzy.igds.domain.InoutSysConf</Property>
+ <PropertyDef name="deptId">
+ <Property></Property>
+ <Property name="label">鎵�灞炲簱鍖�</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("deptPR#getAllData").getResult()}</Property>
+ <Property name="keyProperty">id</Property>
+ <Property name="valueProperty">kqmc</Property>
+ </Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="companyId">
+ <Property></Property>
+ <Property name="label">绯荤粺缁勭粐缂栫爜</Property>
+ </PropertyDef>
+ <PropertyDef name="progressIn">
+ <Property></Property>
+ <Property name="label">鍏ュ簱娴佺▼</Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
+ <PropertyDef name="progressOut">
+ <Property></Property>
+ <Property name="label">鍑哄簱娴佺▼</Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
+ <PropertyDef name="noticeWx">
+ <Property></Property>
+ <Property name="label">寰俊閫氱煡</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#sysDictData").getResult("sys_yes_no")}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
+ <PropertyDef name="weightEditTag">
+ <Property></Property>
+ <Property name="label">鍦扮缂栬緫</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#sysDictData").getResult("sys_yes_no")}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
+ <PropertyDef name="remark">
+ <Property></Property>
+ <Property name="label">澶囨敞璇存槑</Property>
+ </PropertyDef>
+ <PropertyDef name="createTime">
+ <Property name="dataType">DateTime</Property>
+ <Property name="label">鍒涘缓鏃堕棿</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="createBy">
+ <Property></Property>
+ <Property name="label">鍒涘缓浜�</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="updateTime">
+ <Property name="dataType">DateTime</Property>
+ <Property name="label">鏇存柊鏃堕棿</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="updateBy">
+ <Property></Property>
+ <Property name="label">鏇存柊浜�</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ </DataType>
+ </Model>
+ <View layout="padding:10">
+ <Property name="packages">font-awesome,css-common</Property>
+ <DataSet id="dsMain">
+ <Property name="dataProvider">inoutSysConfPR#getSysConfData</Property>
+ <Property name="dataType">[dtMain]</Property>
+ </DataSet>
+ <Container>
+ <Property name="className">c-param</Property>
+ <ToolBar>
+ <ToolBarButton>
+ <ClientEvent name="onClick">var select = view.get("#dgMain").get("selection");
+if(select){
+ view.get("#dialogMain").show();;
+}else{
+ $notify("璇烽�夋嫨闇�瑕佺紪杈戠殑鏁版嵁鈥︹��");
+}</ClientEvent>
+ <Property name="caption">淇敼</Property>
+ <Property name="exClassName">btn2</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-pencil-square-o</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <ClientEvent name="onClick">view.get("#dsMain").flushAsync();
+ </ClientEvent>
+ <Property name="caption">鍒锋柊缂撳瓨</Property>
+ <Property name="exClassName">btn4</Property>
+ <Property name="iconClass">fa fa-refresh</Property>
+ <Property name="width">100</Property>
+ <Property name="action">ajaxRefreshCache</Property>
+ </ToolBarButton>
+ </ToolBar>
+ <DataGrid id="dgMain" layoutConstraint="padding:8">
+ <ClientEvent name="onDataRowClick">view.get("#dgMain").set("selection",arg.data);</ClientEvent>
+ <Property name="dataSet">dsMain</Property>
+ <Property name="readOnly">true</Property>
+ <Property name="selectionMode">singleRow</Property>
+ <RowSelectorColumn/>
+ <RowNumColumn/>
+ <DataColumn name="deptId">
+ <Property name="property">deptId</Property>
+ </DataColumn>
+ <DataColumn name="progressIn">
+ <Property name="property">progressIn</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="progressOut">
+ <Property name="property">progressOut</Property>
+ <Property name="align">center</Property>
+ </DataColumn>
+ <DataColumn name="noticeWx">
+ <Property name="property">noticeWx</Property>
+ <Property name="align">center</Property>
+ <Property name="width">120</Property>
+ </DataColumn>
+ <DataColumn name="weightEditTag">
+ <Property name="property">weightEditTag</Property>
+ <Property name="align">center</Property>
+ <Property name="width">120</Property>
+ </DataColumn>
+ <DataColumn name="updateBy">
+ <Property name="property">updateBy</Property>
+ <Property name="align">center</Property>
+ <Property name="width">100</Property>
+ </DataColumn>
+ <DataColumn name="updateTime">
+ <Property name="property">updateTime</Property>
+ <Property name="align">center</Property>
+ <Property name="width">160</Property>
+ </DataColumn>
+ </DataGrid>
+ </Container>
+ <Dialog id="dialogMain">
+ <Property name="width">1200</Property>
+ <Property name="caption">娴佺▼閰嶇疆</Property>
+ <Property name="closeable">false</Property>
+ <Property name="iconClass">fa fa-tasks</Property>
+ <Buttons>
+ <Button id="btnOk">
+ <ClientEvent name="onClick">view.get("#uaSave").execute(function(result){
+ if(result){
+ $alert(result);
+ }else{
+ $notify("淇濆瓨鎴愬姛锛侊紒");
+ view.get("#dialogMain").hide();
+ }
+ });</ClientEvent>
+ <Property name="caption">淇濆瓨</Property>
+ <Property name="iconClass">fa fa-check-circle</Property>
+ <Property name="exClassName">btn1</Property>
+ <Property name="width">120</Property>
+ </Button>
+ <Button>
+ <ClientEvent name="onClick">view.get("#dsMain.data:#").cancel();
+ self.get("parent").hide();</ClientEvent>
+ <Property name="caption">鍙栨秷</Property>
+ <Property name="exClassName">btn3</Property>
+ <Property name="iconClass">fa fa-times-circle</Property>
+ <Property name="width">120</Property>
+ </Button>
+ </Buttons>
+ <Children>
+ <AutoForm>
+ <Property name="dataSet">dsMain</Property>
+ <Property name="cols">*,*,*,*</Property>
+ <Property name="labelAlign">right</Property>
+ <Property name="labelSeparator"> : </Property>
+ <Property name="labelWidth">120</Property>
+ <AutoFormElement layoutConstraint="colSpan:4">
+ <Property name="name">deptId</Property>
+ <Property name="property">deptId</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:4">
+ <Property name="name">progressIn</Property>
+ <Property name="property">progressIn</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:4">
+ <Property name="name">progressOut</Property>
+ <Property name="property">progressOut</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">noticeWx</Property>
+ <Property name="property">noticeWx</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">weightEditTag</Property>
+ <Property name="property">weightEditTag</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:4">
+ <Property name="name">remark</Property>
+ <Property name="property">remark</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">createBy</Property>
+ <Property name="property">createBy</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">createTime</Property>
+ <Property name="property">createTime</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">updateBy</Property>
+ <Property name="property">updateBy</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">updateTime</Property>
+ <Property name="property">updateTime</Property>
+ <Editor/>
+ </AutoFormElement>
+ </AutoForm>
+ </Children>
+ <Tools/>
+ </Dialog>
+ <UpdateAction id="uaSave">
+ <Property name="dataResolver">inoutSysConfPR#saveSysConfData</Property>
+ <Property name="successMessage">鏁版嵁淇濆瓨瀹屾垚锛�</Property>
+ <UpdateItem>
+ <Property name="dataSet">dsMain</Property>
+ <Property name="dataPath">[#current]</Property>
+ <Property name="validateData">false</Property>
+ </UpdateItem>
+ </UpdateAction>
+ <AjaxAction id="ajaxRefreshCache">
+ <Property name="service">inoutSysConfPR#flushCache</Property>
+ <Property name="successMessage">鍒锋柊鎴愬姛锛�</Property>
+ <Property name="confirmMessage">纭畾瑕佸埛鏂扮紦瀛樹箞锛�</Property>
+ </AjaxAction>
+ </View>
+</ViewConfig>
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutSysConfPR.java b/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutSysConfPR.java
new file mode 100644
index 0000000..25ef418
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutSysConfPR.java
@@ -0,0 +1,65 @@
+package com.fzzy.igds;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.DataResolver;
+import com.bstek.dorado.annotation.Expose;
+import com.fzzy.igds.service.InoutConfService;
+import com.fzzy.igds.domain.InoutSysConf;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description 鍑哄叆搴撴祦绋嬮厤缃�
+ * @Author CZT
+ * @Date 2024/12/12 15:32
+ */
+@Component
+public class InoutSysConfPR {
+
+ @Resource
+ private InoutConfService inoutConfService;
+
+ /**
+ * inoutSysConfPR#getSysConfData 鑾峰彇褰撳墠鍑哄叆搴撴祦绋嬮厤缃�
+ *
+ * @return
+ * @throws Exception
+ */
+ @DataProvider
+ public List<InoutSysConf> getSysConfData() {
+ return inoutConfService.getSysConfData();
+ }
+
+ /**
+ * inoutSysConfPR#saveSysConfData
+ *
+ * @throws Exception
+ * @returns
+ */
+ @DataResolver
+ public String saveSysConfData(InoutSysConf data) {
+
+ InoutSysConf inoutSysConf = new InoutSysConf();
+ BeanUtils.copyProperties(data,inoutSysConf);
+
+ inoutConfService.saveSysConfData(inoutSysConf);
+ return null;
+ }
+
+ /**
+ * inoutSysConfPR#flushCache
+ */
+ @Expose
+ public void flushCache() {
+
+ List<InoutSysConf> list = getSysConfData();
+ if(null != list && list.size() > 0){
+ for (InoutSysConf inoutSysConf : list) {
+ inoutConfService.flushInoutSysConfCache(inoutSysConf);
+ }
+ }
+ }
+
+}
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml
new file mode 100644
index 0000000..ad29ee1
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml
@@ -0,0 +1,1207 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+ <Arguments/>
+ <Context/>
+ <Model>
+ <DataType name="dtSecCameraParam">
+ <Property name="creationType">com.fzzy.igds.domain.Camera</Property>
+ <PropertyDef name="name">
+ <Property></Property>
+ <Property name="label">鐩戞帶鍚嶇О</Property>
+ </PropertyDef>
+ <PropertyDef name="brand">
+ <Property></Property>
+ <Property name="label">鐩戞帶鍝佺墝</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#sysDictData").getResult("CAMERA_BRAND")}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="spjklx">
+ <Property></Property>
+ <Property name="label">涓氬姟绫诲瀷</Property>
+ <Property name="mapping">
+ <Property name="keyProperty">key</Property>
+ <Property name="valueProperty">value</Property>
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="key">1</Property>
+ <Property name="value">1-浠撳唴</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">2</Property>
+ <Property name="value">2-涓氬姟绫�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">3</Property>
+ <Property name="value">3-瀹夐槻绫�</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="spdwlx">
+ <Property></Property>
+ <Property name="label">鐐逛綅绫诲瀷</Property>
+ <Property name="mapping">
+ <Property name="keyProperty">key</Property>
+ <Property name="valueProperty">value</Property>
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="key">1</Property>
+ <Property name="value">1-鍑哄叆鍙�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">2</Property>
+ <Property name="value">2-鎵︽牱鏈�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">3</Property>
+ <Property name="value">3-鍖栭獙瀹�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">4</Property>
+ <Property name="value">4-缁撶畻瀹�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">5</Property>
+ <Property name="value">5-鍦扮瀹�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">6</Property>
+ <Property name="value">6-搴撳尯涓诲共閬�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">7</Property>
+ <Property name="value">7-浠撻棿鐩戞帶</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">8</Property>
+ <Property name="value">8-浠撳唴</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">9</Property>
+ <Property name="value">9-鑽搧鎴垮唴澶�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">10</Property>
+ <Property name="value">10-鍣ㄦ潗瀹ゅ唴澶�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">11</Property>
+ <Property name="value">11-鍒堕珮鐐�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">12</Property>
+ <Property name="value">12-娌瑰簱缃愬尯</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">13</Property>
+ <Property name="value">13-鏀跺彂娌硅澶�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">14</Property>
+ <Property name="value">14-娉垫埧</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">15</Property>
+ <Property name="value">15-娌瑰簱涓昏杈撻�佺閬�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">16</Property>
+ <Property name="value">16-鍛ㄧ晫</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ </Property>
+ </PropertyDef>
+ </DataType>
+ <DataType name="dtSecCamera">
+ <Property name="creationType">com.fzzy.igds.domain.Camera</Property>
+ <PropertyDef name="id">
+ <Property></Property>
+ <Property name="label">鐩戞帶缂栫爜</Property>
+ </PropertyDef>
+ <PropertyDef name="companyId">
+ <Property></Property>
+ <Property name="label">缁勭粐缂栫爜</Property>
+ </PropertyDef>
+ <PropertyDef name="deptId">
+ <Property></Property>
+ <Property name="label">鎵�灞炲簱鍖�</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("deptPR#getAllData").getResult()}</Property>
+ <Property name="keyProperty">id</Property>
+ <Property name="valueProperty">kqmc</Property>
+ </Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="name">
+ <Property></Property>
+ <Property name="label">鐩戞帶鍚嶇О</Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
+ <PropertyDef name="type">
+ <Property></Property>
+ <Property name="label">璁惧绫诲瀷</Property>
+ <Property name="required">true</Property>
+ <Property name="mapping">
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="code">01</Property>
+ <Property name="name">01-鏋満</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">02</Property>
+ <Property name="name">02-鐞冩満</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">03</Property>
+ <Property name="name">03-鍗婄悆</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">09</Property>
+ <Property name="name">09-鍏朵粬</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ <Property name="keyProperty">code</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="brand">
+ <Property></Property>
+ <Property name="label">璁惧鍝佺墝</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#sysDictData").getResult("CAMERA_BRAND")}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="sn">
+ <Property></Property>
+ <Property name="label">搴忓垪鍙�</Property>
+ </PropertyDef>
+ <PropertyDef name="sort">
+ <Property name="label">閰嶅搴忓彿</Property>
+ <Property name="required">true</Property>
+ <Property name="mapping">
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="code">1</Property>
+ <Property name="name">閰嶅搴忓彿#1</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">2</Property>
+ <Property name="name">閰嶅搴忓彿#2</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ <Property name="keyProperty">code</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="playType">
+ <Property></Property>
+ <Property name="label">鎾斁鏂瑰紡</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#triggerPlayType").getResult()}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
+ <PropertyDef name="loginId">
+ <Property></Property>
+ <Property name="label">甯愬彿</Property>
+ </PropertyDef>
+ <PropertyDef name="pwd">
+ <Property></Property>
+ <Property name="label">瀵嗙爜</Property>
+ </PropertyDef>
+ <PropertyDef name="ip">
+ <Property></Property>
+ <Property name="label">IP鍦板潃</Property>
+ </PropertyDef>
+ <PropertyDef name="controlPort">
+ <Property name="dataType">Integer</Property>
+ <Property name="label">鎺у埗绔彛</Property>
+ <Property name="defaultValue">554</Property>
+ </PropertyDef>
+ <PropertyDef name="webPort">
+ <Property name="dataType">Integer</Property>
+ <Property name="label">WEB绔彛</Property>
+ <Property name="defaultValue">80</Property>
+ </PropertyDef>
+ <PropertyDef name="chanNum">
+ <Property name="dataType">Integer</Property>
+ <Property name="label">閫氶亾鍙�</Property>
+ <Property name="defaultValue">1</Property>
+ </PropertyDef>
+ <PropertyDef name="urlIn">
+ <Property></Property>
+ <Property name="label">鍐呯綉鍦板潃</Property>
+ </PropertyDef>
+ <PropertyDef name="urlOut">
+ <Property></Property>
+ <Property name="label">澶栫綉鍦板潃</Property>
+ </PropertyDef>
+ <PropertyDef name="mediaAddr">
+ <Property></Property>
+ <Property name="label">RTSP鍦板潃</Property>
+ </PropertyDef>
+ <PropertyDef name="snapType">
+ <Property></Property>
+ <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="spjklx">
+ <Property></Property>
+ <Property name="label">涓氬姟绫诲瀷</Property>
+ <Property name="mapping">
+ <Property name="keyProperty">key</Property>
+ <Property name="valueProperty">value</Property>
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="key">1</Property>
+ <Property name="value">1-浠撳唴</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">2</Property>
+ <Property name="value">2-涓氬姟绫�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">3</Property>
+ <Property name="value">3-瀹夐槻绫�</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ </Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
+ <PropertyDef name="spdwlx">
+ <Property></Property>
+ <Property name="label">鐐逛綅绫诲瀷</Property>
+ <Property name="mapping">
+ <Property name="keyProperty">key</Property>
+ <Property name="valueProperty">value</Property>
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="key">1</Property>
+ <Property name="value">1-鍑哄叆鍙�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">2</Property>
+ <Property name="value">2-鎵︽牱鏈�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">3</Property>
+ <Property name="value">3-鍖栭獙瀹�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">4</Property>
+ <Property name="value">4-缁撶畻瀹�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">5</Property>
+ <Property name="value">5-鍦扮瀹�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">6</Property>
+ <Property name="value">6-搴撳尯涓诲共閬�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">7</Property>
+ <Property name="value">7-浠撻棿鐩戞帶</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">8</Property>
+ <Property name="value">8-浠撳唴</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">9</Property>
+ <Property name="value">9-鑽搧鎴垮唴澶�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">10</Property>
+ <Property name="value">10-鍣ㄦ潗瀹ゅ唴澶�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">11</Property>
+ <Property name="value">11-鍒堕珮鐐�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">12</Property>
+ <Property name="value">12-娌瑰簱缃愬尯</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">13</Property>
+ <Property name="value">13-鏀跺彂娌硅澶�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">14</Property>
+ <Property name="value">14-娉垫埧</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">15</Property>
+ <Property name="value">15-娌瑰簱涓昏杈撻�佺閬�</Property>
+ </Entity>
+ <Entity>
+ <Property name="key">16</Property>
+ <Property name="value">16-鍛ㄧ晫</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ </Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
+ <PropertyDef name="posX">
+ <Property></Property>
+ <Property name="label">鍧愭爣X</Property>
+ <Property name="dataType">Double</Property>
+ </PropertyDef>
+ <PropertyDef name="posY">
+ <Property></Property>
+ <Property name="label">鍧愭爣Y</Property>
+ <Property name="dataType">Double</Property>
+ </PropertyDef>
+ <PropertyDef name="screenShow">
+ <Property></Property>
+ <Property name="label">澶у睆鏄剧ず</Property>
+ <Property name="required">false</Property>
+ <Property name="defaultValue">N</Property>
+ <Property name="mapping">
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="code">Y</Property>
+ <Property name="name">灞曠ず</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">N</Property>
+ <Property name="name">涓嶅睍绀�</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ <Property name="keyProperty">code</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="phoneShowTag">
+ <Property></Property>
+ <Property name="label">APP鏄剧ず</Property>
+ <Property name="defaultValue">N</Property>
+ <Property name="mapping">
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="code">Y</Property>
+ <Property name="name">灞曠ず</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">N</Property>
+ <Property name="name">涓嶅睍绀�</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ <Property name="keyProperty">code</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="orderNum">
+ <Property></Property>
+ <Property name="label">鏄剧ず椤哄簭</Property>
+ <Property name="dataType">Integer</Property>
+ </PropertyDef>
+ <PropertyDef name="vld">
+ <Property></Property>
+ <Property name="label">鏄惁浣跨敤</Property>
+ <Property name="defaultValue">Y</Property>
+ <Property name="mapping">
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="code">Y</Property>
+ <Property name="name">鍚敤</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">N</Property>
+ <Property name="name">绂佺敤</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ <Property name="keyProperty">code</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="remark">
+ <Property></Property>
+ <Property name="label">澶囨敞璇存槑</Property>
+ </PropertyDef>
+ <PropertyDef name="createTime">
+ <Property name="dataType">DateTime</Property>
+ <Property name="label">鍒涘缓鏃堕棿</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="createBy">
+ <Property></Property>
+ <Property name="label">鍒涘缓浜�</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="updateTime">
+ <Property name="dataType">DateTime</Property>
+ <Property name="label">鏇存柊鏃堕棿</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="updateBy">
+ <Property></Property>
+ <Property name="label">鏇存柊浜�</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ </DataType>
+ </Model>
+ <View layout="padding:10">
+ <ClientEvent name="onClick">
+/**
+ * 鏌ヨ
+ */
+query = function(){
+ view.get("#dsMain").flushAsync();
+}
+/**
+ * 璁块棶
+ */
+showWeb = function(){
+ var cur = view.get("#dsMain.data:#");
+ if(!cur.get("ip")){
+ $alert("娌℃湁閰嶇疆璁块棶IP锛屾棤娉曡闂��");
+ return;
+ }
+ if(!cur.get("webPort")){
+ $alert("娌℃湁閰嶇疆璁块棶绔彛锛屾棤娉曡闂��");
+ return;
+ }
+ var url = "http://"+cur.get("ip")+":"+cur.get("webPort");
+ window.open(url);
+};
+
+/**
+ * 棰勮
+ */
+showVideo = function(){
+ var cur = view.get("#dsMain.data:#");
+ var playType = cur.get("playType");
+ 
+ if(!playType){
+ $alert("娌℃湁閰嶇疆鎾斁鏂瑰紡锛屾棤娉曢瑙堛��");
+ return;
+ }
+ if(!cur.get("ip")){
+ $alert("娌℃湁閰嶇疆鍐呴儴璁块棶IP锛屾棤娉曡闂��");
+ return;
+ }
+ if(!cur.get("controlPort")){
+ $alert("娌℃湁閰嶇疆鍐呴儴鎺у埗绔彛锛屾棤娉曡闂��");
+ return;
+ }
+ if(!cur.get("loginId")){
+ $alert("娌℃湁閰嶇疆鐢ㄦ埛鍚嶏紝鏃犳硶璁块棶銆�");
+ return;
+ }
+ if (!cur.get("pwd")) {
+ $alert("娌℃湁閰嶇疆瀵嗙爜锛屾棤娉曡闂��");
+ return;
+ }
+ 
+ var url = "./basic/security/video-play?cameraId="+cur.get("id")+"&playType="+playType+"&time="+ new Date().getTime();
+ 
+ view.get("#iFrameVideo").set("path",url);
+ view.get("#dialogVideo").show();
+};
+</ClientEvent>
+ <Property name="packages">font-awesome,css-common</Property>
+ <DataSet id="dsMain">
+ <Property name="loadMode">lazy</Property>
+ <Property name="dataProvider">secCameraPR#listPageCamera</Property>
+ <Property name="pageSize">20</Property>
+ <Property name="dataType">[dtSecCamera]</Property>
+ </DataSet>
+ <DataSet id="dsParam">
+ <ClientEvent name="onReady">self.insert({});</ClientEvent>
+ <Property name="dataType">dtSecCameraParam</Property>
+ </DataSet>
+ <Container>
+ <Property name="className">c-param</Property>
+ <AutoForm>
+ <Property name="cols">*,*,*,*,90,90</Property>
+ <Property name="dataSet">dsParam</Property>
+ <Property name="labelAlign">right</Property>
+ <Property name="labelWidth">100</Property>
+ <AutoFormElement>
+ <Property name="name">name</Property>
+ <Property name="property">name</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">brand</Property>
+ <Property name="property">brand</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">spjklx</Property>
+ <Property name="property">spjklx</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">spdwlx</Property>
+ <Property name="property">spdwlx</Property>
+ <Editor/>
+ </AutoFormElement>
+ <Button>
+ <ClientEvent name="onClick">var param = view.get("#dsParam.data");
+view.get("#dsMain").set("parameter",param.toJSON()).flushAsync();</ClientEvent>
+ <Property name="caption">鎼滅储</Property>
+ <Property name="iconClass">fa fa-search</Property>
+ <Property name="exClassName">btn-q1</Property>
+ </Button>
+ <Button>
+ <ClientEvent name="onClick">view.get("#dsParam").setData({});</ClientEvent>
+ <Property name="caption">閲嶇疆</Property>
+ <Property name="exClassName">btn-q2</Property>
+ <Property name="iconClass">fa fa-refresh</Property>
+ </Button>
+ </AutoForm>
+ </Container>
+ <Container>
+ <Property name="className">c-data</Property>
+ <ToolBar>
+ <ToolBarButton>
+ <ClientEvent name="onClick">view.get("#dsMain").insert();
+ view.get("#dialogMain").show();</ClientEvent>
+ <Property name="caption">鏂板</Property>
+ <Property name="exClassName">btn1</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-plus</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <ClientEvent name="onClick">var data = view.get("#dataGridCamera").get("selection");
+if(data){
+ view.get("#dialogMain").show();
+}else{
+ $notify("璇烽�夋嫨闇�瑕佷慨鏀圭殑鐩戞帶淇℃伅鈥︹��");
+}</ClientEvent>
+ <Property name="caption">淇敼</Property>
+ <Property name="exClassName">btn2</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-pencil-square-o</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <ClientEvent name="onClick">var select = view.get("#dataGridCamera").get("selection");
+if(select){
+ view.get("#ajaxDel").set("parameter",select).execute(function(result){
+ if(result){
+ $alert(result);
+ }else{
+ query();
+ }
+ });
+ }else{
+ $notify("璇烽�夋嫨闇�瑕佸垹闄ょ殑鐩戞帶淇℃伅鈥︹��");
+}</ClientEvent>
+ <Property name="caption">鍒犻櫎</Property>
+ <Property name="exClassName">btn3</Property>
+ <Property name="width">100</Property>
+ <Property name="iconClass">fa fa-times</Property>
+ </ToolBarButton>
+ <ToolBarButton>
+ <Property name="caption">鍒锋柊缂撳瓨</Property>
+ <Property name="exClassName">btn4</Property>
+ <Property name="iconClass">fa fa-refresh</Property>
+ <Property name="width">100</Property>
+ <Property name="action">refreshCache</Property>
+ </ToolBarButton>
+ </ToolBar>
+ <DataGrid id="dataGridCamera" layoutConstraint="padding:8">
+ <ClientEvent name="onDataRowClick">view.get("#dataGridCamera").set("selection",arg.data);</ClientEvent>
+ <Property name="dataSet">dsMain</Property>
+ <Property name="selectionMode">singleRow</Property>
+ <Property name="readOnly">true</Property>
+ <RowSelectorColumn/>
+ <RowNumColumn>
+ <Property name="width">50</Property>
+ </RowNumColumn>
+ <DataColumn name="name">
+ <Property name="property">name</Property>
+ </DataColumn>
+ <DataColumn name="type">
+ <Property name="property">type</Property>
+ <Property name="align">center</Property>
+ <Property name="width">90</Property>
+ </DataColumn>
+ <DataColumn name="spjklx">
+ <Property name="property">spjklx</Property>
+ <Property name="align">center</Property>
+ <Property name="width">90</Property>
+ </DataColumn>
+ <DataColumn name="spdwlx">
+ <Property name="property">spdwlx</Property>
+ <Property name="align">center</Property>
+ <Property name="width">100</Property>
+ </DataColumn>
+ <DataColumn>
+ <Property name="property">playType</Property>
+ <Property name="align">center</Property>
+ <Property name="name">playType</Property>
+ <Property name="width">160</Property>
+ </DataColumn>
+ <DataColumn>
+ <Property name="property">snapType</Property>
+ <Property name="align">center</Property>
+ <Property name="name">snapType</Property>
+ <Property name="width">160</Property>
+ </DataColumn>
+ <DataColumn name="ip">
+ <Property name="property">ip</Property>
+ <Property name="align">center</Property>
+ <Property name="width">120</Property>
+ </DataColumn>
+ <DataColumn name="controlPort">
+ <Property name="property">controlPort</Property>
+ <Property name="align">center</Property>
+ <Property name="width">100</Property>
+ </DataColumn>
+ <DataColumn name="chanNum">
+ <Property name="property">chanNum</Property>
+ <Property name="align">center</Property>
+ <Property name="width">80</Property>
+ </DataColumn>
+ <DataColumn name="brand">
+ <Property name="property">brand</Property>
+ <Property name="align">center</Property>
+ <Property name="width">100</Property>
+ </DataColumn>
+ <DataColumn name="updateTime">
+ <Property name="property">updateTime</Property>
+ <Property name="align">center</Property>
+ <Property name="width">160</Property>
+ </DataColumn>
+ <DataColumn>
+ <ClientEvent name="onRenderCell">arg.dom.innerHTML = "<a href='javascript:;' onClick='showVideo()' class='a-btn1'>棰勮</a>&nbsp;|&nbsp;<a href='javascript:;' onClick='showWeb()' class='a-btn3'>璁块棶</a>";</ClientEvent>
+ <Property name="width">160</Property>
+ <Property name="caption">鎿嶄綔</Property>
+ <Property name="align">center</Property>
+ <Editor/>
+ </DataColumn>
+ </DataGrid>
+ </Container>
+ <Container layoutConstraint="bottom">
+ <Property name="className">c-bottom</Property>
+ <DataPilot layoutConstraint="right">
+ <Property name="dataSet">dsMain</Property>
+ <Property name="itemCodes">pageSize,pages</Property>
+ </DataPilot>
+ </Container>
+ <Dialog id="dialogMain" layout="regionPadding:8">
+ <Property name="iconClass">fa fa-tasks</Property>
+ <Property name="width">1200</Property>
+ <Property name="caption">鐩戞帶淇℃伅</Property>
+ <Property name="closeable">false</Property>
+ <Buttons>
+ <Button>
+ <ClientEvent name="onClick">var data = view.get("#dsMain.data:#");
+if(data.validate() != 'ok'){
+ $notify("鏁版嵁鏍¢獙澶辫触锛侊紒");
+ return;
+}
+view.get("#uaAction").set("parameter",data).execute(function(){
+ self.get("parent").hide();
+ query();
+});</ClientEvent>
+ <Property name="caption">淇濆瓨</Property>
+ <Property name="iconClass">fa fa-check-circle</Property>
+ <Property name="exClassName">btn1</Property>
+ <Property name="width">120</Property>
+ </Button>
+ <Button>
+ <ClientEvent name="onClick">var cur = view.get("#dsMain.data:#");
+ if(cur) cur.cancel();
+ self.get("parent").hide();</ClientEvent>
+ <Property name="caption">鍙栨秷</Property>
+ <Property name="exClassName">btn3</Property>
+ <Property name="iconClass">fa fa-times-circle</Property>
+ <Property name="width">120</Property>
+ </Button>
+ </Buttons>
+ <Children>
+ <FieldSet layout="padding:5">
+ <Property name="caption">鍩烘湰淇℃伅</Property>
+ <Buttons/>
+ <Children>
+ <AutoForm>
+ <Property name="dataSet">dsMain</Property>
+ <Property name="cols">*,*,*,*</Property>
+ <Property name="labelWidth">100</Property>
+ <Property name="labelAlign">right</Property>
+ <Property name="labelSeparator">锛�</Property>
+ <AutoFormElement>
+ <Property name="name">name</Property>
+ <Property name="property">name</Property>
+ <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">deptId</Property>
+ <Property name="property">deptId</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">loginId</Property>
+ <Property name="property">loginId</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">pwd</Property>
+ <Property name="property">pwd</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">chanNum</Property>
+ <Property name="property">chanNum</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">spjklx</Property>
+ <Property name="property">spjklx</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">ip</Property>
+ <Property name="property">ip</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">controlPort</Property>
+ <Property name="property">controlPort</Property>
+ <Editor/>
+ </AutoFormElement>
+ <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>
+ <Property name="name">screenShow</Property>
+ <Property name="property">screenShow</Property>
+ <Editor>
+ <RadioGroup>
+ <RadioButton>
+ <Property name="text">灞曠ず</Property>
+ <Property name="value">Y</Property>
+ </RadioButton>
+ <RadioButton>
+ <Property name="text">涓嶅睍绀�</Property>
+ <Property name="value">N</Property>
+ </RadioButton>
+ </RadioGroup>
+ </Editor>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">phoneShowTag</Property>
+ <Property name="property">phoneShowTag</Property>
+ <Editor>
+ <RadioGroup>
+ <RadioButton>
+ <Property name="text">灞曠ず</Property>
+ <Property name="value">Y</Property>
+ </RadioButton>
+ <RadioButton>
+ <Property name="text">涓嶅睍绀�</Property>
+ <Property name="value">N</Property>
+ </RadioButton>
+ </RadioGroup>
+ </Editor>
+ </AutoFormElement>
+ </AutoForm>
+ </Children>
+ </FieldSet>
+ <FieldSet layout="padding:5">
+ <Property name="caption">鎾斁閰嶇疆</Property>
+ <Buttons/>
+ <Children>
+ <AutoForm>
+ <Property name="dataSet">dsMain</Property>
+ <Property name="cols">*,*,*,*,*</Property>
+ <Property name="labelWidth">100</Property>
+ <Property name="labelAlign">right</Property>
+ <Property name="labelSeparator">锛�</Property>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">playType</Property>
+ <Property name="property">playType</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:3">
+ <Property name="name">urlIn</Property>
+ <Property name="property">urlIn</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">snapType</Property>
+ <Property name="property">snapType</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:3">
+ <Property name="name">urlOut</Property>
+ <Property name="property">urlOut</Property>
+ <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>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:3">
+ <Property name="name">mediaAddr</Property>
+ <Property name="property">mediaAddr</Property>
+ <Property name="trigger">triggerMedia</Property>
+ <Editor>
+ <TextEditor id="mediaAddr">
+ <Property name="blankText"> -- 鐐瑰嚮鍙充晶閫夋嫨锛屾垨鑰呮墜鍔ㄥ~鍐� --</Property>
+ </TextEditor>
+ </Editor>
+ </AutoFormElement>
+ </AutoForm>
+ </Children>
+ </FieldSet>
+ <FieldSet layout="padding:5">
+ <Property name="caption">鍏朵粬淇℃伅</Property>
+ <Buttons/>
+ <Children>
+ <AutoForm>
+ <Property name="dataSet">dsMain</Property>
+ <Property name="cols">*,*,*</Property>
+ <Property name="labelWidth">100</Property>
+ <Property name="labelAlign">right</Property>
+ <Property name="labelSeparator">锛�</Property>
+ <AutoFormElement>
+ <Property name="name">vld</Property>
+ <Property name="property">vld</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">orderNum</Property>
+ <Property name="property">orderNum</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">updateTime</Property>
+ <Property name="property">updateTime</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:2">
+ <Property name="name">remark</Property>
+ <Property name="property">remark</Property>
+ <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>
+ </Children>
+ </FieldSet>
+ </Children>
+ <Tools/>
+ </Dialog>
+ <UpdateAction id="uaAction">
+ <Property name="dataResolver">secCameraPR#saveCamera</Property>
+ <UpdateItem>
+ <Property name="dataSet">dsMain</Property>
+ <Property name="dataPath">[#current]</Property>
+ </UpdateItem>
+ </UpdateAction>
+ <AjaxAction id="ajaxDel">
+ <Property name="confirmMessage">纭畾瑕佸垹闄ゅ悧锛�</Property>
+ <Property name="service">secCameraPR#delCamera</Property>
+ </AjaxAction>
+ <Dialog id="dialogVideo">
+ <Property name="width">1320</Property>
+ <Property name="caption">瑙嗛棰勮</Property>
+ <Property name="contentOverflow">hidden</Property>
+ <Property name="height">620</Property>
+ <Buttons/>
+ <Children>
+ <IFrame id="iFrameVideo" layoutConstraint="center"/>
+ </Children>
+ <Tools/>
+ </Dialog>
+ <AjaxAction id="refreshCache">
+ <Property name="service">secCameraPR#refreshCache</Property>
+ <Property name="successMessage">缂撳瓨鏇存柊鎴愬姛锛�</Property>
+ </AjaxAction>
+ <Trigger id="triggerMedia">
+ <ClientEvent name="onExecute">view.get("#dialogMeidaSelect").show();
+</ClientEvent>
+ </Trigger>
+ <Dialog id="dialogMeidaSelect" layout="vbox padding:10">
+ <Property name="width">650</Property>
+ <Property name="caption">娴佸獟浣撳湴鍧�閫夋嫨</Property>
+ <Buttons/>
+ <Children>
+ <Container>
+ <Label>
+ <Property name="text">娴峰悍RTSP锛堟棫鐗�-涓荤爜娴侊級</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text1">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/h264/ch{4}/main/av_stream</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text1.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">娴峰悍RTSP锛堟棫鐗�-瀛愮爜娴侊級</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text2">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/mpeg4/ch{4}/sub/av_stream</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text2.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">娴峰悍RTSP锛堟柊鐗�-涓荤爜娴侊級</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text3">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/Streaming/Channels/{4}01</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text3.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">娴峰悍RTSP锛堟柊鐗�-瀛愮爜娴侊級</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text4">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/Streaming/Channels/{4}02</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text4.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">澶у崕RTSP锛堜富鐮佹祦锛�</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text5">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/cam/realmonitor?channel={4}&subtype=0</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text5.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">澶у崕RTSP锛堣緟鐮佹祦锛�</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text6">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/cam/realmonitor?channel={4}&subtype=1</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text6.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">闆勮繄RTSP锛堜富鐮佹祦锛�</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text7">
+ <Property name="text">rtsp://{2}:{3}/user={0}&password={1}&channel={4}&stream=0.sdp?real_stream</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text7.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">闆勮繄RTSP锛堟鐮佹祦锛�</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text8">
+ <Property name="text">rtsp://{2}:{3}/user={0}&password={1}&channel={4}&stream=1.sdp?real_stream</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text8.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">涓夋槦RTSP锛堥珮鐮佺巼锛�</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text9">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/onvif/profile2/media.smp</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text9.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">涓夋槦RTSP锛堜綆鐮佺巼锛�</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text10">
+ <Property name="text">rtsp://{0}:{1}@{2}:{3}/onvif/profile3/media.smp</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text10.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ <Container>
+ <Label>
+ <Property name="text">瀹囪RTSP</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label id="text11">
+ <Property name="text">rtsp://{0}:{1}@{2}/media/video1/multicast</Property>
+ </Label>
+ <Button layoutConstraint="right">
+ <ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text11.text"));
+view.get("#dialogMeidaSelect").hide();
+</ClientEvent>
+ <Property name="caption">閫夋嫨</Property>
+ <Property name="iconClass">fa fa-check</Property>
+ </Button>
+ </Container>
+ </Children>
+ <Tools/>
+ </Dialog>
+ <AjaxAction id="ajaxRemoteMedia">
+ <Property name="confirmMessage">纭畾瑕佸悓姝ヤ箞锛�</Property>
+ <Property name="service">secCameraPR#flushByMedia</Property>
+ </AjaxAction>
+ </View>
+</ViewConfig>
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCameraPR.java b/fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCameraPR.java
new file mode 100644
index 0000000..5190e2f
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCameraPR.java
@@ -0,0 +1,183 @@
+package com.fzzy.igds;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.DataResolver;
+import com.bstek.dorado.annotation.Expose;
+import com.bstek.dorado.data.provider.Page;
+import com.fzzy.igds.domain.Camera;
+import com.fzzy.igds.service.SecCameraService;
+import com.fzzy.igds.utils.ContextUtil;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Component;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/28 10:48
+ */
+@Slf4j
+@Component
+public class SecCameraPR {
+
+ @Autowired
+ private SecCameraService secCameraService;
+
+ /**
+ * secCameraPR#listPageCamera 鏍规嵁鏉′欢鑾峰彇鎵�鏈夌殑鎽勫儚鏈洪厤缃俊鎭�
+ *
+ * @param param
+ */
+ @DataProvider
+ public void listPageCamera(Page<Camera> page, Map<String, Object> param) {
+ org.springframework.data.domain.Page<Camera> japPage = pageCamera(page, param);
+ page.setEntityCount((int) japPage.getTotalElements());
+ page.setEntities(japPage.getContent());
+ }
+
+ public org.springframework.data.domain.Page<Camera> pageCamera(Page<Camera> page, Map<String, Object> param) {
+ if (null == param) {
+ param = new HashMap<>();
+ }
+ Map<String, Object> finalParam = param;
+
+ //澶氬弬鏁板垎椤垫煡璇�
+ Pageable pageable = PageRequest.of(page.getPageNo() - 1, page.getPageSize(), Sort.Direction.ASC, Camera.SORT_PROP);
+ Specification<Camera> specification = new Specification<Camera>() {
+ private static final long serialVersionUID = 1L;
+
+ public Predicate toPredicate(Root<Camera> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+ List<Predicate> predicates = new ArrayList<Predicate>(); //鎵�鏈夌殑鏂█
+
+ Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId());
+ predicates.add(predicate1);
+ Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null));
+ predicates.add(predicate2);
+
+ String key = (String) finalParam.get("bizType");
+ if (StringUtils.isNotEmpty(key)) {
+ Predicate predicate3 = cb.equal(root.get("bizType"), key);
+ predicates.add(predicate3);
+ }
+ key = (String) finalParam.get("name");
+ if (StringUtils.isNotEmpty(key)) {
+ Predicate predicate4 = cb.like(root.get("name"), "%" + key + "%");
+ predicates.add(predicate4);
+ }
+ key = (String) finalParam.get("brand");
+ if (StringUtils.isNotEmpty(key)) {
+ Predicate predicate5 = cb.equal(root.get("brand"), key);
+ predicates.add(predicate5);
+ }
+ key = (String) finalParam.get("spjklx");
+ if (StringUtils.isNotEmpty(key)) {
+ Predicate predicate5 = cb.equal(root.get("spjklx"), key);
+ predicates.add(predicate5);
+ }
+ key = (String) finalParam.get("spdwlx");
+ if (StringUtils.isNotEmpty(key)) {
+ Predicate predicate5 = cb.equal(root.get("spdwlx"), key);
+ predicates.add(predicate5);
+ }
+ return cb.and(predicates.toArray(new Predicate[0]));
+ }
+ };
+ org.springframework.data.domain.Page<Camera> japPage = secCameraService.findAll(specification, pageable);
+ return japPage;
+ }
+
+ /**
+ * secCameraPR#listCamera 鑾峰彇鎵�鏈夌殑鎽勫儚鏈洪厤缃俊鎭�
+ * ${dorado.getDataProvider("secCameraPR#listCamera").getResult()}
+ * @return
+ */
+ @DataProvider
+ public List<Camera> listCamera() {
+ return secCameraService.listCamera();
+ }
+
+ /**
+ * secCameraPR#saveCamera
+ *
+ * @param data
+ */
+ @DataResolver
+ public void saveCamera(Camera data) {
+ Camera secCamera = new Camera();
+ BeanUtils.copyProperties(data, secCamera);
+ secCameraService.saveCamera(secCamera);
+ }
+
+ /**
+ * secCameraPR#delCamera
+ *
+ * @param data
+ * @return
+ */
+ @Expose
+ public String delCamera(Camera data) {
+ Camera secCamera = new Camera();
+ BeanUtils.copyProperties(data, secCamera);
+ return secCameraService.delCamera(secCamera);
+ }
+
+ /***
+ * secCameraPR#refreshCache
+ * @return
+ */
+ @Expose
+ public String refreshCache() {
+ secCameraService.refreshCache(ContextUtil.getCompanyId());
+ return null;
+ }
+
+ /***
+ * securityPR#flushByMedia
+ *
+ * 鑾峰彇鎽勫儚澶村垪琛ㄤ俊鎭�
+ * @return
+ */
+ @Expose
+ public String flushByMedia(String playType) {
+
+ if (null == playType){
+ return "娌℃湁閫夋嫨鎾斁鏂瑰紡锛屾墽琛屽け璐�";
+ }
+
+// try {
+// if (CameraUtil.PLAY_TYPE_MEDIA_HIK.equals(playType)) {
+// ApiCameraData apiCameraData = new ApiCameraData();
+// apiCameraData.setCompanyId(ContextUtil.getCompanyId());
+// apiCameraData.setDeptId(ContextUtil.subDeptId(null));
+// apiCameraData.setPlayType(playType);
+// List<SecCameraDto> list = apiCameraManager.getApiCameraService(playType).searchCamera(apiCameraData);
+// if(list == null){
+// return "鍚屾澶辫触锛�";
+// }else {
+// return "鍚屾鎴愬姛锛�";
+// }
+// }
+ return "褰撳墠鎾斁鏂瑰紡娌℃湁姝ゅ姛鑳斤紒";
+//
+// }catch (Exception e){
+// log.error("-----鍚屾鎽勫儚澶村垪琛ㄥけ璐�-----鍘熷洜={}", e.toString());
+// return "杩滅▼鎺ュ彛鏈嶅姟寮傚父锛岃鏍告煡鍚庨噸璇曪紒";
+// }
+
+ }
+
+}
diff --git a/fzzy-igdss-view/src/main/java/models/core.model.xml b/fzzy-igdss-view/src/main/java/models/core.model.xml
index 1bfba3a..e6b326d 100644
--- a/fzzy-igdss-view/src/main/java/models/core.model.xml
+++ b/fzzy-igdss-view/src/main/java/models/core.model.xml
@@ -163,9 +163,9 @@
<Property></Property>
<Property name="label">鎵�灞炲垎搴�</Property>
<Property name="mapping">
- <Property name="mapValues">${dorado.getDataProvider("deptPR#getData").getResult()}</Property>
- <Property name="keyProperty">deptId</Property>
- <Property name="valueProperty">deptName</Property>
+ <Property name="mapValues">${dorado.getDataProvider("deptPR#getAllData").getResult()}</Property>
+ <Property name="keyProperty">id</Property>
+ <Property name="valueProperty">kqmc</Property>
</Property>
<Property name="readOnly">true</Property>
</PropertyDef>
@@ -433,4 +433,482 @@
<Property name="readOnly">true</Property>
</PropertyDef>
</DataType>
+ <DataType name="dtDeviceSer">
+ <Property name="creationType">com.fzzy.igds.domain.DeviceSer</Property>
+ <PropertyDef name="id">
+ <Property></Property>
+ <Property name="label">鍒嗘満缂栫爜</Property>
+ </PropertyDef>
+ <PropertyDef name="deptId">
+ <Property></Property>
+ <Property name="label">鎵�灞炲簱鍖�</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("deptPR#getAllData").getResult()}</Property>
+ <Property name="keyProperty">id</Property>
+ <Property name="valueProperty">kqmc</Property>
+ </Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
+ <PropertyDef name="companyId">
+ <Property></Property>
+ <Property name="label">缁勭粐缂栫爜</Property>
+ </PropertyDef>
+ <PropertyDef name="sn">
+ <Property></Property>
+ <Property name="label">搴忓垪鍙�</Property>
+ </PropertyDef>
+ <PropertyDef name="name">
+ <Property></Property>
+ <Property name="label">鍒嗘満鍚嶇О</Property>
+ </PropertyDef>
+ <PropertyDef name="ip">
+ <Property></Property>
+ <Property name="label">鍒嗘満IP</Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
+ <PropertyDef name="port">
+ <Property name="dataType">Integer</Property>
+ <Property name="label">鍒嗘満绔彛</Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
+ <PropertyDef name="type">
+ <Property></Property>
+ <Property name="label">鍒嗘満绫诲瀷</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#sysDictData").getResult("SER_TYPE")}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="status">
+ <Property></Property>
+ <Property name="label">鏄惁鍦ㄧ嚎</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#sysDictData").getResult("sys_yes_no")}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="controlModel">
+ <Property></Property>
+ <Property name="label">鎿嶄綔妯″紡</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#controlModel").getResult()}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="networkType">
+ <Property></Property>
+ <Property name="label">缃戠粶妯″紡</Property>
+ <Property name="mapping">
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="code">01</Property>
+ <Property name="name">鏈夌嚎妯″紡</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">02</Property>
+ <Property name="name">鏃犵嚎妯″紡</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ <Property name="keyProperty">code</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ <Property name="required">false</Property>
+ </PropertyDef>
+ <PropertyDef name="protocol">
+ <Property></Property>
+ <Property name="label">鍒嗘満鍗忚</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#sysDictData").getResult("PROTOCOL")}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="isMoreDepot">
+ <Property></Property>
+ <Property name="label">澶氫粨骞跺彂</Property>
+ <Property name="mapping">
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="code">Y</Property>
+ <Property name="name">鏄�</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">N</Property>
+ <Property name="name">鍚�</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ <Property name="keyProperty">code</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="producer">
+ <Property></Property>
+ <Property name="label">鍘傚晢鍚嶇О</Property>
+ </PropertyDef>
+ <PropertyDef name="remark">
+ <Property></Property>
+ <Property name="label">澶囨敞</Property>
+ </PropertyDef>
+ <PropertyDef name="orderNum">
+ <Property name="dataType">Integer</Property>
+ <Property name="label">椤哄簭鍙�</Property>
+ </PropertyDef>
+ <PropertyDef name="contactPhone">
+ <Property></Property>
+ <Property name="label">鑱旂郴鐢佃瘽</Property>
+ </PropertyDef>
+ <PropertyDef name="powerModel">
+ <Property></Property>
+ <Property name="label">渚涚數妯″紡</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#sysDictData").getResult("POWER_TYPE")}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="cableStart">
+ <Property name="dataType">int</Property>
+ <Property name="label">寮�濮嬪垪</Property>
+ </PropertyDef>
+ <PropertyDef name="cableZ">
+ <Property name="dataType">int</Property>
+ <Property name="label">灞傞厤缃�</Property>
+ </PropertyDef>
+ <PropertyDef name="cableY">
+ <Property name="dataType">int</Property>
+ <Property name="label">琛岄厤缃�</Property>
+ </PropertyDef>
+ <PropertyDef name="cableX">
+ <Property name="dataType">int</Property>
+ <Property name="label">鍒楅厤缃�</Property>
+ </PropertyDef>
+ <PropertyDef name="cableType">
+ <Property></Property>
+ <Property name="label">鐢电紗绫诲瀷</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#sysDictData").getResult("CABLE_TYPE")}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="cableFormat">
+ <Property></Property>
+ <Property name="label">鐢电紗鍒跺紡</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#sysDictData").getResult("CABLE_FORMAT")}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="orgId">
+ <Property></Property>
+ <Property name="label">缁勭粐鍙�</Property>
+ </PropertyDef>
+ <PropertyDef name="createTime">
+ <Property name="dataType">DateTime</Property>
+ <Property name="label">鍒涘缓鏃堕棿</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="createBy">
+ <Property></Property>
+ <Property name="label">鍒涘缓浜�</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="updateTime">
+ <Property name="dataType">DateTime</Property>
+ <Property name="label">鏇存柊鏃堕棿</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="updateBy">
+ <Property></Property>
+ <Property name="label">鏇存柊浜�</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ </DataType>
+ <DataType name="dtDeviceIot">
+ <Property name="creationType">com.fzzy.igds.domain.DeviceIot</Property>
+ <PropertyDef name="id">
+ <Property></Property>
+ <Property name="label">璁惧缂栫爜</Property>
+ </PropertyDef>
+ <PropertyDef name="deptId">
+ <Property></Property>
+ <Property name="label">鎵�灞炲簱鍖�</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("deptPR#getAllData").getResult()}</Property>
+ <Property name="keyProperty">id</Property>
+ <Property name="valueProperty">kqmc</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="companyId">
+ <Property></Property>
+ <Property name="label">缁勭粐缂栫爜</Property>
+ </PropertyDef>
+ <PropertyDef name="depotId">
+ <Property></Property>
+ <Property name="label">鎵�灞炰粨搴�</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("depotPR#getAllCache").getResult()}</Property>
+ <Property name="keyProperty">id</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="name">
+ <Property></Property>
+ <Property name="label">鍚嶇О</Property>
+ </PropertyDef>
+ <PropertyDef name="passCode">
+ <Property name="dataType">int</Property>
+ <Property name="label">璁惧缂栧彿</Property>
+ </PropertyDef>
+ <PropertyDef name="serId">
+ <Property></Property>
+ <Property name="label">鎵�灞炲垎鏈�</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("deviceSerPR#getAllSerCache").getResult()}</Property>
+ <Property name="keyProperty">id</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="type">
+ <Property></Property>
+ <Property name="label">璁惧绫诲瀷</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#sysDictData").getResult("DEVICE_IOT_TYPE")}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="remark">
+ <Property></Property>
+ <Property name="label">澶囨敞</Property>
+ </PropertyDef>
+ <PropertyDef name="posX">
+ <Property name="dataType">Double</Property>
+ <Property name="label">X鍧愭爣</Property>
+ </PropertyDef>
+ <PropertyDef name="posY">
+ <Property name="dataType">Double</Property>
+ <Property name="label">Y鍧愭爣</Property>
+ </PropertyDef>
+ <PropertyDef name="createTime">
+ <Property name="dataType">DateTime</Property>
+ <Property name="label">鍒涘缓鏃堕棿</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="createBy">
+ <Property></Property>
+ <Property name="label">鍒涘缓浜�</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="updateTime">
+ <Property name="dataType">DateTime</Property>
+ <Property name="label">鏇存柊鏃堕棿</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="updateBy">
+ <Property></Property>
+ <Property name="label">鏇存柊浜�</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ </DataType>
+ <DataType name="dtDepotConf">
+ <Property name="creationType">com.fzzy.igds.domain.DepotConf</Property>
+ <PropertyDef name="depotId">
+ <Property></Property>
+ <Property name="label">鎵�灞炰粨搴�</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("depotPR#getAllCache").getResult()}</Property>
+ <Property name="keyProperty">id</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="deptId">
+ <Property></Property>
+ <Property name="label">鎵�灞炲簱鍖�</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("deptPR#getAllData").getResult()}</Property>
+ <Property name="keyProperty">id</Property>
+ <Property name="valueProperty">kqmc</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="companyId">
+ <Property></Property>
+ <Property name="label">缁勭粐缂栫爜</Property>
+ </PropertyDef>
+ <PropertyDef name="grainSer">
+ <Property></Property>
+ <Property name="label">绮儏鍒嗘満</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("deviceSerPR#getAllSerCache").getResult()}</Property>
+ <Property name="keyProperty">id</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
+ <PropertyDef name="thSer">
+ <Property></Property>
+ <Property name="label">娓╂箍搴﹀垎鏈�</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("deviceSerPR#getAllSerCache").getResult()}</Property>
+ <Property name="keyProperty">id</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="grainFreq">
+ <Property></Property>
+ <Property name="label">淇濆瓨棰戠巼</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#sysDictData").getResult("GRAIN_FREQ")}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="thConf">
+ <Property></Property>
+ <Property name="label">娓╂箍搴﹂�氶亾</Property>
+ </PropertyDef>
+ <PropertyDef name="cableRule">
+ <Property></Property>
+ <Property name="label">甯冪嚎瑙勫垯</Property>
+ </PropertyDef>
+ <PropertyDef name="cableCir">
+ <Property></Property>
+ <Property name="label">绛掍粨灞傝鍒�</Property>
+ </PropertyDef>
+ <PropertyDef name="cableCone">
+ <Property name="label">绛掍粨閿ュ舰</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#triggerCableCone").getResult()}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="cableStart">
+ <Property name="dataType">int</Property>
+ <Property name="label">鐢电紗寮�濮嬪垪</Property>
+ </PropertyDef>
+ <PropertyDef name="cableEnd">
+ <Property name="dataType">int</Property>
+ <Property name="label">鐢电紗鎴嚦鍒�</Property>
+ </PropertyDef>
+ <PropertyDef name="startOrientation">
+ <Property></Property>
+ <Property name="label">鐢电紗璧峰鏂逛綅</Property>
+ <Property name="mapping">
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#triggerStartOrientation").getResult()}</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="startDirection">
+ <Property name="label">鐢电紗甯冪嚎鏂瑰悜</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#triggerStartDirection").getResult()}</Property>
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="startPoint">
+ <Property name="label">鐢电紗璧峰鐐逛綅</Property>
+ <Property name="mapping">
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#triggerStartPoint").getResult()}</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="startConvert">
+ <Property name="label">灞傝杞崲</Property>
+ <Property name="mapping">
+ <Property name="keyProperty">dictValue</Property>
+ <Property name="valueProperty">dictLabel</Property>
+ <Property name="mapValues">${dorado.getDataProvider("dicPR#triggerStartConvert").getResult()}</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="tempMax">
+ <Property name="dataType">Double</Property>
+ <Property name="label">娓╁害涓婇檺</Property>
+ </PropertyDef>
+ <PropertyDef name="temperature">
+ <Property name="dataType">Double</Property>
+ <Property name="label">娓╁樊闃堝��</Property>
+ </PropertyDef>
+ <PropertyDef name="startRow">
+ <Property name="dataType">Integer</Property>
+ <Property name="label">璧峰鏍瑰彿</Property>
+ </PropertyDef>
+ <PropertyDef name="grainAuto">
+ <Property></Property>
+ <Property name="label">绮儏浼樺寲</Property>
+ <Property name="mapping">
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="code">Y</Property>
+ <Property name="name">鏄�</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">N</Property>
+ <Property name="name">鍚�</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ <Property name="keyProperty">code</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="depotName">
+ <Property></Property>
+ </PropertyDef>
+ <PropertyDef name="depotType">
+ <Property></Property>
+ </PropertyDef>
+ <PropertyDef name="isOnlyTH">
+ <Property></Property>
+ <Property name="label">绮儏绫诲瀷</Property>
+ <Property name="mapping">
+ <Property name="mapValues">
+ <Collection>
+ <Entity>
+ <Property name="code">Y</Property>
+ <Property name="name">娓╂箍搴﹁澶�</Property>
+ </Entity>
+ <Entity>
+ <Property name="code">N</Property>
+ <Property name="name">绮儏鐢电紗</Property>
+ </Entity>
+ </Collection>
+ </Property>
+ <Property name="keyProperty">code</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ </PropertyDef>
+ <PropertyDef name="createTime">
+ <Property name="dataType">DateTime</Property>
+ <Property name="label">鍒涘缓鏃堕棿</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="createBy">
+ <Property></Property>
+ <Property name="label">鍒涘缓浜�</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="updateTime">
+ <Property name="dataType">DateTime</Property>
+ <Property name="label">鏇存柊鏃堕棿</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ <PropertyDef name="updateBy">
+ <Property></Property>
+ <Property name="label">鏇存柊浜�</Property>
+ <Property name="readOnly">true</Property>
+ </PropertyDef>
+ </DataType>
</Model>
--
Gitblit v1.9.3