From cbf58af46037e1ab3056359e8e02a5d4ec7a5833 Mon Sep 17 00:00:00 2001 From: weidong Date: Sun, 7 Jan 2024 10:30:13 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=8E=A8=E9=80=81=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=8D=95=E7=8B=AC=E4=B8=80=E4=B8=AA=E5=BE=AE=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=202=E3=80=81=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E7=9B=B8=E5=85=B3=E7=95=8C=E9=9D=A2=EF=BC=8C=E5=8C=85?= =?UTF-8?q?=E6=8B=AC=E6=8E=A8=E9=80=81=E4=BB=A3=E7=90=86=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E3=80=81=E6=8E=A8=E9=80=81=E8=AE=B0=E5=BD=95=203=E3=80=81?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E6=8E=A8=E9=80=81=E5=8F=82=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=EF=BC=8C=E8=AE=BE=E5=A4=87=E7=9A=84=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E5=8F=82=E6=95=B0=E9=80=89=E6=8B=A9=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E4=BB=A3=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/imdroid/secapi/dto/FwdRecord.java | 2 + .../com/imdroid/secapi/dto/GnssDevice.java | 2 +- .../com/imdroid/secapi/dto/GnssGroupFwd.java | 22 +-- .../com/imdroid/beidou_fwd/BeidouFwdApp.java | 23 +++ .../imdroid/beidou_fwd/service/TCPClient.java | 13 +- .../imdroid/beidou_fwd/task/Forwarder.java | 44 +++++ .../beidou_fwd/task/GXXfzForwarder.java | 111 +++++------ .../beidou_fwd/task/ThirdPartyForwarder.java | 11 -- .../src/main/resources/application.properties | 27 +++ .../calc/MultiLineGNSSCalcService.java | 4 + .../executor/D342LocationMessageExecutor.java | 1 + .../imdroid/sideslope/fwd/XFZTcpClient.java | 115 ------------ .../imdroid/sideslope/fwd/XFZTcpMessage.java | 158 ---------------- .../sideslope/fwd/XFZTcpMessageHandler.java | 50 ----- .../message/D342LocationMessage.java | 1 + .../sideslope/sal/DbDeviceServiceImpl.java | 2 + .../com/imdroid/sideslope/sal/Device.java | 1 + .../controller/GnssDeviceController.java | 2 +- .../beidou/controller/GnssFwdController.java | 57 ++++++ .../controller/GnssGroupController.java | 53 ------ sec-beidou/src/main/resources/db/schema.sql | 23 +-- .../src/main/resources/static/api/init.json | 20 ++ .../resources/templates/page/fwd_agents.html | 62 ++++++ .../resources/templates/page/fwd_records.html | 68 +++++++ .../templates/page/gnss_group_cfg.html | 116 +----------- .../templates/page/table/gnss_add_dev.html | 6 +- .../page/table/gnss_add_group_fwd.html | 176 ------------------ .../src/main/resources/tianheng.keystore | Bin 2579 -> 0 bytes 28 files changed, 400 insertions(+), 770 deletions(-) create mode 100644 sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/BeidouFwdApp.java create mode 100644 sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/Forwarder.java rename sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/ForwardGnssTask.java => sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/GXXfzForwarder.java (71%) delete mode 100644 sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/ThirdPartyForwarder.java create mode 100644 sec-beidou-fwd/src/main/resources/application.properties delete mode 100644 sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/XFZTcpClient.java delete mode 100644 sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/XFZTcpMessage.java delete mode 100644 sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/XFZTcpMessageHandler.java create mode 100644 sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssFwdController.java create mode 100644 sec-beidou/src/main/resources/templates/page/fwd_agents.html create mode 100644 sec-beidou/src/main/resources/templates/page/fwd_records.html delete mode 100644 sec-beidou/src/main/resources/templates/page/table/gnss_add_group_fwd.html delete mode 100644 sec-beidou/src/main/resources/tianheng.keystore diff --git a/sec-api/src/main/java/com/imdroid/secapi/dto/FwdRecord.java b/sec-api/src/main/java/com/imdroid/secapi/dto/FwdRecord.java index 2c7992c1..97707ae2 100644 --- a/sec-api/src/main/java/com/imdroid/secapi/dto/FwdRecord.java +++ b/sec-api/src/main/java/com/imdroid/secapi/dto/FwdRecord.java @@ -28,4 +28,6 @@ public class FwdRecord { LocalDateTime starttime; LocalDateTime endtime; Short state; + private String fwd_group_id; + } diff --git a/sec-api/src/main/java/com/imdroid/secapi/dto/GnssDevice.java b/sec-api/src/main/java/com/imdroid/secapi/dto/GnssDevice.java index d127d578..20f9f660 100644 --- a/sec-api/src/main/java/com/imdroid/secapi/dto/GnssDevice.java +++ b/sec-api/src/main/java/com/imdroid/secapi/dto/GnssDevice.java @@ -38,7 +38,7 @@ public class GnssDevice { private String project_id; private Integer group_id = 1; //组参数,缓存自动下发 private Integer calc_group_id = 1; - private Integer fwd_group_id = 0; + private String fwd_group_id; private Boolean syn; //组参数是否同步 private String pictures; diff --git a/sec-api/src/main/java/com/imdroid/secapi/dto/GnssGroupFwd.java b/sec-api/src/main/java/com/imdroid/secapi/dto/GnssGroupFwd.java index 1e25643a..efe91073 100644 --- a/sec-api/src/main/java/com/imdroid/secapi/dto/GnssGroupFwd.java +++ b/sec-api/src/main/java/com/imdroid/secapi/dto/GnssGroupFwd.java @@ -1,24 +1,22 @@ package com.imdroid.secapi.dto; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import java.time.LocalDateTime; + @Data @TableName(value = "gnssgroupfwd") public class GnssGroupFwd { - public static final short FWD_TYPE_NONE = 0; //不转发 - public static final short FWD_TYPE_CALC = 1; //按模板转发解算结果 - public static final short FWD_TYPE_RAW = 2; //转发原始数据(D331/D341) - public static final short FWD_TYPE_NTRIP = 3; //按ntrip协议转发 + public static final String FWD_TYPE_NONE = "不推送"; //不转发 + @TableId(value = "id", type = IdType.AUTO) Integer id; + String name; String description; - Short type1; - String addr1; - Integer port1; - String template1; - Short type2; - String addr2; - Integer port2; - String template2; + LocalDateTime updatetime; Integer device_num; + Integer fwd_device_num; + Boolean result; } diff --git a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/BeidouFwdApp.java b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/BeidouFwdApp.java new file mode 100644 index 00000000..60fc9aa0 --- /dev/null +++ b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/BeidouFwdApp.java @@ -0,0 +1,23 @@ +package com.imdroid.beidou_fwd; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.annotation.ComponentScan; + + +/** + * @author Layton + * @date 2023/1/31 20:33 + */ +@SpringBootApplication(scanBasePackages = {"com.imdroid"}) +@MapperScan({"com.imdroid.secapi","com.imdroid.beidou.entity"}) +@ComponentScan({"com.imdroid.*"}) +@EntityScan({"com.imdroid.*"}) +public class BeidouFwdApp { + + public static void main(String[] args) { + SpringApplication.run(BeidouFwdApp.class, args); + } +} diff --git a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/service/TCPClient.java b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/service/TCPClient.java index af909225..dc155997 100644 --- a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/service/TCPClient.java +++ b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/service/TCPClient.java @@ -17,13 +17,11 @@ public class TCPClient { private final Logger logger = LoggerFactory.getLogger(this.getClass()); //@Value("${xfz.server.host}") - private String host="171.106.48.63"; + private String host; //@Value("${xfz.server.port}") - private int port=52000; + private int port; - //@Value("${xfz.server.data.send}") - private boolean send=true; private Bootstrap bootstrap; private EventLoopGroup group; @@ -33,7 +31,9 @@ public class TCPClient { new Thread(this::connect, "xfz-tcp-client").start(); } - private void init() { + public void init(String dest_addr, int dest_port) { + host = dest_addr; + port = dest_port; //客户端需要一个事件循环组 group = new NioEventLoopGroup(); //创建客户端启动对象 @@ -83,9 +83,6 @@ public class TCPClient { public void writeAndFlush(String json) { - if (!send) { - return; - } String str = "#" + json + "!"; ByteBuf buf = Unpooled.buffer(); buf.writeBytes(str.getBytes(StandardCharsets.UTF_8)); diff --git a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/Forwarder.java b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/Forwarder.java new file mode 100644 index 00000000..51b95377 --- /dev/null +++ b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/Forwarder.java @@ -0,0 +1,44 @@ +package com.imdroid.beidou_fwd.task; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.imdroid.secapi.dto.GnssGroupFwd; +import com.imdroid.secapi.dto.GnssGroupFwdMapper; + +import java.time.LocalDateTime; + +public class Forwarder { + String name; + String description; + GnssGroupFwdMapper fwdMapper; + void init(String name, String desc, GnssGroupFwdMapper fwdMapper){ + this.name = name; + this.description = desc; + this.fwdMapper = fwdMapper; + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("name",name); + GnssGroupFwd gnssGroupFwd = fwdMapper.selectOne(queryWrapper); + if(gnssGroupFwd == null){ + gnssGroupFwd = new GnssGroupFwd(); + gnssGroupFwd.setName(name); + gnssGroupFwd.setDescription(description); + gnssGroupFwd.setDevice_num(0); + fwdMapper.insert(gnssGroupFwd); + } + else{ + gnssGroupFwd.setDescription(description); + fwdMapper.updateById(gnssGroupFwd); + } + } + + void updateFwd(int fwd_num, boolean isFwdOK){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("name",name); + GnssGroupFwd gnssGroupFwd = fwdMapper.selectOne(queryWrapper); + if(gnssGroupFwd != null){ + gnssGroupFwd.setFwd_device_num(fwd_num); + gnssGroupFwd.setResult(isFwdOK); + gnssGroupFwd.setUpdatetime(LocalDateTime.now()); + fwdMapper.updateById(gnssGroupFwd); + } + } +} diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/ForwardGnssTask.java b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/GXXfzForwarder.java similarity index 71% rename from sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/ForwardGnssTask.java rename to sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/GXXfzForwarder.java index 990b8038..3557dccf 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/ForwardGnssTask.java +++ b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/GXXfzForwarder.java @@ -1,17 +1,21 @@ -package com.imdroid.sideslope.fwd; +package com.imdroid.beidou_fwd.task; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.imdroid.secapi.dto.*; +import com.imdroid.beidou_fwd.entity.XFZData; +import com.imdroid.beidou_fwd.service.TCPClient; import com.imdroid.common.util.GsonUtil; import com.imdroid.common.util.NumberUtils; +import com.imdroid.secapi.dto.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import javax.annotation.PostConstruct; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -19,29 +23,37 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -/** - * @author Layton - * @date 2020/12/23 17:14 - */ @Component @Configuration @EnableScheduling -public class ForwardGnssTask { +public class GXXfzForwarder extends Forwarder{ + private final Logger logger = LoggerFactory.getLogger(GXXfzForwarder.class); - private final Logger logger = LoggerFactory.getLogger(ForwardGnssTask.class); + static final String forwarderName = "广西新发展"; + @Value("${xfz.server.host}") + private String host; + + @Value("${xfz.server.port}") + private int port; @Autowired private GnssDeviceMapper deviceMapper; @Autowired private GnssCalcDataMapper gnssDataMapper; - @Autowired - private XFZTcpClient xfzTcpClient; + private TCPClient xfzTcpClient; @Autowired private FwdRecordMapper fwdRecordsMapper; final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + @Autowired + private GnssGroupFwdMapper fwdMapper; + + @PostConstruct + void registerMe(){ + init(forwarderName, "TCP "+host+":"+port, fwdMapper); + } /** * 每半小时转发GNSS解算结果 */ @@ -49,15 +61,20 @@ public class ForwardGnssTask { private void forwardGnss() { // 1.按项目检索最近半小时的解算结果记录,推送Enable为true的记录 // 2.如果某终端最近半小时没有数据,则记录本次时间为待补传时间 - forwardGnssToXFZ(1); + if(xfzTcpClient == null){ + xfzTcpClient = new TCPClient(); + xfzTcpClient.init(host, port); + xfzTcpClient.start(); + } + forwardGnssToXFZ(forwarderName); } - //@Scheduled(cron = "0 40 * * * ?") // 每小时的40分钟执行一次 - @Scheduled(cron = "0 0/20 * * * ?") // 每20分钟执行一次 + @Scheduled(cron = "0 40 * * * ?") // 每小时的40分钟执行一次 + //@Scheduled(cron = "0 0/20 * * * ?") // 每20分钟执行一次 private void forwardHistoryGnss() { // 1.从转发记录表里检索待补传记录时间表,含设备Id,时间段 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("tenantid",1); + queryWrapper.eq("fwd_group_id",forwarderName); queryWrapper.eq("state",FwdRecord.STATE_UPLOAD_DONE); List fwdRecordsList = fwdRecordsMapper.selectList(queryWrapper); // 2.检索这个这个时间段的解算结果,如果有数据则单个终端转发,标志记录为已补传 @@ -76,7 +93,7 @@ public class ForwardGnssTask { } } - private void forwardGnssToXFZ(int tenantId) { + private void forwardGnssToXFZ(String fwdGroupId) { LocalDateTime nowTime = LocalDateTime.now(); ConcurrentHashMap> projects = new ConcurrentHashMap<>(); @@ -85,7 +102,7 @@ public class ForwardGnssTask { String sendAfterTime = nowTime.minusMinutes(30).format(formatter); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("tenantid", tenantId); + queryWrapper.eq("fwd_group_id", fwdGroupId); List gnssDeviceList = deviceMapper.selectList(queryWrapper); List recordsToSend; for(GnssDevice device:gnssDeviceList){ @@ -111,33 +128,42 @@ public class ForwardGnssTask { } // 按项目打包推送 + int totalSendNum = 0; for (Map.Entry> entry: projects.entrySet()){ - SendToXFZ(entry.getKey(), entry.getValue()); - // 记录推送 - FwdRecord fwdRecord = new FwdRecord(); - fwdRecord.setProject_id(entry.getKey()); - fwdRecord.setTenantid(1); - fwdRecord.setDevicenum((short) entry.getValue().size()); - fwdRecord.setStarttime(nowTime); - fwdRecord.setState(FwdRecord.STATE_FWD_DONE); - fwdRecordsMapper.insert(fwdRecord); + int sendNum = SendToXFZ(entry.getKey(), entry.getValue()); + + if(sendNum > 0) { + totalSendNum += sendNum; + // 记录推送 + FwdRecord fwdRecord = new FwdRecord(); + fwdRecord.setProject_id(entry.getKey()); + fwdRecord.setTenantid(1); + fwdRecord.setDevicenum((short) entry.getValue().size()); + fwdRecord.setStarttime(nowTime); + fwdRecord.setState(FwdRecord.STATE_FWD_DONE); + fwdRecordsMapper.insert(fwdRecord); + } } + // 更新推送信息 + if(totalSendNum>0) updateFwd(totalSendNum, true); + } - void SendToXFZ(String projectId, List records){ - if(records.size() == 0) return; + int SendToXFZ(String projectId, List records){ + int sendNum = 0; + if(records.size() == 0) return 0; - XFZTcpMessage xfzTcpMessage = new XFZTcpMessage(); + XFZData xfzTcpMessage = new XFZData(); xfzTcpMessage.setProjectID(projectId); xfzTcpMessage.setWorkPointID(projectId); - List dataList = new ArrayList<>(records.size()); + List dataList = new ArrayList<>(records.size()); xfzTcpMessage.setData(dataList); for(GnssCalcData locationRecord: records) { if(!locationRecord.getEnabled()) continue; - XFZTcpMessage.Data data = new XFZTcpMessage.Data(); + XFZData.Data data = new XFZData.Data(); dataList.add(data); data.setDataTime(locationRecord.getCreatetime().format(dateFormatter)); data.setDevNum(locationRecord.getDeviceid()); @@ -146,11 +172,13 @@ public class ForwardGnssTask { data.setX(NumberUtils.scale(locationRecord.getRb562e() * 0.001, 5)); data.setY(NumberUtils.scale(locationRecord.getRb562n() * 0.001, 5)); data.setZ(NumberUtils.scale(locationRecord.getRb562d() * 0.001, 5)); + sendNum++; } String json = GsonUtil.toJson(xfzTcpMessage); xfzTcpClient.writeAndFlush(json); logger.info("project " + projectId + ": push calculation result to XFZ"); logger.info(json); + return sendNum; } void BatchToXFZ(String projectId, List records){ @@ -173,27 +201,4 @@ public class ForwardGnssTask { } - void SendOneToXFZ(String projectId, GnssCalcData calcData, String sendTime){ - XFZTcpMessage xfzTcpMessage = new XFZTcpMessage(); - xfzTcpMessage.setProjectID(projectId); - xfzTcpMessage.setWorkPointID(projectId); - - List dataList = new ArrayList<>(); - xfzTcpMessage.setData(dataList); - - XFZTcpMessage.Data data = new XFZTcpMessage.Data(); - dataList.add(data); - data.setDataTime(sendTime); - data.setDevNum(calcData.getDeviceid()); - data.setDevtype("GNSS"); - // 单位由mm转化为m - data.setX(NumberUtils.scale(calcData.getRb562e() * 0.001, 5)); - data.setY(NumberUtils.scale(calcData.getRb562n() * 0.001, 5)); - data.setZ(NumberUtils.scale(calcData.getRb562d() * 0.001, 5)); - String json = GsonUtil.toJson(xfzTcpMessage); - xfzTcpClient.writeAndFlush(json); - logger.info("project " + projectId + ": push one calculation result to XFZ"); - logger.info(json); - } - } diff --git a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/ThirdPartyForwarder.java b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/ThirdPartyForwarder.java deleted file mode 100644 index 87973440..00000000 --- a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/ThirdPartyForwarder.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.imdroid.beidou_fwd.task; - -public class ThirdPartyForwarder { - public void forward(){ - // 1.根据模板查询转发组列表 - // 2.根据转发组号查询转发地址、协议、设备列表 - // 3.查询设备最后一条解算记录 - // 4.按项目打包解算记录 - // 5.向目的地址按模板推送解算记录 - } -} diff --git a/sec-beidou-fwd/src/main/resources/application.properties b/sec-beidou-fwd/src/main/resources/application.properties new file mode 100644 index 00000000..3549c813 --- /dev/null +++ b/sec-beidou-fwd/src/main/resources/application.properties @@ -0,0 +1,27 @@ +server.port=9906 +server.servlet.context-path=/gnss + +spring.application.name=fwd-gnss +spring.application.build=20240106 + +spring.jpa.show-sql = true +spring.jpa.hibernate.ddl-auto = none +spring.jpa.database-platform = org.hibernate.dialect.MySQLDialect +spring.datasource.url = jdbc:mysql://localhost:3306/beidou?characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +spring.datasource.username = admin +spring.datasource.password = DBMgr_2022 +spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver + +spring.jackson.dateFormat = yyyy-MM-dd HH:mm:ss +spring.jackson.time-zone = GMT+8 + +app.format.date = yyyy-MM-dd +app.format.time = HH:mm:ss +app.format.datetime = yyyy-MM-dd HH:mm:ss + +mybatis-plus.configuration.map-underscore-to-camel-case=false + +#xfz.server.host = 171.106.48.63 +#xfz.server.port = 52000 +xfz.server.host = 115.236.153.174 +xfz.server.port = 31035 \ No newline at end of file diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/MultiLineGNSSCalcService.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/MultiLineGNSSCalcService.java index 54038ff5..9331b0df 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/MultiLineGNSSCalcService.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/MultiLineGNSSCalcService.java @@ -3,6 +3,7 @@ package com.imdroid.sideslope.calc; import com.imdroid.secapi.client.BeidouClient; import com.imdroid.secapi.dto.FwdRecord; import com.imdroid.secapi.dto.FwdRecordMapper; +import com.imdroid.secapi.dto.GnssGroupFwd; import com.imdroid.secapi.dto.GnssStatus; import com.imdroid.sideslope.message.BaseMessage; import com.imdroid.sideslope.message.D341LocationMessage; @@ -100,6 +101,8 @@ public class MultiLineGNSSCalcService { void createFwdReord(D342LocationMessage d342Message){ String deviceId = d342Message.getId(); // 查找这个设备是否有项目号 + if(d342Message.getFwdId()==null || d342Message.getFwdId().equals(GnssGroupFwd.FWD_TYPE_NONE)) return; + FwdRecord fwdRecord = new FwdRecord(); fwdRecord.setDeviceid(deviceId); fwdRecord.setTenantid(d342Message.getTenantId()); @@ -107,6 +110,7 @@ public class MultiLineGNSSCalcService { fwdRecord.setState(FwdRecord.STATE_UPLOADING); fwdRecord.setStarttime(d342Message.getOriginalTime()); fwdRecord.setDevicenum((short) 1); + fwdRecord.setFwd_group_id(d342Message.getFwdId()); fwdRecordMap.put(deviceId, fwdRecord); } diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D342LocationMessageExecutor.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D342LocationMessageExecutor.java index 7e9e919b..57771dfd 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D342LocationMessageExecutor.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D342LocationMessageExecutor.java @@ -30,6 +30,7 @@ public class D342LocationMessageExecutor implements Executor { gnssCalcService.calc(message); diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/XFZTcpClient.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/XFZTcpClient.java deleted file mode 100644 index 5b3e93d5..00000000 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/XFZTcpClient.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.imdroid.sideslope.fwd; - -import io.netty.bootstrap.Bootstrap; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; -import io.netty.channel.*; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.SocketChannel; -import io.netty.channel.socket.nio.NioSocketChannel; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.stereotype.Component; - -import java.nio.charset.StandardCharsets; -import java.util.concurrent.TimeUnit; - -/** - * @author Layton - * @date 2023/2/18 20:35 - */ -@Component -public class XFZTcpClient implements ApplicationRunner { - - private final Logger logger = LoggerFactory.getLogger(this.getClass()); - - //@Value("${xfz.server.host}") - private String host="171.106.48.63"; - - //@Value("${xfz.server.port}") - private int port=52000; - - //@Value("${xfz.server.data.send}") - private boolean send=true; - - private Bootstrap bootstrap; - private EventLoopGroup group; - private Channel channel; - - public void start() { - new Thread(this::connect, "xfz-tcp-client").start(); - } - - private void init() { - //客户端需要一个事件循环组 - group = new NioEventLoopGroup(); - //创建客户端启动对象 - // bootstrap 可重用, 只需在NettyClient实例化的时候初始化即可. - bootstrap = new Bootstrap(); - bootstrap.group(group) - .channel(NioSocketChannel.class) - .handler(new ChannelInitializer() { - @Override - protected void initChannel(SocketChannel ch) throws Exception { - //加入处理器 - ch.pipeline().addLast(new XFZTcpMessageHandler(XFZTcpClient.this)); - } - }); - } - - public void connect() { - logger.info("netty client starting"); - //启动客户端去连接服务器端 - try { - ChannelFuture cf = bootstrap.connect(host, port); - cf.addListener(new ChannelFutureListener() { - @Override - public void operationComplete(ChannelFuture future) throws Exception { - if (!future.isSuccess()) { - //重连交给后端线程执行 - future.channel().eventLoop().schedule(() -> { - logger.info("xfz tcp client reconnect"); - try { - connect(); - } catch (Exception e) { - e.printStackTrace(); - } - }, 3000, TimeUnit.MILLISECONDS); - } else { - logger.info("xfz tcp client start success!"); - } - } - }); - //对通道关闭进行监听 - this.channel = cf.channel(); - this.channel.closeFuture().sync(); - } catch (Exception e) { - logger.error("xfz netty client error:", e); - } - } - - - public void writeAndFlush(String json) { - if (!send) { - return; - } - String str = "#" + json + "!"; - ByteBuf buf = Unpooled.buffer(); - buf.writeBytes(str.getBytes(StandardCharsets.UTF_8)); - channel.writeAndFlush(buf).addListener(future -> { - if (future.isSuccess()) { - logger.info("send {} to xfz server succeed.", str); - } else { - logger.info("send {} to xfz server failed.", str); - } - }); - } - - @Override - public void run(ApplicationArguments args) throws Exception { - init(); - start(); - } -} diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/XFZTcpMessage.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/XFZTcpMessage.java deleted file mode 100644 index c5538817..00000000 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/XFZTcpMessage.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.imdroid.sideslope.fwd; - -import java.util.List; - -/** - * @author Layton - * @date 2023/2/19 9:16 - */ -public class XFZTcpMessage { - - private String ProjectID; - - private String WorkPointID; - - private String WorkPointLng = "0"; - - private String WorkPointLat = "0"; - - private List data; - - - public static class Data { - private String DevNum; - - private String Devtype; - - private String DevLng = "0"; - - private String DevLat = "0"; - - private double x; - - private double y; - - private double z; - - private String DataTime; - - public Data() { - - } - - public Data(String devNum, String devtype, String devLng, String devLat, double x, double y, double z, String dataTime) { - DevNum = devNum; - Devtype = devtype; - DevLng = devLng; - DevLat = devLat; - this.x = x; - this.y = y; - this.z = z; - DataTime = dataTime; - } - - public String getDevNum() { - return DevNum; - } - - public void setDevNum(String devNum) { - DevNum = devNum; - } - - public String getDevtype() { - return Devtype; - } - - public void setDevtype(String devtype) { - Devtype = devtype; - } - - public String getDevLng() { - return DevLng; - } - - public void setDevLng(String devLng) { - DevLng = devLng; - } - - public String getDevLat() { - return DevLat; - } - - public void setDevLat(String devLat) { - DevLat = devLat; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public String getDataTime() { - return DataTime; - } - - public void setDataTime(String dataTime) { - DataTime = dataTime; - } - } - - public String getProjectID() { - return ProjectID; - } - - public void setProjectID(String projectID) { - ProjectID = projectID; - } - - public String getWorkPointID() { - return WorkPointID; - } - - public void setWorkPointID(String workPointID) { - WorkPointID = workPointID; - } - - public String getWorkPointLng() { - return WorkPointLng; - } - - public void setWorkPointLng(String workPointLng) { - WorkPointLng = workPointLng; - } - - public String getWorkPointLat() { - return WorkPointLat; - } - - public void setWorkPointLat(String workPointLat) { - WorkPointLat = workPointLat; - } - - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } -} diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/XFZTcpMessageHandler.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/XFZTcpMessageHandler.java deleted file mode 100644 index 40602c5a..00000000 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/fwd/XFZTcpMessageHandler.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.imdroid.sideslope.fwd; - -import com.imdroid.common.util.DataTypeUtil; -import io.netty.buffer.ByteBuf; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author Layton - * @date 2023/2/18 20:36 - */ -public class XFZTcpMessageHandler extends SimpleChannelInboundHandler { - - private final Logger logger = LoggerFactory.getLogger(this.getClass()); - - private final XFZTcpClient tcpClient; - - public XFZTcpMessageHandler(XFZTcpClient tcpClient) { - this.tcpClient = tcpClient; - } - - @Override - protected void channelRead0(ChannelHandlerContext channelHandlerContext, ByteBuf buf) throws Exception { - if (logger.isDebugEnabled()) { - byte[] data = new byte[buf.readableBytes()]; - buf.getBytes(0, data); - logger.debug("receive gxxfz server message:" + DataTypeUtil.getHexString(data)); - } - } - - @Override - public void channelActive(ChannelHandlerContext ctx) throws Exception { - logger.info("xfz tcp channel active"); - } - - @Override - public void channelInactive(ChannelHandlerContext ctx) throws Exception { - logger.info("xfz tcp channel inactive"); - tcpClient.connect(); - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { - logger.error("XFZTcpMessageHandler error: {}", cause.toString()); - ctx.close(); - } - -} diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/message/D342LocationMessage.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/message/D342LocationMessage.java index 99ad7c04..27c0d09d 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/message/D342LocationMessage.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/message/D342LocationMessage.java @@ -18,6 +18,7 @@ public class D342LocationMessage extends BaseMessage { LocalDateTime originalTime; //补传前记录的时间 List messageList = new ArrayList<>(); String projectId; + String fwdId; @Override public void decodeBody(ByteBuf src) { // d3 51 length(2048+6) device_id(4bytes) seq(2bytes) data diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/DbDeviceServiceImpl.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/DbDeviceServiceImpl.java index 767ee01a..8f0f62f0 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/DbDeviceServiceImpl.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/DbDeviceServiceImpl.java @@ -35,6 +35,7 @@ public class DbDeviceServiceImpl implements DeviceService { device.setProjectId(gnssDevice.getProject_id()); device.setCalcGroupId(gnssDevice.getCalc_group_id()); device.setOpMode(gnssDevice.getOpmode()); + device.setFwdId(gnssDevice.getFwd_group_id()); return device; } @@ -53,6 +54,7 @@ public class DbDeviceServiceImpl implements DeviceService { device.setProjectId(gnssDevice.getProject_id()); device.setCalcGroupId(gnssDevice.getCalc_group_id()); device.setOpMode(gnssDevice.getOpmode()); + device.setFwdId(gnssDevice.getFwd_group_id()); deviceList.add(device); } return deviceList; diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/Device.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/Device.java index 66848ef8..702f94fb 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/Device.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/Device.java @@ -28,6 +28,7 @@ public class Device { private String parentId; private String projectId; + private String fwdId; private Integer deviceType; diff --git a/sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssDeviceController.java b/sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssDeviceController.java index 3a16fc2f..2c9ffd50 100644 --- a/sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssDeviceController.java +++ b/sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssDeviceController.java @@ -205,7 +205,7 @@ public class GnssDeviceController extends BasicController{ } } - void updateFwdGroupAssociatedNum(int groupId) { + void updateFwdGroupAssociatedNum(String groupId) { // 更新推送参数组 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("fwd_group_id", groupId); diff --git a/sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssFwdController.java b/sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssFwdController.java new file mode 100644 index 00000000..234b4042 --- /dev/null +++ b/sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssFwdController.java @@ -0,0 +1,57 @@ +package com.imdroid.beidou.controller; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.imdroid.secapi.dto.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +@Controller +public class GnssFwdController { + @Autowired + GnssGroupFwdMapper gnssGroupFwdMapper; + @Autowired + FwdRecordMapper fwdRecordMapper; + + /********* 推送页面 *********/ + @RequestMapping("/page/fwd_agents") + public String fwdAgents() { + return "/page/fwd_agents"; + } + + @RequestMapping("/page/fwd_records") + public String fwdRecords() { + return "/page/fwd_records"; + } + + /********* 基本参数组 *********/ + @RequestMapping("/fwd/agents") + @ResponseBody + public JSONObject listAgents(int page, int limit) { + Page pageable = new Page<>(page, limit); + IPage cs = gnssGroupFwdMapper.selectPage(pageable, null); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("code", 0); + jsonObject.put("msg", ""); + jsonObject.put("count", cs.getTotal()); + jsonObject.put("data", cs.getRecords()); + return jsonObject; + } + + @RequestMapping("/fwd/records") + @ResponseBody + public JSONObject listRecords(int page, int limit) { + Page pageable = new Page<>(page, limit); + IPage cs = fwdRecordMapper.selectPage(pageable, null); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("code", 0); + jsonObject.put("msg", ""); + jsonObject.put("count", cs.getTotal()); + jsonObject.put("data", cs.getRecords()); + return jsonObject; + } +} diff --git a/sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssGroupController.java b/sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssGroupController.java index aaf616c1..2cd5bf32 100644 --- a/sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssGroupController.java +++ b/sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssGroupController.java @@ -15,8 +15,6 @@ public class GnssGroupController { GnssGroupMapper gnssGroupMapper; @Autowired GnssGroupCalcMapper gnssGroupCalcMapper; - @Autowired - GnssGroupFwdMapper gnssGroupFwdMapper; @Autowired GnssDeviceMapper deviceMapper; @@ -32,11 +30,6 @@ public class GnssGroupController { return "/page/table/gnss_add_group_calc"; } - @RequestMapping("/page/table/gnss_add_group_fwd") - public String gnssAddPushGroup() { - return "/page/table/gnss_add_group_fwd"; - } - @RequestMapping("/page/gnss_group_cfg") public String gnssGroupCfg() { return "/page/gnss_group_cfg"; @@ -145,50 +138,4 @@ public class GnssGroupController { } else return HttpResult.ok(); } - /********* 转发参数组 *********/ - @RequestMapping("/gnss/group/list_fwd") - @ResponseBody - public JSONObject listFwd(int page, int limit) { - Page pageable = new Page<>(page, limit); - IPage cs = gnssGroupFwdMapper.selectPage(pageable, null); - - JSONObject jsonObject = new JSONObject(); - jsonObject.put("code", 0); - jsonObject.put("msg", ""); - jsonObject.put("count", cs.getTotal()); - jsonObject.put("data", cs.getRecords()); - return jsonObject; - } - - @PostMapping("/gnss/group/update_fwd") - @ResponseBody - public String updateFwd(@RequestBody JSONObject object) { - int num = 0; - GnssGroupFwd group = JSONObject.toJavaObject(object,GnssGroupFwd.class); - if(null != gnssGroupFwdMapper.selectById(group.getId())) { - num = gnssGroupFwdMapper.updateById(group); - } - else{ - num = gnssGroupFwdMapper.insert(group); - } - if (num == 0) { - return HttpResult.failed(); - } else return HttpResult.ok(); - } - - @PostMapping("/gnss/group/delete_fwd") - @ResponseBody - public String deleteFwd(@RequestParam int del_id) { - GnssGroupFwd group = gnssGroupFwdMapper.selectById(del_id); - if(group == null) return HttpResult.failed(); - - if(group.getDevice_num() >0){ - return HttpResult.result(HttpResult.HTTP_RSP_FAILED,"this group is in used"); - } - - int num = gnssGroupFwdMapper.deleteById(del_id); - if (num == 0) { - return HttpResult.failed(); - } else return HttpResult.ok(); - } } diff --git a/sec-beidou/src/main/resources/db/schema.sql b/sec-beidou/src/main/resources/db/schema.sql index f534b682..875c7996 100644 --- a/sec-beidou/src/main/resources/db/schema.sql +++ b/sec-beidou/src/main/resources/db/schema.sql @@ -49,7 +49,7 @@ CREATE TABLE IF NOT EXISTS `gnssdevices` ( `project_id` varchar(64) DEFAULT NULL COMMENT '项目id', `group_id` int DEFAULT 1, `calc_group_id` int DEFAULT 1, - `fwd_group_id` int DEFAULT 0, + `fwd_group_id` varchar(64) DEFAULT NULL, `syn` bit(1) DEFAULT 0 COMMENT '是否已同步', `pictures` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) @@ -80,19 +80,13 @@ CREATE TABLE IF NOT EXISTS `gnssgroupcalc` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `gnssgroupfwd` ( - `id` int NOT NULL, - `description` varchar(64) DEFAULT NULL, - `type1` smallint DEFAULT 0, - `protocol1` smallint DEFAULT 0, - `addr1` varchar(128) DEFAULT NULL, - `port1` int DEFAULT 0, - `template1` varchar(64) DEFAULT NULL, - `type2` smallint DEFAULT 0, - `protocol2` smallint DEFAULT 0, - `addr2` varchar(128) DEFAULT NULL, - `port2` int DEFAULT 0, - `template2` varchar(64) DEFAULT NULL, + `id` int AUTO_INCREMENT, + `name` varchar(64) DEFAULT NULL, + `description` varchar(256) DEFAULT NULL, + `updatetime` datetime DEFAULT NULL, `device_num` int DEFAULT 0, + `fwd_device_num` int DEFAULT 0, + `result` bit(1) DEFAULT 0 COMMENT '推送是否成功', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; @@ -245,9 +239,10 @@ CREATE TABLE IF NOT EXISTS `fwdrecords` ( `tenantid` int NOT NULL, `project_id` varchar(64) DEFAULT NULL COMMENT '项目id', `devicenum` smallint NOT NULL, - `deviceid` varchar(20) NOT NULL, + `deviceid` varchar(20) DEFAULT NULL, `starttime` datetime DEFAULT NULL, `endtime` datetime DEFAULT NULL, `state` smallint DEFAULT 0, + `fwd_group_id` varchar(64) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/sec-beidou/src/main/resources/static/api/init.json b/sec-beidou/src/main/resources/static/api/init.json index 5c3d06e2..055ba01d 100644 --- a/sec-beidou/src/main/resources/static/api/init.json +++ b/sec-beidou/src/main/resources/static/api/init.json @@ -104,6 +104,26 @@ "target": "_self" } ] + }, + { + "title": "数据推送", + "href": "", + "icon": "fa fa-send-o", + "target": "_self", + "child": [ + { + "title": "转发代理", + "href": "page/fwd_agents", + "icon": "fa fa-minus", + "target": "_self" + }, + { + "title": "推送记录", + "href": "page/fwd_records", + "icon": "fa fa-minus", + "target": "_self" + } + ] } ] }, diff --git a/sec-beidou/src/main/resources/templates/page/fwd_agents.html b/sec-beidou/src/main/resources/templates/page/fwd_agents.html new file mode 100644 index 00000000..2a8e199b --- /dev/null +++ b/sec-beidou/src/main/resources/templates/page/fwd_agents.html @@ -0,0 +1,62 @@ + + + + + 转发代理 + + + + + + + +
+
+
+
代理信息
+
+
+
+
+
+ +
+ + + + + + \ No newline at end of file diff --git a/sec-beidou/src/main/resources/templates/page/fwd_records.html b/sec-beidou/src/main/resources/templates/page/fwd_records.html new file mode 100644 index 00000000..c6d8dc45 --- /dev/null +++ b/sec-beidou/src/main/resources/templates/page/fwd_records.html @@ -0,0 +1,68 @@ + + + + + 推送记录 + + + + + + + +
+
+
+
推送记录
+
+
+
+
+
+ +
+ + + + + + \ No newline at end of file diff --git a/sec-beidou/src/main/resources/templates/page/gnss_group_cfg.html b/sec-beidou/src/main/resources/templates/page/gnss_group_cfg.html index b32d562d..fb1fe8c2 100644 --- a/sec-beidou/src/main/resources/templates/page/gnss_group_cfg.html +++ b/sec-beidou/src/main/resources/templates/page/gnss_group_cfg.html @@ -25,13 +25,7 @@
- -
-
推送参数
-
-
-
-
+ - - \ No newline at end of file diff --git a/sec-beidou/src/main/resources/templates/page/table/gnss_add_dev.html b/sec-beidou/src/main/resources/templates/page/table/gnss_add_dev.html index 575f53f0..8624b397 100644 --- a/sec-beidou/src/main/resources/templates/page/table/gnss_add_dev.html +++ b/sec-beidou/src/main/resources/templates/page/table/gnss_add_dev.html @@ -77,11 +77,11 @@
- +
diff --git a/sec-beidou/src/main/resources/templates/page/table/gnss_add_group_fwd.html b/sec-beidou/src/main/resources/templates/page/table/gnss_add_group_fwd.html deleted file mode 100644 index 67e3ed18..00000000 --- a/sec-beidou/src/main/resources/templates/page/table/gnss_add_group_fwd.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - 转发参数 - - - - - - - - - -
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- - -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- - -
-
- - -
-
- -
-
-
- - - - - - \ No newline at end of file diff --git a/sec-beidou/src/main/resources/tianheng.keystore b/sec-beidou/src/main/resources/tianheng.keystore deleted file mode 100644 index 25b351a5808080799d0c62ae4dae6cf6884fc5b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2579 zcmY+EcQ_l08pcUN1T}-kOrl22#4bv08m)?XP^z_w*<+?gN^DAFG^7+q?b2h`oMh1Iyh#w|6Q@OG6IT;pzmlR=m?EsX8pf?`dkPE6+eoK zT!rV*v2Cj(%Uw~$xvzgF1Aq+uS3yM3Fn~rTfMS1z8hCwZ{{%2~3B2FxuvLkeOt+X* z23y2P>Ax1K!mo)3#(Fu5r?jUz_lDJLL@rb;Va2`kw;juvYrfR&r3)D+df?1M1$}B- zd8KOks<{^K1uAxKsc&a99_T$FGXO(3Q{KB;2FCBG@V=r-Jx64_Eo`Kn0ldI34*(Zf zt|<;MX~cKaRy}<69!-Dh3e*hR_$Fmi0)A1EFO!h#X)Q5*3004ZLS>pN#B&M4v&_z4 za5mBd+ZoEz#zzK?#FKwH!1L&2D+b>2%o1tt4*Xh}CGx1`yi^gCvJ#3sR;4W}OzVNS-X_BAZT3YxTHzZM`+Un`0W zo?E8UfAVnIPTi`h_WYGu#GDGbYxvO9g6oTkbM~FO&FDoN45VCkaJ#&@K$t4Z(%95^ zJFX2iPI1$CeZ=wQed9~awiUl&yLCR-xeCTS3_(QfXD4EM?&jkJp-S|LnPgF-%W!sp zL0hSL8E9`)sN+ge;8IVxE?7G#Dn;E%4k1moFb|TjZG1W^6~HKVC&U#`4`#I(TJrYR ze-w`jkjJ|y8tbHR^sbS`qJxjjJFnf?c-NAxv3X3meXnlW+(m8_z=@RwYR6IPlD0B@ zQ;(2JD{;k&bF*$PalP6hvce(yUK|ibU5ISwbMk^Fz1N; zau)|4$KabNe%~y!39{#w`Dn#`0fS(V0@+kBrLAX1?0IwJ{^wn&B$d4u~q6a`GRW!CThvz!7)*Zm(r5 z7v;ug$~0KFC)~p^-V?k@FVS#Pi2QitGZZT~JL4WG4Q4~q zMHotFo}g@{t;O!gcVY(eTjhp$X!{WvtOZ0-F}SwTQv_Wm%VhS?X5P$s*pj&9;Z?t7 zpW|PW)vFnlOI%Kvtxc2L_um~xhCX&TgP;sx$>6 z!mS3Qlrt+vDE%k9Q+F3QecqPxCVSACR?4iWu6*q%ad5=q-`4jld z2vW5_8zizNjBLs7{GKb}ysXrNWsQSfrJJH>8`4dC?TdGxrJ}Vi0oH(jJRD1^Q_wwI zEkLckB7~=T)@BRpz?2H_Nc^Cl!%I|Mo(}kfuvgXW2FsS`sG24#b2FWbs(p{jJU16+ zLwOR?ccw}svU)Am4mViiWnB-PT8G=&LD*X!u0rBFtN>y6Zfy=r^rX3hV zwAkOMgg`MoqFfBO7`z!=8T=W%7~D^{CmQijfe!-(@mPD~-QgHDWsI6SS_7@2dMZSa z_TMEi^C?s1Pc0OHk>OO3|0In6qAc@&D7)6$v_J0ICui#?j*HCP6cG(P*8MMKV~N1c z$NXfDYoqSN>$z$`q1n{oJ zMzzyzr=`YVuE;!b%*3+p;3Za1NX&tNJs>zbynD8gJN>bPit)362Q`9)#ztm$ zIN)PDR;U7o9VMxarYxCTCl)H%!Hs{i=zipJo4($l-!0tpbH3~qZ(+%v?}6-D(RtRY zmnvF(>jwOmbugpc{?wH#{yzHVAESFUTg`%8+^dj z-Zdqs@b8jYL9?QV#*sl&0yHkSGF6HP+%=_7cYNV~^-fmKh>twPU7~eQJu~Jgy#8&G zEvon2(3vhA6Wl_Yn0UzDt{K-o8eOWE#a}%C;R7^ey1~TYtCHm#3eOCFu1t}!d40Cb zjbD%p`X<-v8b=c8%NLlJ{?A^4krqA77~k*qFR1;o4?k2Ut&`zY<_p|&x!~=I7;reP zd6dEpUg>7pC{4xXGCg<(#wkHk(QUiND=92_h0N5WJG5xeIpULicid6*jC)*ZUi3LF}PD(ue*Ofr?SC+}V^p z+@`}G(b!YxV>$DFC*BBGUH#tj4kY$0s=-qX1Ii!7(V;@iu?6X7)kbRhO!b9 zRtzo-a(;7NyqWoCBA&ov9Q!QkM-nTU$6>fd=qz&RgqrM^NGRW|5ZDb=Pw