增加监控接口,调整Maven依赖
This commit is contained in:
parent
0f18d0f33d
commit
90eefb2977
|
|
@ -44,6 +44,16 @@
|
|||
<dependency>
|
||||
<groupId>org.jeecgframework.boot</groupId>
|
||||
<artifactId>jeecg-boot-common</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-core</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-crypto</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<!--集成springmvc框架并实现自动配置 -->
|
||||
<dependency>
|
||||
|
|
@ -258,6 +268,12 @@
|
|||
<artifactId>easy-captcha</artifactId>
|
||||
<version>1.6.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-all</artifactId>
|
||||
<version>${hutool.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
|
@ -19,6 +19,16 @@
|
|||
<dependency>
|
||||
<groupId>org.jeecgframework.boot</groupId>
|
||||
<artifactId>jeecg-boot-starter-cloud</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-core</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-crypto</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
<!-- jeecg-system-biz依赖 -->
|
||||
|
|
|
|||
2
pom.xml
2
pom.xml
|
|
@ -46,7 +46,7 @@
|
|||
<ojdbc6.version>11.2.0.3</ojdbc6.version>
|
||||
<sqljdbc4.version>4.0</sqljdbc4.version>
|
||||
<mysql-connector-java.version>8.0.27</mysql-connector-java.version>
|
||||
<hutool.version>5.3.8</hutool.version>
|
||||
<hutool.version>5.8.22</hutool.version>
|
||||
|
||||
<!-- 持久层 -->
|
||||
<mybatis-plus.version>3.5.1</mybatis-plus.version>
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import io.swagger.annotations.ApiOperation;
|
|||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.constant.IotConstants;
|
||||
import org.jeecg.common.constant.PollutionConstants;
|
||||
import org.jeecg.common.entity.*;
|
||||
import org.jeecg.common.constant.enums.PollutionEnum;
|
||||
|
|
@ -18,6 +19,7 @@ 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.jeecg.modules.appmana.utils.YSUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
|
|
@ -99,6 +101,12 @@ public class BigScreenController {
|
|||
@Value(value = "${ysy.secret}")
|
||||
private String secret;
|
||||
|
||||
@Autowired
|
||||
private Iotutils iotutils;
|
||||
|
||||
@Autowired
|
||||
private ISurvConfigService survConfigService;
|
||||
|
||||
|
||||
@ApiOperation("获取萤石云token")
|
||||
@PostMapping(value = "/getYsToken")
|
||||
|
|
@ -890,7 +898,7 @@ public class BigScreenController {
|
|||
//移除非摄像头设备
|
||||
survStationInfo.getDeviceList().retainAll(remainList);
|
||||
//补充在线状态
|
||||
survStationInfo.setDeviceList(Iotutils.addOnlineStatus(survStationInfo.getDeviceList()));
|
||||
survStationInfo.setDeviceList(iotutils.addOnlineStatus(survStationInfo.getDeviceList()));
|
||||
}
|
||||
survStationInfo.setLatestData(returnArrs);
|
||||
survStationInfo.setLatestSoilData(returnSoilArrs);
|
||||
|
|
@ -1038,7 +1046,7 @@ public class BigScreenController {
|
|||
ent.setIotReverseUrl(deploy.getDeviceReverseIotUrl());
|
||||
ent.setMapIcon(deploy.getMapIcon());
|
||||
ent.setIds(deploy.getId());
|
||||
ent.setIsOnline(Iotutils.addOnlineStatus(deploy).getIsOnline());
|
||||
ent.setIsOnline(iotutils.addOnlineStatus(deploy).getIsOnline());
|
||||
returnList.add(ent);
|
||||
}
|
||||
}
|
||||
|
|
@ -1053,13 +1061,15 @@ public class BigScreenController {
|
|||
@ApiOperation("获取首页站点侧数据")
|
||||
public Result stationInfoWithCamera(@RequestParam(value = "stationCode",required = false)String stationCode){
|
||||
//萤石云token
|
||||
String token = getYsToken();
|
||||
//萤石云token
|
||||
SurvConfig survConfig = survConfigService.getOneByTypeWithTenant("0", IotConstants.ysyAcess);
|
||||
String token = new YSUtils().getYsToken(survConfig);
|
||||
List<SurvStationInfo> stationList = survStationInfoService.getAllStationAndDevice(stationCode,PollutionConstants.CAMERA,token);
|
||||
//补充在线状态
|
||||
if(!stationList.isEmpty()){
|
||||
for (SurvStationInfo survStationInfo : stationList) {
|
||||
if(survStationInfo.getDeviceList()!=null && !survStationInfo.getDeviceList().isEmpty()){
|
||||
List<SurvDeviceDeploy> deploys = Iotutils.addOnlineStatus(survStationInfo.getDeviceList());
|
||||
List<SurvDeviceDeploy> deploys = iotutils.addOnlineStatus(survStationInfo.getDeviceList());
|
||||
survStationInfo.setDeviceList(deploys);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
package org.jeecg.modules.appmana.controller;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import org.jeecg.common.entity.SurvConfig;
|
||||
|
|
@ -59,19 +59,9 @@ public class SurvConfigController extends JeecgController<SurvConfig, ISurvConfi
|
|||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<SurvConfig> queryWrapper = QueryGenerator.initQueryWrapper(survConfig, req.getParameterMap());
|
||||
// QueryWrapper<SurvConfig> queryWrapper = QueryGenerator.initQueryWrapper(survConfig, req.getParameterMap());
|
||||
Page<SurvConfig> page = new Page<SurvConfig>(pageNo, pageSize);
|
||||
IPage<SurvConfig> pageList = survConfigService.page(page, queryWrapper);
|
||||
//补充字典
|
||||
if(!pageList.getRecords().isEmpty()){
|
||||
List<String> types = pageList.getRecords().stream().map(SurvConfig::getConfigType).collect(Collectors.toList());
|
||||
List<DictVo> maps = survConfigService.getDictByCode("apply_config_type");
|
||||
// maps.stream().collect(Collectors.toMap())
|
||||
for (SurvConfig record : pageList.getRecords()) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
IPage<SurvConfig> pageList = survConfigService.pages(page, survConfig);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
|
|
@ -89,6 +79,9 @@ public class SurvConfigController extends JeecgController<SurvConfig, ISurvConfi
|
|||
String username = JwtUtil.getUserNameByToken(request);
|
||||
survConfig.setCreatedBy(username);
|
||||
survConfig.setCreateTime(new Date());
|
||||
if (StringUtils.isNotBlank(survConfig.getConfigJsonStr())) {
|
||||
survConfig.setConfigJson(JSONUtil.parseObj(survConfig.getConfigJsonStr()));
|
||||
}
|
||||
survConfigService.save(survConfig);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
|
@ -109,6 +102,9 @@ public class SurvConfigController extends JeecgController<SurvConfig, ISurvConfi
|
|||
survConfig.setUpdatedTime(null);
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
survConfig.setUpdatedBy(username);
|
||||
if (StringUtils.isNotBlank(survConfig.getConfigJsonStr())) {
|
||||
survConfig.setConfigJson(JSONUtil.parseObj(survConfig.getConfigJsonStr()));
|
||||
}
|
||||
survConfigService.updateById(survConfig);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import java.util.List;
|
|||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
|
|
@ -14,8 +15,11 @@ import com.google.gson.JsonObject;
|
|||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.constant.CommonConstant;
|
||||
import org.jeecg.common.constant.IotConstants;
|
||||
import org.jeecg.common.constant.PollutionConstants;
|
||||
import org.jeecg.common.entity.*;
|
||||
import org.jeecg.common.iot.common.DTOCamControl;
|
||||
import org.jeecg.common.iot.common.IotDeviceCtlResult;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import org.jeecg.common.system.util.JwtUtil;
|
||||
import org.jeecg.common.vo.DeviceCmdVo;
|
||||
|
|
@ -27,6 +31,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.modules.appmana.utils.Iotutils;
|
||||
import org.jeecg.modules.appmana.utils.YSUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
|
@ -63,6 +69,14 @@ public class SurvDeviceDeployController extends JeecgController<SurvDeviceDeploy
|
|||
@Autowired
|
||||
private ISurvDeviceDeployService deviceDeployService;
|
||||
|
||||
@Autowired
|
||||
private ISurvConfigService survConfigService;
|
||||
|
||||
@Autowired
|
||||
private ISurvStationInfoService survStationInfoService;
|
||||
|
||||
@Autowired
|
||||
private Iotutils iotutils;
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
|
|
@ -287,4 +301,48 @@ public class SurvDeviceDeployController extends JeecgController<SurvDeviceDeploy
|
|||
return Result.error("初始化失败,请联系管理员!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/cameraStart")
|
||||
@ApiOperation("21.摄像头控制开始")
|
||||
@ApiOperationSupport(order = 21)
|
||||
public Result cameraStart(@RequestBody DTOCamControl dtoCamControl) {
|
||||
SurvDeviceDeploy deploy = survDeviceDeployService.getById(dtoCamControl.getCameraId());
|
||||
Assert.notNull(deploy, "无效的摄像头");
|
||||
IotDeviceCtlResult iotDeviceCtlResult = new YSUtils().controlCamra(deploy, deploy.getDeployCode(), dtoCamControl.getDirection());
|
||||
Boolean result = iotDeviceCtlResult.isSuccess();
|
||||
return result ? Result.ok(iotDeviceCtlResult.getMessage()) : Result.error(iotDeviceCtlResult.getMessage());
|
||||
}
|
||||
|
||||
@PostMapping("/cameraStop")
|
||||
@ApiOperation("22.摄像头控制结束")
|
||||
@ApiOperationSupport(order = 22)
|
||||
public Result cameraStop(@RequestBody DTOCamControl dtoCamControl) {
|
||||
SurvDeviceDeploy deploy = survDeviceDeployService.getById(dtoCamControl.getCameraId());
|
||||
Assert.notNull(deploy, "无效的摄像头");
|
||||
IotDeviceCtlResult iotDeviceCtlResult = new YSUtils().endControlCamra(deploy, deploy.getDeployCode(), dtoCamControl.getDirection());
|
||||
Boolean result = iotDeviceCtlResult.isSuccess();
|
||||
return result ? Result.ok(iotDeviceCtlResult.getMessage()) : Result.error(iotDeviceCtlResult.getMessage());
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/stationInfoWithCamera")
|
||||
@ApiOperation("获取首页站点侧数据")
|
||||
public Result stationInfoWithCamera(@RequestParam(value = "stationCode",required = false)String stationCode){
|
||||
//萤石云token
|
||||
SurvConfig survConfig = survConfigService.getOneByTypeWithTenant("0", IotConstants.ysyAcess);
|
||||
String token = new YSUtils().getYsToken(survConfig);
|
||||
List<SurvStationInfo> stationList = survStationInfoService.getAllStationAndDevice(stationCode,PollutionConstants.CAMERA,token);
|
||||
//补充在线状态
|
||||
if(!stationList.isEmpty()){
|
||||
for (SurvStationInfo survStationInfo : stationList) {
|
||||
if(survStationInfo.getDeviceList()!=null && !survStationInfo.getDeviceList().isEmpty()){
|
||||
List<SurvDeviceDeploy> deploys = iotutils.addOnlineStatus(survStationInfo.getDeviceList());
|
||||
survStationInfo.setDeviceList(deploys);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Result.ok(stationList);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package org.jeecg.modules.appmana.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.jeecg.common.entity.SurvConfig;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
|
@ -22,4 +24,6 @@ public interface SurvConfigMapper extends BaseMapper<SurvConfig> {
|
|||
SurvConfig getOneByTypeWithTenant(@Param("tenantId") String tenantId, @Param("type") String type);
|
||||
|
||||
List<DictVo> getDictByCode(String applyConfigType);
|
||||
|
||||
IPage<SurvConfig> getPages(Page<SurvConfig> page, @Param("query") SurvConfig survConfig);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,32 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.jeecg.modules.appmana.mapper.SurvConfigMapper">
|
||||
|
||||
<resultMap type="org.jeecg.common.entity.SurvConfig" id="SurvConfigMap">
|
||||
<result property="id" column="ID" jdbcType="VARCHAR"/>
|
||||
<result property="configName" column="CONFIG_NAME" jdbcType="VARCHAR"/>
|
||||
<result property="configKey" column="CONFIG_KEY" jdbcType="VARCHAR"/>
|
||||
<result property="configValue" column="CONFIG_VALUE" jdbcType="VARCHAR"/>
|
||||
<result property="configValueSe" column="CONFIG_VALUE_SE" jdbcType="VARCHAR"/>
|
||||
<result property="configValueSe2" column="CONFIG_VALUE_SE2" jdbcType="VARCHAR"/>
|
||||
<result property="configValueSe3" column="CONFIG_VALUE_SE3" jdbcType="VARCHAR"/>
|
||||
<result property="configValueSe4" column="CONFIG_VALUE_SE4" jdbcType="VARCHAR"/>
|
||||
<result property="configJson" column="CONFIG_JSON" jdbcType="VARCHAR" typeHandler="org.jeecg.common.mybatis.typehandler.JsonTypeHandler"/>
|
||||
<result property="configType" column="CONFIG_TYPE" jdbcType="VARCHAR"/>
|
||||
<result property="configRemark" column="CONFIG_REMARK" jdbcType="VARCHAR"/>
|
||||
<result property="tenantId" column="TENANT_ID" jdbcType="VARCHAR"/>
|
||||
<result property="reVision" column="RE_VISION" jdbcType="INTEGER"/>
|
||||
<result property="createdBy" column="CREATED_BY" jdbcType="VARCHAR"/>
|
||||
<result property="createTime" column="CREATE_TIME" jdbcType="TIMESTAMP"/>
|
||||
<result property="updatedBy" column="UPDATED_BY" jdbcType="VARCHAR"/>
|
||||
<result property="isDel" column="IS_DEL" jdbcType="INTEGER"/>
|
||||
<result property="updatedTime" column="UPDATED_TIME" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="baseSql">
|
||||
ID,CONFIG_NAME,CONFIG_KEY,CONFIG_VALUE,CONFIG_VALUE_SE,CONFIG_VALUE_SE2,CONFIG_VALUE_SE3,CONFIG_VALUE_SE4,CONFIG_JSON,CONFIG_TYPE,CONFIG_REMARK,TENANT_ID,RE_VISION,CREATED_BY,CREATE_TIME,UPDATED_BY,IS_DEL,UPDATED_TIME
|
||||
</sql>
|
||||
|
||||
|
||||
<select id="getValueByKey" resultType="java.lang.String">
|
||||
select CONFIG_VALUE from surv_config where CONFIG_KEY = #{key}
|
||||
</select>
|
||||
|
|
@ -19,4 +45,25 @@
|
|||
and s.status = 1
|
||||
order by s.sort_order asc, s.create_time DESC;
|
||||
</select>
|
||||
|
||||
<select id="getPages" resultMap="SurvConfigMap">
|
||||
select
|
||||
<include refid="baseSql"/>
|
||||
from surv_config
|
||||
<where>
|
||||
<if test="query.configName != null and query.configName != ''">
|
||||
and CONFIG_NAME LIKE CONCAT('%',#{query.configName},'%')
|
||||
</if>
|
||||
<if test="query.configKey != null and query.configKey != ''">
|
||||
and CONFIG_KEY = #{query.configKey}
|
||||
</if>
|
||||
<if test="query.configType != null and query.configType != ''">
|
||||
and CONFIG_TYPE = #{query.configType}
|
||||
</if>
|
||||
<if test="query.tenantId != null and query.tenantId != ''">
|
||||
and TENANT_ID = #{query.tenantId}
|
||||
</if>
|
||||
</where>
|
||||
order by CREATE_TIME desc
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -43,7 +43,7 @@
|
|||
</sql>
|
||||
|
||||
<select id="getDeviceList" resultType="org.jeecg.common.entity.SurvDeviceDeploy">
|
||||
select ID,DEPLOY_TYPE,DEPLOY_CODE,DEPLOY_PIC,DEVICE_URL,DEVICE_CODE,DEPLOY_DES,SORT_NO,#{ysToken} as ysToken from surv_device_deploy where STATION_CODE = #{STATION_CODE}
|
||||
select ID,DEPLOY_TYPE,DEPLOY_CODE,DEPLOY_PIC,DEVICE_URL,DEVICE_CODE,DEPLOY_DES,SORT_NO,DEVICE_IOT_URL,DEVICE_REVERSE_IOT_URL,MAP_ICON,DEVICE_LONGLAT,DEPLOY_SECONDARY_TYPE,#{ysToken} as ysToken from surv_device_deploy where STATION_CODE = #{STATION_CODE}
|
||||
<if test="deviceType != null and deviceType != ''">
|
||||
AND DEPLOY_TYPE = #{deviceType}
|
||||
</if>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package org.jeecg.modules.appmana.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.jeecg.common.constant.IotConstants;
|
||||
import org.jeecg.common.entity.SurvConfig;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
|
@ -28,4 +30,6 @@ public interface ISurvConfigService extends IService<SurvConfig> {
|
|||
long getOfflineConfig(String tenantId,String deployType);
|
||||
|
||||
List<DictVo> getDictByCode(String applyConfigType);
|
||||
|
||||
IPage<SurvConfig> pages(Page<SurvConfig> page, SurvConfig survConfig);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package org.jeecg.modules.appmana.service.impl;
|
|||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.beanutils.BeanUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jeecg.common.constant.PollutionConstants;
|
||||
import org.jeecg.common.constant.enums.PollutionEnum;
|
||||
import org.jeecg.common.entity.*;
|
||||
|
|
@ -32,7 +33,8 @@ public class CommonServiceImpl {
|
|||
private ISurvHisdataOrientwaterService hisdataOrientwaterService;
|
||||
@Autowired
|
||||
private ISurvHisdataLivestockwaterService hisdataLivestockwaterService;
|
||||
|
||||
@Autowired
|
||||
private SurvConfigServiceImpl configService;
|
||||
|
||||
/**
|
||||
* 获取监测设备的数据
|
||||
|
|
@ -131,4 +133,17 @@ public class CommonServiceImpl {
|
|||
voHisResult.setDataList(dataList);
|
||||
return voHisResult;
|
||||
}
|
||||
|
||||
|
||||
public SurvConfig getSurvConfig(String configId,String tenantId,String configType) {
|
||||
SurvConfig survConfig = null;
|
||||
if(StringUtils.isNotBlank(configId)){
|
||||
survConfig = configService.getConfigById(configId);
|
||||
}else{
|
||||
if(StringUtils.isNotBlank(configType) && StringUtils.isNotBlank(tenantId)){
|
||||
survConfig = configService.getOneByTypeWithTenant(tenantId, configType);
|
||||
}
|
||||
}
|
||||
return survConfig;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
package org.jeecg.modules.appmana.service.impl;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jeecg.common.constant.IotConstants;
|
||||
import org.jeecg.common.constant.PollutionConstants;
|
||||
|
|
@ -15,6 +18,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description: 业务参数配置表
|
||||
|
|
@ -94,4 +99,22 @@ public class SurvConfigServiceImpl extends ServiceImpl<SurvConfigMapper, SurvCon
|
|||
public List<DictVo> getDictByCode(String applyConfigType) {
|
||||
return baseMapper.getDictByCode(applyConfigType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<SurvConfig> pages(Page<SurvConfig> page, SurvConfig survConfig) {
|
||||
IPage<SurvConfig> pageList = baseMapper.getPages(page,survConfig);
|
||||
//补充字典
|
||||
if(!pageList.getRecords().isEmpty()){
|
||||
List<DictVo> maps = getDictByCode("apply_config_type");
|
||||
Map<String,DictVo> dictMap = maps.stream().collect(Collectors.toMap(DictVo::getValue, element -> element));
|
||||
for (SurvConfig record : pageList.getRecords()) {
|
||||
DictVo dictVo = dictMap.get(record.getConfigType());
|
||||
record.setConfigTypeName(dictVo!=null?dictVo.getText():record.getConfigType());
|
||||
if (record.getConfigJson() != null) {
|
||||
record.setConfigJsonStr(JSONUtil.toJsonStr(record.getConfigJson()));
|
||||
}
|
||||
}
|
||||
}
|
||||
return pageList;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,17 +3,22 @@ package org.jeecg.modules.appmana.utils;
|
|||
import org.jeecg.common.entity.SurvDeviceDeploy;
|
||||
import org.jeecg.common.util.SpringContextUtils;
|
||||
import org.jeecg.modules.appmana.service.ISurvConfigService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Component
|
||||
public class Iotutils {
|
||||
|
||||
private static ISurvConfigService survConfigService = SpringContextUtils.getBean(ISurvConfigService.class);
|
||||
|
||||
public static Integer checkIsOnline(String tenantId, String protocolCode, Date lastSyncTime, String deployType) {
|
||||
@Autowired
|
||||
private ISurvConfigService survConfigService ;
|
||||
|
||||
public Integer checkIsOnline(String tenantId, String protocolCode, Date lastSyncTime, String deployType) {
|
||||
|
||||
long limitTime = survConfigService.getOfflineConfig(tenantId,deployType);
|
||||
if (lastSyncTime != null) {
|
||||
|
|
@ -23,7 +28,7 @@ public class Iotutils {
|
|||
}
|
||||
}
|
||||
|
||||
private static int timeCompare(long standardTime, long checkTime) {
|
||||
private int timeCompare(long standardTime, long checkTime) {
|
||||
Date nowDate = new Date();
|
||||
long diffInMillies = Math.abs(nowDate.getTime() - checkTime);
|
||||
long diffInMinutes = TimeUnit.MINUTES.convert(diffInMillies, TimeUnit.MILLISECONDS);
|
||||
|
|
@ -34,12 +39,12 @@ public class Iotutils {
|
|||
}
|
||||
}
|
||||
|
||||
public static Integer getDeviceOnlineStatus(SurvDeviceDeploy deploy) {
|
||||
public Integer getDeviceOnlineStatus(SurvDeviceDeploy deploy) {
|
||||
return checkIsOnline(deploy.getTenantId(),deploy.getProtocolCode(),deploy.getLastsyncTime(),deploy.getDeployType());
|
||||
}
|
||||
|
||||
|
||||
public static List<SurvDeviceDeploy> addOnlineStatus(List<SurvDeviceDeploy> deploys){
|
||||
public List<SurvDeviceDeploy> addOnlineStatus(List<SurvDeviceDeploy> deploys){
|
||||
List<SurvDeviceDeploy> deps = new ArrayList<>();
|
||||
if(deploys!=null && !deploys.isEmpty()){
|
||||
for (SurvDeviceDeploy deploy : deploys) {
|
||||
|
|
@ -50,7 +55,7 @@ public class Iotutils {
|
|||
return deps;
|
||||
}
|
||||
|
||||
public static SurvDeviceDeploy addOnlineStatus(SurvDeviceDeploy deploy){
|
||||
public SurvDeviceDeploy addOnlineStatus(SurvDeviceDeploy deploy){
|
||||
if(deploy!=null){
|
||||
deploy.setIsOnline(getDeviceOnlineStatus(deploy));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,207 @@
|
|||
package org.jeecg.modules.appmana.utils;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jeecg.common.constant.IotConstants;
|
||||
import org.jeecg.common.entity.SurvConfig;
|
||||
import org.jeecg.common.entity.SurvDeviceDeploy;
|
||||
import org.jeecg.common.iot.common.IotDeviceCtlResult;
|
||||
import org.jeecg.common.util.RedisUtil;
|
||||
import org.jeecg.common.util.SpringContextUtils;
|
||||
import org.jeecg.common.util.oConvertUtils;
|
||||
import org.jeecg.modules.appmana.service.impl.CommonServiceImpl;
|
||||
import org.jeecg.modules.appmana.service.impl.SurvConfigServiceImpl;
|
||||
import org.springframework.http.*;
|
||||
import org.springframework.util.LinkedMultiValueMap;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.Date;
|
||||
|
||||
@Slf4j
|
||||
public class YSUtils {
|
||||
|
||||
// @Autowired
|
||||
// private RedisTemplate redisTemplate;
|
||||
private static RedisUtil redisUtil = SpringContextUtils.getBean(RedisUtil.class);
|
||||
|
||||
private String ys_key = "ys_token:token:";
|
||||
|
||||
private String ys_expire = "ys_token:expire:";
|
||||
|
||||
|
||||
/**
|
||||
* @Author zy
|
||||
* @Date 2023/07/06 16:21:17
|
||||
* @Description: 此注解相当于设置访问URL
|
||||
*/
|
||||
|
||||
public String getYsToken(String appkey, String secret) {
|
||||
String url = "https://open.ys7.com/api/lapp/token/get";
|
||||
|
||||
String curRedisKey = ys_key + appkey;
|
||||
String curRedisExpireKey = ys_expire + appkey;
|
||||
//检查缓存中是否有token
|
||||
if (redisUtil.hasKey(curRedisKey)) {
|
||||
String ysToken = oConvertUtils.getString(redisUtil.get(curRedisKey));
|
||||
String ysExpire = oConvertUtils.getString(redisUtil.get(curRedisExpireKey));
|
||||
if (StringUtils.isNotBlank(ysToken) && StringUtils.isNotBlank(ysExpire)) {
|
||||
Date d = new Date();
|
||||
Long curStamp = LocalDateTime.now().toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
|
||||
Integer isExpire = curStamp.compareTo(Long.valueOf(ysExpire));
|
||||
if (isExpire < 0) {//未过期
|
||||
return ysToken;
|
||||
}
|
||||
}
|
||||
}
|
||||
//缓存中没有token的逻辑
|
||||
log.error("{}:缓存失效重新获取萤石 Token", appkey);
|
||||
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
|
||||
paramMap.add("appKey", appkey);
|
||||
paramMap.add("appSecret", secret);
|
||||
|
||||
JSONObject resposeJson = postRequest(url, paramMap);
|
||||
String resCode = resposeJson.getString("code");
|
||||
if ("200".equals(resCode)) {//正常获取到token,返回并刷新缓存
|
||||
String newToken = resposeJson.getJSONObject("data").getString("accessToken");
|
||||
String newExpireTime = resposeJson.getJSONObject("data").getString("expireTime");
|
||||
redisUtil.set(curRedisKey, newToken);
|
||||
redisUtil.set(curRedisExpireKey, newExpireTime);
|
||||
return newToken;
|
||||
} else {
|
||||
throw new RuntimeException("token获取失败:" + resposeJson.getString("msg"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public JSONObject postRequest(String url, MultiValueMap requestMap) {
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
MediaType type = MediaType.parseMediaType("application/x-www-form-urlencoded");
|
||||
headers.setContentType(type);
|
||||
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
|
||||
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(requestMap, headers);
|
||||
ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(url, httpEntity, JSONObject.class);
|
||||
JSONObject body2 = responseEntity.getBody(); //响应体
|
||||
HttpStatus statusCode = responseEntity.getStatusCode(); //状态码
|
||||
HttpHeaders headers1 = responseEntity.getHeaders();//获取到头信息
|
||||
return body2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public IotDeviceCtlResult controlCamra(SurvDeviceDeploy deploy, String deployCode, String direction) {
|
||||
IotDeviceCtlResult iotDeviceCtlResult = new IotDeviceCtlResult();
|
||||
String url = "https://open.ys7.com/api/lapp/device/ptz/start";
|
||||
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
|
||||
String[] ss = deployCode.split("_");
|
||||
if (!(ss.length == 2)) {
|
||||
log.warn("摄像头部署编号设置错误");
|
||||
iotDeviceCtlResult.setSuccess(false);
|
||||
iotDeviceCtlResult.setMessage("摄像头部署编号设置错误");
|
||||
return iotDeviceCtlResult;
|
||||
}
|
||||
// addToken(deploy.getTenantId(), paramMap);
|
||||
addToken(deploy, paramMap);
|
||||
paramMap.add("deviceSerial", ss[0]);
|
||||
paramMap.add("channelNo", ss[1]);
|
||||
paramMap.add("direction", direction);
|
||||
paramMap.add("speed", "1");
|
||||
JSONObject resposeJson = postRequest(url, paramMap);
|
||||
String resCode = resposeJson.getString("code");
|
||||
log.warn("萤石云开始摄像头控制回执:" + resposeJson);
|
||||
if ("200".equals(resCode)) {//正常获取到token,返回并刷新缓存
|
||||
JSONObject dataJson = resposeJson.getJSONObject("data");
|
||||
iotDeviceCtlResult.setSuccess(true);
|
||||
iotDeviceCtlResult.setMessage("操作成功");
|
||||
return iotDeviceCtlResult;
|
||||
} else {
|
||||
iotDeviceCtlResult.setSuccess(false);
|
||||
iotDeviceCtlResult.setMessage(resposeJson.getString("msg"));
|
||||
return iotDeviceCtlResult;
|
||||
}
|
||||
}
|
||||
|
||||
public IotDeviceCtlResult endControlCamra(SurvDeviceDeploy deploy, String deployCode, String direction) {
|
||||
IotDeviceCtlResult iotDeviceCtlResult = new IotDeviceCtlResult();
|
||||
String url = "https://open.ys7.com/api/lapp/device/ptz/stop";
|
||||
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
|
||||
String[] ss = deployCode.split("_");
|
||||
if (!(ss.length == 2)) {
|
||||
log.warn("摄像头部署编号设置错误");
|
||||
iotDeviceCtlResult.setSuccess(false);
|
||||
iotDeviceCtlResult.setMessage("摄像头部署编号设置错误");
|
||||
return iotDeviceCtlResult;
|
||||
}
|
||||
// addToken(deploy.getTenantId(), paramMap);
|
||||
addToken(deploy, paramMap);
|
||||
paramMap.add("deviceSerial", ss[0]);
|
||||
paramMap.add("channelNo", ss[1]);
|
||||
paramMap.add("direction", direction);
|
||||
JSONObject resposeJson = postRequest(url, paramMap);
|
||||
log.warn("萤石云停止摄像头控制回执:" + resposeJson);
|
||||
String resCode = resposeJson.getString("code");
|
||||
if ("200".equals(resCode)) {//正常获取到token,返回并刷新缓存
|
||||
JSONObject dataJson = resposeJson.getJSONObject("data");
|
||||
iotDeviceCtlResult.setSuccess(true);
|
||||
iotDeviceCtlResult.setMessage("操作成功");
|
||||
return iotDeviceCtlResult;
|
||||
} else {
|
||||
iotDeviceCtlResult.setSuccess(false);
|
||||
iotDeviceCtlResult.setMessage(resposeJson.getString("msg"));
|
||||
return iotDeviceCtlResult;
|
||||
}
|
||||
}
|
||||
|
||||
private void addToken(SurvDeviceDeploy deploy, MultiValueMap<String, Object> paramMap) {
|
||||
CommonServiceImpl iotCommonP2Service = SpringContextUtils.getBean(CommonServiceImpl.class);
|
||||
SurvConfig fSurvConfig = iotCommonP2Service.getSurvConfig(deploy.getSurvConfigId(),deploy.getTenantId(), IotConstants.ysyAcess);
|
||||
String token = "";
|
||||
if (fSurvConfig != null) {
|
||||
token = getYsToken(fSurvConfig.getConfigKey(), fSurvConfig.getConfigValue());
|
||||
}
|
||||
paramMap.add("accessToken", token);
|
||||
}
|
||||
|
||||
private void addToken(String tenantId, MultiValueMap<String, Object> paramMap) {
|
||||
SurvConfigServiceImpl fSurvConfigService = SpringContextUtils.getBean(SurvConfigServiceImpl.class);
|
||||
SurvConfig fSurvConfig = fSurvConfigService.getOneByTypeWithTenant(tenantId, IotConstants.ysyAcess);
|
||||
String token = "";
|
||||
if (fSurvConfig != null) {
|
||||
token = getYsToken(fSurvConfig.getConfigKey(), fSurvConfig.getConfigValue());
|
||||
}
|
||||
paramMap.add("accessToken", token);
|
||||
}
|
||||
|
||||
/**
|
||||
* 传入survConfigid,获取萤石云token
|
||||
* @param configId
|
||||
* @return
|
||||
*/
|
||||
public String getYsToken(String configId){
|
||||
CommonServiceImpl iotCommonP2Service = SpringContextUtils.getBean(CommonServiceImpl.class);
|
||||
SurvConfig fSurvConfig = iotCommonP2Service.getSurvConfig(configId,null,IotConstants.ysyAcess);
|
||||
String token = "";
|
||||
if (fSurvConfig != null) {
|
||||
token = getYsToken(fSurvConfig.getConfigKey(), fSurvConfig.getConfigValue());
|
||||
}
|
||||
return token;
|
||||
}
|
||||
|
||||
/**
|
||||
* 传入survConfigid,获取萤石云token
|
||||
* @param configId
|
||||
* @return
|
||||
*/
|
||||
public String getYsToken(SurvConfig survConfig){
|
||||
|
||||
String token = getYsToken(survConfig.getConfigKey(), survConfig.getConfigValue());
|
||||
return token;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -41,6 +41,8 @@ public class SurvDeviceDeployController {
|
|||
private ISurvDeviceDeployService survDeviceDeployService;
|
||||
@Autowired
|
||||
private ISurvStationInfoService stationInfoService;
|
||||
@Autowired
|
||||
private Iotutils iotutils;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -62,7 +64,7 @@ public class SurvDeviceDeployController {
|
|||
List<SurvDeviceDeploy> deploys = new ArrayList<>();
|
||||
for (SurvDeviceDeploy deviceDeploy : survList) {
|
||||
deviceDeploy.setStationName(mp.get(deviceDeploy.getStationCode()));
|
||||
deviceDeploy = Iotutils.addOnlineStatus(deviceDeploy);
|
||||
deviceDeploy = iotutils.addOnlineStatus(deviceDeploy);
|
||||
deploys.add(deviceDeploy);
|
||||
}
|
||||
return R.ok(deploys);
|
||||
|
|
|
|||
|
|
@ -84,6 +84,9 @@ public class SurvStationInfoController {
|
|||
@Autowired
|
||||
private ISurvDisplayInfoService survDisplayInfoService;
|
||||
|
||||
@Autowired
|
||||
private Iotutils iotutils;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
|
|
@ -153,7 +156,7 @@ public class SurvStationInfoController {
|
|||
record.setSurvDataCount(finalDataCounts);
|
||||
//补充设备在线状态
|
||||
if(record.getDeviceList()!=null && !record.getDeviceList().isEmpty()){
|
||||
List<SurvDeviceDeploy> deploys = Iotutils.addOnlineStatus(record.getDeviceList());
|
||||
List<SurvDeviceDeploy> deploys = iotutils.addOnlineStatus(record.getDeviceList());
|
||||
record.setDeviceList(deploys);
|
||||
}
|
||||
}
|
||||
|
|
@ -230,7 +233,7 @@ public class SurvStationInfoController {
|
|||
jsonObject.put("survItemList",allSurv);
|
||||
//监控摄像头
|
||||
List<SurvDeviceDeploy> camList = survDeviceDeployService.list(Wrappers.<SurvDeviceDeploy>lambdaQuery().eq(SurvDeviceDeploy::getStationCode,stationCode).eq(SurvDeviceDeploy::getDeployType,PollutionConstants.CAMERA).orderByAsc(SurvDeviceDeploy::getSortNo));
|
||||
List<SurvDeviceDeploy> adds = Iotutils.addOnlineStatus(camList);
|
||||
List<SurvDeviceDeploy> adds = iotutils.addOnlineStatus(camList);
|
||||
jsonObject.put("survCamera",adds);
|
||||
|
||||
JSONArray jsonArray = new JSONArray();
|
||||
|
|
@ -400,7 +403,7 @@ public class SurvStationInfoController {
|
|||
List<SurvStationInfo> stationList = survStationInfoService.listALlStation();
|
||||
for (SurvStationInfo survStationInfo : stationList) {
|
||||
List<SurvDeviceDeploy> pageList = survDeviceDeployService.getDeviceByStationNoCam(survStationInfo.getStationCode(),null);
|
||||
List<SurvDeviceDeploy> adds = Iotutils.addOnlineStatus(pageList);
|
||||
List<SurvDeviceDeploy> adds = iotutils.addOnlineStatus(pageList);
|
||||
joa.add(adds);
|
||||
count++;
|
||||
}
|
||||
|
|
@ -480,7 +483,7 @@ public class SurvStationInfoController {
|
|||
ent.setIotReverseUrl(deploy.getDeviceReverseIotUrl());
|
||||
ent.setMapIcon(deploy.getMapIcon());
|
||||
ent.setIds(deploy.getId());
|
||||
ent.setIsOnline(Iotutils.addOnlineStatus(deploy).getIsOnline());
|
||||
ent.setIsOnline(iotutils.addOnlineStatus(deploy).getIsOnline());
|
||||
returnList.add(ent);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@ import java.util.concurrent.TimeUnit;
|
|||
@Component
|
||||
public class Iotutils {
|
||||
@Autowired
|
||||
private static ISurvConfigService survConfigService;
|
||||
private ISurvConfigService survConfigService;
|
||||
|
||||
public static Integer checkIsOnline(String tenantId, String protocolCode, Date lastSyncTime, String deployType) {
|
||||
public Integer checkIsOnline(String tenantId, String protocolCode, Date lastSyncTime, String deployType) {
|
||||
|
||||
long limitTime = survConfigService.getOfflineConfig(tenantId,deployType);
|
||||
if (lastSyncTime != null) {
|
||||
|
|
@ -36,12 +36,12 @@ public class Iotutils {
|
|||
}
|
||||
}
|
||||
|
||||
public static Integer getDeviceOnlineStatus(SurvDeviceDeploy deploy) {
|
||||
public Integer getDeviceOnlineStatus(SurvDeviceDeploy deploy) {
|
||||
return checkIsOnline(deploy.getTenantId(),deploy.getProtocolCode(),deploy.getLastsyncTime(),deploy.getDeployType());
|
||||
}
|
||||
|
||||
|
||||
public static List<SurvDeviceDeploy> addOnlineStatus(List<SurvDeviceDeploy> deploys){
|
||||
public List<SurvDeviceDeploy> addOnlineStatus(List<SurvDeviceDeploy> deploys){
|
||||
List<SurvDeviceDeploy> deps = new ArrayList<>();
|
||||
if(deploys!=null && !deploys.isEmpty()){
|
||||
for (SurvDeviceDeploy deploy : deploys) {
|
||||
|
|
@ -52,7 +52,7 @@ public class Iotutils {
|
|||
return deps;
|
||||
}
|
||||
|
||||
public static SurvDeviceDeploy addOnlineStatus(SurvDeviceDeploy deploy){
|
||||
public SurvDeviceDeploy addOnlineStatus(SurvDeviceDeploy deploy){
|
||||
if(deploy!=null){
|
||||
deploy.setIsOnline(getDeviceOnlineStatus(deploy));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
<properties>
|
||||
<ttl.version>2.11.4</ttl.version>
|
||||
<huTool.version>5.7.3</huTool.version>
|
||||
<huTool.version>5.8.22</huTool.version>
|
||||
<mysql-connector-java.version>8.0.27</mysql-connector-java.version>
|
||||
<weixin.version>4.5.1.B</weixin.version>
|
||||
<knife4j-spring-boot-starter.version>3.0.3</knife4j-spring-boot-starter.version>
|
||||
|
|
|
|||
|
|
@ -120,4 +120,7 @@ public class SurvConfig implements Serializable {
|
|||
|
||||
@TableField(exist = false)
|
||||
private String configTypeName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String configJsonStr;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
package org.jeecg.common.iot.common;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DTOCamControl {
|
||||
@ApiModelProperty("设备部署编号")
|
||||
private String cameraId;
|
||||
@ApiModelProperty("设备朝向")
|
||||
private String direction;
|
||||
@ApiModelProperty("授权密钥,除大屏外勿传")
|
||||
private String auths;
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package org.jeecg.common.iot.common;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 物联网设备操作结果
|
||||
*/
|
||||
@Data
|
||||
public class IotDeviceCtlResult {
|
||||
@ApiModelProperty("是否成功")
|
||||
private boolean success;
|
||||
@ApiModelProperty("返回信息")
|
||||
private String message;
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
package org.jeecg.common.mybatis.typehandler;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import org.apache.ibatis.type.BaseTypeHandler;
|
||||
|
|
@ -13,38 +14,42 @@ import java.sql.ResultSet;
|
|||
import java.sql.SQLException;
|
||||
|
||||
/**
|
||||
* 存储到数据库, 将JSON对象转换成字符串;
|
||||
* 从数据库获取数据, 将字符串转为JSON对象.
|
||||
* 存储到数据库, 将JSON对象转换成字符串;
|
||||
* 从数据库获取数据, 将字符串转为JSON对象.
|
||||
*/
|
||||
@MappedTypes({JSONObject.class})
|
||||
@MappedJdbcTypes({JdbcType.VARCHAR})
|
||||
public class JsonTypeHandler extends BaseTypeHandler<JSONObject> {
|
||||
|
||||
@Override
|
||||
public void setNonNullParameter(PreparedStatement ps, int i, JSONObject parameter,
|
||||
JdbcType jdbcType) throws SQLException {
|
||||
private static final String EMPTY_OBJECT = "{}";
|
||||
|
||||
ps.setString(i, JSONUtil.toJsonStr(parameter));
|
||||
}
|
||||
@Override
|
||||
public void setNonNullParameter(PreparedStatement ps, int i, JSONObject parameter,
|
||||
JdbcType jdbcType) throws SQLException {
|
||||
ps.setString(i, JSONUtil.toJsonStr(parameter == null ? EMPTY_OBJECT : parameter));
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject getNullableResult(ResultSet rs, String columnName)
|
||||
throws SQLException {
|
||||
@Override
|
||||
public JSONObject getNullableResult(ResultSet rs, String columnName)
|
||||
throws SQLException {
|
||||
return to(rs.getString(columnName));
|
||||
}
|
||||
|
||||
return JSONUtil.parseObj(rs.getString(columnName)).toBean(JSONObject.class);
|
||||
}
|
||||
@Override
|
||||
public JSONObject getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
|
||||
return to(rs.getString(columnIndex));
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
|
||||
|
||||
return JSONUtil.parseObj(rs.getString(columnIndex)).toBean(JSONObject.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject getNullableResult(CallableStatement cs, int columnIndex)
|
||||
throws SQLException {
|
||||
|
||||
return JSONUtil.parseObj(cs.getString(columnIndex)).toBean(JSONObject.class);
|
||||
}
|
||||
@Override
|
||||
public JSONObject getNullableResult(CallableStatement cs, int columnIndex)
|
||||
throws SQLException {
|
||||
return to(cs.getString(columnIndex));
|
||||
}
|
||||
|
||||
private JSONObject to(String s) {
|
||||
if (StrUtil.isBlank(s)) {
|
||||
s = EMPTY_OBJECT;
|
||||
}
|
||||
return JSONUtil.parseObj(s).toBean(JSONObject.class);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue