Merge remote-tracking branch 'origin/5.X' into 5.X

This commit is contained in:
sunyuehai 2024-08-24 23:34:30 +08:00
commit 04348c7fe1
7 changed files with 103 additions and 19 deletions

View File

@ -1,5 +1,6 @@
package org.dromara.web.controller.app; package org.dromara.web.controller.app;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
@ -180,6 +181,7 @@ public class EqDeviceController extends BaseController {
* 保存日志(iot使用 设备状态变动时会触发该状态) * 保存日志(iot使用 设备状态变动时会触发该状态)
* @param eqEquipmentLogBo * @param eqEquipmentLogBo
*/ */
@SaIgnore
@PostMapping("/saveDeviceLogs") @PostMapping("/saveDeviceLogs")
public void saveDeviceLogs(@RequestBody EqEquipmentLogBo eqEquipmentLogBo){ public void saveDeviceLogs(@RequestBody EqEquipmentLogBo eqEquipmentLogBo){
String equipmentName = eqEquipmentLogBo.getEquipmentName(); String equipmentName = eqEquipmentLogBo.getEquipmentName();

View File

@ -22,6 +22,7 @@ import org.dromara.web.domain.bo.*;
import org.dromara.web.domain.vo.*; import org.dromara.web.domain.vo.*;
import org.dromara.web.service.*; import org.dromara.web.service.*;
import org.dromara.web.domain.bo.EqAppHomeBo; import org.dromara.web.domain.bo.EqAppHomeBo;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -325,13 +326,34 @@ public class EqHomeController extends BaseController {
@PostMapping("/list") @PostMapping("/list")
public TableDataInfo<EqEquipmentVo> list(EqAppHomeBo bo, PageQuery pageQuery){ public TableDataInfo<EqEquipmentVo> list(EqAppHomeBo bo, PageQuery pageQuery){
//当前用户为家庭主体 切换用户后需要传输用户id //当前用户为家庭主体 切换用户后需要传输用户id
if (bo.getUserId() == null) bo.setUserId(LoginHelper.getUserId()); Long currentUserId = LoginHelper.getUserId();
if (bo.getUserId() == null) bo.setUserId(currentUserId);
checkUserId(bo.getUserId(), currentUserId);
// 下面返回的状态 会在设备状态变化时更新设备状态 状态更新由iot触发 // 下面返回的状态 会在设备状态变化时更新设备状态 状态更新由iot触发
EqEquipmentBo eqEquipmentBo = new EqEquipmentBo(); EqEquipmentBo eqEquipmentBo = new EqEquipmentBo();
eqEquipmentBo.setUserId(bo.getUserId()); eqEquipmentBo.setUserId(bo.getUserId());
eqEquipmentBo.setAreaId(bo.getAreaId());
return eqEquipmentService.queryPageList(eqEquipmentBo, pageQuery); //在设备表中增加了分布id return eqEquipmentService.queryPageList(eqEquipmentBo, pageQuery); //在设备表中增加了分布id
} }
/**
* 检查要查询的userId 是否为分享给当前用户的userId
* 如果不是 则抛出异常
* @param userId
* @param currentUserId
*/
private void checkUserId(Long userId, Long currentUserId) {
if (!currentUserId.equals(userId)){
EqShareBo eqShareBo = new EqShareBo();
eqShareBo.setShareUserId(userId);
eqShareBo.setSharedUserId(currentUserId);
List<EqShareVo> eqShareVos = shareService.queryList(eqShareBo);
if (CollectionUtils.isEmpty(eqShareVos)){
throw new RuntimeException("您没有权限查看该设备");
}
}
}
/** /**
* 设备重排 * 设备重排

View File

@ -102,7 +102,9 @@ public class EqTextController extends BaseController {
MessageUtils.message("homepage.name7"), MessageUtils.message("homepage.name7"),
MessageUtils.message("homepage.name8"), MessageUtils.message("homepage.name8"),
MessageUtils.message("homepage.name9"), MessageUtils.message("homepage.name9"),
MessageUtils.message("homepage.name10") MessageUtils.message("homepage.name10"),
MessageUtils.message("homepage.name11"),
MessageUtils.message("homepage.name12")
)); ));
//关门提醒warningClose //关门提醒warningClose
@ -113,7 +115,8 @@ public class EqTextController extends BaseController {
MessageUtils.message("warningClose.name3"), MessageUtils.message("warningClose.name3"),
MessageUtils.message("warningClose.name4"), MessageUtils.message("warningClose.name4"),
MessageUtils.message("warningClose.name5"), MessageUtils.message("warningClose.name5"),
MessageUtils.message("warningClose.name6") MessageUtils.message("warningClose.name6"),
MessageUtils.message("warningClose.name7")
)); ));
//添加设备add //添加设备add
@ -161,7 +164,9 @@ public class EqTextController extends BaseController {
MessageUtils.message("detail.name17"), MessageUtils.message("detail.name17"),
MessageUtils.message("detail.name18"), MessageUtils.message("detail.name18"),
MessageUtils.message("detail.name19"), MessageUtils.message("detail.name19"),
MessageUtils.message("detail.name20") MessageUtils.message("detail.name20"),
MessageUtils.message("detail.name21"),
MessageUtils.message("detail.name22")
)); ));
//倒计时设置countdown //倒计时设置countdown
@ -422,7 +427,8 @@ public class EqTextController extends BaseController {
MessageUtils.message("family.name1"), MessageUtils.message("family.name1"),
MessageUtils.message("family.name2"), MessageUtils.message("family.name2"),
MessageUtils.message("family.name3"), MessageUtils.message("family.name3"),
MessageUtils.message("family.name4") MessageUtils.message("family.name4"),
MessageUtils.message("family.name5")
)); ));
//成员管理familyDetail //成员管理familyDetail
@ -435,7 +441,8 @@ public class EqTextController extends BaseController {
MessageUtils.message("familyDetail.name5"), MessageUtils.message("familyDetail.name5"),
MessageUtils.message("familyDetail.name6"), MessageUtils.message("familyDetail.name6"),
MessageUtils.message("familyDetail.name7"), MessageUtils.message("familyDetail.name7"),
MessageUtils.message("familyDetail.name8") MessageUtils.message("familyDetail.name8"),
MessageUtils.message("familyDetail.name9")
)); ));
//设置语言setLanguage //设置语言setLanguage
@ -509,7 +516,14 @@ public class EqTextController extends BaseController {
MessageUtils.message("ble.name61"), MessageUtils.message("ble.name61"),
MessageUtils.message("ble.name62"), MessageUtils.message("ble.name62"),
MessageUtils.message("ble.name63"), MessageUtils.message("ble.name63"),
MessageUtils.message("ble.name64") MessageUtils.message("ble.name64"),
MessageUtils.message("ble.name65"),
MessageUtils.message("ble.name66"),
MessageUtils.message("ble.name67"),
MessageUtils.message("ble.name68"),
MessageUtils.message("ble.name69"),
MessageUtils.message("ble.name70"),
MessageUtils.message("ble.name71")
)); ));
return R.ok(result); return R.ok(result);

View File

@ -2,6 +2,7 @@ package org.dromara.web.controller.show;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.web.domain.bo.EqEquipmentBo;
import org.dromara.web.domain.vo.EqEquipmentStatisticsVo; import org.dromara.web.domain.vo.EqEquipmentStatisticsVo;
import org.dromara.web.service.IEqEquipmentService; import org.dromara.web.service.IEqEquipmentService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -14,6 +15,8 @@ import org.dromara.web.domain.bo.EqEquipmentLogBo;
import org.dromara.web.service.IEqEquipmentLogService; import org.dromara.web.service.IEqEquipmentLogService;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import java.util.Map;
/** /**
* web端 统计分析 * web端 统计分析
* *
@ -45,7 +48,11 @@ public class EqShowEquipmentLogController extends BaseController {
*/ */
// @SaCheckPermission("device:showEquipmentLog:list") // @SaCheckPermission("device:showEquipmentLog:list")
@GetMapping("/selectEquipmentStatistic") @GetMapping("/selectEquipmentStatistic")
public R<EqEquipmentStatisticsVo> selectEquipmentStatistic(Integer type, String startTime, String endTime) { public R<EqEquipmentStatisticsVo> selectEquipmentStatistic(EqEquipmentBo bo) {
Map<String, Object> params = bo.getParams();
Integer type = bo.getType();
String startTime = params.get("beginCreateTime") == null?null:params.get("beginCreateTime").toString();
String endTime = params.get("endCreateTime") == null?null:params.get("endCreateTime").toString();
return R.ok(eqEquipmentService.selectEquipmentStatistic(type,startTime,endTime)); return R.ok(eqEquipmentService.selectEquipmentStatistic(type,startTime,endTime));
} }

View File

@ -17,16 +17,15 @@ import org.dromara.web.device.*;
import org.dromara.web.device.iot.*; import org.dromara.web.device.iot.*;
import org.dromara.web.domain.EqArea; import org.dromara.web.domain.EqArea;
import org.dromara.web.domain.bo.*; import org.dromara.web.domain.bo.*;
import org.dromara.web.domain.vo.EqEquipmentDetailVo; import org.dromara.web.domain.vo.*;
import org.dromara.web.domain.vo.EqEquipmentStatisticsVo;
import org.dromara.web.domain.vo.EqUserEquipmentVo;
import org.dromara.web.mapper.EqAreaMapper; import org.dromara.web.mapper.EqAreaMapper;
import org.dromara.web.service.IEqShareService;
import org.dromara.web.service.IotService; import org.dromara.web.service.IotService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.web.domain.vo.EqEquipmentVo;
import org.dromara.web.domain.EqEquipment; import org.dromara.web.domain.EqEquipment;
import org.dromara.web.mapper.EqEquipmentMapper; import org.dromara.web.mapper.EqEquipmentMapper;
import org.dromara.web.service.IEqEquipmentService; import org.dromara.web.service.IEqEquipmentService;
import org.springframework.util.CollectionUtils;
import java.util.*; import java.util.*;
@ -41,6 +40,7 @@ import java.util.*;
public class EqEquipmentServiceImpl implements IEqEquipmentService { public class EqEquipmentServiceImpl implements IEqEquipmentService {
private final EqEquipmentMapper baseMapper; private final EqEquipmentMapper baseMapper;
private final IEqShareService shareService;
private final EqAreaMapper areaMapper; private final EqAreaMapper areaMapper;
@ -305,11 +305,12 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService {
eqEquipmentBo.setNickName(sysUserVo.getNickName()); eqEquipmentBo.setNickName(sysUserVo.getNickName());
DeviceMsgDto deviceMsgDto = iotService.httpTelemetryGetSend(equipmentCode); DeviceMsgDto deviceMsgDto = iotService.httpTelemetryGetSend(equipmentCode);
if (deviceMsgDto==null){ if (deviceMsgDto==null){
eqEquipmentBo.setLineStatus(0);//离线
eqEquipmentBo.setStatus(0);
}else{
eqEquipmentBo.setStatus(deviceMsgDto.getOpenPercentage());//使用半开作为状态值 eqEquipmentBo.setStatus(deviceMsgDto.getOpenPercentage());//使用半开作为状态值
eqEquipmentBo.setFaultStatus(deviceMsgDto.getGarageException()); eqEquipmentBo.setFaultStatus(deviceMsgDto.getGarageException());
eqEquipmentBo.setLineStatus(1);//在线 eqEquipmentBo.setLineStatus(1);//在线
}else{
eqEquipmentBo.setLineStatus(0);//离线
} }
@ -345,4 +346,23 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService {
} }
/**
* 检查要查询的userId 是否为分享给当前用户的userId
* 如果不是 则抛出异常 zzc 目前操作不进行对设备控制设置的权限控制 后续如有需要再添加该方法进行验证
* @param userId
* @param currentUserId
*/
private void checkUserId(Long userId, Long currentUserId) {
if (!currentUserId.equals(userId)){
EqShareBo eqShareBo = new EqShareBo();
eqShareBo.setShareUserId(userId);
eqShareBo.setSharedUserId(currentUserId);
List<EqShareVo> eqShareVos = shareService.queryList(eqShareBo);
if (CollectionUtils.isEmpty(eqShareVos)){
throw new RuntimeException("您没有权限查看该设备");
}
}
}
} }

View File

@ -136,6 +136,8 @@ homepage.name7=已关门
homepage.name8=是否开门? homepage.name8=是否开门?
homepage.name9=是否暂停 homepage.name9=是否暂停
homepage.name10=请选择 homepage.name10=请选择
homepage.name11=全部
homepage.name12=暂无数据
##《关门提醒》warningClose ##《关门提醒》warningClose
warningClose.name0=关门提醒 warningClose.name0=关门提醒
warningClose.name1=设备-deviceName-已开门-num-分钟了,请记得关门 warningClose.name1=设备-deviceName-已开门-num-分钟了,请记得关门
@ -144,6 +146,7 @@ warningClose.name3=已开门
warningClose.name4=分钟了,请记得关门 warningClose.name4=分钟了,请记得关门
warningClose.name5=关门 warningClose.name5=关门
warningClose.name6=我知道了 warningClose.name6=我知道了
warningClose.name7=是否关门?
##《添加设备》add ##《添加设备》add
add.name0=添加设备 add.name0=添加设备
add.name1=请输入设备编码 add.name1=请输入设备编码
@ -180,6 +183,8 @@ detail.name17=清码
detail.name18=对码 detail.name18=对码
detail.name19=开门设置 detail.name19=开门设置
detail.name20=已打开 detail.name20=已打开
detail.name21=设置倒计时每次需输入10的整数倍倒计时最少为0最多为480分钟
detail.name22=设置门体高度时每次需输入10的整数倍每次增加减少都会改变门体高度的10%
##《倒计时设置》countdown ##《倒计时设置》countdown
countdown.name0=倒计时设置 countdown.name0=倒计时设置
countdown.name1=取消 countdown.name1=取消
@ -387,6 +392,7 @@ family.name1=我的家
family.name2=我加入的家庭 family.name2=我加入的家庭
family.name3=个区域 family.name3=个区域
family.name4=个设备 family.name4=个设备
family.name5=左滑退出
# 《成员管理》familyDetail # 《成员管理》familyDetail
familyDetail.name0=成员管理 familyDetail.name0=成员管理
familyDetail.name1=家庭名称 familyDetail.name1=家庭名称
@ -397,6 +403,8 @@ familyDetail.name5=取消
familyDetail.name6=确定 familyDetail.name6=确定
familyDetail.name7=删除 familyDetail.name7=删除
familyDetail.name8=主人 familyDetail.name8=主人
familyDetail.name9=左滑移除
# 《设置语言》setLanguage # 《设置语言》setLanguage
setLanguage.name0=设置语言 setLanguage.name0=设置语言
#《配网》ble #《配网》ble
@ -460,8 +468,15 @@ ble.name56=获取WIFI列表结果
ble.name57=提示:没有扫描到可用的WIFI网络! ble.name57=提示:没有扫描到可用的WIFI网络!
ble.name58=提示:点击要连接的WIFI网络,输入密码,开始配网! ble.name58=提示:点击要连接的WIFI网络,输入密码,开始配网!
ble.name59=重新获取 ble.name59=重新获取
ble.name60=长按设备WIFI按键10秒以上,LED灯快速闪烁后,松手。 ble.name60=1. 请保持设备处于通电状态
ble.name61=点击,下一步,按提示输入信息,开始配网。 ble.name61=点击,下一步,按提示输入信息,开始配网。
ble.name62=提示输入wifi密码 ble.name62=提示输入wifi密码
ble.name63=提示:开始配网 ble.name63=提示:开始配网
ble.name64=返回首页 ble.name64=2. 长按设备“SET”键直至显示器显示“1”闪烁
ble.name65=观察显示器显示“1”闪烁
ble.name66=3. 多次短按“UP”键直至显示器显示“9”闪烁
ble.name67=观察显示器从“1”逐步上升至“0”
ble.name68=4. 短按“SET”键
ble.name69=观察显示器显示“A”此时设备开始配网
ble.name70=5.在APP上对设备进行配网直至配网完成
ble.name71=观察配网完成后显示器显示“11”设备进入待机装填

View File

@ -50,10 +50,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectEquipmentStatistic" resultType="org.dromara.web.domain.vo.EqEquipmentStatisticsVo"> <select id="selectEquipmentStatistic" resultType="org.dromara.web.domain.vo.EqEquipmentStatisticsVo">
SELECT SELECT
COUNT(*) AS bind_num, -- 设备总数 COUNT(*) AS bind_num, -- 设备总数
SUM(CASE WHEN line_status = 0 THEN 1 ELSE 0 END) AS offline_num, -- 离线个数 COALESCE(SUM(CASE WHEN line_status = 0 THEN 1 ELSE 0 END), 0) AS offline_num, -- 离线个数
SUM(CASE WHEN line_status = 1 THEN 1 ELSE 0 END) AS online_num, -- 在线个数 COALESCE(SUM(CASE WHEN line_status = 1 THEN 1 ELSE 0 END), 0) AS online_num, -- 在线个数
SUM(CASE WHEN fault_status > 0 THEN 1 ELSE 0 END) AS fault_num -- 故障个数 COALESCE(SUM(CASE WHEN fault_status > 0 THEN 1 ELSE 0 END), 0) AS fault_num -- 故障个数
FROM eq_equipment FROM eq_equipment
-- SUM(CASE WHEN line_status = 0 THEN 1 ELSE 0 END) AS offline_num, -- 离线个数
-- SUM(CASE WHEN line_status = 1 THEN 1 ELSE 0 END) AS online_num, -- 在线个数
-- SUM(CASE WHEN fault_status > 0 THEN 1 ELSE 0 END) AS fault_num -- 故障个数
-- FROM eq_equipment
<where> <where>
<if test="type != null and type != ''"> <if test="type != null and type != ''">
AND 'type' like AND 'type' like