diff --git a/src/main/java/com/wangbin/WangbinApplication.java b/src/main/java/com/lanhai/LanHaiApplication.java similarity index 76% rename from src/main/java/com/wangbin/WangbinApplication.java rename to src/main/java/com/lanhai/LanHaiApplication.java index 8eb4b8a..df5a953 100644 --- a/src/main/java/com/wangbin/WangbinApplication.java +++ b/src/main/java/com/lanhai/LanHaiApplication.java @@ -1,4 +1,4 @@ -package com.wangbin; +package com.lanhai; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; @@ -17,12 +17,12 @@ import org.springframework.boot.web.servlet.support.SpringBootServletInitializer */ @SpringBootApplication //@MapperScan会扫描Mapper接口类,并生成对应的实现类。 -@MapperScan({"com.wangbin.mapper","com.wangbin.module.*.mapper"}) -//@MapperScan({"com.wangbin.**.mapper"}) -public class WangbinApplication extends SpringBootServletInitializer { +@MapperScan({"com.lanhai.mapper","com.lanhai.module.*.mapper"}) +//@MapperScan({"com.lanhai.**.mapper"}) +public class LanHaiApplication extends SpringBootServletInitializer { public static void main(String[] args) { - SpringApplication.run(WangbinApplication.class, args); + SpringApplication.run(LanHaiApplication.class, args); } @@ -32,7 +32,7 @@ public class WangbinApplication extends SpringBootServletInitializer { */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { - return builder.sources(WangbinApplication.class); + return builder.sources(LanHaiApplication.class); } } diff --git a/src/main/java/com/wangbin/MybatisPlusGenerator.java b/src/main/java/com/lanhai/MybatisPlusGenerator.java similarity index 97% rename from src/main/java/com/wangbin/MybatisPlusGenerator.java rename to src/main/java/com/lanhai/MybatisPlusGenerator.java index 3beae8d..673bb0f 100644 --- a/src/main/java/com/wangbin/MybatisPlusGenerator.java +++ b/src/main/java/com/lanhai/MybatisPlusGenerator.java @@ -1,4 +1,4 @@ -package com.wangbin; +package com.lanhai; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.generator.AutoGenerator; @@ -21,7 +21,7 @@ public class MybatisPlusGenerator { //生成代码地址 public static final String outputdir = "D:/a5"; //包名 - public static final String packageName = "com.wangbin"; + public static final String packageName = "com.lanhai"; public void generator(String... include) { diff --git a/src/main/java/com/wangbin/common/Result.java b/src/main/java/com/lanhai/common/Result.java similarity index 98% rename from src/main/java/com/wangbin/common/Result.java rename to src/main/java/com/lanhai/common/Result.java index 7caa67b..9d706ff 100644 --- a/src/main/java/com/wangbin/common/Result.java +++ b/src/main/java/com/lanhai/common/Result.java @@ -1,4 +1,4 @@ -package com.wangbin.common; +package com.lanhai.common; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/com/wangbin/config/DruidConfig.java b/src/main/java/com/lanhai/config/DruidConfig.java similarity index 98% rename from src/main/java/com/wangbin/config/DruidConfig.java rename to src/main/java/com/lanhai/config/DruidConfig.java index 02dba60..bae0e8b 100644 --- a/src/main/java/com/wangbin/config/DruidConfig.java +++ b/src/main/java/com/lanhai/config/DruidConfig.java @@ -1,4 +1,4 @@ -package com.wangbin.config; +package com.lanhai.config; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.http.StatViewServlet; diff --git a/src/main/java/com/wangbin/config/MybatisPlusConfig.java b/src/main/java/com/lanhai/config/MybatisPlusConfig.java similarity index 94% rename from src/main/java/com/wangbin/config/MybatisPlusConfig.java rename to src/main/java/com/lanhai/config/MybatisPlusConfig.java index 75d6537..bec91c0 100644 --- a/src/main/java/com/wangbin/config/MybatisPlusConfig.java +++ b/src/main/java/com/lanhai/config/MybatisPlusConfig.java @@ -1,4 +1,4 @@ -package com.wangbin.config; +package com.lanhai.config; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.context.annotation.Bean; diff --git a/src/main/java/com/wangbin/config/RedisConfig.java b/src/main/java/com/lanhai/config/RedisConfig.java similarity index 98% rename from src/main/java/com/wangbin/config/RedisConfig.java rename to src/main/java/com/lanhai/config/RedisConfig.java index e6dc8ce..99084fa 100644 --- a/src/main/java/com/wangbin/config/RedisConfig.java +++ b/src/main/java/com/lanhai/config/RedisConfig.java @@ -1,4 +1,4 @@ -package com.wangbin.config; +package com.lanhai.config; import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; import com.fasterxml.jackson.annotation.PropertyAccessor; diff --git a/src/main/java/com/wangbin/config/ServerConfig.java b/src/main/java/com/lanhai/config/ServerConfig.java similarity index 97% rename from src/main/java/com/wangbin/config/ServerConfig.java rename to src/main/java/com/lanhai/config/ServerConfig.java index a06011b..53586bf 100644 --- a/src/main/java/com/wangbin/config/ServerConfig.java +++ b/src/main/java/com/lanhai/config/ServerConfig.java @@ -1,4 +1,4 @@ -package com.wangbin.config; +package com.lanhai.config; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.web.context.WebServerInitializedEvent; diff --git a/src/main/java/com/wangbin/config/Swagger2Config.java b/src/main/java/com/lanhai/config/Swagger2Config.java similarity index 92% rename from src/main/java/com/wangbin/config/Swagger2Config.java rename to src/main/java/com/lanhai/config/Swagger2Config.java index 68d98fa..c7f7244 100644 --- a/src/main/java/com/wangbin/config/Swagger2Config.java +++ b/src/main/java/com/lanhai/config/Swagger2Config.java @@ -1,4 +1,4 @@ -package com.wangbin.config; +package com.lanhai.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -24,7 +24,7 @@ public class Swagger2Config { .groupName("1.0版本") .select() //这里指定Controller扫描包路径 - .apis(RequestHandlerSelectors.basePackage("com.wangbin.controller")) + .apis(RequestHandlerSelectors.basePackage("com.lanhai.controller")) .paths(PathSelectors.any()) .build(); return docket; diff --git a/src/main/java/com/wangbin/config/XxlJobConfig.java b/src/main/java/com/lanhai/config/XxlJobConfig.java similarity index 98% rename from src/main/java/com/wangbin/config/XxlJobConfig.java rename to src/main/java/com/lanhai/config/XxlJobConfig.java index d632465..8c77ee6 100644 --- a/src/main/java/com/wangbin/config/XxlJobConfig.java +++ b/src/main/java/com/lanhai/config/XxlJobConfig.java @@ -1,4 +1,4 @@ -package com.wangbin.config; +package com.lanhai.config; import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; import org.slf4j.Logger; diff --git a/src/main/java/com/wangbin/constant/CommonConstant.java b/src/main/java/com/lanhai/constant/CommonConstant.java similarity index 89% rename from src/main/java/com/wangbin/constant/CommonConstant.java rename to src/main/java/com/lanhai/constant/CommonConstant.java index de21b3a..b393d6e 100644 --- a/src/main/java/com/wangbin/constant/CommonConstant.java +++ b/src/main/java/com/lanhai/constant/CommonConstant.java @@ -1,4 +1,4 @@ -package com.wangbin.constant; +package com.lanhai.constant; public interface CommonConstant { diff --git a/src/main/java/com/lanhai/constant/DeviceReadConstants.java b/src/main/java/com/lanhai/constant/DeviceReadConstants.java new file mode 100644 index 0000000..b5b49ca --- /dev/null +++ b/src/main/java/com/lanhai/constant/DeviceReadConstants.java @@ -0,0 +1,10 @@ +package com.lanhai.constant; + + +public interface DeviceReadConstants { + String READ_NORMAL = "normal"; + + String READ_TOO_HIGH = "high"; + + String READ_TOO_LOW = "low"; +} diff --git a/src/main/java/com/lanhai/constant/IotConstants.java b/src/main/java/com/lanhai/constant/IotConstants.java new file mode 100644 index 0000000..b93936c --- /dev/null +++ b/src/main/java/com/lanhai/constant/IotConstants.java @@ -0,0 +1,196 @@ +package com.lanhai.constant; + +public interface IotConstants { + /** + * 萤石云访问 + */ + String ysyAcess = "ysy_access"; + + /** + * 涂鸦访问 + */ + String tuya_access = "tuya_access"; + + /** + * 新普惠访问 + */ + String xph_access = "xph_access"; + + /** + * 云飞访问 + */ + String yf_access = "yf_access"; + + /** + * 欧柯奇密钥 + */ + String okq_access = "okq_access"; + + + /** + * 关村数字乡村 + */ + String gcszxc_access = "gcszxc_access"; + + /** + * 新普惠应用 + */ + String APPLICATION_XinPH = "XinPuHui"; + + + /** + * 涂鸦应用 + */ + String APPLICATION_TuYa = "TuYa"; + + /** + * 仁科应用 + */ + String APPLICATION_RenKe = "RenKe"; + + /** + * 仁科应用 + */ + String renke_access = "RenKe_access"; + + /** + * 萤石云标准 + */ + String ysy_standard = "ysy_standard"; + + /** + * 新普惠v1 + */ + String xph_v1 = "xph_v1"; + + /** + * 新普惠v2 + */ + String xph_v2 = "xph_v2"; + + /** + * 欧柯奇v1 + */ + String okq_v1 = "okq_v1"; + + /** + * 欧柯奇v2 + */ + String okq_v2 = "okq_v2"; + + /** + * 博云标准 + */ + String by_standard = "by_standard"; + + /** + * 云飞标准 + */ + String yf_standard = "yf_standard"; + + + /** + * 关村数字乡村协议 + */ + String gcszxc_standard = "gcszxc_standard"; + + /** + * 曲沃山东芯谷网络协议 + */ + String qwxgwl_standard = "qwxgwl_standard"; + + + /** + * 曲沃山东芯谷网络密钥 + */ + String qwxgwl_access = "qwxgwl_access"; + + + /** + * 曲沃山东优晟 + */ + String qwmeter_standard = "qwmeter_standard"; + + /** + * 曲沃山东优晟系统密钥 + */ + String qwmeter_access = "qwmeter_access"; + + + /** + * 涂鸦iot协议 + */ + String tuya_standard = "tuya_standard"; + + /** + * 仁科协议 + */ + String renke_standard = "RenKe_standard"; + + /** + * 害虫目录 + */ + String contents_pest = "1"; + + /** + * 物联网字典缓存头 + */ + String iot_ele_cache = "iot_ele_cache"; + + /** + * 物联网厂家配置缓存 + */ + String iot_protocol_cache = "iot_protocol_cache"; + + + /** + * 操作标记,启动 + */ + String operation_launch = "launch"; + + /** + * 操作标记,功能 + */ + String operation_function = "function"; + + /** + * 操作标记,参数设置 + */ + String operation_params = "params"; + + /** + * 设备启动 + */ + String device_on = "1"; + + /** + * 设备停止 + */ + String device_off = "0"; + + + /** + * 控制类设备 + */ + String iot_device_control = "control"; + + /** + * 监控类设备 + */ + String iot_device_monitor = "monitor"; + + /** + * 监测类设备 + */ + String iot_device_surv = "surv"; + + /** + * 防治设备 + */ + String iot_device_guard = "guard"; + + /** + * 物联网配置缓存头 + */ + String IOT_SURVCONFIG_CACHE = "surv:config:params"; +} diff --git a/src/main/java/com/lanhai/constant/PollutionConstants.java b/src/main/java/com/lanhai/constant/PollutionConstants.java new file mode 100644 index 0000000..20ecab8 --- /dev/null +++ b/src/main/java/com/lanhai/constant/PollutionConstants.java @@ -0,0 +1,71 @@ +package com.lanhai.constant; + +public interface PollutionConstants { + /** + * 水污染物 + */ + String WATER_ORIENT = "water_orient"; + + /** + * 水污染物 + */ + String WATER_LIVE = "water_live"; + /** + * 水质监测 + */ + String WATER_QULITY="6_water"; + + /** + * 气项监测 + */ + String AIR_SURV = "air"; + + + /** + * 土壤监测 + */ + String SOIL_SURV = "soil"; + + + String STINK = "stink"; + + String CAMERA = "camera"; + + String SURV = "surv"; + + /** + * 水肥机 + */ + String INTEGRATED_MACHINE = "integrated_machine"; + + /** + * 水肥机 + */ + String INTEGRATED_CONTROL = "integrated_control"; + /** + * 控制柜 + */ + String CONTROL_CAB = "control_cab"; + + + /** + * 虫情监测 + */ + String BUG_SURV="7_bugsurv"; + + + /** + * 孢子监测 + */ + String SPORE_SURV="8_sporesurv"; + + /** + * 孢子监测 + */ + String PEST_LIGHT="9_pestlight"; + + /** + * 数据生成间隔 单位秒 + */ + Integer dataGenGap = 3600; +} diff --git a/src/main/java/com/lanhai/constant/ToolConstant.java b/src/main/java/com/lanhai/constant/ToolConstant.java new file mode 100644 index 0000000..8828e6c --- /dev/null +++ b/src/main/java/com/lanhai/constant/ToolConstant.java @@ -0,0 +1,62 @@ +package com.lanhai.constant; + +public interface ToolConstant { + + /**POST请求*/ + String HTTP_POST = "POST"; + + /**PUT请求*/ + String HTTP_PUT = "PUT"; + + /**PATCH请求*/ + String HTTP_PATCH = "PATCH"; + + /**未知的*/ + String UNKNOWN = "unknown"; + + /**字符串http*/ + String STR_HTTP = "http"; + + /**String 类型的空值*/ + String STRING_NULL = "null"; + + /**前端vue3版本Header参数名*/ + String VERSION="X-Version"; + + /**存储在线程变量里的动态表名*/ + String DYNAMIC_TABLE_NAME="DYNAMIC_TABLE_NAME"; + /** + * http:// http协议 + */ + String HTTP_PROTOCOL = "http://"; + + /** + * https:// https协议 + */ + String HTTPS_PROTOCOL = "https://"; + + /** + * 萤石云应用 + */ + String APPLICATION_YsYun = "YingShiYun"; + + /** + * 新普惠应用 + */ + String APPLICATION_XinPH = "XinPuHui"; + + /** + * 云飞应用 + */ + String APPLICATION_YunF = "YunFei"; + + /** + * 欧克奇应用 + */ + String APPLICATION_Okq = "OuKeqi"; + + /** + * 涂鸦应用 + */ + String APPLICATION_TuYa = "TuYa"; +} diff --git a/src/main/java/com/wangbin/controller/ScEquZhibiaoController.java b/src/main/java/com/lanhai/controller/ScEquZhibiaoController.java similarity index 90% rename from src/main/java/com/wangbin/controller/ScEquZhibiaoController.java rename to src/main/java/com/lanhai/controller/ScEquZhibiaoController.java index 3c59e69..1cfa33c 100644 --- a/src/main/java/com/wangbin/controller/ScEquZhibiaoController.java +++ b/src/main/java/com/lanhai/controller/ScEquZhibiaoController.java @@ -1,4 +1,4 @@ -package com.wangbin.controller; +package com.lanhai.controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/com/wangbin/controller/SurvAlertRecordController.java b/src/main/java/com/lanhai/controller/SurvAlertRecordController.java similarity index 90% rename from src/main/java/com/wangbin/controller/SurvAlertRecordController.java rename to src/main/java/com/lanhai/controller/SurvAlertRecordController.java index 50004fe..a62b434 100644 --- a/src/main/java/com/wangbin/controller/SurvAlertRecordController.java +++ b/src/main/java/com/lanhai/controller/SurvAlertRecordController.java @@ -1,4 +1,4 @@ -package com.wangbin.controller; +package com.lanhai.controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/com/wangbin/controller/SurvDeviceDeployController.java b/src/main/java/com/lanhai/controller/SurvDeviceDeployController.java similarity index 88% rename from src/main/java/com/wangbin/controller/SurvDeviceDeployController.java rename to src/main/java/com/lanhai/controller/SurvDeviceDeployController.java index 1602b67..ea17939 100644 --- a/src/main/java/com/wangbin/controller/SurvDeviceDeployController.java +++ b/src/main/java/com/lanhai/controller/SurvDeviceDeployController.java @@ -1,12 +1,12 @@ -package com.wangbin.controller; +package com.lanhai.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 com.lanhai.common.Result; +import com.lanhai.constant.CommonConstant; +import com.lanhai.entity.SurvDeviceDeploy; +import com.lanhai.entity.SurvTransdataOrientwater; +import com.lanhai.service.ISurvDeviceDeployService; +import com.lanhai.service.ISurvTransdataOrientwaterService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; diff --git a/src/main/java/com/wangbin/controller/SurvHisdataAirController.java b/src/main/java/com/lanhai/controller/SurvHisdataAirController.java similarity index 91% rename from src/main/java/com/wangbin/controller/SurvHisdataAirController.java rename to src/main/java/com/lanhai/controller/SurvHisdataAirController.java index f247b30..13c6052 100644 --- a/src/main/java/com/wangbin/controller/SurvHisdataAirController.java +++ b/src/main/java/com/lanhai/controller/SurvHisdataAirController.java @@ -1,4 +1,4 @@ -package com.wangbin.controller; +package com.lanhai.controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/com/wangbin/controller/SurvHisdataLivestockwaterController.java b/src/main/java/com/lanhai/controller/SurvHisdataLivestockwaterController.java similarity index 91% rename from src/main/java/com/wangbin/controller/SurvHisdataLivestockwaterController.java rename to src/main/java/com/lanhai/controller/SurvHisdataLivestockwaterController.java index 5e3597f..d26d6c6 100644 --- a/src/main/java/com/wangbin/controller/SurvHisdataLivestockwaterController.java +++ b/src/main/java/com/lanhai/controller/SurvHisdataLivestockwaterController.java @@ -1,4 +1,4 @@ -package com.wangbin.controller; +package com.lanhai.controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/com/wangbin/controller/SurvHisdataLivestockwaterErrorController.java b/src/main/java/com/lanhai/controller/SurvHisdataLivestockwaterErrorController.java similarity index 91% rename from src/main/java/com/wangbin/controller/SurvHisdataLivestockwaterErrorController.java rename to src/main/java/com/lanhai/controller/SurvHisdataLivestockwaterErrorController.java index 52beaae..e2477c4 100644 --- a/src/main/java/com/wangbin/controller/SurvHisdataLivestockwaterErrorController.java +++ b/src/main/java/com/lanhai/controller/SurvHisdataLivestockwaterErrorController.java @@ -1,4 +1,4 @@ -package com.wangbin.controller; +package com.lanhai.controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/com/wangbin/controller/SurvHisdataOrientwaterController.java b/src/main/java/com/lanhai/controller/SurvHisdataOrientwaterController.java similarity index 91% rename from src/main/java/com/wangbin/controller/SurvHisdataOrientwaterController.java rename to src/main/java/com/lanhai/controller/SurvHisdataOrientwaterController.java index fe87338..d96cdef 100644 --- a/src/main/java/com/wangbin/controller/SurvHisdataOrientwaterController.java +++ b/src/main/java/com/lanhai/controller/SurvHisdataOrientwaterController.java @@ -1,4 +1,4 @@ -package com.wangbin.controller; +package com.lanhai.controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/com/wangbin/controller/SurvHisdataOrientwaterErrorController.java b/src/main/java/com/lanhai/controller/SurvHisdataOrientwaterErrorController.java similarity index 90% rename from src/main/java/com/wangbin/controller/SurvHisdataOrientwaterErrorController.java rename to src/main/java/com/lanhai/controller/SurvHisdataOrientwaterErrorController.java index a0589bb..9101793 100644 --- a/src/main/java/com/wangbin/controller/SurvHisdataOrientwaterErrorController.java +++ b/src/main/java/com/lanhai/controller/SurvHisdataOrientwaterErrorController.java @@ -1,4 +1,4 @@ -package com.wangbin.controller; +package com.lanhai.controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/com/wangbin/controller/SurvHisdataPestlightController.java b/src/main/java/com/lanhai/controller/SurvHisdataPestlightController.java similarity index 91% rename from src/main/java/com/wangbin/controller/SurvHisdataPestlightController.java rename to src/main/java/com/lanhai/controller/SurvHisdataPestlightController.java index 27cd955..9926719 100644 --- a/src/main/java/com/wangbin/controller/SurvHisdataPestlightController.java +++ b/src/main/java/com/lanhai/controller/SurvHisdataPestlightController.java @@ -1,4 +1,4 @@ -package com.wangbin.controller; +package com.lanhai.controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/com/wangbin/controller/SurvHisdataSoilController.java b/src/main/java/com/lanhai/controller/SurvHisdataSoilController.java similarity index 91% rename from src/main/java/com/wangbin/controller/SurvHisdataSoilController.java rename to src/main/java/com/lanhai/controller/SurvHisdataSoilController.java index e3a5ad7..a5c2fb6 100644 --- a/src/main/java/com/wangbin/controller/SurvHisdataSoilController.java +++ b/src/main/java/com/lanhai/controller/SurvHisdataSoilController.java @@ -1,4 +1,4 @@ -package com.wangbin.controller; +package com.lanhai.controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/com/wangbin/controller/SurvTransdataAirController.java b/src/main/java/com/lanhai/controller/SurvTransdataAirController.java similarity index 91% rename from src/main/java/com/wangbin/controller/SurvTransdataAirController.java rename to src/main/java/com/lanhai/controller/SurvTransdataAirController.java index 1bb6def..6c132d1 100644 --- a/src/main/java/com/wangbin/controller/SurvTransdataAirController.java +++ b/src/main/java/com/lanhai/controller/SurvTransdataAirController.java @@ -1,4 +1,4 @@ -package com.wangbin.controller; +package com.lanhai.controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/com/wangbin/controller/SurvTransdataLivestockwaterController.java b/src/main/java/com/lanhai/controller/SurvTransdataLivestockwaterController.java similarity index 91% rename from src/main/java/com/wangbin/controller/SurvTransdataLivestockwaterController.java rename to src/main/java/com/lanhai/controller/SurvTransdataLivestockwaterController.java index 83590f9..e384a7d 100644 --- a/src/main/java/com/wangbin/controller/SurvTransdataLivestockwaterController.java +++ b/src/main/java/com/lanhai/controller/SurvTransdataLivestockwaterController.java @@ -1,4 +1,4 @@ -package com.wangbin.controller; +package com.lanhai.controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/com/wangbin/controller/SurvTransdataOrientwaterController.java b/src/main/java/com/lanhai/controller/SurvTransdataOrientwaterController.java similarity index 91% rename from src/main/java/com/wangbin/controller/SurvTransdataOrientwaterController.java rename to src/main/java/com/lanhai/controller/SurvTransdataOrientwaterController.java index 9caa53f..aabd486 100644 --- a/src/main/java/com/wangbin/controller/SurvTransdataOrientwaterController.java +++ b/src/main/java/com/lanhai/controller/SurvTransdataOrientwaterController.java @@ -1,4 +1,4 @@ -package com.wangbin.controller; +package com.lanhai.controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/com/wangbin/controller/SurvTransdataPestlightController.java b/src/main/java/com/lanhai/controller/SurvTransdataPestlightController.java similarity index 91% rename from src/main/java/com/wangbin/controller/SurvTransdataPestlightController.java rename to src/main/java/com/lanhai/controller/SurvTransdataPestlightController.java index b72da72..4d73842 100644 --- a/src/main/java/com/wangbin/controller/SurvTransdataPestlightController.java +++ b/src/main/java/com/lanhai/controller/SurvTransdataPestlightController.java @@ -1,4 +1,4 @@ -package com.wangbin.controller; +package com.lanhai.controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/com/wangbin/controller/SurvTransdataSoilController.java b/src/main/java/com/lanhai/controller/SurvTransdataSoilController.java similarity index 91% rename from src/main/java/com/wangbin/controller/SurvTransdataSoilController.java rename to src/main/java/com/lanhai/controller/SurvTransdataSoilController.java index 513ec2f..8b71a08 100644 --- a/src/main/java/com/wangbin/controller/SurvTransdataSoilController.java +++ b/src/main/java/com/lanhai/controller/SurvTransdataSoilController.java @@ -1,4 +1,4 @@ -package com.wangbin.controller; +package com.lanhai.controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/com/lanhai/entity/FSurvConfig.java b/src/main/java/com/lanhai/entity/FSurvConfig.java new file mode 100644 index 0000000..b0413a8 --- /dev/null +++ b/src/main/java/com/lanhai/entity/FSurvConfig.java @@ -0,0 +1,119 @@ +package com.lanhai.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 2024-12-18 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class FSurvConfig extends Model { + + private static final long serialVersionUID=1L; + + /** + * 主键 + */ + @TableId(value = "ID", type = IdType.ID_WORKER_STR) + private String id; + + /** + * 参数名称 + */ + @TableField("CONFIG_NAME") + private String configName; + + /** + * 参数键名 + */ + @TableField("CONFIG_KEY") + private String configKey; + + /** + * 参数键值 + */ + @TableField("CONFIG_VALUE") + private String configValue; + + /** + * 参数次级键值 + */ + @TableField("CONFIG_VALUE_SE") + private String configValueSe; + + /** + * 系统内置 + */ + @TableField("CONFIG_TYPE") + private String configType; + + /** + * 备注 + */ + @TableField("CONFIG_REMARK") + private String configRemark; + + /** + * 租户号 + */ + @TableField("TENANT_ID") + private String tenantId; + + /** + * 乐观锁 + */ + @TableField("RE_VISION") + private Integer reVision; + + /** + * 创建人 + */ + @TableField("CREATE_BY") + private String createBy; + + /** + * 创建时间 + */ + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 更新人 + */ + @TableField("UPDATE_BY") + private String updateBy; + + /** + * 逻辑删除 + */ + @TableField("IS_DEL") + private Integer isDel; + + /** + * 更新时间 + */ + @TableField("UPDATE_TIME") + private Date updateTime; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/src/main/java/com/wangbin/entity/ScEquZhibiao.java b/src/main/java/com/lanhai/entity/ScEquZhibiao.java similarity index 82% rename from src/main/java/com/wangbin/entity/ScEquZhibiao.java rename to src/main/java/com/lanhai/entity/ScEquZhibiao.java index a41748e..4b91b64 100644 --- a/src/main/java/com/wangbin/entity/ScEquZhibiao.java +++ b/src/main/java/com/lanhai/entity/ScEquZhibiao.java @@ -1,4 +1,4 @@ -package com.wangbin.entity; +package com.lanhai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.extension.activerecord.Model; @@ -73,6 +73,12 @@ public class ScEquZhibiao extends Model { @TableField("name") private String name; + /** + * 字段名 + */ + @TableField("entity_field") + private String entityField; + /** * 低阈值 */ @@ -92,6 +98,19 @@ public class ScEquZhibiao extends Model { private String nuit; + @TableField("chemical_name") + private String chemicalName; + + @TableField("zhibiao_type") + private String zhibiaoType; + + @TableField("sort_no") + private Integer sortNo; + + @TableField("ele_key") + private String eleKey; + + @Override protected Serializable pkVal() { return this.id; diff --git a/src/main/java/com/wangbin/entity/SurvAlertRecord.java b/src/main/java/com/lanhai/entity/SurvAlertRecord.java similarity index 99% rename from src/main/java/com/wangbin/entity/SurvAlertRecord.java rename to src/main/java/com/lanhai/entity/SurvAlertRecord.java index cb7fb8a..51d5b70 100644 --- a/src/main/java/com/wangbin/entity/SurvAlertRecord.java +++ b/src/main/java/com/lanhai/entity/SurvAlertRecord.java @@ -1,4 +1,4 @@ -package com.wangbin.entity; +package com.lanhai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/src/main/java/com/wangbin/entity/SurvDeviceDeploy.java b/src/main/java/com/lanhai/entity/SurvDeviceDeploy.java similarity index 78% rename from src/main/java/com/wangbin/entity/SurvDeviceDeploy.java rename to src/main/java/com/lanhai/entity/SurvDeviceDeploy.java index d33a6e0..319d6d5 100644 --- a/src/main/java/com/wangbin/entity/SurvDeviceDeploy.java +++ b/src/main/java/com/lanhai/entity/SurvDeviceDeploy.java @@ -1,4 +1,4 @@ -package com.wangbin.entity; +package com.lanhai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -10,6 +10,7 @@ import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; +import java.util.List; /** *

