diff --git a/ruoyi-admin/src/main/java/org/dromara/web/config/CommonYmlConfig.java b/ruoyi-admin/src/main/java/org/dromara/web/config/CommonYmlConfig.java index 9d2419d84..2e1f7abf5 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/config/CommonYmlConfig.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/config/CommonYmlConfig.java @@ -18,12 +18,14 @@ public class CommonYmlConfig { public static String URL_IOT_TELEMETRY = "遥测"; public static String URL_IOT_OPERATE = "操作控制"; public static String URL_IOT_DEVICE = "设备信息"; + public static String URL_IOT_DEVICE_BY_NAME = "设备名称查询设备信息"; public String baseurl = ""; public String scopeAttribute = ""; public String telemetry = ""; public String operate = ""; public String device = ""; + public String deviceByName = ""; @Value("${iot.url.scopeAttribute}") public String setScopeAttribute(String scopeAttribute) { @@ -49,4 +51,11 @@ public class CommonYmlConfig { public String setDevice(String device) { return URL_IOT_DEVICE = device; } + + @Value("${iot.url.deviceByName}") + public String setDeviceByName(String deviceByName) { + return URL_IOT_DEVICE_BY_NAME = deviceByName; + } + + } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java index e9791726c..c4d781181 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java @@ -1,5 +1,6 @@ package org.dromara.web.controller.app; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import jakarta.servlet.http.HttpServletRequest; @@ -16,16 +17,14 @@ import org.dromara.system.domain.vo.SysDictDataVo; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.service.ISysDictTypeService; import org.dromara.system.service.ISysUserService; +import org.dromara.web.device.iot.DeviceByDeviceName; import org.dromara.web.device.iot.DeviceDto; import org.dromara.web.domain.bo.*; import org.dromara.web.domain.vo.*; import org.dromara.web.service.*; import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.text.SimpleDateFormat; import java.time.LocalDateTime; @@ -136,7 +135,7 @@ public class EqDeviceController extends BaseController { * @return todo */ @GetMapping("/getDeviceLogs") - public Map> getDeviceLogs(EqAppHomeBo bo,PageQuery pageQuery){ + public Map> getDeviceLogs(EqAppHomeBo bo,String createdYearDay,PageQuery pageQuery){ if (bo.getEquipmentId() == null) throw new ServiceException("设备ID不能为空"); String zoneId = bo.getZoneId(); if (StringUtils.isEmpty(zoneId)) throw new ServiceException("时区zoneId(如 UTC+08:00)不能为空"); @@ -149,6 +148,8 @@ public class EqDeviceController extends BaseController { if (zoneId.contains(" ")) zoneId = zoneId.replace(" ", "+"); EqEquipmentLogBo eqEquipmentLogBo = new EqEquipmentLogBo(); eqEquipmentLogBo.setEquipmentId(bo.getEquipmentId()); + BeanUtil.copyProperties(bo, eqEquipmentLogBo); + eqEquipmentLogBo.setCreatedYearDay(createdYearDay); TableDataInfo data = logService.queryPageList(eqEquipmentLogBo, pageQuery); List rows = data.getRows(); if (CollUtil.isEmpty(rows)) return new HashMap<>(); @@ -179,15 +180,23 @@ public class EqDeviceController extends BaseController { * 保存日志(iot使用 设备状态变动时会触发该状态) * @param eqEquipmentLogBo */ - @GetMapping("/saveDeviceLogs") - public void saveDeviceLogs(EqEquipmentLogBo eqEquipmentLogBo){ - + @PostMapping("/saveDeviceLogs") + public void saveDeviceLogs(@RequestBody EqEquipmentLogBo eqEquipmentLogBo){ + String equipmentName = eqEquipmentLogBo.getEquipmentName(); + Integer status = eqEquipmentLogBo.getStatus(); + //设备id查询 + DeviceByDeviceName deviceByNameDto = iotService.apiTenantDevicesByName(equipmentName);//无信息会抛异常 无需判断 + if (deviceByNameDto==null) throw new RuntimeException("设备不存在"); + String equipmentCode = deviceByNameDto.getId().getId(); + //设备查询 EqEquipmentBo eqEquipmentBo = new EqEquipmentBo(); - eqEquipmentBo.setEquipmentCode(eqEquipmentLogBo.getEquipmentCode()); + eqEquipmentBo.setEquipmentCode(equipmentCode); List eqEquipmentVos = eqEquipmentService.queryList(eqEquipmentBo); if (CollectionUtils.isEmpty(eqEquipmentVos)) return; EqEquipmentVo eqEquipmentVo = eqEquipmentVos.get(0); - eqEquipmentBo.setEquipmentId(eqEquipmentVo.getEquipmentId()); + //日志数据组装 + eqEquipmentLogBo.setEquipmentCode(equipmentCode); + eqEquipmentLogBo.setEquipmentName(equipmentName); eqEquipmentLogBo.setUserId(eqEquipmentVo.getUserId()); eqEquipmentLogBo.setUserName(eqEquipmentVo.getUserName()); eqEquipmentLogBo.setNickName(eqEquipmentVo.getNickName()); @@ -202,6 +211,7 @@ public class EqDeviceController extends BaseController { String[] timeStr = formattedDate.split(" "); eqEquipmentLogBo.setCreatedYearDay(timeStr[0]);//年月日 eqEquipmentLogBo.setCreatedHourSecond(timeStr[1]);//时分秒 + eqEquipmentLogBo.setStatus(status);//状态 //星期 Calendar calendar = Calendar.getInstance(); calendar.setTime(createTime); @@ -212,9 +222,15 @@ public class EqDeviceController extends BaseController { logService.insertByBo(eqEquipmentLogBo); //更新开合度状态到设备 - eqEquipmentBo.setStatus(eqEquipmentLogBo.getOpenStatus()); - eqEquipmentBo.setFaultStatus(eqEquipmentBo.getFaultStatus()); - eqEquipmentBo.setLineStatus(eqEquipmentBo.getLineStatus()); + eqEquipmentBo.setEquipmentId(eqEquipmentVo.getEquipmentId()); +// eqEquipmentBo.setStatus(eqEquipmentLogBo.getOpenStatus());//该参数暂时无用 + if (status == 500||status==501){ + eqEquipmentBo.setLineStatus(status-500); + } + if (status>=10&&status<=14){ + eqEquipmentBo.setFaultStatus(eqEquipmentBo.getFaultStatus()); + } + eqEquipmentService.updateByBo(eqEquipmentBo); } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java index e8221598b..85115ba2e 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java @@ -44,7 +44,6 @@ public class EqHomeController extends BaseController { private final IEqAreaService eqAreaService; private final IEqFamilyService eqFamilyService; private final IEqEquipmentService eqEquipmentService; - private final IEqShareService shareService; private final ISysUserService userService; private final IEqUserConfigService eqUserConfigService; @@ -249,9 +248,9 @@ public class EqHomeController extends BaseController { } bo.setSharedUserId(sysUserVo.getUserId()); bo.setSharedUserName(sysUserVo.getUserName()); - List eqShareVos = eqShareService.queryList(bo); + List eqShareVos = shareService.queryList(bo); if (!eqShareVos.isEmpty()) throw new RuntimeException("该成员已被分享"); - return toAjax(eqShareService.insertByBo(bo)); + return toAjax(shareService.insertByBo(bo)); } /** @@ -263,7 +262,7 @@ public class EqHomeController extends BaseController { @DeleteMapping("/deleteFamily/{sharedId}") public R remove(@NotEmpty(message = "主键不能为空") @PathVariable String sharedId) { - return toAjax(eqShareService.deleteBySharedId(sharedId)); + return toAjax(shareService.deleteBySharedId(sharedId)); } /** @@ -275,7 +274,7 @@ public class EqHomeController extends BaseController { @DeleteMapping("/deleteMember/{shareId}") public R removeShare(@NotEmpty(message = "主键不能为空") @PathVariable String shareId) { - return toAjax(eqShareService.deleteByShareId(shareId)); + return toAjax(shareService.deleteByShareId(shareId)); } /** @@ -379,7 +378,7 @@ public class EqHomeController extends BaseController { } - private final IEqShareService eqShareService; + } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqTextController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqTextController.java index b89618031..baa4a24a4 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqTextController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqTextController.java @@ -61,55 +61,85 @@ public class EqTextController extends BaseController { @GetMapping("/allText") public R>> allText(){ Map> result = new HashMap<>(); + + //《登录》login result.put("login",Arrays.asList( MessageUtils.message("login.name0"), MessageUtils.message("login.name1"), MessageUtils.message("login.name2"), MessageUtils.message("login.name3"), - MessageUtils.message("login.name4") + MessageUtils.message("login.name4"), + MessageUtils.message("login.name5") )); + + //《注册》register result.put("register",Arrays.asList( MessageUtils.message("register.name0"), - MessageUtils.message("register.name1"), + MessageUtils.message("register.name0"), MessageUtils.message("register.name2"), MessageUtils.message("register.name3"), - MessageUtils.message("register.name4") + MessageUtils.message("register.name4"), + MessageUtils.message("register.name5") )); + + //《注册成功》registerSuccess result.put("registerSuccess",Arrays.asList( MessageUtils.message("registerSuccess.name0"), MessageUtils.message("registerSuccess.name1"), MessageUtils.message("registerSuccess.name2"), MessageUtils.message("registerSuccess.name3") )); + + //《首页》homepage result.put("homepage",Arrays.asList( MessageUtils.message("homepage.name0"), MessageUtils.message("homepage.name1"), MessageUtils.message("homepage.name2"), - MessageUtils.message("homepage.name3") + MessageUtils.message("homepage.name3"), + MessageUtils.message("homepage.name4"), + MessageUtils.message("homepage.name5"), + MessageUtils.message("homepage.name6"), + MessageUtils.message("homepage.name7"), + MessageUtils.message("homepage.name8"), + MessageUtils.message("homepage.name9"), + MessageUtils.message("homepage.name10") )); + + //《关门提醒》warningClose result.put("warningClose",Arrays.asList( MessageUtils.message("warningClose.name0"), MessageUtils.message("warningClose.name1"), MessageUtils.message("warningClose.name2"), - MessageUtils.message("warningClose.name3") + MessageUtils.message("warningClose.name3"), + MessageUtils.message("warningClose.name4"), + MessageUtils.message("warningClose.name5"), + MessageUtils.message("warningClose.name6") )); + + //《添加设备》add result.put("add",Arrays.asList( MessageUtils.message("add.name0"), MessageUtils.message("add.name1"), MessageUtils.message("add.name2"), MessageUtils.message("add.name3") )); + + //《添加成功》addSuccess result.put("addSuccess",Arrays.asList( MessageUtils.message("addSuccess.name0"), MessageUtils.message("addSuccess.name1"), MessageUtils.message("addSuccess.name2") )); + + //《添加失败》addFailure result.put("addFailure",Arrays.asList( MessageUtils.message("addFailure.name0"), MessageUtils.message("addFailure.name1"), - MessageUtils.message("addFailure.name2"), +// MessageUtils.message("addFailure.name2"), MessageUtils.message("addFailure.name3") )); + + //《设备详情》detail result.put("detail",Arrays.asList( MessageUtils.message("detail.name0"), MessageUtils.message("detail.name1"), @@ -129,13 +159,19 @@ public class EqTextController extends BaseController { MessageUtils.message("detail.name15"), MessageUtils.message("detail.name16"), MessageUtils.message("detail.name17"), - MessageUtils.message("detail.name18") + MessageUtils.message("detail.name18"), + MessageUtils.message("detail.name19"), + MessageUtils.message("detail.name20") )); + + //《倒计时设置》countdown result.put("countdown",Arrays.asList( MessageUtils.message("countdown.name0"), MessageUtils.message("countdown.name1"), MessageUtils.message("countdown.name2") )); + + //《数据日志》log result.put("log",Arrays.asList( MessageUtils.message("log.name0"), MessageUtils.message("log.name1"), @@ -147,9 +183,16 @@ public class EqTextController extends BaseController { MessageUtils.message("log.name7"), MessageUtils.message("log.name8"), MessageUtils.message("log.name9"), - MessageUtils.message("log.name10") + MessageUtils.message("log.name10"), + MessageUtils.message("log.name11"), + MessageUtils.message("log.name12"), + MessageUtils.message("log.name13"), + MessageUtils.message("log.name14"), + MessageUtils.message("log.name15"), + MessageUtils.message("log.name16") )); + //《对码》clearcode result.put("checkcode",Arrays.asList( MessageUtils.message("checkcode.name0"), MessageUtils.message("checkcode.name1"), @@ -157,6 +200,7 @@ public class EqTextController extends BaseController { MessageUtils.message("checkcode.name3") )); + //《清码》checkcode result.put("clearcode",Arrays.asList( MessageUtils.message("clearcode.name0"), MessageUtils.message("clearcode.name1"), @@ -166,12 +210,13 @@ public class EqTextController extends BaseController { MessageUtils.message("clearcode.name5") )); + //《设备掉线详情》offDetail result.put("offDetail",Arrays.asList( MessageUtils.message("offDetail.name0"), MessageUtils.message("offDetail.name1") )); - + //《优化-设置》set result.put("set",Arrays.asList( MessageUtils.message("set.name0"), MessageUtils.message("set.name1"), @@ -194,10 +239,11 @@ public class EqTextController extends BaseController { MessageUtils.message("set.name18"), MessageUtils.message("set.name19"), MessageUtils.message("set.name20"), - MessageUtils.message("set.name21") + MessageUtils.message("set.name21"), + MessageUtils.message("set.name22") )); - + //《通用》setCommon result.put("setCommon",Arrays.asList( MessageUtils.message("setCommon.detail"), MessageUtils.message("setCommon.add"), @@ -208,6 +254,7 @@ public class EqTextController extends BaseController { MessageUtils.message("setCommon.confirm") )); + //《未设置详情》noinit result.put("noinit",Arrays.asList( MessageUtils.message("noinit.name0"), MessageUtils.message("noinit.name1"), @@ -230,6 +277,7 @@ public class EqTextController extends BaseController { MessageUtils.message("noinit.name18") )); + //《修改设备名称》setEqname result.put("setEqname",Arrays.asList( MessageUtils.message("setEqname.name0"), MessageUtils.message("setEqname.name1"), @@ -238,13 +286,14 @@ public class EqTextController extends BaseController { MessageUtils.message("setEqname.name4") )); + //《设备位置修改》setEqarea result.put("setEqarea",Arrays.asList( MessageUtils.message("setEqarea.name0"), MessageUtils.message("setEqarea.name1"), MessageUtils.message("setEqarea.name2") )); - + //《反弹力设置》setRebound result.put("setRebound",Arrays.asList( MessageUtils.message("setRebound.name0"), MessageUtils.message("setRebound.name1"), @@ -252,6 +301,7 @@ public class EqTextController extends BaseController { MessageUtils.message("setRebound.name3") )); + //《删除设备》setDelete result.put("setDelete",Arrays.asList( MessageUtils.message("setDelete.name0"), MessageUtils.message("setDelete.name1"), @@ -260,19 +310,206 @@ public class EqTextController extends BaseController { MessageUtils.message("setDelete.name4") )); + //《时区设置》setZone result.put("setZone",Arrays.asList( MessageUtils.message("setZone.name0"), - MessageUtils.message("setZone.name1") + MessageUtils.message("setZone.name1"), + MessageUtils.message("setZone.name2") )); + //《wifi网络》setWifi result.put("setWifi",Arrays.asList( MessageUtils.message("setWifi.name0"), MessageUtils.message("setWifi.name1"), MessageUtils.message("setWifi.name2"), MessageUtils.message("setWifi.name3"), MessageUtils.message("setWifi.name4"), - MessageUtils.message("setWifi.name5"), - MessageUtils.message("setWifi.name6") + MessageUtils.message("setWifi.name5") + )); + + //《设备共享》deviceShare + result.put("deviceShare",Arrays.asList( + MessageUtils.message("deviceShare.name0"), + MessageUtils.message("deviceShare.name1"), + MessageUtils.message("deviceShare.name2"), + MessageUtils.message("deviceShare.name3"), + MessageUtils.message("deviceShare.name4") + )); + + //《我的》noinit + result.put("my",Arrays.asList( + MessageUtils.message("my.name0"), + MessageUtils.message("my.name1"), + MessageUtils.message("my.name2"), + MessageUtils.message("my.name3"), + MessageUtils.message("my.name4"), + MessageUtils.message("my.name5"), + MessageUtils.message("my.name6"), + MessageUtils.message("my.name7") + )); + + //《我的账号》account + result.put("account",Arrays.asList( + MessageUtils.message("account.name0"), + MessageUtils.message("account.name1"), + MessageUtils.message("account.name2"), + MessageUtils.message("account.name3"), + MessageUtils.message("account.name4"), + MessageUtils.message("account.name5"), + MessageUtils.message("account.name6"), + MessageUtils.message("account.name7"), + MessageUtils.message("account.name8"), + MessageUtils.message("account.name9"), + MessageUtils.message("account.name10"), + MessageUtils.message("account.name11"), + MessageUtils.message("account.name12"), + MessageUtils.message("account.name13"), + MessageUtils.message("account.name14"), + MessageUtils.message("account.name15"), + MessageUtils.message("account.name16") + )); + + //《修改昵称》accountForm + result.put("accountForm",Arrays.asList( + MessageUtils.message("accountForm.name0"), + MessageUtils.message("accountForm.name1"), + MessageUtils.message("accountForm.name2"), + MessageUtils.message("accountForm.name3"), + MessageUtils.message("accountForm.name4"), + MessageUtils.message("accountForm.name5"), + MessageUtils.message("accountForm.name6"), + MessageUtils.message("accountForm.name7"), + MessageUtils.message("accountForm.name8"), + MessageUtils.message("accountForm.name9"), + MessageUtils.message("accountForm.name10"), + MessageUtils.message("accountForm.name11"), + MessageUtils.message("accountForm.name12"), + MessageUtils.message("accountForm.name13"), + MessageUtils.message("accountForm.name14"), + MessageUtils.message("accountForm.name15"), + MessageUtils.message("accountForm.name16"), + MessageUtils.message("accountForm.name17"), + MessageUtils.message("accountForm.name18"), + MessageUtils.message("accountForm.name19"), + MessageUtils.message("accountForm.name20"), + MessageUtils.message("accountForm.name21"), + MessageUtils.message("accountForm.name22"), + MessageUtils.message("accountForm.name23"), + MessageUtils.message("accountForm.name24"), + MessageUtils.message("accountForm.name25") + )); + + //《修改昵称》devForm + result.put("devForm",Arrays.asList( + MessageUtils.message("devForm.name0"), + MessageUtils.message("devForm.name1"), + MessageUtils.message("devForm.name2"), + MessageUtils.message("devForm.name3"), + MessageUtils.message("devForm.name4"), + MessageUtils.message("devForm.name5"), + MessageUtils.message("devForm.name6") + )); + + //《分布管理》distribution + result.put("distribution",Arrays.asList( + MessageUtils.message("distribution.name0"), + MessageUtils.message("distribution.name1") + )); + + //《家庭管理》family + result.put("family",Arrays.asList( + MessageUtils.message("family.name0"), + MessageUtils.message("family.name1"), + MessageUtils.message("family.name2"), + MessageUtils.message("family.name3"), + MessageUtils.message("family.name4") + )); + + //《成员管理》familyDetail + result.put("familyDetail",Arrays.asList( + MessageUtils.message("familyDetail.name0"), + MessageUtils.message("familyDetail.name1"), + MessageUtils.message("familyDetail.name2"), + MessageUtils.message("familyDetail.name3"), + MessageUtils.message("familyDetail.name4"), + MessageUtils.message("familyDetail.name5"), + MessageUtils.message("familyDetail.name6"), + MessageUtils.message("familyDetail.name7"), + MessageUtils.message("familyDetail.name8") + )); + + //《设置语言》setLanguage + result.put("setLanguage",Arrays.asList( + MessageUtils.message("setLanguage.name0") + )); + + //《配网》ble + result.put("ble",Arrays.asList( + MessageUtils.message("ble.name0"), + MessageUtils.message("ble.name1"), + MessageUtils.message("ble.name2"), + MessageUtils.message("ble.name3"), + MessageUtils.message("ble.name4"), + MessageUtils.message("ble.name5"), + MessageUtils.message("ble.name6"), + MessageUtils.message("ble.name7"), + MessageUtils.message("ble.name8"), + MessageUtils.message("ble.name9"), + MessageUtils.message("ble.name10"), + MessageUtils.message("ble.name11"), + MessageUtils.message("ble.name12"), + MessageUtils.message("ble.name13"), + MessageUtils.message("ble.name14"), + MessageUtils.message("ble.name15"), + MessageUtils.message("ble.name16"), + MessageUtils.message("ble.name17"), + MessageUtils.message("ble.name18"), + MessageUtils.message("ble.name19"), + MessageUtils.message("ble.name20"), + MessageUtils.message("ble.name21"), + MessageUtils.message("ble.name22"), + MessageUtils.message("ble.name23"), + MessageUtils.message("ble.name24"), + MessageUtils.message("ble.name25"), + MessageUtils.message("ble.name26"), + MessageUtils.message("ble.name27"), + MessageUtils.message("ble.name28"), + MessageUtils.message("ble.name29"), + MessageUtils.message("ble.name30"), + MessageUtils.message("ble.name31"), + MessageUtils.message("ble.name32"), + MessageUtils.message("ble.name33"), + MessageUtils.message("ble.name34"), + MessageUtils.message("ble.name35"), + MessageUtils.message("ble.name36"), + MessageUtils.message("ble.name37"), + MessageUtils.message("ble.name38"), + MessageUtils.message("ble.name39"), + MessageUtils.message("ble.name40"), + MessageUtils.message("ble.name41"), + MessageUtils.message("ble.name42"), + MessageUtils.message("ble.name43"), + MessageUtils.message("ble.name44"), + MessageUtils.message("ble.name45"), + MessageUtils.message("ble.name46"), + MessageUtils.message("ble.name47"), + MessageUtils.message("ble.name48"), + MessageUtils.message("ble.name49"), + MessageUtils.message("ble.name50"), + MessageUtils.message("ble.name51"), + MessageUtils.message("ble.name52"), + MessageUtils.message("ble.name53"), + MessageUtils.message("ble.name54"), + MessageUtils.message("ble.name55"), + MessageUtils.message("ble.name56"), + MessageUtils.message("ble.name57"), + MessageUtils.message("ble.name58"), + MessageUtils.message("ble.name59"), + MessageUtils.message("ble.name60"), + MessageUtils.message("ble.name61"), + MessageUtils.message("ble.name62"), + MessageUtils.message("ble.name63"), + MessageUtils.message("ble.name64") )); return R.ok(result); diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/show/EqShowEquipmentLogController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/show/EqShowEquipmentLogController.java index e80dcdbc5..aea14391d 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/show/EqShowEquipmentLogController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/show/EqShowEquipmentLogController.java @@ -1,24 +1,14 @@ package org.dromara.web.controller.show; -import java.util.List; - import lombok.RequiredArgsConstructor; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; import org.dromara.web.domain.vo.EqEquipmentStatisticsVo; import org.dromara.web.service.IEqEquipmentService; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; -import org.dromara.common.idempotent.annotation.RepeatSubmit; -import org.dromara.common.log.annotation.Log; import org.dromara.common.web.core.BaseController; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.core.domain.R; -import org.dromara.common.core.validate.AddGroup; -import org.dromara.common.core.validate.EditGroup; -import org.dromara.common.log.enums.BusinessType; -import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.web.domain.vo.EqEquipmentLogVo; import org.dromara.web.domain.bo.EqEquipmentLogBo; import org.dromara.web.service.IEqEquipmentLogService; @@ -53,10 +43,10 @@ public class EqShowEquipmentLogController extends BaseController { /** * 设备类型统计 */ - @SaCheckPermission("device:showEquipmentLog:list") - @GetMapping("/statisticEquipmentList") - public R statisticEquipmentList(Integer type, String startTime, String endTime) { - return R.ok(eqEquipmentService.statisticEquipmentList(type,startTime,endTime)); +// @SaCheckPermission("device:showEquipmentLog:list") + @GetMapping("/selectEquipmentStatistic") + public R selectEquipmentStatistic(Integer type, String startTime, String endTime) { + return R.ok(eqEquipmentService.selectEquipmentStatistic(type,startTime,endTime)); } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/device/iot/DeviceByDeviceName.java b/ruoyi-admin/src/main/java/org/dromara/web/device/iot/DeviceByDeviceName.java new file mode 100644 index 000000000..1a554d1e6 --- /dev/null +++ b/ruoyi-admin/src/main/java/org/dromara/web/device/iot/DeviceByDeviceName.java @@ -0,0 +1,91 @@ +package org.dromara.web.device.iot; + +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @ClassName : DeviceByDeviceName + * @Author : ZZC + * @Date : 2024/8/20 0:26 + * @Description : 根据设备名称查询的信息 /api/tenant/devices + **/ +@NoArgsConstructor +@Data +public class DeviceByDeviceName { + + + private IdDTO id; + private Long createdTime; + private AdditionalInfoDTO additionalInfo; + private TenantIdDTO tenantId; + private CustomerIdDTO customerId; + private String name; + private String type; + private String label; + private DeviceProfileIdDTO deviceProfileId; + private DeviceDataDTO deviceData; + private FirmwareIdDTO firmwareId; + private Object softwareId; + + @NoArgsConstructor + @Data + public static class IdDTO { + private String entityType; + private String id; + } + + @NoArgsConstructor + @Data + public static class AdditionalInfoDTO { + private Boolean gateway; + private Boolean overwriteActivityTime; + private String description; + } + + @NoArgsConstructor + @Data + public static class TenantIdDTO { + private String entityType; + private String id; + } + + @NoArgsConstructor + @Data + public static class CustomerIdDTO { + private String entityType; + private String id; + } + + @NoArgsConstructor + @Data + public static class DeviceProfileIdDTO { + private String entityType; + private String id; + } + + @NoArgsConstructor + @Data + public static class DeviceDataDTO { + private ConfigurationDTO configuration; + private TransportConfigurationDTO transportConfiguration; + + @NoArgsConstructor + @Data + public static class ConfigurationDTO { + private String type; + } + + @NoArgsConstructor + @Data + public static class TransportConfigurationDTO { + private String type; + } + } + + @NoArgsConstructor + @Data + public static class FirmwareIdDTO { + private String entityType; + private String id; + } +} diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentBo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentBo.java index 1427c29a7..813a65d41 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentBo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentBo.java @@ -74,7 +74,7 @@ public class EqEquipmentBo extends BaseEntity { /** * 设备状态 */ - @NotNull(message = "设备状态不能为空", groups = { AddGroup.class, EditGroup.class }) + @NotNull(message = "设备运行状态不能为空", groups = { AddGroup.class, EditGroup.class }) private Integer status; /** diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentLogBo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentLogBo.java index 47f5bf837..6feae46f0 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentLogBo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentLogBo.java @@ -31,7 +31,7 @@ public class EqEquipmentLogBo extends BaseEntity { /** * 用户id */ - @NotNull(message = "用户id不能为空", groups = { AddGroup.class, EditGroup.class }) +// @NotNull(message = "用户id不能为空", groups = { AddGroup.class, EditGroup.class }) private Long userId; /** @@ -47,17 +47,23 @@ public class EqEquipmentLogBo extends BaseEntity { /** * 设备ID */ - @NotNull(message = "设备ID不能为空", groups = { AddGroup.class, EditGroup.class }) +// @NotNull(message = "设备ID不能为空", groups = { AddGroup.class, EditGroup.class }) private Long equipmentId; /** * 设备编码 */ - @NotBlank(message = "设备编码不能为空", groups = { AddGroup.class, EditGroup.class }) +// @NotBlank(message = "设备编码不能为空", groups = { AddGroup.class, EditGroup.class }) private String equipmentCode; + /** + * 设备名称 + */ + private String equipmentName; + /** * 状态 eq_status_log_type + * * 0.停止中 stop * 1.关闭中 closing * 2.开启中 openning @@ -82,8 +88,11 @@ public class EqEquipmentLogBo extends BaseEntity { * 112.门体手动开启提醒 * 113.半开门运行提醒 * 114.门体停止运行提醒 + * + * 500.设备离线 offline + * 501.设备在线 online */ - @NotNull(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class }) +// @NotNull(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class }) private Integer status; /** diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentStatisticsVo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentStatisticsVo.java index e9d0b8505..f056869d7 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentStatisticsVo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentStatisticsVo.java @@ -9,7 +9,7 @@ import java.io.Serializable; /** - * 设备信息视图对象 eq_user_equipment + * 设备信息视图对象 eq_equipment_statistics * * @author zzc * @date 2024-08-13 diff --git a/ruoyi-admin/src/main/java/org/dromara/web/mapper/EqEquipmentMapper.java b/ruoyi-admin/src/main/java/org/dromara/web/mapper/EqEquipmentMapper.java index 1b6275311..ccdb98423 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/mapper/EqEquipmentMapper.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/mapper/EqEquipmentMapper.java @@ -2,15 +2,12 @@ package org.dromara.web.mapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.web.domain.EqEquipment; import org.dromara.web.domain.vo.EqEquipmentStatisticsVo; import org.dromara.web.domain.vo.EqEquipmentVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.web.domain.vo.EqUserEquipmentVo; -import java.util.List; - /** * 设备信息Mapper接口 * @@ -26,5 +23,5 @@ public interface EqEquipmentMapper extends BaseMapperPlus resultMap = new HashMap<>(); @@ -176,6 +177,21 @@ public class IotService { return deviceDto; } + /** + * 根据设备名称获取获取设备信息 + * @param deviceName + * @return + */ + public DeviceByDeviceName apiTenantDevicesByName(String deviceName){ + Map map = new HashMap<>(); + map.put("deviceName",deviceName); + String send = getSend(CommonYmlConfig.URL_IOT_DEVICE_BY_NAME, map); + JSONObject jsonObject = JSON.parseObject(send); + DeviceByDeviceName deviceDto = jsonObject.toJavaObject(DeviceByDeviceName.class); + if (deviceDto.getId()==null) throw new RuntimeException(MessageUtils.message("message.fault.device.notfound")); + return deviceDto; + } + public String getToken() { String token = tokenCache.getIfPresent("token"); diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentLogServiceImpl.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentLogServiceImpl.java index 942dd575d..caa5707e5 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentLogServiceImpl.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentLogServiceImpl.java @@ -78,7 +78,7 @@ public class EqEquipmentLogServiceImpl implements IEqEquipmentLogService { lqw.eq(bo.getStatus() != null, EqEquipmentLog::getStatus, bo.getStatus()); lqw.eq(bo.getFaultStatus() != null, EqEquipmentLog::getFaultStatus, bo.getFaultStatus()); lqw.eq(bo.getLineStatus() != null, EqEquipmentLog::getLineStatus, bo.getLineStatus()); - lqw.eq(bo.getCreatedYearDay() != null, EqEquipmentLog::getCreatedYearDay, bo.getCreatedYearDay()); + lqw.eq(StringUtils.isNotBlank(bo.getCreatedYearDay()), EqEquipmentLog::getCreatedYearDay, bo.getCreatedYearDay()); lqw.eq(bo.getCreatedHourSecond() != null, EqEquipmentLog::getCreatedHourSecond, bo.getCreatedHourSecond()); lqw.eq(bo.getDayOfWeek() != null, EqEquipmentLog::getDayOfWeek, bo.getDayOfWeek()); // lqw.between(params.get("beginTime") != null && params.get("endTime") != null, diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java index bd9c952f5..19fe0dc47 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java @@ -1,6 +1,6 @@ package org.dromara.web.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MessageUtils; @@ -14,10 +14,7 @@ import lombok.RequiredArgsConstructor; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.service.ISysUserService; import org.dromara.web.device.*; -import org.dromara.web.device.iot.DeviceClientMsgDto; -import org.dromara.web.device.iot.DeviceDto; -import org.dromara.web.device.iot.DeviceMsgDto; -import org.dromara.web.device.iot.DeviceServerMsgDto; +import org.dromara.web.device.iot.*; import org.dromara.web.domain.EqArea; import org.dromara.web.domain.bo.*; import org.dromara.web.domain.vo.EqEquipmentDetailVo; @@ -73,6 +70,21 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { public TableDataInfo queryPageList(EqEquipmentBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + List records = result.getRecords(); + if (CollUtil.isEmpty(records)) return TableDataInfo.build(result); + //获取遥测数据 + + for (EqEquipmentVo record : records) { + String equipmentCode = record.getEquipmentCode(); + DeviceMsgDto telemetryMsg = iotService.httpTelemetryGetSend(equipmentCode); + if (telemetryMsg == null) { + record.setLineStatus(0);//未获取到数据统一为离线 + continue; + } + record.setStatus(telemetryMsg.getOpenPercentage()); + record.setFaultStatus(telemetryMsg.getGarageException()); + } + return TableDataInfo.build(result); } @@ -222,7 +234,7 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { //获取服务属性状态 DeviceServerMsgDto serverMsg = iotService.httpServerGetSend(bo.getEquipmentCode()); result.setLineStatus(serverMsg.getLineStatus()?1:0); - + if (!serverMsg.getLineStatus()) return result; //获取客户端属性 DeviceClientMsgDto clientMsg = iotService.httpClientGetSend(bo.getEquipmentCode()); result.setEquipmentType(clientMsg.getEquipmentType()); @@ -233,7 +245,10 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { //获取遥测数据 DeviceMsgDto telemetryMsg = iotService.httpTelemetryGetSend(bo.getEquipmentCode()); - + if (telemetryMsg == null) { + System.out.println("未获取到设备信息"); + result.setLineStatus(0); + } //开合状态 result.setOpenStatus(telemetryMsg.getOpenPercentage()); result.setOpenStatusText( @@ -254,15 +269,27 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { @Override public Boolean bindDevice(EqAppHomeBo bo) { - String equipmentCode = bo.getEquipmentCode(); + String equipmentCode = bo.getEquipmentCode(); //这里的设备编码改成了设备mac地址 + //通过设备mac地址查询设备编码 + final String macPrefix = "mock_"; + + equipmentCode = macPrefix + equipmentCode; + + //根据设备名称地址查询设备id(设备code) + DeviceByDeviceName deviceByNameDto = iotService.apiTenantDevicesByName(equipmentCode);//无信息会抛异常 无需判断 + if (deviceByNameDto==null) throw new RuntimeException(MessageUtils.message("iot.device.notFound")); + String equipmentName = equipmentCode;//暂时不存设备名称 下面从其他接口获取并存入了 + equipmentCode = deviceByNameDto.getId().getId(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq( EqEquipment::getEquipmentCode,equipmentCode); EqEquipmentVo eqEquipmentVo = baseMapper.selectVoOne(lqw); - if (eqEquipmentVo!=null) throw new RuntimeException("设备已绑定"); + if (eqEquipmentVo!=null) throw new RuntimeException(MessageUtils.message("message.fault.device.isbind")); DeviceServerMsgDto deviceServerMsgDto = iotService.httpServerGetSend(equipmentCode); - if (!deviceServerMsgDto.getLineStatus()) throw new RuntimeException("设备未连接 无法绑定"); + if (!deviceServerMsgDto.getLineStatus()) throw new RuntimeException(MessageUtils.message("message.fault.device.offline")); + + //从iot平台设置用户绑定 并获取设备信息 DeviceDto deviceDto = iotService.httpDeviceGetSend(equipmentCode);//无信息会抛异常 无需判断 @@ -277,14 +304,17 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { eqEquipmentBo.setUserName(sysUserVo.getUserName()); eqEquipmentBo.setNickName(sysUserVo.getNickName()); DeviceMsgDto deviceMsgDto = iotService.httpTelemetryGetSend(equipmentCode); + if (deviceMsgDto==null){ + eqEquipmentBo.setStatus(deviceMsgDto.getOpenPercentage());//使用半开作为状态值 + eqEquipmentBo.setFaultStatus(deviceMsgDto.getGarageException()); + eqEquipmentBo.setLineStatus(1);//在线 + }else{ + eqEquipmentBo.setLineStatus(0);//离线 + } - eqEquipmentBo.setStatus(deviceMsgDto.getOpenPercentage());//使用半开作为状态值 - eqEquipmentBo.setFaultStatus(deviceMsgDto.getGarageException()); - eqEquipmentBo.setLineStatus(1);//在线 //判断是否获取到信息 无信息会抛异常 无需判断 EqEquipment add = MapstructUtils.convert(eqEquipmentBo, EqEquipment.class); - validEntityBeforeSave(add); baseMapper.insert(add); return true; } @@ -308,8 +338,8 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { } @Override - public EqEquipmentStatisticsVo statisticEquipmentList(Integer type, String startTime, String endTime) { - EqEquipmentStatisticsVo result = baseMapper.selectStatisticEquipmentList(type, startTime, endTime); + public EqEquipmentStatisticsVo selectEquipmentStatistic(Integer type, String startTime, String endTime) { + EqEquipmentStatisticsVo result = baseMapper.selectEquipmentStatistic(type, startTime, endTime); result.setType(type); return result; } diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 5584e9e9e..c4abc3b44 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -95,7 +95,7 @@ spring.data: # 端口,默认为6379 port: 6379 # 数据库索引 - database: 0 + database: 2 # redis 密码必须配置 password: ruoyi123 # 连接超时时间 @@ -264,3 +264,4 @@ iot: telemetry: /api/plugins/telemetry/{entityType}/{entityId}/values/timeseries operate: /api/plugins/rpc/oneway/{deviceId} device: /api/device/{deviceId} + deviceByName: /api/tenant/devices?deviceName={deviceName} diff --git a/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties b/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties index 9ecba0bf1..cb4b5c7df 100644 --- a/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties +++ b/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties @@ -259,3 +259,5 @@ runStatus.name14=deviceException message.fault.device.notfound = Device not found +message.fault.device.isbind = Device is offline +message.fault.device.offline = Device is offline diff --git a/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties b/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties index fe6bcd395..5c72a305b 100644 --- a/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties +++ b/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties @@ -60,191 +60,6 @@ tenant.not.exists=对不起, 您的租户不存在,请联系管理员 tenant.blocked=对不起,您的租户已禁用,请联系管理员 tenant.expired=对不起,您的租户已过期,请联系管理员 - - - -##《登录》login -login.name0=登录 -login.name1=请输入账号 -login.name2=请输入密码 -login.name3=我已阅读并同意签署 -login.name4=立即注册 -##《注册》register -register.name0=注册 -register.name1=注册账号 -register.name2=请输入账号 -register.name3=请输入密码 -register.name4=请再次输入密码 -##《注册成功》registerSuccess -registerSuccess.name0=注册成功 -registerSuccess.name1=您的登录账号 -registerSuccess.name2=您的密码 -registerSuccess.name3=立即登录 -##《首页》homepage -homepage.name0=首页 -homepage.name1=状态 -homepage.name2=已关闭 -homepage.name3=打开 -##《关门提醒》warningClose -warningClose.name0=关门提醒 -warningClose.name1=设备-deviceName-已开门-num-分钟了,请记得关门 -warningClose.name2=关门 -warningClose.name3=我知道了 -##《添加设备》add -add.name0=添加设备 -add.name1=请输入设备编码 -add.name2=请输入 -add.name3=添加 -## 《添加成功》addSuccess -addSuccess.name0=添加成功 -addSuccess.name1=返回 -addSuccess.name2=继续搜索 -##《添加失败》addFailure -addFailure.name0=添加失败 -addFailure.name1=请正确的设备编号后再试 -addFailure.name2=返回 -addFailure.name3=重新添加 -##《设备详情》detail -detail.name0=详情 -##(已关闭 打开10% 打开100%) -detail.name1=状态 -detail.name2=已关闭 -detail.name3=打开 -detail.name4=运行状态 -detail.name5=半开 -detail.name6=关 -detail.name7=停 -detail.name8=开 -detail.name9=半开门 -detail.name10=灯管理 -detail.name11=设置 -detail.name12=min分second秒后关灯 -detail.name13=倒计时重置 -detail.name14=运行次数 -detail.name15=操作次数 -detail.name16=数据日志 -detail.name17=清码 -detail.name18=对码 -##《倒计时设置》countdown -countdown.name0=倒计时设置 -countdown.name1=取消 -countdown.name2=确认 -##《数据日志》log -log.name0=数据日志 -log.name1=选择日期 -log.name2=今天 -log.name3=周日 -log.name4=周一 -log.name5=周二 -log.name6=周三 -log.name7=周四 -log.name8=周五 -log.name9=周六 -log.name10=开门提醒 -##《对码》checkcode -checkcode.name0=对码 -checkcode.name1=对码中 -checkcode.name2=对码成功 -checkcode.name3=对码失败请重试 -##《清码》clearcode -clearcode.name0=提示 -clearcode.name1=请输入登录密码 -clearcode.name2=请输入登录密码才能进行设备清码 -clearcode.name3=取消 -clearcode.name4=确认 -clearcode.name5=密码错误请重试 - -##《设备掉线详情》offDetail -offDetail.name0=详情 -offDetail.name1=设备已离线 - -##《优化-设置》set -set.name0=设置 -set.name1=设备名称 -set.name2=设备位置 -set.name3=反弹力设置 -set.name4=红外感应 -set.name5=开启此功能,电机关门时,如有人或物在门下经过则触发红外感应器 ,门会立即停止关闭,并打开。 -set.name6=行程距离限制 -set.name7=半开门功能开关 -set.name8=半开门高度设置 -set.name9=提醒关门功能开关 -set.name10=提醒关门时间设置 -set.name11=自动关门 (提示 启动自动开门功能,需要先打开红外保护感应功能) -set.name12=打开此功能,当门开到最大时,在设置的倒计时时间内,门没有被控制,则在倒计时结束后,门会自动关闭。 -set.name13=自动关门时间设置 -set.name14=运行次数 -set.name15=WiFi网络 -set.name16=时区 -set.name17=设备型号 -set.name18=序列号 -set.name19=模组版本 -set.name20=MCU版本 -set.name21=删除设备 - -##《通用》setCommon -setCommon.detail=详情 -setCommon.add=添加 -setCommon.edit=编辑 -setCommon.delete=删除 -setCommon.alert=提示 -setCommon.cancel=取消 -setCommon.confirm=确认 - -##《未设置详情》noinit -noinit.name0=详情 -noinit.name1=行程未校准 -noinit.name2=设备未校准行程,将不能进行设备控制 -noinit.name3=行程校准教程 -noinit.name4=请在设备上操作 -noinit.name5=设置开门位置: -noinit.name6=1.请长按“SET”键 -noinit.name7=观察:显示器显示”1”闪烁 -noinit.name8=2.再次按下"SET"键 -noinit.name9=观察:显示器显示为”1”常亮 -noinit.name10=3.长按"UP"键,使门至最大开门位置后松手停止 -noinit.name11=观察:门向开门方向运行,当门达到最大开门位置后 -noinit.name12=设置关门位置: -noinit.name13=4.再次按下”SET"键 -noinit.name14=观察:显示器显示为”2”常亮 -noinit.name15=5.长按“向下”键至关闭位置后松手 -noinit.name16=观察:门向关门方向运行,当门达到关闭位置后停止 -noinit.name17=自动校验: -noinit.name18=6.再次按下"SET"键 - - -##《修改设备名称》setEqname -setEqname.name0=修改设备名称 -setEqname.name1=请输入名称 -setEqname.name2=上一页 -setEqname.name3=确认 -##《设备位置修改》setEqarea -setEqarea.name0=修改设备位置 -setEqarea.name1=上一页 -setEqarea.name2=确认 -##《反弹力设置》setRebound -setRebound.name0=电机反弹力 -setRebound.name1=调节反弹力 -setRebound.name2=电机在开门时,若开门的力超出设定范围值,门会立即停止开门; -setRebound.name3=若关门的力超出设定范围值,门会立即停止关闭并开门,此功能可以调整开/关门感应力的范围值。 -##《删除设备》setDelete -setDelete.name0=删除设备 -setDelete.name1=提示 -setDelete.name2=删除设备后,将不能管理设备请谨慎操作! -setDelete.name3=取消 -setDelete.name4=确认删除 -##《时区设置》setZone -setZone.name0=时区 -setZone.name1=时间格式 -##《wifi网络》setWifi -setWifi.name0=wifi网络 -setWifi.name1=提示 -setWifi.name2=已链接WiFi:XXXXXXXX -setWifi.name3=若需更换网络,请确保你在设备旁 -setWifi.name4=边后,点击重置WiFi按钮 -setWifi.name5=确认删除 -setWifi.name6=取消 - ## 《开合状态》 openStatus.name0=已关闭 openStatus.name1=打开 @@ -285,3 +100,368 @@ logStatus.name113=半开门运行提醒 logStatus.name114=门体停止运行提醒 message.fault.device.notfound = 设备不存在 +message.fault.device.isbind = 设备已绑定 +message.fault.device.offline = 设备未连接 无法绑定 + + +#====== app ========= +##《登录》login +login.name0=登录 +login.name1=请输入账号 +login.name2=请输入密码 +login.name3=我已阅读并同意签署 +login.name4=立即注册 +login.name5=支持手机号/邮箱登录 +##《注册》register +register.name0=注册 +register.name1=注册账号 +register.name2=请输入账号 +register.name3=请输入密码 +register.name4=请再次输入密码 +register.name5=两次输入的密码不一致 +##《注册成功》registerSuccess +registerSuccess.name0=注册成功 +registerSuccess.name1=您的登录账号 +registerSuccess.name2=您的密码 +registerSuccess.name3=立即登录 +##《首页》homepage +homepage.name0=首页 +homepage.name1=状态 +homepage.name2=已关闭 +homepage.name3=打开 +homepage.name4=关门提醒 +homepage.name5=开门提醒 +homepage.name6=暂停提醒 +homepage.name7=已关门 +homepage.name8=是否开门? +homepage.name9=是否暂停 +homepage.name10=请选择 +##《关门提醒》warningClose +warningClose.name0=关门提醒 +warningClose.name1=设备-deviceName-已开门-num-分钟了,请记得关门 +warningClose.name2=设备 +warningClose.name3=已开门 +warningClose.name4=分钟了,请记得关门 +warningClose.name5=关门 +warningClose.name6=我知道了 +##《添加设备》add +add.name0=添加设备 +add.name1=请输入设备编码 +add.name2=请输入 +add.name3=添加 +## 《添加成功》addSuccess +addSuccess.name0=添加成功 +addSuccess.name1=返回 +addSuccess.name2=继续搜索 +##《添加失败》addFailure +addFailure.name0=添加失败 +addFailure.name1=请输入正确的设备编号后再试 +addFailure.name3=重新添加 +##《设备详情》detail +detail.name0=详情 +##(已关闭 打开10% 打开100%) +detail.name1=状态 +detail.name2=已关闭 +detail.name3=打开 +detail.name4=运行状态 +detail.name5=半开 +detail.name6=关 +detail.name7=停 +detail.name8=开 +detail.name9=半开门 +detail.name10=灯管理 +detail.name11=设置 +detail.name12=min分second秒后关灯 +detail.name13=倒计时重置 +detail.name14=运行次数 +detail.name15=操作次数 +detail.name16=数据日志 +detail.name17=清码 +detail.name18=对码 +detail.name19=开门设置 +detail.name20=已打开 +##《倒计时设置》countdown +countdown.name0=倒计时设置 +countdown.name1=取消 +countdown.name2=确认 +##《数据日志》log +log.name0=数据日志 +log.name1=选择日期 +log.name2=今天 +log.name3=周日 +log.name4=周一 +log.name5=周二 +log.name6=周三 +log.name7=周四 +log.name8=周五 +log.name9=周六 +log.name10=开门提醒 +log.name11=年 +log.name12=月 +log.name13=日 +log.name14=时 +log.name15=分 +log.name16=秒 +##《对码》checkcode +checkcode.name0=对码 +checkcode.name1=对码中 +checkcode.name2=对码成功 +checkcode.name3=对码失败请重试 +##《清码》clearcode +clearcode.name0=提示 +clearcode.name1=请输入登录密码 +clearcode.name2=请输入登录密码才能进行设备清码 +clearcode.name3=取消 +clearcode.name4=确认 +clearcode.name5=密码错误请重试 + +##《设备掉线详情》offDetail +offDetail.name0=详情 +offDetail.name1=设备已离线 + +##《优化-设置》set +set.name0=设置 +set.name1=设备名称 +set.name2=设备位置 +set.name3=反弹力设置 +set.name4=红外感应 +set.name5=开启此功能,电机关门时,如有人或物在门下经过则触发红外感应器 ,门会立即停止关闭,并打开。 +set.name6=行程距离限制 +set.name7=半开门功能开关 +set.name8=半开门高度设置 +set.name9=提醒关门功能开关 +set.name10=提醒关门时间设置 +set.name11=自动关门 +set.name12=打开此功能,当门开到最大时,在设置的倒计时时间内,门没有被控制,则在倒计时结束后,门会自动关闭。 +set.name13=自动关门时间设置 +set.name14=运行次数 +set.name15=WiFi网络 +set.name16=时区 +set.name17=设备型号 +set.name18=序列号 +set.name19=模组版本 +set.name20=MCU版本 +set.name21=删除设备 +set.name22=启动自动开门功能,需要先打开红外保护感应功能 + +##《通用》setCommon +setCommon.detail=详情 +setCommon.add=添加 +setCommon.edit=编辑 +setCommon.delete=删除 +setCommon.alert=提示 +setCommon.cancel=取消 +setCommon.confirm=确认 + +##《未设置详情》noinit +noinit.name0=详情 +noinit.name1=行程未校准 +noinit.name2=设备未校准行程,将不能进行设备控制 +noinit.name3=行程校准教程 +noinit.name4=请在设备上操作 +noinit.name5=设置开门位置 +noinit.name6=1.请长按“SET”键 +noinit.name7=观察:显示器显示“1”闪烁 +noinit.name8=2.再次按下"SET"键 +noinit.name9=观察:显示器显示为“1”常亮 +noinit.name10=3.长按“UP”键,使门至最大开门位置后松手停止 +noinit.name11=观察:门向开门方向运行,当门达到最大开门位置后 +noinit.name12=设置关门位置: +noinit.name13=4.再次按下“SET”键 +noinit.name14=观察:显示器显示为“2”常亮 +noinit.name15=5.长按“向下”键至关闭位置后松手 +noinit.name16=观察:门向关门方向运行,当门达到关闭位置后停止 +noinit.name17=自动校验: +noinit.name18=6.再次按下“SET”键 + + +##《修改设备名称》setEqname +setEqname.name0=修改设备名称 +setEqname.name1=请输入名称 +setEqname.name2=上一页 +setEqname.name3=确认 +##《设备位置修改》setEqarea +setEqarea.name0=修改设备位置 +setEqarea.name1=上一页 +setEqarea.name2=确认 +##《反弹力设置》setRebound +setRebound.name0=电机反弹力 +setRebound.name1=调节反弹力 +setRebound.name2=电机在开门时,若开门的力超出设定范围值,门会立即停止开门; +setRebound.name3=若关门的力超出设定范围值,门会立即停止关闭并开门,此功能可以调整开/关门感应力的范围值。 +##《删除设备》setDelete +setDelete.name0=删除设备 +setDelete.name1=提示 +setDelete.name2=删除设备后,将不能管理设备请谨慎操作! +setDelete.name3=取消 +setDelete.name4=确认删除 +##《时区设置》setZone +setZone.name0=时区 +setZone.name1=选择时间格式 +setZone.name2=时间格式 +##《wifi网络》setWifi +setWifi.name0=wifi网络 +setWifi.name1=提示 +setWifi.name2=已连接WiFi +setWifi.name3=若需更换网络,请确保你在设备旁边后,点击重置WiFi按钮 +setWifi.name4=确认删除 +setWifi.name5=取消 + +# 《设备共享》deviceShare +deviceShare.name1 = 设备共享 +deviceShare.name2 = 请输入对方登录账号 +deviceShare.name3 = 温馨提示 +deviceShare.name4 = 设备共享后,对方账号也可以访问管理当前账号所有设备,对方不可删除当前账号设备。 + +# 《我的》my +my.name0 = 登录账号 +my.name1 = 账号管理 +my.name2 = 分布管理 +my.name3 = 家庭管理 +my.name4 = 设备共享 +my.name5 = 切换语言 +my.name6 = 我的 +my.name7 = 设备配网 + +# 《我的账号》account +account.name0=我的账号 +account.name1=退出登录 +account.name2=头像 +account.name3=昵称 +account.name4=邮箱 +account.name5=设置登录密码 +account.name6=修改密码 +account.name7=注销账号 +account.name8=注销后无法恢复,请谨慎操作 +account.name9=退出登录会清除您的登录信息,确认退出吗? +account.name10=重选 +account.name11=关闭 +account.name12=旋转 +account.name13=预览 +account.name14=上传 +account.name15=注销账号后无法恢复,确认注销吗? +account.name16=注销账号 + +# 《修改昵称》accountForm +accountForm.name0=修改昵称 +accountForm.name1=修改登录密码 +accountForm.name2=绑定邮箱 +accountForm.name3=添加 +accountForm.name4=家庭名称 +accountForm.name5=请输入昵称 +accountForm.name6=请输入名称 +accountForm.name7=请输入旧密码 +accountForm.name8=请输入新密码 +accountForm.name9=请再次输入密码 +accountForm.name10=请输入邮箱 +accountForm.name11=请输入验证码 +accountForm.name12=发送验证码 +accountForm.name13=请稍候…… +accountForm.name14=s后获取 +accountForm.name15=您当前邮箱号为 +accountForm.name16=上一页 +accountForm.name17=确认 +accountForm.name18=两次输入的密码不一致 +accountForm.name19=请输入正确的邮箱 +accountForm.name20=请上传图片 +accountForm.name21=上传/拍照 +accountForm.name22=上传中... +accountForm.name23=上传失败 +accountForm.name24=重新上传 +accountForm.name25=修改头像 + +# 《设备共享》devForm +devForm.name0 = 设备共享 +devForm.name1 = 请输入对方登录账号 +devForm.name2 = 温馨提示 +devForm.name3 = 设备共享后,对方账号也可以访问管理当前账号所有设备,对方不可删除当前账号设备。 +devForm.name4 = 上一页 +devForm.name5 = 添加 +devForm.name6 = 设备共享成功,是否继续共享? +# 《分布管理》distribution +distribution.name0=分布管理 +distribution.name1=默认 +# 《家庭管理》 family +family.name0=家庭管理 +family.name1=我的家 +family.name2=我加入的家庭 +family.name3=个区域 +family.name4=个设备 +# 《成员管理》familyDetail +familyDetail.name0=成员管理 +familyDetail.name1=家庭名称 +familyDetail.name2=我加入的家庭 +familyDetail.name3=提示 +familyDetail.name4=移除当前成员后,对方将不能访问当前家庭进行设备管理! +familyDetail.name5=取消 +familyDetail.name6=确定 +familyDetail.name7=删除 +familyDetail.name8=主人 +# 《设置语言》setLanguage +setLanguage.name0=设置语言 +#《配网》ble +ble.name0=设备配网 +ble.name1=执行成功! +ble.name2=环境已存在,不需要重复初始化! +ble.name3=配网环境未得到初始化,请先执行环境初始化! +ble.name4=搜索蓝牙任务,已经停止运行,无需重复停止! +ble.name5=搜索蓝牙任务,已经在运行,无需重复运行! +ble.name6=蓝牙设备不具备扫描WIFI列表的能力! +ble.name7=蓝牙设备未连接,请先连接设备! +ble.name8=传递参数错误! +ble.name9=初始化会话失败,请重新初始化! +ble.name10=预留! +ble.name11=环境检查OK! +ble.name12=位置权限未打开! +ble.name13=GPS未打开! +ble.name14=此设备不支持蓝牙! +ble.name15=需要打开蓝牙开关,才能继续! +ble.name16=需要位置权限,才能继续! +ble.name17=请允许位置权限,才能继续! +ble.name18=需要位置权限,才能继续! +ble.name19=正在连接蓝牙设备,请允许配对或稍后重试!! +ble.name20=已经连接蓝牙设备,请断开蓝牙后重新尝试! +ble.name21=正在供应配网数据,稍后重试! +ble.name22=需要蓝牙权限,才能继续! +ble.name23=需要蓝牙权限,才能继续! +ble.name24= 无需密码,点击确定开始配网! +ble.name25=请输入 +ble.name26= 的密码! +ble.name27=APP需要位置权限,才能继续! +ble.name28=APP需要蓝牙权限,才能继续! +ble.name29=需要根据提示处理! +ble.name30=正在扫描蓝牙设备.... +ble.name31=正在连接蓝牙设备....(最长40S) +ble.name32=参数错误,请重试! +ble.name33=正在获取WIFI列表.... +ble.name34=配网中.... +ble.name35=扫描完成! +ble.name36=请打开蓝牙! +ble.name37=未知错误! +ble.name38=连接蓝牙成功! +ble.name39=连接蓝牙失败!可尝试重新搜索,重启蓝牙,或重启应用! +ble.name40=蓝牙连接断开! +ble.name41=未知错误!尝试手动重启蓝牙,或重启应用! +ble.name42=配网成功! +ble.name43=密码错误,重新尝试! +ble.name44=无法找到网络,重新尝试! +ble.name45=设备断开连接,重新尝试! +ble.name46=失败,可重启APP或重新尝试! +ble.name47=初始化配网环境 +ble.name48=操作说明 +ble.name49=第一步 +ble.name50=第二步 +ble.name51=下一步 +ble.name52=扫描蓝牙设备结果 +ble.name53=提示:没有扫描到蓝牙设备! +ble.name54=提示:点击需要配网的蓝牙设备,进入下一步。 +ble.name55=重新搜索 +ble.name56=获取WIFI列表结果 +ble.name57=提示:没有扫描到可用的WIFI网络! +ble.name58=提示:点击要连接的WIFI网络,输入密码,开始配网! +ble.name59=重新获取 +ble.name60=长按设备WIFI按键10秒以上,LED灯快速闪烁后,松手。 +ble.name61=点击,下一步,按提示输入信息,开始配网。 +ble.name62=提示:输入wifi密码 +ble.name63=提示:开始配网 +ble.name64=返回首页 diff --git a/ruoyi-admin/src/main/resources/mapper/device/EqEquipmentMapper.xml b/ruoyi-admin/src/main/resources/mapper/device/EqEquipmentMapper.xml index 50fe107a1..23d01513a 100644 --- a/ruoyi-admin/src/main/resources/mapper/device/EqEquipmentMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/device/EqEquipmentMapper.xml @@ -28,24 +28,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" e.user_id, s.nick_name, e.user_name, - COUNT(*) AS bind_num, -- 设备总数 + COUNT(e.equipment_id) AS bind_num, -- 设备总数 SUM(CASE WHEN e.line_status = 0 THEN 1 ELSE 0 END) AS offline_num, -- 离线个数 SUM(CASE WHEN e.line_status = 1 THEN 1 ELSE 0 END) AS online_num -- 在线个数 FROM - eq_equipment e - JOIN - sys_user s ON e.user_id = s.user_id + sys_user s + left JOIN + eq_equipment e + ON e.user_id = s.user_id + s.user_type='app_user' - AND nick_name like + AND s.nick_name like CONCAT('%', #{nickName}, '%') GROUP BY - e.user_name, s.nick_name; + e.user_id,e.user_name, s.nick_name - SELECT COUNT(*) AS bind_num, -- 设备总数 SUM(CASE WHEN line_status = 0 THEN 1 ELSE 0 END) AS offline_num, -- 离线个数