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 0e81fa1af..b9257751f 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,6 +4,7 @@ import cn.dev33.satoken.secure.BCrypt; import jakarta.validation.constraints.NotEmpty; import lombok.RequiredArgsConstructor; 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.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; @@ -23,6 +24,7 @@ import org.dromara.web.domain.bo.EqAppHomeBo; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -39,7 +41,7 @@ import java.util.List; public class EqHomeController extends BaseController { private final IEqAreaService eqAreaService; - + private final IEqFamilyService eqFamilyService; private final IEqEquipmentService eqEquipmentService; private final IEqShareService shareService; @@ -84,6 +86,84 @@ public class EqHomeController extends BaseController { return R.ok(eqShareVos); } + /** + * 我的家庭 查询家庭列表详细 + * @return + */ + @GetMapping("/familyListDetail") + public R> familyListDetail(){ + List result = new ArrayList<>(); + LoginUser loginUser = LoginHelper.getLoginUser(); + Long userId = loginUser.getUserId(); + String username = loginUser.getUsername(); + List eqFamilyVos = eqFamilyService.queryList(new EqFamilyBo(userId)); + + + EqShareVo firstVo = new EqShareVo(); + firstVo.setShareUserId(userId); + firstVo.setShareUserName(username); + firstVo.setSharedUserId(userId);//为了方便前端操作 统一放在被分享者字段中 + firstVo.setSharedUserName(username); + + EqShareBo bo = new EqShareBo(); + bo.setSharedUserId(userId); + List eqShareVos = shareService.queryList(bo); + eqShareVos.add(0,firstVo); + + for (EqShareVo eqShareVo : eqShareVos) { + Long shareUserId = eqShareVo.getShareUserId(); + EqShareDetailVo eqShareDetailVo = new EqShareDetailVo(); + + eqShareDetailVo.setShareId(eqShareVo.getShareId()); + eqShareDetailVo.setShareUserId(eqShareVo.getShareUserId()); + eqShareDetailVo.setShareUserName(eqShareVo.getShareUserName()); + eqShareDetailVo.setSharedUserId(eqShareVo.getSharedUserId()); + eqShareDetailVo.setSharedUserName(eqShareVo.getSharedUserName()); + + List eqAreaVos = eqAreaService.queryList(new EqAreaBo(shareUserId)); + List eqEquipmentVos = eqEquipmentService.queryList(new EqEquipmentBo(shareUserId)); + eqShareDetailVo.setEqAreaVos(eqAreaVos); + eqShareDetailVo.setEqEquipmentVos(eqEquipmentVos); + eqShareDetailVo.setAreaNum(eqAreaVos.size()); + eqShareDetailVo.setEqNum(eqEquipmentVos.size()); + + List familyVos = eqFamilyService.queryList(new EqFamilyBo(shareUserId)); + String familyName = ""; + if (!familyVos.isEmpty()) { + familyName = familyVos.get(0).getFamilyName()+"的家"; + }else{ + familyName = userId.equals(shareUserId)?"我的家":eqShareVo.getShareUserName()+"的家"; + } + eqShareDetailVo.setFamilyName(familyName); + + result.add(eqShareDetailVo); + } + return R.ok(result); + } + + /** + * 修改家庭名称 + */ + @PostMapping("/updateFamilyName") + public R updateFamilyName(@RequestBody EqFamilyBo bo) { + if (bo.getFamilyName() == null) return R.fail("家庭名称不能为空"); + if (bo.getUserId() == null) return R.fail("用户id不能为空"); + if (!LoginHelper.getUserId().equals(bo.getUserId())) throw new RuntimeException("不能操作其他家庭主体名称"); + List eqFamilyVos = eqFamilyService.queryList(new EqFamilyBo(bo.getUserId())); + if (eqFamilyVos.isEmpty()) { + EqFamilyBo eqFamilyBo = new EqFamilyBo(); + eqFamilyBo.setUserId(bo.getUserId()); + eqFamilyBo.setFamilyName(bo.getFamilyName()); + eqFamilyService.insertByBo(eqFamilyBo); + }else{ + EqFamilyVo eqFamilyVo = eqFamilyVos.get(0); + eqFamilyVo.setFamilyName(bo.getFamilyName()); + eqFamilyService.updateByBo(bo); + } + return R.ok(); + } + + /** * 成员管理 查询家庭成员 */ @@ -168,7 +248,7 @@ public class EqHomeController extends BaseController { public TableDataInfo list(EqAppHomeBo bo, PageQuery pageQuery){ //当前用户为家庭主体 切换用户后需要传输用户id if (bo.getUserId() == null) bo.setUserId(LoginHelper.getUserId()); - //TODO 下面返回的状态 会在设备状态变化时更新设备状态 + // 下面返回的状态 会在设备状态变化时更新设备状态 状态更新由iot触发 EqEquipmentBo eqEquipmentBo = new EqEquipmentBo(); eqEquipmentBo.setUserId(bo.getUserId()); return eqEquipmentService.queryPageList(eqEquipmentBo, pageQuery); //在设备表中增加了分布id diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqAreaBo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqAreaBo.java index 6cba99811..bc5619fcc 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqAreaBo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqAreaBo.java @@ -1,5 +1,7 @@ package org.dromara.web.domain.bo; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; import org.dromara.web.domain.EqArea; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; @@ -16,6 +18,8 @@ import jakarta.validation.constraints.*; * @date 2024-07-19 */ @Data +@NoArgsConstructor +@AllArgsConstructor @EqualsAndHashCode(callSuper = true) @AutoMapper(target = EqArea.class, reverseConvertGenerate = false) public class EqAreaBo extends BaseEntity { @@ -44,5 +48,7 @@ public class EqAreaBo extends BaseEntity { @NotBlank(message = "位置描述不能为空", groups = { AddGroup.class, EditGroup.class }) private String description; - + public EqAreaBo(Long userId) { + this.userId = userId; + } } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentBo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentBo.java index e0c6472c6..1427c29a7 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentBo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentBo.java @@ -1,5 +1,7 @@ package org.dromara.web.domain.bo; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; import org.dromara.web.domain.EqEquipment; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; @@ -18,6 +20,8 @@ import com.fasterxml.jackson.annotation.JsonFormat; * @date 2024-07-19 */ @Data +@NoArgsConstructor +@AllArgsConstructor @EqualsAndHashCode(callSuper = true) @AutoMapper(target = EqEquipment.class, reverseConvertGenerate = false) public class EqEquipmentBo extends BaseEntity { @@ -102,4 +106,9 @@ public class EqEquipmentBo extends BaseEntity { */ @NotNull(message = "排序", groups = { AddGroup.class, EditGroup.class }) private Integer orderNum; + + + public EqEquipmentBo(Long userId) { + this.userId = userId; + } } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqFamilyBo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqFamilyBo.java index cb3586622..e2a2c4e19 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqFamilyBo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqFamilyBo.java @@ -1,5 +1,7 @@ package org.dromara.web.domain.bo; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; import org.dromara.web.domain.EqFamily; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; @@ -16,6 +18,8 @@ import jakarta.validation.constraints.*; * @date 2024-07-19 */ @Data +@NoArgsConstructor +@AllArgsConstructor @EqualsAndHashCode(callSuper = true) @AutoMapper(target = EqFamily.class, reverseConvertGenerate = false) public class EqFamilyBo extends BaseEntity { @@ -38,5 +42,7 @@ public class EqFamilyBo extends BaseEntity { @NotBlank(message = "家庭名称不能为空", groups = { AddGroup.class, EditGroup.class }) private String familyName; - + public EqFamilyBo(Long userId) { + this.userId = userId; + } } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqShareDetailVo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqShareDetailVo.java new file mode 100644 index 000000000..e0598cf38 --- /dev/null +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqShareDetailVo.java @@ -0,0 +1,52 @@ +package org.dromara.web.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.web.domain.EqShare; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + + +/** + * 分享明细视图对象 + * + * @author zzc + * @date 2024-07-19 + */ +@Data +@ExcelIgnoreUnannotated +public class EqShareDetailVo extends EqShareVo { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 家庭名称 + */ + private String familyName; + + /** + * 分布(区域)个数 + */ + private int areaNum; + + /** + * 设备个数 + */ + private int eqNum; + + /** + * 分布列表 + */ + private List eqAreaVos; + + /** + * 设备列表 + */ + private List eqEquipmentVos; + +}