Compare commits

...

7 Commits

35 changed files with 1065 additions and 105 deletions

View File

@ -6,9 +6,13 @@ spring:
druid: druid:
# 主库数据源 # 主库数据源
master: master:
url: jdbc:mysql://182.40.196.154:3306/wumei2.4-test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 #url: jdbc:mysql://182.40.196.154:3306/wumei2.4-test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: wumei2.4-test #username: wumei2.4-test
password: JyRiZbFSZZiJBrSa #password: JyRiZbFSZZiJBrSa
url: jdbc:mysql://w.hanzhenyun.com:3306/wumei2.4?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: wumei2.4
password: rtB8EhbRRYSGyxHw
# 从库数据源 # 从库数据源
slave: slave:
enabled: false # 从数据源开关/默认关闭 enabled: false # 从数据源开关/默认关闭

View File

@ -62,8 +62,8 @@ server:
spring: spring:
# 环境配置dev=开发环境prod=生产环境 # 环境配置dev=开发环境prod=生产环境
profiles: profiles:
# active: dev # 环境配置dev=开发环境prod=生产环境 active: dev # 环境配置dev=开发环境prod=生产环境
active: prod # 环境配置dev=开发环境prod=生产环境 #active: prod # 环境配置dev=开发环境prod=生产环境
# 资源信息 # 资源信息
messages: messages:
# 国际化资源文件路径 # 国际化资源文件路径

View File

