From 58c28334a57f34a61d2966708ef4e69c9496903b Mon Sep 17 00:00:00 2001 From: zzc <1278921369@qq.com> Date: Mon, 6 Jan 2025 00:13:11 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/app/EqDeviceController.java | 2 + .../web/domain/bo/EqEquipmentLogBo.java | 24 +- .../resources/i18n/messages_zh_CN.properties | 1016 ++++++++--------- 3 files changed, 522 insertions(+), 520 deletions(-) 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 a657d9084..8c2c7f56f 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 @@ -283,6 +283,8 @@ public class EqDeviceController extends BaseController { public void saveDeviceLogs(@RequestBody EqEquipmentLogBo eqEquipmentLogBo){ String equipmentName = eqEquipmentLogBo.getEquipmentName(); Integer status = eqEquipmentLogBo.getStatus(); + List statusList = Arrays.asList("101", "102", "103", "104", "105", "106", "107", "108", "1", "2", "112", "113"); + if (!statusList.contains(status.toString())) return; //设备id查询 DeviceByDeviceName deviceByNameDto = iotService.apiTenantDevicesByName(equipmentName);//无信息会抛异常 无需判断 if (deviceByNameDto==null) throw new RuntimeException("设备不存在"); 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 6feae46f0..06b6c999d 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 @@ -74,19 +74,19 @@ public class EqEquipmentLogBo extends BaseEntity { * 13.电机维护故障 motorMaintainException * 14.设备故障 deviceException * - * 101.烟雾报警 - * 102.红外触发报警 - * 103.电机运行报警 - * 104.电机维修报警 - * 105.非APP开门提醒 - * 106.非APP关门提醒 - * 107.关门故障报警 - * 108.开门故障报警 - * 109.开门运行提醒 - * 110.关门运行提醒 + * 101.烟雾报警 √ + * 102.红外触发报警√ + * 103.电机运行报警√ + * 104.电机维修报警√ + * 105.非APP开门提醒√ + * 106.非APP关门提醒√ + * 107.关门故障报警√ + * 108.开门故障报警√ + * 109.开门运行提醒 使用1 + * 110.关门运行提醒 使用2 * 111.忘记关门提醒 - * 112.门体手动开启提醒 - * 113.半开门运行提醒 + * 112.门体手动开启提醒√ + * 113.半开门运行提醒√ * 114.门体停止运行提醒 * * 500.设备离线 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 55aa66f8f..e73c44127 100644 --- a/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties +++ b/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties @@ -1,528 +1,528 @@ -#错误消息 -not.null=* 必须填写 -user.jcaptcha.error=验证码错误 -user.jcaptcha.expire=验证码已失效 -user.not.exists=对不起, 您的账号:{0} 不存在. -user.password.not.match=用户不存在/密码错误 -user.password.retry.limit.count=密码输入错误{0}次 -user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定{1}分钟 -user.password.delete=对不起,您的账号:{0} 已被删除 -user.blocked=对不起,您的账号:{0} 已禁用,请联系管理员 -role.blocked=角色已封禁,请联系管理员 -user.logout.success=退出成功 -length.not.valid=长度必须在{min}到{max}个字符之间 -user.username.not.blank=用户名不能为空 -user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头 -user.username.length.valid=账户长度必须在{min}到{max}个字符之间 -user.password.not.blank=用户密码不能为空 -user.password.length.valid=用户密码长度必须在{min}到{max}个字符之间 -user.password.not.valid=* 5-50个字符 -user.email.not.valid=邮箱格式错误 -user.email.not.blank=邮箱不能为空 -user.phonenumber.not.blank=用户手机号不能为空 -user.mobile.phone.number.not.valid=手机号格式错误 -user.login.success=登录成功 -user.register.success=注册成功 -user.register.save.error=保存用户 {0} 失败,注册账号已存在 -user.register.error=注册失败,请联系系统管理人员 -user.notfound=请重新登录 -user.forcelogout=管理员强制退出,请重新登录 -user.unknown.error=未知错误,请重新登录 -auth.grant.type.error=认证权限类型错误 -auth.grant.type.blocked=认证权限类型已禁用 -auth.grant.type.not.blank=认证权限类型不能为空 -auth.clientid.not.blank=认证客户端id不能为空 -##文件上传消息 -upload.exceed.maxSize=上传的文件大小超出限制的文件大小!
允许的文件最大大小是:{0}MB! -upload.filename.exceed.length=上传的文件名最长{0}个字符 -##权限 -no.permission=您没有数据的权限,请联系管理员添加权限 [{0}] -no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}] -no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}] -no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}] -no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}] -no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}] -repeat.submit.message=不允许重复提交,请稍候再试 -rate.limiter.message=访问过于频繁,请稍候再试 -sms.code.not.blank=短信验证码不能为空 -sms.code.retry.limit.count=短信验证码输入错误{0}次 -sms.code.retry.limit.exceed=短信验证码输入错误{0}次,帐户锁定{1}分钟 -email.code.not.blank=邮箱验证码不能为空 -email.code.retry.limit.count=邮箱验证码输入错误{0}次 -email.code.retry.limit.exceed=邮箱验证码输入错误{0}次,帐户锁定{1}分钟 -xcx.code.not.blank=小程序[code]不能为空 -social.source.not.blank=第三方登录平台[source]不能为空 -social.code.not.blank=第三方登录平台[code]不能为空 -social.state.not.blank=第三方登录平台[state]不能为空 -##租户 -tenant.number.not.blank=租户编号不能为空 -tenant.not.exists=对不起, 您的租户不存在,请联系管理员 -tenant.blocked=对不起,您的租户已禁用,请联系管理员 -tenant.expired=对不起,您的租户已过期,请联系管理员 +#???? +not.null=* ???? +user.jcaptcha.error=????? +user.jcaptcha.expire=?????? +user.not.exists=???, ?????{0} ???. +user.password.not.match=?????/???? +user.password.retry.limit.count=??????{0}? +user.password.retry.limit.exceed=??????{0}??????{1}?? +user.password.delete=?????????{0} ???? +user.blocked=?????????{0} ?????????? +role.blocked=???????????? +user.logout.success=???? +length.not.valid=?????{min}?{max}????? +user.username.not.blank=??????? +user.username.not.valid=* 2?20????????????????????????? +user.username.length.valid=???????{min}?{max}????? +user.password.not.blank=???????? +user.password.length.valid=?????????{min}?{max}????? +user.password.not.valid=* 5-50??? +user.email.not.valid=?????? +user.email.not.blank=?????? +user.phonenumber.not.blank=????????? +user.mobile.phone.number.not.valid=??????? +user.login.success=???? +user.register.success=???? +user.register.save.error=???? {0} ?????????? +user.register.error=?????????????? +user.notfound=????? +user.forcelogout=????????????? +user.unknown.error=?????????? +auth.grant.type.error=???????? +auth.grant.type.blocked=????????? +auth.grant.type.not.blank=?????????? +auth.clientid.not.blank=?????id???? +##?????? +upload.exceed.maxSize=?????????????????
???????????{0}MB? +upload.filename.exceed.length=????????{0}??? +##?? +no.permission=??????????????????? [{0}] +no.create.permission=????????????????????? [{0}] +no.update.permission=????????????????????? [{0}] +no.delete.permission=????????????????????? [{0}] +no.export.permission=????????????????????? [{0}] +no.view.permission=????????????????????? [{0}] +repeat.submit.message=????????????? +rate.limiter.message=???????????? +sms.code.not.blank=????????? +sms.code.retry.limit.count=?????????{0}? +sms.code.retry.limit.exceed=?????????{0}??????{1}?? +email.code.not.blank=????????? +email.code.retry.limit.count=?????????{0}? +email.code.retry.limit.exceed=?????????{0}??????{1}?? +xcx.code.not.blank=???[code]???? +social.source.not.blank=???????[source]???? +social.code.not.blank=???????[code]???? +social.state.not.blank=???????[state]???? +##?? +tenant.number.not.blank=???????? +tenant.not.exists=???, ?????????????? +tenant.blocked=?????????????????? +tenant.expired=?????????????????? -## 《开合状态》 -openStatus.name0=关闭 -openStatus.name1=开启 -## 《运行状态》 -runStatus.name0=停止中 -runStatus.name1=关闭中 -runStatus.name2=开启中 -runStatus.name11=红外故障 -runStatus.name12=电机运转故障 -runStatus.name13=电机维护故障 -runStatus.name14=设备故障 +## ?????? +openStatus.name0=?? +openStatus.name1=?? +## ?????? +runStatus.name0=??? +runStatus.name1=??? +runStatus.name2=??? +runStatus.name11=???? +runStatus.name12=?????? +runStatus.name13=?????? +runStatus.name14=???? -## 日志状态 -## 《运行状态》 -logStatus.name0=停止中 -logStatus.name1=APP远程关门 -logStatus.name2=APP远程开门 -## 《故障状态》 -logStatus.name10=无异常 -logStatus.name11=红外故障 -logStatus.name12=电机运转故障 -logStatus.name13=电机维护故障 -logStatus.name14=设备故障 -## 《故障状态》 -logStatus.name101=烟雾报警 -logStatus.name102=红外触发报警 -logStatus.name103=电机运行报警 -logStatus.name104=电机维修报警 -logStatus.name105=非APP开门提醒 -logStatus.name106=非APP关门提醒 -logStatus.name107=关门故障报警 -logStatus.name108=开门故障报警 -logStatus.name109=开门运行提醒 -logStatus.name110=关门运行提醒 -logStatus.name111=忘记关门提醒 -logStatus.name112=门体手动开启提醒 -logStatus.name113=半开门运行提醒 -logStatus.name114=门体停止运行提醒 +## ???? +## ?????? +logStatus.name0=??? +logStatus.name1=APP???? +logStatus.name2=APP???? +## ?????? +logStatus.name10=??? +logStatus.name11=???? +logStatus.name12=?????? +logStatus.name13=?????? +logStatus.name14=???? +## ?????? +logStatus.name101=???? +logStatus.name102=??????? +logStatus.name103=?????? +logStatus.name104=?????? +logStatus.name105=?APP?? +logStatus.name106=?APP?? +logStatus.name107=???? +logStatus.name108=???? +logStatus.name109=???? +logStatus.name110=???? +logStatus.name111=???? +logStatus.name112=?????? +logStatus.name113=??? +logStatus.name114=???? -logStatus.name500=离线 -logStatus.name501=在线 +logStatus.name500=?? +logStatus.name501=?? -message.fault.device.notfound = 设备不存在 +message.fault.device.notfound = ????? #====== app ========= -##《登录》login -login.name0=登录 -login.name1=请输入账号 -login.name2=请输入密码 -login.name3=我已阅读并同意签署 -login.name4=立即注册 -login.name5=支持邮箱登录 -login.name6=服务协议 -login.name7=隐私政策 -login.name8=忘记密码 -login.name9=请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。你可阅读 -login.name10=和 -login.name11=了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。 -login.name12=不同意并退出 -login.name13=同意 -login.name14=请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。你可阅读 -##《注册》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=请选择 -homepage.name11=全部 -homepage.name12=暂无数据 -homepage.name13=设备初始化失败 -##《关门提醒》warningClose -warningClose.name0=关门提醒 -warningClose.name1=设备-deviceName-已开门-num-分钟了,请记得关门 -warningClose.name2=设备 -warningClose.name3=已开门 -warningClose.name4=分钟了,请记得关门 -warningClose.name5=关门 -warningClose.name6=我知道了 -warningClose.name7=是否关门? -warningClose.name8=关门中…… -warningClose.name9=开门中…… -warningClose.name10=已暂停 -##《添加设备》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=占位,不需要翻译 -detail.name13=倒计时重置 -detail.name14=运行次数 -detail.name15=操作次数 -detail.name16=数据日志 -detail.name17=清码 -detail.name18=对码 -detail.name19=开门设置 -detail.name20=已打开 -detail.name21=占位,不需要翻译; -detail.name22=占位,不需要翻译; -detail.name23=灯 -detail.name24=LED灯关闭倒计时 -detail.name25=半开门管理 -detail.name26=设备分享 -detail.name27=分钟 -detail.name28=小时 -detail.name29=半门高度设置 -##《倒计时设置》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=对码失败请重试 -checkcode.name4=已匹配遥控器数量 -##《清码》clearcode -clearcode.name0=清码 -clearcode.name1=请输入登录密码 -clearcode.name2=请输入登录密码才能进行设备清码 -clearcode.name3=取消 -clearcode.name4=确认 -clearcode.name5=密码错误请重试 -clearcode.name6=清码中 +##????login +login.name0=?? +login.name1=????? +login.name2=????? +login.name3=????????? +login.name4=???? +login.name5=?????? +login.name6=???? +login.name7=???? +login.name8=???? +login.name9=????????????????????????????????????????????????????????????????????????????????????? +login.name10=? +login.name11=?????????????????????????????? +login.name12=?????? +login.name13=?? +login.name14=????????????????????????????????????????????????????????????????????????????????????? +##????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=??? +homepage.name11=?? +homepage.name12=???? +homepage.name13=??????? +##??????warningClose +warningClose.name0=???? +warningClose.name1=??-deviceName-???-num-????????? +warningClose.name2=?? +warningClose.name3=??? +warningClose.name4=????????? +warningClose.name5=?? +warningClose.name6=???? +warningClose.name7=????? +warningClose.name8=????? +warningClose.name9=????? +warningClose.name10=??? +##??????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=???????? +detail.name13=????? +detail.name14=???? +detail.name15=???? +detail.name16=???? +detail.name17=?? +detail.name18=?? +detail.name19=???? +detail.name20=??? +detail.name21=????????? +detail.name22=????????? +detail.name23=? +detail.name24=LED?????? +detail.name25=????? +detail.name26=???? +detail.name27=?? +detail.name28=?? +detail.name29=?????? +##???????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=??????? +checkcode.name4=???????? +##????clearcode +clearcode.name0=?? +clearcode.name1=??????? +clearcode.name2=??????????????? +clearcode.name3=?? +clearcode.name4=?? +clearcode.name5=??????? +clearcode.name6=??? -##《设备掉线详情》offDetail -offDetail.name0=详情 -offDetail.name1=设备已离线 +##????????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=启动自动开门功能,需要先打开红外保护感应功能 -set.name23=设备删除成功,正在跳转首页…… -set.name24=设备版本号 -set.name25=确认升级 -set.name26=更换WiFi -set.name27=已连接WiFi -set.name28=当前设备版本号 -set.name29=发现设备新版本 -set.name30=版本升级中…… -set.name31=更新 -set.name32=当前版本为最新版本 +##???-???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=?????????????????????? +set.name23=??????????????? +set.name24=????? +set.name25=???? +set.name26=??WiFi +set.name27=???WiFi +set.name28=??????? +set.name29=??????? +set.name30=??????? +set.name31=?? +set.name32=????????? -##《通用》setCommon -setCommon.detail=详情 -setCommon.add=添加 -setCommon.edit=编辑 -setCommon.delete=删除 -setCommon.alert=提示 -setCommon.cancel=取消 -setCommon.confirm=确认 +##????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”键 -noinit.name19=观察:门会自动开关门运行一遍,电机显示‘||’并自动进入待机状态 -noinit.name20=行程校准完成 +##???????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?? +noinit.name19=????????????????????||?????????? +noinit.name20=?????? -##《修改设备名称》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=取消 +##????????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 = 设备共享后,对方账号也可以访问管理当前账号所有设备,对方不可删除当前账号设备。 +# ??????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 = 设备配网 +# ????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=注销账号 +# ??????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=修改头像 +# ??????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 = 设备共享成功,是否继续共享? -devForm.name7 = 请选择设备 -devForm.name8 = 请选择设备组 -# 《分布管理》distribution -distribution.name0=分布管理 -distribution.name1=默认 -# 《家庭管理》 family -family.name0=家庭管理 -family.name1=我的家 -family.name2=我加入的家庭 -family.name3=个区域 -family.name4=个设备 -family.name5=左滑退出 -# 《成员管理》familyDetail -familyDetail.name0=成员管理 -familyDetail.name1=家庭名称 -familyDetail.name2=我加入的家庭 -familyDetail.name3=提示 -familyDetail.name4=移除当前成员后,对方将不能访问当前家庭进行设备管理! -familyDetail.name5=取消 -familyDetail.name6=确定 -familyDetail.name7=删除 -familyDetail.name8=主人 -familyDetail.name9=左滑移除 +# ??????devForm +devForm.name0 = ???? +devForm.name1 = ????????? +devForm.name2 = ???? +devForm.name3 = ??????????????????????????????????????? +devForm.name4 = ??? +devForm.name5 = ?? +devForm.name6 = ?????????????? +devForm.name7 = ????? +devForm.name8 = ?????? +# ??????distribution +distribution.name0=???? +distribution.name1=?? +# ?????? family +family.name0=???? +family.name1=??? +family.name2=?????? +family.name3=??? +family.name4=??? +family.name5=???? +# ??????familyDetail +familyDetail.name0=???? +familyDetail.name1=???? +familyDetail.name2=?????? +familyDetail.name3=?? +familyDetail.name4=?????????????????????????? +familyDetail.name5=?? +familyDetail.name6=?? +familyDetail.name7=?? +familyDetail.name8=?? +familyDetail.name9=???? -# 《设置语言》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=1. 请保持设备处于通电状态 -ble.name61=点击,下一步,按提示输入信息,开始配网。 -ble.name62=提示:输入wifi密码 -ble.name63=提示:开始配网 -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”,设备进入待机装填; -ble.name72=返回首页 -ble.name73=设备初始化成功,是否修改设备名字? +# ??????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=1. ??????????? +ble.name61=???????????????????? +ble.name62=?????wifi?? +ble.name63=??????? +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??????????? +ble.name72=???? +ble.name73=????????????????? -email.name0=登录验证码 -email.name1=您本次验证码为 -email.name2=有效性为 -email.name3=分钟,请尽快填写。 -protocol.user=当您申请用户时,表示您已经同意遵守本规章。
欢迎您加入本站点参与交流和讨论,本站点为社区,为维护网上公共秩序和社会稳定,请您自觉遵守以下条款:
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播下列信息:
(一)煽动抗拒、破坏宪法和法律、行政法规实施的;
(二)煽动颠覆国家政权,推翻社会主义制度的;
(三)煽动分裂国家、破坏国家统一的;
(四)煽动民族仇恨、民族歧视,破坏民族团结的;
(五)捏造或者歪曲事实,散布谣言,扰乱社会秩序的;
(六)宣扬封建迷信、淫秽、色情、赌博、暴力、凶杀、恐怖、教唆犯罪的;
(七)公然侮辱他人或者捏造事实诽谤他人的,或者进行其他恶意攻击的;
(八)损害国家机关信誉的;
(九)其他违反宪法和法律行政法规的;
(十)进行商业广告行为的。
二、互相尊重,对自己的言论和行为负责。
三、禁止在申请用户时使用相关本站的词汇,或是带有侮辱、毁谤、造谣类的或是有其含义的各种语言进行注册用户,否则我们会将其删除。
四、禁止以任何方式对本站进行各种破坏行为。
五、如果您有违反国家相关法律法规的行为,本站概不负责,您的登录信息均被记录无疑,必要时,我们会向相关的国家管理部门提供此类信息。 -protocol.personal=无锡莫克科技有限公司(以下简称为“本应用”或“我们”或“MOC”)致力于保护你的个人隐私。
请仔细阅读本隐私声明,使用我们的任何服务,即表示您同意按照本隐私政策中的任何条款。
本应用尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,本应用不会将这些信息对外披露或向第三方提供。本应用会不时更新本隐私权政策。 您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐私权政策属于本应用服务使用协议不可分割的一部分。
1. 适用范围

a) 在您注册本应用帐号时,您根据本应用要求提供的个人注册信息;

b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和手机上的信息,包括但不限于您的IP地址、浏览器的类型、使用的语言、访问日期和时间、软硬件特征信息及您需求的网页记录等数据;

c) 本应用通过合法途径从商业伙伴处取得的用户个人数据。
您了解并同意,以下信息不适用本隐私权政策:

