云联万物中间库代码
This commit is contained in:
parent
df90b4f1e6
commit
57a10e0978
@ -179,6 +179,12 @@ public class VideoItem implements Serializable {
|
|||||||
@ApiModelProperty(value = "云联万物-监控点位置(JKDWZ001:作业面,JKDWZ002:料场,JKDWZ003:车辆出入口,JKDWZ004:人员出入口,JKDWZ005:洗轮机,JKDWZ006:围墙,JKDWZ007:塔吊,JKDWZ008:其他)")
|
@ApiModelProperty(value = "云联万物-监控点位置(JKDWZ001:作业面,JKDWZ002:料场,JKDWZ003:车辆出入口,JKDWZ004:人员出入口,JKDWZ005:洗轮机,JKDWZ006:围墙,JKDWZ007:塔吊,JKDWZ008:其他)")
|
||||||
private java.lang.String monitoringPointLocation;
|
private java.lang.String monitoringPointLocation;
|
||||||
|
|
||||||
@ApiModelProperty(value = "云联万物-经纬坐标")
|
/**
|
||||||
private java.lang.String latAndLng;
|
* 纬度
|
||||||
|
*/
|
||||||
|
private String latitude;
|
||||||
|
/**
|
||||||
|
*经度
|
||||||
|
*/
|
||||||
|
private String longitude;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,27 +1,12 @@
|
|||||||
package com.zhgd.xmgl.modules.yunlianwanwu.middle;
|
package com.zhgd.xmgl.modules.yunlianwanwu.middle;
|
||||||
|
|
||||||
import cn.hutool.http.HttpUtil;
|
import com.zhgd.xmgl.modules.yunlianwanwu.middle.service.MiddleService;
|
||||||
import com.gexin.fastjson.JSON;
|
|
||||||
import com.gexin.fastjson.TypeReference;
|
|
||||||
import com.zhgd.jeecg.common.api.vo.Result;
|
|
||||||
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
|
|
||||||
import com.zhgd.xmgl.modules.video.mapper.VideoItemMapper;
|
|
||||||
import com.zhgd.xmgl.modules.yunlianwanwu.middle.entity.MiddleGcjkd;
|
|
||||||
import com.zhgd.xmgl.modules.yunlianwanwu.middle.entity.MiddleGcxx;
|
|
||||||
import com.zhgd.xmgl.modules.yunlianwanwu.middle.entity.VideoItemConfigBo;
|
|
||||||
import com.zhgd.xmgl.modules.yunlianwanwu.middle.entity.bo.ProjectBo;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 云联万物的中间库的controller
|
* 云联万物的中间库的controller
|
||||||
*/
|
*/
|
||||||
@ -29,294 +14,19 @@ import java.util.stream.Collectors;
|
|||||||
@RequestMapping("middle")
|
@RequestMapping("middle")
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class MiddleController {
|
public class MiddleController {
|
||||||
private String ipPort = "http://localhost:22333";
|
|
||||||
@Autowired
|
|
||||||
private ProjectMapper projectMapper;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private VideoItemMapper videoItemMapper;
|
private MiddleService middleService;
|
||||||
|
|
||||||
@GetMapping("/add/project")
|
@GetMapping("/add/project")
|
||||||
public void addProject() {
|
public void addProject() {
|
||||||
//从中间库接口获取所有项目
|
middleService.syncProject();
|
||||||
String url = ipPort + "/middle/middleGcxx/list";
|
|
||||||
log.info("getMiddleProject:{}", url);
|
|
||||||
String getMiddleProject = HttpUtil.get(url);
|
|
||||||
log.info("getMiddleProjectRs:{}", getMiddleProject);
|
|
||||||
if (StringUtils.isNotBlank(getMiddleProject)) {
|
|
||||||
Result result = JSON.parseObject(getMiddleProject, Result.class);
|
|
||||||
if (result.isSuccess()) {
|
|
||||||
Object rs = result.getResult();
|
|
||||||
if (rs != null) {
|
|
||||||
List<MiddleGcxx> middleGcxxes = JSON.parseObject(rs.toString(), new TypeReference<List<MiddleGcxx>>() {
|
|
||||||
});
|
|
||||||
Map<String, MiddleGcxx> idAndMiddleGcxxMap = middleGcxxes.stream().collect(Collectors.toMap(MiddleGcxx::getId, middleGcxx -> middleGcxx));
|
|
||||||
//从数据库获取所有项目
|
|
||||||
List<ProjectBo> projects = projectMapper.queryAllProjectAndVideoInfo();
|
|
||||||
//比较出新增和修改的项目,调用接口更新中间库
|
|
||||||
log.info("projects:{}", JSON.toJSONString(projects));
|
|
||||||
|
|
||||||
if (CollectionUtils.isNotEmpty(projects)) {
|
|
||||||
for (ProjectBo bo : projects) {
|
|
||||||
if (idAndMiddleGcxxMap.get(bo.getProjectSn()) == null) {
|
|
||||||
//新增
|
|
||||||
httpAddMiddleGcxx(bo);
|
|
||||||
} else {
|
|
||||||
//修改
|
|
||||||
httpUpdateMiddleGcxx(bo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/middleGcjkd/add")
|
@GetMapping("/middleGcjkd/add")
|
||||||
public void addMiddleGcjkd() {
|
public void addMiddleGcjkd() {
|
||||||
//从中间库接口获取所有监控点位
|
middleService.syncMiddleGcjkd();
|
||||||
String url = ipPort + "/middle/middleGcjkd/list";
|
|
||||||
log.info("getMiddleProject:{}", url);
|
|
||||||
String getMiddleGcjkd = HttpUtil.get(url);
|
|
||||||
log.info("getMiddleGcjkdRs:{}", getMiddleGcjkd);
|
|
||||||
if (StringUtils.isNotBlank(getMiddleGcjkd)) {
|
|
||||||
Result result = JSON.parseObject(getMiddleGcjkd, Result.class);
|
|
||||||
if (result.isSuccess()) {
|
|
||||||
Object rs = result.getResult();
|
|
||||||
if (rs != null) {
|
|
||||||
List<MiddleGcjkd> middleGcjkds = JSON.parseObject(rs.toString(), new TypeReference<List<MiddleGcjkd>>() {
|
|
||||||
});
|
|
||||||
Map<Long, MiddleGcjkd> idAndMiddleGcjkdMap = middleGcjkds.stream().collect(Collectors.toMap(middleGcjkd -> Long.valueOf(middleGcjkd.getId()), m -> m));
|
|
||||||
//从数据库获取所有监控点位
|
|
||||||
List<VideoItemConfigBo> videoItemBos = videoItemMapper.selectDeviceDetailAndProjectSnList();
|
|
||||||
if (CollectionUtils.isNotEmpty(videoItemBos)) {
|
|
||||||
for (VideoItemConfigBo bo : videoItemBos) {
|
|
||||||
//比较出新增和修改的监控点位,调用接口更新中间库
|
|
||||||
if (idAndMiddleGcjkdMap.get(bo.getItemId()) == null) {
|
|
||||||
//新增
|
|
||||||
httpAddMiddleGcjkd(bo);
|
|
||||||
} else {
|
|
||||||
//修改
|
|
||||||
httpUpdateMiddleGcjkd(bo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void httpAddMiddleGcjkd(VideoItemConfigBo bo) {
|
|
||||||
MiddleGcjkd middleGcjkd = getMiddleGcjkdByVideoItem(bo);
|
|
||||||
String url = ipPort + "/middle/middleGcjkd/add";
|
|
||||||
String body = JSON.toJSONString(middleGcjkd);
|
|
||||||
log.info("add_url:{},body:{}", url, body);
|
|
||||||
String post = HttpUtil.post(url, body);
|
|
||||||
log.info("rt:{}", post);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void httpUpdateMiddleGcjkd(VideoItemConfigBo bo) {
|
|
||||||
MiddleGcjkd middleGcjkd = getMiddleGcjkdByVideoItem(bo);
|
|
||||||
String url = ipPort + "/middle/middleGcjkd/edit";
|
|
||||||
String body = JSON.toJSONString(middleGcjkd);
|
|
||||||
log.info("update_url:{},body:{}", url, body);
|
|
||||||
String post = HttpUtil.post(url, body);
|
|
||||||
log.info("rt:{}", post);
|
|
||||||
}
|
|
||||||
|
|
||||||
private MiddleGcjkd getMiddleGcjkdByVideoItem(VideoItemConfigBo bo) {
|
|
||||||
MiddleGcjkd middleGcjkd = new MiddleGcjkd();
|
|
||||||
middleGcjkd.setId(String.valueOf(bo.getItemId()));
|
|
||||||
middleGcjkd.setGcid(bo.getProjectSn());
|
|
||||||
middleGcjkd.setJkdbh(bo.getMonitoringPointCode());
|
|
||||||
middleGcjkd.setJkdmc(bo.getVideoName());
|
|
||||||
middleGcjkd.setJkdzt(getStatus(bo.getDeviceState()));
|
|
||||||
middleGcjkd.setJkdlx(getDeviceType(bo.getDeviceType()));
|
|
||||||
middleGcjkd.setJkdwz(bo.getMonitoringPointLocation());
|
|
||||||
String latAndLng = bo.getLatAndLng();
|
|
||||||
if (StringUtils.isNotBlank(latAndLng)) {
|
|
||||||
String[] split = latAndLng.split(",");
|
|
||||||
if (split.length == 2) {
|
|
||||||
middleGcjkd.setXzb(split[1]);
|
|
||||||
middleGcjkd.setYzb(split[0]);
|
|
||||||
middleGcjkd.setYszb(latAndLng);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
middleGcjkd.setYszblx("WGS-84");
|
|
||||||
middleGcjkd.setDeleted(0);
|
|
||||||
middleGcjkd.setCreateDateTime(bo.getCreateTime());
|
|
||||||
middleGcjkd.setDatasource(String.valueOf(15));
|
|
||||||
return middleGcjkd;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void httpAddMiddleGcxx(ProjectBo project) {
|
|
||||||
MiddleGcxx middleGcxx = getMiddleGcxxByProject(project);
|
|
||||||
String url = ipPort + "/middle/middleGcxx/add";
|
|
||||||
String body = JSON.toJSONString(middleGcxx);
|
|
||||||
log.info("url:{},body:{}", url, body);
|
|
||||||
String post = HttpUtil.post(url, body);
|
|
||||||
log.info("rt:{}", post);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void httpUpdateMiddleGcxx(ProjectBo project) {
|
|
||||||
MiddleGcxx middleGcxx = getMiddleGcxxByProject(project);
|
|
||||||
String url = ipPort + "/middle/middleGcxx/edit";
|
|
||||||
String body = JSON.toJSONString(middleGcxx);
|
|
||||||
log.info("url:{},body:{}", url, body);
|
|
||||||
String post = HttpUtil.post(url, body);
|
|
||||||
log.info("rt:{}", post);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取中间库
|
|
||||||
*
|
|
||||||
* @param bo
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
private MiddleGcxx getMiddleGcxxByProject(ProjectBo bo) {
|
|
||||||
MiddleGcxx middleGcxx = new MiddleGcxx();
|
|
||||||
middleGcxx.setId(bo.getProjectSn());//id存的是projectSn
|
|
||||||
middleGcxx.setGcmc(bo.getProjectName());
|
|
||||||
middleGcxx.setGcjsdd(bo.getProjectName());
|
|
||||||
middleGcxx.setSgxkzh(bo.getConstructionPermit());
|
|
||||||
middleGcxx.setGcssjd(bo.getStreetTownshipTown());
|
|
||||||
middleGcxx.setGcssjdbm(bo.getStreetTownshipTownCode());
|
|
||||||
middleGcxx.setGclb(getGclb(bo.getProjectType()));
|
|
||||||
middleGcxx.setSxtazzt(bo.getSxtazzt());
|
|
||||||
middleGcxx.setSxtazrq(bo.getSxtazrq());
|
|
||||||
middleGcxx.setQxbm(bo.getDistrictOrganizationCode());
|
|
||||||
middleGcxx.setXzb(bo.getLatitude());
|
|
||||||
middleGcxx.setYzb(bo.getLongitude());
|
|
||||||
middleGcxx.setYszb(bo.getLongitude() + "," + bo.getLatitude());
|
|
||||||
middleGcxx.setYszblx("WGS-84");
|
|
||||||
middleGcxx.setDatasource(String.valueOf(15));
|
|
||||||
return middleGcxx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取设备类型
|
|
||||||
*
|
|
||||||
* @param deviceType
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public String getDeviceType(Integer deviceType) {
|
|
||||||
//1 JKDLX001 微卡口
|
|
||||||
//2 JKDLX002 枪机
|
|
||||||
//3 JKDLX003 球机
|
|
||||||
//4 JKDLX004 人脸识别
|
|
||||||
|
|
||||||
//设备类型,1 枪机,2球机,3热成像,4单兵,5全景,6无人机
|
|
||||||
if (deviceType != null) {
|
|
||||||
//设备状态,1在线,2离线
|
|
||||||
switch (deviceType) {
|
|
||||||
case 1:
|
|
||||||
return "JKDLX002";
|
|
||||||
case 2:
|
|
||||||
return "JKDLX003";
|
|
||||||
case 3:
|
|
||||||
return "JKDLX003";
|
|
||||||
case 4:
|
|
||||||
return "JKDLX003";
|
|
||||||
case 5:
|
|
||||||
return "JKDLX003";
|
|
||||||
case 6:
|
|
||||||
return "JKDLX003";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取中间库的监控点的视频在线状态
|
|
||||||
*
|
|
||||||
* @param status
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public Integer getStatus(Integer status) {
|
|
||||||
if (status != null) {
|
|
||||||
//设备状态,1在线,2离线
|
|
||||||
switch (status) {
|
|
||||||
case 1:
|
|
||||||
return 0;
|
|
||||||
case 2:
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取工程类别
|
|
||||||
*
|
|
||||||
* @param projectType
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public String getGclb(Integer projectType) {
|
|
||||||
//1 FWJSGC 房屋建设工程
|
|
||||||
//2 SZ 市政
|
|
||||||
//3 ZX 装修
|
|
||||||
//其他委办局工地
|
|
||||||
//4 HB_SWGD 水务
|
|
||||||
//5 HB_YLGD 园林
|
|
||||||
//6 HB_JTGD 交通
|
|
||||||
//7 HB_FJ 房建
|
|
||||||
//8 HB_HNTGD 混凝土搅拌站
|
|
||||||
//9 HB_JZLJXNC 建筑垃圾消纳场
|
|
||||||
//10 HB_QT 其他
|
|
||||||
|
|
||||||
//工程类别,1房建,2市政,3安装,4装饰,5公路,6冶炼,7矿山,8化工石油,9水利水电,10电力,11农林,12港口与航道,13航天航空,14通信,15其他
|
|
||||||
String s = null;
|
|
||||||
switch (projectType) {
|
|
||||||
case 1:
|
|
||||||
s = "FWJSGC";
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
s = "SZ";
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
s = "ZX";
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
s = "ZX";
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
s = "HB_JTGD";
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
s = "HB_QT";
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
s = "HB_QT";
|
|
||||||
break;
|
|
||||||
case 8:
|
|
||||||
s = "HB_QT";
|
|
||||||
break;
|
|
||||||
case 9:
|
|
||||||
s = "HB_SWGD";
|
|
||||||
break;
|
|
||||||
case 10:
|
|
||||||
s = "HB_YLGD";
|
|
||||||
break;
|
|
||||||
case 11:
|
|
||||||
s = "HB_QT";
|
|
||||||
break;
|
|
||||||
case 12:
|
|
||||||
s = "HB_QT";
|
|
||||||
break;
|
|
||||||
case 13:
|
|
||||||
s = "HB_QT";
|
|
||||||
break;
|
|
||||||
case 14:
|
|
||||||
s = "HB_QT";
|
|
||||||
break;
|
|
||||||
case 15:
|
|
||||||
s = "HB_QT";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,335 @@
|
|||||||
|
package com.zhgd.xmgl.modules.yunlianwanwu.middle.service;
|
||||||
|
|
||||||
|
import cn.hutool.http.HttpUtil;
|
||||||
|
import com.gexin.fastjson.JSON;
|
||||||
|
import com.gexin.fastjson.TypeReference;
|
||||||
|
import com.zhgd.jeecg.common.api.vo.Result;
|
||||||
|
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
|
||||||
|
import com.zhgd.xmgl.modules.video.mapper.VideoItemMapper;
|
||||||
|
import com.zhgd.xmgl.modules.yunlianwanwu.middle.entity.MiddleGcjkd;
|
||||||
|
import com.zhgd.xmgl.modules.yunlianwanwu.middle.entity.MiddleGcxx;
|
||||||
|
import com.zhgd.xmgl.modules.yunlianwanwu.middle.entity.VideoItemConfigBo;
|
||||||
|
import com.zhgd.xmgl.modules.yunlianwanwu.middle.entity.bo.ProjectBo;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
public class MiddleService {
|
||||||
|
private String ipPort = "http://localhost:22333";
|
||||||
|
@Autowired
|
||||||
|
private ProjectMapper projectMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private VideoItemMapper videoItemMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 同步项目结构化数据到北京市政局
|
||||||
|
*/
|
||||||
|
public void syncProject() {
|
||||||
|
//从中间库接口获取所有项目
|
||||||
|
String url = ipPort + "/middle/middleGcxx/list";
|
||||||
|
log.info("getMiddleProject:{}", url);
|
||||||
|
String getMiddleProject = HttpUtil.get(url);
|
||||||
|
log.info("getMiddleProjectRs:{}", getMiddleProject);
|
||||||
|
if (StringUtils.isNotBlank(getMiddleProject)) {
|
||||||
|
Result result = JSON.parseObject(getMiddleProject, Result.class);
|
||||||
|
if (result.isSuccess()) {
|
||||||
|
Object rs = result.getResult();
|
||||||
|
if (rs != null) {
|
||||||
|
List<MiddleGcxx> middleGcxxes = JSON.parseObject(rs.toString(), new TypeReference<List<MiddleGcxx>>() {
|
||||||
|
});
|
||||||
|
Map<String, MiddleGcxx> idAndMiddleGcxxMap = middleGcxxes.stream().collect(Collectors.toMap(MiddleGcxx::getId, middleGcxx -> middleGcxx));
|
||||||
|
//从数据库获取所有项目
|
||||||
|
List<ProjectBo> projects = projectMapper.queryAllProjectAndVideoInfo();
|
||||||
|
//比较出新增和修改的项目,调用接口更新中间库
|
||||||
|
log.info("projects:{}", JSON.toJSONString(projects));
|
||||||
|
|
||||||
|
if (CollectionUtils.isNotEmpty(projects)) {
|
||||||
|
for (ProjectBo bo : projects) {
|
||||||
|
if (idAndMiddleGcxxMap.get(bo.getProjectSn()) == null) {
|
||||||
|
//新增
|
||||||
|
httpAddMiddleGcxx(bo);
|
||||||
|
} else {
|
||||||
|
//修改
|
||||||
|
httpUpdateMiddleGcxx(bo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.error("获取远程结构化数据失败(syncProject)");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 同步视频点位结构化数据到北京市政局
|
||||||
|
*/
|
||||||
|
public void syncMiddleGcjkd() {
|
||||||
|
//从中间库接口获取所有监控点位
|
||||||
|
String url = ipPort + "/middle/middleGcjkd/list";
|
||||||
|
log.info("getMiddleProject:{}", url);
|
||||||
|
String getMiddleGcjkd = HttpUtil.get(url);
|
||||||
|
log.info("getMiddleGcjkdRs:{}", getMiddleGcjkd);
|
||||||
|
if (StringUtils.isNotBlank(getMiddleGcjkd)) {
|
||||||
|
Result result = JSON.parseObject(getMiddleGcjkd, Result.class);
|
||||||
|
if (result.isSuccess()) {
|
||||||
|
Object rs = result.getResult();
|
||||||
|
if (rs != null) {
|
||||||
|
List<MiddleGcjkd> middleGcjkds = JSON.parseObject(rs.toString(), new TypeReference<List<MiddleGcjkd>>() {
|
||||||
|
});
|
||||||
|
Map<Long, MiddleGcjkd> idAndMiddleGcjkdMap = middleGcjkds.stream().collect(Collectors.toMap(middleGcjkd -> Long.valueOf(middleGcjkd.getId()), m -> m));
|
||||||
|
//从数据库获取所有监控点位
|
||||||
|
List<VideoItemConfigBo> videoItemBos = videoItemMapper.selectDeviceDetailAndProjectSnList();
|
||||||
|
if (CollectionUtils.isNotEmpty(videoItemBos)) {
|
||||||
|
for (VideoItemConfigBo bo : videoItemBos) {
|
||||||
|
//比较出新增和修改的监控点位,调用接口更新中间库
|
||||||
|
Long itemId = bo.getItemId();
|
||||||
|
if (idAndMiddleGcjkdMap.get(itemId) == null) {
|
||||||
|
//新增
|
||||||
|
httpAddMiddleGcjkd(bo);
|
||||||
|
} else {
|
||||||
|
//修改
|
||||||
|
httpUpdateMiddleGcjkd(bo);
|
||||||
|
}
|
||||||
|
//修改完删除
|
||||||
|
idAndMiddleGcjkdMap.remove(itemId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//设置中间库中多余的摄像头为deleted状态
|
||||||
|
if (idAndMiddleGcjkdMap.size() != 0) {
|
||||||
|
for (Map.Entry<Long, MiddleGcjkd> entry : idAndMiddleGcjkdMap.entrySet()) {
|
||||||
|
MiddleGcjkd value = entry.getValue();
|
||||||
|
value.setDeleted(1);
|
||||||
|
doHttpUpdateMiddleGcjkd(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.error("获取远程结构化数据失败(syncMiddleGcjkd)");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void httpAddMiddleGcjkd(VideoItemConfigBo bo) {
|
||||||
|
MiddleGcjkd middleGcjkd = getMiddleGcjkdByVideoItem(bo);
|
||||||
|
String url = ipPort + "/middle/middleGcjkd/add";
|
||||||
|
String body = JSON.toJSONString(middleGcjkd);
|
||||||
|
log.info("add_url:{},body:{}", url, body);
|
||||||
|
String post = HttpUtil.post(url, body);
|
||||||
|
log.info("rt:{}", post);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void httpUpdateMiddleGcjkd(VideoItemConfigBo bo) {
|
||||||
|
MiddleGcjkd middleGcjkd = getMiddleGcjkdByVideoItem(bo);
|
||||||
|
doHttpUpdateMiddleGcjkd(middleGcjkd);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void doHttpUpdateMiddleGcjkd(MiddleGcjkd middleGcjkd) {
|
||||||
|
String url = ipPort + "/middle/middleGcjkd/edit";
|
||||||
|
String body = JSON.toJSONString(middleGcjkd);
|
||||||
|
log.info("update_url:{},body:{}", url, body);
|
||||||
|
String post = HttpUtil.post(url, body);
|
||||||
|
log.info("rt:{}", post);
|
||||||
|
}
|
||||||
|
|
||||||
|
private MiddleGcjkd getMiddleGcjkdByVideoItem(VideoItemConfigBo bo) {
|
||||||
|
MiddleGcjkd middleGcjkd = new MiddleGcjkd();
|
||||||
|
middleGcjkd.setId(String.valueOf(bo.getItemId()));
|
||||||
|
middleGcjkd.setGcid(bo.getProjectSn());
|
||||||
|
middleGcjkd.setJkdbh(bo.getMonitoringPointCode());
|
||||||
|
middleGcjkd.setJkdmc(bo.getVideoName());
|
||||||
|
middleGcjkd.setJkdzt(getStatus(bo.getDeviceState()));
|
||||||
|
middleGcjkd.setJkdlx(getDeviceType(bo.getDeviceType()));
|
||||||
|
middleGcjkd.setJkdwz(bo.getMonitoringPointLocation());
|
||||||
|
String latitude = bo.getLatitude();
|
||||||
|
String longitude = bo.getLongitude();
|
||||||
|
middleGcjkd.setXzb(latitude);
|
||||||
|
middleGcjkd.setYzb(longitude);
|
||||||
|
middleGcjkd.setYszb(longitude + "," + latitude);
|
||||||
|
middleGcjkd.setYszblx("WGS-84");
|
||||||
|
middleGcjkd.setDeleted(0);
|
||||||
|
middleGcjkd.setCreateDateTime(bo.getCreateTime());
|
||||||
|
middleGcjkd.setDatasource(String.valueOf(15));
|
||||||
|
return middleGcjkd;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void httpAddMiddleGcxx(ProjectBo project) {
|
||||||
|
MiddleGcxx middleGcxx = getMiddleGcxxByProject(project);
|
||||||
|
String url = ipPort + "/middle/middleGcxx/add";
|
||||||
|
String body = JSON.toJSONString(middleGcxx);
|
||||||
|
log.info("url:{},body:{}", url, body);
|
||||||
|
String post = HttpUtil.post(url, body);
|
||||||
|
log.info("rt:{}", post);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void httpUpdateMiddleGcxx(ProjectBo project) {
|
||||||
|
MiddleGcxx middleGcxx = getMiddleGcxxByProject(project);
|
||||||
|
String url = ipPort + "/middle/middleGcxx/edit";
|
||||||
|
String body = JSON.toJSONString(middleGcxx);
|
||||||
|
log.info("url:{},body:{}", url, body);
|
||||||
|
String post = HttpUtil.post(url, body);
|
||||||
|
log.info("rt:{}", post);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取中间库
|
||||||
|
*
|
||||||
|
* @param bo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private MiddleGcxx getMiddleGcxxByProject(ProjectBo bo) {
|
||||||
|
MiddleGcxx middleGcxx = new MiddleGcxx();
|
||||||
|
middleGcxx.setId(bo.getProjectSn());//id存的是projectSn
|
||||||
|
middleGcxx.setGcmc(bo.getProjectName());
|
||||||
|
middleGcxx.setGcjsdd(bo.getProjectName());
|
||||||
|
middleGcxx.setSgxkzh(bo.getConstructionPermit());
|
||||||
|
middleGcxx.setGcssjd(bo.getStreetTownshipTown());
|
||||||
|
middleGcxx.setGcssjdbm(bo.getStreetTownshipTownCode());
|
||||||
|
middleGcxx.setGclb(getGclb(bo.getProjectType()));
|
||||||
|
middleGcxx.setSxtazzt(bo.getSxtazzt());
|
||||||
|
middleGcxx.setSxtazrq(bo.getSxtazrq());
|
||||||
|
middleGcxx.setQxbm(bo.getAreaCode());
|
||||||
|
middleGcxx.setXzb(bo.getLatitude());
|
||||||
|
middleGcxx.setYzb(bo.getLongitude());
|
||||||
|
middleGcxx.setYszb(bo.getLongitude() + "," + bo.getLatitude());
|
||||||
|
middleGcxx.setYszblx("WGS-84");
|
||||||
|
middleGcxx.setDatasource(String.valueOf(15));
|
||||||
|
return middleGcxx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取设备类型
|
||||||
|
*
|
||||||
|
* @param deviceType
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String getDeviceType(Integer deviceType) {
|
||||||
|
//1 JKDLX001 微卡口
|
||||||
|
//2 JKDLX002 枪机
|
||||||
|
//3 JKDLX003 球机
|
||||||
|
//4 JKDLX004 人脸识别
|
||||||
|
|
||||||
|
//设备类型,1 枪机,2球机,3热成像,4单兵,5全景,6无人机
|
||||||
|
if (deviceType != null) {
|
||||||
|
//设备状态,1在线,2离线
|
||||||
|
switch (deviceType) {
|
||||||
|
case 1:
|
||||||
|
return "JKDLX002";
|
||||||
|
case 2:
|
||||||
|
return "JKDLX003";
|
||||||
|
case 3:
|
||||||
|
return "JKDLX003";
|
||||||
|
case 4:
|
||||||
|
return "JKDLX003";
|
||||||
|
case 5:
|
||||||
|
return "JKDLX003";
|
||||||
|
case 6:
|
||||||
|
return "JKDLX003";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取中间库的监控点的视频在线状态
|
||||||
|
*
|
||||||
|
* @param status
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Integer getStatus(Integer status) {
|
||||||
|
if (status != null) {
|
||||||
|
//设备状态,1在线,2离线
|
||||||
|
switch (status) {
|
||||||
|
case 1:
|
||||||
|
return 0;
|
||||||
|
case 2:
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取工程类别
|
||||||
|
*
|
||||||
|
* @param projectType
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String getGclb(Integer projectType) {
|
||||||
|
//1 FWJSGC 房屋建设工程
|
||||||
|
//2 SZ 市政
|
||||||
|
//3 ZX 装修
|
||||||
|
//其他委办局工地
|
||||||
|
//4 HB_SWGD 水务
|
||||||
|
//5 HB_YLGD 园林
|
||||||
|
//6 HB_JTGD 交通
|
||||||
|
//7 HB_FJ 房建
|
||||||
|
//8 HB_HNTGD 混凝土搅拌站
|
||||||
|
//9 HB_JZLJXNC 建筑垃圾消纳场
|
||||||
|
//10 HB_QT 其他
|
||||||
|
|
||||||
|
//工程类别,1房建,2市政,3安装,4装饰,5公路,6冶炼,7矿山,8化工石油,9水利水电,10电力,11农林,12港口与航道,13航天航空,14通信,15其他
|
||||||
|
String s = null;
|
||||||
|
switch (projectType) {
|
||||||
|
case 1:
|
||||||
|
s = "FWJSGC";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
s = "SZ";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
s = "ZX";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
s = "ZX";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
s = "HB_JTGD";
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
s = "HB_QT";
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
s = "HB_QT";
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
s = "HB_QT";
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
s = "HB_SWGD";
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
s = "HB_YLGD";
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
s = "HB_QT";
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
s = "HB_QT";
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
s = "HB_QT";
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
s = "HB_QT";
|
||||||
|
break;
|
||||||
|
case 15:
|
||||||
|
s = "HB_QT";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,35 @@
|
|||||||
|
package com.zhgd.xmgl.modules.yunlianwanwu.middle.task;
|
||||||
|
|
||||||
|
import com.zhgd.xmgl.modules.yunlianwanwu.middle.service.MiddleService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import net.javacrumbs.shedlock.core.SchedulerLock;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 云联万物同步结构化数据任务
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class MiddleTask {
|
||||||
|
@Value("${spring.profiles.active}")
|
||||||
|
private String activeProfile;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MiddleService middleService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 云联万物同步结构化数据任务,每天同步一次
|
||||||
|
*/
|
||||||
|
@SchedulerLock(name = "aysnMiddle", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5)
|
||||||
|
@Scheduled(cron = "0 0 2 * * ?")
|
||||||
|
public void aysnMiddle() {
|
||||||
|
//判断是云联万物
|
||||||
|
if (activeProfile.equals("ylww")) {
|
||||||
|
middleService.syncProject();
|
||||||
|
middleService.syncMiddleGcjkd();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user