fuliqi
2025-01-09 15a1b8a6cda205c10323b25578374e20165f3ff6
OSD导出、点位管理新增用户名密码
12个文件已修改
136 ■■■■ 已修改文件
ycl-common/src/main/java/constant/PointHeaderConstant.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TMonitor.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwPoint.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/excel/PointExport.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/form/YwPointForm.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/MonitorTask.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/OsdTask.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/constant/PointHeaderConstant.java
@@ -19,9 +19,12 @@
    public final static String Province_Tag_Face = "是否省厅人脸标签(可修改)";
    public final static String Impotrant_Command_Image = "是否重点指挥图像(可修改)";
    public final static String Dept_Tag = "是否部级标签(可修改)";
    public final static String Username = "用户名(可修改)";
    public final static String Password = "密码(可修改)";
    // 可以将这些已知的键放入一个集合中,方便检查
    public static final Set<String> KNOWN_KEYS = new HashSet<>(Arrays.asList(
            ID,Point_Name, IP, Serial_Number,Area, Unit,Province_Tag_Video,Province_Tag_Car,Province_Tag_Face, Impotrant_Command_Image, Dept_Tag
            ,Username,Password
    ));
}
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TMonitor.java
@@ -148,4 +148,6 @@
    /** 设备厂商: 0海康  1大华  2宇视*/
    private Integer deviceType;
    private String username;
    private String password;
}
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwPoint.java
@@ -104,4 +104,9 @@
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date recoveryTime;
    //设备登录的用户名密码
    @TableField("username")
    private String username;
    @TableField("password")
    private String password;
}
ycl-pojo/src/main/java/com/ycl/platform/domain/excel/PointExport.java
@@ -84,6 +84,12 @@
    @ExcelProperty("是否重点点位")
    private String importantTagString;
    @ColumnWidth(20)
    @ExcelProperty("用户名(可修改)")
    private String username;
    @ColumnWidth(20)
    @ExcelProperty("密码(可修改)")
    private String password;
    @ExcelIgnore
    private Boolean importantCommandImageTag;
