ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwPoint.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-pojo/src/main/java/com/ycl/platform/domain/param/UY/OneMachineFileParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-server/src/main/java/com/ycl/task/MonitorTask.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-server/src/main/java/com/ycl/task/UYTask.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | 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,16 +74,17 @@ List<String> importantSite = DictDataList.stream().map(SysDictData::getDictValue).collect(Collectors.toList()); //TODO:全年留存还是单次留存 for (OneMachineFileResult result : oneMachineFileResults) { 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); @@ -88,54 +96,65 @@ 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()); if (pointMap.containsKey(result.getSerialNumber().getValue())) { ywPoint = pointMap.get(result.getSerialNumber().getValue()); }else { ywPoint.setPointName(result.getSBMC()); 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); String serialNumber = result.getSerialNumber().getValue(); Integer deptId = -1; if (!StringUtils.isEmpty(serialNumber)) { String areaCode = serialNumber.substring(0, 6); AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode); //如果解析不出区域deptId为-1 Integer 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}