a) 您在使用本应用平台提供的搜索服务时输入的关键字信息;

b) 本应用收集到的您在本应用发布的有关信息数据,包括但不限于参与活动、成交信息及评价详情;

c) 违反法律规定或违反本应用规则行为及本应用已对您采取的措施。
2. 信息使用:

a) 本应用不会向任何无关第三方提供、出售、出租、分享或交易您的个人信息,除非事先得到您的许可,或该第三方和本应用(含本应用关联公司)单独或共同为您提供服务,且在该服务结束后,其将被禁止访问包括其以前能够访问的所有这些资料。

b) 本应用亦不允许任何第三方以任何手段收集、编辑、出售或者无偿传播您的个人信息。任何本应用平台用户如从事上述活动,一经发现,本应用有权立即终止与该用户的服务协议。

c) 为服务用户的目的,本应用可能通过使用您的个人信息,向您提供您感兴趣的信息,包括但不限于向您发出产品和服务信息,或者与本应用合作伙伴共享信息以便他们向您发送有关其产品和服务的信息(后者需要您的事先同意)。
3. 信息披露

在如下情况下,本应用将依据您的个人意愿或法律的规定全部或部分的披露您的个人信息:

a) 经您事先同意,向第三方披露;

b) 为提供您所要求的产品和服务,而必须和第三方分享您的个人信息;
c) 根据法律的有关规定,或者行政或司法机构的要求,向第三方或者行政、司法机构披露;

d) 如您出现违反中国有关法律、法规或者本应用服务协议或相关规则的情况,需要向第三方披露;

e) 如您是适格的知识产权投诉人并已提起投诉,应被投诉人要求,向被投诉人披露,以便双方处理可能的权利纠纷;

f) 在本应用平台上创建的某一交易中,如交易任何一方履行或部分履行了交易义务并提出信息披露请求的,本应用有权决定向该用户提供其交易对方的联络方式等必要信息,以促成交易的完成或纠纷的解决。

