diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java index 4ffb2544b..75a25311f 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java @@ -30,14 +30,14 @@ import org.dromara.common.websocket.utils.WebSocketUtils; import org.dromara.system.domain.bo.SysTenantBo; import org.dromara.system.domain.vo.SysClientVo; import org.dromara.system.domain.vo.SysTenantVo; -import org.dromara.system.service.ISysClientService; -import org.dromara.system.service.ISysConfigService; -import org.dromara.system.service.ISysSocialService; -import org.dromara.system.service.ISysTenantService; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.service.*; +import org.dromara.web.domain.bo.EqUserConfigBo; import org.dromara.web.domain.vo.LoginTenantVo; import org.dromara.web.domain.vo.LoginVo; import org.dromara.web.domain.vo.TenantListVo; import org.dromara.web.service.IAuthStrategy; +import org.dromara.web.service.IEqUserConfigService; import org.dromara.web.service.SysLoginService; import org.dromara.web.service.SysRegisterService; import org.springframework.validation.annotation.Validated; @@ -63,6 +63,7 @@ import java.util.concurrent.TimeUnit; @RequestMapping("/auth") public class AuthController { + private final ISysUserService userService; private final SocialProperties socialProperties; private final SysLoginService loginService; private final SysRegisterService registerService; @@ -71,6 +72,7 @@ public class AuthController { private final ISysSocialService socialUserService; private final ISysClientService clientService; private final ScheduledExecutorService scheduledExecutorService; + private final IEqUserConfigService iEqUserConfigService; /** @@ -103,7 +105,7 @@ public class AuthController { Long userId = LoginHelper.getUserId(); scheduledExecutorService.schedule(() -> { WebSocketMessageDto dto = new WebSocketMessageDto(); - dto.setMessage("欢迎登录RuoYi-Vue-Plus后台管理系统"); + dto.setMessage("欢迎登录莫克后台管理系统"); dto.setSessionKeys(List.of(userId)); WebSocketUtils.publishMessage(dto); }, 3, TimeUnit.SECONDS); @@ -185,6 +187,15 @@ public class AuthController { return R.fail("当前系统没有开启注册功能!"); } registerService.register(user); + SysUserVo sysUserVo = userService.selectUserByUserName(user.getUsername()); + EqUserConfigBo bo = new EqUserConfigBo(); + bo.setUserId(sysUserVo.getUserId()); + bo.setLanguageType("zh-CN"); + bo.setTimezoneType("1");//默认 UTC+08:00 + bo.setTimeFormat("YYYY-MM-DD"); + bo.setCreateBy(sysUserVo.getUserId()); + bo.setUpdateBy(sysUserVo.getUserId()); + iEqUserConfigService.insertByBo(bo); return R.ok(); } 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 3b6a20b41..d6814da3d 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java @@ -1,8 +1,12 @@ package org.dromara.web.controller.app; +import cn.hutool.core.collection.CollUtil; +import jakarta.servlet.http.HttpServletRequest; + import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.MessageUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; @@ -19,8 +23,12 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; /** * app 设备业务 @@ -34,6 +42,10 @@ import java.util.Date; @RequestMapping("/app/device") public class EqDeviceController extends BaseController { + private final HttpServletRequest request; + + + private final IEqAreaService eqAreaService; private final IEqEquipmentService eqEquipmentService; @@ -101,13 +113,38 @@ public class EqDeviceController extends BaseController { * 获取日志 * @param bo * @param pageQuery - * @return + * @return todo */ @GetMapping("/getDeviceLogs") - public TableDataInfo getDeviceLogs(EqAppHomeBo bo,PageQuery pageQuery){ + public Map> getDeviceLogs(EqAppHomeBo bo,PageQuery pageQuery){ + if (bo.getEquipmentId() == null) throw new ServiceException("设备ID不能为空"); + if (bo.getZoneId() == null) throw new ServiceException("时区zoneId(如 UTC+08:00)不能为空"); EqEquipmentLogBo eqEquipmentLogBo = new EqEquipmentLogBo(); eqEquipmentLogBo.setEquipmentId(bo.getEquipmentId()); - return logService.queryPageList(eqEquipmentLogBo, pageQuery); + TableDataInfo data = logService.queryPageList(eqEquipmentLogBo, pageQuery); + List rows = data.getRows(); + if (CollUtil.isEmpty(rows)) return new HashMap<>(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String defaultZone = "UTC+08:00"; + String targetZone = bo.getZoneId(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + List rowsData = rows.stream().peek(x -> { + Integer status = x.getStatus(); + x.setLogStatus(MessageUtils.message("logStatus.name" + status)); + if(defaultZone.equals(targetZone)){ + String dateTimeStr = simpleDateFormat.format(x.getCreateTime()); + LocalDateTime localDateTime = LocalDateTime.parse(dateTimeStr, formatter); + ZoneId utc08 = ZoneId.of(defaultZone);// 默认指定原始时区UTC+08:00 + ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, utc08);// 转换为ZonedDateTime对象 + ZoneId utc = ZoneId.of(targetZone); + String targetUtc = formatter.format(zonedDateTime.withZoneSameInstant(utc)); + x.setCreatedYearSecond(targetUtc); + x.setCreatedYearDay(targetUtc.split(" ")[0]); + x.setCreatedYearSecond(targetUtc.split(" ")[1]); + //zc 字典中数据多语言按照录入 + } + }).toList(); + return rowsData.stream().collect(Collectors.groupingBy(EqEquipmentLogVo::getCreatedYearDay)); } /** diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java index 29f261a2e..4da5afafa 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java @@ -4,14 +4,12 @@ import cn.dev33.satoken.secure.BCrypt; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.exception.ServiceException; -import org.dromara.common.core.utils.MessageUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.web.core.BaseController; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.service.ISysUserService; -import org.dromara.web.config.CommonYmlConfig; import org.dromara.web.domain.bo.*; import org.dromara.web.domain.vo.*; import org.dromara.web.service.*; @@ -19,7 +17,6 @@ import org.dromara.web.domain.bo.EqAppHomeBo; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -39,10 +36,17 @@ public class EqHomeController extends BaseController { private final IEqEquipmentService eqEquipmentService; - private final IEqEquipmentLogService logService; - private final IEqShareService shareService; private final ISysUserService userService; + private final IEqUserConfigService eqUserConfigService; + + /** + * 获取用户配置 + */ + @GetMapping("/userConfig") + public R userConfig() { + return R.ok(eqUserConfigService.userConfig()); + } /** * 查询家庭主体 @@ -126,50 +130,7 @@ public class EqHomeController extends BaseController { return R.ok(BCrypt.checkpw(bo.getPassword(), sysUserVo.getPassword())); } -/* - */ -/** todo - * 设备状态实时获取 - * @param bo - * @return - *//* - - @GetMapping("/getDeviceStatus") - public R getDeviceStatus(EqAppHomeBo bo){ - EqEquipmentStatusVo result = new EqEquipmentStatusVo(); - - - return R.ok(result); - } - - - */ -/** - * 获取日志 - * @param bo - * @param pageQuery - * @return - *//* - - @GetMapping("/getDeviceLogs") - public TableDataInfo getDeviceLogs(EqAppHomeBo bo,PageQuery pageQuery){ - EqEquipmentLogBo eqEquipmentLogBo = new EqEquipmentLogBo(); - eqEquipmentLogBo.setEquipmentId(bo.getEquipmentId()); - return logService.queryPageList(eqEquipmentLogBo, pageQuery); - } - - */ -/** - * 保存日志 - * @param eqEquipmentLogBo - *//* - - @GetMapping("/saveDeviceLogs") - public void saveDeviceLogs(EqEquipmentLogBo eqEquipmentLogBo){ - logService.insertByBo(eqEquipmentLogBo); - } -*/ } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/EqUserConfig.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/EqUserConfig.java index 37b57cc6c..5e631d3c8 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/EqUserConfig.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/EqUserConfig.java @@ -35,17 +35,17 @@ public class EqUserConfig extends BaseEntity { /** * 时区类型 */ - private Integer timezoneType; + private String timezoneType; /** * 时间格式 */ - private Integer timeFormat; + private String timeFormat; /** * 语言种类 */ - private Integer languageType; + private String languageType; } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqAppHomeBo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqAppHomeBo.java index d8f20cab3..5f2410cae 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqAppHomeBo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqAppHomeBo.java @@ -36,5 +36,10 @@ public class EqAppHomeBo extends BaseEntity{ * 密码(密码校验时使用) */ private String password; + + /** + * 时区zoneId 用于日志 (传入字典eq_timezone_type 中的remark值 如:UTC+08:00) + */ + private String zoneId; } 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 9f46ad8ee..65befed98 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 @@ -47,7 +47,7 @@ public class EqEquipmentLogBo extends BaseEntity { private String equipmentCode; /** - * 状态 + * 状态 eq_status_log_type * 0.停止中 stop * 1.关闭中 closing * 2.开启中 openning @@ -76,6 +76,8 @@ public class EqEquipmentLogBo extends BaseEntity { @NotNull(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class }) private Integer status; + + /** * 故障状态 * 10.无异常 none @@ -119,6 +121,4 @@ public class EqEquipmentLogBo extends BaseEntity { */ @NotNull(message = "星期几不能为空", groups = { AddGroup.class, EditGroup.class }) private Integer dayOfWeek; - - } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqUserConfigBo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqUserConfigBo.java index c0dddfd92..8918f1573 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqUserConfigBo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqUserConfigBo.java @@ -36,19 +36,19 @@ public class EqUserConfigBo extends BaseEntity { * 时区类型 */ @NotNull(message = "时区类型不能为空", groups = { AddGroup.class, EditGroup.class }) - private Integer timezoneType; + private String timezoneType; /** * 时间格式 */ @NotNull(message = "时间格式不能为空", groups = { AddGroup.class, EditGroup.class }) - private Integer timeFormat; + private String timeFormat; /** * 语言种类 */ @NotNull(message = "语言种类不能为空", groups = { AddGroup.class, EditGroup.class }) - private Integer languageType; + private String languageType; } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentDetailVo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentDetailVo.java index 82b32c278..3736098fa 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentDetailVo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentDetailVo.java @@ -72,6 +72,7 @@ public class EqEquipmentDetailVo implements Serializable { * 80.打开80% * 90.打开90% * 100.打开100% + * 故障状态 */ private String openStatusText; diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentLogVo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentLogVo.java index fd5281d1d..bae46504e 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentLogVo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentLogVo.java @@ -55,12 +55,41 @@ public class EqEquipmentLogVo implements Serializable { private String equipmentCode; /** - * 状态 + * 状态 eq_status_log_type + * 0.停止中 stop + * 1.关闭中 closing + * 2.开启中 openning + * + * 10.无异常 none + * 11.红外故障 irException + * 12.电机运转故障 motorRunException + * 13.电机维护故障 motorMaintainException + * 14.设备故障 deviceException + * + * 101.烟雾报警 + * 102.红外触发报警 + * 103.电机运行报警 + * 104.电机维修报警 + * 105.非APP开门提醒 + * 106.非APP关门提醒 + * 107.关门故障报警 + * 108.开门故障报警 + * 109.开门运行提醒 + * 110.关门运行提醒 + * 111.忘记关门提醒 + * 112.门体手动开启提醒 + * 113.半开门运行提醒 + * 114.门体停止运行提醒 */ - @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "eq_status_type") private Integer status; + /** + * 日志状态文本 + */ + @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) + private String logStatus; + /** * 故障状态 */ @@ -75,6 +104,17 @@ public class EqEquipmentLogVo implements Serializable { @ExcelDictFormat(dictType = "eq_line_status") private Integer lineStatus; + /** + * 创建时间 + */ + private Date createTime; + + /** + * 年月日时分秒 + */ + @ExcelProperty(value = "年月日时分秒") + private String createdYearSecond; + /** * 年月日 */ diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqUserConfigVo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqUserConfigVo.java index 76a39f653..7eb40b1a9 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqUserConfigVo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqUserConfigVo.java @@ -45,21 +45,21 @@ public class EqUserConfigVo implements Serializable { */ @ExcelProperty(value = "时区类型", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "eq_timezone_type") - private Integer timezoneType; + private String timezoneType; /** * 时间格式 */ @ExcelProperty(value = "时间格式", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "eq_time_format_type") - private Integer timeFormat; + private String timeFormat; /** * 语言种类 */ @ExcelProperty(value = "语言种类", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "eq_language_type") - private Integer languageType; + private String languageType; } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/IEqUserConfigService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/IEqUserConfigService.java index a1bc9e149..48938d1e6 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/IEqUserConfigService.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/IEqUserConfigService.java @@ -65,4 +65,6 @@ public interface IEqUserConfigService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + EqUserConfigVo userConfig(); } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentLogServiceImpl.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentLogServiceImpl.java index 28c1285ab..780f16b01 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentLogServiceImpl.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentLogServiceImpl.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.system.domain.SysOperLog; import org.springframework.stereotype.Service; import org.dromara.web.domain.bo.EqEquipmentLogBo; import org.dromara.web.domain.vo.EqEquipmentLogVo; @@ -80,6 +81,9 @@ public class EqEquipmentLogServiceImpl implements IEqEquipmentLogService { lqw.eq(bo.getCreatedYearDay() != null, EqEquipmentLog::getCreatedYearDay, bo.getCreatedYearDay()); lqw.eq(bo.getCreatedHourSecond() != null, EqEquipmentLog::getCreatedHourSecond, bo.getCreatedHourSecond()); lqw.eq(bo.getDayOfWeek() != null, EqEquipmentLog::getDayOfWeek, bo.getDayOfWeek()); + lqw.between(params.get("beginTime") != null && params.get("endTime") != null, + EqEquipmentLog::getCreateTime, params.get("beginTime"), params.get("endTime")); + lqw.orderByDesc(EqEquipmentLog::getCreateTime); return lqw; } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqUserConfigServiceImpl.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqUserConfigServiceImpl.java index 74a7865f8..58c006c18 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqUserConfigServiceImpl.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqUserConfigServiceImpl.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.common.satoken.utils.LoginHelper; import org.springframework.stereotype.Service; import org.dromara.web.domain.bo.EqUserConfigBo; import org.dromara.web.domain.vo.EqUserConfigVo; @@ -129,4 +130,11 @@ public class EqUserConfigServiceImpl implements IEqUserConfigService { } return baseMapper.deleteByIds(ids) > 0; } + + @Override + public EqUserConfigVo userConfig() { + Long userId = LoginHelper.getUserId(); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + return baseMapper.selectVoOne(wrapper.eq(EqUserConfig::getUserId, userId)); + } } diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index 2a4bc11e9..0e2f3bc1f 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -258,3 +258,11 @@ justauth: client-id: 10**********6 client-secret: 1f7d08**********5b7**********29e redirect-uri: ${justauth.address}/social-callback?source=gitlab + +iot: + baseurl: http://8.219.157.97:8080 + url: + scopeAttribute: /api/plugins/telemetry/{entityType}/{entityId}/values/attributes/{scope} + telemetry: /api/plugins/telemetry/{entityType}/{entityId}/values/timeseries + operate: /api/plugins/rpc/oneway/{deviceId} + device: /api/device/{deviceId} diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 0f47b56d4..2c6608260 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -124,6 +124,7 @@ security: # actuator 监控配置 - /actuator - /actuator/** + - /app/text/** # 多租户配置 tenant: diff --git a/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties b/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties index 578d18751..9ecba0bf1 100644 --- a/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties +++ b/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties @@ -61,25 +61,6 @@ tenant.blocked=Sorry, your tenant is disabled. Please contact the administrator tenant.expired=Sorry, your tenant has expired. Please contact the administrator. -noinit.name0= details -noinit.name1= Stroke uncalibrated -noinit.name2= If the device is not calibrated, the device cannot be controlled -noinit.name3= Stroke calibration tutorial -noinit.name4= Please perform the operation on the device -noinit.name5= Set the opening position: -noinit.name6= 1. Hold down the SET key -noinit.name7= Observation: The display displays "1" flashing -noinit.name8= 2. Press the "SET" key again -noinit.name9= Observe: The monitor is "1" on -noinit.name10= 3. Long press the "UP" button to make the door to the maximum opening position and then release the hand to stop -noinit.name11= Observation: The door runs in the direction of opening the door, when the door reaches the maximum opening position -noinit.name12= Set the door closing position: -noinit.name13= 4. Press the "SET" button again -noinit.name14= Observe: The display is "2" steady on -noinit.name15= 5. Press and hold the Down key to close the button and release -noinit.name16= Observation: The door runs in the direction of closing, and stops when the door reaches the closed position -noinit.name17= Automatic check: -noinit.name18= 6. Press the "SET" button again ## "Login" @@ -210,6 +191,28 @@ setCommon.alert= alert setCommon.cancel= cancel setCommon.confirm= Confirm +##《未设置详情》noinit +noinit.name0= details +noinit.name1= Stroke uncalibrated +noinit.name2= If the device is not calibrated, the device cannot be controlled +noinit.name3= Stroke calibration tutorial +noinit.name4= Please perform the operation on the device +noinit.name5= Set the opening position: +noinit.name6= 1. Hold down the SET key +noinit.name7= Observation: The display displays "1" flashing +noinit.name8= 2. Press the "SET" key again +noinit.name9= Observe: The monitor is "1" on +noinit.name10= 3. Long press the "UP" button to make the door to the maximum opening position and then release the hand to stop +noinit.name11= Observation: The door runs in the direction of opening the door, when the door reaches the maximum opening position +noinit.name12= Set the door closing position: +noinit.name13= 4. Press the "SET" button again +noinit.name14= Observe: The display is "2" steady on +noinit.name15= 5. Press and hold the Down key to close the button and release +noinit.name16= Observation: The door runs in the direction of closing, and stops when the door reaches the closed position +noinit.name17= Automatic check: +noinit.name18= 6. Press the "SET" button again + + ## "Change Device Name" setEqname.name0= Changes the device name setEqname.name1= Please enter a name 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 7a3a552a0..fe6bcd395 100644 --- a/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties +++ b/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties @@ -60,69 +60,51 @@ tenant.not.exists=对不起, 您的租户不存在,请联系管理员 tenant.blocked=对不起,您的租户已禁用,请联系管理员 tenant.expired=对不起,您的租户已过期,请联系管理员 -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"键 -##《登录》 + +##《登录》login login.name0=登录 login.name1=请输入账号 login.name2=请输入密码 login.name3=我已阅读并同意签署 login.name4=立即注册 -##《注册》 +##《注册》register register.name0=注册 register.name1=注册账号 register.name2=请输入账号 register.name3=请输入密码 register.name4=请再次输入密码 -##《注册成功》 +##《注册成功》registerSuccess registerSuccess.name0=注册成功 registerSuccess.name1=您的登录账号 registerSuccess.name2=您的密码 registerSuccess.name3=立即登录 -##《首页》 +##《首页》homepage homepage.name0=首页 homepage.name1=状态 homepage.name2=已关闭 homepage.name3=打开 -##《关门提醒》 +##《关门提醒》warningClose warningClose.name0=关门提醒 warningClose.name1=设备-deviceName-已开门-num-分钟了,请记得关门 warningClose.name2=关门 warningClose.name3=我知道了 -##《添加设备》 +##《添加设备》add add.name0=添加设备 add.name1=请输入设备编码 add.name2=请输入 add.name3=添加 -## 《添加成功》 +## 《添加成功》addSuccess addSuccess.name0=添加成功 addSuccess.name1=返回 addSuccess.name2=继续搜索 -##《添加失败》 +##《添加失败》addFailure addFailure.name0=添加失败 addFailure.name1=请正确的设备编号后再试 addFailure.name2=返回 addFailure.name3=重新添加 -##《设备详情》 +##《设备详情》detail detail.name0=详情 ##(已关闭 打开10% 打开100%) detail.name1=状态 @@ -143,11 +125,11 @@ detail.name15=操作次数 detail.name16=数据日志 detail.name17=清码 detail.name18=对码 -##《倒计时设置》 +##《倒计时设置》countdown countdown.name0=倒计时设置 countdown.name1=取消 countdown.name2=确认 -##《数据日志》 +##《数据日志》log log.name0=数据日志 log.name1=选择日期 log.name2=今天 @@ -159,12 +141,12 @@ log.name7=周四 log.name8=周五 log.name9=周六 log.name10=开门提醒 -##《对码》 +##《对码》checkcode checkcode.name0=对码 checkcode.name1=对码中 checkcode.name2=对码成功 checkcode.name3=对码失败请重试 -##《清码》 +##《清码》clearcode clearcode.name0=提示 clearcode.name1=请输入登录密码 clearcode.name2=请输入登录密码才能进行设备清码 @@ -172,11 +154,11 @@ clearcode.name3=取消 clearcode.name4=确认 clearcode.name5=密码错误请重试 -##《设备掉线详情》 +##《设备掉线详情》offDetail offDetail.name0=详情 offDetail.name1=设备已离线 -##《优化-设置》 +##《优化-设置》set set.name0=设置 set.name1=设备名称 set.name2=设备位置 @@ -200,7 +182,7 @@ set.name19=模组版本 set.name20=MCU版本 set.name21=删除设备 -##《通用》 +##《通用》setCommon setCommon.detail=详情 setCommon.add=添加 setCommon.edit=编辑 @@ -209,30 +191,52 @@ setCommon.alert=提示 setCommon.cancel=取消 setCommon.confirm=确认 -##《修改设备名称》 +##《未设置详情》noinit +noinit.name0=详情 +noinit.name1=行程未校准 +noinit.name2=设备未校准行程,将不能进行设备控制 +noinit.name3=行程校准教程 +noinit.name4=请在设备上操作 +noinit.name5=设置开门位置: +noinit.name6=1.请长按“SET”键 +noinit.name7=观察:显示器显示”1”闪烁 +noinit.name8=2.再次按下"SET"键 +noinit.name9=观察:显示器显示为”1”常亮 +noinit.name10=3.长按"UP"键,使门至最大开门位置后松手停止 +noinit.name11=观察:门向开门方向运行,当门达到最大开门位置后 +noinit.name12=设置关门位置: +noinit.name13=4.再次按下”SET"键 +noinit.name14=观察:显示器显示为”2”常亮 +noinit.name15=5.长按“向下”键至关闭位置后松手 +noinit.name16=观察:门向关门方向运行,当门达到关闭位置后停止 +noinit.name17=自动校验: +noinit.name18=6.再次按下"SET"键 + + +##《修改设备名称》setEqname setEqname.name0=修改设备名称 setEqname.name1=请输入名称 setEqname.name2=上一页 setEqname.name3=确认 -##《设备位置修改》 +##《设备位置修改》setEqarea setEqarea.name0=修改设备位置 setEqarea.name1=上一页 setEqarea.name2=确认 -##《反弹力设置》 +##《反弹力设置》setRebound setRebound.name0=电机反弹力 setRebound.name1=调节反弹力 setRebound.name2=电机在开门时,若开门的力超出设定范围值,门会立即停止开门; setRebound.name3=若关门的力超出设定范围值,门会立即停止关闭并开门,此功能可以调整开/关门感应力的范围值。 -##《删除设备》 +##《删除设备》setDelete setDelete.name0=删除设备 setDelete.name1=提示 setDelete.name2=删除设备后,将不能管理设备请谨慎操作! setDelete.name3=取消 setDelete.name4=确认删除 -##《时区设置》 +##《时区设置》setZone setZone.name0=时区 setZone.name1=时间格式 -##《wifi网络》 +##《wifi网络》setWifi setWifi.name0=wifi网络 setWifi.name1=提示 setWifi.name2=已链接WiFi:XXXXXXXX @@ -253,5 +257,31 @@ runStatus.name12=电机运转故障 runStatus.name13=电机维护故障 runStatus.name14=设备故障 +## 日志状态 +## 《运行状态》 +logStatus.name0=停止中 +logStatus.name1=关闭中 +logStatus.name2=开启中 +## 《故障状态》 +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=门体停止运行提醒 message.fault.device.notfound = 设备不存在 diff --git a/ruoyi-admin/src/test/java/org/dromara/test/TimeZoneConversion.java b/ruoyi-admin/src/test/java/org/dromara/test/TimeZoneConversion.java new file mode 100644 index 000000000..4de4e5595 --- /dev/null +++ b/ruoyi-admin/src/test/java/org/dromara/test/TimeZoneConversion.java @@ -0,0 +1,37 @@ +package org.dromara.test; + +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.TimeZone; + +public class TimeZoneConversion { + private static String getTimeWithZone(String dateTimeStr, String zoneId){ + // 定义日期时间格式 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + // 将字符串解析为LocalDateTime + LocalDateTime localDateTime = LocalDateTime.parse(dateTimeStr, formatter); + // 默认指定原始时区UTC+08:00 + ZoneId utc08 = ZoneId.of("UTC+08:00"); + // 转换为ZonedDateTime对象 + ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, utc08); + // 定义目标时区 + ZoneId utc = ZoneId.of(zoneId); + return formatter.format(zonedDateTime.withZoneSameInstant(utc)); + } + + public static void main(String[] args) { + // 给定的时间字符串 + String dateTimeStr = "2024-11-03 00:30:00"; + String zoneId = "UTC+07:00"; + String timeWithZone = getTimeWithZone(dateTimeStr, zoneId); + System.out.println(timeWithZone); + } + + + + +} diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/config/WebSocketConfig.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/config/WebSocketConfig.java index ef5cfc96f..9d8e25a89 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/config/WebSocketConfig.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/config/WebSocketConfig.java @@ -20,7 +20,7 @@ import org.springframework.web.socket.server.HandshakeInterceptor; * @author zendwang */ @AutoConfiguration -@ConditionalOnProperty(value = "websocket.enabled", havingValue = "true") +@ConditionalOnProperty(value = "websocket.enabled", havingValue = "true")// zc @EnableConfigurationProperties(WebSocketProperties.class) @EnableWebSocket public class WebSocketConfig {