fuliqi
2024-08-13 9731eecabe3fc87cee6859915cd8daa36ccca6ef
一机一档用一机一档合格率替代
7个文件已修改
197 ■■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwPoint.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/param/UY/OneMachineFileParam.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/MonitorTask.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/UYTask.java 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java
@@ -20,16 +20,23 @@
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /** 创建时间 */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    //TODO:删除fill代码层处理
    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    private Date createTime;
    /** 修改时间 */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    /**
     * 修改时间
     */
    @TableField(value = "update_time")
    private Date updateTime;
    /** 逻辑删除 */
    @TableField(value = "deleted", fill = FieldFill.INSERT)
    /**
     * 逻辑删除
     */
    @TableField(value = "deleted")
    private Integer deleted;
}
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwPoint.java
@@ -1,8 +1,6 @@
package com.ycl.platform.domain.entity;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.platform.base.AbsEntity;
import io.swagger.annotations.ApiModel;
@@ -42,7 +40,7 @@
    private Date endTime;
    @ApiModelProperty("运维单位")
    @TableField(value = "unit_id", updateStrategy = FieldStrategy.IGNORED)
    @TableField(value = "unit_id")
    private Long unitId;
    @ApiModelProperty("运维状态")
ycl-pojo/src/main/java/com/ycl/platform/domain/param/UY/OneMachineFileParam.java
@@ -17,9 +17,9 @@
    /**
     * 分页
     */
    private String offset;
    private Integer offset;
    private String limit;
    private Integer limit;
    /**
     * 摄像机国标编码
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
@@ -36,6 +36,13 @@
    public List<TMonitorVO> selectTMonitorList(TMonitorVO tMonitor);
    /**
     * 查询设备资产列表
     *
     * @param tMonitor 设备资产
     * @return 设备资产集合
     */
    public List<TMonitorVO> selectMonitorVOList();
    /**
     * 新增设备资产
     *
     * @param tMonitor 设备资产
ycl-server/src/main/java/com/ycl/task/MonitorTask.java
@@ -6,13 +6,16 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.entity.YwPoint;
import com.ycl.platform.domain.result.UY.MonitorQualifyResult;
import com.ycl.platform.domain.result.UY.OneMachineFileResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ITMonitorService;
import com.ycl.platform.service.YwPointService;
import com.ycl.system.entity.SysDictData;
import com.ycl.system.service.ISysDictDataService;
import com.ycl.utils.DateUtils;
import com.ycl.utils.StringUtils;
import constant.RedisConstant;
import enumeration.general.AreaDeptEnum;
import enumeration.general.PointStatus;
@@ -23,6 +26,7 @@
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.*;
@@ -40,6 +44,8 @@
    @Autowired
    private ITMonitorService monitorService;
    @Autowired
    private TMonitorMapper monitorMapper;
    @Autowired
    private ISysDictDataService dictDataService;
    @Autowired
    private YwPointService ywPointService;
@@ -47,11 +53,12 @@
    private RedisTemplate redisTemplate;
    //同步mongodb一机一档到数据库
    @Transactional
    public void synchronize() {
        Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
        List<OneMachineFileResult> oneMachineFileResults = mongoTemplate.find(query, OneMachineFileResult.class);
        List<MonitorQualifyResult> oneMachineFileResults = mongoTemplate.find(query, MonitorQualifyResult.class);
        //数据库monitor表数据
        Map<String, TMonitorVO> monitorVOMap = monitorService.selectTMonitorList(null).stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        Map<String, TMonitorVO> monitorVOMap = monitorMapper.selectMonitorVOList().stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //准备插入设备表的数据
        List<TMonitor> monitorList = new ArrayList<>();
        //准备插入点位表的数据
@@ -67,75 +74,87 @@
        List<String> importantSite = DictDataList.stream().map(SysDictData::getDictValue).collect(Collectors.toList());
        //TODO:全年留存还是单次留存
        for (OneMachineFileResult result : oneMachineFileResults) {
            TMonitor monitor = getMonitor(result,monitorVOMap);
        for (MonitorQualifyResult result : oneMachineFileResults) {
            TMonitor monitor = getMonitor(result, monitorVOMap);
            YwPoint point = getPoint(result, pointMap, importantSite);
            monitorList.add(monitor);
            ywPointList.add(point);
            //比对筛选出新的数据
            if (!CollectionUtils.isEmpty(monitorVOMap) && !monitorVOMap.containsKey(result.getSBBM())) {
            if (!CollectionUtils.isEmpty(monitorVOMap) && !monitorVOMap.containsKey(result.getSerialNumber().getValue())) {
                newMonitorList.add(monitor);
            }
        }
        log.info("result集合{},设备集合{},点位集合{}", oneMachineFileResults.size(), monitorList.size(), ywPointList.size());
        //插入数据库
        if (!CollectionUtils.isEmpty(monitorList)) {
            monitorService.saveOrUpdateBatch(monitorList);
        }
        if(!CollectionUtils.isEmpty(ywPointList)){
        if (!CollectionUtils.isEmpty(ywPointList)) {
            ywPointService.saveOrUpdateBatch(ywPointList);
        }
        //新的数据放入Redis中等待考核指标任务使用
        redisTemplate.opsForValue().set(RedisConstant.New_Monitor_Set, JSONArray.toJSONString(newMonitorList));
    }
    private YwPoint getPoint(OneMachineFileResult result, Map<String, YwPoint> pointMap, List<String> importantSite) {
    private YwPoint getPoint(MonitorQualifyResult result, Map<String, YwPoint> pointMap, List<String> importantSite) {
        YwPoint ywPoint = new YwPoint();
        if (pointMap.containsKey(result.getSBBM())) {
            ywPoint = pointMap.get(result.getSBBM());
        }else {
            ywPoint.setPointName(result.getSBMC());
        if (pointMap.containsKey(result.getSerialNumber().getValue())) {
            ywPoint = pointMap.get(result.getSerialNumber().getValue());
        } else {
            ywPoint.setPointName(result.getName().getValue());
            ywPoint.setStatus(PointStatus.WAIT.getDesc());
            ywPoint.setSerialNumber(result.getSBBM());
            ywPoint.setSerialNumber(result.getSerialNumber().getValue());
            ywPoint.setImportantTag(Boolean.FALSE);
            ywPoint.setProvinceTag(Boolean.FALSE);
            ywPoint.setCreateTime(new Date());
            ywPoint.setUpdateTime(new Date());
        }
        //比对是否是重点点位
        if (importantSite.contains(result.getSBBM())) {
        if (importantSite.contains(result.getSerialNumber().getValue())) {
            ywPoint.setImportantTag(Boolean.TRUE);
        }
        //解析deptId
        //区域行政编码
        String areaCode = result.getSBBM().substring(0, 6);
        AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
        //如果解析不出区域deptId为-1
        String serialNumber = result.getSerialNumber().getValue();
        Integer deptId = -1;
        if(areaDeptEnum!=null){
            deptId = areaDeptEnum.getDeptId();
        if (!StringUtils.isEmpty(serialNumber)) {
            String areaCode = serialNumber.substring(0, 6);
            AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
            //如果解析不出区域deptId为-1
            if (areaDeptEnum != null) {
                deptId = areaDeptEnum.getDeptId();
            }
        }
        ywPoint.setDeptId(Long.valueOf(deptId + ""));
        return ywPoint;
    }
    private TMonitor getMonitor(OneMachineFileResult result, Map<String, TMonitorVO> monitorVOMap) {
    private TMonitor getMonitor(MonitorQualifyResult result, Map<String, TMonitorVO> monitorVOMap) {
        TMonitor monitor = new TMonitor();
        if (monitorVOMap.containsKey(result.getSBBM())) {
            monitor.setId(monitorVOMap.get(result.getSBBM()).getId());
        if (monitorVOMap.containsKey(result.getSerialNumber().getValue())) {
            monitor.setId(monitorVOMap.get(result.getSerialNumber().getValue()).getId());
        }
        monitor.setSerialNumber(result.getSBBM());
        monitor.setName(result.getSBMC());
        monitor.setSiteType(Long.valueOf(result.getJKDWLX()));
        monitor.setMacAddr(result.getMACDZ());
        monitor.setIp(result.getIP());
        monitor.setCameraFunType(result.getSXJGNLX());
        monitor.setLongitude(result.getJD() + "");
        monitor.setLatitude(result.getWD() + "");
        monitor.setCameraCaptureArea(result.getSXJCJQY());
        monitor.setOnState(Long.valueOf(result.getSBZT()));
        monitor.setSerialNumber(result.getSerialNumber().getValue());
        monitor.setName(result.getName().getValue());
        String siteType = result.getJkdwlx().getValue();
        if (!StringUtils.isEmpty(siteType)) {
            monitor.setSiteType(Long.valueOf(siteType));
        }
        monitor.setMacAddr(result.getMacdz().getValue());
        monitor.setIp(result.getIp().getValue());
        monitor.setCameraFunType(result.getSxjgnlx().getValue());
        monitor.setLongitude(result.getLongitude().getValue());
        monitor.setLatitude(result.getLatitude().getValue() + "");
        monitor.setCameraCaptureArea(result.getSxjcjqy().getValue());
        String onState = result.getSbzt().getValue();
        if (!StringUtils.isEmpty(onState)) {
            monitor.setOnState(Long.valueOf(onState));
        }
        //国标码前八位为行政编码
        monitor.setCivilCode(result.getSBBM().substring(0, 8));
        String serialNumber = result.getSerialNumber().getValue();
        if (!StringUtils.isEmpty(serialNumber)) {
            monitor.setCivilCode(serialNumber.substring(0, 8));
        }
        return monitor;
    }
}
ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -91,39 +91,43 @@
        log.info("结束执行图像监测数据同步");
    }
    //一机一档
    public void monitorTask() {
        // 一机一档注册率
        // 档案考核比
        log.info("开始执行一机一档数据同步");
        OneMachineFileParam param = new OneMachineFileParam();
        JSONObject jsonObject = uyClient.oneMachineFile(param);
        if (jsonObject != null) {
            JSONObject cameraList = jsonObject.getJSONObject("CameraList");
            if (cameraList != null) {
                List<OneMachineFileResult> data = cameraList.getList("data", OneMachineFileResult.class);
                if (!CollectionUtils.isEmpty(data)) {
                    //如果今天存在之前的数据先删除
                    Query query = new Query(Criteria
                            .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
                    DeleteResult result = mongoTemplate.remove(query, OneMachineFileResult.class);
                    //存放在mongo中
                    mongoTemplate.insertAll(data);
                } else {
                    log.error("一机一档数据为空{}", cameraList);
                }
            } else {
                log.error("一机一档数据为空{}", jsonObject);
            }
        } else {
            log.error("一机一档数据为空");
        }
        log.info("结束执行一机一档数据同步");
    }
//    //一机一档
//    public void monitorTask() {
//        // 一机一档注册率
//        // 档案考核比
//        log.info("开始执行一机一档数据同步");
//        OneMachineFileParam param = new OneMachineFileParam();
//        param.setOffset(ApiConstants.PageNo);
//        param.setLimit(ApiConstants.PageSize);
//        JSONObject jsonObject = uyClient.oneMachineFile(param);
//        if (jsonObject != null) {
//            JSONObject cameraList = jsonObject.getJSONObject("CameraList");
//            if (cameraList != null) {
//                List<OneMachineFileResult> data = cameraList.getList("data", OneMachineFileResult.class);
//                if (!CollectionUtils.isEmpty(data)) {
//                    //如果今天存在之前的数据先删除
//                    Query query = new Query(Criteria
//                            .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
//                    DeleteResult result = mongoTemplate.remove(query, OneMachineFileResult.class);
//                    //存放在mongo中
//                    mongoTemplate.insertAll(data);
//                } else {
//                    log.error("一机一档数据为空{}", cameraList);
//                }
//            } else {
//                log.error("一机一档数据为空{}", jsonObject);
//            }
//        } else {
//            log.error("一机一档数据为空");
//        }
//        log.info("结束执行一机一档数据同步");
//    }
    //一机一档合格率
    //一机一档
    public void monitorQualifyTask() {
        //一机一档合格率
        // 一机一档注册率
        // 档案考核比
        log.info("开始执行一机一档合格率数据同步");
        MonitorQualifyParam param = new MonitorQualifyParam();
        param.setPageNum(ApiConstants.PageNo);
@@ -213,7 +217,7 @@
                if (!CollectionUtils.isEmpty(records)) {
                    //如果今天存在之前的数据先删除
                    Query query = new Query(Criteria
                            .where("mongoCreateTime").gte(DateUtils.getDayStart(instance.getTime())).lt(DateUtils.getDayEnd(instance.getTime())));
                            .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
                    DeleteResult result = mongoTemplate.remove(query, RecordMetaDSumResult.class);
                    //存放在mongo中
                    mongoTemplate.insertAll(records);
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -135,6 +135,16 @@
        ${params.dataScope}
    </select>
    <select id="selectMonitorVOList" resultType="com.ycl.platform.domain.vo.TMonitorVO">
        select m.id, m.serial_number, name, site_type, mac_addr, ip, camera_fun_type, longitude, latitude,
        camera_capture_area, on_state, civil_code, integrated_device, camera_brand, address, net_working,
        public_security, installed_time, management_unit, mu_contact_info, storage_days
        , monitor_azimuth, scene_photo_addr, model, site_vulgo, camera_type, camera_light_type, encoded_format,
        camera_dept, hybm, lxbm,d.dept_id, d.dept_name from t_monitor m
        left join t_yw_point p on m.serial_number = p.serial_number
        left join sys_dept d on p.dept_id = d.dept_id
    </select>
    <select id="selectTMonitorById" parameterType="Long" resultType="com.ycl.platform.domain.vo.TMonitorVO">
        <include refid="selectTMonitorVo"/>
        where id = #{id}