{
+
+ private int serverPort;
+
+ public int getPort() {
+ return this.serverPort;
+ }
+
+ @Override
+ public void onApplicationEvent(WebServerInitializedEvent event) {
+ try {
+ InetAddress inetAddress = Inet4Address.getLocalHost();
+ this.serverPort = event.getWebServer().getPort();
+ log.info("项目启动成功!接口地址: http://" + inetAddress.getHostAddress() + ":" + serverPort + "/swagger-ui.html");
+ log.info("项目启动成功!接口地址: http://" + inetAddress.getHostAddress() + ":" + serverPort + "/doc.html");
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+}
diff --git a/src/main/java/com/wangbin/config/Swagger2Config.java b/src/main/java/com/wangbin/config/Swagger2Config.java
new file mode 100644
index 0000000..68d98fa
--- /dev/null
+++ b/src/main/java/com/wangbin/config/Swagger2Config.java
@@ -0,0 +1,44 @@
+package com.wangbin.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+/**
+ * Swagger2Config 配置文件
+ */
+@Configuration
+@EnableSwagger2
+public class Swagger2Config {
+ @Bean(value = "defaultApi2")
+ public Docket defaultApi2() {
+ Docket docket = new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(apiInfo())
+ //分组名称
+ .groupName("1.0版本")
+ .select()
+ //这里指定Controller扫描包路径
+ .apis(RequestHandlerSelectors.basePackage("com.wangbin.controller"))
+ .paths(PathSelectors.any())
+ .build();
+ return docket;
+ }
+
+
+ private ApiInfo apiInfo() {
+ return new ApiInfoBuilder()
+ .title("springboot")
+ .description("springboot")
+ .termsOfServiceUrl("http://localhost:9001")
+ .version("1.0")
+ .build();
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/wangbin/config/XxlJobConfig.java b/src/main/java/com/wangbin/config/XxlJobConfig.java
new file mode 100644
index 0000000..d632465
--- /dev/null
+++ b/src/main/java/com/wangbin/config/XxlJobConfig.java
@@ -0,0 +1,62 @@
+package com.wangbin.config;
+
+import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * xxl-job config
+ *
+ * @author xuxueli 2017-04-28
+ */
+@Configuration
+public class XxlJobConfig {
+ private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
+
+ @Value("${xxl.job.admin.addresses}")
+ private String adminAddresses;
+
+ @Value("${xxl.job.accessToken}")
+ private String accessToken;
+
+ @Value("${xxl.job.executor.appname}")
+ private String appname;
+
+ @Value("${xxl.job.executor.address}")
+ private String address;
+
+ @Value("${xxl.job.executor.ip}")
+ private String ip;
+
+ @Value("${xxl.job.executor.port}")
+ private int port;
+
+ @Value("${xxl.job.executor.logpath}")
+ private String logPath;
+
+ @Value("${xxl.job.executor.logretentiondays}")
+ private int logRetentionDays;
+
+
+ @Bean
+ public XxlJobSpringExecutor xxlJobExecutor() {
+ logger.info(">>>>>>>>>>> xxl-job config init.");
+ XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
+ xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
+ xxlJobSpringExecutor.setAppname(appname);
+ xxlJobSpringExecutor.setAddress(address);
+ xxlJobSpringExecutor.setIp(ip);
+ xxlJobSpringExecutor.setPort(port);
+ xxlJobSpringExecutor.setAccessToken(accessToken);
+ xxlJobSpringExecutor.setLogPath(logPath);
+ xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
+
+ return xxlJobSpringExecutor;
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/wangbin/constant/CommonConstant.java b/src/main/java/com/wangbin/constant/CommonConstant.java
new file mode 100644
index 0000000..de21b3a
--- /dev/null
+++ b/src/main/java/com/wangbin/constant/CommonConstant.java
@@ -0,0 +1,22 @@
+package com.wangbin.constant;
+
+public interface CommonConstant {
+
+
+ /**
+ * 低阈值
+ */
+ String VAL_LOW = "valLow";
+ /**
+ * 高阈值
+ */
+ String VAL_HEIGHT = "valHeight";
+
+ /**
+ * 水质 肖中平的水设备
+ */
+ String XZP_WATER = "xzp-water-";
+
+
+
+}
diff --git a/src/main/java/com/wangbin/constant/PollutionConstants.java b/src/main/java/com/wangbin/constant/PollutionConstants.java
new file mode 100644
index 0000000..ff0b093
--- /dev/null
+++ b/src/main/java/com/wangbin/constant/PollutionConstants.java
@@ -0,0 +1,36 @@
+package com.wangbin.constant;
+
+
+public interface PollutionConstants {
+ /**
+ * 水污染物
+ */
+ String WATER_ORIENT = "water_orient";
+
+ /**
+ * 水污染物
+ */
+ String WATER_LIVE = "water_live";
+
+ /**
+ * 气项监测
+ */
+ String AIR_SURV = "air";
+
+
+ /**
+ * 土壤监测
+ */
+ String SOIL_SURV = "soil";
+
+
+ String STINK = "stink";
+
+ String CAMERA = "camera";
+
+ /**
+ * 数据生成间隔 单位秒
+ */
+ Integer dataGenGap = 3600;
+}
+
diff --git a/src/main/java/com/wangbin/controller/ScEquZhibiaoController.java b/src/main/java/com/wangbin/controller/ScEquZhibiaoController.java
new file mode 100644
index 0000000..3c59e69
--- /dev/null
+++ b/src/main/java/com/wangbin/controller/ScEquZhibiaoController.java
@@ -0,0 +1,21 @@
+package com.wangbin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备指标 前端控制器
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-13
+ */
+@Controller
+@RequestMapping("/scEquZhibiao")
+public class ScEquZhibiaoController {
+
+}
+
diff --git a/src/main/java/com/wangbin/controller/SurvAlertRecordController.java b/src/main/java/com/wangbin/controller/SurvAlertRecordController.java
new file mode 100644
index 0000000..50004fe
--- /dev/null
+++ b/src/main/java/com/wangbin/controller/SurvAlertRecordController.java
@@ -0,0 +1,21 @@
+package com.wangbin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 预警记录表 前端控制器
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-13
+ */
+@Controller
+@RequestMapping("/survAlertRecord")
+public class SurvAlertRecordController {
+
+}
+
diff --git a/src/main/java/com/wangbin/controller/SurvDeviceDeployController.java b/src/main/java/com/wangbin/controller/SurvDeviceDeployController.java
new file mode 100644
index 0000000..1602b67
--- /dev/null
+++ b/src/main/java/com/wangbin/controller/SurvDeviceDeployController.java
@@ -0,0 +1,73 @@
+package com.wangbin.controller;
+
+
+import com.wangbin.common.Result;
+import com.wangbin.constant.CommonConstant;
+import com.wangbin.entity.SurvDeviceDeploy;
+import com.wangbin.entity.SurvTransdataOrientwater;
+import com.wangbin.service.ISurvDeviceDeployService;
+import com.wangbin.service.ISurvTransdataOrientwaterService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+/**
+ *
+ * 设备表
+ *
+ *
+ */
+@Controller
+@RequestMapping("/survDeviceDeploy")
+public class SurvDeviceDeployController {
+
+//
+// @Autowired
+// private ISurvDeviceDeployService deviceDeployService;
+// @Autowired
+// private ISurvTransdataOrientwaterService orientwaterService;
+//
+//
+// /**
+// * 控制球阀启停
+// * deployCode: xzp-water-01
+// * os:00-关 01-开
+// * qiufa:01、02
+// *
+// * 第一个设备
+// * AA 01 08 01 01 01 00 55 球阀1开 AA01080101010055
+// * AA 01 08 01 01 00 00 55 球阀1关 AA01080101000055
+// * AA 01 08 01 02 01 00 55 球阀2开 AA01080102010055
+// * AA 01 08 01 02 00 00 55 球阀2关 AA01080102000055
+// *第二个设备
+// * AA 02 08 01 01 01 00 55 球阀1开 AA02080101010055
+// * AA 02 08 01 01 00 00 55 球阀1关 AA02080101000055
+// * AA 02 08 01 02 01 00 55 球阀2开 AA02080102010055
+// * AA 02 08 01 02 00 00 55 球阀2关 AA02080102000055
+// */
+// @GetMapping("/kongzhi")
+// @ResponseBody
+// public Result> kongzhi(@RequestParam(name = "deployCode") String deployCode,@RequestParam(name = "os") String os,@RequestParam(name = "qiufa") String qiufa) throws InterruptedException {
+//
+// String deployCodeNum = deployCode.substring(CommonConstant.XZP_WATER.length());//xzp-water-01获取到01
+// StringBuilder sbuilder = new StringBuilder("AA");
+// sbuilder.append(deployCodeNum).append("0801").append(qiufa).append(os).append("0055");
+//
+// SurvDeviceDeploy deviceDeploy = deviceDeployService.getOneByCode(deployCode);
+// if(deviceDeploy != null){
+// deviceDeploy.setSendInfo(sbuilder.toString());
+// deviceDeployService.updateById(deviceDeploy);
+// }
+// Thread.sleep(3*1000);
+// SurvTransdataOrientwater transdataOrientwater = orientwaterService.getOneByDeviceCode(deployCode);
+// return Result.ok(transdataOrientwater);
+// }
+
+
+
+
+}
+
diff --git a/src/main/java/com/wangbin/controller/SurvHisdataAirController.java b/src/main/java/com/wangbin/controller/SurvHisdataAirController.java
new file mode 100644
index 0000000..f247b30
--- /dev/null
+++ b/src/main/java/com/wangbin/controller/SurvHisdataAirController.java
@@ -0,0 +1,21 @@
+package com.wangbin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 空气污染监测历史数据 前端控制器
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Controller
+@RequestMapping("/survHisdataAir")
+public class SurvHisdataAirController {
+
+}
+
diff --git a/src/main/java/com/wangbin/controller/SurvHisdataLivestockwaterController.java b/src/main/java/com/wangbin/controller/SurvHisdataLivestockwaterController.java
new file mode 100644
index 0000000..5e3597f
--- /dev/null
+++ b/src/main/java/com/wangbin/controller/SurvHisdataLivestockwaterController.java
@@ -0,0 +1,21 @@
+package com.wangbin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 畜禽水污染监测历史数据 前端控制器
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Controller
+@RequestMapping("/survHisdataLivestockwater")
+public class SurvHisdataLivestockwaterController {
+
+}
+
diff --git a/src/main/java/com/wangbin/controller/SurvHisdataLivestockwaterErrorController.java b/src/main/java/com/wangbin/controller/SurvHisdataLivestockwaterErrorController.java
new file mode 100644
index 0000000..52beaae
--- /dev/null
+++ b/src/main/java/com/wangbin/controller/SurvHisdataLivestockwaterErrorController.java
@@ -0,0 +1,21 @@
+package com.wangbin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author ${author}
+ * @since 2025-05-07
+ */
+@Controller
+@RequestMapping("/survHisdataLivestockwaterError")
+public class SurvHisdataLivestockwaterErrorController {
+
+}
+
diff --git a/src/main/java/com/wangbin/controller/SurvHisdataOrientwaterController.java b/src/main/java/com/wangbin/controller/SurvHisdataOrientwaterController.java
new file mode 100644
index 0000000..fe87338
--- /dev/null
+++ b/src/main/java/com/wangbin/controller/SurvHisdataOrientwaterController.java
@@ -0,0 +1,21 @@
+package com.wangbin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 面源水污染监测历史数据 前端控制器
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Controller
+@RequestMapping("/survHisdataOrientwater")
+public class SurvHisdataOrientwaterController {
+
+}
+
diff --git a/src/main/java/com/wangbin/controller/SurvHisdataOrientwaterErrorController.java b/src/main/java/com/wangbin/controller/SurvHisdataOrientwaterErrorController.java
new file mode 100644
index 0000000..a0589bb
--- /dev/null
+++ b/src/main/java/com/wangbin/controller/SurvHisdataOrientwaterErrorController.java
@@ -0,0 +1,21 @@
+package com.wangbin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author ${author}
+ * @since 2025-05-07
+ */
+@Controller
+@RequestMapping("/survHisdataOrientwaterError")
+public class SurvHisdataOrientwaterErrorController {
+
+}
+
diff --git a/src/main/java/com/wangbin/controller/SurvHisdataPestlightController.java b/src/main/java/com/wangbin/controller/SurvHisdataPestlightController.java
new file mode 100644
index 0000000..27cd955
--- /dev/null
+++ b/src/main/java/com/wangbin/controller/SurvHisdataPestlightController.java
@@ -0,0 +1,21 @@
+package com.wangbin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 杀虫灯历史数据 前端控制器
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Controller
+@RequestMapping("/survHisdataPestlight")
+public class SurvHisdataPestlightController {
+
+}
+
diff --git a/src/main/java/com/wangbin/controller/SurvHisdataSoilController.java b/src/main/java/com/wangbin/controller/SurvHisdataSoilController.java
new file mode 100644
index 0000000..e3a5ad7
--- /dev/null
+++ b/src/main/java/com/wangbin/controller/SurvHisdataSoilController.java
@@ -0,0 +1,21 @@
+package com.wangbin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 土壤污染监测历史数据 前端控制器
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Controller
+@RequestMapping("/survHisdataSoil")
+public class SurvHisdataSoilController {
+
+}
+
diff --git a/src/main/java/com/wangbin/controller/SurvTransdataAirController.java b/src/main/java/com/wangbin/controller/SurvTransdataAirController.java
new file mode 100644
index 0000000..1bb6def
--- /dev/null
+++ b/src/main/java/com/wangbin/controller/SurvTransdataAirController.java
@@ -0,0 +1,21 @@
+package com.wangbin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 空气污染监测数据 前端控制器
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Controller
+@RequestMapping("/survTransdataAir")
+public class SurvTransdataAirController {
+
+}
+
diff --git a/src/main/java/com/wangbin/controller/SurvTransdataLivestockwaterController.java b/src/main/java/com/wangbin/controller/SurvTransdataLivestockwaterController.java
new file mode 100644
index 0000000..83590f9
--- /dev/null
+++ b/src/main/java/com/wangbin/controller/SurvTransdataLivestockwaterController.java
@@ -0,0 +1,21 @@
+package com.wangbin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 畜禽水污染监测数据表 前端控制器
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Controller
+@RequestMapping("/survTransdataLivestockwater")
+public class SurvTransdataLivestockwaterController {
+
+}
+
diff --git a/src/main/java/com/wangbin/controller/SurvTransdataOrientwaterController.java b/src/main/java/com/wangbin/controller/SurvTransdataOrientwaterController.java
new file mode 100644
index 0000000..9caa53f
--- /dev/null
+++ b/src/main/java/com/wangbin/controller/SurvTransdataOrientwaterController.java
@@ -0,0 +1,21 @@
+package com.wangbin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 面源水污染监测数据表 前端控制器
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Controller
+@RequestMapping("/survTransdataOrientwater")
+public class SurvTransdataOrientwaterController {
+
+}
+
diff --git a/src/main/java/com/wangbin/controller/SurvTransdataPestlightController.java b/src/main/java/com/wangbin/controller/SurvTransdataPestlightController.java
new file mode 100644
index 0000000..b72da72
--- /dev/null
+++ b/src/main/java/com/wangbin/controller/SurvTransdataPestlightController.java
@@ -0,0 +1,21 @@
+package com.wangbin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 杀虫灯监测数据 前端控制器
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Controller
+@RequestMapping("/survTransdataPestlight")
+public class SurvTransdataPestlightController {
+
+}
+
diff --git a/src/main/java/com/wangbin/controller/SurvTransdataSoilController.java b/src/main/java/com/wangbin/controller/SurvTransdataSoilController.java
new file mode 100644
index 0000000..513ec2f
--- /dev/null
+++ b/src/main/java/com/wangbin/controller/SurvTransdataSoilController.java
@@ -0,0 +1,21 @@
+package com.wangbin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 土壤污染监测数据 前端控制器
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Controller
+@RequestMapping("/survTransdataSoil")
+public class SurvTransdataSoilController {
+
+}
+
diff --git a/src/main/java/com/wangbin/entity/ScEquZhibiao.java b/src/main/java/com/wangbin/entity/ScEquZhibiao.java
new file mode 100644
index 0000000..a41748e
--- /dev/null
+++ b/src/main/java/com/wangbin/entity/ScEquZhibiao.java
@@ -0,0 +1,100 @@
+package com.wangbin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ *
+ * 设备指标
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ScEquZhibiao extends Model {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 编号
+ */
+ @TableId(value = "id", type = IdType.ID_WORKER_STR)
+ private String id;
+
+ /**
+ * 创建者
+ */
+ @TableField("create_id")
+ private String createId;
+
+ /**
+ * 创建时间
+ */
+ @TableField("create_time")
+ private Date createTime;
+
+ /**
+ * 更新者
+ */
+ @TableField("update_id")
+ private String updateId;
+
+ /**
+ * 更新时间
+ */
+ @TableField("update_time")
+ private Date updateTime;
+
+ /**
+ * 设备主键
+ */
+ @TableField("equ_id")
+ private String equId;
+
+ /**
+ * 指标code
+ */
+ @TableField("code")
+ private String code;
+
+ /**
+ * 指标名称
+ */
+ @TableField("name")
+ private String name;
+
+ /**
+ * 低阈值
+ */
+ @TableField("val_low")
+ private Double valLow;
+
+ /**
+ * 高阈值
+ */
+ @TableField("val_height")
+ private Double valHeight;
+
+ /**
+ * 计量单位
+ */
+ @TableField("nuit")
+ private String nuit;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/src/main/java/com/wangbin/entity/SurvAlertRecord.java b/src/main/java/com/wangbin/entity/SurvAlertRecord.java
new file mode 100644
index 0000000..cb7fb8a
--- /dev/null
+++ b/src/main/java/com/wangbin/entity/SurvAlertRecord.java
@@ -0,0 +1,168 @@
+package com.wangbin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 预警记录表
+ *
+ *
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SurvAlertRecord extends Model {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.ID_WORKER_STR)
+ private String id;
+
+ /**
+ * 预警内容
+ */
+ @TableField("ALERT_CONTENT")
+ private String alertContent;
+
+ /**
+ * 预警所属单位
+ */
+ @TableField("CORP_ID")
+ private String corpId;
+
+ /**
+ * 预警数据类型;字典值,trans_data_type
+ */
+ @TableField("ALERT_DTATA_TYPE")
+ private String alertDtataType;
+
+ /**
+ * 触发预警数据ID
+ */
+ @TableField("ALERT_DATA_ID")
+ private String alertDataId;
+
+ /**
+ * 推送状态;0=未推送,1=已推送,2=推送失败
+ */
+ @TableField("PUSH_STATUS")
+ private String pushStatus;
+
+ /**
+ * 租户号
+ */
+ @TableField("TENANT_ID")
+ private String tenantId;
+
+ /**
+ * 乐观锁
+ */
+ @TableField("RE_VISION")
+ private Integer reVision;
+
+ /**
+ * 创建人
+ */
+ @TableField("CREATED_BY")
+ private String createdBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @TableField("UPDATED_BY")
+ private String updatedBy;
+
+ /**
+ * 逻辑删除
+ */
+ @TableField("IS_DEL")
+ private Integer isDel;
+
+ /**
+ * 更新时间
+ */
+ @TableField("UPDATED_TIME")
+ private Date updatedTime;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DEVICE_CODE")
+ private String deviceCode;
+
+ /**
+ * 监测站编号
+ */
+ @TableField("STATION_CDOE")
+ private String stationCdoe;
+
+ /**
+ * 部署编号(MN码)
+ */
+ @TableField("DEPLOY_CODE")
+ private String deployCode;
+
+ /**
+ * 部署ID
+ */
+ @TableField("DEPLOY_ID")
+ private String deployId;
+
+ /**
+ * 预警时间
+ */
+ @TableField("ALERT_TIME")
+ private Date alertTime;
+
+ /**
+ * 监测项
+ */
+ @TableField("ITEM_NAME")
+ private String itemName;
+
+ /**
+ * 站点名称
+ */
+ @TableField("STATION_NAME")
+ private String stationName;
+
+ /**
+ * 设备名称
+ */
+ @TableField("DEVICE_NAME")
+ private String deviceName;
+
+ /**
+ * 机构名称
+ */
+ @TableField("CORP_NAME")
+ private String corpName;
+
+ @TableField("ORG_MESSAGE")
+ private String orgMessage;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/src/main/java/com/wangbin/entity/SurvDeviceDeploy.java b/src/main/java/com/wangbin/entity/SurvDeviceDeploy.java
new file mode 100644
index 0000000..d33a6e0
--- /dev/null
+++ b/src/main/java/com/wangbin/entity/SurvDeviceDeploy.java
@@ -0,0 +1,177 @@
+package com.wangbin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 设备部署表
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SurvDeviceDeploy extends Model {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.ID_WORKER_STR)
+ private String id;
+
+ /**
+ * 设备部署编号
+ */
+ @TableField("DEPLOY_CODE")
+ private String deployCode;
+
+ /**
+ * 站点编号
+ */
+ @TableField("STATION_CODE")
+ private String stationCode;
+
+ /**
+ * 运行状态;0=正常,1=停机
+ */
+ @TableField("RUN_STATUS")
+ private String runStatus;
+
+ /**
+ * 通电情况;0=已通电,2=未通电
+ */
+ @TableField("POWER_STATUS")
+ private String powerStatus;
+
+ /**
+ * 上次同步时间
+ */
+ @TableField("LASTSYNC_TIME")
+ private Date lastsyncTime;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DEVICE_CODE")
+ private String deviceCode;
+
+ /**
+ * 部署描述
+ */
+ @TableField("DEPLOY_DES")
+ private String deployDes;
+
+ /**
+ * 设备数据流地址;摄像头类设备
+ */
+ @TableField("DEVICE_URL")
+ private String deviceUrl;
+
+ /**
+ * 设备排序
+ */
+ @TableField("SORT_NO")
+ private Integer sortNo;
+
+ /**
+ * 租户号
+ */
+ @TableField("TENANT_ID")
+ private String tenantId;
+
+ /**
+ * 乐观锁
+ */
+ @TableField("RE_VISION")
+ private Integer reVision;
+
+ /**
+ * 创建人
+ */
+ @TableField("CREATED_BY")
+ private String createdBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @TableField("UPDATED_BY")
+ private String updatedBy;
+
+ /**
+ * 逻辑删除
+ */
+ @TableField("IS_DEL")
+ private Integer isDel;
+
+ /**
+ * 更新时间
+ */
+ @TableField("UPDATED_TIME")
+ private Date updatedTime;
+
+ /**
+ * 部署类型,surv=监测设备部署,camera=摄像头设备部署
+ */
+ @TableField("DEPLOY_TYPE")
+ private String deployType;
+
+ /**
+ * 纬度
+ */
+ @TableField("DEVICE_LATITUDE")
+ private String deviceLatitude;
+
+ /**
+ * 经度
+ */
+ @TableField("DEVICE_LONGITUDE")
+ private String deviceLongitude;
+
+ /**
+ * 设备分组ID
+ */
+ @TableField("GROUP_ID")
+ private String groupId;
+
+
+ /**
+ * 0-不报警 1-报警
+ */
+ @TableField("IZ_BAOJING")
+ private String izBaojing;
+
+ @TableField("IP_ADDR")
+ private String ipAddr;
+ @TableField("PORT")
+ private String port;
+ @TableField("SEND_INFO")
+ private String sendInfo;
+
+
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/src/main/java/com/wangbin/entity/SurvHisdataAir.java b/src/main/java/com/wangbin/entity/SurvHisdataAir.java
new file mode 100644
index 0000000..2f8f113
--- /dev/null
+++ b/src/main/java/com/wangbin/entity/SurvHisdataAir.java
@@ -0,0 +1,191 @@
+package com.wangbin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 空气污染监测历史数据
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SurvHisdataAir extends Model {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.ID_WORKER_STR)
+ private String id;
+
+ /**
+ * 大气温度
+ */
+ @TableField("DATA_AIR_TEMP")
+ private String dataAirTemp;
+
+ /**
+ * 大气湿度
+ */
+ @TableField("DATA_AIR_WET")
+ private String dataAirWet;
+
+ /**
+ * 大气压力
+ */
+ @TableField("DATA_AIR_PRESS")
+ private String dataAirPress;
+
+ /**
+ * 雨量
+ */
+ @TableField("DATA_RAIN_FALL")
+ private String dataRainFall;
+
+ /**
+ * 风速
+ */
+ @TableField("DATA_WIND_SPEED")
+ private String dataWindSpeed;
+
+ /**
+ * 风向
+ */
+ @TableField("DATA_WIND_DIRECTION")
+ private String dataWindDirection;
+
+ /**
+ * 太阳全辐射
+ */
+ @TableField("DATA_SUN_FALLOUT")
+ private String dataSunFallout;
+
+
+ @TableField("DATA_SUN_TOTAL")
+ private String dataSunTotal;//辐射累计
+ @TableField("DATA_RAIN_TOTAL")
+ private String dataRainTotal;//雨量累计
+
+ /**
+ * 数据更新时间
+ */
+ @TableField("DATA_DATE_TIME")
+ private Date dataDateTime;
+
+ /**
+ * 数据类型;realTime=实时,dayTime=日数据,month=月数据,year=年数据
+ */
+ @TableField("DATA_GATHER_TYPE")
+ private String dataGatherType;
+
+ /**
+ * 站点ID
+ */
+ @TableField("STATION_ID")
+ private String stationId;
+
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private String deviceId;
+
+ /**
+ * 站点编号
+ */
+ @TableField("STATION_CODE")
+ private String stationCode;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DEVICE_CODE")
+ private String deviceCode;
+
+ /**
+ * 机构ID
+ */
+ @TableField("CORP_ID")
+ private String corpId;
+
+ /**
+ * 站点名称
+ */
+ @TableField("STATION_NAME")
+ private String stationName;
+
+ /**
+ * 设备名称
+ */
+ @TableField("DEVICE_NAME")
+ private String deviceName;
+
+ /**
+ * 转储时间
+ */
+ @TableField("TRANS_DATE")
+ private Date transDate;
+
+ /**
+ * 租户号
+ */
+ @TableField("TENANT_ID")
+ private String tenantId;
+
+ /**
+ * 乐观锁
+ */
+ @TableField("RE_VISION")
+ private Integer reVision;
+
+ /**
+ * 创建人
+ */
+ @TableField("CREATED_BY")
+ private String createdBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @TableField("UPDATED_BY")
+ private String updatedBy;
+
+ /**
+ * 逻辑删除
+ */
+ @TableField("IS_DEL")
+ private Integer isDel;
+
+ /**
+ * 更新时间
+ */
+ @TableField("UPDATED_TIME")
+ private Date updatedTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/src/main/java/com/wangbin/entity/SurvHisdataLivestockwater.java b/src/main/java/com/wangbin/entity/SurvHisdataLivestockwater.java
new file mode 100644
index 0000000..683fbda
--- /dev/null
+++ b/src/main/java/com/wangbin/entity/SurvHisdataLivestockwater.java
@@ -0,0 +1,210 @@
+package com.wangbin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ *
+ * 畜禽水污染监测历史数据
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SurvHisdataLivestockwater extends Model {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.ID_WORKER_STR)
+ private String id;
+
+ /**
+ * 数据ID
+ */
+ @TableField("DATA_ID")
+ private String dataId;
+
+ /**
+ * 总磷
+ */
+ @TableField("DATA_WATER_TP")
+ private String dataWaterTp;
+ @TableField("DATA_WATER_TP_SY")
+ private String dataWaterTpSy;
+ @TableField("DATA_WATER_TP_LD")
+ private String dataWaterTpLd;
+
+ /**
+ * 总氮
+ */
+ @TableField("DATA_WATER_TN")
+ private String dataWaterTn;
+ @TableField("DATA_WATER_TN_SY")
+ private String dataWaterTnSy;
+ @TableField("DATA_WATER_TN_LD")
+ private String dataWaterTnLd;
+
+ /**
+ * 硝态氮
+ */
+ @TableField("DATA_WATER_NO")
+ private String dataWaterNo;
+
+ /**
+ * 氨氮
+ */
+ @TableField("DATA_WATER_NH")
+ private String dataWaterNh;
+ @TableField("DATA_WATER_NH_SY")
+ private String dataWaterNhSy;
+ @TableField("DATA_WATER_NH_LD")
+ private String dataWaterNhLd;
+
+ /**
+ * 化学需氧量
+ */
+ @TableField("DATA_WATER_COD")
+ private String dataWaterCod;
+ @TableField("DATA_WATER_COD_SY")
+ private String dataWaterCodSy;
+ @TableField("DATA_WATER_COD_LD")
+ private String dataWaterCodLd;
+
+
+
+
+ @TableField("FLUID_LEVEL")
+ private String fluidLevel;//液位
+ @TableField("FIRST_VALVE_STATUS")
+ private String firstValveStatus;//1#球阀状态
+ @TableField("SECOND_VALVE_STATUS")
+ private String secondValveStatus;//2#球阀状态
+ @TableField("CRASH_STOP_STATUS")
+ private String crashStopStatus;//急停状态
+ @TableField("WATER_PUMP_STATUS")
+ private String waterPumpStatus;//水泵状态
+ @TableField("MAIN_SIDE_STATUS")
+ private String mainSideStatus;//主副泵状态
+
+ /**
+ * 数据更新时间
+ */
+ @TableField("DATA_DATE_TIME")
+ private Date dataDateTime;
+
+ /**
+ * 数据类型;realTime=实时,dayTime=日数据,month=月数据,year=年数据
+ */
+ @TableField("DATA_GATHER_TYPE")
+ private String dataGatherType;
+
+ /**
+ * 站点ID
+ */
+ @TableField("STATION_ID")
+ private String stationId;
+
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private String deviceId;
+
+ /**
+ * 站点编号
+ */
+ @TableField("STATION_CODE")
+ private String stationCode;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DEVICE_CODE")
+ private String deviceCode;
+
+ /**
+ * 机构ID
+ */
+ @TableField("CORP_ID")
+ private String corpId;
+
+ /**
+ * 站点名称
+ */
+ @TableField("STATION_NAME")
+ private String stationName;
+
+ /**
+ * 设备名称
+ */
+ @TableField("DEVICE_NAME")
+ private String deviceName;
+
+ /**
+ * 转储时间
+ */
+ @TableField("TRANS_DATE")
+ private Date transDate;
+
+ /**
+ * 租户号
+ */
+ @TableField("TENANT_ID")
+ private String tenantId;
+
+ /**
+ * 乐观锁
+ */
+ @TableField("RE_VISION")
+ private Integer reVision;
+
+ /**
+ * 创建人
+ */
+ @TableField("CREATED_BY")
+ private String createdBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @TableField("UPDATED_BY")
+ private String updatedBy;
+
+ /**
+ * 逻辑删除
+ */
+ @TableField("IS_DEL")
+ private Integer isDel;
+
+ /**
+ * 更新时间
+ */
+ @TableField("UPDATED_TIME")
+ private Date updatedTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/src/main/java/com/wangbin/entity/SurvHisdataLivestockwaterError.java b/src/main/java/com/wangbin/entity/SurvHisdataLivestockwaterError.java
new file mode 100644
index 0000000..8338075
--- /dev/null
+++ b/src/main/java/com/wangbin/entity/SurvHisdataLivestockwaterError.java
@@ -0,0 +1,220 @@
+package com.wangbin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ *
+ *
+ *
+ *
+ * @author ${author}
+ * @since 2025-05-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SurvHisdataLivestockwaterError extends Model {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableField("ID")
+ private String id;
+
+ /**
+ * 数据ID
+ */
+ @TableField("DATA_ID")
+ private String dataId;
+
+ /**
+ * 总磷
+ */
+ @TableField("DATA_WATER_TP")
+ private String dataWaterTp;
+
+ /**
+ * 总氮
+ */
+ @TableField("DATA_WATER_TN")
+ private String dataWaterTn;
+
+ /**
+ * 硝态氮
+ */
+ @TableField("DATA_WATER_NO")
+ private String dataWaterNo;
+
+ /**
+ * 氨氮
+ */
+ @TableField("DATA_WATER_NH")
+ private String dataWaterNh;
+
+ /**
+ * 化学需氧量
+ */
+ @TableField("DATA_WATER_COD")
+ private String dataWaterCod;
+
+ /**
+ * 数据更新时间
+ */
+ @TableField("DATA_DATE_TIME")
+ private Date dataDateTime;
+
+ /**
+ * 数据类型;realTime=实时,dayTime=日数据,month=月数据,year=年数据
+ */
+ @TableField("DATA_GATHER_TYPE")
+ private String dataGatherType;
+
+ /**
+ * 站点ID
+ */
+ @TableField("STATION_ID")
+ private String stationId;
+
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private String deviceId;
+
+ /**
+ * 站点编号
+ */
+ @TableField("STATION_CODE")
+ private String stationCode;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DEVICE_CODE")
+ private String deviceCode;
+
+ /**
+ * 机构ID
+ */
+ @TableField("CORP_ID")
+ private String corpId;
+
+ /**
+ * 站点名称
+ */
+ @TableField("STATION_NAME")
+ private String stationName;
+
+ /**
+ * 设备名称
+ */
+ @TableField("DEVICE_NAME")
+ private String deviceName;
+
+ /**
+ * 转储时间
+ */
+ @TableField("TRANS_DATE")
+ private Date transDate;
+
+ /**
+ * 租户号
+ */
+ @TableField("TENANT_ID")
+ private String tenantId;
+
+ /**
+ * 乐观锁
+ */
+ @TableField("RE_VISION")
+ private Integer reVision;
+
+ /**
+ * 创建人
+ */
+ @TableField("CREATED_BY")
+ private String createdBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @TableField("UPDATED_BY")
+ private String updatedBy;
+
+ /**
+ * 逻辑删除
+ */
+ @TableField("IS_DEL")
+ private Integer isDel;
+
+ /**
+ * 更新时间
+ */
+ @TableField("UPDATED_TIME")
+ private Date updatedTime;
+
+ @TableField("DATA_WATER_TP_SY")
+ private String dataWaterTpSy;
+
+ @TableField("DATA_WATER_TP_LD")
+ private String dataWaterTpLd;
+
+ @TableField("DATA_WATER_TN_SY")
+ private String dataWaterTnSy;
+
+ @TableField("DATA_WATER_TN_LD")
+ private String dataWaterTnLd;
+
+ @TableField("DATA_WATER_NH_SY")
+ private String dataWaterNhSy;
+
+ @TableField("DATA_WATER_NH_LD")
+ private String dataWaterNhLd;
+
+ @TableField("DATA_WATER_COD_SY")
+ private String dataWaterCodSy;
+
+ @TableField("DATA_WATER_COD_LD")
+ private String dataWaterCodLd;
+
+ @TableField("FLUID_LEVEL")
+ private String fluidLevel;
+
+ @TableField("FIRST_VALVE_STATUS")
+ private String firstValveStatus;
+
+ @TableField("SECOND_VALVE_STATUS")
+ private String secondValveStatus;
+
+ @TableField("CRASH_STOP_STATUS")
+ private String crashStopStatus;
+
+ @TableField("WATER_PUMP_STATUS")
+ private String waterPumpStatus;
+
+ @TableField("MAIN_SIDE_STATUS")
+ private String mainSideStatus;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return null;
+ }
+
+}
diff --git a/src/main/java/com/wangbin/entity/SurvHisdataOrientwater.java b/src/main/java/com/wangbin/entity/SurvHisdataOrientwater.java
new file mode 100644
index 0000000..287e5de
--- /dev/null
+++ b/src/main/java/com/wangbin/entity/SurvHisdataOrientwater.java
@@ -0,0 +1,204 @@
+package com.wangbin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 面源水污染监测历史数据
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SurvHisdataOrientwater extends Model {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.ID_WORKER_STR)
+ private String id;
+
+ /**
+ * 数据ID
+ */
+ @TableField("DATA_ID")
+ private String dataId;
+
+ /**
+ * 总磷
+ */
+ @TableField("DATA_WATER_TP")
+ private String dataWaterTp;
+
+ @TableField("DATA_WATER_TP_SY")
+ private String dataWaterTpSy;
+ @TableField("DATA_WATER_TP_LD")
+ private String dataWaterTpLd;
+
+ /**
+ * 总氮
+ */
+ @TableField("DATA_WATER_TN")
+ private String dataWaterTn;
+
+ @TableField("DATA_WATER_TN_SY")
+ private String dataWaterTnSy;
+ @TableField("DATA_WATER_TN_LD")
+ private String dataWaterTnLd;
+
+
+ @TableField("FLUID_LEVEL")
+ private String fluidLevel;//液位
+ @TableField("FIRST_VALVE_STATUS")
+ private String firstValveStatus;//1#球阀状态
+ @TableField("SECOND_VALVE_STATUS")
+ private String secondValveStatus;//2#球阀状态
+ @TableField("CRASH_STOP_STATUS")
+ private String crashStopStatus;//急停状态
+ @TableField("WATER_PUMP_STATUS")
+ private String waterPumpStatus;//水泵状态
+ @TableField("MAIN_SIDE_STATUS")
+ private String mainSideStatus;//主副泵状态
+
+
+ /**
+ * 氨氮
+ */
+ @TableField("DATA_WATER_NH")
+ private String dataWaterNh;
+
+ /**
+ * 化学需氧量
+ */
+ @TableField("DATA_WATER_COD")
+ private String dataWaterCod;
+
+ /**
+ * 硝态氮
+ */
+ @TableField("DATA_WATER_NO")
+ private String dataWaterNo;
+
+ /**
+ * 数据更新时间
+ */
+ @TableField("DATA_DATE_TIME")
+ private Date dataDateTime;
+
+ /**
+ * 数据类型;realTime=实时,dayTime=日数据,month=月数据,year=年数据
+ */
+ @TableField("DATA_GATHER_TYPE")
+ private String dataGatherType;
+
+ /**
+ * 站点ID
+ */
+ @TableField("STATION_ID")
+ private String stationId;
+
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private String deviceId;
+
+ /**
+ * 站点编号
+ */
+ @TableField("STATION_CODE")
+ private String stationCode;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DEVICE_CODE")
+ private String deviceCode;
+
+ /**
+ * 机构ID
+ */
+ @TableField("CORP_ID")
+ private String corpId;
+
+ /**
+ * 站点名称
+ */
+ @TableField("STATION_NAME")
+ private String stationName;
+
+ /**
+ * 设备名称
+ */
+ @TableField("DEVICE_NAME")
+ private String deviceName;
+
+ /**
+ * 转储时间
+ */
+ @TableField("TRANS_DATE")
+ private Date transDate;
+
+ /**
+ * 租户号
+ */
+ @TableField("TENANT_ID")
+ private String tenantId;
+
+ /**
+ * 乐观锁
+ */
+ @TableField("RE_VISION")
+ private Integer reVision;
+
+ /**
+ * 创建人
+ */
+ @TableField("CREATED_BY")
+ private String createdBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @TableField("UPDATED_BY")
+ private String updatedBy;
+
+ /**
+ * 逻辑删除
+ */
+ @TableField("IS_DEL")
+ private Integer isDel;
+
+ /**
+ * 更新时间
+ */
+ @TableField("UPDATED_TIME")
+ private Date updatedTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/src/main/java/com/wangbin/entity/SurvHisdataOrientwaterError.java b/src/main/java/com/wangbin/entity/SurvHisdataOrientwaterError.java
new file mode 100644
index 0000000..fac4ab6
--- /dev/null
+++ b/src/main/java/com/wangbin/entity/SurvHisdataOrientwaterError.java
@@ -0,0 +1,238 @@
+package com.wangbin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ *
+ *
+ *
+ *
+ * @author ${author}
+ * @since 2025-05-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SurvHisdataOrientwaterError extends Model {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableField("ID")
+ private String id;
+
+ /**
+ * 数据ID
+ */
+ @TableField("DATA_ID")
+ private String dataId;
+
+ /**
+ * 总磷
+ */
+ @TableField("DATA_WATER_TP")
+ private String dataWaterTp;
+
+ /**
+ * 总磷水样
+ */
+ @TableField("DATA_WATER_TP_SY")
+ private String dataWaterTpSy;
+
+ /**
+ * 总磷零点
+ */
+ @TableField("DATA_WATER_TP_LD")
+ private String dataWaterTpLd;
+
+ /**
+ * 总氮
+ */
+ @TableField("DATA_WATER_TN")
+ private String dataWaterTn;
+
+ /**
+ * 总氮水样
+ */
+ @TableField("DATA_WATER_TN_SY")
+ private String dataWaterTnSy;
+
+ /**
+ * 总氮零点
+ */
+ @TableField("DATA_WATER_TN_LD")
+ private String dataWaterTnLd;
+
+ /**
+ * 氨氮
+ */
+ @TableField("DATA_WATER_NH")
+ private String dataWaterNh;
+
+ /**
+ * 化学需氧量
+ */
+ @TableField("DATA_WATER_COD")
+ private String dataWaterCod;
+
+ /**
+ * 硝态氮
+ */
+ @TableField("DATA_WATER_NO")
+ private String dataWaterNo;
+
+ /**
+ * 液位
+ */
+ @TableField("FLUID_LEVEL")
+ private String fluidLevel;
+
+ /**
+ * 1#球阀状态
+ */
+ @TableField("FIRST_VALVE_STATUS")
+ private String firstValveStatus;
+
+ /**
+ * 2#球阀状态
+ */
+ @TableField("SECOND_VALVE_STATUS")
+ private String secondValveStatus;
+
+ /**
+ * 急停状态
+ */
+ @TableField("CRASH_STOP_STATUS")
+ private String crashStopStatus;
+
+ /**
+ * 水泵状态
+ */
+ @TableField("WATER_PUMP_STATUS")
+ private String waterPumpStatus;
+
+ /**
+ * 主副泵状态
+ */
+ @TableField("MAIN_SIDE_STATUS")
+ private String mainSideStatus;
+
+ /**
+ * 数据更新时间
+ */
+ @TableField("DATA_DATE_TIME")
+ private Date dataDateTime;
+
+ /**
+ * 数据类型;realTime=实时,dayTime=日数据,month=月数据,year=年数据
+ */
+ @TableField("DATA_GATHER_TYPE")
+ private String dataGatherType;
+
+ /**
+ * 站点ID
+ */
+ @TableField("STATION_ID")
+ private String stationId;
+
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private String deviceId;
+
+ /**
+ * 站点编号
+ */
+ @TableField("STATION_CODE")
+ private String stationCode;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DEVICE_CODE")
+ private String deviceCode;
+
+ /**
+ * 机构ID
+ */
+ @TableField("CORP_ID")
+ private String corpId;
+
+ /**
+ * 站点名称
+ */
+ @TableField("STATION_NAME")
+ private String stationName;
+
+ /**
+ * 设备名称
+ */
+ @TableField("DEVICE_NAME")
+ private String deviceName;
+
+ /**
+ * 转储时间
+ */
+ @TableField("TRANS_DATE")
+ private Date transDate;
+
+ /**
+ * 租户号
+ */
+ @TableField("TENANT_ID")
+ private String tenantId;
+
+ /**
+ * 乐观锁
+ */
+ @TableField("RE_VISION")
+ private Integer reVision;
+
+ /**
+ * 创建人
+ */
+ @TableField("CREATED_BY")
+ private String createdBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @TableField("UPDATED_BY")
+ private String updatedBy;
+
+ /**
+ * 逻辑删除
+ */
+ @TableField("IS_DEL")
+ private Integer isDel;
+
+ /**
+ * 更新时间
+ */
+ @TableField("UPDATED_TIME")
+ private Date updatedTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return null;
+ }
+
+}
diff --git a/src/main/java/com/wangbin/entity/SurvHisdataPestlight.java b/src/main/java/com/wangbin/entity/SurvHisdataPestlight.java
new file mode 100644
index 0000000..dbbb9aa
--- /dev/null
+++ b/src/main/java/com/wangbin/entity/SurvHisdataPestlight.java
@@ -0,0 +1,202 @@
+package com.wangbin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ *
+ * 杀虫灯历史数据
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SurvHisdataPestlight extends Model {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.ID_WORKER_STR)
+ private String id;
+
+ /**
+ * 数据ID
+ */
+ @TableField("DATA_ID")
+ private String dataId;
+
+ /**
+ * 杀虫量
+ */
+ @TableField("DATA_SHACHONG_COUNT")
+ private String dataShachongCount;
+
+ /**
+ * 害虫种类
+ */
+ @TableField("DATA_PEST_SPECIES")
+ private String dataPestSpecies;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DATA_DEVICE_NO")
+ private String dataDeviceNo;
+
+ /**
+ * 基地ID
+ */
+ @TableField("DATA_BASE_ID")
+ private String dataBaseId;
+
+ /**
+ * 地址区域ID
+ */
+ @TableField("DATA_ADDRESS_ID")
+ private String dataAddressId;
+
+ /**
+ * 设备纬度
+ */
+ @TableField("DATA_LAT")
+ private String dataLat;
+
+ /**
+ * 电池纬度
+ */
+ @TableField("DATA_BATTERY_LAT")
+ private String dataBatteryLat;
+
+ /**
+ * 设备经度
+ */
+ @TableField("DATA_LNG")
+ private String dataLng;
+
+ /**
+ * 电池经度
+ */
+ @TableField("DATA_BATTERY_LNG")
+ private String dataBatteryLng;
+
+ /**
+ * 数据更新时间
+ */
+ @TableField("DATA_ACTION_TIME")
+ private Date dataActionTime;
+
+ /**
+ * 数据类型;realTime=实时,dayTime=日数据,month=月数据,year=年数据
+ */
+ @TableField("DATA_GATHER_TYPE")
+ private String dataGatherType;
+
+ /**
+ * 站点ID
+ */
+ @TableField("STATION_ID")
+ private String stationId;
+
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private String deviceId;
+
+ /**
+ * 站点编号
+ */
+ @TableField("STATION_CODE")
+ private String stationCode;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DEVICE_CODE")
+ private String deviceCode;
+
+ /**
+ * 机构ID
+ */
+ @TableField("CORP_ID")
+ private String corpId;
+
+ /**
+ * 站点名称
+ */
+ @TableField("STATION_NAME")
+ private String stationName;
+
+ /**
+ * 设备名称
+ */
+ @TableField("DEVICE_NAME")
+ private String deviceName;
+
+ /**
+ * 转储时间
+ */
+ @TableField("TRANS_DATE")
+ private Date transDate;
+
+ /**
+ * 租户号
+ */
+ @TableField("TENANT_ID")
+ private String tenantId;
+
+ /**
+ * 乐观锁
+ */
+ @TableField("RE_VISION")
+ private Integer reVision;
+
+ /**
+ * 创建人
+ */
+ @TableField("CREATED_BY")
+ private String createdBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @TableField("UPDATED_BY")
+ private String updatedBy;
+
+ /**
+ * 逻辑删除
+ */
+ @TableField("IS_DEL")
+ private Integer isDel;
+
+ /**
+ * 更新时间
+ */
+ @TableField("UPDATED_TIME")
+ private Date updatedTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/src/main/java/com/wangbin/entity/SurvHisdataSoil.java b/src/main/java/com/wangbin/entity/SurvHisdataSoil.java
new file mode 100644
index 0000000..e51cbc5
--- /dev/null
+++ b/src/main/java/com/wangbin/entity/SurvHisdataSoil.java
@@ -0,0 +1,179 @@
+package com.wangbin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 土壤污染监测历史数据
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SurvHisdataSoil extends Model {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.ID_WORKER_STR)
+ private String id;
+
+ /**
+ * 土壤温度;106
+ */
+ @TableField("DATA_SOIL_TEMP")
+ private String dataSoilTemp;
+
+ /**
+ * 土壤湿度;107
+ */
+ @TableField("DATA_SOIL_WET")
+ private String dataSoilWet;
+
+ /**
+ * 土壤盐分;198
+ */
+ @TableField("DATA_SOIL_SALT")
+ private String dataSoilSalt;
+
+
+ @TableField("DATA_SOIL_TEMP2")
+ private String dataSoilTemp2;
+ @TableField("DATA_SOIL_WET2")
+ private String dataSoilWet2;
+ @TableField("DATA_SOIL_TEMP3")
+ private String dataSoilTemp3;
+ @TableField("DATA_SOIL_WET3")
+ private String dataSoilWet3;
+ @TableField("DATA_SOIL_DDL")
+ private String dataSoilDdl;
+ @TableField("DATA_SOIL_DDL2")
+ private String dataSoilDdl2;
+ @TableField("DATA_SOIL_DDL3")
+ private String dataSoilDdl3;
+
+
+
+ /**
+ * 数据更新时间
+ */
+ @TableField("DATA_DATE_TIME")
+ private Date dataDateTime;
+
+ /**
+ * 数据类型;realTime=实时,dayTime=日数据,month=月数据,year=年数据
+ */
+ @TableField("DATA_GATHER_TYPE")
+ private String dataGatherType;
+
+ /**
+ * 站点ID
+ */
+ @TableField("STATION_ID")
+ private String stationId;
+
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private String deviceId;
+
+ /**
+ * 站点编号
+ */
+ @TableField("STATION_CODE")
+ private String stationCode;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DEVICE_CODE")
+ private String deviceCode;
+
+ /**
+ * 机构ID
+ */
+ @TableField("CORP_ID")
+ private String corpId;
+
+ /**
+ * 站点名称
+ */
+ @TableField("STATION_NAME")
+ private String stationName;
+
+ /**
+ * 设备名称
+ */
+ @TableField("DEVICE_NAME")
+ private String deviceName;
+
+ /**
+ * 转储时间
+ */
+ @TableField("TRANS_DATE")
+ private Date transDate;
+
+ /**
+ * 租户号
+ */
+ @TableField("TENANT_ID")
+ private String tenantId;
+
+ /**
+ * 乐观锁
+ */
+ @TableField("RE_VISION")
+ private Integer reVision;
+
+ /**
+ * 创建人
+ */
+ @TableField("CREATED_BY")
+ private String createdBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @TableField("UPDATED_BY")
+ private String updatedBy;
+
+ /**
+ * 逻辑删除
+ */
+ @TableField("IS_DEL")
+ private Integer isDel;
+
+ /**
+ * 更新时间
+ */
+ @TableField("UPDATED_TIME")
+ private Date updatedTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/src/main/java/com/wangbin/entity/SurvTransdataAir.java b/src/main/java/com/wangbin/entity/SurvTransdataAir.java
new file mode 100644
index 0000000..05c07d2
--- /dev/null
+++ b/src/main/java/com/wangbin/entity/SurvTransdataAir.java
@@ -0,0 +1,184 @@
+package com.wangbin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 空气污染监测数据
+ *
+ *
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SurvTransdataAir extends Model {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.ID_WORKER_STR)
+ private String id;
+
+ /**
+ * 大气温度
+ */
+ @TableField("DATA_AIR_TEMP")
+ private String dataAirTemp;
+
+ /**
+ * 大气湿度
+ */
+ @TableField("DATA_AIR_WET")
+ private String dataAirWet;
+
+ /**
+ * 大气压力
+ */
+ @TableField("DATA_AIR_PRESS")
+ private String dataAirPress;
+
+ /**
+ * 雨量
+ */
+ @TableField("DATA_RAIN_FALL")
+ private String dataRainFall;
+
+ /**
+ * 风速
+ */
+ @TableField("DATA_WIND_SPEED")
+ private String dataWindSpeed;
+
+ /**
+ * 风向
+ */
+ @TableField("DATA_WIND_DIRECTION")
+ private String dataWindDirection;
+
+ /**
+ * 太阳全辐射
+ */
+ @TableField("DATA_SUN_FALLOUT")
+ private String dataSunFallout;
+
+
+ @TableField("DATA_SUN_TOTAL")
+ private String dataSunTotal;//辐射累计
+ @TableField("DATA_RAIN_TOTAL")
+ private String dataRainTotal;//雨量累计
+
+
+ /**
+ * 数据更新时间
+ */
+ @TableField("DATA_DATE_TIME")
+ private Date dataDateTime;
+
+ /**
+ * 数据类型;realTime=实时,dayTime=日数据,month=月数据,year=年数据
+ */
+ @TableField("DATA_GATHER_TYPE")
+ private String dataGatherType;
+
+ /**
+ * 站点ID
+ */
+// @TableField("STATION_ID")
+// private String stationId;
+
+ /**
+ * 设备ID
+ */
+// @TableField("DEVICE_ID")
+// private String deviceId;
+
+ /**
+ * 站点编号
+ */
+// @TableField("STATION_CODE")
+// private String stationCode;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DEVICE_CODE")
+ private String deviceCode;
+
+ /**
+ * 机构ID
+ */
+// @TableField("CORP_ID")
+// private String corpId;
+
+ /**
+ * 站点名称
+ */
+// @TableField("STATION_NAME")
+// private String stationName;
+
+ /**
+ * 设备名称
+ */
+// @TableField("DEVICE_NAME")
+// private String deviceName;
+
+ /**
+ * 租户号
+ */
+ @TableField("TENANT_ID")
+ private String tenantId;
+
+ /**
+ * 乐观锁
+ */
+ @TableField("RE_VISION")
+ private Integer reVision;
+
+ /**
+ * 创建人
+ */
+ @TableField("CREATED_BY")
+ private String createdBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @TableField("UPDATED_BY")
+ private String updatedBy;
+
+ /**
+ * 逻辑删除
+ */
+ @TableField("IS_DEL")
+ private Integer isDel;
+
+ /**
+ * 更新时间
+ */
+ @TableField("UPDATED_TIME")
+ private Date updatedTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/src/main/java/com/wangbin/entity/SurvTransdataLivestockwater.java b/src/main/java/com/wangbin/entity/SurvTransdataLivestockwater.java
new file mode 100644
index 0000000..ccf2d15
--- /dev/null
+++ b/src/main/java/com/wangbin/entity/SurvTransdataLivestockwater.java
@@ -0,0 +1,206 @@
+package com.wangbin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ *
+ * 畜禽水污染监测数据表
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SurvTransdataLivestockwater extends Model {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.ID_WORKER_STR)
+ private String id;
+
+ /**
+ * 数据ID
+ */
+ @TableField("DATA_ID")
+ private String dataId;
+
+ /**
+ * 总磷
+ */
+ @TableField("DATA_WATER_TP")
+ private String dataWaterTp;
+ @TableField("DATA_WATER_TP_SY")
+ private String dataWaterTpSy;
+ @TableField("DATA_WATER_TP_LD")
+ private String dataWaterTpLd;
+
+
+ /**
+ * 总氮
+ */
+ @TableField("DATA_WATER_TN")
+ private String dataWaterTn;
+ @TableField("DATA_WATER_TN_SY")
+ private String dataWaterTnSy;
+ @TableField("DATA_WATER_TN_LD")
+ private String dataWaterTnLd;
+
+ /**
+ * 硝态氮
+ */
+ @TableField("DATA_WATER_NO")
+ private String dataWaterNo;
+
+ /**
+ * 氨氮
+ */
+ @TableField("DATA_WATER_NH")
+ private String dataWaterNh;
+ @TableField("DATA_WATER_NH_SY")
+ private String dataWaterNhSy;
+ @TableField("DATA_WATER_NH_LD")
+ private String dataWaterNhLd;
+
+
+ /**
+ * 化学需氧量
+ */
+ @TableField("DATA_WATER_COD")
+ private String dataWaterCod;
+ @TableField("DATA_WATER_COD_SY")
+ private String dataWaterCodSy;
+ @TableField("DATA_WATER_COD_LD")
+ private String dataWaterCodLd;
+
+
+
+ @TableField("FLUID_LEVEL")
+ private String fluidLevel;//液位
+ @TableField("FIRST_VALVE_STATUS")
+ private String firstValveStatus;//1#球阀状态
+ @TableField("SECOND_VALVE_STATUS")
+ private String secondValveStatus;//2#球阀状态
+ @TableField("CRASH_STOP_STATUS")
+ private String crashStopStatus;//急停状态
+ @TableField("WATER_PUMP_STATUS")
+ private String waterPumpStatus;//水泵状态
+ @TableField("MAIN_SIDE_STATUS")
+ private String mainSideStatus;//主副泵状态
+
+
+ /**
+ * 数据更新时间
+ */
+ @TableField("DATA_DATE_TIME")
+ private Date dataDateTime;
+
+ /**
+ * 数据获取类型;realTime=实时,dayTime=日数据,month=月数据,year=年数据
+ */
+ @TableField("DATA_GATHER_TYPE")
+ private String dataGatherType;
+
+ /**
+ * 站点ID
+ */
+ @TableField("STATION_ID")
+ private String stationId;
+
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private String deviceId;
+
+ /**
+ * 站点编号
+ */
+ @TableField("STATION_CODE")
+ private String stationCode;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DEVICE_CODE")
+ private String deviceCode;
+
+ /**
+ * 机构ID
+ */
+ @TableField("CORP_ID")
+ private String corpId;
+
+ /**
+ * 站点名称
+ */
+ @TableField("STATION_NAME")
+ private String stationName;
+
+ /**
+ * 设备名称
+ */
+ @TableField("DEVICE_NAME")
+ private String deviceName;
+
+ /**
+ * 租户号
+ */
+ @TableField("TENANT_ID")
+ private String tenantId;
+
+ /**
+ * 乐观锁
+ */
+ @TableField("RE_VISION")
+ private Integer reVision;
+
+ /**
+ * 创建人
+ */
+ @TableField("CREATED_BY")
+ private String createdBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @TableField("UPDATED_BY")
+ private String updatedBy;
+
+ /**
+ * 逻辑删除
+ */
+ @TableField("IS_DEL")
+ private Integer isDel;
+
+ /**
+ * 更新时间
+ */
+ @TableField("UPDATED_TIME")
+ private Date updatedTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/src/main/java/com/wangbin/entity/SurvTransdataOrientwater.java b/src/main/java/com/wangbin/entity/SurvTransdataOrientwater.java
new file mode 100644
index 0000000..9b5e99c
--- /dev/null
+++ b/src/main/java/com/wangbin/entity/SurvTransdataOrientwater.java
@@ -0,0 +1,198 @@
+package com.wangbin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 面源水污染监测数据表
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SurvTransdataOrientwater extends Model {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.ID_WORKER_STR)
+ private String id;
+
+ /**
+ * 数据ID
+ */
+ @TableField("DATA_ID")
+ private String dataId;
+
+ /**
+ * 总磷
+ */
+ @TableField("DATA_WATER_TP")
+ private String dataWaterTp;
+
+
+ @TableField("DATA_WATER_TP_SY")
+ private String dataWaterTpSy;
+ @TableField("DATA_WATER_TP_LD")
+ private String dataWaterTpLd;
+
+ /**
+ * 总氮
+ */
+ @TableField("DATA_WATER_TN")
+ private String dataWaterTn;
+
+ @TableField("DATA_WATER_TN_SY")
+ private String dataWaterTnSy;
+ @TableField("DATA_WATER_TN_LD")
+ private String dataWaterTnLd;
+
+ @TableField("FLUID_LEVEL")
+ private String fluidLevel;//液位
+ @TableField("FIRST_VALVE_STATUS")
+ private String firstValveStatus;//1#球阀状态
+ @TableField("SECOND_VALVE_STATUS")
+ private String secondValveStatus;//2#球阀状态
+ @TableField("CRASH_STOP_STATUS")
+ private String crashStopStatus;//急停状态
+ @TableField("WATER_PUMP_STATUS")
+ private String waterPumpStatus;//水泵状态
+ @TableField("MAIN_SIDE_STATUS")
+ private String mainSideStatus;//主副泵状态
+
+
+ /**
+ * 氨氮
+ */
+ @TableField("DATA_WATER_NH")
+ private String dataWaterNh;
+
+ /**
+ * 化学需氧量
+ */
+ @TableField("DATA_WATER_COD")
+ private String dataWaterCod;
+
+ /**
+ * 硝态氮 硝碳氮
+ */
+ @TableField("DATA_WATER_NO")
+ private String dataWaterNo;
+
+ /**
+ * 数据更新时间
+ */
+ @TableField("DATA_DATE_TIME")
+ private Date dataDateTime;
+
+ /**
+ * 数据类型;realTime=实时,dayTime=日数据,month=月数据,year=年数据
+ */
+ @TableField("DATA_GATHER_TYPE")
+ private String dataGatherType;
+
+ /**
+ * 站点ID
+ */
+ @TableField("STATION_ID")
+ private String stationId;
+
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private String deviceId;
+
+ /**
+ * 站点编号
+ */
+ @TableField("STATION_CODE")
+ private String stationCode;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DEVICE_CODE")
+ private String deviceCode;
+
+ /**
+ * 机构ID
+ */
+ @TableField("CORP_ID")
+ private String corpId;
+
+ /**
+ * 站点名称
+ */
+ @TableField("STATION_NAME")
+ private String stationName;
+
+ /**
+ * 设备名称
+ */
+ @TableField("DEVICE_NAME")
+ private String deviceName;
+
+ /**
+ * 租户号
+ */
+ @TableField("TENANT_ID")
+ private String tenantId;
+
+ /**
+ * 乐观锁
+ */
+ @TableField("RE_VISION")
+ private Integer reVision;
+
+ /**
+ * 创建人
+ */
+ @TableField("CREATED_BY")
+ private String createdBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @TableField("UPDATED_BY")
+ private String updatedBy;
+
+ /**
+ * 逻辑删除
+ */
+ @TableField("IS_DEL")
+ private Integer isDel;
+
+ /**
+ * 更新时间
+ */
+ @TableField("UPDATED_TIME")
+ private Date updatedTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/src/main/java/com/wangbin/entity/SurvTransdataPestlight.java b/src/main/java/com/wangbin/entity/SurvTransdataPestlight.java
new file mode 100644
index 0000000..adbc747
--- /dev/null
+++ b/src/main/java/com/wangbin/entity/SurvTransdataPestlight.java
@@ -0,0 +1,193 @@
+package com.wangbin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 杀虫灯监测数据
+ *
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SurvTransdataPestlight extends Model {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.ID_WORKER_STR)
+ private String id;
+
+ /**
+ * 数据ID
+ */
+ @TableField("DATA_ID")
+ private String dataId;
+
+ /**
+ * 杀虫量
+ */
+ @TableField("DATA_SHACHONG_COUNT")
+ private String dataShachongCount;
+
+ /**
+ * 害虫种类
+ */
+ @TableField("DATA_PEST_SPECIES")
+ private String dataPestSpecies;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DATA_DEVICE_NO")
+ private String dataDeviceNo;
+
+ /**
+ * 基地ID
+ */
+ @TableField("DATA_BASE_ID")
+ private String dataBaseId;
+
+ /**
+ * 地址区域ID
+ */
+ @TableField("DATA_ADDRESS_ID")
+ private String dataAddressId;
+
+ /**
+ * 设备纬度
+ */
+ @TableField("DATA_LAT")
+ private String dataLat;
+
+ /**
+ * 电池纬度
+ */
+ @TableField("DATA_BATTERY_LAT")
+ private String dataBatteryLat;
+
+ /**
+ * 设备经度
+ */
+ @TableField("DATA_LNG")
+ private String dataLng;
+
+ /**
+ * 电池经度
+ */
+ @TableField("DATA_BATTERY_LNG")
+ private String dataBatteryLng;
+
+ /**
+ * 数据更新时间
+ */
+ @TableField("DATA_ACTION_TIME")
+ private Date dataActionTime;
+
+ /**
+ * 数据类型;realTime=实时,dayTime=日数据,month=月数据,year=年数据
+ */
+ @TableField("DATA_GATHER_TYPE")
+ private String dataGatherType;
+
+ /**
+ * 站点ID
+ */
+// @TableField("STATION_ID")
+// private String stationId;
+
+ /**
+ * 设备ID
+ */
+// @TableField("DEVICE_ID")
+// private String deviceId;
+
+ /**
+ * 站点编号
+ */
+// @TableField("STATION_CODE")
+// private String stationCode;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DEVICE_CODE")
+ private String deviceCode;
+
+ /**
+ * 机构ID
+ */
+ @TableField("CORP_ID")
+ private String corpId;
+
+ /**
+ * 站点名称
+ */
+// @TableField("STATION_NAME")
+// private String stationName;
+
+ /**
+ * 设备名称
+ */
+// @TableField("DEVICE_NAME")
+// private String deviceName;
+
+ /**
+ * 租户号
+ */
+ @TableField("TENANT_ID")
+ private String tenantId;
+
+ /**
+ * 乐观锁
+ */
+ @TableField("RE_VISION")
+ private Integer reVision;
+
+ /**
+ * 创建人
+ */
+ @TableField("CREATED_BY")
+ private String createdBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @TableField("UPDATED_BY")
+ private String updatedBy;
+
+ /**
+ * 逻辑删除
+ */
+ @TableField("IS_DEL")
+ private Integer isDel;
+
+ /**
+ * 更新时间
+ */
+ @TableField("UPDATED_TIME")
+ private Date updatedTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/src/main/java/com/wangbin/entity/SurvTransdataSoil.java b/src/main/java/com/wangbin/entity/SurvTransdataSoil.java
new file mode 100644
index 0000000..ffe985e
--- /dev/null
+++ b/src/main/java/com/wangbin/entity/SurvTransdataSoil.java
@@ -0,0 +1,172 @@
+package com.wangbin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 土壤污染监测数据
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SurvTransdataSoil extends Model {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.ID_WORKER_STR)
+ private String id;
+
+ /**
+ * 土壤温度;106
+ */
+ @TableField("DATA_SOIL_TEMP")
+ private String dataSoilTemp;
+
+ /**
+ * 土壤湿度;107
+ */
+ @TableField("DATA_SOIL_WET")
+ private String dataSoilWet;
+
+ /**
+ * 土壤盐分;198
+ */
+ @TableField("DATA_SOIL_SALT")
+ private String dataSoilSalt;
+
+
+
+ @TableField("DATA_SOIL_TEMP2")
+ private String dataSoilTemp2;
+ @TableField("DATA_SOIL_WET2")
+ private String dataSoilWet2;
+ @TableField("DATA_SOIL_TEMP3")
+ private String dataSoilTemp3;
+ @TableField("DATA_SOIL_WET3")
+ private String dataSoilWet3;
+ @TableField("DATA_SOIL_DDL")
+ private String dataSoilDdl;
+ @TableField("DATA_SOIL_DDL2")
+ private String dataSoilDdl2;
+ @TableField("DATA_SOIL_DDL3")
+ private String dataSoilDdl3;
+
+ /**
+ * 数据更新时间
+ */
+ @TableField("DATA_DATE_TIME")
+ private Date dataDateTime;
+
+ /**
+ * 数据类型;realTime=实时,dayTime=日数据,month=月数据,year=年数据
+ */
+ @TableField("DATA_GATHER_TYPE")
+ private String dataGatherType;
+
+ /**
+ * 站点ID
+ */
+// @TableField("STATION_ID")
+// private String stationId;
+
+ /**
+ * 设备ID
+ */
+// @TableField("DEVICE_ID")
+// private String deviceId;
+
+ /**
+ * 站点编号
+ */
+// @TableField("STATION_CODE")
+// private String stationCode;
+
+ /**
+ * 设备编号
+ */
+ @TableField("DEVICE_CODE")
+ private String deviceCode;
+
+ /**
+ * 机构ID
+ */
+ @TableField("CORP_ID")
+ private String corpId;
+
+ /**
+ * 站点名称
+ */
+// @TableField("STATION_NAME")
+// private String stationName;
+
+ /**
+ * 设备名称
+ */
+// @TableField("DEVICE_NAME")
+// private String deviceName;
+
+ /**
+ * 租户号
+ */
+ @TableField("TENANT_ID")
+ private String tenantId;
+
+ /**
+ * 乐观锁
+ */
+ @TableField("RE_VISION")
+ private Integer reVision;
+
+ /**
+ * 创建人
+ */
+ @TableField("CREATED_BY")
+ private String createdBy;
+
+ /**
+ * 创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @TableField("UPDATED_BY")
+ private String updatedBy;
+
+ /**
+ * 逻辑删除
+ */
+ @TableField("IS_DEL")
+ private Integer isDel;
+
+ /**
+ * 更新时间
+ */
+ @TableField("UPDATED_TIME")
+ private Date updatedTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/src/main/java/com/wangbin/mapper/ScEquZhibiaoMapper.java b/src/main/java/com/wangbin/mapper/ScEquZhibiaoMapper.java
new file mode 100644
index 0000000..3f6cdc2
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/ScEquZhibiaoMapper.java
@@ -0,0 +1,16 @@
+package com.wangbin.mapper;
+
+import com.wangbin.entity.ScEquZhibiao;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备指标 Mapper 接口
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-13
+ */
+public interface ScEquZhibiaoMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/wangbin/mapper/SurvAlertRecordMapper.java b/src/main/java/com/wangbin/mapper/SurvAlertRecordMapper.java
new file mode 100644
index 0000000..b45e306
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/SurvAlertRecordMapper.java
@@ -0,0 +1,16 @@
+package com.wangbin.mapper;
+
+import com.wangbin.entity.SurvAlertRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 预警记录表 Mapper 接口
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-13
+ */
+public interface SurvAlertRecordMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/wangbin/mapper/SurvDeviceDeployMapper.java b/src/main/java/com/wangbin/mapper/SurvDeviceDeployMapper.java
new file mode 100644
index 0000000..dc69e48
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/SurvDeviceDeployMapper.java
@@ -0,0 +1,16 @@
+package com.wangbin.mapper;
+
+import com.wangbin.entity.SurvDeviceDeploy;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备部署表 Mapper 接口
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-13
+ */
+public interface SurvDeviceDeployMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/wangbin/mapper/SurvHisdataAirMapper.java b/src/main/java/com/wangbin/mapper/SurvHisdataAirMapper.java
new file mode 100644
index 0000000..3c03a7b
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/SurvHisdataAirMapper.java
@@ -0,0 +1,16 @@
+package com.wangbin.mapper;
+
+import com.wangbin.entity.SurvHisdataAir;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 空气污染监测历史数据 Mapper 接口
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+public interface SurvHisdataAirMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/wangbin/mapper/SurvHisdataLivestockwaterErrorMapper.java b/src/main/java/com/wangbin/mapper/SurvHisdataLivestockwaterErrorMapper.java
new file mode 100644
index 0000000..fcd3f30
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/SurvHisdataLivestockwaterErrorMapper.java
@@ -0,0 +1,16 @@
+package com.wangbin.mapper;
+
+import com.wangbin.entity.SurvHisdataLivestockwaterError;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author ${author}
+ * @since 2025-05-07
+ */
+public interface SurvHisdataLivestockwaterErrorMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/wangbin/mapper/SurvHisdataLivestockwaterMapper.java b/src/main/java/com/wangbin/mapper/SurvHisdataLivestockwaterMapper.java
new file mode 100644
index 0000000..083b0cf
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/SurvHisdataLivestockwaterMapper.java
@@ -0,0 +1,16 @@
+package com.wangbin.mapper;
+
+import com.wangbin.entity.SurvHisdataLivestockwater;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 畜禽水污染监测历史数据 Mapper 接口
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+public interface SurvHisdataLivestockwaterMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/wangbin/mapper/SurvHisdataOrientwaterErrorMapper.java b/src/main/java/com/wangbin/mapper/SurvHisdataOrientwaterErrorMapper.java
new file mode 100644
index 0000000..790f55f
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/SurvHisdataOrientwaterErrorMapper.java
@@ -0,0 +1,16 @@
+package com.wangbin.mapper;
+
+import com.wangbin.entity.SurvHisdataOrientwaterError;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author ${author}
+ * @since 2025-05-07
+ */
+public interface SurvHisdataOrientwaterErrorMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/wangbin/mapper/SurvHisdataOrientwaterMapper.java b/src/main/java/com/wangbin/mapper/SurvHisdataOrientwaterMapper.java
new file mode 100644
index 0000000..7864c7b
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/SurvHisdataOrientwaterMapper.java
@@ -0,0 +1,16 @@
+package com.wangbin.mapper;
+
+import com.wangbin.entity.SurvHisdataOrientwater;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 面源水污染监测历史数据 Mapper 接口
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+public interface SurvHisdataOrientwaterMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/wangbin/mapper/SurvHisdataPestlightMapper.java b/src/main/java/com/wangbin/mapper/SurvHisdataPestlightMapper.java
new file mode 100644
index 0000000..2c03c33
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/SurvHisdataPestlightMapper.java
@@ -0,0 +1,16 @@
+package com.wangbin.mapper;
+
+import com.wangbin.entity.SurvHisdataPestlight;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 杀虫灯历史数据 Mapper 接口
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+public interface SurvHisdataPestlightMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/wangbin/mapper/SurvHisdataSoilMapper.java b/src/main/java/com/wangbin/mapper/SurvHisdataSoilMapper.java
new file mode 100644
index 0000000..e8772f8
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/SurvHisdataSoilMapper.java
@@ -0,0 +1,16 @@
+package com.wangbin.mapper;
+
+import com.wangbin.entity.SurvHisdataSoil;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 土壤污染监测历史数据 Mapper 接口
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+public interface SurvHisdataSoilMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/wangbin/mapper/SurvTransdataAirMapper.java b/src/main/java/com/wangbin/mapper/SurvTransdataAirMapper.java
new file mode 100644
index 0000000..fb727c9
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/SurvTransdataAirMapper.java
@@ -0,0 +1,16 @@
+package com.wangbin.mapper;
+
+import com.wangbin.entity.SurvTransdataAir;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 空气污染监测数据 Mapper 接口
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+public interface SurvTransdataAirMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/wangbin/mapper/SurvTransdataLivestockwaterMapper.java b/src/main/java/com/wangbin/mapper/SurvTransdataLivestockwaterMapper.java
new file mode 100644
index 0000000..5cc6d4c
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/SurvTransdataLivestockwaterMapper.java
@@ -0,0 +1,16 @@
+package com.wangbin.mapper;
+
+import com.wangbin.entity.SurvTransdataLivestockwater;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 畜禽水污染监测数据表 Mapper 接口
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+public interface SurvTransdataLivestockwaterMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/wangbin/mapper/SurvTransdataOrientwaterMapper.java b/src/main/java/com/wangbin/mapper/SurvTransdataOrientwaterMapper.java
new file mode 100644
index 0000000..3bc7e06
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/SurvTransdataOrientwaterMapper.java
@@ -0,0 +1,16 @@
+package com.wangbin.mapper;
+
+import com.wangbin.entity.SurvTransdataOrientwater;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 面源水污染监测数据表 Mapper 接口
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+public interface SurvTransdataOrientwaterMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/wangbin/mapper/SurvTransdataPestlightMapper.java b/src/main/java/com/wangbin/mapper/SurvTransdataPestlightMapper.java
new file mode 100644
index 0000000..7a32659
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/SurvTransdataPestlightMapper.java
@@ -0,0 +1,16 @@
+package com.wangbin.mapper;
+
+import com.wangbin.entity.SurvTransdataPestlight;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 杀虫灯监测数据 Mapper 接口
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+public interface SurvTransdataPestlightMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/wangbin/mapper/SurvTransdataSoilMapper.java b/src/main/java/com/wangbin/mapper/SurvTransdataSoilMapper.java
new file mode 100644
index 0000000..44a1944
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/SurvTransdataSoilMapper.java
@@ -0,0 +1,16 @@
+package com.wangbin.mapper;
+
+import com.wangbin.entity.SurvTransdataSoil;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 土壤污染监测数据 Mapper 接口
+ *
+ *
+ * @author ${author}
+ * @since 2023-07-11
+ */
+public interface SurvTransdataSoilMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/wangbin/mapper/xml/ScEquZhibiaoMapper.xml b/src/main/java/com/wangbin/mapper/xml/ScEquZhibiaoMapper.xml
new file mode 100644
index 0000000..dbc1be8
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/xml/ScEquZhibiaoMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/java/com/wangbin/mapper/xml/SurvAlertRecordMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvAlertRecordMapper.xml
new file mode 100644
index 0000000..235198c
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/xml/SurvAlertRecordMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/java/com/wangbin/mapper/xml/SurvDeviceDeployMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvDeviceDeployMapper.xml
new file mode 100644
index 0000000..034fb40
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/xml/SurvDeviceDeployMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/java/com/wangbin/mapper/xml/SurvHisdataAirMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvHisdataAirMapper.xml
new file mode 100644
index 0000000..63ba75c
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/xml/SurvHisdataAirMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/java/com/wangbin/mapper/xml/SurvHisdataLivestockwaterErrorMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvHisdataLivestockwaterErrorMapper.xml
new file mode 100644
index 0000000..db94650
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/xml/SurvHisdataLivestockwaterErrorMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/java/com/wangbin/mapper/xml/SurvHisdataLivestockwaterMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvHisdataLivestockwaterMapper.xml
new file mode 100644
index 0000000..a9a606e
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/xml/SurvHisdataLivestockwaterMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/java/com/wangbin/mapper/xml/SurvHisdataOrientwaterErrorMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvHisdataOrientwaterErrorMapper.xml
new file mode 100644
index 0000000..4a46805
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/xml/SurvHisdataOrientwaterErrorMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/java/com/wangbin/mapper/xml/SurvHisdataOrientwaterMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvHisdataOrientwaterMapper.xml
new file mode 100644
index 0000000..62ad189
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/xml/SurvHisdataOrientwaterMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/java/com/wangbin/mapper/xml/SurvHisdataPestlightMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvHisdataPestlightMapper.xml
new file mode 100644
index 0000000..800669b
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/xml/SurvHisdataPestlightMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/java/com/wangbin/mapper/xml/SurvHisdataSoilMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvHisdataSoilMapper.xml
new file mode 100644
index 0000000..cd9c0b0
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/xml/SurvHisdataSoilMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/java/com/wangbin/mapper/xml/SurvTransdataAirMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvTransdataAirMapper.xml
new file mode 100644
index 0000000..5c62ae4
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/xml/SurvTransdataAirMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/java/com/wangbin/mapper/xml/SurvTransdataLivestockwaterMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvTransdataLivestockwaterMapper.xml
new file mode 100644
index 0000000..3583f54
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/xml/SurvTransdataLivestockwaterMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/java/com/wangbin/mapper/xml/SurvTransdataOrientwaterMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvTransdataOrientwaterMapper.xml
new file mode 100644
index 0000000..508379b
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/xml/SurvTransdataOrientwaterMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/java/com/wangbin/mapper/xml/SurvTransdataPestlightMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvTransdataPestlightMapper.xml
new file mode 100644
index 0000000..51a4db4
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/xml/SurvTransdataPestlightMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/java/com/wangbin/mapper/xml/SurvTransdataSoilMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvTransdataSoilMapper.xml
new file mode 100644
index 0000000..23d3404
--- /dev/null
+++ b/src/main/java/com/wangbin/mapper/xml/SurvTransdataSoilMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/java/com/wangbin/runner/MyApplicationRunner.java b/src/main/java/com/wangbin/runner/MyApplicationRunner.java
new file mode 100644
index 0000000..f3b354e
--- /dev/null
+++ b/src/main/java/com/wangbin/runner/MyApplicationRunner.java
@@ -0,0 +1,27 @@
+package com.wangbin.runner;
+
+import com.wangbin.thread.NetServer;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+/**
+ * 启动后执行
+ **/
+@Component
+@Order(value = 1)
+@Slf4j
+public class MyApplicationRunner implements ApplicationRunner {
+
+ @Override
+ public void run(ApplicationArguments args) {
+
+ NetServer netServer = new NetServer(10035);
+ Thread t = new Thread(netServer);
+ t.start();
+ log.info("程序启动立即执行");
+ }
+
+}
diff --git a/src/main/java/com/wangbin/service/ICommonService.java b/src/main/java/com/wangbin/service/ICommonService.java
new file mode 100644
index 0000000..a118faf
--- /dev/null
+++ b/src/main/java/com/wangbin/service/ICommonService.java
@@ -0,0 +1,11 @@
+package com.wangbin.service;
+
+/**
+ * 处理业务的服务
+ */
+public interface ICommonService {
+
+// void saveBaowen(String baowen);
+
+
+}
diff --git a/src/main/java/com/wangbin/service/IScEquZhibiaoService.java b/src/main/java/com/wangbin/service/IScEquZhibiaoService.java
new file mode 100644
index 0000000..65975ac
--- /dev/null
+++ b/src/main/java/com/wangbin/service/IScEquZhibiaoService.java
@@ -0,0 +1,22 @@
+package com.wangbin.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wangbin.entity.ScEquZhibiao;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 设备指标 服务类
+ */
+public interface IScEquZhibiaoService extends IService {
+
+
+ List getListByEquid(String equid);
+
+
+ Map getMap(String equid);
+
+
+}
diff --git a/src/main/java/com/wangbin/service/ISurvAlertRecordService.java b/src/main/java/com/wangbin/service/ISurvAlertRecordService.java
new file mode 100644
index 0000000..5d3a4e1
--- /dev/null
+++ b/src/main/java/com/wangbin/service/ISurvAlertRecordService.java
@@ -0,0 +1,20 @@
+package com.wangbin.service;
+
+import com.wangbin.entity.SurvAlertRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ *
+ * 预警记录表 服务类
+ *
+ *
+ */
+public interface ISurvAlertRecordService extends IService {
+
+ void saveBaojing(Map baowenMap);
+
+
+
+}
diff --git a/src/main/java/com/wangbin/service/ISurvDeviceDeployService.java b/src/main/java/com/wangbin/service/ISurvDeviceDeployService.java
new file mode 100644
index 0000000..298b9dc
--- /dev/null
+++ b/src/main/java/com/wangbin/service/ISurvDeviceDeployService.java
@@ -0,0 +1,19 @@
+package com.wangbin.service;
+
+import com.wangbin.entity.SurvDeviceDeploy;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 设备表 服务类
+ *
+ */
+public interface ISurvDeviceDeployService extends IService {
+
+
+ SurvDeviceDeploy getOneByCode(String code);
+
+ SurvDeviceDeploy getOneByIpPort(String ip,String port);
+
+
+
+}
diff --git a/src/main/java/com/wangbin/service/ISurvHisdataAirService.java b/src/main/java/com/wangbin/service/ISurvHisdataAirService.java
new file mode 100644
index 0000000..dc04593
--- /dev/null
+++ b/src/main/java/com/wangbin/service/ISurvHisdataAirService.java
@@ -0,0 +1,14 @@
+package com.wangbin.service;
+
+import com.wangbin.entity.SurvHisdataAir;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 空气污染监测历史数据 服务类
+ *
+ *
+ */
+public interface ISurvHisdataAirService extends IService {
+
+}
diff --git a/src/main/java/com/wangbin/service/ISurvHisdataLivestockwaterErrorService.java b/src/main/java/com/wangbin/service/ISurvHisdataLivestockwaterErrorService.java
new file mode 100644
index 0000000..f7ad4fc
--- /dev/null
+++ b/src/main/java/com/wangbin/service/ISurvHisdataLivestockwaterErrorService.java
@@ -0,0 +1,16 @@
+package com.wangbin.service;
+
+import com.wangbin.entity.SurvHisdataLivestockwaterError;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author ${author}
+ * @since 2025-05-07
+ */
+public interface ISurvHisdataLivestockwaterErrorService extends IService {
+
+}
diff --git a/src/main/java/com/wangbin/service/ISurvHisdataLivestockwaterService.java b/src/main/java/com/wangbin/service/ISurvHisdataLivestockwaterService.java
new file mode 100644
index 0000000..499622e
--- /dev/null
+++ b/src/main/java/com/wangbin/service/ISurvHisdataLivestockwaterService.java
@@ -0,0 +1,16 @@
+package com.wangbin.service;
+
+import com.wangbin.entity.SurvHisdataLivestockwater;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wangbin.entity.SurvTransdataLivestockwater;
+
+/**
+ *
+ * 畜禽水污染监测历史数据 服务类
+ *
+ *
+ */
+public interface ISurvHisdataLivestockwaterService extends IService {
+
+ SurvTransdataLivestockwater genData(String deployCode);
+}
diff --git a/src/main/java/com/wangbin/service/ISurvHisdataOrientwaterErrorService.java b/src/main/java/com/wangbin/service/ISurvHisdataOrientwaterErrorService.java
new file mode 100644
index 0000000..9b1dd7c
--- /dev/null
+++ b/src/main/java/com/wangbin/service/ISurvHisdataOrientwaterErrorService.java
@@ -0,0 +1,16 @@
+package com.wangbin.service;
+
+import com.wangbin.entity.SurvHisdataOrientwaterError;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author ${author}
+ * @since 2025-05-07
+ */
+public interface ISurvHisdataOrientwaterErrorService extends IService {
+
+}
diff --git a/src/main/java/com/wangbin/service/ISurvHisdataOrientwaterService.java b/src/main/java/com/wangbin/service/ISurvHisdataOrientwaterService.java
new file mode 100644
index 0000000..cd29fe4
--- /dev/null
+++ b/src/main/java/com/wangbin/service/ISurvHisdataOrientwaterService.java
@@ -0,0 +1,16 @@
+package com.wangbin.service;
+
+import com.wangbin.entity.SurvHisdataOrientwater;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wangbin.entity.SurvTransdataOrientwater;
+
+/**
+ *
+ * 面源水污染监测历史数据 服务类
+ *
+ *
+ */
+public interface ISurvHisdataOrientwaterService extends IService {
+
+ SurvTransdataOrientwater genData(String deployCode);
+}
diff --git a/src/main/java/com/wangbin/service/ISurvHisdataPestlightService.java b/src/main/java/com/wangbin/service/ISurvHisdataPestlightService.java
new file mode 100644
index 0000000..a85a8a5
--- /dev/null
+++ b/src/main/java/com/wangbin/service/ISurvHisdataPestlightService.java
@@ -0,0 +1,14 @@
+package com.wangbin.service;
+
+import com.wangbin.entity.SurvHisdataPestlight;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 杀虫灯历史数据 服务类
+ *
+ *
+ */
+public interface ISurvHisdataPestlightService extends IService {
+
+}
diff --git a/src/main/java/com/wangbin/service/ISurvHisdataSoilService.java b/src/main/java/com/wangbin/service/ISurvHisdataSoilService.java
new file mode 100644
index 0000000..9a2e37d
--- /dev/null
+++ b/src/main/java/com/wangbin/service/ISurvHisdataSoilService.java
@@ -0,0 +1,14 @@
+package com.wangbin.service;
+
+import com.wangbin.entity.SurvHisdataSoil;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 土壤污染监测历史数据 服务类
+ *
+ *
+ */
+public interface ISurvHisdataSoilService extends IService {
+
+}
diff --git a/src/main/java/com/wangbin/service/ISurvTransdataAirService.java b/src/main/java/com/wangbin/service/ISurvTransdataAirService.java
new file mode 100644
index 0000000..bffdc86
--- /dev/null
+++ b/src/main/java/com/wangbin/service/ISurvTransdataAirService.java
@@ -0,0 +1,18 @@
+package com.wangbin.service;
+
+import com.wangbin.entity.SurvTransdataAir;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ *
+ * 空气污染监测数据 服务类
+ *
+ */
+public interface ISurvTransdataAirService extends IService {
+
+ SurvTransdataAir getOneByDeviceCode(String deviceCode);
+
+ void saveBaowen(Map baowenMap);
+}
diff --git a/src/main/java/com/wangbin/service/ISurvTransdataLivestockwaterService.java b/src/main/java/com/wangbin/service/ISurvTransdataLivestockwaterService.java
new file mode 100644
index 0000000..e093be4
--- /dev/null
+++ b/src/main/java/com/wangbin/service/ISurvTransdataLivestockwaterService.java
@@ -0,0 +1,20 @@
+package com.wangbin.service;
+
+import com.wangbin.entity.SurvTransdataLivestockwater;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wangbin.entity.SurvTransdataOrientwater;
+
+/**
+ * 畜禽水污染监测数据表 服务类
+ *
+ */
+public interface ISurvTransdataLivestockwaterService extends IService {
+
+
+ SurvTransdataLivestockwater getOneByDeviceCode(String deviceCode);
+
+ void saveBaowen(String str);
+
+
+
+}
diff --git a/src/main/java/com/wangbin/service/ISurvTransdataOrientwaterService.java b/src/main/java/com/wangbin/service/ISurvTransdataOrientwaterService.java
new file mode 100644
index 0000000..cee86bb
--- /dev/null
+++ b/src/main/java/com/wangbin/service/ISurvTransdataOrientwaterService.java
@@ -0,0 +1,21 @@
+package com.wangbin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wangbin.entity.SurvTransdataOrientwater;
+
+/**
+ *
+ * 面源水污染监测数据表 服务类
+ *
+ *
+ */
+public interface ISurvTransdataOrientwaterService extends IService {
+
+
+ SurvTransdataOrientwater getOneByDeviceCode(String deviceCode);
+
+ void saveBaowen(String str);
+
+
+
+}
diff --git a/src/main/java/com/wangbin/service/ISurvTransdataPestlightService.java b/src/main/java/com/wangbin/service/ISurvTransdataPestlightService.java
new file mode 100644
index 0000000..49efff0
--- /dev/null
+++ b/src/main/java/com/wangbin/service/ISurvTransdataPestlightService.java
@@ -0,0 +1,21 @@
+package com.wangbin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wangbin.entity.SurvTransdataPestlight;
+
+import java.util.Map;
+
+/**
+ * 杀虫灯监测数据 服务类
+ *
+ */
+public interface ISurvTransdataPestlightService extends IService {
+
+
+ SurvTransdataPestlight getOneByDeviceCode(String deviceCode);
+
+ void saveBaowen(Map baowenMap);
+
+
+
+}
diff --git a/src/main/java/com/wangbin/service/ISurvTransdataSoilService.java b/src/main/java/com/wangbin/service/ISurvTransdataSoilService.java
new file mode 100644
index 0000000..9caa3a7
--- /dev/null
+++ b/src/main/java/com/wangbin/service/ISurvTransdataSoilService.java
@@ -0,0 +1,22 @@
+package com.wangbin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wangbin.entity.SurvTransdataSoil;
+
+import java.util.Map;
+
+/**
+ *
+ * 土壤污染监测数据 服务类
+ *
+ *
+ */
+public interface ISurvTransdataSoilService extends IService {
+
+
+
+ SurvTransdataSoil getOneByDeviceCode(String deviceCode);
+
+ void saveBaowen(Map baowenMap);
+
+}
diff --git a/src/main/java/com/wangbin/service/Impl/CommonServiceImpl.java b/src/main/java/com/wangbin/service/Impl/CommonServiceImpl.java
new file mode 100644
index 0000000..eb5919a
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/CommonServiceImpl.java
@@ -0,0 +1,62 @@
+package com.wangbin.service.Impl;
+
+import com.wangbin.service.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 处理业务的服务
+ */
+@Service
+public class CommonServiceImpl implements ICommonService {
+
+//
+// @Autowired
+// private ISurvTransdataAirService transdataAirService;
+// @Autowired
+// private ISurvTransdataLivestockwaterService transdataLivestockwaterService;
+// @Autowired
+// private ISurvTransdataOrientwaterService transdataOrientwaterService;
+// @Autowired
+// private ISurvTransdataPestlightService transdataPestlightService;
+// @Autowired
+// private ISurvTransdataSoilService transdataSoilService;
+// @Autowired
+// private ISurvAlertRecordService alertRecordService;
+// @Autowired
+// private ISurvDeviceDeployService deviceDeployService;
+//
+//
+// @Transactional
+// @Override
+// public void saveBaowen(String baowen) {
+//
+//// Map baowenMap = DataUtil.strToMap(baowen);
+//// String DataTime = "20230704080000";
+//// String code = "0507A010000701";
+//// SurvDeviceDeploy deviceDeploy = deviceDeployService.getOneByCode(code);
+//// if(deviceDeploy != null){
+//// String deployType = deviceDeploy.getDeployType();
+//// if("stink".equals(deployType)){//恶臭
+////
+//// }else if("water_live".equals(deployType)){//畜禽水监测设备
+////
+//// }else if("water_orient".equals(deployType)){//农田面源水监测设备
+////
+//// }else if("air".equals(deployType)){//气象监测设备
+//// transdataAirService.saveBaowen(baowenMap);
+//// }else if("soil".equals(deployType)){//土壤监测设备
+//// transdataSoilService.saveBaowen(baowenMap);
+//// }else if("pestlight".equals(deployType)){//杀虫灯
+//// transdataPestlightService.saveBaowen(baowenMap);
+//// }
+//// alertRecordService.saveBaojing(baowenMap);
+//// }
+// }
+
+
+
+
+
+}
diff --git a/src/main/java/com/wangbin/service/Impl/ScEquZhibiaoServiceImpl.java b/src/main/java/com/wangbin/service/Impl/ScEquZhibiaoServiceImpl.java
new file mode 100644
index 0000000..fd3c456
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/ScEquZhibiaoServiceImpl.java
@@ -0,0 +1,55 @@
+package com.wangbin.service.Impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wangbin.constant.CommonConstant;
+import com.wangbin.entity.ScEquZhibiao;
+import com.wangbin.mapper.ScEquZhibiaoMapper;
+import com.wangbin.service.IScEquZhibiaoService;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 设备指标 服务实现类
+ */
+@Service
+public class ScEquZhibiaoServiceImpl extends ServiceImpl implements IScEquZhibiaoService {
+
+
+ @Override
+ public List getListByEquid(String equid) {
+ QueryWrapper queryWrapper = new QueryWrapper();
+ queryWrapper.eq("equ_id",equid)
+ .isNotNull("code")
+ .ne("code","")
+ .orderByAsc("code");
+ return this.list(queryWrapper);
+ }
+
+
+ @Override
+ public Map getMap(String equid) {
+ List zhibiaoList = getListByEquid(equid);
+ Map map = new HashMap();
+ zhibiaoList.stream().forEach(i->{
+
+ if(i.getValLow() != null || i.getValHeight() != null){
+ JSONObject json = new JSONObject();
+ json.put("name",i.getName());
+ json.put("nuit",i.getNuit());
+ if(i.getValLow() != null){
+ json.put(CommonConstant.VAL_LOW,i.getValLow());
+ }
+ if(i.getValHeight() != null){
+ json.put(CommonConstant.VAL_HEIGHT,i.getValHeight());
+ }
+ map.put(i.getCode(),json);
+ }
+ });
+ return map;
+ }
+}
diff --git a/src/main/java/com/wangbin/service/Impl/SurvAlertRecordServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvAlertRecordServiceImpl.java
new file mode 100644
index 0000000..03e617b
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/SurvAlertRecordServiceImpl.java
@@ -0,0 +1,110 @@
+package com.wangbin.service.Impl;
+
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wangbin.constant.CommonConstant;
+import com.wangbin.entity.SurvAlertRecord;
+import com.wangbin.entity.SurvDeviceDeploy;
+import com.wangbin.mapper.SurvAlertRecordMapper;
+import com.wangbin.service.IScEquZhibiaoService;
+import com.wangbin.service.ISurvAlertRecordService;
+import com.wangbin.service.ISurvDeviceDeployService;
+import com.wangbin.util.DataUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ *
+ * 预警记录表 服务实现类
+ *
+ *
+ */
+@Service
+public class SurvAlertRecordServiceImpl extends ServiceImpl implements ISurvAlertRecordService {
+
+
+ @Autowired
+ private IScEquZhibiaoService zhibiaoService;
+ @Autowired
+ private ISurvDeviceDeployService deviceDeployService;
+
+ @Override
+ public void saveBaojing(Map baowenMap) {
+ //处理报警情况
+ String mn = baowenMap.get("mn");
+ String DataTime = baowenMap.get("DataTime");
+ SurvDeviceDeploy deviceDeploy = deviceDeployService.getOneByCode(mn);
+ if(deviceDeploy != null){
+ Map zhibiaomap = zhibiaoService.getMap(deviceDeploy.getId());
+ StringBuilder sb = new StringBuilder();
+ JSONArray jsonarr = new JSONArray();
+ for (String key : zhibiaomap.keySet()) {
+ //获取报文中某个指标的数据
+ String baowenVal = baowenMap.get(key);
+ //获取某个指标的阈值
+ JSONObject jsonObject = zhibiaomap.get(key);
+ Set set = jsonObject.keySet();
+
+ for(String str:set){
+ String yuzhi = jsonObject.getString(str);
+ //低阈值
+ if(str.equals(CommonConstant.VAL_LOW) && DataUtil.bijiao(yuzhi,baowenVal) == 1){
+ sb.append("监测数据名称:"+jsonObject.get("name"))
+ .append(",监测数据值:"+baowenVal)
+ .append(",低阈值:"+yuzhi)
+ .append(",计量单位:"+jsonObject.get("nuit"))
+ .append(";");
+
+ JSONObject json = new JSONObject();
+ json.put("name",jsonObject.get("name"));
+ json.put("unit",jsonObject.get("nuit"));
+ json.put("val",baowenVal);
+ json.put(CommonConstant.VAL_LOW,yuzhi);
+ jsonarr.add(json);
+
+
+ }else if(str.equals(CommonConstant.VAL_HEIGHT) && DataUtil.bijiao(baowenVal,yuzhi) == 1){
+ sb.append("监测数据名称:"+jsonObject.get("name"))
+ .append(",监测数据值:"+baowenVal)
+ .append(",高阈值:"+yuzhi)
+ .append(",计量单位:"+jsonObject.get("nuit"))
+ .append(";");
+
+
+ JSONObject json = new JSONObject();
+ json.put("name",jsonObject.get("name"));
+ json.put("unit",jsonObject.get("nuit"));
+ json.put("val",baowenVal);
+ json.put(CommonConstant.VAL_HEIGHT,yuzhi);
+ jsonarr.add(json);
+
+ }
+ }
+ }
+
+// System.out.println("报警:"+jsonarr.toJSONString());
+
+
+ if(StringUtils.isNotBlank(sb.toString()) || jsonarr.size()>0){
+ SurvAlertRecord baojing = new SurvAlertRecord();
+ baojing.setCreatedBy("wangbin");
+ baojing.setCreateTime(new Date());
+ baojing.setAlertTime(DateUtil.parse(DataTime));
+ baojing.setDeployCode(mn);
+// baojing.setAlertContent(sb.toString());
+ baojing.setAlertContent(jsonarr.toJSONString());
+ save(baojing);
+ //更新设备状态为报警
+ deviceDeploy.setIzBaojing("1");
+ deviceDeployService.updateById(deviceDeploy);
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/wangbin/service/Impl/SurvDeviceDeployServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvDeviceDeployServiceImpl.java
new file mode 100644
index 0000000..e664cb2
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/SurvDeviceDeployServiceImpl.java
@@ -0,0 +1,34 @@
+package com.wangbin.service.Impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wangbin.entity.SurvDeviceDeploy;
+import com.wangbin.mapper.SurvDeviceDeployMapper;
+import com.wangbin.service.ISurvDeviceDeployService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备表 服务实现类
+ *
+ */
+@Service
+public class SurvDeviceDeployServiceImpl extends ServiceImpl implements ISurvDeviceDeployService {
+
+
+ @Override
+ public SurvDeviceDeploy getOneByCode(String code) {
+ QueryWrapper queryWrapper = new QueryWrapper();
+ queryWrapper.eq("DEPLOY_CODE",code).last("limit 1");
+ return getOne(queryWrapper);
+ }
+
+
+ @Override
+ public SurvDeviceDeploy getOneByIpPort(String ip, String port) {
+ QueryWrapper queryWrapper = new QueryWrapper();
+ queryWrapper.eq("IP_ADDR",ip)
+ .eq("PORT",port)
+ .last("limit 1");
+ return getOne(queryWrapper);
+ }
+}
diff --git a/src/main/java/com/wangbin/service/Impl/SurvHisdataAirServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvHisdataAirServiceImpl.java
new file mode 100644
index 0000000..f598ae4
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/SurvHisdataAirServiceImpl.java
@@ -0,0 +1,18 @@
+package com.wangbin.service.Impl;
+
+import com.wangbin.entity.SurvHisdataAir;
+import com.wangbin.mapper.SurvHisdataAirMapper;
+import com.wangbin.service.ISurvHisdataAirService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 空气污染监测历史数据 服务实现类
+ *
+ *
+ */
+@Service
+public class SurvHisdataAirServiceImpl extends ServiceImpl implements ISurvHisdataAirService {
+
+}
diff --git a/src/main/java/com/wangbin/service/Impl/SurvHisdataLivestockwaterErrorServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvHisdataLivestockwaterErrorServiceImpl.java
new file mode 100644
index 0000000..7cbae93
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/SurvHisdataLivestockwaterErrorServiceImpl.java
@@ -0,0 +1,20 @@
+package com.wangbin.service.Impl;
+
+import com.wangbin.entity.SurvHisdataLivestockwaterError;
+import com.wangbin.mapper.SurvHisdataLivestockwaterErrorMapper;
+import com.wangbin.service.ISurvHisdataLivestockwaterErrorService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author ${author}
+ * @since 2025-05-07
+ */
+@Service
+public class SurvHisdataLivestockwaterErrorServiceImpl extends ServiceImpl implements ISurvHisdataLivestockwaterErrorService {
+
+}
diff --git a/src/main/java/com/wangbin/service/Impl/SurvHisdataLivestockwaterServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvHisdataLivestockwaterServiceImpl.java
new file mode 100644
index 0000000..05c7118
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/SurvHisdataLivestockwaterServiceImpl.java
@@ -0,0 +1,131 @@
+package com.wangbin.service.Impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.wangbin.constant.PollutionConstants;
+import com.wangbin.entity.SurvHisdataLivestockwater;
+import com.wangbin.entity.SurvTransdataLivestockwater;
+import com.wangbin.mapper.SurvHisdataLivestockwaterMapper;
+import com.wangbin.service.ISurvHisdataLivestockwaterService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wangbin.util.BigDecimalRandomAdjuster;
+import com.wangbin.util.DateUtils;
+import com.wangbin.util.SpringBeanUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.Random;
+
+/**
+ *
+ * 畜禽水污染监测历史数据 服务实现类
+ *
+ *
+ */
+@Service
+@Slf4j
+public class SurvHisdataLivestockwaterServiceImpl extends ServiceImpl implements ISurvHisdataLivestockwaterService {
+
+ @Autowired
+ @Lazy
+ private SurvTransdataLivestockwaterServiceImpl survTransdataLivestockwaterServiceImpl;
+ @Override
+ public SurvTransdataLivestockwater genData(String deployCode) {
+ log.warn("=================畜禽逻辑===================="+deployCode);
+ try {
+// survTransdataLivestockwaterServiceImpl = SpringBeanUtils.getBean("SurvTransdataLivestockwaterServiceImpl", SurvTransdataLivestockwaterServiceImpl.class);
+
+ SurvTransdataLivestockwater newestData = survTransdataLivestockwaterServiceImpl.getOneByDeviceCode(deployCode);
+ String orgId = null;
+ if (newestData != null) {
+ orgId = newestData.getId();
+ boolean isNegative = false;
+ //检查有没有负数
+ if(StringUtils.isNotBlank(newestData.getDataWaterTp())){//跳过负数
+ if(newestData.getDataWaterTp().contains("-") || newestData.getDataWaterTp().length()>10){
+ isNegative = true;
+ }
+ }
+ else if(StringUtils.isNotBlank(newestData.getDataWaterTn())){//跳过负数
+ if(newestData.getDataWaterTn().contains("-") || newestData.getDataWaterTn().length()>10){
+ isNegative = true;
+ }
+ }
+ else if(StringUtils.isNotBlank(newestData.getDataWaterNh()) ){//跳过负数
+ if(newestData.getDataWaterNh().contains("-") || newestData.getDataWaterNh().length()>10){
+ isNegative = true;
+ }
+ }
+ else if(StringUtils.isNotBlank(newestData.getDataWaterCod())){//跳过负数
+ if(newestData.getDataWaterCod().contains("-") || newestData.getDataWaterCod().length()>10){
+ isNegative = true;
+ }
+ }
+ if(!isNegative){//非负数时,检查时间是否过期,否则直接自动覆盖此数据
+ if (newestData.getDataDateTime() != null) {
+ long secs = DateUtils.getSecondsDiff(newestData.getDataDateTime(), new Date());
+ if (secs < PollutionConstants.dataGenGap) {//间隔不足时不生成
+ log.warn("畜禽间隔为:{},跳过", secs);
+ return null;
+ }
+ }
+ }else {
+ newestData =null;
+ }
+
+ }
+ if (newestData == null) {
+ newestData = new SurvTransdataLivestockwater();
+ newestData.setDataWaterTp("10.1785");
+ newestData.setDataWaterTn("49.6451");
+ newestData.setDataWaterNh("49.7743");
+ newestData.setDataWaterCod("501.5000");
+ }
+
+ //开始生成
+ int scale = 4;
+ BigDecimal fixedRange = new BigDecimal("0.2");
+
+ String[] waterFluidLevel = {"0.14", "0.14", "0.15", "0.15"};
+ Random rand = new Random();
+ int values = rand.nextInt(4);
+
+ SurvHisdataLivestockwater hisdataLivestockwater = new SurvHisdataLivestockwater();
+ Date nowTime = new Date();
+ hisdataLivestockwater.setReVision(0);
+ hisdataLivestockwater.setCreatedBy("ftask");
+ hisdataLivestockwater.setCreateTime(nowTime);
+ hisdataLivestockwater.setIsDel(0);
+ hisdataLivestockwater.setDataWaterTp(BigDecimalRandomAdjuster.randomAdjustByFixedRange(new BigDecimal(newestData.getDataWaterTp()), fixedRange, scale));
+ hisdataLivestockwater.setDataWaterTn(BigDecimalRandomAdjuster.randomAdjustByFixedRange(new BigDecimal(newestData.getDataWaterTn()), fixedRange, scale));
+ hisdataLivestockwater.setDataDateTime(nowTime);
+ hisdataLivestockwater.setDataGatherType("realTime");
+ hisdataLivestockwater.setDataWaterNh(BigDecimalRandomAdjuster.randomAdjustByFixedRange(new BigDecimal(newestData.getDataWaterNh()), fixedRange, scale));
+ hisdataLivestockwater.setDataWaterCod(BigDecimalRandomAdjuster.randomAdjustByFixedRange(new BigDecimal(newestData.getDataWaterCod()), fixedRange, scale));
+
+ hisdataLivestockwater.setDeviceCode(deployCode);
+ hisdataLivestockwater.setFluidLevel(waterFluidLevel[values]);
+ hisdataLivestockwater.setFirstValveStatus("0");
+ hisdataLivestockwater.setSecondValveStatus("1");
+ hisdataLivestockwater.setCrashStopStatus("0");
+ hisdataLivestockwater.setWaterPumpStatus("0");
+ hisdataLivestockwater.setMainSideStatus("0");
+ save(hisdataLivestockwater);
+
+
+ BeanUtil.copyProperties(hisdataLivestockwater, newestData);
+ newestData.setId(orgId);
+ newestData.setDataDateTime(nowTime);
+ survTransdataLivestockwaterServiceImpl.saveOrUpdate(newestData);
+ return newestData;
+ }catch (Exception e){
+ e.printStackTrace();
+ log.error(e.getMessage());
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/wangbin/service/Impl/SurvHisdataOrientwaterErrorServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvHisdataOrientwaterErrorServiceImpl.java
new file mode 100644
index 0000000..6a6dc09
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/SurvHisdataOrientwaterErrorServiceImpl.java
@@ -0,0 +1,20 @@
+package com.wangbin.service.Impl;
+
+import com.wangbin.entity.SurvHisdataOrientwaterError;
+import com.wangbin.mapper.SurvHisdataOrientwaterErrorMapper;
+import com.wangbin.service.ISurvHisdataOrientwaterErrorService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author ${author}
+ * @since 2025-05-07
+ */
+@Service
+public class SurvHisdataOrientwaterErrorServiceImpl extends ServiceImpl implements ISurvHisdataOrientwaterErrorService {
+
+}
diff --git a/src/main/java/com/wangbin/service/Impl/SurvHisdataOrientwaterServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvHisdataOrientwaterServiceImpl.java
new file mode 100644
index 0000000..79cd2df
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/SurvHisdataOrientwaterServiceImpl.java
@@ -0,0 +1,142 @@
+package com.wangbin.service.Impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.wangbin.constant.PollutionConstants;
+import com.wangbin.entity.SurvHisdataOrientwater;
+import com.wangbin.entity.SurvTransdataOrientwater;
+import com.wangbin.mapper.SurvHisdataOrientwaterMapper;
+import com.wangbin.mapper.SurvTransdataOrientwaterMapper;
+import com.wangbin.service.ISurvHisdataOrientwaterService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wangbin.service.ISurvTransdataOrientwaterService;
+import com.wangbin.util.BigDecimalRandomAdjuster;
+import com.wangbin.util.DateUtils;
+import com.wangbin.util.SpringBeanUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.Random;
+
+/**
+ *
+ * 面源水污染监测历史数据 服务实现类
+ *
+ *
+ */
+@Service
+@Slf4j
+public class SurvHisdataOrientwaterServiceImpl extends ServiceImpl implements ISurvHisdataOrientwaterService {
+
+ /**
+ * 上下文对象实例
+ */
+ @Autowired
+ @Lazy
+ private SurvTransdataOrientwaterServiceImpl orientwaterService ;
+
+
+ @Override
+ public SurvTransdataOrientwater genData(String deployCode) {
+ try {
+ log.warn("=================面源逻辑====================" + deployCode);
+ SurvTransdataOrientwater newestData = orientwaterService.getOneByDeviceCode(deployCode);
+ String orgId = null;
+ if (newestData != null) {
+ orgId = newestData.getId();
+ boolean isNegative = false;
+ //检查有没有负数
+ if(StringUtils.isNotBlank(newestData.getDataWaterTp())){//跳过负数
+ if(newestData.getDataWaterTp().contains("-") || newestData.getDataWaterTp().length()>10){
+ isNegative = true;
+ }
+ }
+ else if(StringUtils.isNotBlank(newestData.getDataWaterTn())){//跳过负数
+ if(newestData.getDataWaterTn().contains("-") || newestData.getDataWaterTn().length()>10){
+ isNegative = true;
+ }
+ }
+ else if(StringUtils.isNotBlank(newestData.getDataWaterNo())){//跳过负数
+ if(newestData.getDataWaterNo().contains("-") || newestData.getDataWaterNo().length()>10){
+ isNegative = true;
+ }
+ }
+ if(!isNegative) {//非负数时,检查时间是否过期,否则直接自动覆盖此数据
+ if (newestData.getDataDateTime() != null) {
+ long secs = DateUtils.getSecondsDiff(newestData.getDataDateTime(), new Date());
+ if (secs < PollutionConstants.dataGenGap) {//间隔不足时不生成
+ log.warn("面源间隔为:{},跳过", secs);
+ return null;
+ }
+ }
+ }else {
+ newestData =null;
+ }
+ }
+ if (newestData == null) {
+ newestData = new SurvTransdataOrientwater();
+ newestData.setDataWaterTp("1.0063");
+ newestData.setDataWaterTn("2.1114");
+ newestData.setDataWaterNo("3.8037");
+ if ("xzp-water-02".equals(deployCode)) {
+ newestData.setDataWaterNo("16.3254");
+ }
+ newestData.setDataWaterTpSy("0.5328");
+ newestData.setDataWaterTpLd("0.0001");
+ newestData.setDataWaterTnSy("1.5056");
+ newestData.setDataWaterTnLd("0.0002");
+ newestData.setFluidLevel("0.14");
+ }
+ //开始生成
+ int scale = 4;
+ BigDecimal fixedRange = new BigDecimal("0.02");
+ String[] waterTpSy = {"0.5328", "0.0062", "0.5328", "0.0062"};
+ String[] waterTpLd = {"0.0001", "0.0001", "0.0002", "0.0002"};
+ String[] waterTnSy = {"1.5056", "14.8091", "1.5053", "1.3041"};
+ String[] waterTnLd = {"0.0002", "0.0002", "0.0002", "0.0002"};
+ String[] waterFluidLevel = {"0.14", "0.14", "0.15", "0.15"};
+ Random rand = new Random();
+ int values = rand.nextInt(4);
+
+ SurvHisdataOrientwater hisdataOrientwater = new SurvHisdataOrientwater();
+ Date nowTime = new Date();
+ hisdataOrientwater.setReVision(0);
+ hisdataOrientwater.setCreatedBy("ftask");
+ hisdataOrientwater.setCreateTime(nowTime);
+ hisdataOrientwater.setIsDel(0);
+ hisdataOrientwater.setDataWaterTp(BigDecimalRandomAdjuster.randomAdjustByFixedRange(new BigDecimal(newestData.getDataWaterTp()), fixedRange, scale));
+ hisdataOrientwater.setDataWaterTn(BigDecimalRandomAdjuster.randomAdjustByFixedRange(new BigDecimal(newestData.getDataWaterTn()), fixedRange, scale));
+ hisdataOrientwater.setDataDateTime(nowTime);
+ hisdataOrientwater.setDataGatherType("realTime");
+ hisdataOrientwater.setDataWaterNo(BigDecimalRandomAdjuster.randomAdjustByFixedRange(new BigDecimal(newestData.getDataWaterNo()), fixedRange, scale));
+ hisdataOrientwater.setDeviceCode(deployCode);
+ hisdataOrientwater.setDataWaterTpSy(waterTpSy[values]);
+ hisdataOrientwater.setDataWaterTpLd(waterTpLd[values]);
+ hisdataOrientwater.setDataWaterTnSy(waterTnSy[values]);
+ hisdataOrientwater.setDataWaterTnLd(waterTnLd[values]);
+ hisdataOrientwater.setFluidLevel(waterFluidLevel[values]);
+ hisdataOrientwater.setFirstValveStatus("0");
+ hisdataOrientwater.setSecondValveStatus("1");
+ hisdataOrientwater.setCrashStopStatus("0");
+ hisdataOrientwater.setWaterPumpStatus("0");
+ hisdataOrientwater.setMainSideStatus("0");
+ save(hisdataOrientwater);
+
+ BeanUtil.copyProperties(hisdataOrientwater, newestData);
+ newestData.setId(orgId);
+ newestData.setDataDateTime(nowTime);
+ orientwaterService.saveOrUpdate(newestData);
+ return newestData;
+ }catch (Exception e){
+ e.printStackTrace();
+ log.error(e.getMessage());
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/wangbin/service/Impl/SurvHisdataPestlightServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvHisdataPestlightServiceImpl.java
new file mode 100644
index 0000000..6aecdca
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/SurvHisdataPestlightServiceImpl.java
@@ -0,0 +1,18 @@
+package com.wangbin.service.Impl;
+
+import com.wangbin.entity.SurvHisdataPestlight;
+import com.wangbin.mapper.SurvHisdataPestlightMapper;
+import com.wangbin.service.ISurvHisdataPestlightService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 杀虫灯历史数据 服务实现类
+ *
+ *
+ */
+@Service
+public class SurvHisdataPestlightServiceImpl extends ServiceImpl implements ISurvHisdataPestlightService {
+
+}
diff --git a/src/main/java/com/wangbin/service/Impl/SurvHisdataSoilServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvHisdataSoilServiceImpl.java
new file mode 100644
index 0000000..a4f0cde
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/SurvHisdataSoilServiceImpl.java
@@ -0,0 +1,18 @@
+package com.wangbin.service.Impl;
+
+import com.wangbin.entity.SurvHisdataSoil;
+import com.wangbin.mapper.SurvHisdataSoilMapper;
+import com.wangbin.service.ISurvHisdataSoilService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 土壤污染监测历史数据 服务实现类
+ *
+ *
+ */
+@Service
+public class SurvHisdataSoilServiceImpl extends ServiceImpl implements ISurvHisdataSoilService {
+
+}
diff --git a/src/main/java/com/wangbin/service/Impl/SurvTransdataAirServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvTransdataAirServiceImpl.java
new file mode 100644
index 0000000..b1253ab
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/SurvTransdataAirServiceImpl.java
@@ -0,0 +1,95 @@
+package com.wangbin.service.Impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wangbin.entity.SurvDeviceDeploy;
+import com.wangbin.entity.SurvHisdataAir;
+import com.wangbin.entity.SurvTransdataAir;
+import com.wangbin.mapper.SurvTransdataAirMapper;
+import com.wangbin.service.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ *
+ * 空气污染监测数据 服务实现类
+ *
+ *
+ */
+@Service
+public class SurvTransdataAirServiceImpl extends ServiceImpl implements ISurvTransdataAirService {
+
+
+
+ @Autowired
+ private ISurvHisdataAirService hisdataAirService;
+ @Autowired
+ private ISurvAlertRecordService alertRecordService;
+ @Autowired
+ private ISurvDeviceDeployService deviceDeployService;
+
+
+ @Override
+ public SurvTransdataAir getOneByDeviceCode(String deviceCode) {
+
+ QueryWrapper queryWrapper = new QueryWrapper();
+ queryWrapper.eq("DEVICE_CODE",deviceCode).last("limit 1");
+ return getOne(queryWrapper);
+ }
+
+ @Transactional
+ @Override
+ public void saveBaowen(Map baowenMap) {
+
+ String mn = baowenMap.get("mn");
+ String DataTime = baowenMap.get("DataTime");
+ Date kDateTime = null;
+ //保存或者更新实时表
+ SurvTransdataAir air = getOneByDeviceCode(mn);
+ if(air == null){
+ air = new SurvTransdataAir();
+ air.setCreatedBy("wb");//创建人
+ air.setCreateTime(new Date());//创建时间
+ }else{
+ air.setUpdatedBy("wb");//创建人
+ air.setUpdatedTime(new Date());//创建时间
+ kDateTime = air.getDataDateTime();
+ }
+ air.setDataAirTemp(baowenMap.get("e3"));//温度
+ air.setDataAirWet(baowenMap.get("e9"));//湿度
+ air.setDataAirPress(baowenMap.get("e5"));//数字气压
+ air.setDataRainFall(baowenMap.get("e2"));//雨量
+ air.setDataWindSpeed(baowenMap.get("e1"));//风速
+ air.setDataWindDirection(baowenMap.get("e7"));//风向
+ air.setDataSunFallout(baowenMap.get("e6"));//简易总辐射
+ air.setDataRainTotal(baowenMap.get("e4"));//雨量累计
+ air.setDataSunTotal(baowenMap.get("e8"));//辐射累计
+ air.setDataDateTime(DateUtil.parse(DataTime));//数据时间
+ air.setDataGatherType("realTime");//数据类型-realTime=实时,dayTime=日数据,month=月数据,year=年数据
+ air.setDeviceCode(mn);//设备编号
+ saveOrUpdate(air);
+ //保存历史表
+ if(kDateTime == null || !DataTime.equals(DateUtil.format(kDateTime,"yyyy-MM-dd HH:mm:ss"))){
+ SurvHisdataAir hisdataAir = new SurvHisdataAir();
+ BeanUtil.copyProperties(air,hisdataAir);
+ hisdataAir.setId(IdUtil.getSnowflakeNextIdStr());
+ hisdataAirService.save(hisdataAir);
+ }
+ //处理报警
+ SurvDeviceDeploy deploy = deviceDeployService.getOneByCode(mn);
+ if(deploy != null){
+ //暂时不保存报文了
+ alertRecordService.saveBaojing(baowenMap);
+ }
+
+
+
+ }
+}
diff --git a/src/main/java/com/wangbin/service/Impl/SurvTransdataLivestockwaterServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvTransdataLivestockwaterServiceImpl.java
new file mode 100644
index 0000000..d0a8e30
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/SurvTransdataLivestockwaterServiceImpl.java
@@ -0,0 +1,129 @@
+package com.wangbin.service.Impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.wangbin.entity.*;
+import com.wangbin.mapper.SurvTransdataLivestockwaterMapper;
+import com.wangbin.service.ISurvAlertRecordService;
+import com.wangbin.service.ISurvHisdataLivestockwaterService;
+import com.wangbin.service.ISurvTransdataLivestockwaterService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wangbin.util.DataUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ * 畜禽水污染监测数据表 服务实现类
+ *
+ *
+ */
+@Service
+@Slf4j
+public class SurvTransdataLivestockwaterServiceImpl extends ServiceImpl implements ISurvTransdataLivestockwaterService {
+
+
+ @Autowired
+ private SurvHisdataLivestockwaterServiceImpl hisdataLivestockwaterService;
+ @Autowired
+ private ISurvAlertRecordService alertRecordService;
+ @Autowired
+ private SurvHisdataLivestockwaterErrorServiceImpl hisdataLivestockwaterErrorService;
+
+
+ @Override
+ public SurvTransdataLivestockwater getOneByDeviceCode(String deviceCode) {
+ QueryWrapper queryWrapper = new QueryWrapper();
+ queryWrapper.eq("DEVICE_CODE",deviceCode).last("limit 1");
+ return getOne(queryWrapper);
+ }
+
+ @Override
+ @Transactional
+ public void saveBaowen(String str) {
+ try {
+ SurvTransdataLivestockwater livestockwater = DataUtil.strToLivewater(str);
+ //保存或者更新实时表
+ SurvTransdataLivestockwater transdataLivestockwater = getOneByDeviceCode(livestockwater.getDeviceCode());
+ if(transdataLivestockwater == null){
+ transdataLivestockwater = livestockwater;
+ }else{
+// String id = transdataLivestockwater.getId();
+ BeanUtils.copyProperties(livestockwater,transdataLivestockwater,"id");
+// transdataLivestockwater.setId(id);
+ }
+ transdataLivestockwater.setCreatedBy("wb");//创建人
+ transdataLivestockwater.setCreateTime(new Date());//创建时间
+ //舍弃为空、负数、无意义的长串类数据
+ boolean isok = true;
+ if(StringUtils.isNotBlank(transdataLivestockwater.getDataWaterTp())){
+ if(transdataLivestockwater.getDataWaterTp().contains("-") || transdataLivestockwater.getDataWaterTp().length()>10 || "0.0000".equals(transdataLivestockwater.getDataWaterTp())){
+ isok =false;
+ }
+ }else{
+ isok =false;
+ }
+ if(StringUtils.isNotBlank(transdataLivestockwater.getDataWaterTn())){
+ if(transdataLivestockwater.getDataWaterTn().contains("-") || transdataLivestockwater.getDataWaterTn().length()>10 || "0.0000".equals(transdataLivestockwater.getDataWaterTn())){
+ isok =false;
+ }
+ }else{
+ isok =false;
+ }
+ if(StringUtils.isNotBlank(transdataLivestockwater.getDataWaterNh())){
+ if(transdataLivestockwater.getDataWaterNh().contains("-") || transdataLivestockwater.getDataWaterNh().length()>10 || "0.0000".equals(transdataLivestockwater.getDataWaterNh()) ){
+ isok =false;
+ }
+ }else{
+ isok =false;
+ }
+ if(StringUtils.isNotBlank(transdataLivestockwater.getDataWaterCod())){
+ if(transdataLivestockwater.getDataWaterCod().contains("-") || transdataLivestockwater.getDataWaterCod().length()>10 || "0.0000".equals(transdataLivestockwater.getDataWaterCod()) ){
+ isok =false;
+ }
+ }else{
+ isok =false;
+ }
+ if(isok) {
+
+ saveOrUpdate(transdataLivestockwater);
+ //保存历史表
+ SurvHisdataLivestockwater hisdataLivestockwater = new SurvHisdataLivestockwater();
+ BeanUtil.copyProperties(transdataLivestockwater, hisdataLivestockwater);
+ hisdataLivestockwater.setId(IdUtil.getSnowflakeNextIdStr());
+ hisdataLivestockwaterService.save(hisdataLivestockwater);
+
+ //处理报警
+ Date dataDateTime = transdataLivestockwater.getDataDateTime();
+ String dataDateTimeStr = DateUtil.format(dataDateTime, "yyyy-MM-dd HH:mm:ss");
+ Map baowenMap = new HashMap();
+ baowenMap.put("mn", transdataLivestockwater.getDeviceCode());
+ baowenMap.put("DataTime", dataDateTimeStr);
+ baowenMap.put("e1", transdataLivestockwater.getDataWaterTp());
+ baowenMap.put("e2", transdataLivestockwater.getDataWaterTpSy());
+ baowenMap.put("e3", transdataLivestockwater.getDataWaterTpLd());
+ baowenMap.put("e4", transdataLivestockwater.getDataWaterTn());
+ baowenMap.put("e5", transdataLivestockwater.getDataWaterTnSy());
+ baowenMap.put("e6", transdataLivestockwater.getDataWaterTnLd());
+ baowenMap.put("e7", transdataLivestockwater.getDataWaterNo());
+ alertRecordService.saveBaojing(baowenMap);
+ }else{
+ SurvHisdataLivestockwaterError error = new SurvHisdataLivestockwaterError();
+ BeanUtil.copyProperties(transdataLivestockwater, error);
+ hisdataLivestockwaterErrorService.save(error);
+ }
+ }catch (Exception e){
+ log.info("解析错误",e);
+ }
+ }
+}
diff --git a/src/main/java/com/wangbin/service/Impl/SurvTransdataOrientwaterServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvTransdataOrientwaterServiceImpl.java
new file mode 100644
index 0000000..3240f04
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/SurvTransdataOrientwaterServiceImpl.java
@@ -0,0 +1,126 @@
+package com.wangbin.service.Impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wangbin.entity.SurvHisdataOrientwater;
+import com.wangbin.entity.SurvHisdataOrientwaterError;
+import com.wangbin.entity.SurvTransdataOrientwater;
+import com.wangbin.mapper.SurvTransdataOrientwaterMapper;
+import com.wangbin.service.ISurvAlertRecordService;
+import com.wangbin.service.ISurvHisdataOrientwaterService;
+import com.wangbin.service.ISurvTransdataOrientwaterService;
+import com.wangbin.util.DataUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ * 面源水污染监测数据表 服务实现类
+ *
+ *
+ */
+@Service
+@Slf4j
+public class SurvTransdataOrientwaterServiceImpl extends ServiceImpl implements ISurvTransdataOrientwaterService {
+
+
+ @Autowired
+ private SurvHisdataOrientwaterServiceImpl hisdataOrientwaterService;
+ @Autowired
+ private ISurvAlertRecordService alertRecordService;
+ @Autowired
+ private SurvHisdataOrientwaterErrorServiceImpl hisdataOrientwaterErrorService;
+
+ @Override
+ public SurvTransdataOrientwater getOneByDeviceCode(String deviceCode) {
+ QueryWrapper queryWrapper = new QueryWrapper();
+ queryWrapper.eq("DEVICE_CODE",deviceCode).last("limit 1");
+ return getOne(queryWrapper);
+ }
+
+ @Override
+ @Transactional
+ public void saveBaowen(String str) {
+
+ try {
+ SurvTransdataOrientwater orientwater = DataUtil.strToOrientwater(str);
+ //保存或者更新实时表
+ SurvTransdataOrientwater transdataOrientwater = getOneByDeviceCode(orientwater.getDeviceCode());
+ if(transdataOrientwater == null){
+ transdataOrientwater = orientwater;
+ }else{
+ String id = transdataOrientwater.getId();
+ BeanUtils.copyProperties(orientwater,transdataOrientwater);
+ transdataOrientwater.setId(id);
+ }
+ transdataOrientwater.setCreatedBy("wb");//创建人
+ transdataOrientwater.setCreateTime(new Date());//创建时间
+ //舍弃为空、负数、无意义的长串类数据
+ boolean isok = true;
+ if(StringUtils.isNotBlank(transdataOrientwater.getDataWaterTp())){
+ if(transdataOrientwater.getDataWaterTp().contains("-") || transdataOrientwater.getDataWaterTp().length()>10 || "0.0000".equals(transdataOrientwater.getDataWaterTp()) ){
+ isok =false;
+ }
+ }else{
+ isok =false;
+ }
+ if(StringUtils.isNotBlank(transdataOrientwater.getDataWaterTn())){
+ if(transdataOrientwater.getDataWaterTn().contains("-") || transdataOrientwater.getDataWaterTn().length()>10 || "0.0000".equals(transdataOrientwater.getDataWaterTn())){
+ isok =false;
+ }
+ }else{
+ isok =false;
+ }
+ if(StringUtils.isNotBlank(transdataOrientwater.getDataWaterNo())){
+ if(transdataOrientwater.getDataWaterNo().contains("-") || transdataOrientwater.getDataWaterNo().length()>10 || "0.0000".equals(transdataOrientwater.getDataWaterNo())){
+ isok =false;
+ }
+ }else{
+ isok =false;
+ }
+ if(isok) {
+ saveOrUpdate(transdataOrientwater);
+ //保存历史表
+ SurvHisdataOrientwater hisdataOrientwater = new SurvHisdataOrientwater();
+ BeanUtil.copyProperties(transdataOrientwater, hisdataOrientwater);
+ hisdataOrientwater.setId(IdUtil.getSnowflakeNextIdStr());
+ hisdataOrientwaterService.save(hisdataOrientwater);
+
+ //处理报警
+ Date dataDateTime = transdataOrientwater.getDataDateTime();
+ String dataDateTimeStr = DateUtil.format(dataDateTime, "yyyy-MM-dd HH:mm:ss");
+ Map baowenMap = new HashMap();
+ baowenMap.put("mn", transdataOrientwater.getDeviceCode());
+ baowenMap.put("DataTime", dataDateTimeStr);
+ baowenMap.put("e1", transdataOrientwater.getDataWaterTp());
+ baowenMap.put("e2", transdataOrientwater.getDataWaterTpSy());
+ baowenMap.put("e3", transdataOrientwater.getDataWaterTpLd());
+ baowenMap.put("e4", transdataOrientwater.getDataWaterTn());
+ baowenMap.put("e5", transdataOrientwater.getDataWaterTnSy());
+ baowenMap.put("e6", transdataOrientwater.getDataWaterTnLd());
+ baowenMap.put("e7", transdataOrientwater.getDataWaterNo());
+ alertRecordService.saveBaojing(baowenMap);
+ }else{
+ SurvHisdataOrientwaterError survHisdataOrientwaterError =new SurvHisdataOrientwaterError();
+ BeanUtil.copyProperties(transdataOrientwater,survHisdataOrientwaterError);
+ survHisdataOrientwaterError.setTransDate(new Date());
+ hisdataOrientwaterErrorService.save(survHisdataOrientwaterError);
+ }
+ }catch (Exception e){
+ log.info("解析错误",e);
+ }
+
+
+ }
+}
diff --git a/src/main/java/com/wangbin/service/Impl/SurvTransdataPestlightServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvTransdataPestlightServiceImpl.java
new file mode 100644
index 0000000..aeffe65
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/SurvTransdataPestlightServiceImpl.java
@@ -0,0 +1,74 @@
+package com.wangbin.service.Impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wangbin.entity.SurvHisdataPestlight;
+import com.wangbin.entity.SurvTransdataPestlight;
+import com.wangbin.mapper.SurvTransdataPestlightMapper;
+import com.wangbin.service.ISurvHisdataPestlightService;
+import com.wangbin.service.ISurvTransdataPestlightService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * 杀虫灯监测数据 服务实现类
+ *
+ */
+@Service
+public class SurvTransdataPestlightServiceImpl extends ServiceImpl implements ISurvTransdataPestlightService {
+
+
+ @Autowired
+ private ISurvHisdataPestlightService hisdataPestlightService;
+
+
+ @Override
+ public SurvTransdataPestlight getOneByDeviceCode(String deviceCode) {
+
+ QueryWrapper queryWrapper = new QueryWrapper();
+ queryWrapper.eq("DEVICE_CODE",deviceCode).last("limit 1");
+ return getOne(queryWrapper);
+ }
+
+ @Transactional
+ @Override
+ public void saveBaowen(Map baowenMap){
+
+ String mn = "123";
+ String DataTime = "20230703160000";
+ String format = "yyyyMMddHHmmss";
+ //保存或者更新实时表
+ SurvTransdataPestlight pestlight = getOneByDeviceCode(mn);
+ if(pestlight == null){
+ pestlight = new SurvTransdataPestlight();
+ pestlight.setCreatedBy("wb");//创建人
+ pestlight.setCreateTime(new Date());//创建时间
+ }else{
+ pestlight.setUpdatedBy("wb");//创建人
+ pestlight.setUpdatedTime(new Date());//创建时间
+ }
+
+ pestlight.setDataShachongCount("");//杀虫量
+ pestlight.setDataPestSpecies("");//害虫种类
+
+ pestlight.setDataActionTime(DateUtil.parse(DataTime,format));//数据时间
+ pestlight.setDataGatherType("realTime");//数据类型-realTime=实时,dayTime=日数据,month=月数据,year=年数据
+ pestlight.setDeviceCode(mn);//设备编号
+ saveOrUpdate(pestlight);
+ //保存历史表
+ SurvHisdataPestlight hisdataPestlight = new SurvHisdataPestlight();
+ BeanUtil.copyProperties(pestlight,hisdataPestlight);
+ hisdataPestlight.setId(IdUtil.getSnowflakeNextIdStr());
+ hisdataPestlightService.save(hisdataPestlight);
+
+ }
+
+
+}
diff --git a/src/main/java/com/wangbin/service/Impl/SurvTransdataSoilServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvTransdataSoilServiceImpl.java
new file mode 100644
index 0000000..3f34e83
--- /dev/null
+++ b/src/main/java/com/wangbin/service/Impl/SurvTransdataSoilServiceImpl.java
@@ -0,0 +1,97 @@
+package com.wangbin.service.Impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wangbin.entity.SurvDeviceDeploy;
+import com.wangbin.entity.SurvHisdataSoil;
+import com.wangbin.entity.SurvTransdataSoil;
+import com.wangbin.mapper.SurvTransdataSoilMapper;
+import com.wangbin.service.ISurvAlertRecordService;
+import com.wangbin.service.ISurvDeviceDeployService;
+import com.wangbin.service.ISurvHisdataSoilService;
+import com.wangbin.service.ISurvTransdataSoilService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * 土壤污染监测数据 服务实现类
+ *
+ */
+@Service
+public class SurvTransdataSoilServiceImpl extends ServiceImpl implements ISurvTransdataSoilService {
+
+
+ @Autowired
+ private ISurvHisdataSoilService hisdataSoilService;
+ @Autowired
+ private ISurvAlertRecordService alertRecordService;
+ @Autowired
+ private ISurvDeviceDeployService deviceDeployService;
+
+
+ @Override
+ public SurvTransdataSoil getOneByDeviceCode(String deviceCode) {
+
+ QueryWrapper queryWrapper = new QueryWrapper();
+ queryWrapper.eq("DEVICE_CODE",deviceCode).last("limit 1");
+ return getOne(queryWrapper);
+ }
+
+ /**
+ *辛普惠 土壤
+ */
+ @Transactional
+ @Override
+ public void saveBaowen(Map baowenMap) {
+
+ String mn = baowenMap.get("mn");
+ String DataTime = baowenMap.get("DataTime");
+ //保存或者更新实时表
+ SurvTransdataSoil soil = getOneByDeviceCode(mn);
+ Date kDateTime = null;
+ if(soil == null){
+ soil = new SurvTransdataSoil();
+ soil.setCreatedBy("wb");//创建人
+ soil.setCreateTime(new Date());//创建时间
+ }else{
+ soil.setUpdatedBy("wb");//创建人
+ soil.setUpdatedTime(new Date());//创建时间
+ kDateTime = soil.getDataDateTime();
+ }
+
+ soil.setDataSoilTemp(baowenMap.get("e1"));//土壤温度
+ soil.setDataSoilWet(baowenMap.get("e2"));//土壤湿度
+ soil.setDataSoilDdl(baowenMap.get("e3"));//电导率1
+ soil.setDataSoilTemp2(baowenMap.get("e4"));//土壤温度
+ soil.setDataSoilWet2(baowenMap.get("e5"));//土壤湿度
+ soil.setDataSoilDdl2(baowenMap.get("e6"));//电导率2
+ soil.setDataSoilTemp3(baowenMap.get("e7"));//土壤温度
+ soil.setDataSoilWet3(baowenMap.get("e8"));//土壤湿度
+ soil.setDataSoilDdl3(baowenMap.get("e9"));//电导率3
+ soil.setDataDateTime(DateUtil.parse(DataTime));//数据时间
+ soil.setDataGatherType("realTime");//数据类型-realTime=实时,dayTime=日数据,month=月数据,year=年数据
+ soil.setDeviceCode(mn);//设备编号
+ saveOrUpdate(soil);
+ //保存历史表
+ if(kDateTime == null || !DataTime.equals(DateUtil.format(kDateTime,"yyyy-MM-dd HH:mm:ss"))){
+ SurvHisdataSoil hisdataSoil = new SurvHisdataSoil();
+ BeanUtil.copyProperties(soil,hisdataSoil);
+ hisdataSoil.setId(IdUtil.getSnowflakeNextIdStr());
+ hisdataSoilService.save(hisdataSoil);
+ }
+
+ //处理报警
+ SurvDeviceDeploy deploy = deviceDeployService.getOneByCode(mn);
+ if(deploy != null){
+ //暂时不保存报文了
+ alertRecordService.saveBaojing(baowenMap);
+ }
+ }
+}
diff --git a/src/main/java/com/wangbin/task/DataExamineTask.java b/src/main/java/com/wangbin/task/DataExamineTask.java
new file mode 100644
index 0000000..cdf596a
--- /dev/null
+++ b/src/main/java/com/wangbin/task/DataExamineTask.java
@@ -0,0 +1,78 @@
+package com.wangbin.task;
+
+import com.wangbin.constant.PollutionConstants;
+import com.wangbin.entity.SurvDeviceDeploy;
+import com.wangbin.entity.SurvTransdataLivestockwater;
+import com.wangbin.entity.SurvTransdataOrientwater;
+import com.wangbin.service.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import com.xxl.job.core.handler.annotation.XxlJob;
+/**
+ * 数据校验任务
+ */
+//@Component
+@Slf4j
+@Component
+public class DataExamineTask {
+ @Autowired
+ private ISurvDeviceDeployService deployService;
+ @Autowired
+ private ISurvHisdataOrientwaterService historyOrientwaterService;
+ @Autowired
+ private ISurvTransdataOrientwaterService orientWaterService;
+ @Autowired
+ private ISurvHisdataLivestockwaterService historyLiveWaterService;
+ @Autowired
+ private ISurvTransdataLivestockwaterService livestockWaterService;
+
+ @XxlJob("DataExamineGather")
+ public void TaskHandler() throws Exception{
+ try{
+ log.warn("====================数据校验任务开始====================");
+
+ List deviceType = new ArrayList();
+ deviceType.add(PollutionConstants.WATER_LIVE);
+ deviceType.add(PollutionConstants.WATER_ORIENT);
+ //获取所有设备
+ List deployList = deployService
+ .lambdaQuery()
+ .in(SurvDeviceDeploy::getDeployType,deviceType)
+ .eq(SurvDeviceDeploy::getRunStatus,0)
+ .list();
+ log.warn("=============查询到设备数量:{}==============",deployList.size());
+ if(!deployList.isEmpty()){
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ for (SurvDeviceDeploy deploy : deployList) {
+ log.warn("=================处理设备:{}====================",deploy.getDeployCode());
+ if(deploy.getDeployType().equals(PollutionConstants.WATER_LIVE)){
+ SurvTransdataLivestockwater survTransdataLivestockwater = historyLiveWaterService.genData(deploy.getDeployCode());
+ if(survTransdataLivestockwater!=null){
+ log.warn("----------设备号:{},生成成功,时间:{}-----------",deploy.getDeployCode(),sdf.format(survTransdataLivestockwater.getDataDateTime()));
+ }else{
+ log.warn("----------设备号:{},跳过------------",deploy.getDeployCode());
+ }
+ } else if (deploy.getDeployType().equals(PollutionConstants.WATER_ORIENT)) {
+ SurvTransdataOrientwater survTransdataOrientwater = historyOrientwaterService.genData(deploy.getDeployCode());
+ if(survTransdataOrientwater!=null){
+ log.warn("----------设备号:{},生成成功,时间:{}-----------",deploy.getDeployCode(),sdf.format(survTransdataOrientwater.getDataDateTime()));
+ }else{
+ log.warn("----------设备号:{},跳过------------",deploy.getDeployCode());
+ }
+ }
+ }
+ }
+
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ e.printStackTrace();
+ } finally {
+ log.warn("===================数据校验任务完成=====================");
+ }
+ }
+}
diff --git a/src/main/java/com/wangbin/task/MultithreadTask.java b/src/main/java/com/wangbin/task/MultithreadTask.java
new file mode 100644
index 0000000..6c806a0
--- /dev/null
+++ b/src/main/java/com/wangbin/task/MultithreadTask.java
@@ -0,0 +1,68 @@
+package com.wangbin.task;
+
+import cn.hutool.http.HttpUtil;
+import com.wangbin.service.ISurvTransdataAirService;
+import com.wangbin.service.ISurvTransdataSoilService;
+import com.wangbin.util.DataUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 多线程
+ */
+@Component
+@EnableScheduling // 1.开启定时任务
+@EnableAsync // 2.开启多线程
+public class MultithreadTask {
+
+ @Autowired
+ private ISurvTransdataSoilService survTransdataSoilService;
+ @Autowired
+ private ISurvTransdataAirService transdataAirService;
+
+
+ /**
+ * 辛普惠-土壤数据
+ */
+ @Async
+ @Scheduled(cron = "0 0/5 * * * ?")
+ public void task1(){
+// System.out.println("第一个定时任务开始 : " + LocalDateTime.now().toLocalTime() + "\r\n线程 : " + Thread.currentThread().getName());
+
+ String result1 = HttpUtil.get("http://47.105.215.208:8005/intfa/queryData/16095467");
+ Map map = DataUtil.xphStrToMap(result1);
+ survTransdataSoilService.saveBaowen(map);
+
+ String result2 = HttpUtil.get("http://47.105.215.208:8005/intfa/queryData/16095468");
+ Map map2 = DataUtil.xphStrToMap(result2);
+ survTransdataSoilService.saveBaowen(map2);
+ }
+
+
+ /**
+ * 辛普惠-大气数据
+ */
+ @Async
+ @Scheduled(cron = "0 0/5 * * * ?")
+ public void task2() {
+// System.out.println("第二个定时任务开始 : " + LocalDateTime.now().toLocalTime() + ",线程 : " + Thread.currentThread().getName());
+
+ String result = HttpUtil.get("http://47.105.215.208:8005/intfa/queryData/16095484");
+ Map map = DataUtil.xphStrToMap(result);
+ transdataAirService.saveBaowen(map);
+
+ String result2 = HttpUtil.get("http://47.105.215.208:8005/intfa/queryData/16095485");
+ Map map2 = DataUtil.xphStrToMap(result2);
+ transdataAirService.saveBaowen(map2);
+
+
+ }
+
+
+}
diff --git a/src/main/java/com/wangbin/thread/Clent2Thread.java b/src/main/java/com/wangbin/thread/Clent2Thread.java
new file mode 100644
index 0000000..d12c588
--- /dev/null
+++ b/src/main/java/com/wangbin/thread/Clent2Thread.java
@@ -0,0 +1,76 @@
+package com.wangbin.thread;
+
+import com.wangbin.entity.SurvDeviceDeploy;
+import com.wangbin.service.ISurvDeviceDeployService;
+import com.wangbin.util.SpringContextUtil;
+import com.wangbin.util.TUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.OutputStream;
+import java.net.Socket;
+
+/**
+ * 单独做控制
+ **/
+@Slf4j
+public class Clent2Thread implements Runnable {
+
+ private Socket socket;
+
+ public Clent2Thread(Socket s) {
+ this.socket = s;
+ }
+
+ @Override
+ public void run() {
+
+ try {
+ String hostAddress = socket.getInetAddress().getHostAddress();//ip:117.132.191.89
+ String port = String.valueOf(socket.getPort());//port:8515
+ log.error("ip2222:"+hostAddress+",port:"+port);
+ ISurvDeviceDeployService deviceDeployService = SpringContextUtil.getBean(ISurvDeviceDeployService.class);
+
+ while(true){
+ SurvDeviceDeploy deviceDeploy = deviceDeployService.getOneByIpPort(hostAddress,port);
+ log.error("deviceDeploy2222:"+deviceDeploy);
+ if(deviceDeploy != null && StringUtils.isNotBlank(deviceDeploy.getSendInfo())){
+ OutputStream outputStream = socket.getOutputStream();
+ byte[] bytes1 = TUtil.hexToByteArray(deviceDeploy.getSendInfo());
+ outputStream.write(bytes1);
+ log.error("发送了消息:"+deviceDeploy.getSendInfo());
+ deviceDeploy.setSendInfo("");
+ deviceDeployService.updateById(deviceDeploy);
+ }
+ Thread.sleep(5*1000);
+ }
+
+ } catch (Exception e) {
+ log.error("错误",e);
+ } finally {
+
+
+
+ if(socket != null){
+ try {
+ socket.close();
+ } catch (Exception e) {
+ System.out.println(e.toString());
+ }
+ }
+// log.error("关闭资源");
+ }
+ }
+
+
+ public static void main(String[] args) {
+
+
+ }
+
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/wangbin/thread/ClentThread.java b/src/main/java/com/wangbin/thread/ClentThread.java
new file mode 100644
index 0000000..d14fe50
--- /dev/null
+++ b/src/main/java/com/wangbin/thread/ClentThread.java
@@ -0,0 +1,126 @@
+package com.wangbin.thread;
+
+import com.wangbin.constant.CommonConstant;
+import com.wangbin.entity.SurvDeviceDeploy;
+import com.wangbin.service.ISurvDeviceDeployService;
+import com.wangbin.service.ISurvTransdataLivestockwaterService;
+import com.wangbin.service.ISurvTransdataOrientwaterService;
+import com.wangbin.util.DataUtil;
+import com.wangbin.util.SpringContextUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.Socket;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ **/
+@Slf4j
+public class ClentThread implements Runnable {
+
+ private Socket socket;
+
+ public ClentThread(Socket s) {
+ this.socket = s;
+ }
+
+ @Override
+ public void run() {
+
+ ISurvTransdataOrientwaterService transdataOrientwaterService = SpringContextUtil.getBean(ISurvTransdataOrientwaterService.class);
+ ISurvTransdataLivestockwaterService transdataLivestockwaterService = SpringContextUtil.getBean(ISurvTransdataLivestockwaterService.class);
+ ISurvDeviceDeployService deviceDeployService = SpringContextUtil.getBean(ISurvDeviceDeployService.class);
+ InputStream in = null;
+ ByteArrayOutputStream baos = null;
+ String hostAddress = socket.getInetAddress().getHostAddress();//ip:117.132.191.89
+ String port = String.valueOf(socket.getPort());//port:8515
+
+ try {
+ //接收客户端消息
+ in = socket.getInputStream();
+ //管道流
+ baos = new ByteArrayOutputStream();
+ byte[] buffer = new byte[2048];
+ int len = -1;
+ while ((len = in.read(buffer)) != -1){//这块代码先清空,重新读取
+ baos.reset();
+ baos.write(buffer,0,len);
+ byte[] in2b = baos.toByteArray();
+ String s = DataUtil.bytesToHexString(in2b);
+ s = s.replaceAll(" ","");
+ log.error("报文:"+s);
+
+ String substring = s.substring(2, 4);
+ List list = new ArrayList<>();
+ list.add("01");
+ list.add("02");
+ list.add("03");
+ list.add("04");
+
+ if(list.contains(substring)){
+
+ if("01".equals(substring) || "02".equals(substring)){
+ transdataOrientwaterService.saveBaowen(s);
+ }else if("03".equals(substring) || "04".equals(substring)){
+ transdataLivestockwaterService.saveBaowen(s);
+ }
+ String code = CommonConstant.XZP_WATER+s.substring(2,4);
+ log.error("code111:"+code);
+ SurvDeviceDeploy deviceDeploy = deviceDeployService.getOneByCode(code);
+ if(deviceDeploy != null && (!hostAddress.equals(deviceDeploy.getIpAddr()) || !port.equals(deviceDeploy.getPort()))){
+ deviceDeploy.setIpAddr(hostAddress);
+ deviceDeploy.setPort(port);
+ deviceDeployService.updateById(deviceDeploy);
+ log.error("更新了111:"+deviceDeploy.getId()+","+deviceDeploy.getIpAddr()+",prot:"+deviceDeploy.getPort());
+ }
+ }
+
+ }
+
+ } catch (Exception e) {
+ log.error("错误",e);
+ } finally {
+
+
+ if(baos != null){
+ try {
+ baos.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ if(in != null){
+ try {
+ in.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ if(socket != null){
+ try {
+ socket.close();
+ } catch (Exception e) {
+ System.out.println(e.toString());
+ }
+ }
+ log.error("关闭资源");
+ }
+ }
+
+
+ public static void main(String[] args) {
+
+
+ }
+
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/wangbin/thread/NetServer.java b/src/main/java/com/wangbin/thread/NetServer.java
new file mode 100644
index 0000000..14aa920
--- /dev/null
+++ b/src/main/java/com/wangbin/thread/NetServer.java
@@ -0,0 +1,76 @@
+package com.wangbin.thread;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.concurrent.*;
+
+/**
+ * 支持多线程
+ **/
+@Slf4j
+public class NetServer implements Runnable{
+
+
+ /**
+ * 线程池
+ */
+ private static ExecutorService pool = new ThreadPoolExecutor(300,
+ 1500, 60, TimeUnit.SECONDS,
+ new ArrayBlockingQueue<>(2),
+ Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy());
+
+ private Integer port;
+
+ public NetServer(Integer port) {
+ this.port = port;
+ }
+
+ public void go(Integer port){
+ log.info("启动socket服务==端口号:"+ port);
+ ServerSocket ss = null;
+ try {
+ ss = new ServerSocket(port);
+ // 循环接收客户端的连接
+ while(true){
+ /**
+ * ServetSocket的accept()方法,没有参数,返回一个Socket,
+ * 如果接收到客户端的一个Socket,则返回,否则一直处于等待状态,线程也被阻塞。
+ * 客户端如果没有消息,服务端会进入阻塞等待。
+ * accept方法是一个阻塞方法,在服务器端与客户端之间建立联系之前会一直等待阻塞。
+ */
+ Socket s = ss.accept();//一直等待来自客户端的请求.
+ log.error("连接了客户端:"+s);
+// Thread t = new Thread(new ClentThread(s));
+// t.start();
+ Runnable target = new ClentThread(s);
+ pool.execute(target);
+ Thread.sleep(3*1000);
+ Runnable target2 = new Clent2Thread(s);
+ pool.execute(target2);
+
+ }
+
+ } catch (IOException | InterruptedException e) {
+ e.printStackTrace();
+ } finally {
+ //关闭ServerSocket
+ if(ss != null){
+ try {
+ ss.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ }
+
+ @Override
+ public void run() {
+ go(port);
+ }
+}
diff --git a/src/main/java/com/wangbin/util/BigDecimalRandomAdjuster.java b/src/main/java/com/wangbin/util/BigDecimalRandomAdjuster.java
new file mode 100644
index 0000000..f5ffbe0
--- /dev/null
+++ b/src/main/java/com/wangbin/util/BigDecimalRandomAdjuster.java
@@ -0,0 +1,128 @@
+package com.wangbin.util;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Random;
+
+/**
+ * BigDecimal 随机增减工具类
+ */
+public class BigDecimalRandomAdjuster {
+
+ private static final Random random = new Random();
+
+ /**
+ * 在给定范围内随机增减 BigDecimal 值
+ * @param original 原始值
+ * @param range 增减范围 (例如 0.1 表示 ±10%)
+ * @param scale 结果的小数位数
+ * @return 随机增减后的值
+ */
+ public static BigDecimal randomAdjust(BigDecimal original, BigDecimal range, int scale) {
+ if (original == null || range == null) {
+ throw new IllegalArgumentException("Original value and range must not be null");
+ }
+ if (range.compareTo(BigDecimal.ZERO) < 0) {
+ throw new IllegalArgumentException("Range must be positive");
+ }
+
+ // 生成 -1.0 到 1.0 之间的随机比例因子
+ BigDecimal randomFactor = new BigDecimal(random.nextDouble() * 2 - 1);
+
+ // 计算增减量 = 原始值 × 范围 × 随机因子
+ BigDecimal adjustment = original.multiply(range).multiply(randomFactor);
+
+ // 应用增减
+ BigDecimal result = original.add(adjustment);
+
+ // 设置小数位数和舍入模式
+ return result.setScale(scale, RoundingMode.HALF_UP);
+ }
+
+ /**
+ * 在给定百分比范围内随机增减 BigDecimal 值
+ * @param original 原始值
+ * @param percentRange 百分比范围 (例如 10 表示 ±10%)
+ * @param scale 结果的小数位数
+ * @return 随机增减后的值
+ */
+ public static BigDecimal randomAdjustByPercent(BigDecimal original, int percentRange, int scale) {
+ if (percentRange < 0 || percentRange > 100) {
+ throw new IllegalArgumentException("Percent range must be between 0 and 100");
+ }
+ BigDecimal range = new BigDecimal(percentRange).divide(new BigDecimal(100), 10, RoundingMode.HALF_UP);
+ return randomAdjust(original, range, scale);
+ }
+
+ /**
+ * 在固定值范围内随机增减 BigDecimal 值
+ * @param original 原始值
+ * @param fixedRange 固定增减范围 (例如 5.0 表示 ±5.0)
+ * @param scale 结果的小数位数
+ * @return 随机增减后的值
+ */
+ public static String randomAdjustByFixedRange(BigDecimal original, BigDecimal fixedRange, int scale) {
+ if (fixedRange.compareTo(BigDecimal.ZERO) < 0) {
+ throw new IllegalArgumentException("Fixed range must be positive");
+ }
+
+ // 生成 -1.0 到 1.0 之间的随机比例因子
+ BigDecimal randomFactor = new BigDecimal(random.nextDouble() * 2 - 1);
+
+ // 计算增减量 = 固定范围 × 随机因子
+ BigDecimal adjustment = fixedRange.multiply(randomFactor);
+
+ // 应用增减
+ BigDecimal result = original.add(adjustment);
+
+ // 设置小数位数和舍入模式
+ return result.setScale(scale, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString();
+ }
+
+ /**
+ * 在给定范围内随机增减 BigDecimal 值,确保结果不小于最小值
+ * @param original 原始值
+ * @param range 增减范围
+ * @param scale 结果的小数位数
+ * @param minValue 最小值
+ * @return 随机增减后的值,不低于最小值
+ */
+ public static BigDecimal randomAdjustWithMin(BigDecimal original, BigDecimal range, int scale, BigDecimal minValue) {
+ BigDecimal result = randomAdjust(original, range, scale);
+ return result.compareTo(minValue) < 0 ? minValue : result;
+ }
+
+ /**
+ * 在给定范围内随机增减 BigDecimal 值,确保结果不大于最大值
+ * @param original 原始值
+ * @param range 增减范围
+ * @param scale 结果的小数位数
+ * @param maxValue 最大值
+ * @return 随机增减后的值,不超过最大值
+ */
+ public static BigDecimal randomAdjustWithMax(BigDecimal original, BigDecimal range, int scale, BigDecimal maxValue) {
+ BigDecimal result = randomAdjust(original, range, scale);
+ return result.compareTo(maxValue) > 0 ? maxValue : result;
+ }
+
+ /**
+ * 在给定范围内随机增减 BigDecimal 值,确保结果在最小值和最大值之间
+ * @param original 原始值
+ * @param range 增减范围
+ * @param scale 结果的小数位数
+ * @param minValue 最小值
+ * @param maxValue 最大值
+ * @return 随机增减后的值,在最小值和最大值之间
+ */
+ public static BigDecimal randomAdjustWithinRange(BigDecimal original, BigDecimal range, int scale,
+ BigDecimal minValue, BigDecimal maxValue) {
+ BigDecimal result = randomAdjust(original, range, scale);
+ if (result.compareTo(minValue) < 0) {
+ return minValue;
+ }
+ if (result.compareTo(maxValue) > 0) {
+ return maxValue;
+ }
+ return result;
+ }
+}
diff --git a/src/main/java/com/wangbin/util/DataUtil.java b/src/main/java/com/wangbin/util/DataUtil.java
new file mode 100644
index 0000000..8463419
--- /dev/null
+++ b/src/main/java/com/wangbin/util/DataUtil.java
@@ -0,0 +1,242 @@
+package com.wangbin.util;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.wangbin.constant.CommonConstant;
+import com.wangbin.entity.SurvTransdataLivestockwater;
+import com.wangbin.entity.SurvTransdataOrientwater;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 解析工具类
+ **/
+@Slf4j
+public class DataUtil{
+
+
+ /**
+ * 辛普惠 土壤和大气
+ */
+ public static Map xphStrToMap(String baowen){
+ Map map = new HashMap();
+ JSONObject jsonObject = JSON.parseObject(baowen);
+ String statusCode = jsonObject.getString("statusCode");
+ if(statusCode.equals("200")){
+ map.put("mn",jsonObject.getString("deviceId"));
+ JSONArray arr = jsonObject.getJSONArray("entity");
+ for(int i =0;i strToMap(String baowen){
+ Map map = new HashMap();
+ return map;
+ }
+
+
+ /**
+ * 十六进制单精度浮点数,转BigDecimal,保留2为小数,截掉多余小数位
+ */
+ public static BigDecimal hexFloat2BigDecimal(String hex) {
+
+ float value = Float.intBitsToFloat((int)Long.parseLong(hex, 16));
+ BigDecimal bd = new BigDecimal(Float.toString(value));
+ BigDecimal bigDecimal = bd.setScale(4, BigDecimal.ROUND_DOWN);
+ return bigDecimal;
+ }
+
+
+ /**
+ * 水质检测 解析报文
+ * AA012AF1E3C7803FB37B723C6F12033A00000040F9A0E73ECA54C13CF521703E00000000000000000055
+ *
+ */
+ public static SurvTransdataOrientwater strToOrientwater(String str) {
+
+ SurvTransdataOrientwater orientwater = new SurvTransdataOrientwater();
+ orientwater.setDataDateTime(new Date());
+ orientwater.setDataGatherType("realTime");
+ orientwater.setDeviceCode(CommonConstant.XZP_WATER +str.substring(2,4));//
+
+ if(str.length() >= 80){
+ orientwater.setDataWaterTp(getVal(str.substring(8,16)));//
+ orientwater.setDataWaterTpSy(getVal(str.substring(16,24)));//
+ orientwater.setDataWaterTpLd(getVal(str.substring(24,32)));//
+ orientwater.setDataWaterTn(getVal(str.substring(32,40)));//
+ orientwater.setDataWaterTnSy(getVal(str.substring(40,48)));//
+ orientwater.setDataWaterTnLd(getVal(str.substring(48,56)));//
+ orientwater.setDataWaterNo(getVal(str.substring(56,64)));//
+
+ orientwater.setFluidLevel(DataUtil.getYewei(str.substring(64,68)));//液位
+ orientwater.setFirstValveStatus(str.substring(68,70));//1#球阀状态
+ orientwater.setSecondValveStatus(str.substring(70,72));//2#球阀状态
+ orientwater.setCrashStopStatus(str.substring(72,74));//急停状态
+ orientwater.setWaterPumpStatus(str.substring(74,76));//水泵状态
+ orientwater.setMainSideStatus(str.substring(76,78));//主副泵状态
+ }
+ return orientwater;
+ }
+
+
+ /**
+ * 水质检测 解析报文
+ * AA 03 3D F1 23 DB 22 41 6F 12 03 3A 17 B7 D1 39 95 94 46 42 71 AC AB 3F 17 B7 51 39 01 CD 47 42 17 B7 51 39 17 B7 51 39 00 C0 FA 43 CD CC CC 3E CD CC 4C 3E 17 B7 00 01 00 00 00 00 55
+ *
+ */
+ public static SurvTransdataLivestockwater strToLivewater(String str) {
+
+ SurvTransdataLivestockwater livestockwater = new SurvTransdataLivestockwater();
+ livestockwater.setDataDateTime(new Date());
+ livestockwater.setDataGatherType("realTime");
+ livestockwater.setDeviceCode(CommonConstant.XZP_WATER +str.substring(2,4));//
+
+ if(str.length() >= 120){
+ livestockwater.setDataWaterTp(getVal(str.substring(8,16)));//
+ livestockwater.setDataWaterTpSy(getVal(str.substring(16,24)));//
+ livestockwater.setDataWaterTpLd(getVal(str.substring(24,32)));//
+ livestockwater.setDataWaterTn(getVal(str.substring(32,40)));//
+ livestockwater.setDataWaterTnSy(getVal(str.substring(40,48)));//
+ livestockwater.setDataWaterTnLd(getVal(str.substring(48,56)));//
+ livestockwater.setDataWaterNh(getVal(str.substring(56,64)));//
+ livestockwater.setDataWaterNhSy(getVal(str.substring(64,72)));//
+ livestockwater.setDataWaterNhLd(getVal(str.substring(72,80)));//
+ livestockwater.setDataWaterCod(getVal(str.substring(80,88)));//
+ livestockwater.setDataWaterCodSy(getVal(str.substring(88,96)));//
+ livestockwater.setDataWaterCodLd(getVal(str.substring(96,104)));//
+
+ livestockwater.setFluidLevel(DataUtil.getYewei(str.substring(104,108)));//液位
+ livestockwater.setFirstValveStatus(str.substring(108,110));//1#球阀状态
+ livestockwater.setSecondValveStatus(str.substring(110,112));//2#球阀状态
+ livestockwater.setWaterPumpStatus(str.substring(112,114));//水泵状态
+ livestockwater.setMainSideStatus(str.substring(114,116));//主副泵状态
+ livestockwater.setCrashStopStatus(str.substring(116,118));//急停状态
+ }
+ return livestockwater;
+ }
+
+
+
+ /**
+ *
+ *
+ */
+ public static String getVal(String str){
+
+ //高低位反转
+ StringBuilder sb = new StringBuilder();
+ sb.append(str.substring(6,8))
+ .append(str.substring(4,6))
+ .append(str.substring(2,4))
+ .append(str.substring(0,2));
+
+ try {
+ BigDecimal bigDecimal = hexFloat2BigDecimal(sb.toString());
+ return bigDecimal.toString();
+ }catch (Exception e){
+ System.out.println("错误的报文是:"+sb.toString());
+ e.printStackTrace();
+ return "";
+ }
+ }
+
+
+
+ /**
+ * 获取液位
+ * str 0c00
+ */
+ public static String getYewei(String str){
+
+ //高低位反转
+ StringBuilder sb = new StringBuilder();
+ sb.append(str.substring(2,4)).append(str.substring(0,2));
+ try {
+ int i = Integer.parseInt(sb.toString(), 16);
+ BigDecimal bigDecimal = new BigDecimal(i);
+ return bigDecimal.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP).toString();
+ }catch (Exception e){
+ System.out.println("错误的报文是:"+sb.toString());
+ e.printStackTrace();
+ return "";
+ }
+ }
+
+
+
+ //接收2:将byte【】转为16进制
+ public static String bytesToHexString(byte[] src) {
+ StringBuffer sb = new StringBuffer("");
+ if (src == null || src.length <= 0) {
+ return null;
+ }
+ for (int i = 0; i < src.length; i++) {
+ int v = src[i] & 0xFF;
+ String hv = Integer.toHexString(v).toUpperCase();
+ if (hv.length() < 2) {
+ sb.append(0);
+ }
+ sb.append(hv);
+ if (i != src.length - 1) {
+ sb.append(" ");
+ }
+ }
+ return sb.toString();
+ }
+
+
+
+
+
+ /**
+ * 2个数字比较
+ * 0等于
+ * -1 1<2
+ * 1 3>2
+ */
+ public static int bijiao(String str1,String str2){
+
+ try {
+ if(StringUtils.isNotBlank(str1) && StringUtils.isNotBlank(str2)){
+ BigDecimal bd1 = new BigDecimal(str1);
+ BigDecimal bd2 = new BigDecimal(str2);
+ int i = bd1.compareTo(bd2);
+ return i;
+ }
+
+ }catch (Exception e){
+ log.info("比较时发生错误",e);
+ }
+ return -1;
+ }
+
+
+ public static void main(String[] args) {
+
+ String bb = " AA 01 2A F1 E3 C7 80 3F B3 7B 72 3C 6F 12 03 3A 00 00 00 40 F9 A0 E7 3E CA 54 C1 3C F5 21 70 3E 00 00 00 00 00 00 00 00 00 55 ";
+ String bbb = bb.replaceAll(" ","");
+ System.out.println(bbb);
+ System.out.println(bbb.length());
+
+
+ }
+
+
+
+
+
+}
diff --git a/src/main/java/com/wangbin/util/DateUtils.java b/src/main/java/com/wangbin/util/DateUtils.java
new file mode 100644
index 0000000..eea3743
--- /dev/null
+++ b/src/main/java/com/wangbin/util/DateUtils.java
@@ -0,0 +1,764 @@
+package com.wangbin.util;
+
+import org.springframework.util.StringUtils;
+
+import java.beans.PropertyEditorSupport;
+import java.sql.Timestamp;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 类描述:时间操作定义类
+ *
+ * @Author: 张代浩
+ * @Date:2012-12-8 12:15:03
+ * @Version 1.0
+ */
+public class DateUtils extends PropertyEditorSupport {
+
+ public static ThreadLocal date_sdf = new ThreadLocal() {
+ @Override
+ protected SimpleDateFormat initialValue() {
+ return new SimpleDateFormat("yyyy-MM-dd");
+ }
+ };
+ public static ThreadLocal yyyyMMdd = new ThreadLocal() {
+ @Override
+ protected SimpleDateFormat initialValue() {
+ return new SimpleDateFormat("yyyyMMdd");
+ }
+ };
+ public static ThreadLocal date_sdf_wz = new ThreadLocal() {
+ @Override
+ protected SimpleDateFormat initialValue() {
+ return new SimpleDateFormat("yyyy年MM月dd日");
+ }
+ };
+ public static ThreadLocal time_sdf = new ThreadLocal() {
+ @Override
+ protected SimpleDateFormat initialValue() {
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ }
+ };
+ public static ThreadLocal yyyymmddhhmmss = new ThreadLocal() {
+ @Override
+ protected SimpleDateFormat initialValue() {
+ return new SimpleDateFormat("yyyyMMddHHmmss");
+ }
+ };
+ public static ThreadLocal short_time_sdf = new ThreadLocal() {
+ @Override
+ protected SimpleDateFormat initialValue() {
+ return new SimpleDateFormat("HH:mm");
+ }
+ };
+ public static ThreadLocal datetimeFormat = new ThreadLocal() {
+ @Override
+ protected SimpleDateFormat initialValue() {
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ }
+ };
+
+ /**
+ * 以毫秒表示的时间
+ */
+ private static final long DAY_IN_MILLIS = 24 * 3600 * 1000;
+ private static final long HOUR_IN_MILLIS = 3600 * 1000;
+ private static final long MINUTE_IN_MILLIS = 60 * 1000;
+ private static final long SECOND_IN_MILLIS = 1000;
+
+ /**
+ * 指定模式的时间格式
+ * @param pattern
+ * @return
+ */
+ private static SimpleDateFormat getSdFormat(String pattern) {
+ return new SimpleDateFormat(pattern);
+ }
+
+ /**
+ * 当前日历,这里用中国时间表示
+ *
+ * @return 以当地时区表示的系统当前日历
+ */
+ public static Calendar getCalendar() {
+ return Calendar.getInstance();
+ }
+
+ /**
+ * 指定毫秒数表示的日历
+ *
+ * @param millis 毫秒数
+ * @return 指定毫秒数表示的日历
+ */
+ public static Calendar getCalendar(long millis) {
+ Calendar cal = Calendar.getInstance();
+ // --------------------cal.setTimeInMillis(millis);
+ cal.setTime(new Date(millis));
+ return cal;
+ }
+
+ // ////////////////////////////////////////////////////////////////////////////
+ // getDate
+ // 各种方式获取的Date
+ // ////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * 当前日期
+ *
+ * @return 系统当前时间
+ */
+ public static Date getDate() {
+ return new Date();
+ }
+
+ /**
+ * 指定毫秒数表示的日期
+ *
+ * @param millis 毫秒数
+ * @return 指定毫秒数表示的日期
+ */
+ public static Date getDate(long millis) {
+ return new Date(millis);
+ }
+
+ /**
+ * 时间戳转换为字符串
+ *
+ * @param time
+ * @return
+ */
+ public static String timestamptoStr(Timestamp time) {
+ Date date = null;
+ if (null != time) {
+ date = new Date(time.getTime());
+ }
+ return date2Str(date_sdf.get());
+ }
+
+ /**
+ * 字符串转换时间戳
+ *
+ * @param str
+ * @return
+ */
+ public static Timestamp str2Timestamp(String str) {
+ Date date = str2Date(str, date_sdf.get());
+ return new Timestamp(date.getTime());
+ }
+
+ /**
+ * 字符串转换成日期
+ *
+ * @param str
+ * @param sdf
+ * @return
+ */
+ public static Date str2Date(String str, SimpleDateFormat sdf) {
+ if (null == str || "".equals(str)) {
+ return null;
+ }
+ Date date = null;
+ try {
+ date = sdf.parse(str);
+ return date;
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 日期转换为字符串
+ *
+ * @param dateSdf 日期格式
+ * @return 字符串
+ */
+ public static String date2Str(SimpleDateFormat dateSdf) {
+ synchronized (dateSdf) {
+ Date date = getDate();
+ if (null == date) {
+ return null;
+ }
+ return dateSdf.format(date);
+ }
+ }
+
+ /**
+ * 格式化时间
+ *
+ * @param date
+ * @param format
+ * @return
+ */
+ public static String dateformat(String date, String format) {
+ SimpleDateFormat sformat = new SimpleDateFormat(format);
+ Date nowDate = null;
+ try {
+ nowDate = sformat.parse(date);
+ } catch (ParseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return sformat.format(nowDate);
+ }
+
+ /**
+ * 日期转换为字符串
+ *
+ * @param date 日期
+ * @param dateSdf 日期格式
+ * @return 字符串
+ */
+ public static String date2Str(Date date, SimpleDateFormat dateSdf) {
+ synchronized (dateSdf) {
+ if (null == date) {
+ return null;
+ }
+ return dateSdf.format(date);
+ }
+ }
+
+ /**
+ * 日期转换为字符串
+ *
+ * @param format 日期格式
+ * @return 字符串
+ */
+ public static String getDate(String format) {
+ Date date = new Date();
+ if (null == date) {
+ return null;
+ }
+ SimpleDateFormat sdf = new SimpleDateFormat(format);
+ return sdf.format(date);
+ }
+
+ /**
+ * 指定毫秒数的时间戳
+ *
+ * @param millis 毫秒数
+ * @return 指定毫秒数的时间戳
+ */
+ public static Timestamp getTimestamp(long millis) {
+ return new Timestamp(millis);
+ }
+
+ /**
+ * 以字符形式表示的时间戳
+ *
+ * @param time 毫秒数
+ * @return 以字符形式表示的时间戳
+ */
+ public static Timestamp getTimestamp(String time) {
+ return new Timestamp(Long.parseLong(time));
+ }
+
+ /**
+ * 系统当前的时间戳
+ *
+ * @return 系统当前的时间戳
+ */
+ public static Timestamp getTimestamp() {
+ return new Timestamp(System.currentTimeMillis());
+ }
+
+ /**
+ * 当前时间,格式 yyyy-MM-dd HH:mm:ss
+ *
+ * @return 当前时间的标准形式字符串
+ */
+ public static String now() {
+ return datetimeFormat.get().format(getCalendar().getTime());
+ }
+
+ /**
+ * 指定日期的时间戳
+ *
+ * @param date 指定日期
+ * @return 指定日期的时间戳
+ */
+ public static Timestamp getTimestamp(Date date) {
+ return new Timestamp(date.getTime());
+ }
+
+ /**
+ * 指定日历的时间戳
+ *
+ * @param cal 指定日历
+ * @return 指定日历的时间戳
+ */
+ public static Timestamp getCalendarTimestamp(Calendar cal) {
+ // ---------------------return new Timestamp(cal.getTimeInMillis());
+ return new Timestamp(cal.getTime().getTime());
+ }
+
+ public static Timestamp gettimestamp() {
+ Date dt = new Date();
+ DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String nowTime = df.format(dt);
+ Timestamp buydate = Timestamp.valueOf(nowTime);
+ return buydate;
+ }
+
+ // ////////////////////////////////////////////////////////////////////////////
+ // getMillis
+ // 各种方式获取的Millis
+ // ////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * 系统时间的毫秒数
+ *
+ * @return 系统时间的毫秒数
+ */
+ public static long getMillis() {
+ return System.currentTimeMillis();
+ }
+
+ /**
+ * 指定日历的毫秒数
+ *
+ * @param cal 指定日历
+ * @return 指定日历的毫秒数
+ */
+ public static long getMillis(Calendar cal) {
+ // --------------------return cal.getTimeInMillis();
+ return cal.getTime().getTime();
+ }
+
+ /**
+ * 指定日期的毫秒数
+ *
+ * @param date 指定日期
+ * @return 指定日期的毫秒数
+ */
+ public static long getMillis(Date date) {
+ return date.getTime();
+ }
+
+ /**
+ * 指定时间戳的毫秒数
+ *
+ * @param ts 指定时间戳
+ * @return 指定时间戳的毫秒数
+ */
+ public static long getMillis(Timestamp ts) {
+ return ts.getTime();
+ }
+
+ // ////////////////////////////////////////////////////////////////////////////
+ // formatDate
+ // 将日期按照一定的格式转化为字符串
+ // ////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * 默认方式表示的系统当前日期,具体格式:年-月-日
+ *
+ * @return 默认日期按“年-月-日“格式显示
+ */
+ public static String formatDate() {
+ return date_sdf.get().format(getCalendar().getTime());
+ }
+
+ /**
+ * 默认方式表示的系统当前日期,具体格式:yyyy-MM-dd HH:mm:ss
+ *
+ * @return 默认日期按“yyyy-MM-dd HH:mm:ss“格式显示
+ */
+ public static String formatDateTime() {
+ return datetimeFormat.get().format(getCalendar().getTime());
+ }
+
+ /**
+ * 获取时间字符串
+ */
+ public static String getDataString(SimpleDateFormat formatstr) {
+ synchronized (formatstr) {
+ return formatstr.format(getCalendar().getTime());
+ }
+ }
+
+ /**
+ * 指定日期的默认显示,具体格式:年-月-日
+ *
+ * @param cal 指定的日期
+ * @return 指定日期按“年-月-日“格式显示
+ */
+ public static String formatDate(Calendar cal) {
+ return date_sdf.get().format(cal.getTime());
+ }
+
+ /**
+ * 指定日期的默认显示,具体格式:年-月-日
+ *
+ * @param date 指定的日期
+ * @return 指定日期按“年-月-日“格式显示
+ */
+ public static String formatDate(Date date) {
+ return date_sdf.get().format(date);
+ }
+
+ /**
+ * 指定毫秒数表示日期的默认显示,具体格式:年-月-日
+ *
+ * @param millis 指定的毫秒数
+ * @return 指定毫秒数表示日期按“年-月-日“格式显示
+ */
+ public static String formatDate(long millis) {
+ return date_sdf.get().format(new Date(millis));
+ }
+
+ /**
+ * 默认日期按指定格式显示
+ *
+ * @param pattern 指定的格式
+ * @return 默认日期按指定格式显示
+ */
+ public static String formatDate(String pattern) {
+ return getSdFormat(pattern).format(getCalendar().getTime());
+ }
+
+ /**
+ * 指定日期按指定格式显示
+ *
+ * @param cal 指定的日期
+ * @param pattern 指定的格式
+ * @return 指定日期按指定格式显示
+ */
+ public static String formatDate(Calendar cal, String pattern) {
+ return getSdFormat(pattern).format(cal.getTime());
+ }
+
+ /**
+ * 指定日期按指定格式显示
+ *
+ * @param date 指定的日期
+ * @param pattern 指定的格式
+ * @return 指定日期按指定格式显示
+ */
+ public static String formatDate(Date date, String pattern) {
+ return getSdFormat(pattern).format(date);
+ }
+
+ // ////////////////////////////////////////////////////////////////////////////
+ // formatTime
+ // 将日期按照一定的格式转化为字符串
+ // ////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * 默认方式表示的系统当前日期,具体格式:年-月-日 时:分
+ *
+ * @return 默认日期按“年-月-日 时:分“格式显示
+ */
+ public static String formatTime() {
+ return time_sdf.get().format(getCalendar().getTime());
+ }
+
+ /**
+ * 指定毫秒数表示日期的默认显示,具体格式:年-月-日 时:分
+ *
+ * @param millis 指定的毫秒数
+ * @return 指定毫秒数表示日期按“年-月-日 时:分“格式显示
+ */
+ public static String formatTime(long millis) {
+ return time_sdf.get().format(new Date(millis));
+ }
+
+ /**
+ * 指定日期的默认显示,具体格式:年-月-日 时:分
+ *
+ * @param cal 指定的日期
+ * @return 指定日期按“年-月-日 时:分“格式显示
+ */
+ public static String formatTime(Calendar cal) {
+ return time_sdf.get().format(cal.getTime());
+ }
+
+ /**
+ * 指定日期的默认显示,具体格式:年-月-日 时:分
+ *
+ * @param date 指定的日期
+ * @return 指定日期按“年-月-日 时:分“格式显示
+ */
+ public static String formatTime(Date date) {
+ return time_sdf.get().format(date);
+ }
+
+ // ////////////////////////////////////////////////////////////////////////////
+ // formatShortTime
+ // 将日期按照一定的格式转化为字符串
+ // ////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * 默认方式表示的系统当前日期,具体格式:时:分
+ *
+ * @return 默认日期按“时:分“格式显示
+ */
+ public static String formatShortTime() {
+ return short_time_sdf.get().format(getCalendar().getTime());
+ }
+
+ /**
+ * 指定毫秒数表示日期的默认显示,具体格式:时:分
+ *
+ * @param millis 指定的毫秒数
+ * @return 指定毫秒数表示日期按“时:分“格式显示
+ */
+ public static String formatShortTime(long millis) {
+ return short_time_sdf.get().format(new Date(millis));
+ }
+
+ /**
+ * 指定日期的默认显示,具体格式:时:分
+ *
+ * @param cal 指定的日期
+ * @return 指定日期按“时:分“格式显示
+ */
+ public static String formatShortTime(Calendar cal) {
+ return short_time_sdf.get().format(cal.getTime());
+ }
+
+ /**
+ * 指定日期的默认显示,具体格式:时:分
+ *
+ * @param date 指定的日期
+ * @return 指定日期按“时:分“格式显示
+ */
+ public static String formatShortTime(Date date) {
+ return short_time_sdf.get().format(date);
+ }
+
+ // ////////////////////////////////////////////////////////////////////////////
+ // parseDate
+ // parseCalendar
+ // parseTimestamp
+ // 将字符串按照一定的格式转化为日期或时间
+ // ////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间
+ *
+ * @param src 将要转换的原始字符窜
+ * @param pattern 转换的匹配格式
+ * @return 如果转换成功则返回转换后的日期
+ * @throws ParseException
+ */
+ public static Date parseDate(String src, String pattern) throws ParseException {
+ return getSdFormat(pattern).parse(src);
+
+ }
+
+ /**
+ * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间
+ *
+ * @param src 将要转换的原始字符窜
+ * @param pattern 转换的匹配格式
+ * @return 如果转换成功则返回转换后的日期
+ * @throws ParseException
+ */
+ public static Calendar parseCalendar(String src, String pattern) throws ParseException {
+
+ Date date = parseDate(src, pattern);
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(date);
+ return cal;
+ }
+
+ public static String formatAddDate(String src, String pattern, int amount) throws ParseException {
+ Calendar cal;
+ cal = parseCalendar(src, pattern);
+ cal.add(Calendar.DATE, amount);
+ return formatDate(cal);
+ }
+
+ /**
+ * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间
+ *
+ * @param src 将要转换的原始字符窜
+ * @param pattern 转换的匹配格式
+ * @return 如果转换成功则返回转换后的时间戳
+ * @throws ParseException
+ */
+ public static Timestamp parseTimestamp(String src, String pattern) throws ParseException {
+ Date date = parseDate(src, pattern);
+ return new Timestamp(date.getTime());
+ }
+
+ // ////////////////////////////////////////////////////////////////////////////
+ // dateDiff
+ // 计算两个日期之间的差值
+ // ////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * 计算两个时间之间的差值,根据标志的不同而不同
+ *
+ * @param flag 计算标志,表示按照年/月/日/时/分/秒等计算
+ * @param calSrc 减数
+ * @param calDes 被减数
+ * @return 两个日期之间的差值
+ */
+ public static int dateDiff(char flag, Calendar calSrc, Calendar calDes) {
+
+ long millisDiff = getMillis(calSrc) - getMillis(calDes);
+ char year = 'y';
+ char day = 'd';
+ char hour = 'h';
+ char minute = 'm';
+ char second = 's';
+
+ if (flag == year) {
+ return (calSrc.get(Calendar.YEAR) - calDes.get(Calendar.YEAR));
+ }
+
+ if (flag == day) {
+ return (int) (millisDiff / DAY_IN_MILLIS);
+ }
+
+ if (flag == hour) {
+ return (int) (millisDiff / HOUR_IN_MILLIS);
+ }
+
+ if (flag == minute) {
+ return (int) (millisDiff / MINUTE_IN_MILLIS);
+ }
+
+ if (flag == second) {
+ return (int) (millisDiff / SECOND_IN_MILLIS);
+ }
+
+ return 0;
+ }
+
+ public static Long getCurrentTimestamp() {
+ return Long.valueOf(DateUtils.yyyymmddhhmmss.get().format(new Date()));
+ }
+
+
+
+ public static int getYear() {
+ GregorianCalendar calendar = new GregorianCalendar();
+ calendar.setTime(getDate());
+ return calendar.get(Calendar.YEAR);
+ }
+
+ /**
+ * 将字符串转成时间
+ * @param str
+ * @return
+ */
+ public static Date parseDatetime(String str){
+ try {
+ return datetimeFormat.get().parse(str);
+ }catch (Exception e){
+ }
+ return null;
+ }
+
+ /**
+ * 判断两个时间是否是同一天
+ *
+ * @param date1
+ * @param date2
+ * @return
+ */
+ public static boolean isSameDay(Date date1, Date date2) {
+ if (date1 == null || date2 == null) {
+ return false;
+ }
+ Calendar calendar1 = Calendar.getInstance();
+ calendar1.setTime(date1);
+ Calendar calendar2 = Calendar.getInstance();
+ calendar2.setTime(date2);
+ boolean isSameYear = calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
+ boolean isSameMonth = isSameYear && calendar1.get(Calendar.MONTH) == calendar2.get(Calendar.MONTH);
+ return isSameMonth && calendar1.get(Calendar.DAY_OF_MONTH) == calendar2.get(Calendar.DAY_OF_MONTH);
+ }
+
+ /**
+ * 判断两个时间是否是同一周
+ *
+ * @param date1
+ * @param date2
+ * @return
+ */
+ public static boolean isSameWeek(Date date1, Date date2) {
+ if (date1 == null || date2 == null) {
+ return false;
+ }
+ Calendar calendar1 = Calendar.getInstance();
+ calendar1.setTime(date1);
+ Calendar calendar2 = Calendar.getInstance();
+ calendar2.setTime(date2);
+ boolean isSameYear = calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
+ return isSameYear && calendar1.get(Calendar.WEEK_OF_YEAR) == calendar2.get(Calendar.WEEK_OF_YEAR);
+ }
+
+ /**
+ * 判断两个时间是否是同一月
+ *
+ * @param date1
+ * @param date2
+ * @return
+ */
+ public static boolean isSameMonth(Date date1, Date date2) {
+ if (date1 == null || date2 == null) {
+ return false;
+ }
+ Calendar calendar1 = Calendar.getInstance();
+ calendar1.setTime(date1);
+ Calendar calendar2 = Calendar.getInstance();
+ calendar2.setTime(date2);
+ boolean isSameYear = calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
+ return isSameYear && calendar1.get(Calendar.MONTH) == calendar2.get(Calendar.MONTH);
+ }
+
+ /**
+ * 判断两个时间是否是同一年
+ *
+ * @param date1
+ * @param date2
+ * @return
+ */
+ public static boolean isSameYear(Date date1, Date date2) {
+ if (date1 == null || date2 == null) {
+ return false;
+ }
+ Calendar calendar1 = Calendar.getInstance();
+ calendar1.setTime(date1);
+ Calendar calendar2 = Calendar.getInstance();
+ calendar2.setTime(date2);
+ return calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
+ }
+
+
+ /**
+ * 计算两个日期之间的时间差
+ * @param startDate 开始日期
+ * @param endDate 结束日期
+ * @param timeUnit 时间单位 (TimeUnit.MILLISECONDS, TimeUnit.SECONDS, 等)
+ * @return 时间差(长整型)
+ */
+ public static long getDateDiff(Date startDate, Date endDate, TimeUnit timeUnit) {
+ if (startDate == null || endDate == null) {
+ throw new IllegalArgumentException("Dates must not be null");
+ }
+
+ long diffInMillis = endDate.getTime() - startDate.getTime();
+ return timeUnit.convert(diffInMillis, TimeUnit.MILLISECONDS);
+ }
+
+ /**
+ * 计算两个日期之间的秒数差
+ * @param startDate 开始日期
+ * @param endDate 结束日期
+ * @return 秒数差
+ */
+ public static long getSecondsDiff(Date startDate, Date endDate) {
+ return getDateDiff(startDate, endDate, TimeUnit.SECONDS);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/wangbin/util/SpringBeanUtils.java b/src/main/java/com/wangbin/util/SpringBeanUtils.java
new file mode 100644
index 0000000..66e528b
--- /dev/null
+++ b/src/main/java/com/wangbin/util/SpringBeanUtils.java
@@ -0,0 +1,47 @@
+package com.wangbin.util;
+
+
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+
+@Component
+public class SpringBeanUtils implements ApplicationContextAware {
+
+ private static ApplicationContext context;
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ context = applicationContext;
+ }
+
+ public static T getBean(Class requiredType) {
+
+ if (context == null) {
+ throw new IllegalStateException("spring 环境没有启动!");
+ }
+ return context.getBean(requiredType);
+ }
+
+ public static T getBean(String beanName, Class requiredType) {
+
+ if (context == null) {
+ throw new IllegalStateException("spring 环境没有启动!");
+ }
+ return context.getBean(beanName, requiredType);
+
+ }
+
+ public static ApplicationContext getContext() {
+
+
+ if (context == null) {
+ throw new IllegalStateException("spring 环境没有启动!");
+ }
+ return context;
+ }
+}
+
diff --git a/src/main/java/com/wangbin/util/SpringContextUtil.java b/src/main/java/com/wangbin/util/SpringContextUtil.java
new file mode 100644
index 0000000..8c5a41a
--- /dev/null
+++ b/src/main/java/com/wangbin/util/SpringContextUtil.java
@@ -0,0 +1,50 @@
+package com.wangbin.util;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author wangbin
+ * @Param spring工具类
+ * @return
+ **/
+@Component
+public class SpringContextUtil implements ApplicationContextAware {
+
+ private static ApplicationContext applicationContext;
+
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ SpringContextUtil.applicationContext = applicationContext;
+ }
+
+ //获取applicationContext
+ public static ApplicationContext getApplicationContext() {
+ return applicationContext;
+ }
+
+ //通过name获取 Bean.
+ public static Object getBean(String name) {
+ return getApplicationContext().getBean(name);
+ }
+
+ //通过class获取Bean.
+ public static T getBean(Class clazz) {
+ return getApplicationContext().getBean(clazz);
+ }
+
+ //通过name,以及Clazz返回指定的Bean
+ public static T getBean(String name, Class clazz) {
+ return getApplicationContext().getBean(name, clazz);
+ }
+
+
+
+
+
+
+
+}
diff --git a/src/main/java/com/wangbin/util/TUtil.java b/src/main/java/com/wangbin/util/TUtil.java
new file mode 100644
index 0000000..8f20bd4
--- /dev/null
+++ b/src/main/java/com/wangbin/util/TUtil.java
@@ -0,0 +1,45 @@
+package com.wangbin.util;
+
+/**
+ * @createTime 2023年07月26日 20:54:00
+ */
+public class TUtil {
+
+
+ /**
+ * hex字符串转byte数组
+ * @param inHex 待转换的Hex字符串
+ * @return 转换后的byte数组结果
+ */
+ public static byte[] hexToByteArray(String inHex) {
+ int hexlen = inHex.length();
+ byte[] result;
+ if (hexlen % 2 == 1) {
+ // 奇数
+ hexlen++;
+ result = new byte[(hexlen / 2)];
+ inHex = "0" + inHex;
+ } else {
+ // 偶数
+ result = new byte[(hexlen / 2)];
+ }
+ int j = 0;
+ for (int i = 0; i < hexlen; i += 2) {
+ result[j] = hexToByte(inHex.substring(i, i + 2));
+ j++;
+ }
+ return result;
+ }
+
+ /**
+ * Hex字符串转byte
+ * @param inHex 待转换的Hex字符串
+ * @return 转换后的byte
+ */
+ public static byte hexToByte(String inHex) {
+ return (byte) Integer.parseInt(inHex, 16);
+ }
+
+
+
+}
diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml
new file mode 100644
index 0000000..98eae0a
--- /dev/null
+++ b/src/main/resources/application-local.yml
@@ -0,0 +1,81 @@
+server:
+ port: 8888
+ servlet:
+ session:
+ timeout: PT2H #就是2个小时,7200秒。
+
+spring:
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://8.130.9.244:13306/jeecg-boot?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
+ username: user_hj
+ password: user_hj
+ type: com.alibaba.druid.pool.DruidDataSource
+ filters: stat,wall,log4j
+
+ thymeleaf:
+ cache: false
+ mode: LEGACYHTML5 #LEGACYHTML5
+ prefix: classpath:/templates/
+ suffix: .html
+ encoding: utf-8
+ enabled: true
+ servlet:
+ content-type: text/html
+
+ servlet:
+ multipart:
+ enabled: true
+ max-file-size: 50MB
+ max-request-size: 50MB
+ jackson:
+ date-format: yyyy-MM-dd HH:mm:ss
+ time-zone: GMT+8
+ devtools:
+ restart:
+ enabled: true
+ mvc:
+ pathmatch:
+ matching-strategy: ant_path_matcher #解决springboot高版本和swagger的集成问题
+
+# redis:
+# port: 6379
+# host: 49.233.25.219
+# database: 10
+# password: zfs_123!
+# jedis:
+# pool:
+# min-idle: 0
+# max-idle: 10
+# max-wait: -1
+# max-active: 20
+# timeout: 1000
+
+
+mybatis-plus:
+ mapper-locations: classpath*:/com/wangbin/mapper/xml/*Mapper.xml,classpath*:/com/wangbin/module/*/mapper/xml/*Mapper.xml
+ configuration:
+# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
+ call-setters-on-nulls: true
+
+logging:
+ level:
+ com.wangbin.thread: error
+ springfox: error
+
+xxl:
+ job:
+ accessToken: lhzn.20241215
+ admin:
+ addresses: http://192.168.0.4:10003/xxl-job-admin
+ executor:
+ appname: jngjTask
+ address:
+ ip:
+ port: 10004
+ logpath: /logs/xxl-job/jobhandler
+ logretentiondays: 30
+
+
+
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..053aea7
--- /dev/null
+++ b/src/main/resources/application-prod.yml
@@ -0,0 +1,82 @@
+server:
+ port: 8888
+ servlet:
+ session:
+ timeout: PT2H #就是2个小时,7200秒。
+
+spring:
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://172.23.82.152:13306/jeecg-boot?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
+ username: user_hj
+ password: user_hj
+ type: com.alibaba.druid.pool.DruidDataSource
+ filters: stat,wall,log4j
+
+ thymeleaf:
+ cache: false
+ mode: LEGACYHTML5 #LEGACYHTML5
+ prefix: classpath:/templates/
+ suffix: .html
+ encoding: utf-8
+ enabled: true
+ servlet:
+ content-type: text/html
+
+ servlet:
+ multipart:
+ enabled: true
+ max-file-size: 50MB
+ max-request-size: 50MB
+ jackson:
+ date-format: yyyy-MM-dd HH:mm:ss
+ time-zone: GMT+8
+ devtools:
+ restart:
+ enabled: true
+ mvc:
+ pathmatch:
+ matching-strategy: ant_path_matcher #解决springboot高版本和swagger的集成问题
+
+# redis:
+# port: 6379
+# host: 49.233.25.219
+# database: 10
+# password: zfs_123!
+# jedis:
+# pool:
+# min-idle: 0
+# max-idle: 10
+# max-wait: -1
+# max-active: 20
+# timeout: 1000
+
+
+mybatis-plus:
+ mapper-locations: classpath*:/com/wangbin/mapper/xml/*Mapper.xml,classpath*:/com/wangbin/module/*/mapper/xml/*Mapper.xml
+ configuration:
+ # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
+ call-setters-on-nulls: true
+
+logging:
+ level:
+ com.wangbin.thread: error
+ springfox: error
+
+xxl:
+ job:
+ accessToken: lhzn.20250409
+ admin:
+ addresses: http://172.23.82.152:10003/xxl-job-admin
+ executor:
+ appname: hjTask
+ address:
+ ip:
+ port: 10004
+ logpath: /logs/xxl-job/jobhandler
+ logretentiondays: 30
+
+
+
+
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
new file mode 100644
index 0000000..7b9f9c7
--- /dev/null
+++ b/src/main/resources/application.yml
@@ -0,0 +1,5 @@
+spring:
+ profiles:
+ active: prod #
+
+
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..1db4b39
--- /dev/null
+++ b/src/main/resources/logback-spring.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+ %d{yyyy-MM-dd HH:mm:ss} [%thread] %magenta(%-5level) %green([%-50.50class]) >>> %cyan(%msg) %n
+
+
+
+
+
+
+ ERROR
+ DENY
+ ACCEPT
+
+
+
+
+ ${LOG_HOME}/info/%d{yyyy-MM-dd}-%i-info.log
+
+ 10MB
+
+ 60
+
+ 1GB
+
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n
+
+
+
+
+
+
+ ERROR
+ ACCEPT
+ DENY
+
+
+
+
+ ${LOG_HOME}/error/%d{yyyy-MM-dd}-%i-error.log.zip
+
+ 10MB
+
+ 60
+
+ 1GB
+
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/java/com/wangbin/test/Test2.java b/src/test/java/com/wangbin/test/Test2.java
new file mode 100644
index 0000000..ca1c836
--- /dev/null
+++ b/src/test/java/com/wangbin/test/Test2.java
@@ -0,0 +1,46 @@
+package com.wangbin.test;
+
+import com.wangbin.WangbinApplication;
+import com.wangbin.entity.SurvDeviceDeploy;
+import com.wangbin.service.ICommonService;
+import com.wangbin.service.ISurvDeviceDeployService;
+import com.wangbin.service.ISurvTransdataOrientwaterService;
+import com.wangbin.service.ISurvTransdataSoilService;
+import com.wangbin.util.SpringContextUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@SpringBootTest(classes = {WangbinApplication.class})
+@Slf4j
+public class Test2 {
+
+
+ @Autowired
+ private ICommonService commonService;
+ @Autowired
+ private ISurvTransdataSoilService survTransdataSoilService;
+ @Autowired
+ private ISurvTransdataOrientwaterService transdataOrientwaterService;
+
+ @Test
+ public void Test2a() {
+
+// String result1 = HttpUtil.get("http://47.105.215.208:8005/intfa/queryData/16095467");
+// Map map = DataUtil.xphStrToMap(result1);
+// survTransdataSoilService.saveBaowen(map);
+// ip:110.179.80.65,port:51077
+
+ String hostAddress = "110.179.80.65";//ip:117.132.191.89
+ String port = String.valueOf(51077);//port:8515
+ System.out.println("ip:"+hostAddress+",port:"+port);
+ ISurvDeviceDeployService deviceDeployService = SpringContextUtil.getBean(ISurvDeviceDeployService.class);
+ SurvDeviceDeploy deviceDeploy = deviceDeployService.getOneByIpPort(hostAddress,port);
+ System.out.println(deviceDeploy);
+ }
+
+}