@@ -80,6 +81,9 @@ public class SurvDeviceDeploy extends Model { @TableField("DEVICE_URL") private String deviceUrl; + @TableField("DEVICE_IOT_URL") + private String deviceIotUrl; + /** * 设备排序 */ @@ -134,6 +138,12 @@ public class SurvDeviceDeploy extends Model { @TableField("DEPLOY_TYPE") private String deployType; + /** + * 次级部署类型 + */ + @TableField("DEPLOY_SECONDARY_TYPE") + private String deploySecondaryType; + /** * 纬度 */ @@ -168,10 +178,37 @@ public class SurvDeviceDeploy extends Model { + @TableField("PROTOCOL_CODE") + private String protocolCode; + + + @TableField("PROTOCOL_TYPE") + private String protocolType; + + /** + * 部署类型大类,如monitor=监控设备,surv=监测设备,control=控制设备 + */ + @TableField("DEPLOY_CATE") + private String deployCate; + + /** + * 设备配置id + */ + @TableField("SURV_CONFIG_ID") + private String survConfigId; @Override protected Serializable pkVal() { return this.id; } + @TableField(exist = false) + private List scEquZhibiaoList; + + /** + * 同设备编号的有多少id + */ + @TableField(exist = false) + private List deviceList; + } diff --git a/src/main/java/com/wangbin/entity/SurvHisdataAir.java b/src/main/java/com/lanhai/entity/SurvHisdataAir.java similarity index 96% rename from src/main/java/com/wangbin/entity/SurvHisdataAir.java rename to src/main/java/com/lanhai/entity/SurvHisdataAir.java index 2f8f113..6f0de42 100644 --- a/src/main/java/com/wangbin/entity/SurvHisdataAir.java +++ b/src/main/java/com/lanhai/entity/SurvHisdataAir.java @@ -1,4 +1,4 @@ -package com.wangbin.entity; +package com.lanhai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -182,6 +182,12 @@ public class SurvHisdataAir extends Model { @TableField("UPDATED_TIME") private Date updatedTime; + /** + * 更新时间 + */ + @TableField("DEPLOY_ID") + private String deployId; + @Override protected Serializable pkVal() { diff --git a/src/main/java/com/wangbin/entity/SurvHisdataLivestockwater.java b/src/main/java/com/lanhai/entity/SurvHisdataLivestockwater.java similarity index 99% rename from src/main/java/com/wangbin/entity/SurvHisdataLivestockwater.java rename to src/main/java/com/lanhai/entity/SurvHisdataLivestockwater.java index 683fbda..68f22fd 100644 --- a/src/main/java/com/wangbin/entity/SurvHisdataLivestockwater.java +++ b/src/main/java/com/lanhai/entity/SurvHisdataLivestockwater.java @@ -1,4 +1,4 @@ -package com.wangbin.entity; +package com.lanhai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.extension.activerecord.Model; diff --git a/src/main/java/com/wangbin/entity/SurvHisdataLivestockwaterError.java b/src/main/java/com/lanhai/entity/SurvHisdataLivestockwaterError.java similarity index 99% rename from src/main/java/com/wangbin/entity/SurvHisdataLivestockwaterError.java rename to src/main/java/com/lanhai/entity/SurvHisdataLivestockwaterError.java index 8338075..a49c896 100644 --- a/src/main/java/com/wangbin/entity/SurvHisdataLivestockwaterError.java +++ b/src/main/java/com/lanhai/entity/SurvHisdataLivestockwaterError.java @@ -1,4 +1,4 @@ -package com.wangbin.entity; +package com.lanhai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.extension.activerecord.Model; diff --git a/src/main/java/com/wangbin/entity/SurvHisdataOrientwater.java b/src/main/java/com/lanhai/entity/SurvHisdataOrientwater.java similarity index 99% rename from src/main/java/com/wangbin/entity/SurvHisdataOrientwater.java rename to src/main/java/com/lanhai/entity/SurvHisdataOrientwater.java index 287e5de..c33306f 100644 --- a/src/main/java/com/wangbin/entity/SurvHisdataOrientwater.java +++ b/src/main/java/com/lanhai/entity/SurvHisdataOrientwater.java @@ -1,4 +1,4 @@ -package com.wangbin.entity; +package com.lanhai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/src/main/java/com/wangbin/entity/SurvHisdataOrientwaterError.java b/src/main/java/com/lanhai/entity/SurvHisdataOrientwaterError.java similarity index 99% rename from src/main/java/com/wangbin/entity/SurvHisdataOrientwaterError.java rename to src/main/java/com/lanhai/entity/SurvHisdataOrientwaterError.java index fac4ab6..5a9fb36 100644 --- a/src/main/java/com/wangbin/entity/SurvHisdataOrientwaterError.java +++ b/src/main/java/com/lanhai/entity/SurvHisdataOrientwaterError.java @@ -1,4 +1,4 @@ -package com.wangbin.entity; +package com.lanhai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.extension.activerecord.Model; diff --git a/src/main/java/com/wangbin/entity/SurvHisdataPestlight.java b/src/main/java/com/lanhai/entity/SurvHisdataPestlight.java similarity index 99% rename from src/main/java/com/wangbin/entity/SurvHisdataPestlight.java rename to src/main/java/com/lanhai/entity/SurvHisdataPestlight.java index dbbb9aa..ea13b29 100644 --- a/src/main/java/com/wangbin/entity/SurvHisdataPestlight.java +++ b/src/main/java/com/lanhai/entity/SurvHisdataPestlight.java @@ -1,4 +1,4 @@ -package com.wangbin.entity; +package com.lanhai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.extension.activerecord.Model; diff --git a/src/main/java/com/wangbin/entity/SurvHisdataSoil.java b/src/main/java/com/lanhai/entity/SurvHisdataSoil.java similarity index 96% rename from src/main/java/com/wangbin/entity/SurvHisdataSoil.java rename to src/main/java/com/lanhai/entity/SurvHisdataSoil.java index e51cbc5..b87da50 100644 --- a/src/main/java/com/wangbin/entity/SurvHisdataSoil.java +++ b/src/main/java/com/lanhai/entity/SurvHisdataSoil.java @@ -1,4 +1,4 @@ -package com.wangbin.entity; +package com.lanhai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -170,6 +170,12 @@ public class SurvHisdataSoil extends Model { @TableField("UPDATED_TIME") private Date updatedTime; + /** + * 更新时间 + */ + @TableField("DEPLOY_ID") + private String deployId; + @Override protected Serializable pkVal() { diff --git a/src/main/java/com/wangbin/entity/SurvTransdataAir.java b/src/main/java/com/lanhai/entity/SurvTransdataAir.java similarity index 96% rename from src/main/java/com/wangbin/entity/SurvTransdataAir.java rename to src/main/java/com/lanhai/entity/SurvTransdataAir.java index 05c07d2..2cc2625 100644 --- a/src/main/java/com/wangbin/entity/SurvTransdataAir.java +++ b/src/main/java/com/lanhai/entity/SurvTransdataAir.java @@ -1,4 +1,4 @@ -package com.wangbin.entity; +package com.lanhai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -175,6 +175,12 @@ public class SurvTransdataAir extends Model { @TableField("UPDATED_TIME") private Date updatedTime; + /** + * 更新时间 + */ + @TableField("DEPLOY_ID") + private String deployId; + @Override protected Serializable pkVal() { diff --git a/src/main/java/com/wangbin/entity/SurvTransdataLivestockwater.java b/src/main/java/com/lanhai/entity/SurvTransdataLivestockwater.java similarity index 99% rename from src/main/java/com/wangbin/entity/SurvTransdataLivestockwater.java rename to src/main/java/com/lanhai/entity/SurvTransdataLivestockwater.java index ccf2d15..4cb8ca0 100644 --- a/src/main/java/com/wangbin/entity/SurvTransdataLivestockwater.java +++ b/src/main/java/com/lanhai/entity/SurvTransdataLivestockwater.java @@ -1,4 +1,4 @@ -package com.wangbin.entity; +package com.lanhai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.extension.activerecord.Model; diff --git a/src/main/java/com/wangbin/entity/SurvTransdataOrientwater.java b/src/main/java/com/lanhai/entity/SurvTransdataOrientwater.java similarity index 99% rename from src/main/java/com/wangbin/entity/SurvTransdataOrientwater.java rename to src/main/java/com/lanhai/entity/SurvTransdataOrientwater.java index 9b5e99c..72b7ac6 100644 --- a/src/main/java/com/wangbin/entity/SurvTransdataOrientwater.java +++ b/src/main/java/com/lanhai/entity/SurvTransdataOrientwater.java @@ -1,4 +1,4 @@ -package com.wangbin.entity; +package com.lanhai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/src/main/java/com/wangbin/entity/SurvTransdataPestlight.java b/src/main/java/com/lanhai/entity/SurvTransdataPestlight.java similarity index 99% rename from src/main/java/com/wangbin/entity/SurvTransdataPestlight.java rename to src/main/java/com/lanhai/entity/SurvTransdataPestlight.java index adbc747..4bc6ef8 100644 --- a/src/main/java/com/wangbin/entity/SurvTransdataPestlight.java +++ b/src/main/java/com/lanhai/entity/SurvTransdataPestlight.java @@ -1,4 +1,4 @@ -package com.wangbin.entity; +package com.lanhai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/src/main/java/com/wangbin/entity/SurvTransdataSoil.java b/src/main/java/com/lanhai/entity/SurvTransdataSoil.java similarity index 96% rename from src/main/java/com/wangbin/entity/SurvTransdataSoil.java rename to src/main/java/com/lanhai/entity/SurvTransdataSoil.java index ffe985e..fb3db73 100644 --- a/src/main/java/com/wangbin/entity/SurvTransdataSoil.java +++ b/src/main/java/com/lanhai/entity/SurvTransdataSoil.java @@ -1,4 +1,4 @@ -package com.wangbin.entity; +package com.lanhai.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -163,6 +163,12 @@ public class SurvTransdataSoil extends Model { @TableField("UPDATED_TIME") private Date updatedTime; + /** + * 更新时间 + */ + @TableField("DEPLOY_ID") + private String deployId; + @Override protected Serializable pkVal() { diff --git a/src/main/java/com/lanhai/enums/DeviceDeployEnum.java b/src/main/java/com/lanhai/enums/DeviceDeployEnum.java new file mode 100644 index 0000000..c8b40d4 --- /dev/null +++ b/src/main/java/com/lanhai/enums/DeviceDeployEnum.java @@ -0,0 +1,93 @@ +package com.lanhai.enums; + +public enum DeviceDeployEnum { + + /** 气象监测设备 */ + SURV_AIR("air", "空气监测设备","surv"), + /** 土壤监测设备 */ + SURV_SOIL("soil", "土壤监测设备","surv"), + /** 面源水污染监测 */ + WATER_ORIENT("water_orient", "面源水污染监测","surv"), + /** 畜禽水污染监测 */ + WATER_LIVE("water_live", "畜禽水污染监测","surv"), + /** 水质监测 */ + WATER_QULITY("6_water", "水质监测","surv"), + /**损耗出库*/ + STINK("stink", "恶臭设备","surv"), + + CAMERA("camera", "摄像头","surv"), + + PEST_LIGHT("pestlight", "杀虫灯","guard"), + + CONTROL_CAB("control_cab", "温室控制柜","control"), + + INTEGRATED_MACHINE("integrated_machine", "水肥一体机","control"), + + INTEGRATED_CONTROL("integrated_control","灌溉控制器","control"), + + SURV("surv", "物联网设备","out"), + + OTHER("other", "其他","other"); + + DeviceDeployEnum(String type, String note, String cate){ + this.type = type; + this.note = note; + this.cate = cate; + } + + /** + * 类型代号 + */ + String type; + + /** + * 类型说明 + */ + String note; + /** + * 类型 + */ + String cate; + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + + public String getCate() { + return cate; + } + + public void setCate(String cate) { + this.cate = cate; + } + + + /** + * 根据type获取枚举 + * + * @param type + * @return + */ + public static DeviceDeployEnum valueOfType(String type) { + for (DeviceDeployEnum e : DeviceDeployEnum.values()) { + if (e.getType().equals(type)) { + return e; + } + } + return OTHER; + } + +} diff --git a/src/main/java/com/lanhai/enums/GcDeviceEnum.java b/src/main/java/com/lanhai/enums/GcDeviceEnum.java new file mode 100644 index 0000000..0504651 --- /dev/null +++ b/src/main/java/com/lanhai/enums/GcDeviceEnum.java @@ -0,0 +1,87 @@ +package com.lanhai.enums; + +import org.apache.commons.lang3.StringUtils; + +public enum GcDeviceEnum { + + /** 一体式气象站 */ + SURV_AIR("air", "一体式气象站","surv"), + /** 土壤温湿度传感器 */ + SURV_SOIL("soil", "土壤温湿度传感器","surv"), + /**自动虫情测报灯*/ + BUG_SURV("7_bugsurv", "自动虫情测报灯","surv"), + /**摄像头*/ + CAMERA("camera", "摄像头","surv"), + /**杀虫灯*/ + PEST_LIGHT("9_pestlight", "杀虫灯","guard"), + /**虫情监测*/ + OTHER("other", "其他","other"); + + GcDeviceEnum(String type, String note, String cate){ + this.type = type; + this.note = note; + this.cate = cate; + } + + /** + * 类型代号 + */ + String type; + + /** + * 类型说明 + */ + String note; + /** + * 类型 + */ + String cate; + + + + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + + public String getCate() { + return cate; + } + + public void setCate(String cate) { + this.cate = cate; + } + + + /** + * 根据note获取枚举 + * + * @param note + * @return + */ + public static GcDeviceEnum valueOfNote(String note) { + for (GcDeviceEnum e : GcDeviceEnum.values()) { + if(StringUtils.isNotBlank(note)){ + note = note.trim(); + } + if (e.getNote().equals(note)) { + return e; + } + } + return OTHER; + } + +} diff --git a/src/main/java/com/lanhai/enums/hr/HaiRuiCmdEnum.java b/src/main/java/com/lanhai/enums/hr/HaiRuiCmdEnum.java new file mode 100644 index 0000000..bcfc73e --- /dev/null +++ b/src/main/java/com/lanhai/enums/hr/HaiRuiCmdEnum.java @@ -0,0 +1,86 @@ +package com.lanhai.enums.hr; + +import org.apache.commons.lang3.StringUtils; + +public enum HaiRuiCmdEnum { + + /** 测试校验数据 */ + HR_DEBUG("debug", "测试校验数据","Insect"), + /** 设备上线 */ + HR_ONLINE("online", "设备上线","Insect"), + /**设备离线*/ + HR_OFFLINE("offline", "设备离线","Insect"), + /**状态数据*/ + HR_DATA("data", "状态数据","Insect"), + /**虫情图片*/ + HR_IMAGE("image", "虫情图片","Insect"), + /**虫情监测*/ + OTHER("other", "其他","other"); + + HaiRuiCmdEnum(String type, String note, String cate){ + this.type = type; + this.note = note; + this.cate = cate; + } + + /** + * 类型代号 + */ + String type; + + /** + * 类型说明 + */ + String note; + /** + * 类型 + */ + String cate; + + + + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + + public String getCate() { + return cate; + } + + public void setCate(String cate) { + this.cate = cate; + } + + + /** + * 根据note获取枚举 + * + * @param note + * @return + */ + public static HaiRuiCmdEnum valueOfType(String type) { + for (HaiRuiCmdEnum e : HaiRuiCmdEnum.values()) { + if(StringUtils.isNotBlank(type)){ + type = type.trim(); + } + if (e.getType().equals(type)) { + return e; + } + } + return OTHER; + } +} diff --git a/src/main/java/com/lanhai/enums/hr/HaiRuiInsectStatusEnum.java b/src/main/java/com/lanhai/enums/hr/HaiRuiInsectStatusEnum.java new file mode 100644 index 0000000..180e63a --- /dev/null +++ b/src/main/java/com/lanhai/enums/hr/HaiRuiInsectStatusEnum.java @@ -0,0 +1,90 @@ +package com.lanhai.enums.hr; + +import org.apache.commons.lang3.StringUtils; + +public enum HaiRuiInsectStatusEnum { + + /** 雨控状态 */ + HR_DEBUG("Rain_Status", "雨控状态","rainStatus"), + /** 倾斜状态 */ + HR_ONLINE("Tilt_Status", "倾斜状态","tiltStatus"), + /**电击次数*/ + HR_ELE_SHOCK("Electric_Shock", "电击次数","eleShock"), + /**充电电压*/ + HR_CHARGE("Charging_Voltage", "充电电压","chargingVoltage"), + /**电池电量*/ + HR_BATTERY("Battery_Voltage", "电池电量","batteryVoltage"), + /**设备状态*/ + HR_LAMP_STATUS("Lamp_Status", "设备状态","lampStatus"), + /**工作状态*/ + HR_DATA("Slave_Status", "工作状态","slaveStatus"), + /**虫情监测*/ + OTHER("other", "其他","other"); + + HaiRuiInsectStatusEnum(String type, String note, String cate){ + this.type = type; + this.note = note; + this.cate = cate; + } + + /** + * 类型代号 + */ + String type; + + /** + * 类型说明 + */ + String note; + /** + * 类型 + */ + String cate; + + + + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + + public String getCate() { + return cate; + } + + public void setCate(String cate) { + this.cate = cate; + } + + + /** + * 根据note获取枚举 + * + * @param note + * @return + */ + public static HaiRuiInsectStatusEnum valueOfType(String type) { + for (HaiRuiInsectStatusEnum e : HaiRuiInsectStatusEnum.values()) { + if(StringUtils.isNotBlank(type)){ + type = type.trim(); + } + if (e.getType().equals(type)) { + return e; + } + } + return OTHER; + } +} diff --git a/src/main/java/com/lanhai/mapper/FSurvConfigMapper.java b/src/main/java/com/lanhai/mapper/FSurvConfigMapper.java new file mode 100644 index 0000000..fdb1008 --- /dev/null +++ b/src/main/java/com/lanhai/mapper/FSurvConfigMapper.java @@ -0,0 +1,18 @@ +package com.lanhai.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.lanhai.entity.FSurvConfig; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 系统配置表 Mapper 接口 + *

+ * + * @author ${author} + * @since 2024-12-18 + */ +public interface FSurvConfigMapper extends BaseMapper { + + FSurvConfig getOneByTypeWithTenant(@Param("tenantId") String tenantId, @Param("type")String type); +} diff --git a/src/main/java/com/wangbin/mapper/ScEquZhibiaoMapper.java b/src/main/java/com/lanhai/mapper/ScEquZhibiaoMapper.java similarity index 77% rename from src/main/java/com/wangbin/mapper/ScEquZhibiaoMapper.java rename to src/main/java/com/lanhai/mapper/ScEquZhibiaoMapper.java index 3f6cdc2..38856f8 100644 --- a/src/main/java/com/wangbin/mapper/ScEquZhibiaoMapper.java +++ b/src/main/java/com/lanhai/mapper/ScEquZhibiaoMapper.java @@ -1,6 +1,6 @@ -package com.wangbin.mapper; +package com.lanhai.mapper; -import com.wangbin.entity.ScEquZhibiao; +import com.lanhai.entity.ScEquZhibiao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/com/wangbin/mapper/SurvAlertRecordMapper.java b/src/main/java/com/lanhai/mapper/SurvAlertRecordMapper.java similarity index 77% rename from src/main/java/com/wangbin/mapper/SurvAlertRecordMapper.java rename to src/main/java/com/lanhai/mapper/SurvAlertRecordMapper.java index b45e306..d4eceed 100644 --- a/src/main/java/com/wangbin/mapper/SurvAlertRecordMapper.java +++ b/src/main/java/com/lanhai/mapper/SurvAlertRecordMapper.java @@ -1,6 +1,6 @@ -package com.wangbin.mapper; +package com.lanhai.mapper; -import com.wangbin.entity.SurvAlertRecord; +import com.lanhai.entity.SurvAlertRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/com/lanhai/mapper/SurvDeviceDeployMapper.java b/src/main/java/com/lanhai/mapper/SurvDeviceDeployMapper.java new file mode 100644 index 0000000..1791e54 --- /dev/null +++ b/src/main/java/com/lanhai/mapper/SurvDeviceDeployMapper.java @@ -0,0 +1,20 @@ +package com.lanhai.mapper; + +import com.lanhai.entity.SurvDeviceDeploy; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 设备部署表 Mapper 接口 + *

+ * + * @author ${author} + * @since 2023-07-13 + */ +public interface SurvDeviceDeployMapper extends BaseMapper { + + List getProtocolDeviceType(@Param("protocolCode")List protocolCode, @Param("deployTypeList") List deviceType); +} diff --git a/src/main/java/com/wangbin/mapper/SurvHisdataAirMapper.java b/src/main/java/com/lanhai/mapper/SurvHisdataAirMapper.java similarity index 78% rename from src/main/java/com/wangbin/mapper/SurvHisdataAirMapper.java rename to src/main/java/com/lanhai/mapper/SurvHisdataAirMapper.java index 3c03a7b..e4df535 100644 --- a/src/main/java/com/wangbin/mapper/SurvHisdataAirMapper.java +++ b/src/main/java/com/lanhai/mapper/SurvHisdataAirMapper.java @@ -1,6 +1,6 @@ -package com.wangbin.mapper; +package com.lanhai.mapper; -import com.wangbin.entity.SurvHisdataAir; +import com.lanhai.entity.SurvHisdataAir; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/com/wangbin/mapper/SurvHisdataLivestockwaterErrorMapper.java b/src/main/java/com/lanhai/mapper/SurvHisdataLivestockwaterErrorMapper.java similarity index 74% rename from src/main/java/com/wangbin/mapper/SurvHisdataLivestockwaterErrorMapper.java rename to src/main/java/com/lanhai/mapper/SurvHisdataLivestockwaterErrorMapper.java index fcd3f30..81e7ba4 100644 --- a/src/main/java/com/wangbin/mapper/SurvHisdataLivestockwaterErrorMapper.java +++ b/src/main/java/com/lanhai/mapper/SurvHisdataLivestockwaterErrorMapper.java @@ -1,6 +1,6 @@ -package com.wangbin.mapper; +package com.lanhai.mapper; -import com.wangbin.entity.SurvHisdataLivestockwaterError; +import com.lanhai.entity.SurvHisdataLivestockwaterError; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/com/wangbin/mapper/SurvHisdataLivestockwaterMapper.java b/src/main/java/com/lanhai/mapper/SurvHisdataLivestockwaterMapper.java similarity index 77% rename from src/main/java/com/wangbin/mapper/SurvHisdataLivestockwaterMapper.java rename to src/main/java/com/lanhai/mapper/SurvHisdataLivestockwaterMapper.java index 083b0cf..0d34274 100644 --- a/src/main/java/com/wangbin/mapper/SurvHisdataLivestockwaterMapper.java +++ b/src/main/java/com/lanhai/mapper/SurvHisdataLivestockwaterMapper.java @@ -1,6 +1,6 @@ -package com.wangbin.mapper; +package com.lanhai.mapper; -import com.wangbin.entity.SurvHisdataLivestockwater; +import com.lanhai.entity.SurvHisdataLivestockwater; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/com/wangbin/mapper/SurvHisdataOrientwaterErrorMapper.java b/src/main/java/com/lanhai/mapper/SurvHisdataOrientwaterErrorMapper.java similarity index 74% rename from src/main/java/com/wangbin/mapper/SurvHisdataOrientwaterErrorMapper.java rename to src/main/java/com/lanhai/mapper/SurvHisdataOrientwaterErrorMapper.java index 790f55f..dbfdd0c 100644 --- a/src/main/java/com/wangbin/mapper/SurvHisdataOrientwaterErrorMapper.java +++ b/src/main/java/com/lanhai/mapper/SurvHisdataOrientwaterErrorMapper.java @@ -1,6 +1,6 @@ -package com.wangbin.mapper; +package com.lanhai.mapper; -import com.wangbin.entity.SurvHisdataOrientwaterError; +import com.lanhai.entity.SurvHisdataOrientwaterError; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/com/wangbin/mapper/SurvHisdataOrientwaterMapper.java b/src/main/java/com/lanhai/mapper/SurvHisdataOrientwaterMapper.java similarity index 77% rename from src/main/java/com/wangbin/mapper/SurvHisdataOrientwaterMapper.java rename to src/main/java/com/lanhai/mapper/SurvHisdataOrientwaterMapper.java index 7864c7b..d899c53 100644 --- a/src/main/java/com/wangbin/mapper/SurvHisdataOrientwaterMapper.java +++ b/src/main/java/com/lanhai/mapper/SurvHisdataOrientwaterMapper.java @@ -1,6 +1,6 @@ -package com.wangbin.mapper; +package com.lanhai.mapper; -import com.wangbin.entity.SurvHisdataOrientwater; +import com.lanhai.entity.SurvHisdataOrientwater; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/com/wangbin/mapper/SurvHisdataPestlightMapper.java b/src/main/java/com/lanhai/mapper/SurvHisdataPestlightMapper.java similarity index 77% rename from src/main/java/com/wangbin/mapper/SurvHisdataPestlightMapper.java rename to src/main/java/com/lanhai/mapper/SurvHisdataPestlightMapper.java index 2c03c33..dca4742 100644 --- a/src/main/java/com/wangbin/mapper/SurvHisdataPestlightMapper.java +++ b/src/main/java/com/lanhai/mapper/SurvHisdataPestlightMapper.java @@ -1,6 +1,6 @@ -package com.wangbin.mapper; +package com.lanhai.mapper; -import com.wangbin.entity.SurvHisdataPestlight; +import com.lanhai.entity.SurvHisdataPestlight; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/com/wangbin/mapper/SurvHisdataSoilMapper.java b/src/main/java/com/lanhai/mapper/SurvHisdataSoilMapper.java similarity index 78% rename from src/main/java/com/wangbin/mapper/SurvHisdataSoilMapper.java rename to src/main/java/com/lanhai/mapper/SurvHisdataSoilMapper.java index e8772f8..4908d5a 100644 --- a/src/main/java/com/wangbin/mapper/SurvHisdataSoilMapper.java +++ b/src/main/java/com/lanhai/mapper/SurvHisdataSoilMapper.java @@ -1,6 +1,6 @@ -package com.wangbin.mapper; +package com.lanhai.mapper; -import com.wangbin.entity.SurvHisdataSoil; +import com.lanhai.entity.SurvHisdataSoil; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/com/wangbin/mapper/SurvTransdataAirMapper.java b/src/main/java/com/lanhai/mapper/SurvTransdataAirMapper.java similarity index 77% rename from src/main/java/com/wangbin/mapper/SurvTransdataAirMapper.java rename to src/main/java/com/lanhai/mapper/SurvTransdataAirMapper.java index fb727c9..2d067ac 100644 --- a/src/main/java/com/wangbin/mapper/SurvTransdataAirMapper.java +++ b/src/main/java/com/lanhai/mapper/SurvTransdataAirMapper.java @@ -1,6 +1,6 @@ -package com.wangbin.mapper; +package com.lanhai.mapper; -import com.wangbin.entity.SurvTransdataAir; +import com.lanhai.entity.SurvTransdataAir; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/com/wangbin/mapper/SurvTransdataLivestockwaterMapper.java b/src/main/java/com/lanhai/mapper/SurvTransdataLivestockwaterMapper.java similarity index 77% rename from src/main/java/com/wangbin/mapper/SurvTransdataLivestockwaterMapper.java rename to src/main/java/com/lanhai/mapper/SurvTransdataLivestockwaterMapper.java index 5cc6d4c..d5a1062 100644 --- a/src/main/java/com/wangbin/mapper/SurvTransdataLivestockwaterMapper.java +++ b/src/main/java/com/lanhai/mapper/SurvTransdataLivestockwaterMapper.java @@ -1,6 +1,6 @@ -package com.wangbin.mapper; +package com.lanhai.mapper; -import com.wangbin.entity.SurvTransdataLivestockwater; +import com.lanhai.entity.SurvTransdataLivestockwater; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/com/wangbin/mapper/SurvTransdataOrientwaterMapper.java b/src/main/java/com/lanhai/mapper/SurvTransdataOrientwaterMapper.java similarity index 77% rename from src/main/java/com/wangbin/mapper/SurvTransdataOrientwaterMapper.java rename to src/main/java/com/lanhai/mapper/SurvTransdataOrientwaterMapper.java index 3bc7e06..c665970 100644 --- a/src/main/java/com/wangbin/mapper/SurvTransdataOrientwaterMapper.java +++ b/src/main/java/com/lanhai/mapper/SurvTransdataOrientwaterMapper.java @@ -1,6 +1,6 @@ -package com.wangbin.mapper; +package com.lanhai.mapper; -import com.wangbin.entity.SurvTransdataOrientwater; +import com.lanhai.entity.SurvTransdataOrientwater; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/com/wangbin/mapper/SurvTransdataPestlightMapper.java b/src/main/java/com/lanhai/mapper/SurvTransdataPestlightMapper.java similarity index 76% rename from src/main/java/com/wangbin/mapper/SurvTransdataPestlightMapper.java rename to src/main/java/com/lanhai/mapper/SurvTransdataPestlightMapper.java index 7a32659..ee86038 100644 --- a/src/main/java/com/wangbin/mapper/SurvTransdataPestlightMapper.java +++ b/src/main/java/com/lanhai/mapper/SurvTransdataPestlightMapper.java @@ -1,6 +1,6 @@ -package com.wangbin.mapper; +package com.lanhai.mapper; -import com.wangbin.entity.SurvTransdataPestlight; +import com.lanhai.entity.SurvTransdataPestlight; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/com/wangbin/mapper/SurvTransdataSoilMapper.java b/src/main/java/com/lanhai/mapper/SurvTransdataSoilMapper.java similarity index 77% rename from src/main/java/com/wangbin/mapper/SurvTransdataSoilMapper.java rename to src/main/java/com/lanhai/mapper/SurvTransdataSoilMapper.java index 44a1944..63a27ef 100644 --- a/src/main/java/com/wangbin/mapper/SurvTransdataSoilMapper.java +++ b/src/main/java/com/lanhai/mapper/SurvTransdataSoilMapper.java @@ -1,6 +1,6 @@ -package com.wangbin.mapper; +package com.lanhai.mapper; -import com.wangbin.entity.SurvTransdataSoil; +import com.lanhai.entity.SurvTransdataSoil; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/com/lanhai/mapper/xml/FSurvConfigMapper.xml b/src/main/java/com/lanhai/mapper/xml/FSurvConfigMapper.xml new file mode 100644 index 0000000..f1e4078 --- /dev/null +++ b/src/main/java/com/lanhai/mapper/xml/FSurvConfigMapper.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/src/main/java/com/wangbin/mapper/xml/ScEquZhibiaoMapper.xml b/src/main/java/com/lanhai/mapper/xml/ScEquZhibiaoMapper.xml similarity index 72% rename from src/main/java/com/wangbin/mapper/xml/ScEquZhibiaoMapper.xml rename to src/main/java/com/lanhai/mapper/xml/ScEquZhibiaoMapper.xml index dbc1be8..ceb62af 100644 --- a/src/main/java/com/wangbin/mapper/xml/ScEquZhibiaoMapper.xml +++ b/src/main/java/com/lanhai/mapper/xml/ScEquZhibiaoMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/src/main/java/com/wangbin/mapper/xml/SurvAlertRecordMapper.xml b/src/main/java/com/lanhai/mapper/xml/SurvAlertRecordMapper.xml similarity index 71% rename from src/main/java/com/wangbin/mapper/xml/SurvAlertRecordMapper.xml rename to src/main/java/com/lanhai/mapper/xml/SurvAlertRecordMapper.xml index 235198c..f4b771f 100644 --- a/src/main/java/com/wangbin/mapper/xml/SurvAlertRecordMapper.xml +++ b/src/main/java/com/lanhai/mapper/xml/SurvAlertRecordMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/src/main/java/com/lanhai/mapper/xml/SurvDeviceDeployMapper.xml b/src/main/java/com/lanhai/mapper/xml/SurvDeviceDeployMapper.xml new file mode 100644 index 0000000..7750db2 --- /dev/null +++ b/src/main/java/com/lanhai/mapper/xml/SurvDeviceDeployMapper.xml @@ -0,0 +1,20 @@ + + + + + + + diff --git a/src/main/java/com/wangbin/mapper/xml/SurvHisdataAirMapper.xml b/src/main/java/com/lanhai/mapper/xml/SurvHisdataAirMapper.xml similarity index 72% rename from src/main/java/com/wangbin/mapper/xml/SurvHisdataAirMapper.xml rename to src/main/java/com/lanhai/mapper/xml/SurvHisdataAirMapper.xml index 63ba75c..4fe2a55 100644 --- a/src/main/java/com/wangbin/mapper/xml/SurvHisdataAirMapper.xml +++ b/src/main/java/com/lanhai/mapper/xml/SurvHisdataAirMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/src/main/java/com/lanhai/mapper/xml/SurvHisdataLivestockwaterErrorMapper.xml b/src/main/java/com/lanhai/mapper/xml/SurvHisdataLivestockwaterErrorMapper.xml new file mode 100644 index 0000000..219c5c5 --- /dev/null +++ b/src/main/java/com/lanhai/mapper/xml/SurvHisdataLivestockwaterErrorMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/wangbin/mapper/xml/SurvTransdataOrientwaterMapper.xml b/src/main/java/com/lanhai/mapper/xml/SurvHisdataLivestockwaterMapper.xml similarity index 72% rename from src/main/java/com/wangbin/mapper/xml/SurvTransdataOrientwaterMapper.xml rename to src/main/java/com/lanhai/mapper/xml/SurvHisdataLivestockwaterMapper.xml index 508379b..6beb86c 100644 --- a/src/main/java/com/wangbin/mapper/xml/SurvTransdataOrientwaterMapper.xml +++ b/src/main/java/com/lanhai/mapper/xml/SurvHisdataLivestockwaterMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/src/main/java/com/lanhai/mapper/xml/SurvHisdataOrientwaterErrorMapper.xml b/src/main/java/com/lanhai/mapper/xml/SurvHisdataOrientwaterErrorMapper.xml new file mode 100644 index 0000000..f1a041a --- /dev/null +++ b/src/main/java/com/lanhai/mapper/xml/SurvHisdataOrientwaterErrorMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/lanhai/mapper/xml/SurvHisdataOrientwaterMapper.xml b/src/main/java/com/lanhai/mapper/xml/SurvHisdataOrientwaterMapper.xml new file mode 100644 index 0000000..ae72e84 --- /dev/null +++ b/src/main/java/com/lanhai/mapper/xml/SurvHisdataOrientwaterMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/lanhai/mapper/xml/SurvHisdataPestlightMapper.xml b/src/main/java/com/lanhai/mapper/xml/SurvHisdataPestlightMapper.xml new file mode 100644 index 0000000..e597dbb --- /dev/null +++ b/src/main/java/com/lanhai/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/lanhai/mapper/xml/SurvHisdataSoilMapper.xml similarity index 71% rename from src/main/java/com/wangbin/mapper/xml/SurvHisdataSoilMapper.xml rename to src/main/java/com/lanhai/mapper/xml/SurvHisdataSoilMapper.xml index cd9c0b0..06588ad 100644 --- a/src/main/java/com/wangbin/mapper/xml/SurvHisdataSoilMapper.xml +++ b/src/main/java/com/lanhai/mapper/xml/SurvHisdataSoilMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/src/main/java/com/lanhai/mapper/xml/SurvTransdataAirMapper.xml b/src/main/java/com/lanhai/mapper/xml/SurvTransdataAirMapper.xml new file mode 100644 index 0000000..e674385 --- /dev/null +++ b/src/main/java/com/lanhai/mapper/xml/SurvTransdataAirMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/lanhai/mapper/xml/SurvTransdataLivestockwaterMapper.xml b/src/main/java/com/lanhai/mapper/xml/SurvTransdataLivestockwaterMapper.xml new file mode 100644 index 0000000..ed4663d --- /dev/null +++ b/src/main/java/com/lanhai/mapper/xml/SurvTransdataLivestockwaterMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/lanhai/mapper/xml/SurvTransdataOrientwaterMapper.xml b/src/main/java/com/lanhai/mapper/xml/SurvTransdataOrientwaterMapper.xml new file mode 100644 index 0000000..20ce088 --- /dev/null +++ b/src/main/java/com/lanhai/mapper/xml/SurvTransdataOrientwaterMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/lanhai/mapper/xml/SurvTransdataPestlightMapper.xml b/src/main/java/com/lanhai/mapper/xml/SurvTransdataPestlightMapper.xml new file mode 100644 index 0000000..8eb3f99 --- /dev/null +++ b/src/main/java/com/lanhai/mapper/xml/SurvTransdataPestlightMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/wangbin/mapper/xml/SurvDeviceDeployMapper.xml b/src/main/java/com/lanhai/mapper/xml/SurvTransdataSoilMapper.xml similarity index 71% rename from src/main/java/com/wangbin/mapper/xml/SurvDeviceDeployMapper.xml rename to src/main/java/com/lanhai/mapper/xml/SurvTransdataSoilMapper.xml index 034fb40..e52cb45 100644 --- a/src/main/java/com/wangbin/mapper/xml/SurvDeviceDeployMapper.xml +++ b/src/main/java/com/lanhai/mapper/xml/SurvTransdataSoilMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/src/main/java/com/lanhai/o/iot/common/DeviceStatusVo.java b/src/main/java/com/lanhai/o/iot/common/DeviceStatusVo.java new file mode 100644 index 0000000..cb7ba3e --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/common/DeviceStatusVo.java @@ -0,0 +1,15 @@ +package com.lanhai.o.iot.common; + +import lombok.Data; + +import java.util.Date; + +@Data +public class DeviceStatusVo { + /*设备部署ID*/ + private String deployId; + /*设备部署ID*/ + private boolean isOnline; + /*上次在线时间*/ + private Date lastOnlineTime; +} diff --git a/src/main/java/com/lanhai/o/iot/renke/DataItem.java b/src/main/java/com/lanhai/o/iot/renke/DataItem.java new file mode 100644 index 0000000..efb9159 --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/renke/DataItem.java @@ -0,0 +1,31 @@ +/** + * Copyright 2025 bejson.com + */ +package com.lanhai.o.iot.renke; +import java.util.List; + +/** + * Auto-generated: 2025-09-11 10:47:4 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +public class DataItem { + + private int nodeId; + private List registerItem; + public void setNodeId(int nodeId) { + this.nodeId = nodeId; + } + public int getNodeId() { + return nodeId; + } + + public void setRegisterItem(List registerItem) { + this.registerItem = registerItem; + } + public List getRegisterItem() { + return registerItem; + } + +} \ No newline at end of file diff --git a/src/main/java/com/lanhai/o/iot/renke/RegisterItem.java b/src/main/java/com/lanhai/o/iot/renke/RegisterItem.java new file mode 100644 index 0000000..322fbcf --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/renke/RegisterItem.java @@ -0,0 +1,78 @@ +/** + * Copyright 2025 bejson.com + */ +package com.lanhai.o.iot.renke; + +/** + * Auto-generated: 2025-09-11 10:47:4 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +public class RegisterItem { + + private int registerId; + private String data; + private double value; + private int alarmLevel; + private String alarmColor; + private String alarmInfo; + private String unit; + private String registerName; + public void setRegisterId(int registerId) { + this.registerId = registerId; + } + public int getRegisterId() { + return registerId; + } + + public void setData(String data) { + this.data = data; + } + public String getData() { + return data; + } + + public void setValue(double value) { + this.value = value; + } + public double getValue() { + return value; + } + + public void setAlarmLevel(int alarmLevel) { + this.alarmLevel = alarmLevel; + } + public int getAlarmLevel() { + return alarmLevel; + } + + public void setAlarmColor(String alarmColor) { + this.alarmColor = alarmColor; + } + public String getAlarmColor() { + return alarmColor; + } + + public void setAlarmInfo(String alarmInfo) { + this.alarmInfo = alarmInfo; + } + public String getAlarmInfo() { + return alarmInfo; + } + + public void setUnit(String unit) { + this.unit = unit; + } + public String getUnit() { + return unit; + } + + public void setRegisterName(String registerName) { + this.registerName = registerName; + } + public String getRegisterName() { + return registerName; + } + +} \ No newline at end of file diff --git a/src/main/java/com/lanhai/o/iot/renke/RelayStatusItems.java b/src/main/java/com/lanhai/o/iot/renke/RelayStatusItems.java new file mode 100644 index 0000000..df2c1d7 --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/renke/RelayStatusItems.java @@ -0,0 +1,30 @@ +/** + * Copyright 2025 bejson.com + */ +package com.lanhai.o.iot.renke; + +/** + * Auto-generated: 2025-09-11 10:47:4 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +public class RelayStatusItems { + + private int relayNo; + private int relayStatus; + public void setRelayNo(int relayNo) { + this.relayNo = relayNo; + } + public int getRelayNo() { + return relayNo; + } + + public void setRelayStatus(int relayStatus) { + this.relayStatus = relayStatus; + } + public int getRelayStatus() { + return relayStatus; + } + +} \ No newline at end of file diff --git a/src/main/java/com/lanhai/o/iot/renke/RenKeResultPack.java b/src/main/java/com/lanhai/o/iot/renke/RenKeResultPack.java new file mode 100644 index 0000000..a401fbf --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/renke/RenKeResultPack.java @@ -0,0 +1,10 @@ +package com.lanhai.o.iot.renke; + +import lombok.Data; + +@Data +public class RenKeResultPack { + + private String code; + private String message; +} diff --git a/src/main/java/com/lanhai/o/iot/renke/RenkeDataRealTimeDetail.java b/src/main/java/com/lanhai/o/iot/renke/RenkeDataRealTimeDetail.java new file mode 100644 index 0000000..59fe43e --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/renke/RenkeDataRealTimeDetail.java @@ -0,0 +1,95 @@ +/** + * Copyright 2025 bejson.com + */ +package com.lanhai.o.iot.renke; +import java.util.List; + +/** + * Auto-generated: 2025-09-11 10:47:4 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +public class RenkeDataRealTimeDetail { + + private String systemCode; + private long deviceAddr; + private String deviceName; + private int lat; + private int lng; + private String deviceStatus; + private String relayStatus; + private List relayStatusItems; + private List dataItem; + private long timeStamp; + public void setSystemCode(String systemCode) { + this.systemCode = systemCode; + } + public String getSystemCode() { + return systemCode; + } + + public void setDeviceAddr(long deviceAddr) { + this.deviceAddr = deviceAddr; + } + public long getDeviceAddr() { + return deviceAddr; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + public String getDeviceName() { + return deviceName; + } + + public void setLat(int lat) { + this.lat = lat; + } + public int getLat() { + return lat; + } + + public void setLng(int lng) { + this.lng = lng; + } + public int getLng() { + return lng; + } + + public void setDeviceStatus(String deviceStatus) { + this.deviceStatus = deviceStatus; + } + public String getDeviceStatus() { + return deviceStatus; + } + + public void setRelayStatus(String relayStatus) { + this.relayStatus = relayStatus; + } + public String getRelayStatus() { + return relayStatus; + } + + public void setRelayStatusItems(List relayStatusItems) { + this.relayStatusItems = relayStatusItems; + } + public List getRelayStatusItems() { + return relayStatusItems; + } + + public void setDataItem(List dataItem) { + this.dataItem = dataItem; + } + public List getDataItem() { + return dataItem; + } + + public void setTimeStamp(long timeStamp) { + this.timeStamp = timeStamp; + } + public long getTimeStamp() { + return timeStamp; + } + +} \ No newline at end of file diff --git a/src/main/java/com/lanhai/o/iot/renke/RenkeDataRealTimePack.java b/src/main/java/com/lanhai/o/iot/renke/RenkeDataRealTimePack.java new file mode 100644 index 0000000..28eb675 --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/renke/RenkeDataRealTimePack.java @@ -0,0 +1,10 @@ +package com.lanhai.o.iot.renke; + +import lombok.Data; + +import java.util.List; + +@Data +public class RenkeDataRealTimePack extends RenKeResultPack { + private List data; +} diff --git a/src/main/java/com/lanhai/o/iot/renke/enums/RkItemEnum.java b/src/main/java/com/lanhai/o/iot/renke/enums/RkItemEnum.java new file mode 100644 index 0000000..42f02c0 --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/renke/enums/RkItemEnum.java @@ -0,0 +1,89 @@ +package com.lanhai.o.iot.renke.enums; + +import org.apache.commons.lang3.StringUtils; + +public enum RkItemEnum { + + /** 土壤温度 */ + RK_SOIL_TEMP("土壤温度", "土壤温度","soil"), + /** 土壤水分 */ + RK_SOIL_HUM("土壤水分", "土壤水分","soil"), + /**电导率*/ + RK_SOIL_DDL("电导率", "电导率","soil"), + /**磷*/ + RK_SOIL_P("磷", "磷","soil"), + /**氮*/ + RK_SOIL_N("氮", "氮","soil"), + /**钾*/ + RK_SOIL_K("钾", "钾","soil"), + /**虫情监测*/ + OTHER("other", "其他","other"); + + RkItemEnum(String type, String note, String cate){ + this.type = type; + this.note = note; + this.cate = cate; + } + + /** + * 类型代号 + */ + String type; + + /** + * 类型说明 + */ + String note; + /** + * 类型 + */ + String cate; + + + + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + + public String getCate() { + return cate; + } + + public void setCate(String cate) { + this.cate = cate; + } + + + /** + * 根据note获取枚举 + * + * @param note + * @return + */ + public static RkItemEnum valueOfNote(String note) { + for (RkItemEnum e : RkItemEnum.values()) { + if(StringUtils.isNotBlank(note)){ + note = note.trim(); + } + if (e.getNote().equals(note)) { + return e; + } + } + return OTHER; + } + +} diff --git a/src/main/java/com/lanhai/o/iot/xph/XphControlLogDetailVo.java b/src/main/java/com/lanhai/o/iot/xph/XphControlLogDetailVo.java new file mode 100644 index 0000000..7a65d5c --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/xph/XphControlLogDetailVo.java @@ -0,0 +1,29 @@ +package com.lanhai.o.iot.xph; + +import lombok.Data; + +@Data +public class XphControlLogDetailVo { + /*id*/ + private Integer id; + /*时间*/ + private String createTime; + /*设备编号*/ + private Integer facId; + /*继电器序号*/ + private Integer num; + /*继电器名称*/ + private String name; + /*指令值*/ + private Integer state; + /*操作结果*/ + private boolean result; + /*用户名*/ + private String username; + /*time*/ + private String time; + /*type*/ + private Integer type; + /*id*/ + private String userId; +} diff --git a/src/main/java/com/lanhai/o/iot/xph/XphControlLogVo.java b/src/main/java/com/lanhai/o/iot/xph/XphControlLogVo.java new file mode 100644 index 0000000..3c77460 --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/xph/XphControlLogVo.java @@ -0,0 +1,30 @@ +package com.lanhai.o.iot.xph; + +import lombok.Data; + +import java.util.List; + +@Data +public class XphControlLogVo { + /*控制数据*/ + private List records; + /*数据总计*/ + private Integer total; + /*分页值*/ + private Integer size; + /*当前页数*/ + private Integer current; + /*指令*/ + private List orders; + /*optimizeCountSql*/ + private boolean optimizeCountSql; + /*searchCount*/ + private boolean searchCount; + /*countId*/ + private String countId; + /*maxLimit*/ + private Integer maxLimit; + /*总页数*/ + private Integer pages; + +} diff --git a/src/main/java/com/lanhai/o/iot/xph/XphDeviceInfoVo.java b/src/main/java/com/lanhai/o/iot/xph/XphDeviceInfoVo.java new file mode 100644 index 0000000..ac6e2ef --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/xph/XphDeviceInfoVo.java @@ -0,0 +1,75 @@ +package com.lanhai.o.iot.xph; + +import lombok.Data; + +@Data +public class XphDeviceInfoVo { + /*设备编号*/ + private Integer id; + /*设备编号*/ + private Integer facId; + /*设备创建时间*/ + private String createTime; + /*设备备注信息*/ + private String remark; + /*设备名称*/ + private String facName; + /*设备类型,0-为兼容 XPH 协议的设备,1-为虫情相关的设备*/ + private Integer facType; + /*16 路要素通道的索引,以'/'分隔,需要解析为包含 16 个索引的数组,索引对应的具体要素见附录*/ + private String eleNum; + /*16 路要素通道的名称,以'/'分隔,'-'则表示使用附录要素列表中的默认名称*/ + private String eleName; + /*32 路继电器通道的索引,以'/'分隔,需要解析为包含 32 个索引的数组,索引对应的具体继电器见附录*/ + private String relayNum; + /*32 路继电器通道的名称,以'/'分隔,'-'则表示使用附录继电器列表中的默认名称*/ + private String relayName; + /*经度,具体格式为百度地图经纬度拾取中的格式*/ + private Integer longitude; + /*纬度,具体格式为百度地图经纬度拾取中的格式*/ + private Integer latitude; + /*平台读取实时数据的间隔,单位分钟,默认为 1*/ + private Integer readInterval; + /**/ + private Integer address; + /*是否有网络摄像头,目前只支持海康及萤石云的摄像头*/ + private Boolean photo; + /*创建该用户的管理员 ID,可忽略*/ + private Integer creatorId; + /*是否有扩展的继电器,若为 false,以下三项可忽略*/ + private Boolean relayExtend; + /*扩展继电器数量*/ + private Integer relayExtendCount; + /*扩展继电器通道的索引,以'/'分隔,具体个数为扩展继电器数量*/ + private String relayExtendNum; + /*扩展继电器通道的名称,以'/'分隔,具体个数为扩展继电器数量*/ + private String relayExtendName; + /*设备图片地址*/ + private String coverUrl; + /**/ + private Boolean elementExtend; + /**/ + private String elementExtendNum; + /**/ + private String elementExtendName; + /**/ + private String sim; + /**/ + private String weight; + /**/ + private String facDescribe; + /**/ + private String deviceType; + /**/ + private Integer parkId; + /**/ + private Boolean online; + /**/ + private String relaysRelation; + /**/ + private String video; + /**/ + private String elementIndexList; + /**/ + private String elementNameList; +} diff --git a/src/main/java/com/lanhai/o/iot/xph/XphDeviceNewestDataCurrentVo.java b/src/main/java/com/lanhai/o/iot/xph/XphDeviceNewestDataCurrentVo.java new file mode 100644 index 0000000..eff0e62 --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/xph/XphDeviceNewestDataCurrentVo.java @@ -0,0 +1,144 @@ +package com.lanhai.o.iot.xph; + +import lombok.Data; + +import java.util.List; + +@Data +public class XphDeviceNewestDataCurrentVo { + private String facId; + + private String dataTime; + + private String e1; + + private String e2; + + private String e3; + + private String e4; + + private String e5; + + private String e6; + + private String e7; + + private String e8; + + private String e9; + + private String e10; + + private String e11; + + private String e12; + + private String e13; + + private String e14; + + private String e15; + + private String e16; + + private String e17; + + private String e18; + + private String e19; + + private String e20; + + private String e21; + + private String e22; + + private String e23; + + private String e24; + + private String e25; + + private String e26; + + private String e27; + + private String e28; + + private String e29; + + private String e30; + + private String e31; + + private String e32; + + private String j1; + + private String j2; + + private String j3; + + private String j4; + + private String j5; + + private String j6; + + private String j7; + + private String j8; + + private String j9; + + private String j10; + + private String j11; + + private String j12; + + private String j13; + + private String j14; + + private String j15; + + private String j16; + + private String j17; + + private String j18; + + private String j19; + + private String j20; + + private String j21; + + private String j22; + + private String j23; + + private String j24; + + private String j25; + + private String j26; + + private String j27; + + private String j28; + + private String j29; + + private String j30; + + private String j31; + + private String j32; + + private String _id; + + private List IMAGE_FILE; +} diff --git a/src/main/java/com/lanhai/o/iot/xph/XphDeviceNewestDataDetailVo.java b/src/main/java/com/lanhai/o/iot/xph/XphDeviceNewestDataDetailVo.java new file mode 100644 index 0000000..ed0b77a --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/xph/XphDeviceNewestDataDetailVo.java @@ -0,0 +1,13 @@ +package com.lanhai.o.iot.xph; + +import lombok.Data; + +import java.util.List; + +@Data +public class XphDeviceNewestDataDetailVo { + private String datetime; + private XphDeviceNewestDataCurrentVo currentData; + private List eleLists; + private List relLists; +} diff --git a/src/main/java/com/lanhai/o/iot/xph/XphDeviceNewestDataEleVo.java b/src/main/java/com/lanhai/o/iot/xph/XphDeviceNewestDataEleVo.java new file mode 100644 index 0000000..87e8aa4 --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/xph/XphDeviceNewestDataEleVo.java @@ -0,0 +1,19 @@ +package com.lanhai.o.iot.xph; + +import lombok.Data; + +@Data +public class XphDeviceNewestDataEleVo { + /*单位*/ + private String eUnit; + /*图标*/ + private String eUrl; + /*传感器值*/ + private String eValue; + /*序号*/ + private String eKey; + /*元素名称*/ + private String eName; + /*元素字典*/ + private String eNum; +} diff --git a/src/main/java/com/lanhai/o/iot/xph/XphDeviceNewestDataRelVo.java b/src/main/java/com/lanhai/o/iot/xph/XphDeviceNewestDataRelVo.java new file mode 100644 index 0000000..f79c8b5 --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/xph/XphDeviceNewestDataRelVo.java @@ -0,0 +1,15 @@ +package com.lanhai.o.iot.xph; + +import lombok.Data; + +@Data +public class XphDeviceNewestDataRelVo { + /*继电器状态,中文*/ + private String value; + /*继电器编号,j+序号,如j13*/ + private String key; + /*继电器名称*/ + private String name; + /*继电器类型*/ + private Integer index; +} diff --git a/src/main/java/com/lanhai/o/iot/xph/XphDeviceNewestDataVo.java b/src/main/java/com/lanhai/o/iot/xph/XphDeviceNewestDataVo.java new file mode 100644 index 0000000..c204c2e --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/xph/XphDeviceNewestDataVo.java @@ -0,0 +1,17 @@ +package com.lanhai.o.iot.xph; + +import lombok.Data; + +import java.util.List; + +@Data +public class XphDeviceNewestDataVo { + /** + * 设备数据 + */ + private List list; + /** + * 数据量 + */ + private Integer total; +} diff --git a/src/main/java/com/lanhai/o/iot/ysy/VOYsyApiResult.java b/src/main/java/com/lanhai/o/iot/ysy/VOYsyApiResult.java new file mode 100644 index 0000000..93a2cd1 --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/ysy/VOYsyApiResult.java @@ -0,0 +1,11 @@ +package com.lanhai.o.iot.ysy; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +@Data +public class VOYsyApiResult { + private String code; + private String msg; + private JSONObject data; +} diff --git a/src/main/java/com/lanhai/o/iot/ysy/VOYsyResultPack.java b/src/main/java/com/lanhai/o/iot/ysy/VOYsyResultPack.java new file mode 100644 index 0000000..a14f550 --- /dev/null +++ b/src/main/java/com/lanhai/o/iot/ysy/VOYsyResultPack.java @@ -0,0 +1,9 @@ +package com.lanhai.o.iot.ysy; + +import lombok.Data; + +@Data +public class VOYsyResultPack { + private VOYsyApiResult voYsyApiResult; + private Boolean isSuccess; +} diff --git a/src/main/java/com/lanhai/o/vo/HttpResponseVo.java b/src/main/java/com/lanhai/o/vo/HttpResponseVo.java new file mode 100644 index 0000000..1bfaba0 --- /dev/null +++ b/src/main/java/com/lanhai/o/vo/HttpResponseVo.java @@ -0,0 +1,12 @@ +package com.lanhai.o.vo; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import org.springframework.http.HttpHeaders; + +@Data +public class HttpResponseVo { + private boolean isOk; + private JSONObject data; + private HttpHeaders responseHeaders; +} diff --git a/src/main/java/com/lanhai/o/vo/VOByQCallBackData.java b/src/main/java/com/lanhai/o/vo/VOByQCallBackData.java new file mode 100644 index 0000000..b590421 --- /dev/null +++ b/src/main/java/com/lanhai/o/vo/VOByQCallBackData.java @@ -0,0 +1,29 @@ +package com.lanhai.o.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class VOByQCallBackData { + // "f"标识协议类型,例如设备主动上报为"rp"。 +// "d"表示数据。 +// "sid"表示从机名。 +// "pid"表示变量名。 +// "v"表示数值。 +// "s"表示时间秒。 +// "ms"表示时间 ms。 +// "e"表示错误码,0 为正常,非 0 为异常。 +// "i"表示错误信息。非必须字段,用于错误码为非 0 时提示错误信息。"dna"字段为当前规则的版本。 +// "adc"字段为当前规则的数据点个数。 +// "sum"字段标识该回复共分几条回复。 +// "idx"字段标识当前为第几条回复。 + + private String f; + private List d; + private String e; + private String rid;//临时,全量查询时的请求id + private String rcid;//临时,部分查询时的请求id + private String syncid;//临时,部分查询时的请求id + private String dataSyncTime; +} diff --git a/src/main/java/com/lanhai/o/vo/VOByQCallBackDetail.java b/src/main/java/com/lanhai/o/vo/VOByQCallBackDetail.java new file mode 100644 index 0000000..65971f5 --- /dev/null +++ b/src/main/java/com/lanhai/o/vo/VOByQCallBackDetail.java @@ -0,0 +1,28 @@ +package com.lanhai.o.vo; + +import lombok.Data; + +@Data +public class VOByQCallBackDetail { + + // "f"标识协议类型,例如设备主动上报为"rp"。 +// "d"表示数据。 +// "sid"表示从机名。 +// "pid"表示变量名。 +// "v"表示数值。 +// "s"表示时间秒。 +// "ms"表示时间 ms。 +// "e"表示错误码,0 为正常,非 0 为异常。 +// "i"表示错误信息。非必须字段,用于错误码为非 0 时提示错误信息。"dna"字段为当前规则的版本。 +// "adc"字段为当前规则的数据点个数。 +// "sum"字段标识该回复共分几条回复。 +// "idx"字段标识当前为第几条回复。 + + private String sid; + private String pid; + private String v; + private String s; + private String ms; + private String e; + private String i; +} diff --git a/src/main/java/com/lanhai/o/vo/VOEmailContent.java b/src/main/java/com/lanhai/o/vo/VOEmailContent.java new file mode 100644 index 0000000..54fac73 --- /dev/null +++ b/src/main/java/com/lanhai/o/vo/VOEmailContent.java @@ -0,0 +1,10 @@ +package com.lanhai.o.vo; + +import lombok.Data; + +@Data +public class VOEmailContent { + private String mailBox; + private String subject; + private String content; +} diff --git a/src/main/java/com/lanhai/o/vo/VOIotAccess.java b/src/main/java/com/lanhai/o/vo/VOIotAccess.java new file mode 100644 index 0000000..49efd39 --- /dev/null +++ b/src/main/java/com/lanhai/o/vo/VOIotAccess.java @@ -0,0 +1,9 @@ +package com.lanhai.o.vo; + +import lombok.Data; + +@Data +public class VOIotAccess { + private String appId; + private String appSecret; +} diff --git a/src/main/java/com/wangbin/runner/MyApplicationRunner.java b/src/main/java/com/lanhai/runner/MyApplicationRunner.java similarity index 90% rename from src/main/java/com/wangbin/runner/MyApplicationRunner.java rename to src/main/java/com/lanhai/runner/MyApplicationRunner.java index f3b354e..3501423 100644 --- a/src/main/java/com/wangbin/runner/MyApplicationRunner.java +++ b/src/main/java/com/lanhai/runner/MyApplicationRunner.java @@ -1,6 +1,6 @@ -package com.wangbin.runner; +package com.lanhai.runner; -import com.wangbin.thread.NetServer; +import com.lanhai.thread.NetServer; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; diff --git a/src/main/java/com/lanhai/service/ICommonService.java b/src/main/java/com/lanhai/service/ICommonService.java new file mode 100644 index 0000000..5736eee --- /dev/null +++ b/src/main/java/com/lanhai/service/ICommonService.java @@ -0,0 +1,14 @@ +package com.lanhai.service; + +import com.lanhai.entity.FSurvConfig; + +/** + * 处理业务的服务 + */ +public interface ICommonService { + FSurvConfig getCacheTenant(String tenantId, String type); + +// void saveBaowen(String baowen); + + +} diff --git a/src/main/java/com/lanhai/service/IFSurvConfigService.java b/src/main/java/com/lanhai/service/IFSurvConfigService.java new file mode 100644 index 0000000..e45e3d8 --- /dev/null +++ b/src/main/java/com/lanhai/service/IFSurvConfigService.java @@ -0,0 +1,21 @@ +package com.lanhai.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.lanhai.entity.FSurvConfig; + +/** + *

+ * 系统配置表 服务类 + *

+ * + * @author ${author} + * @since 2024-12-18 + */ +public interface IFSurvConfigService extends IService { + FSurvConfig getOneByTypeWithTenant(String tenantId, String type); + + + FSurvConfig getSurvConfigByType(String tenantId, String type); + + FSurvConfig getConfigById(String survConfigId); +} diff --git a/src/main/java/com/wangbin/service/IScEquZhibiaoService.java b/src/main/java/com/lanhai/service/IScEquZhibiaoService.java similarity index 59% rename from src/main/java/com/wangbin/service/IScEquZhibiaoService.java rename to src/main/java/com/lanhai/service/IScEquZhibiaoService.java index 65975ac..55a27e3 100644 --- a/src/main/java/com/wangbin/service/IScEquZhibiaoService.java +++ b/src/main/java/com/lanhai/service/IScEquZhibiaoService.java @@ -1,9 +1,10 @@ -package com.wangbin.service; +package com.lanhai.service; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; -import com.wangbin.entity.ScEquZhibiao; +import com.lanhai.entity.ScEquZhibiao; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -13,10 +14,13 @@ import java.util.Map; public interface IScEquZhibiaoService extends IService { + List getListByEquid(List equid); + List getListByEquid(String equid); Map getMap(String equid); + LinkedHashMap getAllZhiBiao(List zhibiaoList); } diff --git a/src/main/java/com/wangbin/service/ISurvAlertRecordService.java b/src/main/java/com/lanhai/service/ISurvAlertRecordService.java similarity index 53% rename from src/main/java/com/wangbin/service/ISurvAlertRecordService.java rename to src/main/java/com/lanhai/service/ISurvAlertRecordService.java index 5d3a4e1..9e5e313 100644 --- a/src/main/java/com/wangbin/service/ISurvAlertRecordService.java +++ b/src/main/java/com/lanhai/service/ISurvAlertRecordService.java @@ -1,7 +1,8 @@ -package com.wangbin.service; +package com.lanhai.service; -import com.wangbin.entity.SurvAlertRecord; +import com.lanhai.entity.SurvAlertRecord; import com.baomidou.mybatisplus.extension.service.IService; +import com.lanhai.entity.SurvDeviceDeploy; import java.util.Map; @@ -16,5 +17,5 @@ public interface ISurvAlertRecordService extends IService { void saveBaojing(Map baowenMap); - + void saveBaojingV2(Map baowenMap, SurvDeviceDeploy deploy,Map deviceDeployMap); } diff --git a/src/main/java/com/wangbin/service/ISurvDeviceDeployService.java b/src/main/java/com/lanhai/service/ISurvDeviceDeployService.java similarity index 60% rename from src/main/java/com/wangbin/service/ISurvDeviceDeployService.java rename to src/main/java/com/lanhai/service/ISurvDeviceDeployService.java index 298b9dc..a642278 100644 --- a/src/main/java/com/wangbin/service/ISurvDeviceDeployService.java +++ b/src/main/java/com/lanhai/service/ISurvDeviceDeployService.java @@ -1,8 +1,10 @@ -package com.wangbin.service; +package com.lanhai.service; -import com.wangbin.entity.SurvDeviceDeploy; +import com.lanhai.entity.SurvDeviceDeploy; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * 设备表 服务类 * @@ -15,5 +17,5 @@ public interface ISurvDeviceDeployService extends IService { SurvDeviceDeploy getOneByIpPort(String ip,String port); - + List getDeviceByType(List protocolCode,List deviceType); } diff --git a/src/main/java/com/wangbin/service/ISurvHisdataAirService.java b/src/main/java/com/lanhai/service/ISurvHisdataAirService.java similarity index 74% rename from src/main/java/com/wangbin/service/ISurvHisdataAirService.java rename to src/main/java/com/lanhai/service/ISurvHisdataAirService.java index dc04593..cfa7958 100644 --- a/src/main/java/com/wangbin/service/ISurvHisdataAirService.java +++ b/src/main/java/com/lanhai/service/ISurvHisdataAirService.java @@ -1,6 +1,6 @@ -package com.wangbin.service; +package com.lanhai.service; -import com.wangbin.entity.SurvHisdataAir; +import com.lanhai.entity.SurvHisdataAir; import com.baomidou.mybatisplus.extension.service.IService; /** diff --git a/src/main/java/com/wangbin/service/ISurvHisdataLivestockwaterErrorService.java b/src/main/java/com/lanhai/service/ISurvHisdataLivestockwaterErrorService.java similarity index 74% rename from src/main/java/com/wangbin/service/ISurvHisdataLivestockwaterErrorService.java rename to src/main/java/com/lanhai/service/ISurvHisdataLivestockwaterErrorService.java index f7ad4fc..598159c 100644 --- a/src/main/java/com/wangbin/service/ISurvHisdataLivestockwaterErrorService.java +++ b/src/main/java/com/lanhai/service/ISurvHisdataLivestockwaterErrorService.java @@ -1,6 +1,6 @@ -package com.wangbin.service; +package com.lanhai.service; -import com.wangbin.entity.SurvHisdataLivestockwaterError; +import com.lanhai.entity.SurvHisdataLivestockwaterError; import com.baomidou.mybatisplus.extension.service.IService; /** diff --git a/src/main/java/com/wangbin/service/ISurvHisdataLivestockwaterService.java b/src/main/java/com/lanhai/service/ISurvHisdataLivestockwaterService.java similarity index 68% rename from src/main/java/com/wangbin/service/ISurvHisdataLivestockwaterService.java rename to src/main/java/com/lanhai/service/ISurvHisdataLivestockwaterService.java index 499622e..697ea39 100644 --- a/src/main/java/com/wangbin/service/ISurvHisdataLivestockwaterService.java +++ b/src/main/java/com/lanhai/service/ISurvHisdataLivestockwaterService.java @@ -1,8 +1,8 @@ -package com.wangbin.service; +package com.lanhai.service; -import com.wangbin.entity.SurvHisdataLivestockwater; +import com.lanhai.entity.SurvHisdataLivestockwater; import com.baomidou.mybatisplus.extension.service.IService; -import com.wangbin.entity.SurvTransdataLivestockwater; +import com.lanhai.entity.SurvTransdataLivestockwater; /** *

diff --git a/src/main/java/com/wangbin/service/ISurvHisdataOrientwaterErrorService.java b/src/main/java/com/lanhai/service/ISurvHisdataOrientwaterErrorService.java similarity index 74% rename from src/main/java/com/wangbin/service/ISurvHisdataOrientwaterErrorService.java rename to src/main/java/com/lanhai/service/ISurvHisdataOrientwaterErrorService.java index 9b1dd7c..1b3f759 100644 --- a/src/main/java/com/wangbin/service/ISurvHisdataOrientwaterErrorService.java +++ b/src/main/java/com/lanhai/service/ISurvHisdataOrientwaterErrorService.java @@ -1,6 +1,6 @@ -package com.wangbin.service; +package com.lanhai.service; -import com.wangbin.entity.SurvHisdataOrientwaterError; +import com.lanhai.entity.SurvHisdataOrientwaterError; import com.baomidou.mybatisplus.extension.service.IService; /** diff --git a/src/main/java/com/wangbin/service/ISurvHisdataOrientwaterService.java b/src/main/java/com/lanhai/service/ISurvHisdataOrientwaterService.java similarity index 68% rename from src/main/java/com/wangbin/service/ISurvHisdataOrientwaterService.java rename to src/main/java/com/lanhai/service/ISurvHisdataOrientwaterService.java index cd29fe4..3d9d30a 100644 --- a/src/main/java/com/wangbin/service/ISurvHisdataOrientwaterService.java +++ b/src/main/java/com/lanhai/service/ISurvHisdataOrientwaterService.java @@ -1,8 +1,8 @@ -package com.wangbin.service; +package com.lanhai.service; -import com.wangbin.entity.SurvHisdataOrientwater; +import com.lanhai.entity.SurvHisdataOrientwater; import com.baomidou.mybatisplus.extension.service.IService; -import com.wangbin.entity.SurvTransdataOrientwater; +import com.lanhai.entity.SurvTransdataOrientwater; /** *

diff --git a/src/main/java/com/wangbin/service/ISurvHisdataPestlightService.java b/src/main/java/com/lanhai/service/ISurvHisdataPestlightService.java similarity index 73% rename from src/main/java/com/wangbin/service/ISurvHisdataPestlightService.java rename to src/main/java/com/lanhai/service/ISurvHisdataPestlightService.java index a85a8a5..6cb2e92 100644 --- a/src/main/java/com/wangbin/service/ISurvHisdataPestlightService.java +++ b/src/main/java/com/lanhai/service/ISurvHisdataPestlightService.java @@ -1,6 +1,6 @@ -package com.wangbin.service; +package com.lanhai.service; -import com.wangbin.entity.SurvHisdataPestlight; +import com.lanhai.entity.SurvHisdataPestlight; import com.baomidou.mybatisplus.extension.service.IService; /** diff --git a/src/main/java/com/wangbin/service/ISurvHisdataSoilService.java b/src/main/java/com/lanhai/service/ISurvHisdataSoilService.java similarity index 74% rename from src/main/java/com/wangbin/service/ISurvHisdataSoilService.java rename to src/main/java/com/lanhai/service/ISurvHisdataSoilService.java index 9a2e37d..5dc45f6 100644 --- a/src/main/java/com/wangbin/service/ISurvHisdataSoilService.java +++ b/src/main/java/com/lanhai/service/ISurvHisdataSoilService.java @@ -1,6 +1,6 @@ -package com.wangbin.service; +package com.lanhai.service; -import com.wangbin.entity.SurvHisdataSoil; +import com.lanhai.entity.SurvHisdataSoil; import com.baomidou.mybatisplus.extension.service.IService; /** diff --git a/src/main/java/com/wangbin/service/ISurvTransdataAirService.java b/src/main/java/com/lanhai/service/ISurvTransdataAirService.java similarity index 65% rename from src/main/java/com/wangbin/service/ISurvTransdataAirService.java rename to src/main/java/com/lanhai/service/ISurvTransdataAirService.java index bffdc86..dcd9e9d 100644 --- a/src/main/java/com/wangbin/service/ISurvTransdataAirService.java +++ b/src/main/java/com/lanhai/service/ISurvTransdataAirService.java @@ -1,6 +1,6 @@ -package com.wangbin.service; +package com.lanhai.service; -import com.wangbin.entity.SurvTransdataAir; +import com.lanhai.entity.SurvTransdataAir; import com.baomidou.mybatisplus.extension.service.IService; import java.util.Map; @@ -12,7 +12,7 @@ import java.util.Map; */ public interface ISurvTransdataAirService extends IService { - SurvTransdataAir getOneByDeviceCode(String deviceCode); + SurvTransdataAir getOneByDeviceCode(String deviceCode,String filterId); void saveBaowen(Map baowenMap); } diff --git a/src/main/java/com/wangbin/service/ISurvTransdataLivestockwaterService.java b/src/main/java/com/lanhai/service/ISurvTransdataLivestockwaterService.java similarity index 70% rename from src/main/java/com/wangbin/service/ISurvTransdataLivestockwaterService.java rename to src/main/java/com/lanhai/service/ISurvTransdataLivestockwaterService.java index e093be4..64adbfa 100644 --- a/src/main/java/com/wangbin/service/ISurvTransdataLivestockwaterService.java +++ b/src/main/java/com/lanhai/service/ISurvTransdataLivestockwaterService.java @@ -1,8 +1,8 @@ -package com.wangbin.service; +package com.lanhai.service; -import com.wangbin.entity.SurvTransdataLivestockwater; +import com.lanhai.entity.SurvTransdataLivestockwater; import com.baomidou.mybatisplus.extension.service.IService; -import com.wangbin.entity.SurvTransdataOrientwater; +import com.lanhai.entity.SurvTransdataOrientwater; /** * 畜禽水污染监测数据表 服务类 diff --git a/src/main/java/com/wangbin/service/ISurvTransdataOrientwaterService.java b/src/main/java/com/lanhai/service/ISurvTransdataOrientwaterService.java similarity index 80% rename from src/main/java/com/wangbin/service/ISurvTransdataOrientwaterService.java rename to src/main/java/com/lanhai/service/ISurvTransdataOrientwaterService.java index cee86bb..bcfbfd1 100644 --- a/src/main/java/com/wangbin/service/ISurvTransdataOrientwaterService.java +++ b/src/main/java/com/lanhai/service/ISurvTransdataOrientwaterService.java @@ -1,7 +1,7 @@ -package com.wangbin.service; +package com.lanhai.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.wangbin.entity.SurvTransdataOrientwater; +import com.lanhai.entity.SurvTransdataOrientwater; /** *

diff --git a/src/main/java/com/wangbin/service/ISurvTransdataPestlightService.java b/src/main/java/com/lanhai/service/ISurvTransdataPestlightService.java similarity index 81% rename from src/main/java/com/wangbin/service/ISurvTransdataPestlightService.java rename to src/main/java/com/lanhai/service/ISurvTransdataPestlightService.java index 49efff0..afe44cd 100644 --- a/src/main/java/com/wangbin/service/ISurvTransdataPestlightService.java +++ b/src/main/java/com/lanhai/service/ISurvTransdataPestlightService.java @@ -1,7 +1,7 @@ -package com.wangbin.service; +package com.lanhai.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.wangbin.entity.SurvTransdataPestlight; +import com.lanhai.entity.SurvTransdataPestlight; import java.util.Map; diff --git a/src/main/java/com/lanhai/service/ISurvTransdataSoilService.java b/src/main/java/com/lanhai/service/ISurvTransdataSoilService.java new file mode 100644 index 0000000..40b0b6e --- /dev/null +++ b/src/main/java/com/lanhai/service/ISurvTransdataSoilService.java @@ -0,0 +1,26 @@ +package com.lanhai.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.lanhai.entity.SurvDeviceDeploy; +import com.lanhai.entity.SurvTransdataSoil; + +import java.util.Map; + +/** + *

+ * 土壤污染监测数据 服务类 + *

+ * + */ +public interface ISurvTransdataSoilService extends IService { + + + + SurvTransdataSoil getOneByDeviceCode(String deviceCode,String filterId); + + void saveBaowen(Map baowenMap, SurvDeviceDeploy deploy, Map deviceDeployMap); + + + void saveWaterBaowen(Map baowenMap, SurvDeviceDeploy deploy,Map deviceDeployMap); + +} diff --git a/src/main/java/com/wangbin/service/Impl/CommonServiceImpl.java b/src/main/java/com/lanhai/service/Impl/CommonServiceImpl.java similarity index 75% rename from src/main/java/com/wangbin/service/Impl/CommonServiceImpl.java rename to src/main/java/com/lanhai/service/Impl/CommonServiceImpl.java index eb5919a..f518131 100644 --- a/src/main/java/com/wangbin/service/Impl/CommonServiceImpl.java +++ b/src/main/java/com/lanhai/service/Impl/CommonServiceImpl.java @@ -1,7 +1,12 @@ -package com.wangbin.service.Impl; +package com.lanhai.service.Impl; -import com.wangbin.service.*; +import com.lanhai.constant.IotConstants; +import com.lanhai.entity.FSurvConfig; +import com.lanhai.service.*; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -11,6 +16,10 @@ import org.springframework.transaction.annotation.Transactional; @Service public class CommonServiceImpl implements ICommonService { + + @Autowired + @Lazy + private FSurvConfigServiceImpl configService; // // @Autowired // private ISurvTransdataAirService transdataAirService; @@ -56,7 +65,14 @@ public class CommonServiceImpl implements ICommonService { // } - +@Override +@Cacheable(value = IotConstants.IOT_SURVCONFIG_CACHE,key = "#tenantId+':'+#type", unless = "#result == null ") +public FSurvConfig getCacheTenant(String tenantId, String type) { + if(StringUtils.isBlank(tenantId)){ + tenantId = "0"; + } + return configService.getSurvConfigByType(tenantId,type); +} } diff --git a/src/main/java/com/lanhai/service/Impl/FSurvConfigServiceImpl.java b/src/main/java/com/lanhai/service/Impl/FSurvConfigServiceImpl.java new file mode 100644 index 0000000..09eabff --- /dev/null +++ b/src/main/java/com/lanhai/service/Impl/FSurvConfigServiceImpl.java @@ -0,0 +1,51 @@ +package com.lanhai.service.Impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.lanhai.constant.IotConstants; +import com.lanhai.entity.FSurvConfig; +import com.lanhai.mapper.FSurvConfigMapper; +import com.lanhai.service.IFSurvConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.context.annotation.Lazy; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +import java.util.concurrent.TimeUnit; + +/** + *

+ * 系统配置表 服务实现类 + *

+ * + * @author ${author} + * @since 2024-12-18 + */ +@Service +public class FSurvConfigServiceImpl extends ServiceImpl implements IFSurvConfigService { + @Autowired + private RedisTemplate redisTemplate; + @Autowired + @Lazy + private CommonServiceImpl commonService; + + @Override + public FSurvConfig getOneByTypeWithTenant(String tenantId, String type) { + FSurvConfig fSurvConfig = commonService.getCacheTenant(tenantId, type); + String cacheHead = IotConstants.IOT_SURVCONFIG_CACHE+"::%s:%s"; + redisTemplate.expire(String.format(cacheHead,tenantId,type),60, TimeUnit.MINUTES);//设置过期时间 + return fSurvConfig; + } + + @Override + public FSurvConfig getSurvConfigByType(String tenantId, String type) { + return baseMapper.getOneByTypeWithTenant(tenantId, type); + } + + @Override + @Cacheable(value = IotConstants.IOT_SURVCONFIG_CACHE, key = "#survConfigId", unless = "#result == null ") + public FSurvConfig getConfigById(String survConfigId) { + return baseMapper.selectById(survConfigId); + } + +} diff --git a/src/main/java/com/wangbin/service/Impl/ScEquZhibiaoServiceImpl.java b/src/main/java/com/lanhai/service/Impl/ScEquZhibiaoServiceImpl.java similarity index 52% rename from src/main/java/com/wangbin/service/Impl/ScEquZhibiaoServiceImpl.java rename to src/main/java/com/lanhai/service/Impl/ScEquZhibiaoServiceImpl.java index fd3c456..4022f7b 100644 --- a/src/main/java/com/wangbin/service/Impl/ScEquZhibiaoServiceImpl.java +++ b/src/main/java/com/lanhai/service/Impl/ScEquZhibiaoServiceImpl.java @@ -1,15 +1,16 @@ -package com.wangbin.service.Impl; +package com.lanhai.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 com.lanhai.constant.CommonConstant; +import com.lanhai.entity.ScEquZhibiao; +import com.lanhai.mapper.ScEquZhibiaoMapper; +import com.lanhai.service.IScEquZhibiaoService; import org.springframework.stereotype.Service; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -19,6 +20,15 @@ import java.util.Map; @Service public class ScEquZhibiaoServiceImpl extends ServiceImpl implements IScEquZhibiaoService { + @Override + public List getListByEquid(List equid) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.in("equ_id",equid) + .isNotNull("code") + .ne("code","") + .orderByAsc("code"); + return this.list(queryWrapper); + } @Override public List getListByEquid(String equid) { @@ -52,4 +62,28 @@ public class ScEquZhibiaoServiceImpl extends ServiceImpl getAllZhiBiao(List zhibiaoList) { + LinkedHashMap map = new LinkedHashMap<>(); + 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()); + json.put("deployId",i.getEquId()); + json.put("entityField",i.getEntityField()); + 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/lanhai/service/Impl/SurvAlertRecordServiceImpl.java b/src/main/java/com/lanhai/service/Impl/SurvAlertRecordServiceImpl.java new file mode 100644 index 0000000..022f370 --- /dev/null +++ b/src/main/java/com/lanhai/service/Impl/SurvAlertRecordServiceImpl.java @@ -0,0 +1,253 @@ +package com.lanhai.service.Impl; + +import cn.hutool.core.date.DateUtil; +//import cn.hutool.extra.mail.MailUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.lanhai.constant.CommonConstant; +import com.lanhai.constant.DeviceReadConstants; +import com.lanhai.entity.SurvAlertRecord; +import com.lanhai.entity.SurvDeviceDeploy; +import com.lanhai.mapper.SurvAlertRecordMapper; +import com.lanhai.service.IScEquZhibiaoService; +import com.lanhai.service.ISurvAlertRecordService; +import com.lanhai.service.ISurvDeviceDeployService; +import com.lanhai.util.DataUtil; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + *

+ * 预警记录表 服务实现类 + *

+ * + */ +@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("lanhai"); + 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); + } + } + } + + @Override + public void saveBaojingV2(Map baowenMap, SurvDeviceDeploy deviceDeploy,Map deviceDeployMap) { + //处理报警情况 + String mn = baowenMap.get("mn"); + String DataTime = baowenMap.get("DataTime"); + if(deviceDeploy != null){ + LinkedHashMap zhibiaomap = zhibiaoService.getAllZhiBiao(deviceDeploy.getScEquZhibiaoList()); + StringBuilder sb = new StringBuilder(); + JSONArray jsonarr = new JSONArray(); + String itemName = ""; + String itemValue =""; + String zhibiao = ""; + String readStatus = ""; + for (String key : zhibiaomap.keySet()) { + //获取报文中某个指标的数据 + String baowenVal = baowenMap.get(key); + //获取某个指标的阈值 + JSONObject jsonObject = zhibiaomap.get(key); + Set set = jsonObject.keySet(); + Boolean hasGao = true; + Boolean hasDi= true; + + if(!jsonObject.containsKey(CommonConstant.VAL_HEIGHT)) {//没有高阈值 + hasGao = false; + } + if(!jsonObject.containsKey(CommonConstant.VAL_LOW)) {//没有低阈值 + hasDi= false; + } + + for(String str:set){ + if(!str.equals(CommonConstant.VAL_LOW)&&!str.equals(CommonConstant.VAL_HEIGHT)){ + continue; + } + 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.getOrDefault(CommonConstant.VAL_HEIGHT,"无")) + .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("deployId",jsonObject.get("deployId")); + json.put("entityField",jsonObject.get("entityField")); + json.put(CommonConstant.VAL_LOW,yuzhi); + json.put(CommonConstant.VAL_HEIGHT,jsonObject.getOrDefault(CommonConstant.VAL_HEIGHT,"*")); + json.put("readStatus", DeviceReadConstants.READ_TOO_LOW); + json.put("email",jsonObject.getString("email")); + jsonarr.add(json); + }else if(str.equals(CommonConstant.VAL_HEIGHT) && DataUtil.bijiao(baowenVal,yuzhi) == 1){ + sb.append("监测数据名称:"+jsonObject.get("name")) + .append(",监测数据值:"+baowenVal) + .append(",低阈值:"+jsonObject.getOrDefault(CommonConstant.VAL_LOW,"无")) + .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("deployId",jsonObject.get("deployId")); + json.put("entityField",jsonObject.get("entityField")); + json.put("val",baowenVal); + json.put(CommonConstant.VAL_LOW,jsonObject.getOrDefault(CommonConstant.VAL_LOW,"*")); + json.put(CommonConstant.VAL_HEIGHT,yuzhi); + json.put("readStatus",DeviceReadConstants.READ_TOO_HIGH); + json.put("email",jsonObject.getString("email")); + jsonarr.add(json); + } + } + } + +// List mails = new ArrayList(); +// if(StringUtils.isNotBlank(sb.toString()) || jsonarr.size()>0){ +// List saveList = new ArrayList<>(); +// for (int i=0;i0){ +// saveBatch(saveList); +// } +// if(!mails.isEmpty()){ +// for (VOEmailContent mail : mails) { +// log.error("======xxxxxxxxxxxxxxxxxxxxxxxxxx====预警触发发送邮件至:"+mail.getMailBox()); +// if(mail.getMailBox().contains(",")){ +// String[] mailArr = mail.getMailBox().split(","); +// for (String s : mailArr) { +// if(StringUtils.isNotBlank(s)){ +// MailUtil.send(s.trim(),mail.getSubject(),mail.getContent(),false); +// } +// } +// }else{ +// +// MailUtil.send(mail.getMailBox().trim(),mail.getSubject(),mail.getContent(),false); +// } +// } +// } +// +// } + } + } +} diff --git a/src/main/java/com/wangbin/service/Impl/SurvDeviceDeployServiceImpl.java b/src/main/java/com/lanhai/service/Impl/SurvDeviceDeployServiceImpl.java similarity index 70% rename from src/main/java/com/wangbin/service/Impl/SurvDeviceDeployServiceImpl.java rename to src/main/java/com/lanhai/service/Impl/SurvDeviceDeployServiceImpl.java index e664cb2..bc30317 100644 --- a/src/main/java/com/wangbin/service/Impl/SurvDeviceDeployServiceImpl.java +++ b/src/main/java/com/lanhai/service/Impl/SurvDeviceDeployServiceImpl.java @@ -1,12 +1,14 @@ -package com.wangbin.service.Impl; +package com.lanhai.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 com.lanhai.entity.SurvDeviceDeploy; +import com.lanhai.mapper.SurvDeviceDeployMapper; +import com.lanhai.service.ISurvDeviceDeployService; import org.springframework.stereotype.Service; +import java.util.List; + /** * 设备表 服务实现类 * @@ -31,4 +33,9 @@ public class SurvDeviceDeployServiceImpl extends ServiceImpl getDeviceByType(List protocolCode, List deviceType) { + return baseMapper.getProtocolDeviceType(protocolCode,deviceType); + } } diff --git a/src/main/java/com/wangbin/service/Impl/SurvHisdataAirServiceImpl.java b/src/main/java/com/lanhai/service/Impl/SurvHisdataAirServiceImpl.java similarity index 65% rename from src/main/java/com/wangbin/service/Impl/SurvHisdataAirServiceImpl.java rename to src/main/java/com/lanhai/service/Impl/SurvHisdataAirServiceImpl.java index f598ae4..4272872 100644 --- a/src/main/java/com/wangbin/service/Impl/SurvHisdataAirServiceImpl.java +++ b/src/main/java/com/lanhai/service/Impl/SurvHisdataAirServiceImpl.java @@ -1,8 +1,8 @@ -package com.wangbin.service.Impl; +package com.lanhai.service.Impl; -import com.wangbin.entity.SurvHisdataAir; -import com.wangbin.mapper.SurvHisdataAirMapper; -import com.wangbin.service.ISurvHisdataAirService; +import com.lanhai.entity.SurvHisdataAir; +import com.lanhai.mapper.SurvHisdataAirMapper; +import com.lanhai.service.ISurvHisdataAirService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/wangbin/service/Impl/SurvHisdataLivestockwaterErrorServiceImpl.java b/src/main/java/com/lanhai/service/Impl/SurvHisdataLivestockwaterErrorServiceImpl.java similarity index 64% rename from src/main/java/com/wangbin/service/Impl/SurvHisdataLivestockwaterErrorServiceImpl.java rename to src/main/java/com/lanhai/service/Impl/SurvHisdataLivestockwaterErrorServiceImpl.java index 7cbae93..472e0cc 100644 --- a/src/main/java/com/wangbin/service/Impl/SurvHisdataLivestockwaterErrorServiceImpl.java +++ b/src/main/java/com/lanhai/service/Impl/SurvHisdataLivestockwaterErrorServiceImpl.java @@ -1,8 +1,8 @@ -package com.wangbin.service.Impl; +package com.lanhai.service.Impl; -import com.wangbin.entity.SurvHisdataLivestockwaterError; -import com.wangbin.mapper.SurvHisdataLivestockwaterErrorMapper; -import com.wangbin.service.ISurvHisdataLivestockwaterErrorService; +import com.lanhai.entity.SurvHisdataLivestockwaterError; +import com.lanhai.mapper.SurvHisdataLivestockwaterErrorMapper; +import com.lanhai.service.ISurvHisdataLivestockwaterErrorService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/wangbin/service/Impl/SurvHisdataLivestockwaterServiceImpl.java b/src/main/java/com/lanhai/service/Impl/SurvHisdataLivestockwaterServiceImpl.java similarity index 92% rename from src/main/java/com/wangbin/service/Impl/SurvHisdataLivestockwaterServiceImpl.java rename to src/main/java/com/lanhai/service/Impl/SurvHisdataLivestockwaterServiceImpl.java index 05c7118..915021c 100644 --- a/src/main/java/com/wangbin/service/Impl/SurvHisdataLivestockwaterServiceImpl.java +++ b/src/main/java/com/lanhai/service/Impl/SurvHisdataLivestockwaterServiceImpl.java @@ -1,15 +1,15 @@ -package com.wangbin.service.Impl; +package com.lanhai.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.lanhai.constant.PollutionConstants; +import com.lanhai.entity.SurvHisdataLivestockwater; +import com.lanhai.entity.SurvTransdataLivestockwater; +import com.lanhai.mapper.SurvHisdataLivestockwaterMapper; +import com.lanhai.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 com.lanhai.util.BigDecimalRandomAdjuster; +import com.lanhai.util.DateUtils; +import com.lanhai.util.SpringBeanUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/main/java/com/wangbin/service/Impl/SurvHisdataOrientwaterErrorServiceImpl.java b/src/main/java/com/lanhai/service/Impl/SurvHisdataOrientwaterErrorServiceImpl.java similarity index 65% rename from src/main/java/com/wangbin/service/Impl/SurvHisdataOrientwaterErrorServiceImpl.java rename to src/main/java/com/lanhai/service/Impl/SurvHisdataOrientwaterErrorServiceImpl.java index 6a6dc09..b00658f 100644 --- a/src/main/java/com/wangbin/service/Impl/SurvHisdataOrientwaterErrorServiceImpl.java +++ b/src/main/java/com/lanhai/service/Impl/SurvHisdataOrientwaterErrorServiceImpl.java @@ -1,8 +1,8 @@ -package com.wangbin.service.Impl; +package com.lanhai.service.Impl; -import com.wangbin.entity.SurvHisdataOrientwaterError; -import com.wangbin.mapper.SurvHisdataOrientwaterErrorMapper; -import com.wangbin.service.ISurvHisdataOrientwaterErrorService; +import com.lanhai.entity.SurvHisdataOrientwaterError; +import com.lanhai.mapper.SurvHisdataOrientwaterErrorMapper; +import com.lanhai.service.ISurvHisdataOrientwaterErrorService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/wangbin/service/Impl/SurvHisdataOrientwaterServiceImpl.java b/src/main/java/com/lanhai/service/Impl/SurvHisdataOrientwaterServiceImpl.java similarity index 91% rename from src/main/java/com/wangbin/service/Impl/SurvHisdataOrientwaterServiceImpl.java rename to src/main/java/com/lanhai/service/Impl/SurvHisdataOrientwaterServiceImpl.java index 79cd2df..5b475c6 100644 --- a/src/main/java/com/wangbin/service/Impl/SurvHisdataOrientwaterServiceImpl.java +++ b/src/main/java/com/lanhai/service/Impl/SurvHisdataOrientwaterServiceImpl.java @@ -1,17 +1,17 @@ -package com.wangbin.service.Impl; +package com.lanhai.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.lanhai.constant.PollutionConstants; +import com.lanhai.entity.SurvHisdataOrientwater; +import com.lanhai.entity.SurvTransdataOrientwater; +import com.lanhai.mapper.SurvHisdataOrientwaterMapper; +import com.lanhai.mapper.SurvTransdataOrientwaterMapper; +import com.lanhai.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 com.lanhai.service.ISurvTransdataOrientwaterService; +import com.lanhai.util.BigDecimalRandomAdjuster; +import com.lanhai.util.DateUtils; +import com.lanhai.util.SpringBeanUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/main/java/com/wangbin/service/Impl/SurvHisdataPestlightServiceImpl.java b/src/main/java/com/lanhai/service/Impl/SurvHisdataPestlightServiceImpl.java similarity index 64% rename from src/main/java/com/wangbin/service/Impl/SurvHisdataPestlightServiceImpl.java rename to src/main/java/com/lanhai/service/Impl/SurvHisdataPestlightServiceImpl.java index 6aecdca..1b8cbce 100644 --- a/src/main/java/com/wangbin/service/Impl/SurvHisdataPestlightServiceImpl.java +++ b/src/main/java/com/lanhai/service/Impl/SurvHisdataPestlightServiceImpl.java @@ -1,8 +1,8 @@ -package com.wangbin.service.Impl; +package com.lanhai.service.Impl; -import com.wangbin.entity.SurvHisdataPestlight; -import com.wangbin.mapper.SurvHisdataPestlightMapper; -import com.wangbin.service.ISurvHisdataPestlightService; +import com.lanhai.entity.SurvHisdataPestlight; +import com.lanhai.mapper.SurvHisdataPestlightMapper; +import com.lanhai.service.ISurvHisdataPestlightService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/wangbin/service/Impl/SurvHisdataSoilServiceImpl.java b/src/main/java/com/lanhai/service/Impl/SurvHisdataSoilServiceImpl.java similarity index 65% rename from src/main/java/com/wangbin/service/Impl/SurvHisdataSoilServiceImpl.java rename to src/main/java/com/lanhai/service/Impl/SurvHisdataSoilServiceImpl.java index a4f0cde..f579d2d 100644 --- a/src/main/java/com/wangbin/service/Impl/SurvHisdataSoilServiceImpl.java +++ b/src/main/java/com/lanhai/service/Impl/SurvHisdataSoilServiceImpl.java @@ -1,8 +1,8 @@ -package com.wangbin.service.Impl; +package com.lanhai.service.Impl; -import com.wangbin.entity.SurvHisdataSoil; -import com.wangbin.mapper.SurvHisdataSoilMapper; -import com.wangbin.service.ISurvHisdataSoilService; +import com.lanhai.entity.SurvHisdataSoil; +import com.lanhai.mapper.SurvHisdataSoilMapper; +import com.lanhai.service.ISurvHisdataSoilService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/wangbin/service/Impl/SurvTransdataAirServiceImpl.java b/src/main/java/com/lanhai/service/Impl/SurvTransdataAirServiceImpl.java similarity index 91% rename from src/main/java/com/wangbin/service/Impl/SurvTransdataAirServiceImpl.java rename to src/main/java/com/lanhai/service/Impl/SurvTransdataAirServiceImpl.java index b1253ab..1b2a832 100644 --- a/src/main/java/com/wangbin/service/Impl/SurvTransdataAirServiceImpl.java +++ b/src/main/java/com/lanhai/service/Impl/SurvTransdataAirServiceImpl.java @@ -1,15 +1,15 @@ -package com.wangbin.service.Impl; +package com.lanhai.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 com.lanhai.entity.SurvDeviceDeploy; +import com.lanhai.entity.SurvHisdataAir; +import com.lanhai.entity.SurvTransdataAir; +import com.lanhai.mapper.SurvTransdataAirMapper; +import com.lanhai.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -37,7 +37,7 @@ public class SurvTransdataAirServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper(); queryWrapper.eq("DEVICE_CODE",deviceCode).last("limit 1"); @@ -52,7 +52,7 @@ public class SurvTransdataAirServiceImpl extends ServiceImpl implements ISurvTransdataSoilService { + + + @Autowired + private ISurvHisdataSoilService hisdataSoilService; + @Autowired + private ISurvAlertRecordService alertRecordService; + @Autowired + private ISurvDeviceDeployService deviceDeployService; + @Autowired + private ISurvTransdataAirService transdataAirService; + @Autowired + private ISurvHisdataAirService hisdataAirService; + + + @Override + public SurvTransdataSoil getOneByDeviceCode(String deviceCode,String filterId) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE",deviceCode).last("limit 1"); + return getOne(queryWrapper); + } + + /** + *辛普惠 土壤 + */ + @Transactional + @Override + public void saveBaowen(Map baowenMap, SurvDeviceDeploy deploy,Map deviceDeployMap) { + + String mn = baowenMap.get("mn"); + String DataTime = baowenMap.get("DataTime"); +// SurvDeviceDeploy deploy = deviceDeployService.getOneByCode(mn); + //保存或者更新实时表 + SurvTransdataSoil soil = getOneByDeviceCode(mn,null); + Date kDateTime = null; + Date nowTime = new Date(); + if(soil == null){ + soil = new SurvTransdataSoil(); + soil.setCreatedBy("task");//创建人 + soil.setCreateTime(nowTime);//创建时间 + }else{ + soil.setUpdatedBy("task");//创建人 + soil.setUpdatedTime(nowTime);//创建时间 + kDateTime = soil.getDataDateTime(); + } + + +// soil.setDataSoilTemp(baowenMap.get("e1"));//土壤温度 +// soil.setDataSoilWet(baowenMap.get("e2"));//土壤湿度 +// soil.setDataSoilDdl(baowenMap.get("e3"));//电导率 +// +// soil.setDataSoilPh(baowenMap.get("e8"));//ph +// soil.setDataSoilNion(baowenMap.get("e9"));//氮离子 +// soil.setDataSoilPion(baowenMap.get("e10"));//磷离子 +// soil.setDataSoilKion(baowenMap.get("e11"));//钾离子 +// soil.setDataSoilNhion(baowenMap.get("e12"));//土壤铵离子 +// soil.setDataSoilNoion(baowenMap.get("e13"));//土壤硝酸根离子 + int soilCount = 0; + String formatSoilTime = kDateTime!=null?DateUtil.format(kDateTime,"yyyy-MM-dd HH:mm:ss"):""; + if(!formatSoilTime.equals(DataTime)){ + if(!deploy.getScEquZhibiaoList().isEmpty()){ + for (ScEquZhibiao scEquZhibiao : deploy.getScEquZhibiaoList()) { + boolean isSuccess = TUtil.setFieldValue(soil,scEquZhibiao.getEntityField(),baowenMap.get(scEquZhibiao.getCode())); + if(isSuccess){ + soilCount++; + } + } + } + } + +// System.out.println("nSoilCheck==============:"+soilCount); + if(soilCount > 0){//只有数据有效时才入库 + soil.setDataDateTime(DateUtil.parse(DataTime));//数据时间 + soil.setDataGatherType("realTime");//数据类型-realTime=实时,dayTime=日数据,month=月数据,year=年数据 + soil.setDeviceCode(mn);//设备编号 + soil.setTenantId(deploy.getTenantId()); + + SurvDeviceDeploy survDeviceDeploy = deviceDeployMap.get(deploy.getDeployCode()+"_"+ DeviceDeployEnum.SURV_SOIL.getType()); + soil.setDeployId(survDeviceDeploy!=null?survDeviceDeploy.getId():null); + saveOrUpdate(soil); + //更新设备的上次更新时间 + deviceDeployService.update(new LambdaUpdateWrapper() + .eq(SurvDeviceDeploy::getDeployCode, deploy.getDeployCode()) + .set(SurvDeviceDeploy::getLastsyncTime, nowTime)); + + //保存土壤历史表 + 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()); + hisdataSoil.setCreateTime(nowTime); + hisdataSoilService.save(hisdataSoil); + }else{ + String dateStr = kDateTime!=null?DateUtil.format(kDateTime,"yyyy-MM-dd HH:mm:ss"):""; + log.error("****** 跳过,数据日期为:{},已存在于土壤历史表******",dateStr); + } + } + + + + + + SurvTransdataAir air = transdataAirService.getOneByDeviceCode(mn,null); + Date airkDateTime = null; + if(air == null){ + air = new SurvTransdataAir(); + air.setCreatedBy("task");//创建人 + air.setCreateTime(nowTime);//创建时间 + }else{ + air.setUpdatedBy("task");//创建人 + air.setUpdatedTime(nowTime);//创建时间 + airkDateTime = air.getDataDateTime(); + } + +// air.setDataAirTemp(baowenMap.get("e4"));//温度 +// air.setDataAirWet(baowenMap.get("e5"));//湿度 +// air.setDataSunRate(baowenMap.get("e6"));//照度 +// air.setDataAirCod(baowenMap.get("e7"));//二氧化碳 +// air.setDataLeafTemp(baowenMap.get("e14"));//叶面温度 +// air.setDataLeafWet(baowenMap.get("e15"));//叶面湿度 + int airCount = 0; + String formatAirTime = airkDateTime!=null?DateUtil.format(airkDateTime,"yyyy-MM-dd HH:mm:ss"):""; + if(!formatAirTime.equals(DataTime)){//数据时间不同才进行入库 + if(!deploy.getScEquZhibiaoList().isEmpty()){ + for (ScEquZhibiao scEquZhibiao : deploy.getScEquZhibiaoList()) { +// System.out.println(baowenMap.get(scEquZhibiao.getCode())+"============="+scEquZhibiao.getCode()+"=========airCheck=============="+scEquZhibiao.getEquId()+"==========="+scEquZhibiao.getEntityField()); + boolean isSuccess = TUtil.setFieldValue(air,scEquZhibiao.getEntityField(),baowenMap.get(scEquZhibiao.getCode())); + if(isSuccess){ + airCount++; + } + } + } + } +// System.out.println("nairCheck==============:"+airCount); + if(airCount > 0) {//只有数据有效时才入库 + air.setDataDateTime(DateUtil.parse(DataTime));//数据时间 + air.setDataGatherType("realTime");//数据类型-realTime=实时,dayTime=日数据,month=月数据,year=年数据 + air.setDeviceCode(mn);//设备编号 + air.setTenantId(deploy.getTenantId()); + + SurvDeviceDeploy survDeviceDeploy = deviceDeployMap.get(deploy.getDeployCode()+"_"+ DeviceDeployEnum.SURV_AIR.getType()); + air.setDeployId(survDeviceDeploy!=null?survDeviceDeploy.getId():null); + transdataAirService.saveOrUpdate(air); + //更新设备的上次更新时间 + deviceDeployService.update(new LambdaUpdateWrapper() + .eq(SurvDeviceDeploy::getDeployCode, deploy.getDeployCode())//只能根据设备号更新,因为存在单个设备同时对应土壤空气的情况 + .set(SurvDeviceDeploy::getLastsyncTime, nowTime)); + + //保存历史表 + if(airkDateTime == null || !DataTime.equals(formatAirTime)){ + SurvHisdataAir hisdataAir = new SurvHisdataAir(); + BeanUtil.copyProperties(air,hisdataAir); + hisdataAir.setId(IdUtil.getSnowflakeNextIdStr()); + hisdataAir.setCreateTime(new Date()); + log.error("checkAirHis ============ "+hisdataAir.getId()); + hisdataAirService.save(hisdataAir); + }else{ + log.error("****** 跳过,数据日期为:{},已存在于空气历史表******",formatAirTime); + } + } + + //处理报警 + if(deploy != null){ + //暂时不保存报文了 + alertRecordService.saveBaojingV2(baowenMap,deploy,deviceDeployMap); + } + } + + @Override + public void saveWaterBaowen(Map baowenMap, SurvDeviceDeploy deploy,Map deviceDeployMap) { + String mn = baowenMap.get("mn"); + String DataTime = baowenMap.get("DataTime"); +// SurvDeviceDeploy deploy = deviceDeployService.getOneByCode(mn); + //保存或者更新实时表 + SurvTransdataSoil soil = getOneByDeviceCode(mn,null); + Date nowTime = new Date(); + Date kDateTime = null; + if(soil == null){ + soil = new SurvTransdataSoil(); + soil.setCreatedBy("task");//创建人 + soil.setCreateTime(nowTime);//创建时间 + }else{ + soil.setUpdatedBy("task");//创建人 + soil.setUpdatedTime(nowTime);//创建时间 + kDateTime = soil.getDataDateTime(); + } + + +// soil.setDataSoilPh(baowenMap.get("e1"));//ph +// soil.setDataSoilTemp(baowenMap.get("e2"));//水温 +// soil.setDataSoilDdl(baowenMap.get("e3"));//电导率 +// +// soil.setDataSoilKion(baowenMap.get("e4"));//钾根 +// soil.setDataSoilNhion(baowenMap.get("e5"));//铵根 +// soil.setDataSoilNoion(baowenMap.get("e6"));//硝酸根 + + int waterCount = 0; + String formatKTime = kDateTime!=null?DateUtil.format(kDateTime,"yyyy-MM-dd HH:mm:ss"):""; + if(!formatKTime.equals(DataTime)){ + if(!deploy.getScEquZhibiaoList().isEmpty()){ + for (ScEquZhibiao scEquZhibiao : deploy.getScEquZhibiaoList()) { + boolean isSuccess = TUtil.setFieldValue(soil,scEquZhibiao.getEntityField(),baowenMap.get(scEquZhibiao.getCode())); + if(isSuccess){ + waterCount++; + } + } + } + } +// System.out.println("waterSoilCheck==============:"+waterCount); + if(waterCount >0 ){ + soil.setDataDateTime(DateUtil.parse(DataTime));//数据时间 + soil.setDataGatherType("realTime");//数据类型-realTime=实时,dayTime=日数据,month=月数据,year=年数据 + soil.setDeviceCode(mn);//设备编号 + soil.setTenantId(deploy.getTenantId()); + + SurvDeviceDeploy survDeviceDeploy = deviceDeployMap.get(deploy.getDeployCode()+"_"+ DeviceDeployEnum.WATER_QULITY.getType()); + soil.setDeployId(survDeviceDeploy!=null?survDeviceDeploy.getId():null); + saveOrUpdate(soil); + + + //更新设备的上次更新时间 + deviceDeployService.update(new LambdaUpdateWrapper() + .eq(SurvDeviceDeploy::getDeployCode, deploy.getDeployCode()) + .set(SurvDeviceDeploy::getLastsyncTime, nowTime)); + + //保存土壤历史表 + 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()); + hisdataSoil.setCreateTime(nowTime); + hisdataSoilService.save(hisdataSoil); + }else{ + String dateStr = kDateTime!=null?DateUtil.format(kDateTime,"yyyy-MM-dd HH:mm:ss"):""; + log.error("****** 跳过,数据日期为:{},已存在于土壤历史表******",dateStr); + } + } + + + + SurvTransdataAir air = transdataAirService.getOneByDeviceCode(mn,null); + Date airkDateTime = null; + if(air == null){ + air = new SurvTransdataAir(); + air.setCreatedBy("task");//创建人 + air.setCreateTime(nowTime);//创建时间 + }else{ + air.setUpdatedBy("task");//创建人 + air.setUpdatedTime(nowTime);//创建时间 + airkDateTime = air.getDataDateTime(); + } + +// air.setDataAirTemp(baowenMap.get("e7"));//大气温度 +// air.setDataAirWet(baowenMap.get("e8"));//大气湿度 +// air.setDataSunRate(baowenMap.get("e9"));//照度 +// air.setDataAirCod(baowenMap.get("e10"));//二氧化碳 +// air.setDataLeafTemp(baowenMap.get("e11"));//叶面温度 +// air.setDataLeafWet(baowenMap.get("e12"));//叶面湿度 + + int airCount = 0; + String formatAirTime = airkDateTime!=null?DateUtil.format(airkDateTime,"yyyy-MM-dd HH:mm:ss"):""; + if(!formatAirTime.equals(DataTime)){ + if(!deploy.getScEquZhibiaoList().isEmpty()){ + for (ScEquZhibiao scEquZhibiao : deploy.getScEquZhibiaoList()) { + boolean isSuccess = TUtil.setFieldValue(air,scEquZhibiao.getEntityField(),baowenMap.get(scEquZhibiao.getCode())); + if(isSuccess){ + airCount++; + } + } + } + } + +// System.out.println("waterAirCheck==============:"+airCount); + if(airCount > 0) { + air.setDataDateTime(DateUtil.parse(DataTime));//数据时间 + air.setDataGatherType("realTime");//数据类型-realTime=实时,dayTime=日数据,month=月数据,year=年数据 + air.setDeviceCode(mn);//设备编号 + air.setTenantId(deploy.getTenantId()); + SurvDeviceDeploy survDeviceDeploy = deviceDeployMap.get(deploy.getDeployCode()+"_"+ DeviceDeployEnum.SURV_AIR.getType()); + air.setDeployId(survDeviceDeploy!=null?survDeviceDeploy.getId():null); + transdataAirService.saveOrUpdate(air); + + + //更新设备的上次更新时间 + deviceDeployService.update(new LambdaUpdateWrapper() + .eq(SurvDeviceDeploy::getDeployCode, deploy.getDeployCode()) + .set(SurvDeviceDeploy::getLastsyncTime, nowTime)); + + //保存历史表 + if(airkDateTime == null || !DataTime.equals(DateUtil.format(airkDateTime,"yyyy-MM-dd HH:mm:ss"))){ + SurvHisdataAir hisdataAir = new SurvHisdataAir(); + BeanUtil.copyProperties(air,hisdataAir); + hisdataAir.setId(IdUtil.getSnowflakeNextIdStr()); + hisdataAir.setCreateTime(nowTime); + hisdataAirService.save(hisdataAir); + }else{ + String dateStr = airkDateTime!=null?DateUtil.format(airkDateTime,"yyyy-MM-dd HH:mm:ss"):""; + log.error("****** 跳过,数据日期为:{},已存在于空气历史表******",dateStr); + } + } + + + //处理报警 + if(deploy != null){ + //暂时不保存报文了 + alertRecordService.saveBaojingV2(baowenMap,deploy,deviceDeployMap); + } + } +} diff --git a/src/main/java/com/wangbin/task/DataExamineTask.java b/src/main/java/com/lanhai/task/DataExamineTask.java similarity index 92% rename from src/main/java/com/wangbin/task/DataExamineTask.java rename to src/main/java/com/lanhai/task/DataExamineTask.java index cdf596a..a999165 100644 --- a/src/main/java/com/wangbin/task/DataExamineTask.java +++ b/src/main/java/com/lanhai/task/DataExamineTask.java @@ -1,10 +1,10 @@ -package com.wangbin.task; +package com.lanhai.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 com.lanhai.constant.PollutionConstants; +import com.lanhai.entity.SurvDeviceDeploy; +import com.lanhai.entity.SurvTransdataLivestockwater; +import com.lanhai.entity.SurvTransdataOrientwater; +import com.lanhai.service.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/lanhai/task/DeviceStatusTask.java b/src/main/java/com/lanhai/task/DeviceStatusTask.java new file mode 100644 index 0000000..229f54c --- /dev/null +++ b/src/main/java/com/lanhai/task/DeviceStatusTask.java @@ -0,0 +1,172 @@ +package com.lanhai.task; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.lanhai.constant.IotConstants; +import com.lanhai.constant.PollutionConstants; +import com.lanhai.entity.SurvDeviceDeploy; +import com.lanhai.o.iot.common.DeviceStatusVo; +import com.lanhai.service.ISurvDeviceDeployService; +import com.lanhai.util.XphUtils; +import com.lanhai.util.YSUtils; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 多线程 + */ +@Component +//@EnableScheduling // 1.开启定时任务 +//@EnableAsync // 2.开启多线程 +@Slf4j +public class DeviceStatusTask { + + + @Autowired + private ISurvDeviceDeployService deviceDeployService; + + /** + * 检查设备在线情况 + */ +// @Async +// @Scheduled(cron = "0 0 * * * ?") + @XxlJob("IotDeviceStatusTask") + public void TaskHandler() throws Exception{ + log.warn("========================检查设备在线情况任务启动========================="); + XxlJobHelper.log("检查设备在线情况任务启动"); + try { + List checkType = new ArrayList<>();//需检查在线状态的设备类型 + checkType.add(PollutionConstants.CAMERA); + checkType.add(PollutionConstants.CONTROL_CAB); + checkType.add(PollutionConstants.PEST_LIGHT); + checkType.add(PollutionConstants.SPORE_SURV); + checkType.add(PollutionConstants.BUG_SURV); + checkType.add(PollutionConstants.INTEGRATED_CONTROL); + checkType.add(PollutionConstants.INTEGRATED_MACHINE); + //查询需要查询的设备 + int curPageSize = 15; + Page page = new Page(1,curPageSize); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(SurvDeviceDeploy::getRunStatus,0) + .in(SurvDeviceDeploy::getDeployType, checkType); + + IPage devicelist = deviceDeployService.page(page,wrapper); + + log.warn("需同步在线状态设备数量:{}-共{}页",page.getTotal(),page.getPages()); + XxlJobHelper.log("需同步在线状态设备数量:{}-共{}页",page.getTotal(),page.getPages()); + + + if (!devicelist.getRecords().isEmpty()) { + List dlist = new ArrayList<>(); + List updList = new ArrayList<>(); + for (int i = 1; i <= devicelist.getPages(); i++) { + log.warn("=====================需同步在线状态设备数量:page:{},共:{}页==========================",i,devicelist.getPages()); + XxlJobHelper.log("=====================需同步在线状态设备数量:page:{},共:{}页==========================",i,devicelist.getPages()); + if(i>1){//翻页 + page = new Page(i,curPageSize); + devicelist = deviceDeployService.page(page,wrapper); + } + for (SurvDeviceDeploy deploy : devicelist.getRecords()) { + DeviceStatusVo dvo = new DeviceStatusVo(); + if (StringUtils.isNotBlank(deploy.getProtocolCode())) { + try { + switch (deploy.getDeployType()) { + case PollutionConstants.CAMERA: + if (IotConstants.ysy_standard.equals(deploy.getProtocolCode())) {//萤石云逻辑 + XxlJobHelper.log("=====================设备:{},主萤石云逻辑==========================", deploy.getId()); + dvo = YSUtils.checkDeviceStatus(deploy); + } + else {//其他设备走m3u8 + XxlJobHelper.log("=====================设备:{},主m3u8逻辑==========================", deploy.getId()); + dvo = YSUtils.checkM3u8Status(deploy); + } + break; + case PollutionConstants.CONTROL_CAB: + if (IotConstants.xph_v2.equals(deploy.getProtocolCode())) {//新普惠逻辑 + dvo = XphUtils.checkDeviceStatus(deploy); + } + break; +// case PollutionConstants.PEST_LIGHT: +// if (IotConstants.yf_standard.equals(deploy.getProtocolCode())) {//云飞逻辑 +// dvo = YfUtils.checkDeviceStatus(deploy); +// } +// break; +// case PollutionConstants.SPORE_SURV: +// if (IotConstants.yf_standard.equals(deploy.getProtocolCode())) {//云飞 逻辑 +// dvo = YfUtils.checkDeviceStatus(deploy); +// } +// break; +// case PollutionConstants.BUG_SURV: +// if (IotConstants.yf_standard.equals(deploy.getProtocolCode())) {//云飞 逻辑 +// dvo = YfUtils.checkDeviceStatus(deploy); +// } else if (IotConstants.okq_v1.equals(deploy.getProtocolCode())) {//欧克奇 v1逻辑 +// dvo = OkqUtils.checkDeviceStatus(deploy); +// } +// break; + case PollutionConstants.INTEGRATED_CONTROL: + if (IotConstants.xph_v2.equals(deploy.getProtocolCode())) {//新普惠逻辑 + dvo = XphUtils.checkDeviceStatus(deploy); + } + break; + case PollutionConstants.INTEGRATED_MACHINE: + if (IotConstants.xph_v2.equals(deploy.getProtocolCode())) {//新普惠逻辑 + dvo = XphUtils.checkDeviceStatus(deploy); + } + break; + } + }catch (Exception e){ + e.printStackTrace(); + XxlJobHelper.log("设备:{},获取在线状态失败,跳过",deploy.getId()); + continue; + } + dlist.add(dvo); + } + } + } + log.warn("在线状态更新=====预筛选设备数量{}",dlist.size()); + XxlJobHelper.log("在线状态更新=====预筛选设备数量{}",dlist.size()); + //更新上次同步时间 + if(!dlist.isEmpty()){ + Date date = new Date(); + dlist.forEach(item->{ + if(item.isOnline()){ + SurvDeviceDeploy upds = new SurvDeviceDeploy(); + upds.setId(item.getDeployId()); + upds.setLastsyncTime(date); + updList.add(upds); + } + }); + XxlJobHelper.log("在线状态更新-----------筛选后设备数量{}",updList.size()); + if(!updList.isEmpty()){ + log.warn("在线状态更新-----------筛选后设备数量{}",updList.size()); + deviceDeployService.updateBatchById(updList); + } + } + + }else{ + log.warn("=====未查询到检查设备在线情况"); + } + log.warn("======================检查设备在线情况任务结束========================="); + } catch (Exception e) { + e.printStackTrace(); + XxlJobHelper.log(e); + XxlJobHelper.handleFail(); + } finally { + XxlJobHelper.log("检查设备在线情况任务结束"); + } + } + + + + +} diff --git a/src/main/java/com/lanhai/task/MultithreadTask.java b/src/main/java/com/lanhai/task/MultithreadTask.java new file mode 100644 index 0000000..38cb1e4 --- /dev/null +++ b/src/main/java/com/lanhai/task/MultithreadTask.java @@ -0,0 +1,152 @@ +package com.lanhai.task; + +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import com.lanhai.constant.IotConstants; +import com.lanhai.constant.PollutionConstants; +import com.lanhai.entity.SurvDeviceDeploy; +import com.lanhai.o.vo.HttpResponseVo; +import com.lanhai.service.IScEquZhibiaoService; +import com.lanhai.service.ISurvDeviceDeployService; +import com.lanhai.service.ISurvTransdataAirService; +import com.lanhai.service.ISurvTransdataSoilService; +import com.lanhai.util.*; +import io.swagger.models.auth.In; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +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.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 多线程 + */ +@Component +//@EnableScheduling // 1.开启定时任务 +//@EnableAsync // 2.开启多线程 +@Slf4j +public class MultithreadTask { + + + @Autowired + private ISurvDeviceDeployService deviceDeployService; + + +// private String apiUrl = "http://47.105.215.208:8005/intfa/queryData/%s"; + + + + @Autowired + private TokenUtils tokenUtils; + + + /** + * 土壤、气象数据采集 + */ +// @Async +// @Scheduled(cron = "0 0/1 * * * ?") + @XxlJob("IotAirSoilGather") + public void TaskHandler() throws Exception{ + log.error("####################################################辛普惠设备定时任务开始执行,时间:{},线程:{}#######################################################", LocalDateTime.now().toLocalTime(),Thread.currentThread().getName()); + XxlJobHelper.log("辛普惠设备定时任务启动"); + try { + List deviceType = new ArrayList<>(); + deviceType.add(PollutionConstants.AIR_SURV); + deviceType.add(PollutionConstants.SOIL_SURV); + deviceType.add(PollutionConstants.WATER_QULITY); + List protocolList = new ArrayList(){ + {add(IotConstants.xph_v2); + add(IotConstants.tuya_standard); + add(IotConstants.renke_standard); + } + }; + List deploys = deviceDeployService.getDeviceByType(protocolList,deviceType); + log.error("---------------------------------------------查询到未过滤设备数量:{}--------------------------------------------",deploys.size()); + XxlJobHelper.log("查询到未过滤设备数量:"+deploys.size()); + if (!deploys.isEmpty()) { + //获取各农场的设备,过滤重复 + Map deviceMap = new HashMap<>(); + Map> allDeviceMap = new HashMap<>(); + Map deviceDeployMap = new HashMap<>(); + for (SurvDeviceDeploy singleDevice : deploys) { + SurvDeviceDeploy checkDeploy = deviceMap.get(singleDevice.getDeployCode()); + Boolean checkResult = Boolean.TRUE; + List codeDeviceLsit =allDeviceMap.get(singleDevice.getDeployCode()); + deviceDeployMap.put(singleDevice.getDeployCode() + "_" + singleDevice.getDeployType(),singleDevice); + if(codeDeviceLsit==null){ + codeDeviceLsit = new ArrayList<>(); + } + codeDeviceLsit.add(singleDevice.getId()); + allDeviceMap.put(singleDevice.getDeployCode(),codeDeviceLsit); + if (checkDeploy != null) { + log.error("发现重复设备,编号:{},已有类型:{},现类型:{}", singleDevice.getDeployCode(), checkDeploy.getDeployType(), singleDevice.getDeployType()); + if (PollutionConstants.WATER_QULITY.equals(checkDeploy.getDeployType())) {//如果Map中已有水类型同编号的设备,则不进行替换 + checkResult = Boolean.FALSE; + } + } + if (checkResult) {//无异常则进行替换或保存 + deviceMap.put(singleDevice.getDeployCode(), singleDevice); + } + } + + if (!deviceMap.isEmpty()) { + log.error("-------------------------------------------------过滤后,最终执行设备数量:{}-----------------------------------------", deviceMap.size()); + for (Map.Entry deployEntry : deviceMap.entrySet()) { + SurvDeviceDeploy deploy = deployEntry.getValue(); + try { + boolean isOk = false; + if(StringUtils.isBlank(deploy.getProtocolCode())) { + continue; + } + switch (deploy.getProtocolCode()){ + case IotConstants.xph_v2://新普惠v2协议 + isOk = XphUtils.processSurvData(deploy,allDeviceMap,deviceDeployMap); + break; + case IotConstants.xph_v1://暂留,目前无用20241225 + break; + case IotConstants.renke_standard: + isOk = SdrkUtils.processSurvData(deploy,allDeviceMap,deviceDeployMap); + } + if(!isOk){ + continue; + } + log.error("==========================执行成功,设备号:{},设备类型:{}============================",deploy.getDeployCode(),deploy.getDeployType()); + XxlJobHelper.log("执行成功,设备号:{},设备类型:{}",deploy.getDeployCode(),deploy.getDeployType()); + }catch (Exception e){ + e.printStackTrace(); + log.error("意外报错:{},执行成功,设备号:{},设备类型:{},跳过",e.getMessage(),deploy.getDeployCode(),deploy.getDeployType()); + XxlJobHelper.log("意外报错:{},执行成功,设备号:{},设备类型:{},跳过",e.getMessage(),deploy.getDeployCode(),deploy.getDeployType()); + } + } + log.error("---------------------------------------------所有设备执行完成,设备数量:{}--------------------------------------------",deviceMap.size()); + XxlJobHelper.log("所有设备执行完成,执行结果-设备数量:{}", deviceMap.size()); + } + } + log.error("####################################################辛普惠设备定时任务执行结束,时间:{},线程:{}#######################################################", LocalDateTime.now().toLocalTime(),Thread.currentThread().getName()); + log.warn("======================物联网操作日志同步任务结束========================="); + + } catch (Exception e) { + e.printStackTrace(); + XxlJobHelper.log(e); + XxlJobHelper.handleFail(); + } finally { + XxlJobHelper.log("辛普惠设备定时任务结束"); + } + } + + + + +} diff --git a/src/main/java/com/wangbin/thread/Clent2Thread.java b/src/main/java/com/lanhai/thread/Clent2Thread.java similarity index 90% rename from src/main/java/com/wangbin/thread/Clent2Thread.java rename to src/main/java/com/lanhai/thread/Clent2Thread.java index d12c588..24b5ed2 100644 --- a/src/main/java/com/wangbin/thread/Clent2Thread.java +++ b/src/main/java/com/lanhai/thread/Clent2Thread.java @@ -1,9 +1,9 @@ -package com.wangbin.thread; +package com.lanhai.thread; -import com.wangbin.entity.SurvDeviceDeploy; -import com.wangbin.service.ISurvDeviceDeployService; -import com.wangbin.util.SpringContextUtil; -import com.wangbin.util.TUtil; +import com.lanhai.entity.SurvDeviceDeploy; +import com.lanhai.service.ISurvDeviceDeployService; +import com.lanhai.util.SpringContextUtil; +import com.lanhai.util.TUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; diff --git a/src/main/java/com/wangbin/thread/ClentThread.java b/src/main/java/com/lanhai/thread/ClentThread.java similarity index 91% rename from src/main/java/com/wangbin/thread/ClentThread.java rename to src/main/java/com/lanhai/thread/ClentThread.java index d14fe50..a0bebe4 100644 --- a/src/main/java/com/wangbin/thread/ClentThread.java +++ b/src/main/java/com/lanhai/thread/ClentThread.java @@ -1,12 +1,12 @@ -package com.wangbin.thread; +package com.lanhai.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 com.lanhai.constant.CommonConstant; +import com.lanhai.entity.SurvDeviceDeploy; +import com.lanhai.service.ISurvDeviceDeployService; +import com.lanhai.service.ISurvTransdataLivestockwaterService; +import com.lanhai.service.ISurvTransdataOrientwaterService; +import com.lanhai.util.DataUtil; +import com.lanhai.util.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import java.io.ByteArrayOutputStream; diff --git a/src/main/java/com/wangbin/thread/NetServer.java b/src/main/java/com/lanhai/thread/NetServer.java similarity index 98% rename from src/main/java/com/wangbin/thread/NetServer.java rename to src/main/java/com/lanhai/thread/NetServer.java index 14aa920..4f3d44a 100644 --- a/src/main/java/com/wangbin/thread/NetServer.java +++ b/src/main/java/com/lanhai/thread/NetServer.java @@ -1,4 +1,4 @@ -package com.wangbin.thread; +package com.lanhai.thread; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/com/wangbin/util/BigDecimalRandomAdjuster.java b/src/main/java/com/lanhai/util/BigDecimalRandomAdjuster.java similarity index 99% rename from src/main/java/com/wangbin/util/BigDecimalRandomAdjuster.java rename to src/main/java/com/lanhai/util/BigDecimalRandomAdjuster.java index f5ffbe0..0629888 100644 --- a/src/main/java/com/wangbin/util/BigDecimalRandomAdjuster.java +++ b/src/main/java/com/lanhai/util/BigDecimalRandomAdjuster.java @@ -1,4 +1,4 @@ -package com.wangbin.util; +package com.lanhai.util; import java.math.BigDecimal; import java.math.RoundingMode; diff --git a/src/main/java/com/lanhai/util/CamCaptureUtils.java b/src/main/java/com/lanhai/util/CamCaptureUtils.java new file mode 100644 index 0000000..2291262 --- /dev/null +++ b/src/main/java/com/lanhai/util/CamCaptureUtils.java @@ -0,0 +1,404 @@ +package com.lanhai.util; + +import org.apache.commons.lang3.StringUtils; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.concurrent.ThreadLocalRandom; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class CamCaptureUtils { + + public static void main(String[] args) throws Exception { +// downloadVideo("D:\\videodir", "test", +// "https://open.ys7.com/v3/openlive/FM5138818_1_1.m3u8?expire=1768025350&id=799641335383461888&t=c702cee223868dad7b35f11204692a6c066922a94c8734eb087719e647f87f7e&ev=100"); + System.out.println(tryCaptureM3u8("https://hls01open.ys7.com/openlive/f19a77a76a5741d3b759c53a9e4d8187.m3u8")); + } + +// public static boolean downloadVideo(String rootPath, String fileName, String m3u8Url) { +// boolean result = false; +// try { +// //测试类 +//// rootPath = "D:\\videodir";//存放视频和截图的地址,先放在本地 +// String originUrlpath = m3u8Url;//这个是m3u8直播地址 +// String preUrlPath = ""; +// File targetFile = new File(rootPath); +// if (!targetFile.getParentFile().exists()) { +// targetFile.getParentFile().mkdirs(); +// } +// +// HlsDownloader downLoader = new HlsDownloader(originUrlpath, preUrlPath, rootPath); +// //downLoader.setThreadQuantity(10); +// fileName = downLoader.download(true);//true用多线程下载,false不用多线程 +// +// if (fileName.isEmpty()) { +//// System.out.println("下载失败"); +// +// } else { +//// System.err.println("下载成功"); +// String name = getTempPath(rootPath, fileName);//这个是视频截图方法 +// //删除视频文件 +//// FileUtil.del(rootPath+File.separator+name+".mp4"); +//// FileUtil.del(rootPath+File.separator+name); +// result = true; +// } +// } catch (Exception e) { +// e.printStackTrace(); +// +// } +// return result; +// } +// +// public static boolean captureM3u8(String savePath, String m3u8Url) throws Exception { +// try { +// File targetFile = new File(savePath); +// if (!targetFile.getParentFile().exists()) { +// targetFile.getParentFile().mkdirs(); +// } +// if (StringUtils.isNotBlank(m3u8Url)) { +// FFmpegFrameGrabber ff = new FFmpegFrameGrabber(m3u8Url); +// ff.setOption("rtsp_transport", "tcp"); +// ff.start(); +// String rotate_old = ff.getVideoMetadata("rotate");//视频旋转角度,可能是null +// int ftp = ff.getLengthInFrames(); +// int flag = 0; +// Frame frame = null; +//// while (flag <= ftp) { +//// //获取帧 +//// frame = ff.grabImage(); +//// //过滤前3帧,避免出现全黑图片 +//// if ((flag>2)&&(frame != null)) { +//// break; +//// } +//// flag++; +//// } +// //只使用关键帧,避免花屏问题 +// while (flag <= ftp) { +// //获取帧 +// frame = ff.grabImage(); +// //过滤前3帧,避免出现全黑图片 +// if ((frame != null)) { +// if (isKeyFrame(ff, flag)) {//获取关键帧 +// break; +// } +// } +// flag++; +// } +// Java2DFrameConverter converter = new Java2DFrameConverter(); +// BufferedImage srcImage = converter.getBufferedImage(frame); +// int srcImageWidth = srcImage.getWidth(); +// int srcImageHeight = srcImage.getHeight(); +// int width = srcImageWidth; +// int height = (int) (((double) width / srcImageWidth) * srcImageHeight); +// BufferedImage thumbnailImage = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); +// thumbnailImage.getGraphics().drawImage(srcImage.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null); +// +// ImageIO.write(thumbnailImage, "jpg", targetFile); +//// ImageIO.write(FrameToBufferedImage(frame), "jpg", targetFile); +// ff.close(); +// ff.stop(); +// if (rotate_old != null && !rotate_old.isEmpty()) { +// int rotate = Integer.parseInt(rotate_old); +// rotatePhonePhoto(savePath, rotate); +// } +// return Boolean.TRUE; +// } +// } catch (Exception e) { +// e.printStackTrace(); +// return Boolean.FALSE; +// } +// return Boolean.FALSE; +// } +// +// private static boolean isKeyFrame(FFmpegFrameGrabber grabber, int frameNumber) { +// return (frameNumber % 30 == 0); +// } +// +// public static String getTempPath(String filePath, String fileName) throws Exception { +//// System.out.println(fileName); +// String[] split = fileName.split("\\."); +//// System.out.println(split.length); +// String oName = split[0]; +//// System.out.println(oName); +// String sName = split[1]; +//// String tempPath=" ";//保存的目标路径 +// File targetFile = new File(filePath + "/" + oName + "_img." + "jpg"); +// if (!targetFile.getParentFile().exists()) { +// targetFile.getParentFile().mkdirs(); +// } +// File file2 = new File(filePath + "/" + fileName); +// if (file2.exists()) { +//// log.info("文件存在,路径正确!"); +// +// FFmpegFrameGrabber ff = new FFmpegFrameGrabber(file2); +// ff.start(); +// String rotate_old = ff.getVideoMetadata("rotate");//视频旋转角度,可能是null +// int ftp = ff.getLengthInFrames(); +// int flag = 0; +// Frame frame = null; +// while (flag <= ftp) { +// //获取帧 +// frame = ff.grabImage(); +// //过滤前3帧,避免出现全黑图片 +// if ((flag > 2) && (frame != null)) { +// break; +// } +// flag++; +// } +// Java2DFrameConverter converter = new Java2DFrameConverter(); +// BufferedImage srcImage = converter.getBufferedImage(frame); +// int srcImageWidth = srcImage.getWidth(); +// int srcImageHeight = srcImage.getHeight(); +// int width = srcImageWidth; +// int height = (int) (((double) width / srcImageWidth) * srcImageHeight); +// BufferedImage thumbnailImage = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); +// thumbnailImage.getGraphics().drawImage(srcImage.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null); +// +// ImageIO.write(thumbnailImage, "jpg", targetFile); +//// ImageIO.write(FrameToBufferedImage(frame), "jpg", targetFile); +// ff.close(); +// ff.stop(); +// if (rotate_old != null && !rotate_old.isEmpty()) { +// int rotate = Integer.parseInt(rotate_old); +// rotatePhonePhoto(filePath + "/" + oName + "_img." + "jpg", rotate); +// } +// return oName; +// } +// return oName; +// } +// +// private static RenderedImage FrameToBufferedImage(Frame frame) { +// //创建BufferedImage对象 +// Java2DFrameConverter converter = new Java2DFrameConverter(); +// BufferedImage bufferedImage = converter.getBufferedImage(frame); +// return bufferedImage; +// } + + public static String rotatePhonePhoto(String fullPath, int angel) { + BufferedImage src; + try { + src = ImageIO.read(new File(fullPath)); + int src_width = src.getWidth(null); + int src_height = src.getHeight(null); + + int swidth = src_width; + int sheight = src_height; + + if (angel == 90 || angel == 270) { + swidth = src_height; + sheight = src_width; + } + Rectangle rect_des = new Rectangle(new Dimension(swidth, sheight)); + BufferedImage res = new BufferedImage(rect_des.width, rect_des.height, BufferedImage.TYPE_INT_RGB); + Graphics2D g2 = res.createGraphics(); + g2.translate((rect_des.width - src_width) / 2, (rect_des.height - src_height) / 2); + g2.rotate(Math.toRadians(angel), src_width / 2, src_height / 2); + g2.drawImage(src, null, null); + ImageIO.write(res, "jpg", new File(fullPath)); + } catch (Exception e) { + e.printStackTrace(); + } + return fullPath; + + } + + /** + * There is no universal option for streaming timeout. Each of protocols has + * its own list of options. + */ + private static enum TimeoutOption { + /** + * Depends on protocol (FTP, HTTP, RTMP, RTSP, SMB, SSH, TCP, UDP, or UNIX). + * http://ffmpeg.org/ffmpeg-all.html + * + * Specific for RTSP: + * Set socket TCP I/O timeout in microseconds. + * http://ffmpeg.org/ffmpeg-all.html#rtsp + */ + TIMEOUT, + /** + * Protocols + * + * Maximum time to wait for (network) read/write operations to complete, + * in microseconds. + * + * http://ffmpeg.org/ffmpeg-all.html#Protocols + */ + RW_TIMEOUT; + + public String getKey() { + return toString().toLowerCase(); + } + + } + private static final int TIMEOUT = 10; // In seconds. + + public static boolean tryCaptureM3u8(String m3u8Url) throws Exception{ + if (StringUtils.isNotBlank(m3u8Url)) { + return isM3u8Content(m3u8Url); + } + return Boolean.FALSE; + } + + +// public static boolean tryCaptureM3u82(String m3u8Url) throws Exception{ +// if (StringUtils.isNotBlank(m3u8Url)) { +// XxlJobHelper.log(m3u8Url+"============开始抓图========================"); +// InputStream inputStream = getM3U8InputStream(m3u8Url); +// XxlJobHelper.log(m3u8Url+"============input========================"); +// FFmpegFrameGrabber ff = new FFmpegFrameGrabber(inputStream); +//// ff.setOption("rtsp_transport", "tcp"); +//// ff.setOption("stimeout", "5000"); // 设置超时时间为10秒 +//// ff.setOption("timeout", "5000"); +//// ff.setTimeout(5000); +// XxlJobHelper.log("============设置参数===================="); +// ff.setOption( +// TimeoutOption.TIMEOUT.getKey(), +// String.valueOf(TIMEOUT * 1000000) +// ); +// XxlJobHelper.log("============设置参数2===================="); +//// ff.setOption("reconnect_max_retries","3"); +//// ff.setOption("max_delay", "5000"); // 设置最大延迟为5秒 +//// ff.setMaxDelay(5000); +// XxlJobHelper.log("============启动连接===================="); +// ff.startUnsafe();//防止阻塞 +// XxlJobHelper.log("============流初始化成功================="); +// String rotate_old = ff.getVideoMetadata("rotate");//视频旋转角度,可能是null +// int ftp = ff.getLengthInFrames(); +// int flag = 0; +// Frame frame = null; +//// while (flag <= ftp) { +//// //获取帧 +//// frame = ff.grabImage(); +//// //过滤前3帧,避免出现全黑图片 +//// if ((flag>2)&&(frame != null)) { +//// break; +//// } +//// flag++; +//// } +// //只使用关键帧,避免花屏问题 +// while (flag <= ftp) { +// //获取帧 +// frame = ff.grabImage(); +// XxlJobHelper.log(ftp+"============checkFrame================="+flag); +// //过滤前3帧,避免出现全黑图片 +// if ((frame != null)) { +// if (isKeyFrame(ff, flag)) {//获取关键帧 +// break; +// } +// } +// flag++; +// } +// XxlJobHelper.log(m3u8Url+"============抓图成功========================"); +// Java2DFrameConverter converter = new Java2DFrameConverter(); +// BufferedImage srcImage = converter.getBufferedImage(frame); +// int srcImageWidth = srcImage.getWidth(); +// int srcImageHeight = srcImage.getHeight(); +// int width = srcImageWidth; +// int height = (int) (((double) width / srcImageWidth) * srcImageHeight); +// BufferedImage thumbnailImage = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); +// thumbnailImage.getGraphics().drawImage(srcImage.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null); +// File targetFile = File.createTempFile("tempcap"+ "_" + randomFileName(),".jpg"); +// ImageIO.write(thumbnailImage, "jpg", targetFile); +// boolean isGood = false; +// if(FileUtil.size(targetFile) > 30720){//大于30KB,认为在线,否则可能抓取到萤石云的404图片 +// isGood = true; +// } +//// ImageIO.write(FrameToBufferedImage(frame), "jpg", targetFile); +// ff.close(); +// ff.stop(); +// ff.release(); +// return isGood; +// } +// return Boolean.FALSE; +// } + + public static String randomFileName() { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String timestamp = sdf.format(new Date()); + + int randomNumber = ThreadLocalRandom.current().nextInt(1000, 10000); + String uniqueId = timestamp + "" + randomNumber; + return uniqueId; + } + + + public static InputStream getM3U8InputStream(String m3u8Url) throws Exception { + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpGet httpGet = new HttpGet(m3u8Url); + try (CloseableHttpResponse response = httpClient.execute(httpGet)) { + if (response.getStatusLine().getStatusCode() == 200) { + String m3u8Content = EntityUtils.toString(response.getEntity()); + return new ByteArrayInputStream(m3u8Content.getBytes()); + } else { + throw new RuntimeException("Failed to retrieve m3u8 content: " + response.getStatusLine().getStatusCode()); + } + } + } + + public static boolean isM3u8Online(String m3u8Url) { + try { + URL url = new URL(m3u8Url); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setConnectTimeout(5000); // 5秒超时 + connection.setReadTimeout(5000); + connection.setRequestMethod("GET"); + int responseCode = connection.getResponseCode(); + return (responseCode >= 200 && responseCode < 300); + } catch (Exception e) { + return false; + } + } + + + public static boolean isM3u8Content(String m3u8Url) { + try { + URL url = new URL(m3u8Url); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setConnectTimeout(5000); + connection.setReadTimeout(5000); + connection.setRequestMethod("GET"); + System.out.println(connection.getResponseCode()); + if (connection.getResponseCode() == 200) { + BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String firstLine = reader.readLine(); + reader.close(); + double times = calculateM3u8Duration(m3u8Url); + boolean b = !(times == 4);//正好4秒,证明摄像头返回了循环的404画面 + return firstLine != null && firstLine.trim().startsWith("#EXTM3U") && b ; + } + } catch (Exception e) { + // ignore + } + return false; + } + + public static double calculateM3u8Duration(String m3u8Url) throws Exception { + URL url = new URL(m3u8Url); + BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); + String line; + double totalDuration = 0.0; + + Pattern pattern = Pattern.compile("#EXTINF:([0-9.]+)"); + while ((line = reader.readLine()) != null) { + Matcher matcher = pattern.matcher(line); + if (matcher.find()) { + totalDuration += Double.parseDouble(matcher.group(1)); + } + } + reader.close(); + return totalDuration; + } +} diff --git a/src/main/java/com/lanhai/util/CommonToolUtils.java b/src/main/java/com/lanhai/util/CommonToolUtils.java new file mode 100644 index 0000000..01a889c --- /dev/null +++ b/src/main/java/com/lanhai/util/CommonToolUtils.java @@ -0,0 +1,34 @@ +package com.lanhai.util; + +import com.lanhai.constant.ToolConstant; + +public class CommonToolUtils { + + public static String getString(String s) { + return (getString(s, "")); + } + + public static String getString(Object s, String defval) { + if (isEmpty(s)) { + return (defval); + } + return (s.toString().trim()); + } + + public static boolean isEmpty(Object object) { + if (object == null) { + return (true); + } + if ("".equals(object)) { + return (true); + } + if (ToolConstant.STRING_NULL.equals(object)) { + return (true); + } + return (false); + } + + public static String combineStr(String s1, String s2) { + return s1+"_"+s2; + } +} diff --git a/src/main/java/com/lanhai/util/CustomResponseErrorHandler.java b/src/main/java/com/lanhai/util/CustomResponseErrorHandler.java new file mode 100644 index 0000000..b2d0b89 --- /dev/null +++ b/src/main/java/com/lanhai/util/CustomResponseErrorHandler.java @@ -0,0 +1,22 @@ +package com.lanhai.util; + +import org.springframework.http.client.ClientHttpResponse; +import org.springframework.web.client.ResponseErrorHandler; + +import java.io.IOException; + +public class CustomResponseErrorHandler implements ResponseErrorHandler { + + @Override + public boolean hasError(ClientHttpResponse response) throws IOException { + // 返回false表示不将所有状态码都视为错误 + int statusCode = response.getStatusCode().value(); + //只在500级别的异常时才抛出 + return statusCode >= 500; + } + + @Override + public void handleError(ClientHttpResponse response) { + // 可以在这里处理500错误,但不抛出异常 + } +} \ No newline at end of file diff --git a/src/main/java/com/wangbin/util/DataUtil.java b/src/main/java/com/lanhai/util/DataUtil.java similarity index 76% rename from src/main/java/com/wangbin/util/DataUtil.java rename to src/main/java/com/lanhai/util/DataUtil.java index 8463419..09c5e1d 100644 --- a/src/main/java/com/wangbin/util/DataUtil.java +++ b/src/main/java/com/lanhai/util/DataUtil.java @@ -1,11 +1,11 @@ -package com.wangbin.util; +package com.lanhai.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 com.lanhai.constant.CommonConstant; +import com.lanhai.entity.SurvTransdataLivestockwater; +import com.lanhai.entity.SurvTransdataOrientwater; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -28,19 +28,53 @@ 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;i0){ + JSONObject deviceJson = JSONObject.parseObject(listArr.get(0).toString()); + if(deviceJson!=null){ + String datetime = deviceJson.getString("datetime"); + JSONObject cData = deviceJson.getJSONObject("currentData"); + JSONArray dataArr = deviceJson.getJSONArray("eleLists"); + if(dataArr!=null&&dataArr.size()>0){ + for(int i =0;i 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){ diff --git a/src/main/java/com/wangbin/util/DateUtils.java b/src/main/java/com/lanhai/util/DateUtils.java similarity index 95% rename from src/main/java/com/wangbin/util/DateUtils.java rename to src/main/java/com/lanhai/util/DateUtils.java index eea3743..9b3bfe3 100644 --- a/src/main/java/com/wangbin/util/DateUtils.java +++ b/src/main/java/com/lanhai/util/DateUtils.java @@ -1,4 +1,4 @@ -package com.wangbin.util; +package com.lanhai.util; import org.springframework.util.StringUtils; @@ -7,6 +7,9 @@ import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; @@ -72,6 +75,33 @@ public class DateUtils extends PropertyEditorSupport { private static final long MINUTE_IN_MILLIS = 60 * 1000; private static final long SECOND_IN_MILLIS = 1000; + + public static LocalDateTime timestampToLocalDateTime(long timestamp) { + // 使用系统默认时区将时间戳转换为Instant + Instant instant = Instant.ofEpochSecond(timestamp); + + // 假设我们想要使用系统默认时区,但你也可以指定其他时区,比如ZoneId.of("UTC") + ZoneId zoneId = ZoneId.systemDefault(); + + // 将Instant转换为LocalDateTime + LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zoneId); + + return localDateTime; + } + + public static LocalDateTime timestampToLocalDateTime(Date date) { + // 使用系统默认时区将时间戳转换为Instant + Instant instant =date.toInstant(); + + // 假设我们想要使用系统默认时区,但你也可以指定其他时区,比如ZoneId.of("UTC") + ZoneId zoneId = ZoneId.systemDefault(); + + // 将Instant转换为LocalDateTime + LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zoneId); + + return localDateTime; + } + /** * 指定模式的时间格式 * @param pattern diff --git a/src/main/java/com/lanhai/util/HttpReqestUtils.java b/src/main/java/com/lanhai/util/HttpReqestUtils.java new file mode 100644 index 0000000..6940776 --- /dev/null +++ b/src/main/java/com/lanhai/util/HttpReqestUtils.java @@ -0,0 +1,235 @@ +package com.lanhai.util; + +import com.alibaba.fastjson.JSONObject; +import com.lanhai.o.vo.HttpResponseVo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.*; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; + +import java.util.HashMap; +import java.util.Map; + +@Slf4j +public class HttpReqestUtils { + + + + /** + * 常规的post请求,可自由传入Header 和 参数,headerMap 和 requestMap都可为空 + * @param url + * @param requestMap + * @param headerMap + * @return + */ + public static HttpResponseVo postRequest(String url,Map requestMap,Map headerMap){ + HttpResponseVo httpResponseVo =new HttpResponseVo(); + RestTemplate restTemplate = new RestTemplate(); + restTemplate.setErrorHandler(new CustomResponseErrorHandler()); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.add("Accept", MediaType.APPLICATION_JSON.toString()); + if(headerMap!=null){ + for (String s : headerMap.keySet()) { + headers.add(s, headerMap.get(s)); + } + } + + Map param = new HashMap<>(); + if(requestMap!=null){ + for (String s : requestMap.keySet()) { + param.put(s,requestMap.get(s)); + } + } + HttpEntity> httpEntity = new HttpEntity<>(param, headers); + ResponseEntity responseEntity = restTemplate.postForEntity(url, httpEntity, JSONObject.class); + HttpStatus statusCode = responseEntity.getStatusCode(); //状态码 + HttpHeaders headers1 = responseEntity.getHeaders();//获取到头信息 + if(statusCode == HttpStatus.OK){ + httpResponseVo.setOk(true); + httpResponseVo.setData(responseEntity.getBody()); + httpResponseVo.setResponseHeaders(headers1); + return httpResponseVo; + }else{ + httpResponseVo.setOk(false); + return httpResponseVo; + } + } + + /** + * get风格的Post请求,参数拼接在url后面,如www.baidu.com?a=b&c=d + * @param url + * @param requestMap + * @return + */ + public static HttpResponseVo postWithGetStyleRequest(String url,JSONObject requestMap){ + HttpResponseVo httpResponseVo =new HttpResponseVo(); + RestTemplate restTemplate = new RestTemplate(); + restTemplate.setErrorHandler(new CustomResponseErrorHandler()); + + HttpHeaders headers = new HttpHeaders(); +// MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); +// headers.setContentType(MediaType.MULTIPART_FORM_DATA); + headers.add("Accept", MediaType.APPLICATION_JSON.toString()); + + HttpEntity httpEntity = new HttpEntity(requestMap,headers); + url = url + "?"; + for (Map.Entry entry : requestMap.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + url = url + key+"="+value+"&"; + } + ResponseEntity responseEntity = restTemplate.postForEntity(url, httpEntity, JSONObject.class); + HttpStatus statusCode = responseEntity.getStatusCode(); //状态码 + HttpHeaders headers1 = responseEntity.getHeaders();//获取到头信息 + if(statusCode == HttpStatus.OK){ + httpResponseVo.setOk(true); + httpResponseVo.setData(responseEntity.getBody()); + httpResponseVo.setResponseHeaders(headers1); + return httpResponseVo; + }else{ + httpResponseVo.setOk(false); + return httpResponseVo; + } + } + + /** + * 自定义的post请求,可接收MultiValueMap 类型 + * @param url + * @param requestMap + * @return + */ + public static JSONObject CustomPostRequest(String url, MultiValueMap requestMap){ + RestTemplate restTemplate = new RestTemplate(); + restTemplate.setErrorHandler(new CustomResponseErrorHandler()); + + HttpHeaders headers = new HttpHeaders(); + MediaType type = MediaType.parseMediaType("application/x-www-form-urlencoded"); + headers.setContentType(type); + headers.add("Accept", MediaType.APPLICATION_JSON.toString()); + HttpEntity> httpEntity = new HttpEntity>(requestMap,headers); + ResponseEntity responseEntity = restTemplate.postForEntity(url, httpEntity, JSONObject.class); + JSONObject body2 = responseEntity.getBody(); //响应体 + HttpStatus statusCode = responseEntity.getStatusCode(); //状态码 + HttpHeaders headers1 = responseEntity.getHeaders();//获取到头信息 + return body2; + } + + /** + * 普通的Get请求,参数传入Map + * @param url + * @param paramMap + * @return + */ + public static HttpResponseVo getRequest(String url,Map paramMap){ + RestTemplate restTemplate = new RestTemplate(); + HttpResponseVo httpResponseVo =new HttpResponseVo(); + restTemplate.setErrorHandler(new CustomResponseErrorHandler()); + ResponseEntity responseEntity = restTemplate.getForEntity(url,JSONObject.class,paramMap); + HttpStatus statusCode = responseEntity.getStatusCode(); //状态码 + HttpHeaders headers1 = responseEntity.getHeaders();//获取到头信息 + if(statusCode == HttpStatus.OK){ + httpResponseVo.setOk(true); + httpResponseVo.setData(responseEntity.getBody()); + httpResponseVo.setResponseHeaders(headers1); + return httpResponseVo; + }else{ + httpResponseVo.setOk(false); + return httpResponseVo; + } + } + + /** + * Get 请求,可自由传入Header,headerMap、requestMap 可为空不穿 + * @param url + * @param requestMap + * @param headerMap + * @return + */ + public static HttpResponseVo getExchange(String url, Map requestMap, Map headerMap){ + RestTemplate restTemplate = new RestTemplate(); + restTemplate.setErrorHandler(new CustomResponseErrorHandler()); + HttpHeaders headers = new HttpHeaders(); + HttpResponseVo httpResponseVo =new HttpResponseVo(); +// headers.add("Accept", MediaType.APPLICATION_JSON.toString()); + if(headerMap!=null){ + for (String s : headerMap.keySet()) { + headers.add(s, headerMap.get(s)); + } + } + if(requestMap==null){ + requestMap = new HashMap<>(); + } + HttpEntity httpEntity = new HttpEntity<>(headers); + ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.GET, httpEntity, JSONObject.class,requestMap); + HttpStatus statusCode = responseEntity.getStatusCode(); //状态码 + HttpHeaders headers1 = responseEntity.getHeaders();//获取到头信息 + if(statusCode == HttpStatus.OK){ + httpResponseVo.setOk(true); + httpResponseVo.setData(responseEntity.getBody()); + httpResponseVo.setResponseHeaders(headers1); + return httpResponseVo; + }else{ + httpResponseVo.setOk(false); + return httpResponseVo; + } + } + + /** + * Get 请求,可自由传入Header,headerMap、requestMap 可为空不穿 + * @param url + * @param requestMap + * @param headerMap + * @return + */ + public static byte[] getExchangeImg(String url, Map requestMap, Map headerMap){ + RestTemplate restTemplate = new RestTemplate(); + restTemplate.setErrorHandler(new CustomResponseErrorHandler()); + HttpHeaders headers = new HttpHeaders(); + HttpResponseVo httpResponseVo =new HttpResponseVo(); +// headers.add("Accept", MediaType.APPLICATION_JSON.toString()); + if(headerMap!=null){ + for (String s : headerMap.keySet()) { + headers.add(s, headerMap.get(s)); + } + } + if(requestMap==null){ + requestMap = new HashMap<>(); + } + HttpEntity httpEntity = new HttpEntity<>(headers); + ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.GET, httpEntity, byte[].class,requestMap); + HttpStatus statusCode = responseEntity.getStatusCode(); //状态码 + HttpHeaders headers1 = responseEntity.getHeaders();//获取到头信息 + return responseEntity.getBody(); + } + + /** + * Get 请求,可自由传入Header,headerMap、requestMap 可为空不穿 + * @param url + * @param requestMap + * @param headerMap + * @return + */ + public static String getExchangeImgs(String url, Map requestMap, Map headerMap){ + RestTemplate restTemplate = new RestTemplate(); + restTemplate.setErrorHandler(new CustomResponseErrorHandler()); + HttpHeaders headers = new HttpHeaders(); + HttpResponseVo httpResponseVo =new HttpResponseVo(); +// headers.add("Accept", MediaType.APPLICATION_JSON.toString()); + if(headerMap!=null){ + for (String s : headerMap.keySet()) { + headers.add(s, headerMap.get(s)); + } + } + if(requestMap==null){ + requestMap = new HashMap<>(); + } + HttpEntity httpEntity = new HttpEntity<>(headers); + ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class,requestMap); + HttpStatus statusCode = responseEntity.getStatusCode(); //状态码 + HttpHeaders headers1 = responseEntity.getHeaders();//获取到头信息 + return responseEntity.getBody(); + } + +} diff --git a/src/main/java/com/lanhai/util/SdrkUtils.java b/src/main/java/com/lanhai/util/SdrkUtils.java new file mode 100644 index 0000000..e4af403 --- /dev/null +++ b/src/main/java/com/lanhai/util/SdrkUtils.java @@ -0,0 +1,230 @@ +package com.lanhai.util; + +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.context.XxlJobHelper; +import com.lanhai.constant.IotConstants; +import com.lanhai.entity.FSurvConfig; +import com.lanhai.entity.SurvDeviceDeploy; +import com.lanhai.o.iot.renke.DataItem; +import com.lanhai.o.iot.renke.RegisterItem; +import com.lanhai.o.iot.renke.RenkeDataRealTimeDetail; +import com.lanhai.o.iot.renke.RenkeDataRealTimePack; +import com.lanhai.o.vo.HttpResponseVo; +import com.lanhai.o.vo.VOIotAccess; +import com.lanhai.service.IFSurvConfigService; +import com.lanhai.service.IScEquZhibiaoService; +import com.lanhai.service.ISurvTransdataSoilService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; + +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * 山东仁科工具类 + */ +@Slf4j +public class SdrkUtils { + //redis token目录 + private static String token_key = "tool_token:token:"; + //redis token过期目录 + private static String token_expire = "tool_token:expire:"; + static RedisTemplate redisTemplate = SpringContextUtil.getBean(StringRedisTemplate.class); + static IFSurvConfigService configService = SpringContextUtil.getBean(IFSurvConfigService.class); + static IScEquZhibiaoService scEquZhibiaoService = SpringContextUtil.getBean(IScEquZhibiaoService.class); + static ISurvTransdataSoilService survTransdataSoilService = SpringContextUtil.getBean(ISurvTransdataSoilService.class); + + private static String domain = "http://www.0531yun.com"; + + public static boolean processSurvData(SurvDeviceDeploy deploy, Map> allDeviceMap, Map deviceDeployMap) { + List allDeployList = allDeviceMap.get(deploy.getDeployCode()); + deploy.setDeviceList(allDeployList); + deploy.setScEquZhibiaoList(scEquZhibiaoService.getListByEquid(allDeployList)); + log.error("========正在执行仁科=======,设备编号:{},类型:{}==========", deploy.getDeployCode(), deploy.getDeployType()); + RenkeDataRealTimePack renkeDataRealTimePack = getDeviceData(deploy); + XxlJobHelper.log("仁科回执:"+JSONObject.toJSONString(renkeDataRealTimePack)); + boolean b = false; + if(renkeDataRealTimePack!=null){ + if(renkeDataRealTimePack.getData()!=null){ + if(!renkeDataRealTimePack.getData().isEmpty()){ + saveData(deploy,deviceDeployMap,renkeDataRealTimePack.getData()); + b = true; + } + } + } + return b; + } + + public static void saveData(SurvDeviceDeploy deploy, Map deviceDeployMap, List datas) { + if(datas!=null && !datas.isEmpty()){ + //复用新普惠构造方式,传入参数 + Map dataMap = new LinkedHashMap<>(); + dataMap.put("mn",deploy.getDeployCode()); + DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + for (RenkeDataRealTimeDetail realTimeDetail : datas) { + LocalDateTime dateTime = Instant.ofEpochMilli(realTimeDetail.getTimeStamp()) + .atZone(ZoneId.systemDefault()) // 使用系统默认时区 + .toLocalDateTime(); + dataMap.put("DataTime",dateTime.format(sdf)); + //解析数据 + if(realTimeDetail.getDataItem()!=null && !realTimeDetail.getDataItem().isEmpty()){ + for (DataItem dataItem : realTimeDetail.getDataItem()) { + if(dataItem.getRegisterItem()!=null && !dataItem.getRegisterItem().isEmpty()){ + for (RegisterItem registerItem : dataItem.getRegisterItem()) { + dataMap.put(registerItem.getRegisterName(),registerItem.getData()); + } + } + } + } + } + survTransdataSoilService.saveBaowen(dataMap, deploy,deviceDeployMap); + } + } + + + /** + *获取 token + * @param clientId 应用appKey, + * @param appSecret 应用appSecret, + * @return + */ + public static String getToken(String clientId, String appSecret){ + String getTokenPath = domain+"/api/getToken?loginName={loginName}&password={password}"; + //检查缓存中是否有token + String token = getAppToken(IotConstants.APPLICATION_RenKe,clientId); + if(StringUtils.isNotBlank(token)){ + return token; + } + //缓存中没有token的逻辑 + log.error("{}:缓存失效重新获取仁科Token",clientId); + Map headerMap = new HashMap<>(); + Map requestMap = new HashMap<>(); + requestMap.put("loginName",clientId); + requestMap.put("password",appSecret); + HttpResponseVo httpClient = HttpReqestUtils.getExchange(getTokenPath,requestMap,headerMap); + if(httpClient.isOk()){ + JSONObject resposeJson = httpClient.getData(); + JSONObject results = resposeJson.getJSONObject("data"); + if(results!=null){ + String renkeToken = results.getString("token"); + if(StringUtils.isNotBlank(renkeToken)){//正常获取到token,返回并刷新缓存 + String newToken = renkeToken; + Long expTime = results.getLong("expiration"); + + DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); +// String newExpireTime =sdf.format(LocalDateTime.now().plusSeconds(expTime)); + LocalDateTime newExpireTime = DateUtils.timestampToLocalDateTime(expTime); + setAppToken(IotConstants.APPLICATION_RenKe,clientId,newToken,newExpireTime.format(sdf)); + return renkeToken; + }else{ + throw new RuntimeException("仁科token获取失败:"+resposeJson.get("msg")); + } + }else{ + throw new RuntimeException("仁科token-fatal1"); + } + }else{ + throw new RuntimeException("仁科token-fatal2"); + } + } + + /** + * + * @param type token的类型,比如想要保存百度的token,即为baidu + * @param appkey 应用appKey, + * @return + */ + public static String getAppToken(String type, String appkey){ + String appType = ":"+type+":"; + String curRedisKey = token_key + appkey + appType ; + String curRedisExpireKey =token_expire + appkey +appType; + //检查缓存中是否有token + if (Boolean.TRUE.equals(redisTemplate.hasKey(curRedisKey))) { + String token = CommonToolUtils.getString(redisTemplate.opsForValue().get(curRedisKey),""); + String expires = CommonToolUtils.getString(redisTemplate.opsForValue().get(curRedisExpireKey),""); + if(StringUtils.isNotBlank(token)&&StringUtils.isNotBlank(expires)){ + LocalDateTime nowTime = LocalDateTime.now(); + LocalDateTime expireTime = LocalDateTime.parse(expires, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + Long curStamp = LocalDateTime.now().toInstant(ZoneOffset.ofHours(8)).toEpochMilli();//国内时区的时间戳 + boolean b = nowTime.compareTo(expireTime)<0; + if(b){//未过期 + log.warn("{}:找到仁科有效的缓存,直接返回Token",type); + return token; + } + } + } + return null; + } + + /** + * + * @param type token的类型,比如想要保存百度的token,即为baidu + * @param appkey 应用appKey, + * @param token 应用Token + * @param expireTime token过期时间,需要毫秒时间戳 + * @return + */ + public static boolean setAppToken(String type, String appkey, String token, String expireTime){ + if(StringUtils.isBlank(type) || StringUtils.isBlank(appkey) || StringUtils.isBlank(token) || StringUtils.isBlank(expireTime)){ + return false; + } + String appType = ":"+type+":"; + String curRedisKey = token_key + appkey + appType; + String curRedisExpireKey =token_expire + appkey + appType; + redisTemplate.opsForValue().set(curRedisKey, token); + redisTemplate.opsForValue().set(curRedisExpireKey, expireTime); + return true; + } + + public static VOIotAccess getAccess(SurvDeviceDeploy deploy){ + VOIotAccess voIotAccess = null; + //优先使用设备配置的密钥 + FSurvConfig survConfig = null; + if(StringUtils.isNotBlank(deploy.getSurvConfigId())){ + survConfig = configService.getConfigById(deploy.getSurvConfigId()); + }else{ + survConfig = configService.getOneByTypeWithTenant(deploy.getTenantId(), IotConstants.renke_access); + } + if(survConfig!=null){ + voIotAccess = new VOIotAccess(); + voIotAccess.setAppSecret(survConfig.getConfigValue()); + voIotAccess.setAppId(survConfig.getConfigKey()); + }else{ + return null; + } + return voIotAccess; + } + + + public static RenkeDataRealTimePack getDeviceData(SurvDeviceDeploy deploy){ + VOIotAccess voIotAccess = getAccess(deploy); + if(voIotAccess==null){ + log.warn("=========设备:{},仁科密钥未配置========",deploy.getId()); + return null; + } + String token = getToken(voIotAccess.getAppId(),voIotAccess.getAppSecret()); + String url = domain + "/api/data/getRealTimeDataByDeviceAddr?deviceAddrs={deviceAddrs}"; + Map headerMap = new HashMap<>(); + headerMap.put("authorization",token); + Map requestMap = new HashMap<>(); + requestMap.put("deviceAddrs",deploy.getDeployCode()); + String result = HttpReqestUtils.getExchangeImgs(url,requestMap,headerMap); + XxlJobHelper.log("===============实时数据返回:{}===========",result); + log.warn("===============实时数据返回:{}===========",result); + if(result !=null) { + RenkeDataRealTimePack renkeDataRealTimePack = JSONUtil.toBean(result, RenkeDataRealTimePack.class); + return renkeDataRealTimePack; + } + return null; + } + +} diff --git a/src/main/java/com/wangbin/util/SpringBeanUtils.java b/src/main/java/com/lanhai/util/SpringBeanUtils.java similarity index 97% rename from src/main/java/com/wangbin/util/SpringBeanUtils.java rename to src/main/java/com/lanhai/util/SpringBeanUtils.java index 66e528b..914b5d8 100644 --- a/src/main/java/com/wangbin/util/SpringBeanUtils.java +++ b/src/main/java/com/lanhai/util/SpringBeanUtils.java @@ -1,4 +1,4 @@ -package com.wangbin.util; +package com.lanhai.util; diff --git a/src/main/java/com/wangbin/util/SpringContextUtil.java b/src/main/java/com/lanhai/util/SpringContextUtil.java similarity index 96% rename from src/main/java/com/wangbin/util/SpringContextUtil.java rename to src/main/java/com/lanhai/util/SpringContextUtil.java index 8c5a41a..6103f44 100644 --- a/src/main/java/com/wangbin/util/SpringContextUtil.java +++ b/src/main/java/com/lanhai/util/SpringContextUtil.java @@ -1,4 +1,4 @@ -package com.wangbin.util; +package com.lanhai.util; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; @@ -6,7 +6,7 @@ import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; /** - * @Author wangbin + * @Author lanhai * @Param spring工具类 * @return **/ diff --git a/src/main/java/com/wangbin/util/TUtil.java b/src/main/java/com/lanhai/util/TUtil.java similarity index 66% rename from src/main/java/com/wangbin/util/TUtil.java rename to src/main/java/com/lanhai/util/TUtil.java index 8f20bd4..e73d019 100644 --- a/src/main/java/com/wangbin/util/TUtil.java +++ b/src/main/java/com/lanhai/util/TUtil.java @@ -1,4 +1,6 @@ -package com.wangbin.util; +package com.lanhai.util; + +import java.lang.reflect.Field; /** * @createTime 2023年07月26日 20:54:00 @@ -42,4 +44,17 @@ public class TUtil { + public static boolean setFieldValue(Object obj, String fieldName, Object value) { + try { + Class clazz = obj.getClass(); + Field field = clazz.getDeclaredField(fieldName); + field.setAccessible(true); + field.set(obj, value); + }catch (NoSuchFieldException | IllegalAccessException e){ +// e.printStackTrace(); + return false; + } + return true; + } + } diff --git a/src/main/java/com/lanhai/util/TokenUtils.java b/src/main/java/com/lanhai/util/TokenUtils.java new file mode 100644 index 0000000..4a2394c --- /dev/null +++ b/src/main/java/com/lanhai/util/TokenUtils.java @@ -0,0 +1,150 @@ +package com.lanhai.util; + +import com.alibaba.fastjson.JSONObject; +import com.lanhai.constant.ToolConstant; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +@Component +@Slf4j +public class TokenUtils { + + @Autowired + private RedisTemplate redisTemplate; + //redis token目录 + private String token_key="tool_token:token:"; + //redis token过期目录 + private String token_expire="tool_token:expire:"; + + /** + * + * @param type token的类型,比如想要保存百度的token,即为baidu + * @param appkey 应用appKey, + * @param token 应用Token + * @param expireTime token过期时间,需要毫秒时间戳 + * @return + */ + public boolean setAppToken(String type,String appkey,String token,String expireTime){ + if(StringUtils.isBlank(type) || StringUtils.isBlank(appkey) || StringUtils.isBlank(token) || StringUtils.isBlank(expireTime)){ + return false; + } + String appType = type+":"; + String curRedisKey = token_key + appkey + appType; + String curRedisExpireKey =token_expire + appkey + appType; + redisTemplate.opsForValue().set(curRedisKey, token); + redisTemplate.opsForValue().set(curRedisExpireKey, expireTime); + return true; + } + + /** + * + * @param type token的类型,比如想要保存百度的token,即为baidu + * @param appkey 应用appKey, + * @return + */ + public String getAppToken(String type,String appkey){ + String appType = type+":"; + String curRedisKey = token_key + appkey + appType ; + String curRedisExpireKey =token_expire + appkey +appType; + //检查缓存中是否有token + if (Boolean.TRUE.equals(redisTemplate.hasKey(curRedisKey))) { + String ysToken = CommonToolUtils.getString(redisTemplate.opsForValue().get(curRedisKey),""); + String ysExpire = CommonToolUtils.getString(redisTemplate.opsForValue().get(curRedisExpireKey),""); + if(StringUtils.isNotBlank(ysToken)&&StringUtils.isNotBlank(ysExpire)){ + Date d = new Date(); + Long curStamp = LocalDateTime.now().toInstant(ZoneOffset.ofHours(8)).toEpochMilli();//国内时区的时间戳 + Integer isExpire = curStamp.compareTo(Long.valueOf(ysExpire)); + if(isExpire<0){//未过期 + log.warn("{}:找到有效的缓存,直接返回Token",type); + return ysToken; + } + } + } + return null; + } + + /** + * + * @param appkey 应用appKey, + * @param appSecret 应用appSecret, + * @return + */ + public String getYsToken(String appkey,String appSecret){ + String url = "https://open.ys7.com/api/lapp/token/get"; + String appType = ToolConstant.APPLICATION_YsYun+":"; + String curRedisKey = token_key + appkey + appType ; + String curRedisExpireKey =token_expire + appkey +appType; + //检查缓存中是否有token + String token = getAppToken(ToolConstant.APPLICATION_YsYun,appkey); + if(StringUtils.isNotBlank(token)){ + return token; + } + //缓存中没有token的逻辑 + log.error("{}:缓存失效重新获取Token",appkey); + JSONObject job = new JSONObject(); + job.put("appKey", appkey); + job.put("appSecret", appSecret); + JSONObject resposeJson = HttpReqestUtils.postWithGetStyleRequest(url,job).getData(); + log.warn("新获取萤石云Token========"+resposeJson); + String resCode = resposeJson.getString("code"); + if("200".equals(resCode)){//正常获取到token,返回并刷新缓存 + String newToken = resposeJson.getJSONObject("data").getString("accessToken"); + String newExpireTime = resposeJson.getJSONObject("data").getString("expireTime"); + setAppToken(ToolConstant.APPLICATION_YsYun,appkey,newToken,newExpireTime); + return newToken; + }else{ + throw new RuntimeException("token获取失败:"+resposeJson.getString("msg")); + } + + } + + + /** + *获取 新普惠token + * @param appkey 应用appKey, + * @param appSecret 应用appSecret, + * @return + */ + public String getXphToken(String appkey, String appSecret){ + String url = "https://iot.whxph.com:44300/XPHapiv2/login"; + String appType = ToolConstant.APPLICATION_XinPH+":"; + String curRedisKey = token_key + appkey + appType ; + String curRedisExpireKey =token_expire + appkey +appType; + //检查缓存中是否有token +// String token = getAppToken(ToolConstant.APPLICATION_XinPH,appkey); +// if(StringUtils.isNotBlank(token)){ +// return token; +// } + //缓存中没有token的逻辑 +// log.error("{}:缓存失效重新获取Token",appkey); + Map job = new HashMap<>(); + job.put("username", appkey); + job.put("password", appSecret); + JSONObject resposeJson = HttpReqestUtils.postRequest(url,job,null).getData(); + log.warn("新获新普惠Token========"+resposeJson); + String xphToken = resposeJson.getString("token"); + if(StringUtils.isNotBlank(xphToken)){//正常获取到token,返回并刷新缓存 +// String newToken = resposeJson.getString("token"); +// Long expTime = resposeJson.getLong("expiration"); +// String newExpireTime = ; +// setAppToken(ToolConstant.APPLICATION_XinPH,appkey,newToken,newExpireTime); + return xphToken; + }else{ + throw new RuntimeException("token获取失败:"+resposeJson.getString("msg")); + } + + } + + + + +} diff --git a/src/main/java/com/lanhai/util/XphUtils.java b/src/main/java/com/lanhai/util/XphUtils.java new file mode 100644 index 0000000..096bc96 --- /dev/null +++ b/src/main/java/com/lanhai/util/XphUtils.java @@ -0,0 +1,406 @@ +package com.lanhai.util; + +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.context.XxlJobHelper; +import com.lanhai.constant.IotConstants; +import com.lanhai.constant.PollutionConstants; +import com.lanhai.entity.*; +import com.lanhai.o.iot.common.DeviceStatusVo; +//import com.lanhai.o.iot.common.ManufacturerConfigRelayVo; +//import com.lanhai.o.iot.common.ManufacturerConfigVo; +//import com.lanhai.o.iot.common.VOCmdPack; +import com.lanhai.o.iot.xph.XphControlLogDetailVo; +import com.lanhai.o.iot.xph.XphControlLogVo; +import com.lanhai.o.iot.xph.XphDeviceInfoVo; +import com.lanhai.o.iot.xph.XphDeviceNewestDataVo; +import com.lanhai.o.vo.HttpResponseVo; +import com.lanhai.o.vo.VOIotAccess; +//import com.lanhai.service.IFIotManufacturerConfigService; +import com.lanhai.service.IFSurvConfigService; +import com.lanhai.service.IScEquZhibiaoService; +import com.lanhai.service.ISurvTransdataSoilService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; + +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.util.*; + +@Slf4j +public class XphUtils { + + //redis token目录 + private static String token_key="tool_token:token:"; + //redis token过期目录 + private static String token_expire="tool_token:expire:"; + static RedisTemplate redisTemplate = SpringContextUtil.getBean(StringRedisTemplate.class); + static IFSurvConfigService configService = SpringContextUtil.getBean(IFSurvConfigService.class); + static IScEquZhibiaoService scEquZhibiaoService = SpringContextUtil.getBean(IScEquZhibiaoService.class); + private static String domain = "https://iot.whxph.com:44300/XPHapiv2"; + static ISurvTransdataSoilService survTransdataSoilService = SpringContextUtil.getBean(ISurvTransdataSoilService.class); +// static IFIotManufacturerConfigService manufacturerConfigService = SpringContextUtil.getBean(IFIotManufacturerConfigService.class); + + + /** + *获取 新普惠token + * @param appkey 应用appKey, + * @param appSecret 应用appSecret, + * @return + */ + public static String getXphToken(String appkey, String appSecret){ + String url = domain +"/login"; + //检查缓存中是否有token + String token = getAppToken(IotConstants.APPLICATION_XinPH,appkey); + if(StringUtils.isNotBlank(token)){ + return token; + } + //缓存中没有token的逻辑 + log.error("{}:缓存失效重新获取Token",appkey); + Map job = new HashMap<>(); + job.put("username", appkey); + job.put("password", appSecret); + JSONObject resposeJson = HttpReqestUtils.postRequest(url,job,null).getData(); + String xphToken = resposeJson.getString("token"); + if(StringUtils.isNotBlank(xphToken)){//正常获取到token,返回并刷新缓存 + String newToken = resposeJson.getString("token"); + Long expTime = resposeJson.getLong("expiration"); + DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String newExpireTime =sdf.format(LocalDateTime.now().plusSeconds(expTime)); + setAppToken(IotConstants.APPLICATION_XinPH,appkey,newToken,newExpireTime); + return xphToken; + }else{ + throw new RuntimeException("token获取失败:"+resposeJson.getString("msg")); + } + + } + + /** + * + * @param type token的类型,比如想要保存百度的token,即为baidu + * @param appkey 应用appKey, + * @param token 应用Token + * @param expireTime token过期时间,需要毫秒时间戳 + * @return + */ + public static boolean setAppToken(String type, String appkey, String token, String expireTime){ + if(StringUtils.isBlank(type) || StringUtils.isBlank(appkey) || StringUtils.isBlank(token) || StringUtils.isBlank(expireTime)){ + return false; + } + String appType = type+":"; + String curRedisKey = token_key + appkey + appType; + String curRedisExpireKey =token_expire + appkey + appType; + redisTemplate.opsForValue().set(curRedisKey, token); + redisTemplate.opsForValue().set(curRedisExpireKey, expireTime); + return true; + } + + /** + * + * @param type token的类型,比如想要保存百度的token,即为baidu + * @param appkey 应用appKey, + * @return + */ + public static String getAppToken(String type, String appkey){ + String appType = type+":"; + String curRedisKey = token_key + appkey + appType ; + String curRedisExpireKey =token_expire + appkey +appType; + //检查缓存中是否有token + if (Boolean.TRUE.equals(redisTemplate.hasKey(curRedisKey))) { + String token = CommonToolUtils.getString(redisTemplate.opsForValue().get(curRedisKey),""); + String expires = CommonToolUtils.getString(redisTemplate.opsForValue().get(curRedisExpireKey),""); + if(StringUtils.isNotBlank(token)&&StringUtils.isNotBlank(expires)){ + LocalDateTime nowTime = LocalDateTime.now(); + LocalDateTime expireTime = LocalDateTime.parse(expires, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + Long curStamp = LocalDateTime.now().toInstant(ZoneOffset.ofHours(8)).toEpochMilli();//国内时区的时间戳 + boolean b = nowTime.compareTo(expireTime)<0; + if(b){//未过期 + log.warn("{}:找到有效的缓存,直接返回Token",type); + return token; + } + } + } + return null; + } + + public static VOIotAccess getAccess(SurvDeviceDeploy deploy){ + VOIotAccess voIotAccess = new VOIotAccess(); + //优先使用设备配置的密钥 + FSurvConfig survConfig = null; + if(StringUtils.isNotBlank(deploy.getSurvConfigId())){ + survConfig = configService.getConfigById(deploy.getSurvConfigId()); + }else{ + survConfig = configService.getOneByTypeWithTenant(deploy.getTenantId(), IotConstants.xph_access); + } + + + if(survConfig!=null){ + voIotAccess.setAppSecret(survConfig.getConfigValue()); + voIotAccess.setAppId(survConfig.getConfigKey()); + }else{ + log.error("------------------新普惠设备密钥未正确配置--------------------"); + XxlJobHelper.log("------------------新普惠设备密钥未正确配置--------------------"); + return null; + } + return voIotAccess; + } + + + public static DeviceStatusVo checkDeviceStatus(SurvDeviceDeploy deploy) { + DeviceStatusVo deviceStatusVo = new DeviceStatusVo(); + deviceStatusVo.setDeployId(deploy.getId()); + try{ + if(deploy!=null){ + XphDeviceInfoVo xphDeviceInfoVo = getDeviceInfo(deploy); + if(xphDeviceInfoVo!=null){ + if(Boolean.TRUE == xphDeviceInfoVo.getOnline()){ + deviceStatusVo.setOnline(true); + }else{ + deviceStatusVo.setOnline(false); + } + } + } + + }catch (Exception e){ + e.printStackTrace(); + } + return deviceStatusVo; + } + /** + * 获取设备信息 + */ + public static XphDeviceInfoVo getDeviceInfo(SurvDeviceDeploy deploy){ + try{ + VOIotAccess voIotAccess = getAccess(deploy); + String token = getXphToken(voIotAccess.getAppId(),voIotAccess.getAppSecret()); + HashMap headers = new HashMap<>(); + headers.put("token", token); + String deviceApiUrl = domain + "/device/{deviceId}"; + Map paramMap = new HashMap<>(); + paramMap.put("deviceId", deploy.getDeployCode()); + HttpResponseVo httpResponseVo = HttpReqestUtils.getExchange(deviceApiUrl,paramMap,headers); +// log.warn(deviceApiUrl+"========同步回执=================:"+JSON.toJSONString(httpResponseVo.getData())); + if(httpResponseVo.isOk()){ + XphDeviceInfoVo xphDeviceInfoVo = JSONObject.toJavaObject(httpResponseVo.getData(),XphDeviceInfoVo.class); + return xphDeviceInfoVo; + } + }catch (Exception e) { + e.printStackTrace(); + return null; + } + return null; + } + + /** + * 处理保存数据 + */ + public static boolean processSurvData(SurvDeviceDeploy deploy,Map> allDeviceMap,Map deviceDeployMap){ + String deviceApiUrl = String.format(domain+"/screen/data?deviceId=%s", deploy.getDeployCode()); +// List allDeployList = allDeviceMap.get(deploy.getFarmId() + "_"+deploy.getDeployCode()); + List allDeployList = allDeviceMap.get(deploy.getDeployCode()); + deploy.setDeviceList(allDeployList); + //根据编号查询该设备在系统中有多少监测项 +// System.out.println(deploy.getDeployCode()+"==========firstCheck=========="+allDeployList); + VOIotAccess voIotAccess = getAccess(deploy); + String token = getXphToken(voIotAccess.getAppId(),voIotAccess.getAppSecret()); + deploy.setScEquZhibiaoList(scEquZhibiaoService.getListByEquid(allDeployList)); + log.error("========正在执行=======设备编号:{},类型:{}==========",deploy.getDeployCode(), deploy.getDeployType()); + log.error("***设备请求数据:{}",deviceApiUrl); + String dataResult = HttpUtil.createGet(deviceApiUrl).header("token",token).execute().body(); + Map dataMap = DataUtil.xphStrToMap(dataResult); + if(dataMap.isEmpty()){ + log.error("设备:{}_{}未请求到有效数据,跳过",deploy.getDeployCode(),deploy.getDeployDes()); + log.error("==========================执行中断============================"); + return false; + } + + if (PollutionConstants.WATER_QULITY.equals(deploy.getDeployType())) { + survTransdataSoilService.saveWaterBaowen(dataMap, deploy,deviceDeployMap); + } else { + survTransdataSoilService.saveBaowen(dataMap, deploy,deviceDeployMap); + } + return true; + } + + /** + * 查询设备历史数据 + */ + public static XphDeviceNewestDataVo deviceHistoryData(SurvDeviceDeploy deploy,String initTime,String endTime){ + String deviceApiUrl = String.format(domain+"/screen/datas?deviceId=%s&startTime=%s&endTime=%s", deploy.getDeployCode(),initTime,endTime); + //根据编号查询该设备在系统中有多少监测项 +// System.out.println(deploy.getDeployCode()+"==========firstCheck=========="+allDeployList); + VOIotAccess voIotAccess = getAccess(deploy); + String token = getXphToken(voIotAccess.getAppId(),voIotAccess.getAppSecret()); +// log.error("========历史数据正在执行=======农场:{},设备编号:{},类型:{}==========", deploy.getFarmId(), deploy.getDeployCode(), deploy.getDeployType()); +// log.error("***设请求历史数据:{}",deviceApiUrl); + String dataResult = HttpUtil.createGet(deviceApiUrl).header("token",token).execute().body(); + XphDeviceNewestDataVo xphDeviceNewestDataVo = null; + if(StringUtils.isNotBlank(dataResult)){ + xphDeviceNewestDataVo = JSONObject.parseObject(dataResult, XphDeviceNewestDataVo.class); + } + return xphDeviceNewestDataVo; + } + + + /** + * 获取设备的控制记录 + * @param deploy + * @return + */ + public static XphControlLogVo getControlLog(SurvDeviceDeploy deploy,int page,int pageSize,String startTime,String endTime){ + try{ + VOIotAccess voIotAccess = getAccess(deploy); + String token = getXphToken(voIotAccess.getAppId(),voIotAccess.getAppSecret()); + HashMap headers = new HashMap<>(); + headers.put("token", token); + String deviceApiUrl = domain + "/controllog/{deviceId}?pageNum={pageNum}&pageSize={pageSize}"; + + Map paramMap = new HashMap<>(); + paramMap.put("deviceId", deploy.getDeployCode()); + paramMap.put("pageNum", page); + paramMap.put("pageSize", pageSize); + + if(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)){ + deviceApiUrl = deviceApiUrl + "&startTime={startTime}&endTime={endTime}"; + paramMap.put("startTime", startTime); + paramMap.put("endTime", endTime); + } + HttpResponseVo httpResponseVo = HttpReqestUtils.getExchange(deviceApiUrl,paramMap,headers); + log.warn(deviceApiUrl+"========设备操作日志回执=================:"+JSON.toJSONString(httpResponseVo.getData())); + if(httpResponseVo.isOk()){ + XphControlLogVo controlLogVo = JSONObject.toJavaObject(httpResponseVo.getData(),XphControlLogVo.class); + return controlLogVo; + } + }catch (Exception e) { + e.printStackTrace(); + return null; + } + return null; + } +// +// public static List transToStandardFertilizerRecord(SurvDeviceDeploy deploy,LocalDateTime startTime,LocalDateTime endTime) { +// List records = new ArrayList<>(); +// int curPage =1; +// int pageSize = 30; +// DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); +// String startTimeStr = ""; +// String endTimeStr = ""; +// if(startTime!=null){ +// startTimeStr = startTime.format(sdf); +// } +// if(endTime!=null){ +// endTimeStr = endTime.format(sdf); +// } +// XphControlLogVo xphControlLogVo = getControlLog(deploy,curPage,pageSize,startTimeStr,endTimeStr); +// String template = "管理员,于 %s, 操作设备:%s,操作内容:%s->%s,操作结果:%s"; +// if(xphControlLogVo!=null){ +// FIotManufacturerConfig config = manufacturerConfigService.getConfigByProtocol(deploy.getProtocolCode()); +// int totalPage =xphControlLogVo.getPages(); +// while (curPage <= totalPage) {//分页小于总页数时遍历 +// if(curPage >1){//只有第二次以上才进行 +// xphControlLogVo = getControlLog(deploy,curPage,pageSize,startTimeStr,endTimeStr); +// } +// if(xphControlLogVo.getRecords()!=null && !xphControlLogVo.getRecords().isEmpty()){ +// for (XphControlLogDetailVo record : xphControlLogVo.getRecords()) { +// try { +// FDeviceOpration fDeviceOpration = new FDeviceOpration(); +// fDeviceOpration.setCompanyId(deploy.getCompanyId()); +// fDeviceOpration.setFarmId(deploy.getFarmId()); +// fDeviceOpration.setDeployId(deploy.getId()); +// fDeviceOpration.setGatherId(deploy.getId()+"_"+record.getId() + ""); +// fDeviceOpration.setTenantId(deploy.getTenantId()); +// +// fDeviceOpration.setVariableId(record.getNum() + ""); +// fDeviceOpration.setVariableDes(record.getName()); +// fDeviceOpration.setVariableValue(record.getState() + ""); +// boolean isMatch = false; +// if(config!=null){ +// ManufacturerConfigVo manufacturerConfigVo = JSONObject.parseObject(JSONObject.toJSONString(config.getConfigJson()), ManufacturerConfigVo.class); +// if(manufacturerConfigVo!=null){ +// +// //匹配继电器作用 +// if(manufacturerConfigVo.getRelayRule()!=null && !manufacturerConfigVo.getRelayRule().isEmpty()){ +// for (ManufacturerConfigRelayVo relayvo : manufacturerConfigVo.getRelayRule()) { +// List relayKeys = Arrays.asList(relayvo.getKeywords().split(",")); +// boolean containsAny = containsKeyword(record.getName(), relayKeys); +// if(containsAny){// +// fDeviceOpration.setVariableMark(relayvo.getRelayOperate()); +// isMatch=true; +// } +// } +// } +// //匹配继电器启动指令 +// if(manufacturerConfigVo.getLaunchCmd()!=null){ +// List keywords = Arrays.asList(manufacturerConfigVo.getLaunchCmd().getKeywords().split(",")); +// boolean containsAny = containsKeyword(record.getName(), keywords); +// if(containsAny){//如果继电器名称符合厂家的模型配置,则写入对应的继电器标记 +// fDeviceOpration.setVariableMark(IotConstants.operation_launch); +// isMatch=true; +// } +// } +// } +// +// } +// if(!isMatch){//如果没有匹配到统一标记为功能类型 +// fDeviceOpration.setVariableMark(IotConstants.operation_function); +// } +// +// String ops = 1 == record.getState() ? "开" : "关"; +// fDeviceOpration.setOprationName(record.getName() + ops); +// fDeviceOpration.setOperationResult(record.isResult() ? 1 : 0); +// fDeviceOpration.setOperatorUserId("管理员"); +// fDeviceOpration.setOperatorUserName("管理员"); +// fDeviceOpration.setOperatorUserAvatar("temp/avatar_1698119804946.png"); +// if (StringUtils.isNotBlank(record.getCreateTime())) { +// fDeviceOpration.setOperatorTime(LocalDateTime.parse(record.getCreateTime(),sdf)); +// } +// VOCmdPack voCmdPack = new VOCmdPack(); +// voCmdPack.setVariableName(fDeviceOpration.getVariableId()); +// voCmdPack.setVariableValue(fDeviceOpration.getVariableValue()); +// fDeviceOpration.setOperatorContent(JSONObject.toJSONString(voCmdPack)); +// String depName = StringUtils.isNotBlank(deploy.getCommonName())?deploy.getCommonName():deploy.getDeployRemark(); +// String result = record.isResult()?"成功":"失败"; +// fDeviceOpration.setOperatorDes(String.format(template,record.getCreateTime(),depName,record.getName(),ops,result)); +// fDeviceOpration.setCalStatus(0); +// records.add(fDeviceOpration); +// }catch (Exception e){ +// e.printStackTrace(); +// continue; +// } +// } +// } +// curPage++; +// } +// +// } +// +// +// return records; +// } + + + /** + * 检查字符串中是否包含关键词列表中的任何一个关键词 + * + * @param input 要检查的字符串 + * @param keywords 关键词列表 + * @return 如果字符串中包含任何一个关键词,返回true;否则返回false + */ + public static boolean containsKeyword(String input, List keywords) { + if (input == null || keywords == null || keywords.isEmpty()) { + return false; + } + + for (String keyword : keywords) { + if (keyword != null && input.contains(keyword)) { + return true; + } + } + + return false; + } +} diff --git a/src/main/java/com/lanhai/util/YSUtils.java b/src/main/java/com/lanhai/util/YSUtils.java new file mode 100644 index 0000000..8894109 --- /dev/null +++ b/src/main/java/com/lanhai/util/YSUtils.java @@ -0,0 +1,211 @@ +package com.lanhai.util; + +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.context.XxlJobHelper; +import com.lanhai.constant.IotConstants; +import com.lanhai.entity.FSurvConfig; +import com.lanhai.entity.SurvDeviceDeploy; +import com.lanhai.o.iot.common.DeviceStatusVo; +import com.lanhai.o.iot.ysy.VOYsyApiResult; +import com.lanhai.o.iot.ysy.VOYsyResultPack; +import com.lanhai.service.IFSurvConfigService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.http.*; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; + +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.Date; + +@Slf4j +public class YSUtils { + + static RedisTemplate redisUtil = SpringContextUtil.getBean(StringRedisTemplate.class); + + private static String ys_key="ys_token:token:"; + + private static String ys_expire="ys_token:expire:"; + + static IFSurvConfigService survConfigService = SpringContextUtil.getBean(IFSurvConfigService.class); + /** + * @Author zy + * @Date 2023/07/06 16:21:17 + * @Description: 此注解相当于设置访问URL + */ + + public static String getYsToken(String appkey,String secret){ + String url = "https://open.ys7.com/api/lapp/token/get"; + + String curRedisKey = ys_key + appkey; + String curRedisExpireKey =ys_expire + appkey; + //检查缓存中是否有token + if (redisUtil.hasKey(curRedisKey)) { + String ysToken = CommonToolUtils.getString(redisUtil.opsForValue().get(curRedisKey),""); + String ysExpire = CommonToolUtils.getString(redisUtil.opsForValue().get(curRedisExpireKey),""); + if(StringUtils.isNotBlank(ysToken)&&StringUtils.isNotBlank(ysExpire)){ + Date d = new Date(); + Long curStamp = LocalDateTime.now().toInstant(ZoneOffset.ofHours(8)).toEpochMilli(); + Integer isExpire = curStamp.compareTo(Long.valueOf(ysExpire)); + if(isExpire<0){//未过期 + return ysToken; + } + } + } + //缓存中没有token的逻辑 + log.error("{}:缓存失效重新获取萤石 Token",appkey); + MultiValueMap paramMap = new LinkedMultiValueMap(); + paramMap.add("appKey", appkey); + paramMap.add("appSecret", secret); + + JSONObject resposeJson= postRequest(url,paramMap); + System.out.println("resposeJson==="+resposeJson); + String resCode = resposeJson.getString("code"); + if("200".equals(resCode)){//正常获取到token,返回并刷新缓存 + String newToken = resposeJson.getJSONObject("data").getString("accessToken"); + String newExpireTime = resposeJson.getJSONObject("data").getString("expireTime"); + redisUtil.opsForValue().set(curRedisKey, newToken); + redisUtil.opsForValue().set(curRedisExpireKey, newExpireTime); + return newToken; + }else{ + throw new RuntimeException("token获取失败:"+resposeJson.getString("msg")); + } + + } + + + public static JSONObject postRequest(String url,MultiValueMap requestMap){ + RestTemplate restTemplate = new RestTemplate(); + + HttpHeaders headers = new HttpHeaders(); + MediaType type = MediaType.parseMediaType("application/x-www-form-urlencoded"); + headers.setContentType(type); + headers.add("Accept", MediaType.APPLICATION_JSON.toString()); + HttpEntity> httpEntity = new HttpEntity>(requestMap,headers); + ResponseEntity responseEntity = restTemplate.postForEntity(url, httpEntity, JSONObject.class); + JSONObject body2 = responseEntity.getBody(); //响应体 + HttpStatus statusCode = responseEntity.getStatusCode(); //状态码 + HttpHeaders headers1 = responseEntity.getHeaders();//获取到头信息 + return body2; + } + + + /** + * + * @param deployCode 查询设备状态 + * @return + */ + public static VOYsyResultPack deviceInfo(SurvDeviceDeploy deploy, String deployCode){ + String url = "https://open.ys7.com/api/lapp/device/info"; + VOYsyResultPack voYsyResultPack = new VOYsyResultPack(); + MultiValueMap paramMap = new LinkedMultiValueMap(); + String[] ss = deployCode.split("_"); +// if(!(ss.length ==2)){ +// log.warn("摄像头部署编号设置错误"); +// voYsyResultPack.setIsSuccess(false); +// return voYsyResultPack; +// } +// addToken(deploy.getTenantId(),paramMap); + addToken(deploy,paramMap); + paramMap.add("deviceSerial",ss[0]); + JSONObject resposeJson= postRequest(url,paramMap); + String resCode = resposeJson.getString("code"); +// log.warn("萤石云设备状态回执:"+resposeJson); + if("200".equals(resCode)){//正常获取到token,返回并刷新缓存 + VOYsyApiResult dataJson = JSONObject.toJavaObject(resposeJson,VOYsyApiResult.class); + voYsyResultPack.setIsSuccess(true); + voYsyResultPack.setVoYsyApiResult(dataJson); + return voYsyResultPack; + }else { + voYsyResultPack.setIsSuccess(false); + return voYsyResultPack; + } + + } + + + private static void addToken(SurvDeviceDeploy deploy,MultiValueMap paramMap){ + FSurvConfig fSurvConfig = null; + if(StringUtils.isNotBlank(deploy.getSurvConfigId())){ + fSurvConfig = survConfigService.getConfigById(deploy.getSurvConfigId()); + }else{ + fSurvConfig =survConfigService.getOneByTypeWithTenant(deploy.getTenantId(),IotConstants.ysyAcess); + } + String token = ""; + if(fSurvConfig!=null){ + token = getYsToken(fSurvConfig.getConfigKey(),fSurvConfig.getConfigValue()); + } + paramMap.add("accessToken",token); + } + + + private static void addTokenTenant(String tenantId,MultiValueMap paramMap){ + FSurvConfig fSurvConfig = survConfigService.getOneByTypeWithTenant(tenantId, IotConstants.ysyAcess); + String token = ""; + if(fSurvConfig!=null){ + token = getYsToken(fSurvConfig.getConfigKey(),fSurvConfig.getConfigValue()); + } + paramMap.add("accessToken",token); + } + + + public static DeviceStatusVo checkDeviceStatus(SurvDeviceDeploy deploy) { + DeviceStatusVo vo = new DeviceStatusVo(); + vo.setDeployId(deploy.getId()); + try { + if (deploy != null) { + if (StringUtils.isNotBlank(deploy.getId())) { + if (StringUtils.isNotBlank(deploy.getDeviceIotUrl())) {//使用萤石云直播流地址的,使用接口 + VOYsyResultPack voYsyResultPack = deviceInfo(deploy, deploy.getDeployCode()); + if (voYsyResultPack.getIsSuccess()) { + Integer isOnline = voYsyResultPack.getVoYsyApiResult().getData().getInteger("status"); + if (1 == isOnline) { + vo.setOnline(true); + } else { + vo.setOnline(false); + } + } + } else if (StringUtils.isNotBlank(deploy.getDeviceUrl())) {//m3u8格式的,使用抓图测试是否在线 + boolean isOK = CamCaptureUtils.tryCaptureM3u8(deploy.getDeviceUrl()); + if (isOK) {//抓取成功,则在线 + vo.setOnline(true); + } else { + vo.setOnline(false); + } + } + } + } + }catch (Exception e){ + XxlJobHelper.log("==========检查设备在线报错=============="+e.getMessage()); + e.printStackTrace(); + vo.setOnline(false); + } + return vo; + } + + public static DeviceStatusVo checkM3u8Status(SurvDeviceDeploy deploy) throws Exception{ + DeviceStatusVo vo = new DeviceStatusVo(); + if(deploy!=null){ + vo.setDeployId(deploy.getId()); + if (StringUtils.isNotBlank(deploy.getDeviceUrl())) { + try { + boolean isOK = CamCaptureUtils.tryCaptureM3u8(deploy.getDeviceUrl()); + if (isOK) {//抓取成功,则在线 + vo.setOnline(true); + } else { + vo.setOnline(false); + } + }catch (Exception e){ + e.printStackTrace(); + XxlJobHelper.log("获取设备:{}状态失败:{}",deploy.getId(),e.getMessage()); + vo.setOnline(false); + } + } + } + return vo; + } +} diff --git a/src/main/java/com/wangbin/constant/PollutionConstants.java b/src/main/java/com/wangbin/constant/PollutionConstants.java deleted file mode 100644 index ff0b093..0000000 --- a/src/main/java/com/wangbin/constant/PollutionConstants.java +++ /dev/null @@ -1,36 +0,0 @@ -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/mapper/SurvDeviceDeployMapper.java b/src/main/java/com/wangbin/mapper/SurvDeviceDeployMapper.java deleted file mode 100644 index dc69e48..0000000 --- a/src/main/java/com/wangbin/mapper/SurvDeviceDeployMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -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/xml/SurvHisdataLivestockwaterErrorMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvHisdataLivestockwaterErrorMapper.xml deleted file mode 100644 index db94650..0000000 --- a/src/main/java/com/wangbin/mapper/xml/SurvHisdataLivestockwaterErrorMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/main/java/com/wangbin/mapper/xml/SurvHisdataLivestockwaterMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvHisdataLivestockwaterMapper.xml deleted file mode 100644 index a9a606e..0000000 --- a/src/main/java/com/wangbin/mapper/xml/SurvHisdataLivestockwaterMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/main/java/com/wangbin/mapper/xml/SurvHisdataOrientwaterErrorMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvHisdataOrientwaterErrorMapper.xml deleted file mode 100644 index 4a46805..0000000 --- a/src/main/java/com/wangbin/mapper/xml/SurvHisdataOrientwaterErrorMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/main/java/com/wangbin/mapper/xml/SurvHisdataOrientwaterMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvHisdataOrientwaterMapper.xml deleted file mode 100644 index 62ad189..0000000 --- a/src/main/java/com/wangbin/mapper/xml/SurvHisdataOrientwaterMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/main/java/com/wangbin/mapper/xml/SurvHisdataPestlightMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvHisdataPestlightMapper.xml deleted file mode 100644 index 800669b..0000000 --- a/src/main/java/com/wangbin/mapper/xml/SurvHisdataPestlightMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/main/java/com/wangbin/mapper/xml/SurvTransdataAirMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvTransdataAirMapper.xml deleted file mode 100644 index 5c62ae4..0000000 --- a/src/main/java/com/wangbin/mapper/xml/SurvTransdataAirMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/main/java/com/wangbin/mapper/xml/SurvTransdataLivestockwaterMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvTransdataLivestockwaterMapper.xml deleted file mode 100644 index 3583f54..0000000 --- a/src/main/java/com/wangbin/mapper/xml/SurvTransdataLivestockwaterMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/main/java/com/wangbin/mapper/xml/SurvTransdataPestlightMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvTransdataPestlightMapper.xml deleted file mode 100644 index 51a4db4..0000000 --- a/src/main/java/com/wangbin/mapper/xml/SurvTransdataPestlightMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/main/java/com/wangbin/mapper/xml/SurvTransdataSoilMapper.xml b/src/main/java/com/wangbin/mapper/xml/SurvTransdataSoilMapper.xml deleted file mode 100644 index 23d3404..0000000 --- a/src/main/java/com/wangbin/mapper/xml/SurvTransdataSoilMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/main/java/com/wangbin/service/ICommonService.java b/src/main/java/com/wangbin/service/ICommonService.java deleted file mode 100644 index a118faf..0000000 --- a/src/main/java/com/wangbin/service/ICommonService.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.wangbin.service; - -/** - * 处理业务的服务 - */ -public interface ICommonService { - -// void saveBaowen(String baowen); - - -} diff --git a/src/main/java/com/wangbin/service/ISurvTransdataSoilService.java b/src/main/java/com/wangbin/service/ISurvTransdataSoilService.java deleted file mode 100644 index 9caa3a7..0000000 --- a/src/main/java/com/wangbin/service/ISurvTransdataSoilService.java +++ /dev/null @@ -1,22 +0,0 @@ -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/SurvAlertRecordServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvAlertRecordServiceImpl.java deleted file mode 100644 index 03e617b..0000000 --- a/src/main/java/com/wangbin/service/Impl/SurvAlertRecordServiceImpl.java +++ /dev/null @@ -1,110 +0,0 @@ -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/SurvTransdataSoilServiceImpl.java b/src/main/java/com/wangbin/service/Impl/SurvTransdataSoilServiceImpl.java deleted file mode 100644 index 3f34e83..0000000 --- a/src/main/java/com/wangbin/service/Impl/SurvTransdataSoilServiceImpl.java +++ /dev/null @@ -1,97 +0,0 @@ -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/MultithreadTask.java b/src/main/java/com/wangbin/task/MultithreadTask.java deleted file mode 100644 index 6c806a0..0000000 --- a/src/main/java/com/wangbin/task/MultithreadTask.java +++ /dev/null @@ -1,68 +0,0 @@ -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/resources/application-local.yml b/src/main/resources/application-local.yml index 9f16aaf..975af60 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -53,7 +53,7 @@ spring: mybatis-plus: - mapper-locations: classpath*:/com/wangbin/mapper/xml/*Mapper.xml,classpath*:/com/wangbin/module/*/mapper/xml/*Mapper.xml + mapper-locations: classpath*:/com/lanhai/mapper/xml/*Mapper.xml,classpath*:/com/lanhai/module/*/mapper/xml/*Mapper.xml configuration: # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl @@ -61,7 +61,7 @@ mybatis-plus: logging: level: - com.wangbin.thread: error + com.lanhai.thread: error springfox: error xxl: diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 5313272..ef3058e 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -38,22 +38,22 @@ spring: 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 + redis: + port: 16379 + host: 192.168.0.75 + database: 11 + password: zhkj.20231120 + 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 + mapper-locations: classpath*:/com/lanhai/mapper/xml/*Mapper.xml,classpath*:/com/lanhai/module/*/mapper/xml/*Mapper.xml configuration: # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl @@ -61,7 +61,7 @@ mybatis-plus: logging: level: - com.wangbin.thread: error + com.lanhai.thread: error springfox: error xxl: diff --git a/src/test/java/com/wangbin/test/Test2.java b/src/test/java/com/lanhai/test/Test2.java similarity index 75% rename from src/test/java/com/wangbin/test/Test2.java rename to src/test/java/com/lanhai/test/Test2.java index ca1c836..e2c8bd6 100644 --- a/src/test/java/com/wangbin/test/Test2.java +++ b/src/test/java/com/lanhai/test/Test2.java @@ -1,12 +1,12 @@ -package com.wangbin.test; +package com.lanhai.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 com.lanhai.LanHaiApplication; +import com.lanhai.entity.SurvDeviceDeploy; +import com.lanhai.service.ICommonService; +import com.lanhai.service.ISurvDeviceDeployService; +import com.lanhai.service.ISurvTransdataOrientwaterService; +import com.lanhai.service.ISurvTransdataSoilService; +import com.lanhai.util.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; @@ -15,7 +15,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(classes = {WangbinApplication.class}) +@SpringBootTest(classes = {LanHaiApplication.class}) @Slf4j public class Test2 {