g) 其它本应用根据法律、法规或者网站政策认为合适的披露。
4. 信息存储和交换
本应用收集的有关您的信息和资料将保存在本应用及(或)其关联公司的服务器上,这些信息和资料可能传送至您所在国家、地区或本应用收集信息和资料所在地的境外并在境外被访问、存储和展示。
5. Cookie的使用
a) 在您未拒绝接受cookies的情况下,本应用会在您的计算机上设定或取用cookies ,以便您能登录或使用依赖于cookies的本应用平台服务或功能。本应用使用cookies可为您提供更加周到的个性化服务,包括推广服务。
b) 您有权选择接受或拒绝接受cookies。您可以通过修改浏览器设置的方式拒绝接受cookies。但如果您选择拒绝接受cookies,则您可能无法登录或使用依赖于cookies的本应用网络服务或功能。

c) 通过本应用所设cookies所取得的有关信息,将适用本政策。
6. 信息安全
a) 本应用帐号均有安全保护功能,请妥善保管您的用户名及密码信息。本应用将通过对用户密码进行加密等安全措施确保您的信息不丢失,不被滥用和变造。尽管有前述安全措施,但同时也请您注意在信息网络上不存在“完善的安全措施”。
b) 在使用本应用网络服务进行网上交易时,您不可避免的要向交易对方或潜在的交易对方披露自己的个人信息,如联络方式或者邮政地址。请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。如您发现自己的个人信息泄密,尤其是本应用用户名及密码发生泄露,请您立即联络本应用客服,以便本应用采取相应措施。
7. 儿童隐私
保护儿童的隐私对我们很重要。 我们不会将我们的网站或应用程序定向给 13 岁以下(或 16 岁,在法律适用的情况下)的儿童,也不会在知情的情况下从他们那里收集任何个人数据。 如果我们得知儿童向网站或应用程序提供了个人身份信息,我们将尽合理努力从此类网站或应用程序的文件中删除此类信息。
8. 数据安全
我们已采取某些物理、管理和技术措施来保护我们从客户以及网站和应用程序访问者处收集的信息以及关于这些信息的信息。 虽然我们尽一切合理努力帮助确保我们的网络和系统的完整性和安全性,但我们无法保证我们的安全措施。
9.联系信息
我们希望本隐私声明能够回答您关于我们收集、使用和披露您的个人数据的问题。 如果您对本隐私声明或此处描述的做法有其他疑问,您可以通过以下方式联系我们:
无锡莫克科技有限公司
电话:+86 0510 88553132
邮箱:aioc-service@mocdoor.com
10.本隐私声明的修订
本应用保留自行决定随时更改、修改、添加、删除或以其他方式修订本隐私声明部分内容的权利。 如果我们这样做,我们将通过包含一份旧版隐私声明的副本,让您了解网站或应用程序的更改。 本隐私声明的最后修订日期显示在页面顶部。 您在发布这些条款的更改后继续使用本网站或应用程序即表示您接受这些更改。 如果我们以重大方式更改本隐私声明,我们将向您提供适当的通知。 +email.name0=????? +email.name1=??????? +email.name2=???? +email.name3=????????? +protocol.user=?????????????????????
?????????????????????????????????????????????????
?????????????????????????????????????????????????????????????
????????????????????????
??????????????????????
??????????????????
???????????????????????
?????????????????????????
??????????????????????????????????
?????????????????????????????????
????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? +protocol.personal=????????????????????????????MOC??????????????
?????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?????????????????????????????????????????????????????????????
1. ?????
a) ??????????????????????????????
b) ????????????????????????????????????????????????????????IP?????????????????????????????????????????????
c) ?????????????????????????
??????????????????????
a) ???????????????????????????
b) ????????????????????????????????????????????
c) ?????????????????????????????
2. ??????
a) ??????????????????????????????????????????????????????????????????????????????????????????????????????????????
b) ????????????????????????????????????????????????????????????????????????????????
c) ?????????????????????????????????????????????????????????????????????????????????????????????????????
3. ?????
?????????????????????????????????????????
a) ???????????????
b) ??????????????????????????????
c) ????????????????????????????????????????
d) ???????????????????????????????????????????
e) ???????????????????????????????????????????????????
f) ???????????????????????????????????????????????????????????????????????????????????????????
g) ??????????????????????????
4. ????????????????????????????????????????????????????????????????????????????????????????????????
5. Cookie???
a) ???????cookies?????????????????????cookies ?????????????cookies?????????????????cookies???????????????????????
b) ????????????cookies????????????????????cookies???????????cookies???????????????cookies?????????????
c) ???????cookies????????????????
6. ????
a) ?????????????????????????????????????????????????????????????????????????????????????????????????????????
b) ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
7. ????
????????????????????????????????13?????16???????????????????????????????????????? ???????????????????????????????????????????????????????
8. ????
??????????????????????????????????????????????????????????????????????????????????????????????????????
9.????
?????????????????????????????????????????????????????????????????????????
??????????
???+86 0510 88553132
???aioc-service@mocdoor.com
10.????????
??????????????????????????????????????????? ?????????????????????????????????????????? ???????????????????? ??????????????????????????????????? ?????????????????????????????? From 8fc258e8c766f38ec2174b5e550af888f78e0287 Mon Sep 17 00:00:00 2001 From: zzc <1278921369@qq.com> Date: Mon, 6 Jan 2025 00:38:40 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E5=A4=9A=E8=AF=AD=E8=A8=80=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/i18n/messages_zh_CN.properties | 1016 ++++++++--------- 1 file changed, 508 insertions(+), 508 deletions(-) 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 e73c44127..5fcc13c5c 100644 --- a/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties +++ b/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties @@ -1,528 +1,528 @@ -#???? -not.null=* ???? -user.jcaptcha.error=????? -user.jcaptcha.expire=?????? -user.not.exists=???, ?????{0} ???. -user.password.not.match=?????/???? -user.password.retry.limit.count=??????{0}? -user.password.retry.limit.exceed=??????{0}??????{1}?? -user.password.delete=?????????{0} ???? -user.blocked=?????????{0} ?????????? -role.blocked=???????????? -user.logout.success=???? -length.not.valid=?????{min}?{max}????? -user.username.not.blank=??????? -user.username.not.valid=* 2?20????????????????????????? -user.username.length.valid=???????{min}?{max}????? -user.password.not.blank=???????? -user.password.length.valid=?????????{min}?{max}????? -user.password.not.valid=* 5-50??? -user.email.not.valid=?????? -user.email.not.blank=?????? -user.phonenumber.not.blank=????????? -user.mobile.phone.number.not.valid=??????? -user.login.success=???? -user.register.success=???? -user.register.save.error=???? {0} ?????????? -user.register.error=?????????????? -user.notfound=????? -user.forcelogout=????????????? -user.unknown.error=?????????? -auth.grant.type.error=???????? -auth.grant.type.blocked=????????? -auth.grant.type.not.blank=?????????? -auth.clientid.not.blank=?????id???? -##?????? -upload.exceed.maxSize=?????????????????
???????????{0}MB? -upload.filename.exceed.length=????????{0}??? -##?? -no.permission=??????????????????? [{0}] -no.create.permission=????????????????????? [{0}] -no.update.permission=????????????????????? [{0}] -no.delete.permission=????????????????????? [{0}] -no.export.permission=????????????????????? [{0}] -no.view.permission=????????????????????? [{0}] -repeat.submit.message=????????????? -rate.limiter.message=???????????? -sms.code.not.blank=????????? -sms.code.retry.limit.count=?????????{0}? -sms.code.retry.limit.exceed=?????????{0}??????{1}?? -email.code.not.blank=????????? -email.code.retry.limit.count=?????????{0}? -email.code.retry.limit.exceed=?????????{0}??????{1}?? -xcx.code.not.blank=???[code]???? -social.source.not.blank=???????[source]???? -social.code.not.blank=???????[code]???? -social.state.not.blank=???????[state]???? -##?? -tenant.number.not.blank=???????? -tenant.not.exists=???, ?????????????? -tenant.blocked=?????????????????? -tenant.expired=?????????????????? +#错误消息 +not.null=* 必须填写 +user.jcaptcha.error=验证码错误 +user.jcaptcha.expire=验证码已失效 +user.not.exists=对不起, 您的账号:{0} 不存在. +user.password.not.match=用户不存在/密码错误 +user.password.retry.limit.count=密码输入错误{0}次 +user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定{1}分钟 +user.password.delete=对不起,您的账号:{0} 已被删除 +user.blocked=对不起,您的账号:{0} 已禁用,请联系管理员 +role.blocked=角色已封禁,请联系管理员 +user.logout.success=退出成功 +length.not.valid=长度必须在{min}到{max}个字符之间 +user.username.not.blank=用户名不能为空 +user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头 +user.username.length.valid=账户长度必须在{min}到{max}个字符之间 +user.password.not.blank=用户密码不能为空 +user.password.length.valid=用户密码长度必须在{min}到{max}个字符之间 +user.password.not.valid=* 5-50个字符 +user.email.not.valid=邮箱格式错误 +user.email.not.blank=邮箱不能为空 +user.phonenumber.not.blank=用户手机号不能为空 +user.mobile.phone.number.not.valid=手机号格式错误 +user.login.success=登录成功 +user.register.success=注册成功 +user.register.save.error=保存用户 {0} 失败,注册账号已存在 +user.register.error=注册失败,请联系系统管理人员 +user.notfound=请重新登录 +user.forcelogout=管理员强制退出,请重新登录 +user.unknown.error=未知错误,请重新登录 +auth.grant.type.error=认证权限类型错误 +auth.grant.type.blocked=认证权限类型已禁用 +auth.grant.type.not.blank=认证权限类型不能为空 +auth.clientid.not.blank=认证客户端id不能为空 +##文件上传消息 +upload.exceed.maxSize=上传的文件大小超出限制的文件大小!
允许的文件最大大小是:{0}MB! +upload.filename.exceed.length=上传的文件名最长{0}个字符 +##权限 +no.permission=您没有数据的权限,请联系管理员添加权限 [{0}] +no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}] +no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}] +no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}] +no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}] +no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}] +repeat.submit.message=不允许重复提交,请稍候再试 +rate.limiter.message=访问过于频繁,请稍候再试 +sms.code.not.blank=短信验证码不能为空 +sms.code.retry.limit.count=短信验证码输入错误{0}次 +sms.code.retry.limit.exceed=短信验证码输入错误{0}次,帐户锁定{1}分钟 +email.code.not.blank=邮箱验证码不能为空 +email.code.retry.limit.count=邮箱验证码输入错误{0}次 +email.code.retry.limit.exceed=邮箱验证码输入错误{0}次,帐户锁定{1}分钟 +xcx.code.not.blank=小程序[code]不能为空 +social.source.not.blank=第三方登录平台[source]不能为空 +social.code.not.blank=第三方登录平台[code]不能为空 +social.state.not.blank=第三方登录平台[state]不能为空 +##租户 +tenant.number.not.blank=租户编号不能为空 +tenant.not.exists=对不起, 您的租户不存在,请联系管理员 +tenant.blocked=对不起,您的租户已禁用,请联系管理员 +tenant.expired=对不起,您的租户已过期,请联系管理员 -## ?????? -openStatus.name0=?? -openStatus.name1=?? -## ?????? -runStatus.name0=??? -runStatus.name1=??? -runStatus.name2=??? -runStatus.name11=???? -runStatus.name12=?????? -runStatus.name13=?????? -runStatus.name14=???? +## 《开合状态》 +openStatus.name0=关闭 +openStatus.name1=开启 +## 《运行状态》 +runStatus.name0=停止中 +runStatus.name1=关闭中 +runStatus.name2=开启中 +runStatus.name11=红外故障 +runStatus.name12=电机运转故障 +runStatus.name13=电机维护故障 +runStatus.name14=设备故障 -## ???? -## ?????? -logStatus.name0=??? -logStatus.name1=APP???? -logStatus.name2=APP???? -## ?????? -logStatus.name10=??? -logStatus.name11=???? -logStatus.name12=?????? -logStatus.name13=?????? -logStatus.name14=???? -## ?????? -logStatus.name101=???? -logStatus.name102=??????? -logStatus.name103=?????? -logStatus.name104=?????? -logStatus.name105=?APP?? -logStatus.name106=?APP?? -logStatus.name107=???? -logStatus.name108=???? -logStatus.name109=???? -logStatus.name110=???? -logStatus.name111=???? -logStatus.name112=?????? -logStatus.name113=??? -logStatus.name114=???? +## 日志状态 +## 《运行状态》 +logStatus.name0=停止中 +logStatus.name1=APP远程关门 +logStatus.name2=APP远程开门 +## 《故障状态》 +logStatus.name10=无异常 +logStatus.name11=红外故障 +logStatus.name12=电机运转故障 +logStatus.name13=电机维护故障 +logStatus.name14=设备故障 +## 《故障状态》 +logStatus.name101=烟雾报警 +logStatus.name102=红外保护被触发 +logStatus.name103=电机运转报警 +logStatus.name104=电机维修报警 +logStatus.name105=非APP开门 +logStatus.name106=非APP关门 +logStatus.name107=关门故障 +logStatus.name108=开门故障 +logStatus.name109=开门运行 +logStatus.name110=关门运行 +logStatus.name111=忘记关门 +logStatus.name112=门被手动打开 +logStatus.name113=半开门 +logStatus.name114=门体停止 -logStatus.name500=?? -logStatus.name501=?? +logStatus.name500=离线 +logStatus.name501=在线 -message.fault.device.notfound = ????? +message.fault.device.notfound = 设备不存在 #====== app ========= -##????login -login.name0=?? -login.name1=????? -login.name2=????? -login.name3=????????? -login.name4=???? -login.name5=?????? -login.name6=???? -login.name7=???? -login.name8=???? -login.name9=????????????????????????????????????????????????????????????????????????????????????? -login.name10=? -login.name11=?????????????????????????????? -login.name12=?????? -login.name13=?? -login.name14=????????????????????????????????????????????????????????????????????????????????????? -##????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=??? -homepage.name11=?? -homepage.name12=???? -homepage.name13=??????? -##??????warningClose -warningClose.name0=???? -warningClose.name1=??-deviceName-???-num-????????? -warningClose.name2=?? -warningClose.name3=??? -warningClose.name4=????????? -warningClose.name5=?? -warningClose.name6=???? -warningClose.name7=????? -warningClose.name8=????? -warningClose.name9=????? -warningClose.name10=??? -##??????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=???????? -detail.name13=????? -detail.name14=???? -detail.name15=???? -detail.name16=???? -detail.name17=?? -detail.name18=?? -detail.name19=???? -detail.name20=??? -detail.name21=????????? -detail.name22=????????? -detail.name23=? -detail.name24=LED?????? -detail.name25=????? -detail.name26=???? -detail.name27=?? -detail.name28=?? -detail.name29=?????? -##???????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=??????? -checkcode.name4=???????? -##????clearcode -clearcode.name0=?? -clearcode.name1=??????? -clearcode.name2=??????????????? -clearcode.name3=?? -clearcode.name4=?? -clearcode.name5=??????? -clearcode.name6=??? +##《登录》login +login.name0=登录 +login.name1=请输入账号 +login.name2=请输入密码 +login.name3=我已阅读并同意签署 +login.name4=立即注册 +login.name5=支持邮箱登录 +login.name6=服务协议 +login.name7=隐私政策 +login.name8=忘记密码 +login.name9=请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。你可阅读 +login.name10=和 +login.name11=了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。 +login.name12=不同意并退出 +login.name13=同意 +login.name14=请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。你可阅读 +##《注册》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=请选择 +homepage.name11=全部 +homepage.name12=暂无数据 +homepage.name13=设备初始化失败 +##《关门提醒》warningClose +warningClose.name0=关门提醒 +warningClose.name1=设备-deviceName-已开门-num-分钟了,请记得关门 +warningClose.name2=设备 +warningClose.name3=已开门 +warningClose.name4=分钟了,请记得关门 +warningClose.name5=关门 +warningClose.name6=我知道了 +warningClose.name7=是否关门? +warningClose.name8=关门中…… +warningClose.name9=开门中…… +warningClose.name10=已暂停 +##《添加设备》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=占位,不需要翻译 +detail.name13=倒计时重置 +detail.name14=运行次数 +detail.name15=操作次数 +detail.name16=数据日志 +detail.name17=清码 +detail.name18=对码 +detail.name19=开门设置 +detail.name20=已打开 +detail.name21=占位,不需要翻译; +detail.name22=占位,不需要翻译; +detail.name23=灯 +detail.name24=LED灯关闭倒计时 +detail.name25=半开门管理 +detail.name26=设备分享 +detail.name27=分钟 +detail.name28=小时 +detail.name29=半门高度设置 +##《倒计时设置》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=对码失败请重试 +checkcode.name4=已匹配遥控器数量 +##《清码》clearcode +clearcode.name0=清码 +clearcode.name1=请输入登录密码 +clearcode.name2=请输入登录密码才能进行设备清码 +clearcode.name3=取消 +clearcode.name4=确认 +clearcode.name5=密码错误请重试 +clearcode.name6=清码中 -##????????offDetail -offDetail.name0=?? -offDetail.name1=????? +##《设备掉线详情》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=?????????????????????? -set.name23=??????????????? -set.name24=????? -set.name25=???? -set.name26=??WiFi -set.name27=???WiFi -set.name28=??????? -set.name29=??????? -set.name30=??????? -set.name31=?? -set.name32=????????? +##《优化-设置》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=启动自动开门功能,需要先打开红外保护感应功能 +set.name23=设备删除成功,正在跳转首页…… +set.name24=设备版本号 +set.name25=确认升级 +set.name26=更换WiFi +set.name27=已连接WiFi +set.name28=当前设备版本号 +set.name29=发现设备新版本 +set.name30=版本升级中…… +set.name31=更新 +set.name32=当前版本为最新版本 -##????setCommon -setCommon.detail=?? -setCommon.add=?? -setCommon.edit=?? -setCommon.delete=?? -setCommon.alert=?? -setCommon.cancel=?? -setCommon.confirm=?? +##《通用》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?? -noinit.name19=????????????????????||?????????? -noinit.name20=?????? +##《未设置详情》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”键 +noinit.name19=观察:门会自动开关门运行一遍,电机显示‘||’并自动进入待机状态 +noinit.name20=行程校准完成 -##????????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=?? +##《修改设备名称》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 = ??????????????????????????????????????? +# 《设备共享》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 = ???? +# 《我的》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=???? +# 《我的账号》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=???? +# 《修改昵称》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 = ?????????????? -devForm.name7 = ????? -devForm.name8 = ?????? -# ??????distribution -distribution.name0=???? -distribution.name1=?? -# ?????? family -family.name0=???? -family.name1=??? -family.name2=?????? -family.name3=??? -family.name4=??? -family.name5=???? -# ??????familyDetail -familyDetail.name0=???? -familyDetail.name1=???? -familyDetail.name2=?????? -familyDetail.name3=?? -familyDetail.name4=?????????????????????????? -familyDetail.name5=?? -familyDetail.name6=?? -familyDetail.name7=?? -familyDetail.name8=?? -familyDetail.name9=???? +# 《设备共享》devForm +devForm.name0 = 设备共享 +devForm.name1 = 请输入对方登录账号 +devForm.name2 = 温馨提示 +devForm.name3 = 设备共享后,对方账号也可以访问管理当前账号所有设备,对方不可删除当前账号设备。 +devForm.name4 = 上一页 +devForm.name5 = 添加 +devForm.name6 = 设备共享成功,是否继续共享? +devForm.name7 = 请选择设备 +devForm.name8 = 请选择设备组 +# 《分布管理》distribution +distribution.name0=分布管理 +distribution.name1=默认 +# 《家庭管理》 family +family.name0=家庭管理 +family.name1=我的家 +family.name2=我加入的家庭 +family.name3=个区域 +family.name4=个设备 +family.name5=左滑退出 +# 《成员管理》familyDetail +familyDetail.name0=成员管理 +familyDetail.name1=家庭名称 +familyDetail.name2=我加入的家庭 +familyDetail.name3=提示 +familyDetail.name4=移除当前成员后,对方将不能访问当前家庭进行设备管理! +familyDetail.name5=取消 +familyDetail.name6=确定 +familyDetail.name7=删除 +familyDetail.name8=主人 +familyDetail.name9=左滑移除 -# ??????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=1. ??????????? -ble.name61=???????????????????? -ble.name62=?????wifi?? -ble.name63=??????? -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??????????? -ble.name72=???? -ble.name73=????????????????? +# 《设置语言》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=1. 请保持设备处于通电状态 +ble.name61=点击,下一步,按提示输入信息,开始配网。 +ble.name62=提示:输入wifi密码 +ble.name63=提示:开始配网 +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”,设备进入待机装填; +ble.name72=返回首页 +ble.name73=设备初始化成功,是否修改设备名字? -email.name0=????? -email.name1=??????? -email.name2=???? -email.name3=????????? -protocol.user=?????????????????????
?????????????????????????????????????????????????
?????????????????????????????????????????????????????????????
????????????????????????
??????????????????????
??????????????????
???????????????????????
?????????????????????????
??????????????????????????????????
?????????????????????????????????
????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? -protocol.personal=????????????????????????????MOC??????????????
?????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?????????????????????????????????????????????????????????????
1. ?????
a) ??????????????????????????????
b) ????????????????????????????????????????????????????????IP?????????????????????????????????????????????
c) ?????????????????????????
??????????????????????
a) ???????????????????????????
b) ????????????????????????????????????????????
c) ?????????????????????????????
2. ??????
a) ??????????????????????????????????????????????????????????????????????????????????????????????????????????????
b) ????????????????????????????????????????????????????????????????????????????????
c) ?????????????????????????????????????????????????????????????????????????????????????????????????????
3. ?????
?????????????????????????????????????????
a) ???????????????
b) ??????????????????????????????
c) ????????????????????????????????????????
d) ???????????????????????????????????????????
e) ???????????????????????????????????????????????????
f) ???????????????????????????????????????????????????????????????????????????????????????????
g) ??????????????????????????
4. ????????????????????????????????????????????????????????????????????????????????????????????????
5. Cookie???
a) ???????cookies?????????????????????cookies ?????????????cookies?????????????????cookies???????????????????????
b) ????????????cookies????????????????????cookies???????????cookies???????????????cookies?????????????
c) ???????cookies????????????????
6. ????
a) ?????????????????????????????????????????????????????????????????????????????????????????????????????????
b) ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
7. ????
????????????????????????????????13?????16???????????????????????????????????????? ???????????????????????????????????????????????????????
8. ????
??????????????????????????????????????????????????????????????????????????????????????????????????????
9.????
?????????????????????????????????????????????????????????????????????????
??????????
???+86 0510 88553132
???aioc-service@mocdoor.com
10.????????
??????????????????????????????????????????? ?????????????????????????????????????????? ???????????????????? ??????????????????????????????????? ?????????????????????????????? +email.name0=登录验证码 +email.name1=您本次验证码为 +email.name2=有效性为 +email.name3=分钟,请尽快填写。 +protocol.user=当您申请用户时,表示您已经同意遵守本规章。
欢迎您加入本站点参与交流和讨论,本站点为社区,为维护网上公共秩序和社会稳定,请您自觉遵守以下条款:
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播下列信息:
(一)煽动抗拒、破坏宪法和法律、行政法规实施的;
(二)煽动颠覆国家政权,推翻社会主义制度的;
(三)煽动分裂国家、破坏国家统一的;
(四)煽动民族仇恨、民族歧视,破坏民族团结的;
(五)捏造或者歪曲事实,散布谣言,扰乱社会秩序的;
(六)宣扬封建迷信、淫秽、色情、赌博、暴力、凶杀、恐怖、教唆犯罪的;
(七)公然侮辱他人或者捏造事实诽谤他人的,或者进行其他恶意攻击的;
(八)损害国家机关信誉的;
(九)其他违反宪法和法律行政法规的;
(十)进行商业广告行为的。
二、互相尊重,对自己的言论和行为负责。
三、禁止在申请用户时使用相关本站的词汇,或是带有侮辱、毁谤、造谣类的或是有其含义的各种语言进行注册用户,否则我们会将其删除。
四、禁止以任何方式对本站进行各种破坏行为。
五、如果您有违反国家相关法律法规的行为,本站概不负责,您的登录信息均被记录无疑,必要时,我们会向相关的国家管理部门提供此类信息。 +protocol.personal=无锡莫克科技有限公司(以下简称为“本应用”或“我们”或“MOC”)致力于保护你的个人隐私。
请仔细阅读本隐私声明,使用我们的任何服务,即表示您同意按照本隐私政策中的任何条款。
本应用尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,本应用不会将这些信息对外披露或向第三方提供。本应用会不时更新本隐私权政策。 您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐私权政策属于本应用服务使用协议不可分割的一部分。
1. 适用范围

