From f9616330f5f8766f372fc4eccf61024f5958fedd Mon Sep 17 00:00:00 2001 From: GUO <1923636941@qq.com> Date: Tue, 21 Mar 2023 08:22:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=91=E8=81=94=E4=B8=87=E7=89=A9=E4=B8=AD?= =?UTF-8?q?=E9=97=B4=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basicdata/mapper/xml/BaseModuleMapper.xml | 2 +- .../modules/project/mapper/ProjectMapper.java | 3 + .../project/mapper/xml/ProjectMapper.xml | 10 + .../yunlianwanwu/middle/MiddleController.java | 304 +++++++++++------- .../middle/entity/MiddleGcxx.java | 2 - .../middle/entity/bo/ProjectBo.java | 24 ++ 6 files changed, 229 insertions(+), 116 deletions(-) create mode 100644 src/main/java/com/zhgd/xmgl/modules/yunlianwanwu/middle/entity/bo/ProjectBo.java diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/BaseModuleMapper.xml b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/BaseModuleMapper.xml index a8411d669..4bd882bc7 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/BaseModuleMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/BaseModuleMapper.xml @@ -3,7 +3,7 @@ + \ No newline at end of file diff --git a/src/main/java/com/zhgd/xmgl/modules/yunlianwanwu/middle/MiddleController.java b/src/main/java/com/zhgd/xmgl/modules/yunlianwanwu/middle/MiddleController.java index 3627484e8..4903a4614 100644 --- a/src/main/java/com/zhgd/xmgl/modules/yunlianwanwu/middle/MiddleController.java +++ b/src/main/java/com/zhgd/xmgl/modules/yunlianwanwu/middle/MiddleController.java @@ -1,35 +1,35 @@ package com.zhgd.xmgl.modules.yunlianwanwu.middle; -import cn.hutool.core.date.DateUtil; import cn.hutool.http.HttpUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.gexin.fastjson.JSON; -import com.zhgd.xmgl.modules.project.entity.Project; +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.entity.VideoItem; 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.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.math.BigDecimal; -import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** - * 云联万物的中间库的controller,只限自己调用 + * 云联万物的中间库的controller */ @RestController @RequestMapping("middle") @Slf4j public class MiddleController { - private String ip = "http://localhost:8081"; + private String ipPort = "http://localhost:22333"; @Autowired private ProjectMapper projectMapper; @@ -38,98 +38,170 @@ public class MiddleController { @GetMapping("/add/project") public void addProject() { - List projects = projectMapper.selectList(new QueryWrapper<>()); - log.info("projects:{}", JSON.toJSONString(projects)); - if (CollectionUtils.isNotEmpty(projects)) { - for (Project project : projects) { - MiddleGcxx middleGcxx = new MiddleGcxx(); - middleGcxx.setId(project.getProjectSn());//id存的是projectSn - middleGcxx.setGcmc(project.getProjectName()); - middleGcxx.setSgxkzh(project.getConstructionPermit()); - //middleGcxx.setSgzbhh(); - //middleGcxx.setSgdjyjh(); - middleGcxx.setGcjsdd(project.getProjectAddress()); - middleGcxx.setGcssjd("暂无"); - middleGcxx.setGcssjdbm("暂无"); - middleGcxx.setGcgm1(new BigDecimal(project.getProjectAcreage())); - //middleGcxx.setGcgm2(); - //middleGcxx.setHtjg(); - //middleGcxx.setHtbh(); - //middleGcxx.setHtgq(); - //middleGcxx.setHtkgrq(); - //middleGcxx.setHtjgrq(); - //middleGcxx.setGhxkzh(); - //middleGcxx.setTdpzwh(); - //middleGcxx.setTdpzspdw(); - //middleGcxx.setRfmj(); - //middleGcxx.setGctzxz(); - //middleGcxx.setLxpzwh(); - //middleGcxx.setFwts(); - //middleGcxx.setZxlb(); - middleGcxx.setGclb(getGclb(project.getProjectType())); - //middleGcxx.setGcxz(); - //middleGcxx.setGcxxjd(); - //middleGcxx.setZljdzt(); - //middleGcxx.setAqjdzt(); - //middleGcxx.setSxtazzt(); - //middleGcxx.setSxtazrq(); - //middleGcxx.setSxtccrq(); - middleGcxx.setQxbm("暂无"); - middleGcxx.setXzb(project.getLongitude()); - middleGcxx.setYzb(project.getLatitude()); - middleGcxx.setYszb(project.getLongitude() + "," + project.getLatitude()); - //middleGcxx.setYszblx(); - middleGcxx.setCreateDateTime(DateUtil.parseDateTime(project.getCreateTime())); - middleGcxx.setUpdateDateTime(new Date()); - middleGcxx.setDatasource(String.valueOf(project.getSourceType())); - //middleGcxx.setCjsj(); - //middleGcxx.setXgsj(); - String url = ip + "/middle/middleGcxx/add"; - String body = JSON.toJSONString(middleGcxx); - log.info("url:{},body:{}", url, body); - String post = HttpUtil.post(url, body); - log.info("rt:{}", post); + //从中间库接口获取所有项目 + 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 middleGcxxes = JSON.parseObject(rs.toString(), new TypeReference>() { + }); + Map idAndMiddleGcxxMap = middleGcxxes.stream().collect(Collectors.toMap(MiddleGcxx::getId, middleGcxx -> middleGcxx)); + //从数据库获取所有项目 + List 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") public void addMiddleGcjkd() { - List bos = videoItemMapper.selectDeviceDetailAndProjectSnList(); - log.info("bos:{}", JSON.toJSONString(bos)); - if (CollectionUtils.isNotEmpty(bos)) { - for (VideoItemConfigBo bo : bos) { - MiddleGcjkd middleGcjkd = new MiddleGcjkd(); - middleGcjkd.setId(String.valueOf(bo.getItemId())); - middleGcjkd.setGcid(bo.getProjectSn()); - //middleGcjkd.setSgxkzh(); - //middleGcjkd.setSgzbh(); - //middleGcjkd.setSgdjyjh(); - middleGcjkd.setJkdbh(bo.getSerialNumber()); - middleGcjkd.setJkdmc(bo.getVideoName()); - middleGcjkd.setJkdzt(getStatus(bo.getDeviceState())); - //middleGcjkd.setXzb(); - //middleGcjkd.setYzb(); - //middleGcjkd.setYszb(); - //middleGcjkd.setYszblx(); - middleGcjkd.setDeleted(0); - middleGcjkd.setCreateDateTime(bo.getCreateTime()); - middleGcjkd.setUpdateDateTime(new Date()); - middleGcjkd.setDatasource("暂无"); - //middleGcjkd.setCjsj(); - //middleGcjkd.setXgsj(); - //middleGcjkd.setSpbfdz(); - middleGcjkd.setJkdlx(getDeviceType(bo.getDeviceType())); - middleGcjkd.setJkdwz("暂无"); - String url = ip + "/middle/middleGcjkd/add"; - String body = JSON.toJSONString(middleGcjkd); - log.info("url:{},body:{}", url, body); - String post = HttpUtil.post(url, body); - log.info("rt:{}", post); + //从中间库接口获取所有监控点位 + 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 middleGcjkds = JSON.parseObject(rs.toString(), new TypeReference>() { + }); + Map idAndMiddleGcjkdMap = middleGcjkds.stream().collect(Collectors.toMap(middleGcjkd -> Long.valueOf(middleGcjkd.getId()), m -> m)); + //从数据库获取所有监控点位 + List 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 枪机 @@ -141,22 +213,28 @@ public class MiddleController { //设备状态,1在线,2离线 switch (deviceType) { case 1: - return "2"; + return "JKDLX002"; case 2: - return "3"; + return "JKDLX003"; case 3: - return "3"; + return "JKDLX003"; case 4: - return "3"; + return "JKDLX003"; case 5: - return "3"; + return "JKDLX003"; case 6: - return "3"; + return "JKDLX003"; } } return null; } + /** + * 获取中间库的监控点的视频在线状态 + * + * @param status + * @return + */ public Integer getStatus(Integer status) { if (status != null) { //设备状态,1在线,2离线 @@ -190,55 +268,55 @@ public class MiddleController { //10 HB_QT 其他 //工程类别,1房建,2市政,3安装,4装饰,5公路,6冶炼,7矿山,8化工石油,9水利水电,10电力,11农林,12港口与航道,13航天航空,14通信,15其他 - Integer s = null; + String s = null; switch (projectType) { case 1: - s = 1; + s = "FWJSGC"; break; case 2: - s = 2; + s = "SZ"; break; case 3: - s = 3; + s = "ZX"; break; case 4: - s = 3; + s = "ZX"; break; case 5: - s = 6; + s = "HB_JTGD"; break; case 6: - s = 10; + s = "HB_QT"; break; case 7: - s = 10; + s = "HB_QT"; break; case 8: - s = 10; + s = "HB_QT"; break; case 9: - s = 4; + s = "HB_SWGD"; break; case 10: - s = 5; + s = "HB_YLGD"; break; case 11: - s = 10; + s = "HB_QT"; break; case 12: - s = 10; + s = "HB_QT"; break; case 13: - s = 10; + s = "HB_QT"; break; case 14: - s = 10; + s = "HB_QT"; break; case 15: - s = 10; + s = "HB_QT"; break; } - return s != null ? String.valueOf(s) : null; + return s; } } diff --git a/src/main/java/com/zhgd/xmgl/modules/yunlianwanwu/middle/entity/MiddleGcxx.java b/src/main/java/com/zhgd/xmgl/modules/yunlianwanwu/middle/entity/MiddleGcxx.java index cb8a99b4c..ef07b3a97 100644 --- a/src/main/java/com/zhgd/xmgl/modules/yunlianwanwu/middle/entity/MiddleGcxx.java +++ b/src/main/java/com/zhgd/xmgl/modules/yunlianwanwu/middle/entity/MiddleGcxx.java @@ -200,12 +200,10 @@ public class MiddleGcxx implements Serializable { * 1:已安装摄像头 * 2:已拆除 */ - private Integer sxtazzt; /** * 摄像头安装日期 */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "摄像头安装日期") diff --git a/src/main/java/com/zhgd/xmgl/modules/yunlianwanwu/middle/entity/bo/ProjectBo.java b/src/main/java/com/zhgd/xmgl/modules/yunlianwanwu/middle/entity/bo/ProjectBo.java new file mode 100644 index 000000000..9db9d2a5b --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/yunlianwanwu/middle/entity/bo/ProjectBo.java @@ -0,0 +1,24 @@ +package com.zhgd.xmgl.modules.yunlianwanwu.middle.entity.bo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.zhgd.xmgl.modules.project.entity.Project; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +@Data +public class ProjectBo extends Project { + /** + * 摄像头安装状态0:未安装摄像头 + * 1:已安装摄像头 + * 2:已拆除 + */ + private Integer sxtazzt; + /** + * 摄像头安装日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "摄像头安装日期") + private java.util.Date sxtazrq; +}