@ -61,7 +61,8 @@ public class ResourcesConfig implements WebMvcConfigurer
"/tool/gen/**"); "/tool/gen/**");
//配置项目数据隔离拦截器 //配置项目数据隔离拦截器
registry.addInterceptor(projectDataIsolationInterceptor) registry.addInterceptor(projectDataIsolationInterceptor)
.addPathPatterns("/gis/groups/**", "/gis/legend/**","/gis/site/**","/project/**","/system/**","/device/statistics/**"); .addPathPatterns("/gis/groups/**", "/gis/legend/**","/gis/site/**","/project/**","/system/**","/device/statistics/**")
.addPathPatterns("/media/yingshiyun/**");
} }
/** /**

View File

@ -126,8 +126,8 @@ public class DeviceAlarmController extends BaseController {
* 统计不同设备数量 * 统计不同设备数量
*/ */
@GetMapping("/countByType") @GetMapping("/countByType")
public AjaxResult getDeviceCountByType() { public AjaxResult getDeviceCountByType(Long projectId) {
return AjaxResult.success(deviceInformationManager.getAllDeviceCount()); return AjaxResult.success(deviceInformationManager.getAllDeviceCount(projectId));
} }
/** /**

View File

@ -44,13 +44,14 @@ public class DeviceInfoController extends BaseController {
* 查询全部设备立杆列表 * 查询全部设备立杆列表
*/ */
@GetMapping("/allList") @GetMapping("/allList")
public AjaxResult getAllList() { public AjaxResult getAllList(Long projectId) {
List<Map<String, Object>> result =new ArrayList<>(); List<Map<String, Object>> result =new ArrayList<>();
//气象 //气象
LambdaQueryWrapper<DeviceInformationMeteorology> queryWrapper1 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DeviceInformationMeteorology> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.select(DeviceInformationMeteorology::getId,DeviceInformationMeteorology::getName, queryWrapper1.select(DeviceInformationMeteorology::getId,DeviceInformationMeteorology::getName,
DeviceInformationMeteorology::getLongitude,DeviceInformationMeteorology::getLatitude, DeviceInformationMeteorology::getLongitude,DeviceInformationMeteorology::getLatitude,
DeviceInformationMeteorology::getDeviceEncoding); DeviceInformationMeteorology::getDeviceEncoding)
.eq(DeviceInformationMeteorology::getProjectId,projectId);
List<DeviceInformationMeteorology> deviceInformationMeteorologies = deviceInformationMeteorologyMapper.selectList(queryWrapper1); List<DeviceInformationMeteorology> deviceInformationMeteorologies = deviceInformationMeteorologyMapper.selectList(queryWrapper1);
Map<String,Object> obj1=new HashMap<>(); Map<String,Object> obj1=new HashMap<>();
obj1.put("type","气象"); obj1.put("type","气象");
@ -60,7 +61,8 @@ public class DeviceInfoController extends BaseController {
LambdaQueryWrapper<DeviceInformationWorms> queryWrapper2 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DeviceInformationWorms> queryWrapper2 = new LambdaQueryWrapper<>();
queryWrapper2.select(DeviceInformationWorms::getId,DeviceInformationWorms::getName, queryWrapper2.select(DeviceInformationWorms::getId,DeviceInformationWorms::getName,
DeviceInformationWorms::getLongitude,DeviceInformationWorms::getLatitude, DeviceInformationWorms::getLongitude,DeviceInformationWorms::getLatitude,
DeviceInformationWorms::getDeviceEncoding); DeviceInformationWorms::getDeviceEncoding)
.eq(DeviceInformationWorms::getProjectId,projectId);
List<DeviceInformationWorms> deviceInformationWorms = deviceInformationWormsMapper.selectList(queryWrapper2); List<DeviceInformationWorms> deviceInformationWorms = deviceInformationWormsMapper.selectList(queryWrapper2);
Map<String,Object> obj2=new HashMap<>(); Map<String,Object> obj2=new HashMap<>();
obj2.put("type","虫情"); obj2.put("type","虫情");
@ -71,7 +73,8 @@ public class DeviceInfoController extends BaseController {
LambdaQueryWrapper<DeviceInformationMoisture> queryWrapper3 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DeviceInformationMoisture> queryWrapper3 = new LambdaQueryWrapper<>();
queryWrapper3.select(DeviceInformationMoisture::getId,DeviceInformationMoisture::getName, queryWrapper3.select(DeviceInformationMoisture::getId,DeviceInformationMoisture::getName,
DeviceInformationMoisture::getLongitude,DeviceInformationMoisture::getLatitude, DeviceInformationMoisture::getLongitude,DeviceInformationMoisture::getLatitude,
DeviceInformationMoisture::getDeviceEncoding); DeviceInformationMoisture::getDeviceEncoding)
.eq(DeviceInformationMoisture::getProjectId,projectId);
List<DeviceInformationMoisture> deviceInformationMoistures = deviceInformationMoistureMapper.selectList(queryWrapper3); List<DeviceInformationMoisture> deviceInformationMoistures = deviceInformationMoistureMapper.selectList(queryWrapper3);
Map<String,Object> obj3=new HashMap<>(); Map<String,Object> obj3=new HashMap<>();
obj3.put("type","墒情"); obj3.put("type","墒情");
@ -82,7 +85,8 @@ public class DeviceInfoController extends BaseController {
LambdaQueryWrapper<DeviceInformationTargetpests> queryWrapper4 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DeviceInformationTargetpests> queryWrapper4 = new LambdaQueryWrapper<>();
queryWrapper4.select(DeviceInformationTargetpests::getId,DeviceInformationTargetpests::getName, queryWrapper4.select(DeviceInformationTargetpests::getId,DeviceInformationTargetpests::getName,
DeviceInformationTargetpests::getLongitude,DeviceInformationTargetpests::getLatitude, DeviceInformationTargetpests::getLongitude,DeviceInformationTargetpests::getLatitude,
DeviceInformationTargetpests::getDeviceEncoding); DeviceInformationTargetpests::getDeviceEncoding)
.eq(DeviceInformationTargetpests::getProjectId,projectId);
List<DeviceInformationTargetpests> deviceInformationTargetpests = deviceInformationTargetpestsMapper.selectList(queryWrapper4); List<DeviceInformationTargetpests> deviceInformationTargetpests = deviceInformationTargetpestsMapper.selectList(queryWrapper4);
Map<String,Object> obj4=new HashMap<>(); Map<String,Object> obj4=new HashMap<>();
obj4.put("type","杀虫灯"); obj4.put("type","杀虫灯");
@ -93,7 +97,8 @@ public class DeviceInfoController extends BaseController {
LambdaQueryWrapper<DeviceInformationMiaoqing> queryWrapper5 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DeviceInformationMiaoqing> queryWrapper5 = new LambdaQueryWrapper<>();
queryWrapper5.select(DeviceInformationMiaoqing::getId,DeviceInformationMiaoqing::getName, queryWrapper5.select(DeviceInformationMiaoqing::getId,DeviceInformationMiaoqing::getName,
DeviceInformationMiaoqing::getLongitude,DeviceInformationMiaoqing::getLatitude, DeviceInformationMiaoqing::getLongitude,DeviceInformationMiaoqing::getLatitude,
DeviceInformationMiaoqing::getDeviceEncoding); DeviceInformationMiaoqing::getDeviceEncoding)
.eq(DeviceInformationMiaoqing::getProjectId,projectId);
List<DeviceInformationMiaoqing> deviceInformationMiaoqings = deviceInformationMiaoqingMapper.selectList(queryWrapper5); List<DeviceInformationMiaoqing> deviceInformationMiaoqings = deviceInformationMiaoqingMapper.selectList(queryWrapper5);
Map<String,Object> obj5=new HashMap<>(); Map<String,Object> obj5=new HashMap<>();
obj5.put("type","苗情"); obj5.put("type","苗情");
@ -104,7 +109,8 @@ public class DeviceInfoController extends BaseController {
LambdaQueryWrapper<DeviceInformationMonitor> queryWrapper6 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DeviceInformationMonitor> queryWrapper6 = new LambdaQueryWrapper<>();
queryWrapper6.select(DeviceInformationMonitor::getId,DeviceInformationMonitor::getName, queryWrapper6.select(DeviceInformationMonitor::getId,DeviceInformationMonitor::getName,
DeviceInformationMonitor::getLongitude,DeviceInformationMonitor::getLatitude, DeviceInformationMonitor::getLongitude,DeviceInformationMonitor::getLatitude,
DeviceInformationMonitor::getDeviceEncoding); DeviceInformationMonitor::getDeviceEncoding)
.eq(DeviceInformationMonitor::getProjectId,projectId);
List<DeviceInformationMonitor> deviceInformationMonitors = deviceInformationMonitorMapper.selectList(queryWrapper6); List<DeviceInformationMonitor> deviceInformationMonitors = deviceInformationMonitorMapper.selectList(queryWrapper6);
Map<String,Object> obj6=new HashMap<>(); Map<String,Object> obj6=new HashMap<>();
obj6.put("type","监控"); obj6.put("type","监控");
@ -118,10 +124,11 @@ public class DeviceInfoController extends BaseController {
* 查询气象设备列表 * 查询气象设备列表
*/ */
@GetMapping("/weatherList") @GetMapping("/weatherList")
public AjaxResult getDeviceList() { public AjaxResult getDeviceList(Long projectId) {
LambdaQueryWrapper<DeviceInformationMeteorology> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DeviceInformationMeteorology> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(DeviceInformationMeteorology::getId,DeviceInformationMeteorology::getName, queryWrapper.select(DeviceInformationMeteorology::getId,DeviceInformationMeteorology::getName,
DeviceInformationMeteorology::getLongitude,DeviceInformationMeteorology::getLatitude); DeviceInformationMeteorology::getLongitude,DeviceInformationMeteorology::getLatitude)
.eq(DeviceInformationMeteorology::getProjectId,projectId);
return success(deviceInformationMeteorologyMapper.selectList(queryWrapper)); return success(deviceInformationMeteorologyMapper.selectList(queryWrapper));
} }
@ -130,10 +137,11 @@ public class DeviceInfoController extends BaseController {
* 查询虫情设备列表 * 查询虫情设备列表
*/ */
@GetMapping("/wormList") @GetMapping("/wormList")
public AjaxResult getWeatherList() { public AjaxResult getWeatherList(Long projectId) {
LambdaQueryWrapper<DeviceInformationWorms> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DeviceInformationWorms> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(DeviceInformationWorms::getId,DeviceInformationWorms::getName, queryWrapper.select(DeviceInformationWorms::getId,DeviceInformationWorms::getName,
DeviceInformationWorms::getLongitude,DeviceInformationWorms::getLatitude); DeviceInformationWorms::getLongitude,DeviceInformationWorms::getLatitude)
.eq(DeviceInformationWorms::getProjectId,projectId);
return success(deviceInformationWormsMapper.selectList(queryWrapper)); return success(deviceInformationWormsMapper.selectList(queryWrapper));
} }
@ -141,40 +149,46 @@ public class DeviceInfoController extends BaseController {
* 查询墒情设备列表 * 查询墒情设备列表
*/ */
@GetMapping("/soilList") @GetMapping("/soilList")
public AjaxResult getSoilList() { public AjaxResult getSoilList(Long projectId) {
LambdaQueryWrapper<DeviceInformationMoisture> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DeviceInformationMoisture> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(DeviceInformationMoisture::getId,DeviceInformationMoisture::getName, queryWrapper.select(DeviceInformationMoisture::getId,DeviceInformationMoisture::getName,
DeviceInformationMoisture::getLongitude,DeviceInformationMoisture::getLatitude); DeviceInformationMoisture::getLongitude,DeviceInformationMoisture::getLatitude)
.eq(DeviceInformationMoisture::getProjectId,projectId);
return success(deviceInformationMoistureMapper.selectList(queryWrapper)); return success(deviceInformationMoistureMapper.selectList(queryWrapper));
} }
/** /**
* 查询杀虫灯设备列表 * 查询杀虫灯设备列表
*/ */
@GetMapping("/lightList") @GetMapping("/lightList")
public AjaxResult getLightList() { public AjaxResult getLightList(Long projectId) {
LambdaQueryWrapper<DeviceInformationTargetpests> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DeviceInformationTargetpests> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(DeviceInformationTargetpests::getId,DeviceInformationTargetpests::getName, queryWrapper.select(DeviceInformationTargetpests::getId,DeviceInformationTargetpests::getName,
DeviceInformationTargetpests::getLongitude,DeviceInformationTargetpests::getLatitude); DeviceInformationTargetpests::getLongitude,DeviceInformationTargetpests::getLatitude)
.eq(DeviceInformationTargetpests::getProjectId,projectId);
return success(deviceInformationTargetpestsMapper.selectList(queryWrapper)); return success(deviceInformationTargetpestsMapper.selectList(queryWrapper));
} }
/** /**
* 查询苗情设备列表 * 查询苗情设备列表
*/ */
@GetMapping("/miaoList") @GetMapping("/miaoList")
public AjaxResult getmiaoList() { public AjaxResult getmiaoList(Long projectId) {
LambdaQueryWrapper<DeviceInformationMiaoqing> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DeviceInformationMiaoqing> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(DeviceInformationMiaoqing::getId,DeviceInformationMiaoqing::getName, queryWrapper.select(DeviceInformationMiaoqing::getId,DeviceInformationMiaoqing::getName,
DeviceInformationMiaoqing::getLongitude,DeviceInformationMiaoqing::getLatitude); DeviceInformationMiaoqing::getLongitude,DeviceInformationMiaoqing::getLatitude)
.eq(DeviceInformationMiaoqing::getProjectId,projectId);
return success(deviceInformationMiaoqingMapper.selectList(queryWrapper)); return success(deviceInformationMiaoqingMapper.selectList(queryWrapper));
} }
/** /**
* 查询监控站设备列表 * 查询监控站设备列表
*/ */
@GetMapping("/monitorList") @GetMapping("/monitorList")
public AjaxResult getmonitorList() { public AjaxResult getmonitorList(Long projectId) {
LambdaQueryWrapper<DeviceInformationMonitor> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DeviceInformationMonitor> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(DeviceInformationMonitor::getId,DeviceInformationMonitor::getName, queryWrapper.select(DeviceInformationMonitor::getId,DeviceInformationMonitor::getName,
DeviceInformationMonitor::getLongitude,DeviceInformationMonitor::getLatitude); DeviceInformationMonitor::getLongitude,DeviceInformationMonitor::getLatitude)
.eq(DeviceInformationMonitor::getProjectId,projectId);
return success(deviceInformationMonitorMapper.selectList(queryWrapper)); return success(deviceInformationMonitorMapper.selectList(queryWrapper));
} }
} }

View File

@ -3,6 +3,7 @@ package com.fastbee.data.controller.aaScreenAgricultural.deviceBaseInfo;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.fastbee.deviceInfo.mapper.DeviceInformationMeteorologyMapper;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@ -35,11 +36,13 @@ public class DeviceInformationMeteorologyController extends BaseController
{ {
@Autowired @Autowired
private IDeviceInformationMeteorologyService deviceInformationMeteorologyService; private IDeviceInformationMeteorologyService deviceInformationMeteorologyService;
@Autowired
private DeviceInformationMeteorologyMapper deviceInformationMeteorologyMapper;
/** /**
* 查询气象设备基础信息列表 * 查询气象设备基础信息列表
*/ */
@PreAuthorize("@ss.hasPermi('deviceInfo:meteorology:list')") //@PreAuthorize("@ss.hasPermi('deviceInfo:meteorology:list')")
@GetMapping("/list") @GetMapping("/list")
@ApiOperation("查询气象设备基础信息列表") @ApiOperation("查询气象设备基础信息列表")
public TableDataInfo list(DeviceInformationMeteorology deviceInformationMeteorology) public TableDataInfo list(DeviceInformationMeteorology deviceInformationMeteorology)
@ -75,7 +78,7 @@ public class DeviceInformationMeteorologyController extends BaseController
/** /**
* 新增气象设备基础信息 * 新增气象设备基础信息
*/ */
@PreAuthorize("@ss.hasPermi('deviceInfo:meteorology:add')") //@PreAuthorize("@ss.hasPermi('deviceInfo:meteorology:add')")
@PostMapping @PostMapping
@ApiOperation("新增气象设备基础信息") @ApiOperation("新增气象设备基础信息")
public AjaxResult add(@RequestBody DeviceInformationMeteorology deviceInformationMeteorology) public AjaxResult add(@RequestBody DeviceInformationMeteorology deviceInformationMeteorology)
@ -86,7 +89,7 @@ public class DeviceInformationMeteorologyController extends BaseController
/** /**
* 修改气象设备基础信息 * 修改气象设备基础信息
*/ */
@PreAuthorize("@ss.hasPermi('deviceInfo:meteorology:edit')") //@PreAuthorize("@ss.hasPermi('deviceInfo:meteorology:edit')")
@PutMapping @PutMapping
@ApiOperation("修改气象设备基础信息") @ApiOperation("修改气象设备基础信息")
public AjaxResult edit(@RequestBody DeviceInformationMeteorology deviceInformationMeteorology) public AjaxResult edit(@RequestBody DeviceInformationMeteorology deviceInformationMeteorology)
@ -97,11 +100,13 @@ public class DeviceInformationMeteorologyController extends BaseController
/** /**
* 删除气象设备基础信息 * 删除气象设备基础信息
*/ */
@PreAuthorize("@ss.hasPermi('deviceInfo:meteorology:remove')") //@PreAuthorize("@ss.hasPermi('deviceInfo:meteorology:remove')")
@DeleteMapping("/{ids}") @DeleteMapping("/{id}")
@ApiOperation("删除气象设备基础信息") @ApiOperation("删除气象设备基础信息")
public AjaxResult remove(@PathVariable Long[] ids) public AjaxResult remove(@PathVariable Long id)
{ {
return toAjax(deviceInformationMeteorologyService.deleteDeviceInformationMeteorologyByIds(ids)); int flag=deviceInformationMeteorologyMapper.deleteDeviceInformationMeteorologyById(id);
return toAjax(flag);
//return toAjax(deviceInformationMeteorologyService.deleteDeviceInformationMeteorologyByIds(ids));
} }
} }

View File

@ -3,6 +3,7 @@ package com.fastbee.data.controller.aaScreenAgricultural.deviceBaseInfo;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.fastbee.deviceInfo.mapper.DeviceInformationMonitorMapper;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@ -35,11 +36,13 @@ public class DeviceInformationMonitorController extends BaseController
{ {
@Autowired @Autowired
private IDeviceInformationMonitorService deviceInformationMonitorService; private IDeviceInformationMonitorService deviceInformationMonitorService;
@Autowired
private DeviceInformationMonitorMapper deviceInformationMonitorMapper;
/** /**
* 查询监控站设备基础信息列表 * 查询监控站设备基础信息列表
*/ */
@PreAuthorize("@ss.hasPermi('deviceInfo:monitor:list')") //@PreAuthorize("@ss.hasPermi('deviceInfo:monitor:list')")
@GetMapping("/list") @GetMapping("/list")
@ApiOperation("查询监控站设备基础信息列表") @ApiOperation("查询监控站设备基础信息列表")
public TableDataInfo list(DeviceInformationMonitor deviceInformationMonitor) public TableDataInfo list(DeviceInformationMonitor deviceInformationMonitor)
@ -53,7 +56,7 @@ public class DeviceInformationMonitorController extends BaseController
* 导出监控站设备基础信息列表 * 导出监控站设备基础信息列表
*/ */
@ApiOperation("导出监控站设备基础信息列表") @ApiOperation("导出监控站设备基础信息列表")
@PreAuthorize("@ss.hasPermi('deviceInfo:monitor:export')") //@PreAuthorize("@ss.hasPermi('deviceInfo:monitor:export')")
@PostMapping("/export") @PostMapping("/export")
public void export(HttpServletResponse response, DeviceInformationMonitor deviceInformationMonitor) public void export(HttpServletResponse response, DeviceInformationMonitor deviceInformationMonitor)
{ {
@ -75,7 +78,7 @@ public class DeviceInformationMonitorController extends BaseController
/** /**
* 新增监控站设备基础信息 * 新增监控站设备基础信息
*/ */
@PreAuthorize("@ss.hasPermi('deviceInfo:monitor:add')") //@PreAuthorize("@ss.hasPermi('deviceInfo:monitor:add')")
@PostMapping @PostMapping
@ApiOperation("新增监控站设备基础信息") @ApiOperation("新增监控站设备基础信息")
public AjaxResult add(@RequestBody DeviceInformationMonitor deviceInformationMonitor) public AjaxResult add(@RequestBody DeviceInformationMonitor deviceInformationMonitor)
@ -86,7 +89,7 @@ public class DeviceInformationMonitorController extends BaseController
/** /**
* 修改监控站设备基础信息 * 修改监控站设备基础信息
*/ */
@PreAuthorize("@ss.hasPermi('deviceInfo:monitor:edit')") //@PreAuthorize("@ss.hasPermi('deviceInfo:monitor:edit')")
@PutMapping @PutMapping
@ApiOperation("修改监控站设备基础信息") @ApiOperation("修改监控站设备基础信息")
public AjaxResult edit(@RequestBody DeviceInformationMonitor deviceInformationMonitor) public AjaxResult edit(@RequestBody DeviceInformationMonitor deviceInformationMonitor)
@ -97,11 +100,13 @@ public class DeviceInformationMonitorController extends BaseController
/** /**
* 删除监控站设备基础信息 * 删除监控站设备基础信息
*/ */
@PreAuthorize("@ss.hasPermi('deviceInfo:monitor:remove')") //@PreAuthorize("@ss.hasPermi('deviceInfo:monitor:remove')")
@DeleteMapping("/{ids}") @DeleteMapping("/{id}")
@ApiOperation("删除监控站设备基础信息") @ApiOperation("删除监控站设备基础信息")
public AjaxResult remove(@PathVariable Long[] ids) public AjaxResult remove(@PathVariable Long id)
{ {
return toAjax(deviceInformationMonitorService.deleteDeviceInformationMonitorByIds(ids)); //return toAjax(deviceInformationMonitorService.deleteDeviceInformationMonitorByIds(ids));
int flag=deviceInformationMonitorMapper.deleteDeviceInformationMonitorById(id);
return toAjax(flag);
} }
} }

View File

@ -21,8 +21,8 @@ public class DeviceRealtimedataMeteorologyController {
* 获取最新的一条气象数据 * 获取最新的一条气象数据
*/ */
@GetMapping(value = "/weather/realtimedata") @GetMapping(value = "/weather/realtimedata")
public AjaxResult getLatestWeatherRealtimedata() { public AjaxResult getLatestWeatherRealtimedata(String deviceEncoding) {
return AjaxResult.success(deviceRealtimedataMeteorologyService.getLatestWeatherRealtimedata()); return AjaxResult.success(deviceRealtimedataMeteorologyService.getLatestWeatherRealtimedata(deviceEncoding));
} }
} }

View File

@ -2,6 +2,7 @@ package com.fastbee.data.controller.aaScreenAgricultural.deviceRealTimeData;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.fastbee.common.core.domain.AjaxResult; import com.fastbee.common.core.domain.AjaxResult;
import com.fastbee.common.holder.ProjectHolder;
import com.fastbee.deviceData.api.yingshiyun.service.YingshiyunService; import com.fastbee.deviceData.api.yingshiyun.service.YingshiyunService;
import com.fastbee.deviceInfo.domain.DeviceInformationMonitor; import com.fastbee.deviceInfo.domain.DeviceInformationMonitor;
import com.fastbee.deviceInfo.mapper.DeviceInformationMonitorMapper; import com.fastbee.deviceInfo.mapper.DeviceInformationMonitorMapper;
@ -30,14 +31,24 @@ public class DeviceRealtimedataSeedlingGrowthController {
* 获取苗情监测监控设备列表 * 获取苗情监测监控设备列表
*/ */
@GetMapping("/monitorDeviceList") @GetMapping("/monitorDeviceList")
public AjaxResult getMonitorDeviceList() { public AjaxResult getMonitorDeviceList(Long projectId) {
System.err.println("/monitorDeviceList");
System.err.println("projectId:"+projectId);
List<DeviceInformationMonitor> list = new LambdaQueryChainWrapper<>(monitorMapper) List<DeviceInformationMonitor> list = new LambdaQueryChainWrapper<>(monitorMapper)
.select(DeviceInformationMonitor::getId, .select(DeviceInformationMonitor::getId,
DeviceInformationMonitor::getName, DeviceInformationMonitor::getName,
DeviceInformationMonitor::getDeviceEncoding, DeviceInformationMonitor::getDeviceEncoding,
DeviceInformationMonitor::getLatitude, DeviceInformationMonitor::getLatitude,
DeviceInformationMonitor::getLongitude) DeviceInformationMonitor::getLongitude,
DeviceInformationMonitor::getRemarksInformation,
DeviceInformationMonitor::getProjectId)
.eq(DeviceInformationMonitor::getProjectId,projectId)
//.eq(DeviceInformationMonitor::getDeviceEncoding,deviceEncoding)
.list(); .list();
for(int i=0;i<list.size();i++)
{
System.err.println("{"+list.get(i).getDeviceEncoding()+":"+list.get(i).getProjectId()+"}");
}
//获取监控播放地址 //获取监控播放地址
list.forEach(this::setPlayUrl); list.forEach(this::setPlayUrl);
return AjaxResult.success(list); return AjaxResult.success(list);
@ -57,5 +68,23 @@ public class DeviceRealtimedataSeedlingGrowthController {
Object accessToken = videoPlayMap.get("accessToken"); Object accessToken = videoPlayMap.get("accessToken");
monitor.setAccessToken(accessToken.toString()); monitor.setAccessToken(accessToken.toString());
} }
if(videoPlayMap.containsKey("status")){
Object status=videoPlayMap.get("status");//设备在线状态0=离线1=在线
Object statusDesc=videoPlayMap.get("statusDesc");//设备在线状态描述
monitor.setStatusDesc(statusDesc.toString());
monitor.setStatus((Long) status);
}
} }
/**
* 更新设备状态测试接口
* @return
* @throws Exception
*/
@GetMapping("/status")
public AjaxResult getMonitorDeviceRealtimeStatusData() throws Exception {
return AjaxResult.success(yingshiyunService.getMonitorDeviceRealtimeStatusData());
}
} }

View File

@ -18,16 +18,16 @@ public class WeatherController {
* 获取七天的天气预报 * 获取七天的天气预报
*/ */
@GetMapping("/qitian") @GetMapping("/qitian")
public AjaxResult getWeather() { public AjaxResult getWeather(Long projectId) {
return AjaxResult.success(TianqiApi.QitianApi()); return AjaxResult.success(TianqiApi.QitianApi(projectId));
} }
/** /**
* 获取实时天气 * 获取实时天气
*/ */
@GetMapping("/shishi") @GetMapping("/shishi")
public AjaxResult getWeatherShiShi() { public AjaxResult getWeatherShiShi(Long projectId) {
return AjaxResult.success(TianqiApi.weatherNow()); return AjaxResult.success(TianqiApi.weatherNow(projectId));
} }
} }

View File

@ -0,0 +1,110 @@
package com.fastbee.data.controller.yingshiIntegration;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.fastbee.common.annotation.Log;
import com.fastbee.common.core.controller.BaseController;
import com.fastbee.common.core.domain.AjaxResult;
import com.fastbee.common.enums.BusinessType;
import com.fastbee.deviceData.domain.NgYingshiCloudIntegrationInfo;
import com.fastbee.deviceData.service.INgYingshiCloudIntegrationInfoService;
import com.fastbee.common.utils.poi.ExcelUtil;
import com.fastbee.common.core.page.TableDataInfo;
/**
* 萤石云对接信息Controller
*
* @author kerwincui
* @date 2025-01-09
*/
@RestController
@RequestMapping("/deviceData/info")
@Api(tags = "萤石云对接信息")
public class NgYingshiCloudIntegrationInfoController extends BaseController
{
@Autowired
private INgYingshiCloudIntegrationInfoService ngYingshiCloudIntegrationInfoService;
/**
* 查询萤石云对接信息列表
*/
@PreAuthorize("@ss.hasPermi('deviceData:info:list')")
@GetMapping("/list")
@ApiOperation("查询萤石云对接信息列表")
public TableDataInfo list(NgYingshiCloudIntegrationInfo ngYingshiCloudIntegrationInfo)
{
startPage();
List<NgYingshiCloudIntegrationInfo> list = ngYingshiCloudIntegrationInfoService.selectNgYingshiCloudIntegrationInfoList(ngYingshiCloudIntegrationInfo);
return getDataTable(list);
}
/**
* 导出萤石云对接信息列表
*/
@ApiOperation("导出萤石云对接信息列表")
@PreAuthorize("@ss.hasPermi('deviceData:info:export')")
@PostMapping("/export")
public void export(HttpServletResponse response, NgYingshiCloudIntegrationInfo ngYingshiCloudIntegrationInfo)
{
List<NgYingshiCloudIntegrationInfo> list = ngYingshiCloudIntegrationInfoService.selectNgYingshiCloudIntegrationInfoList(ngYingshiCloudIntegrationInfo);
ExcelUtil<NgYingshiCloudIntegrationInfo> util = new ExcelUtil<NgYingshiCloudIntegrationInfo>(NgYingshiCloudIntegrationInfo.class);
util.exportExcel(response, list, "萤石云对接信息数据");
}
/**
* 获取萤石云对接信息详细信息
*/
@PreAuthorize("@ss.hasPermi('deviceData:info:query')")
@GetMapping(value = "/{id}")
@ApiOperation("获取萤石云对接信息详细信息")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return success(ngYingshiCloudIntegrationInfoService.selectNgYingshiCloudIntegrationInfoById(id));
}
/**
* 新增萤石云对接信息
*/
@PreAuthorize("@ss.hasPermi('deviceData:info:add')")
@PostMapping
@ApiOperation("新增萤石云对接信息")
public AjaxResult add(@RequestBody NgYingshiCloudIntegrationInfo ngYingshiCloudIntegrationInfo)
{
return toAjax(ngYingshiCloudIntegrationInfoService.insertNgYingshiCloudIntegrationInfo(ngYingshiCloudIntegrationInfo));
}
/**
* 修改萤石云对接信息
*/
@PreAuthorize("@ss.hasPermi('deviceData:info:edit')")
@PutMapping
@ApiOperation("修改萤石云对接信息")
public AjaxResult edit(@RequestBody NgYingshiCloudIntegrationInfo ngYingshiCloudIntegrationInfo)
{
return toAjax(ngYingshiCloudIntegrationInfoService.updateNgYingshiCloudIntegrationInfo(ngYingshiCloudIntegrationInfo));
}
/**
* 删除萤石云对接信息
*/
@PreAuthorize("@ss.hasPermi('deviceData:info:remove')")
@DeleteMapping("/{ids}")
@ApiOperation("删除萤石云对接信息")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(ngYingshiCloudIntegrationInfoService.deleteNgYingshiCloudIntegrationInfoByIds(ids));
}
}

View File

@ -15,11 +15,19 @@ public class TianqiApi {
/** /**
* 获取未来天气预测 * 获取未来天气预测
*/ */
public static JSONObject QitianApi() { public static JSONObject QitianApi(Long projectId) {
String location="";
if(projectId==35){//黑龙江项目
location="YBMUBR41ZWVC";
}else if(projectId==39){//开鲁
location="WXY201PUQV5D";
}
// System.out.println(location);
String url = UrlConstant.QitianApi + "?key=" + String url = UrlConstant.QitianApi + "?key=" +
UrlConstant.PrivateKey + UrlConstant.PrivateKey +
"&location=YBMUBR41ZWVC&language=zh-Hans&unit=c";//指定URL "&location="+location+"&language=zh-Hans&unit=c";//指定URL
// System.out.println(url);
HttpResponse execute = HttpUtil.createGet(url).execute(); HttpResponse execute = HttpUtil.createGet(url).execute();
if (execute.getStatus() == HttpStatus.HTTP_OK) { if (execute.getStatus() == HttpStatus.HTTP_OK) {
JSONObject jsonObject = new JSONObject(execute.body()); JSONObject jsonObject = new JSONObject(execute.body());
@ -33,10 +41,19 @@ public class TianqiApi {
/** /**
* 获取天气实况 * 获取天气实况
*/ */
public static JSONObject weatherNow() { public static JSONObject weatherNow(Long projectId) {
String location="";
if(projectId==35){//黑龙江项目
location="YBMUBR41ZWVC";
}else if(projectId==39){//开鲁项目
location="WXY201PUQV5D";
}
// System.out.println(location);
String url = UrlConstant.ShishiApi + "?key=" + String url = UrlConstant.ShishiApi + "?key=" +
UrlConstant.PrivateKey + UrlConstant.PrivateKey +
"&location=YBMUBR41ZWVC&language=zh-Hans&unit=c";//指定URL "&location="+location+"&language=zh-Hans&unit=c";//指定URL
// System.out.println(url);
HttpResponse execute = HttpUtil.createGet(url).execute(); HttpResponse execute = HttpUtil.createGet(url).execute();
if (execute.getStatus() == HttpStatus.HTTP_OK) { if (execute.getStatus() == HttpStatus.HTTP_OK) {
JSONObject jsonObject = new JSONObject(execute.body()); JSONObject jsonObject = new JSONObject(execute.body());
@ -71,7 +88,15 @@ public class TianqiApi {
return null; return null;
} }
public static void main(String[] args) { public static void main(String[] args)
TianqiApi.weatherNow(); {
TianqiApi.weatherNow(39L);
/*String url="https://api.seniverse.com/v3/location/search.json?key="+UrlConstant.PrivateKey
+"&q="+"开鲁";
HttpResponse execute = HttpUtil.createGet(url).execute();
if (execute.getStatus() == HttpStatus.HTTP_OK) {
JSONObject jsonObject = new JSONObject(execute.body());
System.out.println("jsonObject = " + jsonObject);
}*/
} }
} }

View File

@ -4,8 +4,17 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.fastbee.common.holder.ProjectHolder;
import com.fastbee.deviceData.domain.NgYingshiCloudIntegrationInfo;
import com.fastbee.deviceData.mapper.NgYingshiCloudIntegrationInfoMapper;
import com.fastbee.deviceInfo.domain.DeviceInformationMonitor;
import com.fastbee.deviceInfo.mapper.DeviceInformationMonitorMapper;
import com.fastbee.deviceInfo.service.IDeviceInformationMonitorService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -13,8 +22,10 @@ import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Service @Service
@ -22,16 +33,101 @@ public class YingshiyunService {
@Autowired @Autowired
private StringRedisTemplate stringRedisTemplate; private StringRedisTemplate stringRedisTemplate;
@Autowired
private DeviceInformationMonitorMapper deviceInformationMonitorMapper;
@Autowired
private NgYingshiCloudIntegrationInfoMapper ngYingshiCloudIntegrationInfoMapper;
@Autowired
private DeviceInformationMonitorMapper monitorMapper;
@Autowired
private NgYingshiCloudIntegrationInfoMapper yingshiCloudIntegrationInfoMapper;
@Autowired
private IDeviceInformationMonitorService deviceInformationMonitorService;
/**
* 获取监控设备实时状态并更新
*/
public String getMonitorDeviceRealtimeStatusData() throws Exception{
try{
//获取所有监控设备编码列表
List<DeviceInformationMonitor> monitorList=new LambdaQueryChainWrapper<>(monitorMapper)
.select(DeviceInformationMonitor::getDeviceEncoding,DeviceInformationMonitor::getStatus,DeviceInformationMonitor::getId,DeviceInformationMonitor::getProjectId)
.list();
System.err.println("monitorLIST:"+monitorList);
//获取所有萤石云对接信息列表
List<NgYingshiCloudIntegrationInfo> integrationInfoList=new LambdaQueryChainWrapper<>(yingshiCloudIntegrationInfoMapper)
.select(NgYingshiCloudIntegrationInfo::getAppkey,NgYingshiCloudIntegrationInfo::getAppsecret,NgYingshiCloudIntegrationInfo::getProjectid)
.list();
System.err.println("integrationInfoList:"+integrationInfoList);
//根据projectId进行分组
Map<Long, List<DeviceInformationMonitor>> collect = monitorList.stream().collect(Collectors.groupingBy(DeviceInformationMonitor::getProjectId));
System.err.println("collect:"+collect);
if(integrationInfoList.size()==0)
{
System.err.println("设备信息不存在");
}
//k为projectIdv为projectId下的设备列表
collect.forEach((k,v)->{
System.err.println("k:"+k);
System.err.println("v:"+v);
//获取萤石云对接信息
List<NgYingshiCloudIntegrationInfo> list = new LambdaQueryChainWrapper<>(yingshiCloudIntegrationInfoMapper)
.select(NgYingshiCloudIntegrationInfo::getAppkey, NgYingshiCloudIntegrationInfo::getAppsecret)
.eq(NgYingshiCloudIntegrationInfo::getProjectid, k)
.list();
NgYingshiCloudIntegrationInfo yingshiCloudIntegrationInfo;
if(!list.isEmpty())
{
yingshiCloudIntegrationInfo=list.get(0);
//获取accessToken
String accessToken=getAuth(yingshiCloudIntegrationInfo.getAppkey(),yingshiCloudIntegrationInfo.getAppsecret());
//获取设备信息列表
int page=0;
JSONObject deviceInfoList = getInfoList(accessToken);
JSONArray data= deviceInfoList.getJSONArray("data");
System.err.println("data:"+data);
data.forEach(d->{
JSONObject object = JSONUtil.parseObj(d.toString());
String deviceSerial=object.getStr("deviceSerial");//设备编码
Long status=object.getLong("status");//设备状态
for(DeviceInformationMonitor device:v)
{
if(device.getDeviceEncoding().equals(deviceSerial))
{
device.setStatus(status);//设置status0=离线1=在线
break;
}
}
});
}
//批量更新设备状态数据
boolean flag=deviceInformationMonitorService.updateBatchById(v);
if(!flag)
{
System.err.println("监控设备状态更新失败");
}
});
}catch (Exception e){
System.err.println("获取监控设备实时状态失败"+e.getMessage());
}
return "";
}
//获取鉴权 //获取鉴权
public String getAuth(){ public String getAuth(String appKey,String appSecret){
if(Boolean.TRUE.equals(stringRedisTemplate.hasKey("yingshiyun:user:accessToken"))){ /*if(Boolean.TRUE.equals(stringRedisTemplate.hasKey("yingshiyun:user:accessToken"))){
System.err.println(stringRedisTemplate.opsForValue().get("yingshiyun:user:accessToken"));
return stringRedisTemplate.opsForValue().get("yingshiyun:user:accessToken"); return stringRedisTemplate.opsForValue().get("yingshiyun:user:accessToken");
}*/
if(Boolean.TRUE.equals(stringRedisTemplate.hasKey("yingshiyun:user"+appKey+":"+appSecret+":accessToken"))){
System.err.println(stringRedisTemplate.opsForValue().get("yingshiyun:user"+appKey+":"+appSecret+":accessToken"));
return stringRedisTemplate.opsForValue().get("yingshiyun:user"+appKey+":"+appSecret+":accessToken");
} }
// 鉴权请求 // 鉴权请求
String AUTH_URL = "https://open.ys7.com/api/lapp/token/get"; String AUTH_URL = "https://open.ys7.com/api/lapp/token/get";
String appKey = "b21f910dc7044d668e7625a3c0392e62"; /*String appKey = "b21f910dc7044d668e7625a3c0392e62";
String appSecret = "b4beff5f8f6694dd6993c8c5b618417b"; String appSecret = "b4beff5f8f6694dd6993c8c5b618417b";*/
// 构建请求体参数 // 构建请求体参数
String body = StrUtil.format("appKey={}&appSecret={}", appKey, appSecret); String body = StrUtil.format("appKey={}&appSecret={}", appKey, appSecret);
HttpResponse response = HttpRequest.post(AUTH_URL) HttpResponse response = HttpRequest.post(AUTH_URL)
@ -45,21 +141,84 @@ public class YingshiyunService {
JSONObject data = JSONUtil.parseObj(jsonObject.get("data")); JSONObject data = JSONUtil.parseObj(jsonObject.get("data"));
String accessToken = data.get("accessToken").toString(); String accessToken = data.get("accessToken").toString();
stringRedisTemplate.opsForValue().set("yingshiyun:user:accessToken",accessToken, 60*60*24*6, TimeUnit.MILLISECONDS); //stringRedisTemplate.opsForValue().set("yingshiyun:user:accessToken",accessToken, 60*60*24*6, TimeUnit.MILLISECONDS);
stringRedisTemplate.opsForValue().set("yingshiyun:user"+appKey+":"+appSecret+":accessToken",accessToken, 60*60*24*6, TimeUnit.MILLISECONDS);
return accessToken; return accessToken;
} }
//获取视频播放地址 //获取视频播放地址
public Map<String,Object> getVideoPlayUrl(String deviceSerial){ public Map<String,Object> getVideoPlayUrl(String deviceSerial){
String accessToken = getAuth(); /**
// System.err.println(accessToken); * 根据设备编码查找项目id根据项目id查找萤石云对接账号信息
*/
System.err.println("deviceSerial:"+deviceSerial);
Map<String,Object> map = new HashMap<>();
List<DeviceInformationMonitor> monitorList=new LambdaQueryChainWrapper<>(deviceInformationMonitorMapper)
.select(DeviceInformationMonitor::getProjectId)
.eq(DeviceInformationMonitor::getDeviceEncoding,deviceSerial)
.list();
if(monitorList.size()==0)
{
System.err.println("设备信息未找到");
return map;
}
Long projectId=monitorList.get(0).getProjectId();
/*String projectId=ProjectHolder.getProjectInfo().getProjectId();
System.err.println("projectId:"+projectId);*/
List<NgYingshiCloudIntegrationInfo> infoList=new LambdaQueryChainWrapper<>(ngYingshiCloudIntegrationInfoMapper)
.select(NgYingshiCloudIntegrationInfo::getAppkey,NgYingshiCloudIntegrationInfo::getAppsecret)
.eq(NgYingshiCloudIntegrationInfo::getProjectid,projectId)
.list();
if(infoList.size()==0)
{
System.err.println("萤石云信息不存在");
return map;
}
String accessToken = getAuth(infoList.get(0).getAppkey(),infoList.get(0).getAppsecret());
System.err.println(accessToken);
/**
* 获取单个设备信息,包括设备在线状态和设备是否加密
*/
Map<String,Object> info=getInfo(accessToken,deviceSerial);
Long status= (Long) info.get("status"); //设备状态。0=离线1=在线
String statusDesc= info.get("statusDesc").toString();//设备状态描述
int isEncrypt= (int) info.get("isEncrypt");//设备是否加密1=加密
//在数据库中更新设备状态为当前状态
new LambdaUpdateChainWrapper<>(deviceInformationMonitorMapper)
.set(DeviceInformationMonitor::getStatus,status)
.eq(DeviceInformationMonitor::getDeviceEncoding,deviceSerial)
.update();
System.err.println("更新数据库状态为"+status);
if(status==0)
{
map.put("status",status);
map.put("statusDesc","离线");
return map;
}
if(isEncrypt==1)
{
//解密
int decryptFlag=decrypt(accessToken,deviceSerial);//设备解密,1=解密成功
if(decryptFlag!=1)
{
return map;
}
}
/**
* 获取设备播放地址
*/
String VIDEO_PLAY_URL = "https://open.ys7.com/api/lapp/v2/live/address/get"; String VIDEO_PLAY_URL = "https://open.ys7.com/api/lapp/v2/live/address/get";
String body = StrUtil.format("accessToken={}&deviceSerial={}&protocol={}",accessToken ,deviceSerial,"2"); String body = StrUtil.format("accessToken={}&deviceSerial={}&protocol={}",accessToken ,deviceSerial,"2");
HttpResponse response = HttpRequest.post(VIDEO_PLAY_URL) HttpResponse response = HttpRequest.post(VIDEO_PLAY_URL)
.body(body).execute(); .body(body).execute();
JSONObject jsonObject = JSONUtil.parseObj(response.body()); JSONObject jsonObject = JSONUtil.parseObj(response.body());
Map<String,Object> map = new HashMap<>(); System.err.println("jsonObject:"+jsonObject);
if(!jsonObject.get("code").toString().equals("200")){ if(!jsonObject.get("code").toString().equals("200")){
return map; return map;
} }
@ -71,10 +230,84 @@ public class YingshiyunService {
map.put("playUrl",playUrl); map.put("playUrl",playUrl);
map.put("accessToken",accessToken); map.put("accessToken",accessToken);
map.put("status",status);//设备在线状态-0=离线1=在线
map.put("statusDesc",statusDesc);//状态描述
System.err.println("playUrl:"+playUrl);
System.err.println("accessToken:"+accessToken);
System.err.println("status:"+status);
System.err.println("statusDesc:"+statusDesc);
return map; return map;
} }
/**
* 获取单个设备信息,包括在线状态和是否加密
* @param accessToken
* @param deviceSerial
* @return
*/
public Map<String,Object> getInfo(String accessToken,String deviceSerial)
{
Map<String,Object> map = new HashMap<>();//结果
String INFO_URL="https://open.ys7.com/api/lapp/device/info";//获取单个设备信息接口地址
String infoBody=StrUtil.format("accessToken={}&deviceSerial={}",accessToken,deviceSerial);
HttpResponse infoResponse=HttpRequest.post(INFO_URL)
.body(infoBody).execute();
if(!JSONUtil.parseObj(infoResponse.body()).get("code").toString().equals("200"))
{
return map;
}
JSONObject infoData=JSONUtil.parseObj(infoResponse.body()).getJSONObject("data");
Long status=infoData.getLong("status");//获取设备在线状态
String statusDesc= status==0 ? "离线" : "在线";//如果status是0则是离线否则是在线
int isEncrypt=infoData.getInt("isEncrypt");//设备是否加密0-不加密1-加密
map.put("status",status);
map.put("statusDesc",statusDesc);
map.put("isEncrypt",isEncrypt);
return map;
}
/**
* 设备解密
* @param accessToken
* @param deviceSerial
* @return
*/
public int decrypt(String accessToken,String deviceSerial)
{
//设备解密,1=成功
String VIDEO_DECODE_URL = "https://open.ys7.com/api/lapp/device/encrypt/off";
String decodeBody=StrUtil.format("accessToken={}&deviceSerial={}",accessToken ,deviceSerial);
HttpResponse decodeResponse=HttpRequest.post(VIDEO_DECODE_URL).body(decodeBody).execute();
JSONObject decodeJsonObject=JSONUtil.parseObj(decodeResponse.body());
System.err.println("decodeJsonObject:"+decodeJsonObject);
if(!decodeJsonObject.get("code").toString().equals("200"))
{
return 0;
}
return 1;
}
/**
* 获取设备信息列表,包括在线状态和是否加密
* @param accessToken
* @return
*/
public JSONObject getInfoList(String accessToken)
{
String INFO_URL="https://open.ys7.com/api/lapp/device/list";//获取单个设备信息接口地址
String infoBody=StrUtil.format("accessToken={}",accessToken);
HttpResponse infoResponse=HttpRequest.post(INFO_URL)
.body(infoBody).execute();
if(!JSONUtil.parseObj(infoResponse.body()).get("code").toString().equals("200"))
{
return null;
}
JSONObject response=JSONUtil.parseObj(infoResponse.body());
return response;
}

View File

@ -0,0 +1,65 @@
package com.fastbee.deviceData.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.fastbee.common.annotation.Excel;
import com.fastbee.common.core.domain.BaseEntity;
/**
* 萤石云对接信息对象 ng_yingshi_cloud_integration_info
*
* @author kerwincui
* @date 2025-01-09
*/
@ApiModel(value = "NgYingshiCloudIntegrationInfo",description = "萤石云对接信息 ng_yingshi_cloud_integration_info")
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ng_yingshi_cloud_integration_info")
public class NgYingshiCloudIntegrationInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键ID */
private Long id;
/** 机构id */
@Excel(name = "机构id")
@ApiModelProperty("机构id")
private Long deptid;
/** 项目id */
@Excel(name = "项目id")
@ApiModelProperty("项目id")
private Long projectid;
/** 用户id */
@Excel(name = "用户id")
@ApiModelProperty("用户id")
private Long userid;
/** 获取token所需appkey */
@Excel(name = "获取token所需appkey")
@ApiModelProperty("获取token所需appkey")
private String appkey;
/** 获取token所需appSecret */
@Excel(name = "获取token所需appSecret")
@ApiModelProperty("获取token所需appSecret")
private String appsecret;
/** 萤石云登陆账号 */
@Excel(name = "萤石云登陆账号")
@ApiModelProperty("萤石云登陆账号")
private String yingshiAccount;
/** 萤石云登陆密码 */
@Excel(name = "萤石云登陆密码")
@ApiModelProperty("萤石云登陆密码")
private String yingshiPwd;
}

View File

@ -0,0 +1,65 @@
package com.fastbee.deviceData.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fastbee.deviceData.domain.NgYingshiCloudIntegrationInfo;
import org.apache.ibatis.annotations.Mapper;
/**
* 萤石云对接信息Mapper接口
*
* @author kerwincui
* @date 2025-01-09
*/
@Mapper
public interface NgYingshiCloudIntegrationInfoMapper extends BaseMapper<NgYingshiCloudIntegrationInfo>
{
/**
* 查询萤石云对接信息
*
* @param id 萤石云对接信息主键
* @return 萤石云对接信息
*/
public NgYingshiCloudIntegrationInfo selectNgYingshiCloudIntegrationInfoById(Long id);
/**
* 查询萤石云对接信息列表
*
* @param ngYingshiCloudIntegrationInfo 萤石云对接信息
* @return 萤石云对接信息集合
*/
public List<NgYingshiCloudIntegrationInfo> selectNgYingshiCloudIntegrationInfoList(NgYingshiCloudIntegrationInfo ngYingshiCloudIntegrationInfo);
/**
* 新增萤石云对接信息
*
* @param ngYingshiCloudIntegrationInfo 萤石云对接信息
* @return 结果
*/
public int insertNgYingshiCloudIntegrationInfo(NgYingshiCloudIntegrationInfo ngYingshiCloudIntegrationInfo);
/**
* 修改萤石云对接信息
*
* @param ngYingshiCloudIntegrationInfo 萤石云对接信息
* @return 结果
*/
public int updateNgYingshiCloudIntegrationInfo(NgYingshiCloudIntegrationInfo ngYingshiCloudIntegrationInfo);
/**
* 删除萤石云对接信息
*
* @param id 萤石云对接信息主键
* @return 结果
*/
public int deleteNgYingshiCloudIntegrationInfoById(Long id);
/**
* 批量删除萤石云对接信息
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteNgYingshiCloudIntegrationInfoByIds(Long[] ids);
}

View File

@ -68,5 +68,5 @@ public interface IDeviceRealtimedataMeteorologyService extends IService<DeviceRe
* 获取最新的一条气象数据 * 获取最新的一条气象数据
* @return * @return
*/ */
public Map<String,Object> getLatestWeatherRealtimedata(); public Map<String,Object> getLatestWeatherRealtimedata(String deviceEncoding);
} }

View File

@ -0,0 +1,61 @@
package com.fastbee.deviceData.service;
import java.util.List;
import com.fastbee.deviceData.domain.NgYingshiCloudIntegrationInfo;
/**
* 萤石云对接信息Service接口
*
* @author kerwincui
* @date 2025-01-09
*/
public interface INgYingshiCloudIntegrationInfoService
{
/**
* 查询萤石云对接信息
*
* @param id 萤石云对接信息主键
* @return 萤石云对接信息
*/
public NgYingshiCloudIntegrationInfo selectNgYingshiCloudIntegrationInfoById(Long id);
/**
* 查询萤石云对接信息列表
*
* @param ngYingshiCloudIntegrationInfo 萤石云对接信息
* @return 萤石云对接信息集合
*/
public List<NgYingshiCloudIntegrationInfo> selectNgYingshiCloudIntegrationInfoList(NgYingshiCloudIntegrationInfo ngYingshiCloudIntegrationInfo);
/**
* 新增萤石云对接信息
*
* @param ngYingshiCloudIntegrationInfo 萤石云对接信息
* @return 结果
*/
public int insertNgYingshiCloudIntegrationInfo(NgYingshiCloudIntegrationInfo ngYingshiCloudIntegrationInfo);
/**
* 修改萤石云对接信息
*
* @param ngYingshiCloudIntegrationInfo 萤石云对接信息
* @return 结果
*/
public int updateNgYingshiCloudIntegrationInfo(NgYingshiCloudIntegrationInfo ngYingshiCloudIntegrationInfo);
/**
* 批量删除萤石云对接信息
*
* @param ids 需要删除的萤石云对接信息主键集合
* @return 结果
*/
public int deleteNgYingshiCloudIntegrationInfoByIds(Long[] ids);
/**
* 删除萤石云对接信息信息
*
* @param id 萤石云对接信息主键
* @return 结果
*/
public int deleteNgYingshiCloudIntegrationInfoById(Long id);
}

View File

@ -107,31 +107,69 @@ public class DeviceRealtimedataMeteorologyServiceImpl extends ServiceImpl<Device
* @return * @return
*/ */
@Override @Override
public Map<String,Object> getLatestWeatherRealtimedata(){ public Map<String,Object> getLatestWeatherRealtimedata(String deviceEncoding){
Map<String,Object> rest= new HashMap<>(); Map<String,Object> rest= new HashMap<>();
QueryWrapper queryWrapper = new QueryWrapper(); QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.orderByDesc("real_time"); queryWrapper.orderByDesc("real_time");
queryWrapper.eq("device_id",deviceEncoding);
queryWrapper.last("limit 1"); queryWrapper.last("limit 1");
DeviceRealtimedataMeteorology meteorology = deviceRealtimedataMeteorologyMapper.selectOne(queryWrapper); DeviceRealtimedataMeteorology meteorology = deviceRealtimedataMeteorologyMapper.selectOne(queryWrapper);
System.err.println(meteorology.getDeviceId()+"最新一条气象数据,时间:"+meteorology.getRealTime());
List<DeviceProperties> devicePropertiesList = new ArrayList<>(); List<DeviceProperties> devicePropertiesList = new ArrayList<>();
rest.put("props",devicePropertiesList); rest.put("props",devicePropertiesList);
if(Objects.isNull(meteorology)){ if(Objects.isNull(meteorology)){
return rest; return rest;
} }
devicePropertiesList.add(DeviceProperties.builder().name("空气温度").value(meteorology.getAirTemp().toString()).unit("°C").build()); if(meteorology.getAirTemp()!=null)
devicePropertiesList.add(DeviceProperties.builder().name("空气湿度").value(meteorology.getAirHumi().toString()).unit("%").build()); {
devicePropertiesList.add(DeviceProperties.builder().name("空气温度").value(meteorology.getAirTemp().toString()).unit("°C").build());
}
if(meteorology.getAirHumi()!=null)
{
devicePropertiesList.add(DeviceProperties.builder().name("空气湿度").value(meteorology.getAirHumi().toString()).unit("%").build());
}
devicePropertiesList.add(DeviceProperties.builder().name("风速").value(meteorology.getWindSpeed().toString()).unit("m/s").build()); devicePropertiesList.add(DeviceProperties.builder().name("风速").value(meteorology.getWindSpeed().toString()).unit("m/s").build());
devicePropertiesList.add(DeviceProperties.builder().name("风向").value(windDirMap(meteorology.getWindDir())).unit("").build()); if(meteorology.getWindDir()!=null)
devicePropertiesList.add(DeviceProperties.builder().name("大气压力").value(meteorology.getAirPre().toString()).unit("hPa").build()); {
devicePropertiesList.add(DeviceProperties.builder().name("光照度").value(meteorology.getGuangzhao().toString()).unit("lx").build()); devicePropertiesList.add(DeviceProperties.builder().name("风向").value(windDirMap(meteorology.getWindDir())).unit("").build());
devicePropertiesList.add(DeviceProperties.builder().name("光合有效辐射").value(meteorology.getFushe().toString()).unit("Lux").build()); }
devicePropertiesList.add(DeviceProperties.builder().name("累积雨量").value(meteorology.getSumRain().toString()).unit("mm").build()); if(meteorology.getAirPre()!=null)
devicePropertiesList.add(DeviceProperties.builder().name("瞬时雨量").value(meteorology.getInsRain().toString()).unit("mm").build()); {
devicePropertiesList.add(DeviceProperties.builder().name("日雨量").value(meteorology.getDayRain().toString()).unit("mm").build()); devicePropertiesList.add(DeviceProperties.builder().name("大气压力").value(meteorology.getAirPre().toString()).unit("hPa").build());
devicePropertiesList.add(DeviceProperties.builder().name("蒸发量").value(meteorology.getZhengfa().toString()).unit("t/h").build()); }
devicePropertiesList.add(DeviceProperties.builder().name("土壤温度").value(meteorology.getSoilTemp().toString()).unit("°C").build()); if(meteorology.getGuangzhao()!=null)
devicePropertiesList.add(DeviceProperties.builder().name("土壤湿度").value(meteorology.getSoilHumi().toString()).unit("%").build()); {
devicePropertiesList.add(DeviceProperties.builder().name("光照度").value(meteorology.getGuangzhao().toString()).unit("lx").build());
}
if(meteorology.getFushe()!=null)
{
devicePropertiesList.add(DeviceProperties.builder().name("光合有效辐射").value(meteorology.getFushe().toString()).unit("Lux").build());
}
if(meteorology.getSumRain()!=null)
{
devicePropertiesList.add(DeviceProperties.builder().name("累积雨量").value(meteorology.getSumRain().toString()).unit("mm").build());
}
if(meteorology.getInsRain()!=null)
{
devicePropertiesList.add(DeviceProperties.builder().name("瞬时雨量").value(meteorology.getInsRain().toString()).unit("mm").build());
}
if(meteorology.getDayRain()!=null)
{
devicePropertiesList.add(DeviceProperties.builder().name("日雨量").value(meteorology.getDayRain().toString()).unit("mm").build());
}
if(meteorology.getZhengfa()!=null)
{
devicePropertiesList.add(DeviceProperties.builder().name("蒸发量").value(meteorology.getZhengfa().toString()).unit("t/h").build());
}
if(meteorology.getSoilTemp()!=null)
{
devicePropertiesList.add(DeviceProperties.builder().name("土壤温度").value(meteorology.getSoilTemp().toString()).unit("°C").build());
}
if(meteorology.getSoilHumi()!=null)
{
devicePropertiesList.add(DeviceProperties.builder().name("土壤湿度").value(meteorology.getSoilHumi().toString()).unit("%").build());
}
Map<String,Object> info=new HashMap<>(); Map<String,Object> info=new HashMap<>();
info.put("deviceEncoding", meteorology.getDeviceId()); info.put("deviceEncoding", meteorology.getDeviceId());

View File

@ -0,0 +1,96 @@
package com.fastbee.deviceData.service.impl;
import java.util.List;
import com.fastbee.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.fastbee.deviceData.mapper.NgYingshiCloudIntegrationInfoMapper;
import com.fastbee.deviceData.domain.NgYingshiCloudIntegrationInfo;
import com.fastbee.deviceData.service.INgYingshiCloudIntegrationInfoService;
/**
* 萤石云对接信息Service业务层处理
*
* @author kerwincui
* @date 2025-01-09
*/
@Service
public class NgYingshiCloudIntegrationInfoServiceImpl implements INgYingshiCloudIntegrationInfoService
{
@Autowired
private NgYingshiCloudIntegrationInfoMapper ngYingshiCloudIntegrationInfoMapper;
/**
* 查询萤石云对接信息
*
* @param id 萤石云对接信息主键
* @return 萤石云对接信息
*/
@Override
public NgYingshiCloudIntegrationInfo selectNgYingshiCloudIntegrationInfoById(Long id)
{
return ngYingshiCloudIntegrationInfoMapper.selectNgYingshiCloudIntegrationInfoById(id);
}
/**
* 查询萤石云对接信息列表
*
* @param ngYingshiCloudIntegrationInfo 萤石云对接信息
* @return 萤石云对接信息
*/
@Override
public List<NgYingshiCloudIntegrationInfo> selectNgYingshiCloudIntegrationInfoList(NgYingshiCloudIntegrationInfo ngYingshiCloudIntegrationInfo)
{
return ngYingshiCloudIntegrationInfoMapper.selectNgYingshiCloudIntegrationInfoList(ngYingshiCloudIntegrationInfo);
}
/**
* 新增萤石云对接信息
*
* @param ngYingshiCloudIntegrationInfo 萤石云对接信息
* @return 结果
*/
@Override
public int insertNgYingshiCloudIntegrationInfo(NgYingshiCloudIntegrationInfo ngYingshiCloudIntegrationInfo)
{
ngYingshiCloudIntegrationInfo.setCreateTime(DateUtils.getNowDate());
return ngYingshiCloudIntegrationInfoMapper.insertNgYingshiCloudIntegrationInfo(ngYingshiCloudIntegrationInfo);
}
/**
* 修改萤石云对接信息
*
* @param ngYingshiCloudIntegrationInfo 萤石云对接信息
* @return 结果
*/
@Override
public int updateNgYingshiCloudIntegrationInfo(NgYingshiCloudIntegrationInfo ngYingshiCloudIntegrationInfo)
{
ngYingshiCloudIntegrationInfo.setUpdateTime(DateUtils.getNowDate());
return ngYingshiCloudIntegrationInfoMapper.updateNgYingshiCloudIntegrationInfo(ngYingshiCloudIntegrationInfo);
}
/**
* 批量删除萤石云对接信息
*
* @param ids 需要删除的萤石云对接信息主键
* @return 结果
*/
@Override
public int deleteNgYingshiCloudIntegrationInfoByIds(Long[] ids)
{
return ngYingshiCloudIntegrationInfoMapper.deleteNgYingshiCloudIntegrationInfoByIds(ids);
}
/**
* 删除萤石云对接信息信息
*
* @param id 萤石云对接信息主键
* @return 结果
*/
@Override
public int deleteNgYingshiCloudIntegrationInfoById(Long id)
{
return ngYingshiCloudIntegrationInfoMapper.deleteNgYingshiCloudIntegrationInfoById(id);
}
}

View File

@ -93,4 +93,9 @@ private static final long serialVersionUID = 1L;
@ApiModelProperty("状态1在线0离线") @ApiModelProperty("状态1在线0离线")
private Long status; private Long status;
/** projectId */
@Excel(name = "projectId")
@ApiModelProperty("projectId")
private Long projectId;
} }

View File

@ -89,4 +89,9 @@ private static final long serialVersionUID = 1L;
/** 删除标志0代表存在2代表删除 */ /** 删除标志0代表存在2代表删除 */
private Integer delFlag; private Integer delFlag;
/** 项目id */
@Excel(name = "项目id")
@ApiModelProperty("项目id")
private Long projectId;
} }

View File

@ -99,4 +99,9 @@ private static final long serialVersionUID = 1L;
@ApiModelProperty("状态1在线0离线") @ApiModelProperty("状态1在线0离线")
private Long status; private Long status;
/** 项目id */
@Excel(name = "项目id")
@ApiModelProperty("项目id")
private Long projectId;
} }

View File

@ -2,6 +2,7 @@ package com.fastbee.deviceInfo.domain;
import java.util.Date; import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
@ -126,4 +127,15 @@ public class DeviceInformationMonitor extends BaseEntity
@ApiModelProperty("accessToken") @ApiModelProperty("accessToken")
private String accessToken; private String accessToken;
/** projectId */
@Excel(name = "projectId")
@ApiModelProperty("projectId")
private Long projectId;
/**设备状态描述,离线/在线 */
@TableField(exist=false)
private String statusDesc;
} }

View File

@ -90,4 +90,9 @@ private static final long serialVersionUID = 1L;
@ApiModelProperty("状态1在线0离线") @ApiModelProperty("状态1在线0离线")
private Long status; private Long status;
/** 项目id */
@Excel(name = "项目id")
@ApiModelProperty("项目id")
private Long projectId;
} }

View File

@ -88,4 +88,9 @@ private static final long serialVersionUID = 1L;
@ApiModelProperty("状态1在线0离线") @ApiModelProperty("状态1在线0离线")
private Long status; private Long status;
/** 项目id */
@Excel(name = "项目id")
@ApiModelProperty("项目id")
private Long projectId;
} }

View File

@ -1,13 +1,13 @@
package com.fastbee.deviceInfo.manager; package com.fastbee.deviceInfo.manager;
import com.fastbee.deviceData.domain.DeviceRealtimedataPhotovoltaic;
import com.fastbee.deviceData.domain.dto.DeviceProperties;
import com.fastbee.deviceInfo.domain.*; import com.fastbee.deviceInfo.domain.*;
import com.fastbee.deviceInfo.mapper.*; import com.fastbee.deviceInfo.mapper.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
@Service @Service
public class DeviceInformationManager { public class DeviceInformationManager {
@ -34,22 +34,63 @@ public class DeviceInformationManager {
/** /**
* 获取所有设备 * 获取所有设备
*/ */
public Map<String,Object> getAllDeviceCount() { public Map<String,Object> getAllDeviceCount(Long projectId) {
List<DeviceInformationMeteorology> meteorologieList = meteorologyMapper.selectDeviceInformationMeteorologyList(null); System.err.println("projectId:"+projectId);
List<DeviceInformationMiaoqing> miaoqingList = miaoqingMapper.selectDeviceInformationMiaoqingList(null); DeviceInformationMeteorology informationMeteorology=new DeviceInformationMeteorology();
List<DeviceInformationMoisture> moistureList= moistureMapper.selectDeviceInformationMoistureList(null); informationMeteorology.setProjectId(projectId);
List<DeviceInformationMonitor> monitorList = monitorMapper.selectDeviceInformationMonitorList(null); DeviceInformationMiaoqing informationMiaoqing=new DeviceInformationMiaoqing();
List<DeviceInformationTargetpests> targetpestList= targetpestsMapper.selectDeviceInformationTargetpestsList(null); informationMiaoqing.setProjectId(projectId);
List<DeviceInformationWorms> wormList = wormsMapper.selectDeviceInformationWormsList(null); DeviceInformationMoisture informationMoisture=new DeviceInformationMoisture();
informationMoisture.setProjectId(projectId);
DeviceInformationMonitor informationMonitor=new DeviceInformationMonitor();
informationMonitor.setProjectId(projectId);
DeviceInformationTargetpests informationTargetpests=new DeviceInformationTargetpests();
informationTargetpests.setProjectId(projectId);
DeviceInformationWorms informationWorms=new DeviceInformationWorms();
informationWorms.setProjectId(projectId);
List<DeviceInformationMeteorology> meteorologieList = meteorologyMapper.selectDeviceInformationMeteorologyList(informationMeteorology);
List<DeviceInformationMiaoqing> miaoqingList = miaoqingMapper.selectDeviceInformationMiaoqingList(informationMiaoqing);
List<DeviceInformationMoisture> moistureList= moistureMapper.selectDeviceInformationMoistureList(informationMoisture);
List<DeviceInformationMonitor> monitorList = monitorMapper.selectDeviceInformationMonitorList(informationMonitor);
List<DeviceInformationTargetpests> targetpestList= targetpestsMapper.selectDeviceInformationTargetpestsList(informationTargetpests);
List<DeviceInformationWorms> wormList = wormsMapper.selectDeviceInformationWormsList(informationWorms);
Map<String,Object> resp =new HashMap<>(); Map<String,Object> resp =new HashMap<>();
resp.put("meteorologieTotal",meteorologieList.size()); /*resp.put("meteorologieTotal",meteorologieList.size());
resp.put("miaoqingTotal",miaoqingList.size()); resp.put("miaoqingTotal",miaoqingList.size());
resp.put("moistureTotal",moistureList.size()); resp.put("moistureTotal",moistureList.size());
resp.put("monitorTotal",monitorList.size()); resp.put("monitorTotal",monitorList.size());
resp.put("targetpestTotal",targetpestList.size()); resp.put("targetpestTotal",targetpestList.size());
resp.put("wormTotal",wormList.size()); resp.put("wormTotal",wormList.size());
resp.put("photovoltaicTotal",miaoqingList.size()); resp.put("photovoltaicTotal",miaoqingList.size());*/
List<DeviceProperties> devicePropertiesList = new ArrayList<>();
if(meteorologieList.size()!=0)
{
devicePropertiesList.add(DeviceProperties.builder().name("meteorologieTotal").value(String.valueOf(meteorologieList.size())).unit("气象设备").build());
}
if(miaoqingList.size()!=0)
{
devicePropertiesList.add(DeviceProperties.builder().name("miaoqingTotal").value(String.valueOf(miaoqingList.size())).unit("苗情设备").build());
}
if(moistureList.size()!=0)
{
devicePropertiesList.add(DeviceProperties.builder().name("moistureTotal").value(String.valueOf(moistureList.size())).unit("墒情设备").build());
}
if(targetpestList.size()!=0)
{
devicePropertiesList.add(DeviceProperties.builder().name("targetpestTotal").value(String.valueOf(targetpestList.size())).unit("靶标害虫设备").build());
}
if(wormList.size()!=0)
{
devicePropertiesList.add(DeviceProperties.builder().name("wormTotal").value(String.valueOf(wormList.size())).unit("虫情设备").build());
devicePropertiesList.add(DeviceProperties.builder().name("photovoltaicTotal").value(String.valueOf(wormList.size())).unit("光伏设备").build());
}
if(monitorList.size()!=0)
{
devicePropertiesList.add(DeviceProperties.builder().name("monitorTotal").value(String.valueOf(monitorList.size())).unit("监控设备").build());
}
resp.put("props",devicePropertiesList);
return resp; return resp;
} }

View File

@ -1,7 +1,11 @@
package com.fastbee.deviceInfo.service; package com.fastbee.deviceInfo.service;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fastbee.deviceInfo.domain.DeviceInformationMonitor; import com.fastbee.deviceInfo.domain.DeviceInformationMonitor;
import com.fastbee.deviceInfo.mapper.DeviceInformationMonitorMapper;
/** /**
* 监控站设备基础信息Service接口 * 监控站设备基础信息Service接口
@ -9,12 +13,11 @@ import com.fastbee.deviceInfo.domain.DeviceInformationMonitor;
* @author kerwincui * @author kerwincui
* @date 2024-11-18 * @date 2024-11-18
*/ */
public interface IDeviceInformationMonitorService public interface IDeviceInformationMonitorService extends IService<DeviceInformationMonitor>
{ {
/** /**
* 查询监控站设备基础信息 * 查询监控站设备基础信息
* *
* @param id 监控站设备基础信息主键
* @return 监控站设备基础信息 * @return 监控站设备基础信息
*/ */
public DeviceInformationMonitor selectDeviceInformationMonitorById(String deviceEncoding); public DeviceInformationMonitor selectDeviceInformationMonitorById(String deviceEncoding);

View File

@ -1,6 +1,8 @@
package com.fastbee.deviceInfo.service.impl; package com.fastbee.deviceInfo.service.impl;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fastbee.common.utils.DateUtils; import com.fastbee.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -15,15 +17,14 @@ import com.fastbee.deviceInfo.service.IDeviceInformationMonitorService;
* @date 2024-11-18 * @date 2024-11-18
*/ */
@Service @Service
public class DeviceInformationMonitorServiceImpl implements IDeviceInformationMonitorService public class DeviceInformationMonitorServiceImpl extends ServiceImpl<DeviceInformationMonitorMapper,DeviceInformationMonitor> implements IDeviceInformationMonitorService
{ {
@Autowired @Autowired
private DeviceInformationMonitorMapper deviceInformationMonitorMapper; private DeviceInformationMonitorMapper deviceInformationMonitorMapper;
/** /**
* 查询监控站设备基础信息 * 查询监控站设备基础信息
* *
* @param id 监控站设备基础信息主键
* @return 监控站设备基础信息 * @return 监控站设备基础信息
*/ */
@Override @Override

View File

@ -22,10 +22,12 @@
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="projectId" column="project_id" />
<result property="status" column="status" />
</resultMap> </resultMap>
<sql id="selectDeviceInformationMeteorologyVo"> <sql id="selectDeviceInformationMeteorologyVo">
select id, name, device_brand, device_type, device_encoding, type, longitude, latitude, installation_location, name_project, construction_year, docking_method, del_flag, create_time, create_by, update_time, update_by from iot_device_information_meteorology select id, name, device_brand, device_type, device_encoding, type, longitude, latitude, installation_location, name_project, construction_year, docking_method, del_flag, create_time, create_by, update_time, update_by,project_id,status from iot_device_information_meteorology
</sql> </sql>
<select id="selectDeviceInformationMeteorologyList" parameterType="DeviceInformationMeteorology" resultMap="DeviceInformationMeteorologyResult"> <select id="selectDeviceInformationMeteorologyList" parameterType="DeviceInformationMeteorology" resultMap="DeviceInformationMeteorologyResult">
@ -42,6 +44,8 @@
<if test="nameProject != null and nameProject != ''"> and name_project = #{nameProject}</if> <if test="nameProject != null and nameProject != ''"> and name_project = #{nameProject}</if>
<if test="constructionYear != null "> and construction_year = #{constructionYear}</if> <if test="constructionYear != null "> and construction_year = #{constructionYear}</if>
<if test="dockingMethod != null and dockingMethod != ''"> and docking_method = #{dockingMethod}</if> <if test="dockingMethod != null and dockingMethod != ''"> and docking_method = #{dockingMethod}</if>
<if test="projectId != null and projectId != ''"> and project_id = #{projectId}</if>
<if test="status != null and status != ''"> and status = #{status}</if>
</where> </where>
</select> </select>
@ -69,6 +73,8 @@
<if test="createBy != null">create_by,</if> <if test="createBy != null">create_by,</if>
<if test="updateTime != null">update_time,</if> <if test="updateTime != null">update_time,</if>
<if test="updateBy != null">update_by,</if> <if test="updateBy != null">update_by,</if>
<if test="projectId != null">project_id,</if>
<if test="status != null">status,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="name != null">#{name},</if> <if test="name != null">#{name},</if>
@ -87,6 +93,8 @@
<if test="createBy != null">#{createBy},</if> <if test="createBy != null">#{createBy},</if>
<if test="updateTime != null">#{updateTime},</if> <if test="updateTime != null">#{updateTime},</if>
<if test="updateBy != null">#{updateBy},</if> <if test="updateBy != null">#{updateBy},</if>
<if test="projectId != null">#{projectId},</if>
<if test="status != null">#{status},</if>
</trim> </trim>
</insert> </insert>
@ -109,6 +117,8 @@
<if test="createBy != null">create_by = #{createBy},</if> <if test="createBy != null">create_by = #{createBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if> <if test="updateTime != null">update_time = #{updateTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if> <if test="updateBy != null">update_by = #{updateBy},</if>
<if test="projectId != null">project_id = #{projectId},</if>
<if test="status != null">status = #{status},</if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>

View File

@ -22,10 +22,11 @@
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="projectId" column="project_id" />
</resultMap> </resultMap>
<sql id="selectDeviceInformationMiaoqingVo"> <sql id="selectDeviceInformationMiaoqingVo">
select id, name, device_brand, device_type, device_encoding, type, longitude, latitude, installation_location, name_project, construction_year, docking_method, del_flag, create_time, create_by, update_time, update_by from iot_device_information_miaoQing select id, name, device_brand, device_type, device_encoding, type, longitude, latitude, installation_location, name_project, construction_year, docking_method, del_flag, create_time, create_by, update_time, update_by,project_id from iot_device_information_miaoQing
</sql> </sql>
<select id="selectDeviceInformationMiaoqingList" parameterType="DeviceInformationMiaoqing" resultMap="DeviceInformationMiaoqingResult"> <select id="selectDeviceInformationMiaoqingList" parameterType="DeviceInformationMiaoqing" resultMap="DeviceInformationMiaoqingResult">
@ -42,6 +43,7 @@
<if test="nameProject != null and nameProject != ''"> and name_project = #{nameProject}</if> <if test="nameProject != null and nameProject != ''"> and name_project = #{nameProject}</if>
<if test="constructionYear != null "> and construction_year = #{constructionYear}</if> <if test="constructionYear != null "> and construction_year = #{constructionYear}</if>
<if test="dockingMethod != null and dockingMethod != ''"> and docking_method = #{dockingMethod}</if> <if test="dockingMethod != null and dockingMethod != ''"> and docking_method = #{dockingMethod}</if>
<if test="projectId != null and projectId != ''"> and project_id = #{projectId}</if>
</where> </where>
</select> </select>
@ -69,6 +71,7 @@
<if test="createBy != null">create_by,</if> <if test="createBy != null">create_by,</if>
<if test="updateTime != null">update_time,</if> <if test="updateTime != null">update_time,</if>
<if test="updateBy != null">update_by,</if> <if test="updateBy != null">update_by,</if>
<if test="projectId != null">project_id,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="name != null">#{name},</if> <if test="name != null">#{name},</if>
@ -87,6 +90,7 @@
<if test="createBy != null">#{createBy},</if> <if test="createBy != null">#{createBy},</if>
<if test="updateTime != null">#{updateTime},</if> <if test="updateTime != null">#{updateTime},</if>
<if test="updateBy != null">#{updateBy},</if> <if test="updateBy != null">#{updateBy},</if>
<if test="projectId != null">#{projectId},</if>
</trim> </trim>
</insert> </insert>
@ -109,6 +113,7 @@
<if test="createBy != null">create_by = #{createBy},</if> <if test="createBy != null">create_by = #{createBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if> <if test="updateTime != null">update_time = #{updateTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if> <if test="updateBy != null">update_by = #{updateBy},</if>
<if test="projectId != null">project_id = #{projectId},</if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>

View File

@ -23,10 +23,11 @@
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="projectId" column="project_id" />
</resultMap> </resultMap>
<sql id="selectDeviceInformationMoistureVo"> <sql id="selectDeviceInformationMoistureVo">
select id, name, products_name, device_brand, device_type, device_encoding, type, longitude, latitude, installation_location, name_project, construction_year, docking_method, del_flag, create_time, create_by, update_time, update_by from iot_device_information_moisture select id, name, products_name, device_brand, device_type, device_encoding, type, longitude, latitude, installation_location, name_project, construction_year, docking_method, del_flag, create_time, create_by, update_time, update_by, project_id from iot_device_information_moisture
</sql> </sql>
<select id="selectDeviceInformationMoistureList" parameterType="DeviceInformationMoisture" resultMap="DeviceInformationMoistureResult"> <select id="selectDeviceInformationMoistureList" parameterType="DeviceInformationMoisture" resultMap="DeviceInformationMoistureResult">
@ -44,6 +45,7 @@
<if test="nameProject != null and nameProject != ''"> and name_project = #{nameProject}</if> <if test="nameProject != null and nameProject != ''"> and name_project = #{nameProject}</if>
<if test="constructionYear != null "> and construction_year = #{constructionYear}</if> <if test="constructionYear != null "> and construction_year = #{constructionYear}</if>
<if test="dockingMethod != null and dockingMethod != ''"> and docking_method = #{dockingMethod}</if> <if test="dockingMethod != null and dockingMethod != ''"> and docking_method = #{dockingMethod}</if>
<if test="projectId != null and projectId != ''"> and project_id = #{projectId}</if>
</where> </where>
</select> </select>
@ -72,6 +74,7 @@
<if test="createBy != null">create_by,</if> <if test="createBy != null">create_by,</if>
<if test="updateTime != null">update_time,</if> <if test="updateTime != null">update_time,</if>
<if test="updateBy != null">update_by,</if> <if test="updateBy != null">update_by,</if>
<if test="projectId != null">project_id,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="name != null">#{name},</if> <if test="name != null">#{name},</if>
@ -91,6 +94,7 @@
<if test="createBy != null">#{createBy},</if> <if test="createBy != null">#{createBy},</if>
<if test="updateTime != null">#{updateTime},</if> <if test="updateTime != null">#{updateTime},</if>
<if test="updateBy != null">#{updateBy},</if> <if test="updateBy != null">#{updateBy},</if>
<if test="projectId != null">#{projectId},</if>
</trim> </trim>
</insert> </insert>
@ -114,6 +118,7 @@
<if test="createBy != null">create_by = #{createBy},</if> <if test="createBy != null">create_by = #{createBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if> <if test="updateTime != null">update_time = #{updateTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if> <if test="updateBy != null">update_by = #{updateBy},</if>
<if test="projectId != null">project_id = #{projectId},</if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>

View File

@ -27,10 +27,12 @@
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="playUrl" column="play_url" /> <result property="playUrl" column="play_url" />
<result property="projectId" column="project_id" />
<result property="status" column="status" />
</resultMap> </resultMap>
<sql id="selectDeviceInformationMonitorVo"> <sql id="selectDeviceInformationMonitorVo">
select id, name, device_encoding, type, longitude, latitude, installation_location, device_brand, device_type, name_project, construction_year, affiliation_township, management_leader, management_leader_telephone, management_unit, remarks_information, del_flag, create_time, create_by, update_time, update_by, play_url from iot_device_information_monitor select id, name, device_encoding, type, longitude, latitude, installation_location, device_brand, device_type, name_project, construction_year, affiliation_township, management_leader, management_leader_telephone, management_unit, remarks_information, del_flag, create_time, create_by, update_time, update_by, play_url,project_id,status from iot_device_information_monitor
</sql> </sql>
<select id="selectDeviceInformationMonitorList" parameterType="DeviceInformationMonitor" resultMap="DeviceInformationMonitorResult"> <select id="selectDeviceInformationMonitorList" parameterType="DeviceInformationMonitor" resultMap="DeviceInformationMonitorResult">
@ -52,6 +54,8 @@
<if test="managementUnit != null and managementUnit != ''"> and management_unit = #{managementUnit}</if> <if test="managementUnit != null and managementUnit != ''"> and management_unit = #{managementUnit}</if>
<if test="remarksInformation != null and remarksInformation != ''"> and remarks_information = #{remarksInformation}</if> <if test="remarksInformation != null and remarksInformation != ''"> and remarks_information = #{remarksInformation}</if>
<if test="playUrl != null and playUrl != ''"> and play_url = #{playUrl}</if> <if test="playUrl != null and playUrl != ''"> and play_url = #{playUrl}</if>
<if test="projectId != null and projectId != ''"> and project_id = #{projectId}</if>
<if test="status != null and status != ''"> and status = #{status}</if>
</where> </where>
</select> </select>
@ -84,6 +88,8 @@
<if test="updateTime != null">update_time,</if> <if test="updateTime != null">update_time,</if>
<if test="updateBy != null">update_by,</if> <if test="updateBy != null">update_by,</if>
<if test="playUrl != null">play_url,</if> <if test="playUrl != null">play_url,</if>
<if test="projectId != null">project_id,</if>
<if test="status != null">status,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="name != null">#{name},</if> <if test="name != null">#{name},</if>
@ -107,6 +113,8 @@
<if test="updateTime != null">#{updateTime},</if> <if test="updateTime != null">#{updateTime},</if>
<if test="updateBy != null">#{updateBy},</if> <if test="updateBy != null">#{updateBy},</if>
<if test="playUrl != null">#{playUrl},</if> <if test="playUrl != null">#{playUrl},</if>
<if test="projectId != null">#{projectId},</if>
<if test="status != null">#{status},</if>
</trim> </trim>
</insert> </insert>
@ -134,6 +142,8 @@
<if test="updateTime != null">update_time = #{updateTime},</if> <if test="updateTime != null">update_time = #{updateTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if> <if test="updateBy != null">update_by = #{updateBy},</if>
<if test="playUrl != null">play_url = #{playUrl},</if> <if test="playUrl != null">play_url = #{playUrl},</if>
<if test="projectId != null">project_id = #{projectId},</if>
<if test="status != null">status = #{status},</if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>

View File

@ -22,10 +22,11 @@
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="name" column="name" /> <result property="name" column="name" />
<result property="projectId" column="project_id" />
</resultMap> </resultMap>
<sql id="selectDeviceInformationTargetpestsVo"> <sql id="selectDeviceInformationTargetpestsVo">
select id, device_brand, type, device_type, power_supply, device_encoding, address_code, installation_location, longitude, latitude, docking_method, del_flag, create_time, create_by, update_time, update_by, name from iot_device_information_targetPests select id, device_brand, type, device_type, power_supply, device_encoding, address_code, installation_location, longitude, latitude, docking_method, del_flag, create_time, create_by, update_time, update_by, name,project_id from iot_device_information_targetPests
</sql> </sql>
<select id="selectDeviceInformationTargetpestsList" parameterType="DeviceInformationTargetpests" resultMap="DeviceInformationTargetpestsResult"> <select id="selectDeviceInformationTargetpestsList" parameterType="DeviceInformationTargetpests" resultMap="DeviceInformationTargetpestsResult">
@ -42,6 +43,7 @@
<if test="latitude != null and latitude != ''"> and latitude = #{latitude}</if> <if test="latitude != null and latitude != ''"> and latitude = #{latitude}</if>
<if test="dockingMethod != null and dockingMethod != ''"> and docking_method = #{dockingMethod}</if> <if test="dockingMethod != null and dockingMethod != ''"> and docking_method = #{dockingMethod}</if>
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if> <if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="projectId != null and projectId != ''"> and project_id = #{projectId}</if>
</where> </where>
</select> </select>
@ -69,6 +71,7 @@
<if test="updateTime != null">update_time,</if> <if test="updateTime != null">update_time,</if>
<if test="updateBy != null">update_by,</if> <if test="updateBy != null">update_by,</if>
<if test="name != null">name,</if> <if test="name != null">name,</if>
<if test="projectId != null">project_id,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="deviceBrand != null">#{deviceBrand},</if> <if test="deviceBrand != null">#{deviceBrand},</if>
@ -87,6 +90,7 @@
<if test="updateTime != null">#{updateTime},</if> <if test="updateTime != null">#{updateTime},</if>
<if test="updateBy != null">#{updateBy},</if> <if test="updateBy != null">#{updateBy},</if>
<if test="name != null">#{name},</if> <if test="name != null">#{name},</if>
<if test="projectId != null">#{projectId},</if>
</trim> </trim>
</insert> </insert>
@ -109,6 +113,7 @@
<if test="updateTime != null">update_time = #{updateTime},</if> <if test="updateTime != null">update_time = #{updateTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if> <if test="updateBy != null">update_by = #{updateBy},</if>
<if test="name != null">name = #{name},</if> <if test="name != null">name = #{name},</if>
<if test="projectId != null">project_id = #{projectId},</if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>

View File

@ -21,6 +21,7 @@
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="projectId" column="project_id" />
</resultMap> </resultMap>
<sql id="selectDeviceInformationWormsVo"> <sql id="selectDeviceInformationWormsVo">
@ -40,6 +41,7 @@
<if test="nameProject != null and nameProject != ''"> and name_project = #{nameProject}</if> <if test="nameProject != null and nameProject != ''"> and name_project = #{nameProject}</if>
<if test="constructionYear != null "> and construction_year = #{constructionYear}</if> <if test="constructionYear != null "> and construction_year = #{constructionYear}</if>
<if test="dockingMethod != null and dockingMethod != ''"> and docking_method = #{dockingMethod}</if> <if test="dockingMethod != null and dockingMethod != ''"> and docking_method = #{dockingMethod}</if>
<if test="projectId != null and projectId != ''"> and project_id = #{projectId}</if>
</where> </where>
</select> </select>
@ -66,6 +68,7 @@
<if test="createBy != null">create_by,</if> <if test="createBy != null">create_by,</if>
<if test="updateTime != null">update_time,</if> <if test="updateTime != null">update_time,</if>
<if test="updateBy != null">update_by,</if> <if test="updateBy != null">update_by,</if>
<if test="projectId != null">project_id,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="name != null">#{name},</if> <if test="name != null">#{name},</if>
@ -83,6 +86,7 @@
<if test="createBy != null">#{createBy},</if> <if test="createBy != null">#{createBy},</if>
<if test="updateTime != null">#{updateTime},</if> <if test="updateTime != null">#{updateTime},</if>
<if test="updateBy != null">#{updateBy},</if> <if test="updateBy != null">#{updateBy},</if>
<if test="projectId != null">#{projectId},</if>
</trim> </trim>
</insert> </insert>
@ -104,6 +108,7 @@
<if test="createBy != null">create_by = #{createBy},</if> <if test="createBy != null">create_by = #{createBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if> <if test="updateTime != null">update_time = #{updateTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if> <if test="updateBy != null">update_by = #{updateBy},</if>
<if test="projectId != null">project_id = #{projectId},</if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>

View File

@ -1,5 +1,8 @@
package com.fastbee.iot.timer; package com.fastbee.iot.timer;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.fastbee.deviceData.api.devlink.service.ZhanLianMetDataService; import com.fastbee.deviceData.api.devlink.service.ZhanLianMetDataService;
@ -8,6 +11,7 @@ import com.fastbee.deviceData.api.devlink.service.ZhanLianMoistureDataService;
import com.fastbee.deviceData.api.devlink.service.ZhanLianPhotovoltaicDataService; import com.fastbee.deviceData.api.devlink.service.ZhanLianPhotovoltaicDataService;
import com.fastbee.deviceData.api.renke.service.RenkeTargetpestsDeviceDataService; import com.fastbee.deviceData.api.renke.service.RenkeTargetpestsDeviceDataService;
import com.fastbee.deviceData.api.renke.service.RenkeWormDeviceDataService; import com.fastbee.deviceData.api.renke.service.RenkeWormDeviceDataService;
import com.fastbee.deviceData.api.yingshiyun.service.YingshiyunService;
import com.fastbee.deviceData.domain.*; import com.fastbee.deviceData.domain.*;
import com.fastbee.deviceData.mapper.*; import com.fastbee.deviceData.mapper.*;
@ -15,14 +19,13 @@ import com.fastbee.deviceData.service.IDeviceRealtimedataWormsService;
import com.fastbee.deviceData.service.impl.DeviceRealtimedataMeteorologyServiceImpl; import com.fastbee.deviceData.service.impl.DeviceRealtimedataMeteorologyServiceImpl;
import com.fastbee.deviceData.service.impl.DeviceRealtimedataMoistureServiceImpl; import com.fastbee.deviceData.service.impl.DeviceRealtimedataMoistureServiceImpl;
import com.fastbee.deviceData.service.impl.DeviceRealtimedataWormsServiceImpl; import com.fastbee.deviceData.service.impl.DeviceRealtimedataWormsServiceImpl;
import com.fastbee.deviceInfo.domain.DeviceInformationMeteorology; import com.fastbee.deviceInfo.domain.*;
import com.fastbee.deviceInfo.domain.DeviceInformationMoisture;
import com.fastbee.deviceInfo.domain.DeviceInformationTargetpests;
import com.fastbee.deviceInfo.domain.DeviceInformationWorms;
import com.fastbee.deviceInfo.mapper.*; import com.fastbee.deviceInfo.mapper.*;
import com.fastbee.deviceInfo.service.IDeviceInformationMonitorService;
import com.fastbee.iot.mapper.DeviceMapper; import com.fastbee.iot.mapper.DeviceMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.Consumer;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -98,6 +101,15 @@ public class DeviceDateTask {
@Autowired @Autowired
private DeviceInformationTargetpestsMapper targetpestsMapper; private DeviceInformationTargetpestsMapper targetpestsMapper;
@Autowired
private YingshiyunService yingshiyunService;
@Autowired
private NgYingshiCloudIntegrationInfoMapper yingshiCloudIntegrationInfoMapper;
@Autowired
private IDeviceInformationMonitorService deviceInformationMonitorService;
@ -252,5 +264,80 @@ public class DeviceDateTask {
System.out.println("插入数据失败!"); System.out.println("插入数据失败!");
} }
/**
* 获取监控设备实时状态并更新
*/
public void getMonitorDeviceRealtimeStatusData() throws Exception{
try{
//获取所有监控设备编码列表
List<DeviceInformationMonitor> monitorList=new LambdaQueryChainWrapper<>(monitorMapper)
.select(DeviceInformationMonitor::getDeviceEncoding,DeviceInformationMonitor::getStatus,DeviceInformationMonitor::getId,DeviceInformationMonitor::getProjectId)
.list();
// log.info("monitorLIST:"+monitorList);
//根据projectId对监控设备列表进行分组
Map<Long, List<DeviceInformationMonitor>> collect = monitorList.stream().collect(Collectors.groupingBy(DeviceInformationMonitor::getProjectId));
// System.err.println("collect:"+collect);
//获取所有萤石云对接信息列表
List<NgYingshiCloudIntegrationInfo> integrationInfoList=new LambdaQueryChainWrapper<>(yingshiCloudIntegrationInfoMapper)
.select(NgYingshiCloudIntegrationInfo::getAppkey,NgYingshiCloudIntegrationInfo::getAppsecret,NgYingshiCloudIntegrationInfo::getProjectid)
.list();
// System.err.println("integrationInfoList:"+integrationInfoList);
if(integrationInfoList.size()==0)
{
// System.err.println("设备信息不存在");
log.warn("设备信息不存在");
}
//k为projectIdv为projectId下的设备列表
collect.forEach((k,v)->{
/*log.info("k:"+k);
log.info("v:"+v);*/
//获取萤石云对接信息
List<NgYingshiCloudIntegrationInfo> list = new LambdaQueryChainWrapper<>(yingshiCloudIntegrationInfoMapper)
.select(NgYingshiCloudIntegrationInfo::getAppkey, NgYingshiCloudIntegrationInfo::getAppsecret)
.eq(NgYingshiCloudIntegrationInfo::getProjectid, k)
.list();
NgYingshiCloudIntegrationInfo yingshiCloudIntegrationInfo;
if(!list.isEmpty())
{
yingshiCloudIntegrationInfo=list.get(0);
//获取accessToken
String accessToken=yingshiyunService.getAuth(yingshiCloudIntegrationInfo.getAppkey(),yingshiCloudIntegrationInfo.getAppsecret());
//获取设备信息列表
JSONObject deviceInfoList = yingshiyunService.getInfoList(accessToken);
log.info(k+"的监控设备json"+deviceInfoList);
if(deviceInfoList.isEmpty())
{
log.warn(k+"的监控设备json为空");
}
JSONArray data= deviceInfoList.getJSONArray("data");
log.info(k+"的监控设备信息:"+data);
data.forEach(d->{
JSONObject object = JSONUtil.parseObj(d.toString());
String deviceSerial=object.getStr("deviceSerial");//设备编码
Long status=object.getLong("status");//设备状态
for(DeviceInformationMonitor device:v)
{
if(device.getDeviceEncoding().equals(deviceSerial))
{
device.setStatus(status);//设置status0=离线1=在线
break;
}
}
});
}
//批量更新设备状态数据
boolean flag=deviceInformationMonitorService.updateBatchById(v);
if(!flag)
{
log.warn("监控设备状态更新失败");
}
});
}catch (Exception e){
log.warn("获取监控设备实时状态失败",e);
}
}
} }