a) 在您注册本应用帐号时,您根据本应用要求提供的个人注册信息;

b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和手机上的信息,包括但不限于您的IP地址、浏览器的类型、使用的语言、访问日期和时间、软硬件特征信息及您需求的网页记录等数据;

c) 本应用通过合法途径从商业伙伴处取得的用户个人数据。
您了解并同意,以下信息不适用本隐私权政策:

a) 您在使用本应用平台提供的搜索服务时输入的关键字信息;

b) 本应用收集到的您在本应用发布的有关信息数据,包括但不限于参与活动、成交信息及评价详情;

c) 违反法律规定或违反本应用规则行为及本应用已对您采取的措施。
2. 信息使用:

a) 本应用不会向任何无关第三方提供、出售、出租、分享或交易您的个人信息,除非事先得到您的许可,或该第三方和本应用(含本应用关联公司)单独或共同为您提供服务,且在该服务结束后,其将被禁止访问包括其以前能够访问的所有这些资料。

b) 本应用亦不允许任何第三方以任何手段收集、编辑、出售或者无偿传播您的个人信息。任何本应用平台用户如从事上述活动,一经发现,本应用有权立即终止与该用户的服务协议。

c) 为服务用户的目的,本应用可能通过使用您的个人信息,向您提供您感兴趣的信息,包括但不限于向您发出产品和服务信息,或者与本应用合作伙伴共享信息以便他们向您发送有关其产品和服务的信息(后者需要您的事先同意)。
3. 信息披露

