From b5c7bbbeb82e87bd684c586218c6c0d1db708098 Mon Sep 17 00:00:00 2001 From: zy <82248909@qq.com> Date: Mon, 17 Nov 2025 16:16:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9C=A8=E7=BA=BF=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 2 +- .../controller/BigScreenController.java | 13 +++ .../mapper/xml/SurvDeviceDeployMapper.xml | 3 +- .../appmana/service/ISurvConfigService.java | 4 + .../service/impl/SurvConfigServiceImpl.java | 52 +++++++++++ .../jeecg/modules/appmana/utils/Iotutils.java | 59 +++++++++++++ .../modules/appmana/utils/SdrkUtils.java | 8 +- .../controller/SurvStationInfoController.java | 23 +++-- .../applet/mapper/SurvConfigMapper.java | 19 ++++ .../applet/mapper/xml/SurvConfigMapper.xml | 15 ++++ .../mapper/xml/SurvDeviceDeployMapper.xml | 3 +- .../applet/service/ISurvConfigService.java | 23 +++++ .../service/impl/SurvConfigServiceImpl.java | 86 +++++++++++++++++++ .../jeecg/system/applet/util/Iotutils.java | 61 +++++++++++++ .../common/constant/PollutionConstants.java | 50 ++++++++++- .../org/jeecg/common/entity/SurvConfig.java | 39 ++++++++- .../jeecg/common/entity/SurvDeviceDeploy.java | 15 ++++ .../common/entity/SurvMaintainRecord.java | 4 + .../jeecg/common/vo/CommonLocationTrans.java | 1 + 19 files changed, 460 insertions(+), 20 deletions(-) create mode 100644 zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/utils/Iotutils.java create mode 100644 zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/mapper/SurvConfigMapper.java create mode 100644 zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/mapper/xml/SurvConfigMapper.xml create mode 100644 zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/service/ISurvConfigService.java create mode 100644 zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/service/impl/SurvConfigServiceImpl.java create mode 100644 zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/util/Iotutils.java diff --git a/jeecg-server-cloud/jeecg-cloud-nacos/src/main/resources/application.yml b/jeecg-server-cloud/jeecg-cloud-nacos/src/main/resources/application.yml index 3430dc6..7d6d6be 100644 --- a/jeecg-server-cloud/jeecg-cloud-nacos/src/main/resources/application.yml +++ b/jeecg-server-cloud/jeecg-cloud-nacos/src/main/resources/application.yml @@ -14,7 +14,7 @@ db: password: '0': ${MYSQL-PWD:user_fx} url: - '0': jdbc:mysql://${MYSQL-HOST:jeecg-boot-mysql}:${MYSQL-PORT:3306}/${MYSQL-DB:fx_nacos}?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true + '0': jdbc:mysql://${MYSQL-HOST:jeecg-boot-mysql}:${MYSQL-PORT:13306}/${MYSQL-DB:fx_nacos}?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true user: '0': ${MYSQL-USER:user_fx} management: diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/BigScreenController.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/BigScreenController.java index 8f0b039..07f0e5d 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/BigScreenController.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/BigScreenController.java @@ -17,6 +17,7 @@ import org.jeecg.common.util.R; import org.jeecg.common.util.oConvertUtils; import org.jeecg.common.vo.*; import org.jeecg.modules.appmana.service.*; +import org.jeecg.modules.appmana.utils.Iotutils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; @@ -888,6 +889,8 @@ public class BigScreenController { } //移除非摄像头设备 survStationInfo.getDeviceList().retainAll(remainList); + //补充在线状态 + survStationInfo.setDeviceList(Iotutils.addOnlineStatus(survStationInfo.getDeviceList())); } survStationInfo.setLatestData(returnArrs); survStationInfo.setLatestSoilData(returnSoilArrs); @@ -1035,6 +1038,7 @@ public class BigScreenController { ent.setIotReverseUrl(deploy.getDeviceReverseIotUrl()); ent.setMapIcon(deploy.getMapIcon()); ent.setIds(deploy.getId()); + ent.setIsOnline(Iotutils.addOnlineStatus(deploy).getIsOnline()); returnList.add(ent); } } @@ -1051,6 +1055,15 @@ public class BigScreenController { //萤石云token String token = getYsToken(); List stationList = survStationInfoService.getAllStationAndDevice(stationCode,PollutionConstants.CAMERA,token); + //补充在线状态 + if(!stationList.isEmpty()){ + for (SurvStationInfo survStationInfo : stationList) { + if(survStationInfo.getDeviceList()!=null && !survStationInfo.getDeviceList().isEmpty()){ + List deploys = Iotutils.addOnlineStatus(survStationInfo.getDeviceList()); + survStationInfo.setDeviceList(deploys); + } + } + } return Result.ok(stationList); } diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployMapper.xml b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployMapper.xml index 9343a54..b28182d 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployMapper.xml +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployMapper.xml @@ -38,6 +38,7 @@ + @@ -48,7 +49,7 @@ - ID,DEPLOY_CODE,STATION_CODE,RUN_STATUS,POWER_STATUS,LASTSYNC_TIME,DEVICE_CODE,DEPLOY_DES,DEPLOY_PIC,DEVICE_URL,SORT_NO,TENANT_ID,RE_VISION,CREATED_BY,CREATE_TIME,UPDATED_BY,IS_DEL,UPDATED_TIME,DEPLOY_TYPE,DEVICE_LATITUDE,DEVICE_LONGITUDE,GROUP_ID,IZ_BAOJING,IP_ADDR,PORT,SEND_INFO,MAP_ICON,DEVICE_IOT_URL,DEVICE_REVERSE_IOT_URL,DEVICE_LONGLAT,PROTOCOL_CODE,PROTOCOL_TYPE,DEPLOY_CATE,DEPLOY_SECONDARY_TYPE,CATE_ID + ID,DEPLOY_CODE,STATION_CODE,RUN_STATUS,POWER_STATUS,LASTSYNC_TIME,DEVICE_CODE,DEPLOY_DES,DEPLOY_PIC,DEVICE_URL,SORT_NO,TENANT_ID,RE_VISION,CREATED_BY,CREATE_TIME,UPDATED_BY,IS_DEL,UPDATED_TIME,DEPLOY_TYPE,DEVICE_LATITUDE,DEVICE_LONGITUDE,GROUP_ID,IZ_BAOJING,IP_ADDR,PORT,SEND_INFO,MAP_ICON,DEVICE_IOT_URL,DEVICE_REVERSE_IOT_URL,DEVICE_LONGLAT,PROTOCOL_CODE,PROTOCOL_TYPE,DEPLOY_CATE,DEPLOY_SECONDARY_TYPE,CATE_ID,SURV_CONFIG_ID diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvConfigService.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvConfigService.java index 9f902f6..cdac898 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvConfigService.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvConfigService.java @@ -18,4 +18,8 @@ public interface ISurvConfigService extends IService { SurvConfig getOneByTypeWithTenant(String tenantId, String type); + + SurvConfig getConfigById(String survConfigId); + + long getOfflineConfig(String tenantId,String deployType); } diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvConfigServiceImpl.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvConfigServiceImpl.java index 7ef3d0a..466fc0a 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvConfigServiceImpl.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvConfigServiceImpl.java @@ -2,6 +2,7 @@ package org.jeecg.modules.appmana.service.impl; import org.apache.commons.lang3.StringUtils; import org.jeecg.common.constant.IotConstants; +import org.jeecg.common.constant.PollutionConstants; import org.jeecg.common.entity.SurvConfig; import org.jeecg.modules.appmana.mapper.SurvConfigMapper; import org.jeecg.modules.appmana.service.ISurvConfigService; @@ -32,4 +33,55 @@ public class SurvConfigServiceImpl extends ServiceImpl addOnlineStatus(List deploys){ + List deps = new ArrayList<>(); + if(deploys!=null && !deploys.isEmpty()){ + for (SurvDeviceDeploy deploy : deploys) { + deploy.setIsOnline(getDeviceOnlineStatus(deploy)); + deps.add(deploy); + } + } + return deps; + } + + public static SurvDeviceDeploy addOnlineStatus(SurvDeviceDeploy deploy){ + if(deploy!=null){ + deploy.setIsOnline(getDeviceOnlineStatus(deploy)); + } + return deploy; + } +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/utils/SdrkUtils.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/utils/SdrkUtils.java index 56db022..d212c74 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/utils/SdrkUtils.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/utils/SdrkUtils.java @@ -135,11 +135,11 @@ public class SdrkUtils { VOIotAccess voIotAccess = null; //优先使用设备配置的密钥 SurvConfig survConfig = null; -// if(StringUtils.isNotBlank(deploy.getSurvConfigId())){ -// survConfig = configService.getConfigById(deploy.getSurvConfigId()); -// }else{ + if(StringUtils.isNotBlank(deploy.getSurvConfigId())){ + survConfig = configService.getConfigById(deploy.getSurvConfigId()); + }else{ survConfig = configService.getOneByTypeWithTenant(deploy.getTenantId(), IotConstants.renke_access); -// } + } if(survConfig!=null){ voIotAccess = new VOIotAccess(); voIotAccess.setAppSecret(survConfig.getConfigValue()); diff --git a/zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/controller/SurvStationInfoController.java b/zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/controller/SurvStationInfoController.java index d13d835..7a3b748 100644 --- a/zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/controller/SurvStationInfoController.java +++ b/zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/controller/SurvStationInfoController.java @@ -21,6 +21,7 @@ import org.jeecg.system.applet.service.*; import lombok.extern.slf4j.Slf4j; +import org.jeecg.system.applet.util.Iotutils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import io.swagger.annotations.Api; @@ -100,7 +101,7 @@ public class SurvStationInfoController { // QueryWrapper queryWrapper = Wrappers.query(survStationInfo); Page page = new Page(pageNo, pageSize); IPage pageList = survStationInfoService.pages(page, survStationInfo); - if(pageList.getRecords().size()>0) { + if(!pageList.getRecords().isEmpty()) { for (SurvStationInfo record : pageList.getRecords()) { List airList = new ArrayList<>(); List soilList = new ArrayList<>(); @@ -125,31 +126,36 @@ public class SurvStationInfoController { Integer finalDataCounts = 0; //水实时 - if(orientList.size()>0) { + if(!orientList.isEmpty()) { //计算历史数据量 Integer dataCounts = hisdataOrientwaterService.getHisDataCount(orientList); finalDataCounts=finalDataCounts+dataCounts; } - if(liveList.size()>0) { + if(!liveList.isEmpty()) { //计算历史数据量 Integer dataCounts = hisdataLivestockwaterService.getHisDataCount(liveList); finalDataCounts=finalDataCounts+dataCounts; } //气实时 - if(airList.size()>0) { + if(!airList.isEmpty()) { //计算历史数据量 Integer dataCounts = hisdataAirService.getHisDataCount(airList); finalDataCounts=finalDataCounts+dataCounts; } //土壤实时 - if(soilList.size()>0){ + if(!soilList.isEmpty()){ //计算历史数据量 Integer dataCounts = hisdataSoilService.getHisDataCount(soilList); finalDataCounts=finalDataCounts+dataCounts; } //获取数据量 record.setSurvDataCount(finalDataCounts); + //补充设备在线状态 + if(record.getDeviceList()!=null && !record.getDeviceList().isEmpty()){ + List deploys = Iotutils.addOnlineStatus(record.getDeviceList()); + record.setDeviceList(deploys); + } } } return R.ok(pageList); @@ -224,7 +230,8 @@ public class SurvStationInfoController { jsonObject.put("survItemList",allSurv); //监控摄像头 List camList = survDeviceDeployService.list(Wrappers.lambdaQuery().eq(SurvDeviceDeploy::getStationCode,stationCode).eq(SurvDeviceDeploy::getDeployType,PollutionConstants.CAMERA).orderByAsc(SurvDeviceDeploy::getSortNo)); - jsonObject.put("survCamera",camList); + List adds = Iotutils.addOnlineStatus(camList); + jsonObject.put("survCamera",adds); JSONArray jsonArray = new JSONArray(); Integer finalDataCounts = 0; @@ -393,7 +400,8 @@ public class SurvStationInfoController { List stationList = survStationInfoService.listALlStation(); for (SurvStationInfo survStationInfo : stationList) { List pageList = survDeviceDeployService.getDeviceByStationNoCam(survStationInfo.getStationCode(),null); - joa.add(pageList); + List adds = Iotutils.addOnlineStatus(pageList); + joa.add(adds); count++; } return R.ok(joa); @@ -472,6 +480,7 @@ public class SurvStationInfoController { ent.setIotReverseUrl(deploy.getDeviceReverseIotUrl()); ent.setMapIcon(deploy.getMapIcon()); ent.setIds(deploy.getId()); + ent.setIsOnline(Iotutils.addOnlineStatus(deploy).getIsOnline()); returnList.add(ent); } } diff --git a/zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/mapper/SurvConfigMapper.java b/zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/mapper/SurvConfigMapper.java new file mode 100644 index 0000000..395f0b3 --- /dev/null +++ b/zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/mapper/SurvConfigMapper.java @@ -0,0 +1,19 @@ +package org.jeecg.system.applet.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.jeecg.common.entity.SurvConfig; + +/** + * @Description: 业务参数配置表 + * @Author: jeecg-boot + * @Date: 2023-07-21 + * @Version: V1.0 + */ +public interface SurvConfigMapper extends BaseMapper { + + String getValueByKey(String key); + + + SurvConfig getOneByTypeWithTenant(@Param("tenantId") String tenantId, @Param("type") String type); +} diff --git a/zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/mapper/xml/SurvConfigMapper.xml b/zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/mapper/xml/SurvConfigMapper.xml new file mode 100644 index 0000000..a7c1f49 --- /dev/null +++ b/zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/mapper/xml/SurvConfigMapper.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/mapper/xml/SurvDeviceDeployMapper.xml b/zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/mapper/xml/SurvDeviceDeployMapper.xml index 3f36277..0b784f0 100644 --- a/zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/mapper/xml/SurvDeviceDeployMapper.xml +++ b/zh-module-applet/zh-applet-api/src/main/java/org/jeecg/system/applet/mapper/xml/SurvDeviceDeployMapper.xml @@ -37,6 +37,7 @@ + @@ -57,7 +58,7 @@ - ID,DEPLOY_CODE,STATION_CODE,RUN_STATUS,POWER_STATUS,LASTSYNC_TIME,DEVICE_CODE,DEPLOY_DES,DEPLOY_PIC,DEVICE_URL,SORT_NO,TENANT_ID,RE_VISION,CREATED_BY,CREATE_TIME,UPDATED_BY,IS_DEL,UPDATED_TIME,DEPLOY_TYPE,DEVICE_LATITUDE,DEVICE_LONGITUDE,GROUP_ID,IZ_BAOJING,IP_ADDR,PORT,SEND_INFO,MAP_ICON,DEVICE_IOT_URL,DEVICE_REVERSE_IOT_URL,DEVICE_LONGLAT,PROTOCOL_CODE,PROTOCOL_TYPE,DEPLOY_CATE,DEPLOY_SECONDARY_TYPE,CATE_ID + ID,DEPLOY_CODE,STATION_CODE,RUN_STATUS,POWER_STATUS,LASTSYNC_TIME,DEVICE_CODE,DEPLOY_DES,DEPLOY_PIC,DEVICE_URL,SORT_NO,TENANT_ID,RE_VISION,CREATED_BY,CREATE_TIME,UPDATED_BY,IS_DEL,UPDATED_TIME,DEPLOY_TYPE,DEVICE_LATITUDE,DEVICE_LONGITUDE,GROUP_ID,IZ_BAOJING,IP_ADDR,PORT,SEND_INFO,MAP_ICON,DEVICE_IOT_URL,DEVICE_REVERSE_IOT_URL,DEVICE_LONGLAT,PROTOCOL_CODE,PROTOCOL_TYPE,DEPLOY_CATE,DEPLOY_SECONDARY_TYPE,CATE_ID,SURV_CONFIG_ID