ycl-pojo/src/main/java/com/ycl/platform/domain/form/YwPointForm.java
@@ -83,6 +83,9 @@
    @TableField("end_time")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date endTime;
    private String username;
    private String password;
    public static YwPoint getEntityByForm(@NonNull YwPointForm form, YwPoint entity) {
        if(entity == null) {
          entity = new YwPoint();
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java
@@ -1,5 +1,6 @@
package com.ycl.platform.domain.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.platform.base.AbsVo;
import com.ycl.platform.domain.entity.YwPoint;
@@ -68,6 +69,10 @@
     */
    private List<DynamicColumnVO> dynamicColumnList;
    /** 设备登录的用户名密码 */
    private String username;
    private String password;
    public static YwPointVO getVoByEntity(@NonNull YwPoint entity, YwPointVO vo) {
        if(vo == null) {
            vo = new YwPointVO();
ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java
@@ -265,7 +265,7 @@
        if (!CollectionUtils.isEmpty(dynamics)) {
            dynamicMap = dynamics.stream().filter(vo -> vo.getRefId() != null).collect(Collectors.groupingBy(DynamicColumnVO::getRefId));
        }
        //定义表头列表
        //定义固定表头列表
        LinkedHashSet<String> headers = new LinkedHashSet<>();
        headers.add(PointHeaderConstant.ID);
        headers.add(PointHeaderConstant.Point_Name);
@@ -278,6 +278,8 @@
        headers.add(PointHeaderConstant.Province_Tag_Face);
        headers.add(PointHeaderConstant.Impotrant_Command_Image);
        headers.add(PointHeaderConstant.Dept_Tag);
        headers.add(PointHeaderConstant.Username);
        headers.add(PointHeaderConstant.Password);
        List<String> headersList = new LinkedList<>();
        if (!CollectionUtils.isEmpty(dynamicsHeaders)) {
            //使用链表保证后续补充数据时获取数据顺序一致
@@ -300,6 +302,8 @@
            list.add(export.getProvinceTagFaceString());
            list.add(export.getImportantCommandImageTagString());
            list.add(export.getDeptTagString());
            list.add(export.getUsername());
            list.add(export.getPassword());
            for (String header : headersList) {
                //创建一个变量记录找没找到这个header
                boolean flag = false;
@@ -357,6 +361,8 @@
            pointExport.setProvinceTagFace("是".equals(map.get(PointHeaderConstant.Province_Tag_Face)));
            pointExport.setImportantCommandImageTag("是".equals(map.get(PointHeaderConstant.Impotrant_Command_Image)));
            pointExport.setDeptTag("是".equals(map.get(PointHeaderConstant.Dept_Tag)));
            pointExport.setUsername(map.get(PointHeaderConstant.Username));
            pointExport.setPassword(map.get(PointHeaderConstant.Password));
            List<DynamicColumnVO> dynamics = new ArrayList<>();
            // 处理动态列
            for (Map.Entry<String, String> entry : map.entrySet()) {
@@ -403,6 +409,8 @@
            point.setProvinceTagCar(item.getProvinceTagCar());
            point.setProvinceTagFace(item.getProvinceTagFace());
            point.setDeptTag(item.getDeptTag());
            point.setUsername(item.getUsername());
            point.setPassword(item.getPassword());
            if (needUpdateUnit) {
                if (Objects.nonNull(unitId)) {
                    point.setUnitId(Long.valueOf(unitId));
ycl-server/src/main/java/com/ycl/task/MonitorTask.java
@@ -29,6 +29,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
@@ -61,7 +62,10 @@
    private YwPointMapper ywPointMapper;
    @Autowired
    private RedisTemplate redisTemplate;
    @Value("${DH.userName}")
    public String userName;
    @Value("${DH.password}")
    public String password;
    //同步点位在线率到mongo(弃用)
//    public void siteOnline() {
//        log.info("开始同步点位在线率到mongo");
@@ -169,6 +173,8 @@
            ywPoint.setCreateTime(new Date());
            ywPoint.setUpdateTime(new Date());
            ywPoint.setOnline(ApiConstants.UY_OnlineSite_Unknown);
            ywPoint.setUsername(userName);
            ywPoint.setPassword(password);
        }
        //状态设置为考核设备
        ywPoint.setExamineStatus(Boolean.TRUE);
ycl-server/src/main/java/com/ycl/task/OsdTask.java
@@ -99,7 +99,7 @@
            List<Future<OSDResult>> futureList = new ArrayList<>(48);
            List<OSDResult> osdResultList = new ArrayList<>();
            for (TMonitor monitor : monitors) {
                OSDCheckThread thread = new OSDCheckThread(monitor,HKUserName,HKPassword,DHUserName,DHPassword,YSUserName,YSPassword);
                OSDCheckThread thread = new OSDCheckThread(monitor);
                Future<OSDResult> future = executorService.submit(thread);
                futureList.add(future);
            }
ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java
@@ -13,21 +13,9 @@
@Slf4j
public class OSDCheckThread implements Callable<OSDResult> {
    private TMonitor monitor;
    public String HKUserName;
    public String HKPassword;
    public String DHUserName;
    public String DHPassword;
    public String YSUserName;
    public String YSPassword;
    public OSDCheckThread(TMonitor monitor, String HKUserName, String HKPassword, String DHUserName, String DHPassword, String YSUserName, String YSPassword) {
    public OSDCheckThread(TMonitor monitor) {
        this.monitor = monitor;
        this.HKUserName = HKUserName;
        this.HKPassword = HKPassword;
        this.DHUserName = DHUserName;
        this.DHPassword = DHPassword;
        this.YSUserName = YSUserName;
        this.YSPassword = YSPassword;
    }
    public TMonitor getMonitor() {
@@ -38,59 +26,11 @@
        this.monitor = monitor;
    }
    public String getHKUserName() {
        return HKUserName;
    }
    public void setHKUserName(String HKUserName) {
        this.HKUserName = HKUserName;
    }
    public String getHKPassword() {
        return HKPassword;
    }
    public void setHKPassword(String HKPassword) {
        this.HKPassword = HKPassword;
    }
    public String getDHUserName() {
        return DHUserName;
    }
    public void setDHUserName(String DHUserName) {
        this.DHUserName = DHUserName;
    }
    public String getDHPassword() {
        return DHPassword;
    }
    public void setDHPassword(String DHPassword) {
        this.DHPassword = DHPassword;
    }
    public String getYSUserName() {
        return YSUserName;
    }
    public void setYSUserName(String YSUserName) {
        this.YSUserName = YSUserName;
    }
    public String getYSPassword() {
        return YSPassword;
    }
    public void setYSPassword(String YSPassword) {
        this.YSPassword = YSPassword;
    }
    @Override
    public OSDResult call() throws Exception {
        if (DeviceType.HK.getType().equals(monitor.getDeviceType())) {
            //海康
            OSDResult osd = HKApi.getOsdByIP(monitor.getSerialNumber(),monitor.getIp(), HKUserName, HKPassword);
            OSDResult osd = HKApi.getOsdByIP(monitor.getSerialNumber(),monitor.getIp(),monitor.getUsername(),monitor.getPassword());
            OSDResult osdResult = checkSuccess(monitor, osd);
            if (osdResult!=null) {
                return osd;
@@ -99,7 +39,7 @@
            }
        } else if (DeviceType.DH.getType().equals(monitor.getDeviceType())) {
            //大华
            OSDResult osd = DHApi.getOsd(monitor.getSerialNumber(),monitor.getIp(), DHUserName, DHPassword);
            OSDResult osd = DHApi.getOsd(monitor.getSerialNumber(),monitor.getIp(), monitor.getUsername(),monitor.getPassword());
            OSDResult osdResult = checkSuccess(monitor, osd);
            if (osdResult!=null) {
                return osd;
@@ -108,7 +48,7 @@
            }
        } else if (DeviceType.YS.getType().equals(monitor.getDeviceType())) {
            //宇视
            OSDResult osd = YSApi.getOsd(monitor.getIp(), YSUserName, YSPassword);
            OSDResult osd = YSApi.getOsd(monitor.getIp(), monitor.getUsername(),monitor.getPassword());
            OSDResult osdResult = checkSuccess(monitor, osd);
            if (osdResult!=null) {
                return osd;
@@ -123,19 +63,19 @@
    private OSDResult tryAllApi(TMonitor monitor) {
        //尝试海康的api
        OSDResult hkosd = HKApi.getOsdByIP(monitor.getSerialNumber(),monitor.getIp(), HKUserName, HKPassword);
        OSDResult hkosd = HKApi.getOsdByIP(monitor.getSerialNumber(),monitor.getIp(), monitor.getUsername(),monitor.getPassword());
        if (hkosd != null) {
            hkosd.setSerialNumber(monitor.getSerialNumber());
            return hkosd;
        }
        //尝试大华的api
        OSDResult dhosd = DHApi.getOsd(monitor.getSerialNumber(),monitor.getIp(), DHUserName, DHPassword);
        OSDResult dhosd = DHApi.getOsd(monitor.getSerialNumber(),monitor.getIp(),monitor.getUsername(),monitor.getPassword());
        if (dhosd != null) {
            dhosd.setSerialNumber(monitor.getSerialNumber());
            return dhosd;
        }
        //宇视api
        OSDResult ysosd = YSApi.getOsd(monitor.getIp(), YSUserName, YSPassword);
        OSDResult ysosd = YSApi.getOsd(monitor.getIp(), monitor.getUsername(),monitor.getPassword());
        if (ysosd != null) {
            ysosd.setSerialNumber(monitor.getSerialNumber());
            return ysosd;
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -90,7 +90,9 @@
    </select>
    <select id="selectByNumbers" resultType="com.ycl.platform.domain.entity.TMonitor">
        select * from t_monitor where serial_number in
        select m.*,p.username,p.password
        from t_monitor m left join t_yw_point p on m.serial_number = p.serial_number
        where serial_number in
        <foreach collection="numbers" separator="," open="(" close=")" item="number">
            #{number}
        </foreach>
ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
@@ -13,6 +13,8 @@
        <result column="status" property="status"/>
        <result column="dept_id" property="deptId"/>
        <result column="dept_name" property="deptName"/>
        <result column="username" property="username"/>
        <result column="password" property="password"/>
        <result column="remark" property="remark"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
@@ -104,6 +106,8 @@
        yu.unit_name,
        yp.start_time,
        yp.end_time,
        yp.username,
        yp.password,
        d.area,
        CASE WHEN yp.province_tag_video = 0 THEN '否' ELSE '是' END AS provinceTagVideoString,
        CASE WHEN yp.province_tag_car = 0 THEN '否' ELSE '是' END AS provinceTagCarString,
@@ -146,7 +150,9 @@
            province_tag_car = #{point.provinceTagCar},
            province_tag_face = #{point.provinceTagFace},
            important_command_image_tag = #{point.importantCommandImageTag},
            dept_tag = #{point.deptTag}
            dept_tag = #{point.deptTag},
            username = #{point.username},
            password = #{point.password}
            WHERE serial_number = #{point.serialNumber}
        </foreach>
    </update>
@@ -284,6 +290,12 @@
            <if test="deptTag !=null">
                dept_tag = #{deptTag},
            </if>
            <if test="username !=null and username!=''">
                username = #{username},
            </if>
            <if test="password !=null and password !=''">
                password = #{password},
            </if>
            unit_id = #{unitId},
            start_time = #{startTime},
            end_time = #{endTime},