在如下情况下,本应用将依据您的个人意愿或法律的规定全部或部分的披露您的个人信息:

a) 经您事先同意,向第三方披露;

b) 为提供您所要求的产品和服务,而必须和第三方分享您的个人信息;
c) 根据法律的有关规定,或者行政或司法机构的要求,向第三方或者行政、司法机构披露;

d) 如您出现违反中国有关法律、法规或者本应用服务协议或相关规则的情况,需要向第三方披露;

e) 如您是适格的知识产权投诉人并已提起投诉,应被投诉人要求,向被投诉人披露,以便双方处理可能的权利纠纷;

f) 在本应用平台上创建的某一交易中,如交易任何一方履行或部分履行了交易义务并提出信息披露请求的,本应用有权决定向该用户提供其交易对方的联络方式等必要信息,以促成交易的完成或纠纷的解决。

g) 其它本应用根据法律、法规或者网站政策认为合适的披露。
4. 信息存储和交换
本应用收集的有关您的信息和资料将保存在本应用及(或)其关联公司的服务器上,这些信息和资料可能传送至您所在国家、地区或本应用收集信息和资料所在地的境外并在境外被访问、存储和展示。
5. Cookie的使用
a) 在您未拒绝接受cookies的情况下,本应用会在您的计算机上设定或取用cookies ,以便您能登录或使用依赖于cookies的本应用平台服务或功能。本应用使用cookies可为您提供更加周到的个性化服务,包括推广服务。
b) 您有权选择接受或拒绝接受cookies。您可以通过修改浏览器设置的方式拒绝接受cookies。但如果您选择拒绝接受cookies,则您可能无法登录或使用依赖于cookies的本应用网络服务或功能。

c) 通过本应用所设cookies所取得的有关信息,将适用本政策。
6. 信息安全
a) 本应用帐号均有安全保护功能,请妥善保管您的用户名及密码信息。本应用将通过对用户密码进行加密等安全措施确保您的信息不丢失,不被滥用和变造。尽管有前述安全措施,但同时也请您注意在信息网络上不存在“完善的安全措施”。
b) 在使用本应用网络服务进行网上交易时,您不可避免的要向交易对方或潜在的交易对方披露自己的个人信息,如联络方式或者邮政地址。请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。如您发现自己的个人信息泄密,尤其是本应用用户名及密码发生泄露,请您立即联络本应用客服,以便本应用采取相应措施。
7. 儿童隐私
保护儿童的隐私对我们很重要。 我们不会将我们的网站或应用程序定向给 13 岁以下(或 16 岁,在法律适用的情况下)的儿童,也不会在知情的情况下从他们那里收集任何个人数据。 如果我们得知儿童向网站或应用程序提供了个人身份信息,我们将尽合理努力从此类网站或应用程序的文件中删除此类信息。
8. 数据安全
我们已采取某些物理、管理和技术措施来保护我们从客户以及网站和应用程序访问者处收集的信息以及关于这些信息的信息。 虽然我们尽一切合理努力帮助确保我们的网络和系统的完整性和安全性,但我们无法保证我们的安全措施。
9.联系信息
我们希望本隐私声明能够回答您关于我们收集、使用和披露您的个人数据的问题。 如果您对本隐私声明或此处描述的做法有其他疑问,您可以通过以下方式联系我们:
无锡莫克科技有限公司
电话:+86 0510 88553132
邮箱:aioc-service@mocdoor.com
10.本隐私声明的修订
本应用保留自行决定随时更改、修改、添加、删除或以其他方式修订本隐私声明部分内容的权利。 如果我们这样做,我们将通过包含一份旧版隐私声明的副本,让您了解网站或应用程序的更改。 本隐私声明的最后修订日期显示在页面顶部。 您在发布这些条款的更改后继续使用本网站或应用程序即表示您接受这些更改。 如果我们以重大方式更改本隐私声明,我们将向您提供适当的通知。 From 3f820f20b0510f5723b245d76f53f9039f40a7b4 Mon Sep 17 00:00:00 2001 From: zzc <1278921369@qq.com> Date: Mon, 6 Jan 2025 22:34:02 +0800 Subject: [PATCH 03/10] =?UTF-8?q?iot=E6=97=A5=E5=BF=97=E5=92=8C=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=8F=91=E9=80=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/web/controller/app/EqDeviceController.java | 5 +++-- .../dromara/web/controller/app/EqIotDeviceController.java | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) 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 8c2c7f56f..b8be953cd 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 @@ -284,7 +284,7 @@ public class EqDeviceController extends BaseController { String equipmentName = eqEquipmentLogBo.getEquipmentName(); Integer status = eqEquipmentLogBo.getStatus(); List statusList = Arrays.asList("101", "102", "103", "104", "105", "106", "107", "108", "1", "2", "112", "113"); - if (!statusList.contains(status.toString())) return; + //设备id查询 DeviceByDeviceName deviceByNameDto = iotService.apiTenantDevicesByName(equipmentName);//无信息会抛异常 无需判断 if (deviceByNameDto==null) throw new RuntimeException("设备不存在"); @@ -321,7 +321,8 @@ public class EqDeviceController extends BaseController { eqEquipmentLogBo.setDayOfWeek(dayOfWeek - 1);// Calendar类中星期日为1,星期一为2,依此类推 //更新状态 - if(!(status==0 ||status==108 ||status==109 ||status==110 ||status==111 ||status==112 ||status==113||status==114||status==500||status==501) ) + if (statusList.contains(status.toString()) ) +// if(!(status==0 ||status==108 ||status==109 ||status==110 ||status==111 ||status==112 ||status==113||status==114||status==500||status==501) ) { logService.insertByBo(eqEquipmentLogBo); } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqIotDeviceController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqIotDeviceController.java index 29876e399..9e6bd4bac 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqIotDeviceController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqIotDeviceController.java @@ -141,8 +141,9 @@ public class EqIotDeviceController extends BaseController { */ @SaIgnore @PostMapping("/sendDeviceMsg2") - public void sendDeviceMsg2(@RequestBody EqEquipmentLogBo eqEquipmentLogBo){ - String status = eqEquipmentLogBo.getStatus() + ""; + public void sendDeviceMsg2(@RequestBody EqEquipmentLogBo eqEquipmentLogBo) throws InterruptedException { + Thread.sleep(1000); + /*String status = eqEquipmentLogBo.getStatus() + ""; String statusCache = tokenCache.getIfPresent("status"); if (StringUtils.isEmpty(statusCache)){ tokenCache.put("status",status); @@ -152,7 +153,7 @@ public class EqIotDeviceController extends BaseController { }else{ return; } - } + }*/ String equipmentName = eqEquipmentLogBo.getEquipmentName(); //设备id查询 DeviceByDeviceName deviceByNameDto = iotService.apiTenantDevicesByName(equipmentName);//无信息会抛异常 无需判断 From df70027d5bd443ea9138713a2f4173251c7ec9d6 Mon Sep 17 00:00:00 2001 From: zzc <1278921369@qq.com> Date: Tue, 7 Jan 2025 01:42:22 +0800 Subject: [PATCH 04/10] =?UTF-8?q?iot=E6=97=A5=E5=BF=97=E5=92=8C=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=8F=91=E9=80=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/app/EqIotDeviceController.java | 2 +- .../web/utils/WebSocketBusinessHandler.java | 18 ++++++++++-------- .../common/core/utils/MessageUtils.java | 1 + 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqIotDeviceController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqIotDeviceController.java index 9e6bd4bac..7527dbdce 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqIotDeviceController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqIotDeviceController.java @@ -142,7 +142,7 @@ public class EqIotDeviceController extends BaseController { @SaIgnore @PostMapping("/sendDeviceMsg2") public void sendDeviceMsg2(@RequestBody EqEquipmentLogBo eqEquipmentLogBo) throws InterruptedException { - Thread.sleep(1000); +// Thread.sleep(1000); /*String status = eqEquipmentLogBo.getStatus() + ""; String statusCache = tokenCache.getIfPresent("status"); if (StringUtils.isEmpty(statusCache)){ diff --git a/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java b/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java index b3c06d4c6..517264561 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java @@ -82,14 +82,16 @@ public class WebSocketBusinessHandler implements WebSocketApi { } private void initLanguage(Long userId) { - EqUserConfigBo userConfigBo = new EqUserConfigBo(); - userConfigBo.setUserId(userId); - List eqUserConfigVos = userConfigService.queryList(userConfigBo); - if(!eqUserConfigVos.isEmpty()){ - EqUserConfigVo eqUserConfigVo = eqUserConfigVos.get(0); - String languageType = eqUserConfigVo.getLanguageType(); - String[] languages = languageType.split("_"); - LocaleContextHolder.setDefaultLocale(new Locale(languages[0], languages[1])); + synchronized (this){ + EqUserConfigBo userConfigBo = new EqUserConfigBo(); + userConfigBo.setUserId(userId); + List eqUserConfigVos = userConfigService.queryList(userConfigBo); + if(!eqUserConfigVos.isEmpty()){ + EqUserConfigVo eqUserConfigVo = eqUserConfigVos.get(0); + String languageType = eqUserConfigVo.getLanguageType(); + String[] languages = languageType.split("_"); + LocaleContextHolder.setDefaultLocale(new Locale(languages[0], languages[1])); + } } } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/MessageUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/MessageUtils.java index a11ffb86e..cf10d28b4 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/MessageUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/MessageUtils.java @@ -30,6 +30,7 @@ public class MessageUtils { public static String message(String code, Object... args) { try { Locale locale = LocaleContextHolder.getLocale(); + log.info("获取国际化资源文件: {}~{}", locale.toLanguageTag(), code); // if (locale.toLanguageTag().equals("en")) locale = Locale.CHINA;//zc change with userid because socket I18n return MESSAGE_SOURCE.getMessage(code, args, locale); } catch (NoSuchMessageException e) { From 1241b1cb429da3edfca5931b33e8a2f94a7a8d2f Mon Sep 17 00:00:00 2001 From: zzc <1278921369@qq.com> Date: Tue, 7 Jan 2025 23:42:08 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/web/utils/WebSocketBusinessHandler.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java b/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java index 517264561..b9bc23154 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java @@ -90,7 +90,10 @@ public class WebSocketBusinessHandler implements WebSocketApi { EqUserConfigVo eqUserConfigVo = eqUserConfigVos.get(0); String languageType = eqUserConfigVo.getLanguageType(); String[] languages = languageType.split("_"); - LocaleContextHolder.setDefaultLocale(new Locale(languages[0], languages[1])); +// LocaleContextHolder.setDefaultLocale(new Locale(languages[0], languages[1])); + LocaleContextHolder.setLocale(new Locale(languages[0], languages[1])); + // 从HTTP请求中获取Locale + } } } From fa8208d6a5c961c01cda3b1a5f0828dc815d2bf6 Mon Sep 17 00:00:00 2001 From: zzc <1278921369@qq.com> Date: Wed, 8 Jan 2025 00:50:35 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E8=BF=90=E8=A1=8C=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E7=99=BE=E5=88=86=E6=AF=94=E5=8E=BB=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/web/service/impl/EqEquipmentServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 535665ec9..ad0427269 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 @@ -117,7 +117,7 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { record.setOpenStatusText( telemetryMsg.getOpenPercentage()==0 ?MessageUtils.message("openStatus.name0") - :MessageUtils.message("openStatus.name1")+ telemetryMsg.getOpenPercentage()+"%"); + :MessageUtils.message("openStatus.name1")); //运行状态 record.setRunStatus(garageException ==10?telemetryMsg.getWorkState(): garageException); @@ -321,7 +321,7 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { result.setOpenStatusText( telemetryMsg.getOpenPercentage()==0 ?MessageUtils.message("openStatus.name0") - :MessageUtils.message("openStatus.name1")+ telemetryMsg.getOpenPercentage()+"%"); + :MessageUtils.message("openStatus.name1")); //运行状态 result.setRunStatus(telemetryMsg.getGarageException()==10?telemetryMsg.getWorkState():telemetryMsg.getGarageException()); From 22fd28c89163a891fa1878edc005609bc0e73935 Mon Sep 17 00:00:00 2001 From: zzc <1278921369@qq.com> Date: Sun, 12 Jan 2025 00:59:40 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8F=90=E9=80=81=E5=B9=B6=E5=8F=91=E9=97=AE=E9=A2=98=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/utils/WebSocketBusinessHandler.java | 6 ++- .../handler/PlusWebSocketHandler.java | 48 ++++++++++++++++--- .../websocket/utils/WebSocketUtils.java | 19 ++++---- 3 files changed, 56 insertions(+), 17 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java b/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java index b9bc23154..a81bd7092 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java @@ -78,7 +78,8 @@ public class WebSocketBusinessHandler implements WebSocketApi { // EqEquipmentDetailVo data = deviceMsg.getData(); sendMsg = JsonUtils.toJsonString(deviceMsg); log.info("socket详情发送:{}",sendMsg); - sendMsg(sendMsg, userId); +// sendMsg(sendMsg, userId); + sendMsg(sendMsg, Long.valueOf("5"+userId.toString().substring(1))); } private void initLanguage(Long userId) { @@ -131,7 +132,8 @@ public class WebSocketBusinessHandler implements WebSocketApi { } sendMsg = isTure? JsonUtils.toJsonString(list):sendMsg; log.info("socket列表发送:{}",sendMsg); - sendMsg(sendMsg, userId); +// sendMsg(sendMsg, userId); + sendMsg(sendMsg, Long.valueOf("6"+userId.toString().substring(1))); } diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java index 0bac99464..39e2c8c4c 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java @@ -37,13 +37,23 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { log.info("[connect] invalid token received. sessionId: {}", session.getId()); return; } - WebSocketSessionHolder.addSession(loginUser.getUserId(), session); - log.info("[connect] sessionId: {},userId:{},userType:{}", session.getId(), loginUser.getUserId(), loginUser.getUserType()); + String currentPath = session.getUri().getPath(); + Long userId = loginUser.getUserId(); + if (currentPath.contains(WebSocketConstants.detail)){ + WebSocketSessionHolder.addSession(Long.valueOf("5"+userId.toString().substring(1) ), session); + }else if (currentPath.contains(WebSocketConstants.list)){ + WebSocketSessionHolder.addSession(Long.valueOf("6"+userId.toString().substring(1)), session); + }else{ + WebSocketSessionHolder.addSession(userId, session); + } + + log.info("[connect] sessionId: {},userId:{},userType:{}", session.getId(), userId, loginUser.getUserType()); } @Autowired WebSocketApi webSocketApi; + /** * 处理接收到的文本消息 * @@ -57,10 +67,10 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { log.info("socket:接受到消息 {}", message.getPayload()); LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY); String currentPath = session.getUri().getPath(); - String lastPath = WebSocketSessionHolder.getSessions(loginUser.getUserId()).getUri().getPath(); + /*String lastPath = WebSocketSessionHolder.getSessions(loginUser.getUserId()).getUri().getPath(); if (!currentPath.equals(lastPath)){ WebSocketSessionHolder.addSession(loginUser.getUserId(), session); - } + }*/ String payload = message.getPayload(); if (currentPath.contains(WebSocketConstants.detail)){ webSocketApi.dealWithDetailMsg(loginUser, payload); @@ -111,7 +121,11 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { */ @Override public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { + // 当WebSocket发生传输错误时调用,比如网络问题导致连接断开 + // 这里可以认为是客户端断开连接,因为服务端无法主动抛出传输错误 + log.info("websocket连接-网络-客户端断开连接,错误信息:" + exception.getMessage()); log.error("[transport error] sessionId: {} , exception:{}", session.getId(), exception.getMessage()); + super.handleTransportError(session, exception); } /** @@ -121,14 +135,33 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { * @param status 关闭状态信息 */ @Override - public void afterConnectionClosed(WebSocketSession session, CloseStatus status) { + public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY); if (ObjectUtil.isNull(loginUser)) { log.info("[disconnect] invalid token received. sessionId: {}", session.getId()); return; } - WebSocketSessionHolder.removeSession(loginUser.getUserId()); - log.info("[disconnect] sessionId: {},userId:{},userType:{}", session.getId(), loginUser.getUserId(), loginUser.getUserType()); + // 当WebSocket连接关闭时调用 + if (status.equals(CloseStatus.SERVER_ERROR)) { + // 服务端断开连接,比如服务端代码中调用了session.close() + log.info("websocket连接-服务端-断开连接,关闭状态:" + status); + } else { + // 客户端断开连接,比如客户端调用了close方法 + log.info("websocket连接-客户端-断开连接,关闭状态:" + status); + } + super.afterConnectionClosed(session, status); + + String currentPath = session.getUri().getPath(); + Long userId = loginUser.getUserId(); + if (currentPath.contains(WebSocketConstants.detail)){ + WebSocketSessionHolder.removeSession(Long.valueOf("5"+userId.toString().substring(1))); + }else if (currentPath.contains(WebSocketConstants.list)){ + WebSocketSessionHolder.removeSession(Long.valueOf("6"+userId.toString().substring(1))); + }else{ + WebSocketSessionHolder.removeSession(userId); + } +// WebSocketSessionHolder.removeSession(loginUser.getUserId()); + log.info("[disconnect] sessionId: {},userId:{},userType:{}", session.getId(), userId, loginUser.getUserType()); } /** @@ -141,4 +174,5 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { return false; } + } diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java index afe76e06d..8851acfda 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java @@ -106,7 +106,7 @@ public class WebSocketUtils { public static void sendMessage(WebSocketSession session, String message) { sendMessage(session, new TextMessage(message)); } - + private static final Object sessionLock = new Object(); /** * 向指定的WebSocket会话发送WebSocket消息对象 * @@ -114,14 +114,17 @@ public class WebSocketUtils { * @param message 要发送的WebSocket消息对象 */ private static void sendMessage(WebSocketSession session, WebSocketMessage message) { - if (session == null || !session.isOpen()) { - log.warn("[send] session会话已经关闭"); - } else { - try { - session.sendMessage(message); - } catch (IOException e) { - log.error("[send] session({}) 发送消息({}) 异常", session, message, e); + synchronized (sessionLock) { + if (session == null || !session.isOpen()) { + log.warn("[send] session会话已经关闭"); + } else { + try { + session.sendMessage(message); + } catch (IOException e) { + log.error("[send] session({}) 发送消息({}) 异常", session, message, e); + } } } + } } From d0ca7ffdff0b998ece4f5dd92f84ba0ce3c8c975 Mon Sep 17 00:00:00 2001 From: zzc <1278921369@qq.com> Date: Sat, 18 Jan 2025 02:07:43 +0800 Subject: [PATCH 08/10] =?UTF-8?q?websocket=E7=BA=BF=E7=A8=8B=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=8F=8A=E5=8F=91=E9=80=81=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/app/EqIotDeviceController.java | 49 +++--- .../web/domain/vo/EqEquipmentListVo.java | 140 ++++++++++++++++++ .../web/utils/WebSocketBusinessHandler.java | 123 ++++++++++++++- .../handler/PlusWebSocketHandler.java | 19 +-- .../websocket/handler/WebSocketApi.java | 5 +- 5 files changed, 299 insertions(+), 37 deletions(-) create mode 100644 ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentListVo.java diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqIotDeviceController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqIotDeviceController.java index 7527dbdce..254f4ab27 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqIotDeviceController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqIotDeviceController.java @@ -1,49 +1,30 @@ package org.dromara.web.controller.app; import cn.dev33.satoken.annotation.SaIgnore; -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.http.HttpResponse; -import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.lock.annotation.Lock4j; import com.github.benmanes.caffeine.cache.Cache; -import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; import org.dromara.common.core.constant.Constants; -import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.model.LoginUser; -import org.dromara.common.core.exception.ServiceException; -import org.dromara.common.core.utils.MessageUtils; -import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.redis.utils.RedisUtils; -import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.web.core.BaseController; -import org.dromara.common.websocket.dto.WebSocketMessageDto; -import org.dromara.common.websocket.utils.WebSocketUtils; -import org.dromara.system.service.ISysDictTypeService; +import org.dromara.common.websocket.holder.WebSocketSessionHolder; import org.dromara.web.config.LastWebSocketParamDto; import org.dromara.web.device.iot.DeviceByDeviceName; import org.dromara.web.domain.bo.*; import org.dromara.web.domain.vo.*; import org.dromara.web.service.*; import org.dromara.web.utils.WebSocketBusinessHandler; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; +import java.time.Duration; import java.util.*; import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; /** * app iot设备业务 @@ -51,6 +32,7 @@ import java.util.stream.Collectors; * @author Lion Li * @date 2024-07-14 */ +@Log4j2 @Validated @RequiredArgsConstructor @RestController @@ -141,6 +123,7 @@ public class EqIotDeviceController extends BaseController { */ @SaIgnore @PostMapping("/sendDeviceMsg2") + @Lock4j(keys = {"#eqEquipmentLogBo.equipmentName"}, expire = 30000, acquireTimeout = 1000) public void sendDeviceMsg2(@RequestBody EqEquipmentLogBo eqEquipmentLogBo) throws InterruptedException { // Thread.sleep(1000); /*String status = eqEquipmentLogBo.getStatus() + ""; @@ -169,12 +152,28 @@ public class EqIotDeviceController extends BaseController { Long userId = eqEquipmentVo.getUserId(); LoginUser loginUser = new LoginUser(); loginUser.setUserId(userId); + + //小优化 减少不必要查询。 后续可以让设备传设备id 减少iot查询 再通过初始redis来映射userId来减少数据库查询 + if (!WebSocketSessionHolder.existSession(Long.valueOf("5"+userId.toString().substring(1)))&&!WebSocketSessionHolder.existSession(Long.valueOf("6"+userId.toString().substring(1)))){ + log.info("app-Socket-{} 未上线",userId); + return; + } + + LastWebSocketParamDto dto = RedisUtils.getCacheObject(Constants.WEBSOCKET_METHOD+loginUser.getUserId()); String param = JSONObject.toJSONString(dto.getBo()); if (Constants.METHOD_EQ_DETAIL.equals(dto.getMethod())){ - webSocketBusinessHandler.dealWithDetailMsg(loginUser,param); + String redisKey = Constants.METHOD_EQ_DETAIL + userId; + Boolean isSent = RedisUtils.setObjectIfAbsent(redisKey, Constants.METHOD_EQ_DETAIL, Duration.ofMillis(1000)); + if (Boolean.TRUE.equals(isSent)) { + webSocketBusinessHandler.dealWithDetailMsg2(loginUser,param,2); + } }else if (Constants.METHOD_EQ_LIST.equals(dto.getMethod())){ - webSocketBusinessHandler.dealWithListMsg(loginUser,param); + String redisKey = Constants.METHOD_EQ_LIST + userId; + Boolean isSent = RedisUtils.setObjectIfAbsent(redisKey, Constants.METHOD_EQ_LIST, Duration.ofMillis(1000)); + if (Boolean.TRUE.equals(isSent)) { + webSocketBusinessHandler.dealWithListMsg2(loginUser,param,2); + } }else{ System.out.println("无设备信息最新参数"); } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentListVo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentListVo.java new file mode 100644 index 000000000..3da924910 --- /dev/null +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentListVo.java @@ -0,0 +1,140 @@ +package org.dromara.web.domain.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 设备信息视图对象 eq_equipment + * + * @author zzc + * @date 2024-07-19 + */ +@Data +public class EqEquipmentListVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long equipmentId; + + /** + * 分布id + */ + @ExcelProperty(value = "分布id") + private Long areaId; + + /** + * 设备类型 + */ + @ExcelProperty(value = "设备类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "eq_equipment_type") + private Integer type; + + /** + * 登录账号 + */ + @ExcelProperty(value = "登录账号ID") + private Long userId; + + /** + * 设备编码 + */ + @ExcelProperty(value = "设备编码") + private String equipmentCode; + + /** + * 设备名称 + */ + @ExcelProperty(value = "设备名称") + private String equipmentName; + + /** + * 离线状态 + */ + @ExcelProperty(value = "离线状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "eq_line_status") + private Integer lineStatus; + + /** + * //半开门功能开关:关 false + * //半开门功能开关:开 true + */ + private Boolean PartOpenSwitch; + + /** + * 排序 + */ + @ExcelProperty(value = "排序") + private Integer orderNum; + + /** + * 设备状态(开合度) + * 0.已关闭 + * 10.打开10% + * 20.打开20% + * 30.打开30% + * 40.打开40% + * 50.打开50% + * 60.打开60% + * 70.打开70% + * 80.打开80% + * 90.打开90% + * 100.打开100% + */ + @ExcelProperty(value = "设备状态 设备的打开状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "eq_status_type") + private Integer openStatus; + + /** + * 设备状态(开合度) + * 0.已关闭 + * 10.打开10% + * 20.打开20% + * 30.打开30% + * 40.打开40% + * 50.打开50% + * 60.打开60% + * 70.打开70% + * 80.打开80% + * 90.打开90% + * 100.打开100% + * 故障状态 + */ + private String openStatusText; + + /** + * 设备运行状态 + * 0.停止中 stop + * 1.关闭中 closing + * 2.开启中 opening + * 11.红外故障 irException + * 12.电机运转故障 motorRunException + * 13.电机维护故障 motorMaintainException + * 14.设备故障 deviceException + */ + @ExcelProperty(value = "设备状态 设备的打开状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "eq_run_status_type") + private Integer runStatus; + + /** + * 设备运行状态文本 + * 0.停止中 stop + * 1.关闭中 closing + * 2.开启中 openning + * 11.红外故障 irException + * 12.电机运转故障 motorRunException + * 13.电机维护故障 motorMaintainException + * 14.设备故障 deviceException + */ + private String runStatusText; +} diff --git a/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java b/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java index a81bd7092..fa8164fb0 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java @@ -1,6 +1,8 @@ package org.dromara.web.utils; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSON; +import com.baomidou.lock.annotation.Lock4j; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.Constants; import org.dromara.common.core.domain.R; @@ -18,6 +20,7 @@ import org.dromara.web.controller.app.EqHomeController; import org.dromara.web.domain.bo.EqAppHomeBo; import org.dromara.web.domain.bo.EqUserConfigBo; import org.dromara.web.domain.vo.EqEquipmentDetailVo; +import org.dromara.web.domain.vo.EqEquipmentListVo; import org.dromara.web.domain.vo.EqEquipmentVo; import org.dromara.web.domain.vo.EqUserConfigVo; import org.dromara.web.service.IEqUserConfigService; @@ -25,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; import java.util.Locale; @@ -75,6 +79,42 @@ public class WebSocketBusinessHandler implements WebSocketApi { } } +// EqEquipmentDetailVo data = deviceMsg.getData(); + sendMsg = JsonUtils.toJsonString(deviceMsg); + log.info("socket详情发送:{}",sendMsg); +// sendMsg(sendMsg, userId); + sendMsg(sendMsg, Long.valueOf("5"+userId.toString().substring(1))); + } + + @Lock4j(keys = {"#loginUser.userId"}, expire = 2000, acquireTimeout = 1000) + @Override + public void dealWithDetailMsg2(LoginUser loginUser, String msg,int type) { + EqAppHomeBo bo = null; + String sendMsg = ""; + R deviceMsg = null; + boolean isTrue = true; + Long userId = loginUser.getUserId(); + try { + initLanguage(userId); + bo = JSON.parseObject(msg, EqAppHomeBo.class); + LastWebSocketParamDto dto = new LastWebSocketParamDto(); + dto.setMethod(Constants.METHOD_EQ_DETAIL); + dto.setBo(bo); + RedisUtils.setCacheObject(Constants.WEBSOCKET_METHOD+ userId,dto); + } catch (Exception e) { + log.error("参数错误"); + isTrue = false; + deviceMsg = R.fail("参数错误:"+e.getMessage()); + } + if (isTrue){ + try { + deviceMsg = controller.getDeviceMsg(bo); + } catch (Exception e) { + deviceMsg = R.fail("设备详情获取失败:"+e.getMessage()); + log.error("设备详情获取失败"); + } + } + // EqEquipmentDetailVo data = deviceMsg.getData(); sendMsg = JsonUtils.toJsonString(deviceMsg); log.info("socket详情发送:{}",sendMsg); @@ -98,7 +138,6 @@ public class WebSocketBusinessHandler implements WebSocketApi { } } } - @Override public void dealWithListMsg(LoginUser loginUser, String msg) { EqAppHomeBo bo = null; @@ -137,6 +176,88 @@ public class WebSocketBusinessHandler implements WebSocketApi { } + @Lock4j(keys = {"#loginUser.userId"}, expire = 2000, acquireTimeout = 1000) + @Override + public void dealWithListMsg2(LoginUser loginUser, String msg, int type) { + EqAppHomeBo bo = null; + String sendMsg = ""; + boolean isTure = true; + Long userId = loginUser.getUserId(); + try { + initLanguage(userId); + bo = JSON.parseObject(msg, EqAppHomeBo.class); + LastWebSocketParamDto dto = new LastWebSocketParamDto(); + dto.setMethod(Constants.METHOD_EQ_LIST); + dto.setBo(bo); + RedisUtils.setCacheObject(Constants.WEBSOCKET_METHOD + userId,dto); + } catch (Exception e) { + log.error("参数错误"); + sendMsg = "参数错误"; + isTure = false; + } + TableDataInfo list = null; + boolean canSendFlag = false; + if (isTure){ + PageQuery pageQuery = new PageQuery(); + pageQuery.setPageNum(0); + pageQuery.setPageSize(100); + try { + list = homeController.listForWebSocket(bo, pageQuery,loginUser); + if (type == 1){ + canSendFlag = true; + }else{ + String key = userId + "_" + Constants.METHOD_EQ_LIST; + List rows = list.getRows(); + List currentVoList = new ArrayList<>(); + if (rows !=null && !rows.isEmpty()){ + currentVoList = BeanUtil.copyToList(rows, EqEquipmentListVo.class); + if (RedisUtils.hasKey(key)){ + List cacheList = RedisUtils.getCacheList(key); + for (EqEquipmentVo cacheVo : cacheList) { + for (EqEquipmentListVo currentVo : currentVoList) { + if (cacheVo.getEquipmentId().equals(currentVo.getEquipmentId())){ + if ( + !cacheVo.getLineStatus().equals(currentVo.getLineStatus())|| + !cacheVo.getAreaId().equals(currentVo.getAreaId())|| + !cacheVo.getOpenStatus().equals(currentVo.getOpenStatus())|| + !cacheVo.getRunStatus().equals(currentVo.getRunStatus())|| + !cacheVo.getPartOpenSwitch().equals(currentVo.getPartOpenSwitch())|| + !cacheVo.getEquipmentCode().equals(currentVo.getEquipmentCode())|| + !cacheVo.getEquipmentName().equals(currentVo.getEquipmentName())|| + !cacheVo.getUserId().equals(currentVo.getUserId())|| + !cacheVo.getOrderNum().equals(currentVo.getOrderNum()) + ){ + canSendFlag = true; + } + } + } + } + + }else{ + RedisUtils.setCacheList(key,currentVoList); + canSendFlag = true; + } + }else{ + canSendFlag = true; + } + } + } catch (Exception e) { + isTure = false; + sendMsg = "获取设备列表失败"+e.getMessage(); + log.error("获取设备列表失败:{}",e.getMessage()); + } + } + + + if (canSendFlag){ + sendMsg = isTure? JsonUtils.toJsonString(list):sendMsg; + log.info("socket列表发送:{}",sendMsg); + // sendMsg(sendMsg, userId); + sendMsg(sendMsg, Long.valueOf("6"+userId.toString().substring(1))); + } + } + + public void sendMsg(String msg,Long userId){ WebSocketMessageDto dto = new WebSocketMessageDto(); dto.setMessage(msg); diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java index 39e2c8c4c..9b9dc8b71 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java @@ -1,8 +1,6 @@ package org.dromara.common.websocket.handler; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.websocket.constant.WebSocketConstants; @@ -10,11 +8,13 @@ import org.dromara.common.websocket.dto.WebSocketMessageDto; import org.dromara.common.websocket.holder.WebSocketSessionHolder; import org.dromara.common.websocket.utils.WebSocketUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; import org.springframework.web.socket.*; import org.springframework.web.socket.handler.AbstractWebSocketHandler; import java.io.IOException; import java.util.List; +import java.util.Objects; import static org.dromara.common.websocket.constant.WebSocketConstants.LOGIN_USER_KEY; @@ -24,8 +24,10 @@ import static org.dromara.common.websocket.constant.WebSocketConstants.LOGIN_USE * @author zendwang */ @Slf4j +@Service public class PlusWebSocketHandler extends AbstractWebSocketHandler { - + @Autowired + WebSocketApi webSocketApi; /** * 连接成功后 */ @@ -37,7 +39,7 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { log.info("[connect] invalid token received. sessionId: {}", session.getId()); return; } - String currentPath = session.getUri().getPath(); + String currentPath = Objects.requireNonNull(session.getUri()).getPath(); Long userId = loginUser.getUserId(); if (currentPath.contains(WebSocketConstants.detail)){ WebSocketSessionHolder.addSession(Long.valueOf("5"+userId.toString().substring(1) ), session); @@ -50,8 +52,7 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { log.info("[connect] sessionId: {},userId:{},userType:{}", session.getId(), userId, loginUser.getUserType()); } - @Autowired - WebSocketApi webSocketApi; + /** @@ -66,17 +67,17 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { // 从WebSocket会话中获取登录用户信息 log.info("socket:接受到消息 {}", message.getPayload()); LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY); - String currentPath = session.getUri().getPath(); + String currentPath = Objects.requireNonNull(session.getUri()).getPath(); /*String lastPath = WebSocketSessionHolder.getSessions(loginUser.getUserId()).getUri().getPath(); if (!currentPath.equals(lastPath)){ WebSocketSessionHolder.addSession(loginUser.getUserId(), session); }*/ String payload = message.getPayload(); if (currentPath.contains(WebSocketConstants.detail)){ - webSocketApi.dealWithDetailMsg(loginUser, payload); + webSocketApi.dealWithDetailMsg2(loginUser, payload,1); } else if (currentPath.contains(WebSocketConstants.list)) { - webSocketApi.dealWithListMsg(loginUser, payload); + webSocketApi.dealWithListMsg2(loginUser, payload,1); } else { // 创建WebSocket消息DTO对象 diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/WebSocketApi.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/WebSocketApi.java index f201bdc2d..de2c5bfe7 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/WebSocketApi.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/WebSocketApi.java @@ -2,7 +2,6 @@ package org.dromara.common.websocket.handler; import org.dromara.common.core.domain.model.LoginUser; -import org.springframework.stereotype.Service; /** * @ClassName : WebSocketApi @@ -10,8 +9,10 @@ import org.springframework.stereotype.Service; * @Date : 2024/11/16 19:06 * @Description : **/ -@Service +//@Service public interface WebSocketApi { void dealWithDetailMsg(LoginUser loginUser, String msg); + void dealWithDetailMsg2(LoginUser loginUser, String msg,int type); void dealWithListMsg(LoginUser loginUser, String msg); + void dealWithListMsg2(LoginUser loginUser, String msg,int type); } From dc475755d9f6b46d56777317ab1fad48280075a1 Mon Sep 17 00:00:00 2001 From: zzc <1278921369@qq.com> Date: Wed, 26 Feb 2025 23:29:56 +0800 Subject: [PATCH 09/10] =?UTF-8?q?websocket=E7=BA=BF=E7=A8=8B=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=8F=8A=E5=8F=91=E9=80=81=E6=8E=A7=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=8F=8Aota=E7=89=88=E6=9C=AC=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/app/EqDeviceController.java | 3 +++ .../web/service/impl/EqEquipmentServiceImpl.java | 3 ++- .../dromara/web/utils/WebSocketBusinessHandler.java | 11 +++++++---- 3 files changed, 12 insertions(+), 5 deletions(-) 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 b8be953cd..4b79552c4 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 @@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONObject; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; import org.dromara.common.core.constant.Constants; import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.model.LoginUser; @@ -55,6 +56,7 @@ import java.util.stream.Collectors; * @date 2024-07-14 */ @Validated +@Log4j2 @RequiredArgsConstructor @RestController @RequestMapping("/app/device") @@ -131,6 +133,7 @@ public class EqDeviceController extends BaseController { */ @GetMapping("/operate") public R operate(EqDeviceCmdBo bo){ + log.info("设备控制参数 userId:{}, equipmentCode:{}, operateType:{}",bo.getUserId(),bo.getEquipmentCode(),bo.getOperateType()); if (bo.getEquipmentCode() == null) throw new ServiceException("设备编码不能为空"); if (bo.getOperateType() == 0) throw new ServiceException("操作类型不能为0"); if (bo.getUserId() == null) throw new ServiceException("用户ID不能为空"); 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 ad0427269..bdf9baf37 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 @@ -476,7 +476,8 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { eqVersionBo.setCurrentVersion(currentVersion); eqVersionBo.setLatestVersion(null); }else{ - eqVersionBo.setNeedUpdate(true); + if (StringUtils.isBlank(currentVersion)) throw new RuntimeException("设备无当前OTA版本"); + eqVersionBo.setNeedUpdate(currentVersion.equals(lastOtaPackage.getVersion())); eqVersionBo.setCurrentVersion(currentVersion); eqVersionBo.setLatestVersion(lastOtaPackage.getVersion()); } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java b/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java index fa8164fb0..1e8dbbfd9 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/utils/WebSocketBusinessHandler.java @@ -203,6 +203,8 @@ public class WebSocketBusinessHandler implements WebSocketApi { pageQuery.setPageSize(100); try { list = homeController.listForWebSocket(bo, pageQuery,loginUser); + canSendFlag = true; + /* zc 去除去重 if (type == 1){ canSendFlag = true; }else{ @@ -211,9 +213,10 @@ public class WebSocketBusinessHandler implements WebSocketApi { List currentVoList = new ArrayList<>(); if (rows !=null && !rows.isEmpty()){ currentVoList = BeanUtil.copyToList(rows, EqEquipmentListVo.class); + if (RedisUtils.hasKey(key)){ - List cacheList = RedisUtils.getCacheList(key); - for (EqEquipmentVo cacheVo : cacheList) { + List cacheList = RedisUtils.getCacheList(key); + for (EqEquipmentListVo cacheVo : cacheList) { for (EqEquipmentListVo currentVo : currentVoList) { if (cacheVo.getEquipmentId().equals(currentVo.getEquipmentId())){ if ( @@ -232,7 +235,7 @@ public class WebSocketBusinessHandler implements WebSocketApi { } } } - + if (canSendFlag) RedisUtils.setCacheList(key,currentVoList); }else{ RedisUtils.setCacheList(key,currentVoList); canSendFlag = true; @@ -240,7 +243,7 @@ public class WebSocketBusinessHandler implements WebSocketApi { }else{ canSendFlag = true; } - } + }*/ } catch (Exception e) { isTure = false; sendMsg = "获取设备列表失败"+e.getMessage(); From fae6ce6cdf70f0e4b8ec9f02cf73da2469b2bf1a Mon Sep 17 00:00:00 2001 From: zzc <1278921369@qq.com> Date: Wed, 26 Feb 2025 23:51:51 +0800 Subject: [PATCH 10/10] =?UTF-8?q?websocket=E7=BA=BF=E7=A8=8B=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=8F=8A=E5=8F=91=E9=80=81=E6=8E=A7=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=8F=8Aota=E7=89=88=E6=9C=AC=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/web/service/impl/EqEquipmentServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 bdf9baf37..3a9cfd918 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 @@ -477,7 +477,7 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { eqVersionBo.setLatestVersion(null); }else{ if (StringUtils.isBlank(currentVersion)) throw new RuntimeException("设备无当前OTA版本"); - eqVersionBo.setNeedUpdate(currentVersion.equals(lastOtaPackage.getVersion())); + eqVersionBo.setNeedUpdate(!currentVersion.equals(lastOtaPackage.getVersion())); eqVersionBo.setCurrentVersion(currentVersion); eqVersionBo.setLatestVersion(lastOtaPackage.getVersion()); }