Browse Source

优化会议屏设备表-设备列表接口,设计不同表字段刷选条件联合查询逻辑

james 4 months ago
parent
commit
1fc0307c6d

+ 4 - 4
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/MybatisGenerator.java

@@ -42,10 +42,10 @@ public class MybatisGenerator {
         //2、数据源配置
         //修改数据源
         DataSourceConfig dsc = new DataSourceConfig();
-        dsc.setUrl("jdbc:mysql://172.16.120.165:3306/usky-cloud?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
+        dsc.setUrl("jdbc:mysql://192.168.10.165:3306/usky-cloud?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
         dsc.setDriverName("com.mysql.jdbc.Driver");
-        dsc.setUsername("usky");
-        dsc.setPassword("Yt#75Usky");
+        dsc.setUsername("root");
+        dsc.setPassword("yt123456");
         mpg.setDataSource(dsc);
 
         // 3、包配置
@@ -70,7 +70,7 @@ public class MybatisGenerator {
         // strategy.setTablePrefix("t_"); // 表名前缀
         strategy.setEntityLombokModel(true); //使用lombok
         //修改自己想要生成的表
-        strategy.setInclude("sys_dept","sys_role","sys_user","sys_user_role");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+        strategy.setInclude("eg_device");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
         mpg.setStrategy(strategy);
 
         // 关闭默认 xml 生成,调整生成 至 根目录

+ 4 - 4
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingDeviceController.java

@@ -45,7 +45,7 @@ public class MeetingDeviceController {
      * @param meetingDevice
      * @return
      */
-    @Log(title = "新增-会议设备", businessType = BusinessType.INSERT)
+    @Log(title = "新增-会议设备", businessType = BusinessType.INSERT)
     @PostMapping
     public ApiResult<Void> add(@RequestBody MeetingDevice meetingDevice){
         meetingDeviceService.add(meetingDevice);
@@ -66,13 +66,13 @@ public class MeetingDeviceController {
 
     /**
      * 删除
-     * @param deviceId
+     * @param deviceUuid
      * @return
      */
     @Log(title = "删除-会议设备", businessType = BusinessType.DELETE)
     @DeleteMapping
-    public ApiResult<Void> remove(@RequestParam Long deviceId){
-        meetingDeviceService.remove(deviceId);
+    public ApiResult<Void> remove(@RequestParam Long deviceUuid){
+        meetingDeviceService.remove(deviceUuid);
         return ApiResult.success();
     }
 

+ 101 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/EgDevice.java

@@ -0,0 +1,101 @@
+package com.usky.meeting.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 门禁设备表
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-11-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EgDevice implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 设备uuid
+     */
+    private Long deviceUuid;
+
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+
+    /**
+     * 设备图片
+     */
+    private String imgPath;
+
+    /**
+     * 设备铭牌
+     */
+    private String nameplate;
+
+    /**
+     * 登记时间
+     */
+    private LocalDateTime registerDate;
+
+    /**
+     * 维护人
+     */
+    private String maintainer;
+
+    /**
+     * 联系方式
+     */
+    private String contacts;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+
+    /**
+     * 创建日期
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 16 - 3
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingDevice.java

@@ -2,6 +2,7 @@ package com.usky.meeting.domain;
 
 import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.List;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -32,7 +33,7 @@ public class MeetingDevice implements Serializable {
     @Id
     @TableId
     @JsonFormat(shape = JsonFormat.Shape.STRING)
-    private Long deviceId;
+    private Long deviceUuid;
 
     /**
      * 设备名称
@@ -112,11 +113,23 @@ public class MeetingDevice implements Serializable {
     private Integer tenantId;
 
     /**
-     * 会议室名称
+     * 门禁设备主键id
+     */
+    private Integer egDeviceId;
+
+    /**
+     * 会议室信息
+     */
+    @Transient
+    @TableField(exist = false)
+    private MeetingRoom meetingRoom;
+
+    /**
+     * 门禁设备信息
      */
     @Transient
     @TableField(exist = false)
-    private String roomName;
+    private EgDevice egDevice;
 
 
 }

+ 18 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/EgDeviceMapper.java

@@ -0,0 +1,18 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.EgDevice;
+import com.usky.common.mybatis.core.CrudMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ * 门禁设备表 Mapper 接口
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-11-22
+ */
+@Repository
+public interface EgDeviceMapper extends CrudMapper<EgDevice> {
+
+}

+ 70 - 19
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingDeviceServiceImpl.java

@@ -11,9 +11,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
 import com.usky.common.security.utils.SecurityUtils;
+import com.usky.meeting.domain.EgDevice;
 import com.usky.meeting.domain.MeetingDevice;
 import com.usky.meeting.domain.MeetingFloor;
 import com.usky.meeting.domain.MeetingRoom;
+import com.usky.meeting.mapper.EgDeviceMapper;
 import com.usky.meeting.mapper.MeetingDeviceMapper;
 import com.usky.meeting.mapper.MeetingRoomMapper;
 import com.usky.meeting.service.MeetingDeviceService;
@@ -47,40 +49,89 @@ import java.util.stream.Collectors;
 public class MeetingDeviceServiceImpl extends AbstractCrudService<MeetingDeviceMapper, MeetingDevice> implements MeetingDeviceService {
     @Autowired
     private MeetingRoomMapper meetingRoomMapper;
+    @Autowired
+    private EgDeviceMapper egDeviceMapper;
 
     @Override
     public CommonPage<MeetingDevice> meetingDeviceList(MeetingDeviceRequestVO requestVO){
         Integer current = requestVO.getCurrent();
         Integer size = requestVO.getSize();
         IPage<MeetingDevice> page = new Page<>(current,size);
-        LambdaQueryWrapper<MeetingDevice> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.like(StringUtils.isNotBlank(requestVO.getDeviceName()),MeetingDevice::getDeviceName,requestVO.getDeviceName())
+
+        //根据输入所属会议室名称刷选
+        List<Long> roomIdList = new ArrayList<>();
+        List<MeetingRoom> meetingRoomsList = null;
+        LambdaQueryWrapper<MeetingRoom> queryWrapper = Wrappers.lambdaQuery();
+        if(StringUtils.isNotBlank(requestVO.getRoomName())){
+            queryWrapper.like(MeetingRoom::getRoomName,requestVO.getRoomName()).eq(MeetingRoom::getTenantId,SecurityUtils.getTenantId());
+            meetingRoomsList = meetingRoomMapper.selectList(queryWrapper);
+            if(CollectionUtils.isNotEmpty(meetingRoomsList)){
+                for (int i = 0; i < meetingRoomsList.size(); i++) {
+                    roomIdList.add(meetingRoomsList.get(i).getRoomId());
+                }
+            }
+        }else{
+            queryWrapper.eq(MeetingRoom::getTenantId,SecurityUtils.getTenantId());
+            meetingRoomsList = meetingRoomMapper.selectList(queryWrapper);
+        }
+        //根据输入所属门禁设备名称刷选
+        List<Integer> egDeviceIdList = new ArrayList<>();
+        List<EgDevice> egDeviceList = null;
+        LambdaQueryWrapper<EgDevice> queryWrapper1 = Wrappers.lambdaQuery();
+        if(StringUtils.isNotBlank(requestVO.getEgDeviceName())){
+            queryWrapper1.like(EgDevice::getDeviceName,requestVO.getEgDeviceName()).eq(EgDevice::getTenantId,SecurityUtils.getTenantId());
+            egDeviceList = egDeviceMapper.selectList(queryWrapper1);
+            if(CollectionUtils.isNotEmpty(egDeviceList)){
+                for (int i = 0; i < egDeviceList.size(); i++) {
+                    egDeviceIdList.add(egDeviceList.get(i).getId());
+                }
+            }
+        }else{
+            queryWrapper1.eq(EgDevice::getTenantId,SecurityUtils.getTenantId());
+            egDeviceList = egDeviceMapper.selectList(queryWrapper1);
+        }
+
+        LambdaQueryWrapper<MeetingDevice> queryWrapper3 = Wrappers.lambdaQuery();
+        queryWrapper3.like(StringUtils.isNotBlank(requestVO.getDeviceName()),MeetingDevice::getDeviceName,requestVO.getDeviceName())
                 .like(StringUtils.isNotBlank(requestVO.getNameplate()),MeetingDevice::getNameplate,requestVO.getNameplate())
                 .like(StringUtils.isNotBlank(requestVO.getMaintainer()),MeetingDevice::getMaintainer,requestVO.getMaintainer())
                 .like(StringUtils.isNotBlank(requestVO.getContacts()),MeetingDevice::getContacts,requestVO.getContacts())
                 .like(StringUtils.isNotBlank(requestVO.getRemark()),MeetingDevice::getRemark,requestVO.getRemark())
+                .like(requestVO.getRoomId() != null,MeetingDevice::getRoomId,requestVO.getRoomId())
+                .in(CollectionUtils.isNotEmpty(roomIdList),MeetingDevice::getRoomId,roomIdList)
+                .in(CollectionUtils.isNotEmpty(egDeviceIdList),MeetingDevice::getEgDeviceId,egDeviceIdList)
                 .eq(MeetingDevice::getTenantId,SecurityUtils.getTenantId())
-                .orderByAsc(MeetingDevice::getDeviceId);
-        page = this.page(page,queryWrapper);
+                .orderByAsc(MeetingDevice::getDeviceUuid);
+        page = this.page(page,queryWrapper3);
         if(page.getRecords().size()>0){
-            List<Long> roomIdList = new ArrayList<>();
-            for (int i = 0; i < page.getRecords().size(); i++) {
-                roomIdList.add(Long.valueOf(page.getRecords().get(i).getRoomId()));
+
+            if(CollectionUtils.isNotEmpty(meetingRoomsList)){
+                for (int i = 0; i < page.getRecords().size(); i++) {
+                    if(Objects.nonNull(page.getRecords().get(i).getRoomId())){
+                        Long RId = Long.valueOf(page.getRecords().get(i).getRoomId());
+                        for (int j = 0; j < meetingRoomsList.size(); j++) {
+                            if(RId.equals(meetingRoomsList.get(j).getRoomId())){
+                                page.getRecords().get(i).setMeetingRoom(meetingRoomsList.get(j));
+                                break;
+                            }
+                        }
+                    }
+
+                }
             }
-            List<Long> list = roomIdList.stream().distinct().collect(Collectors.toList());
 
-            LambdaQueryWrapper<MeetingRoom> queryWrapper1 = Wrappers.lambdaQuery();
-            queryWrapper1.in(MeetingRoom::getRoomId,list).eq(MeetingRoom::getTenantId,SecurityUtils.getTenantId());
-            List<MeetingRoom> meetingRoomList = meetingRoomMapper.selectList(queryWrapper1);
-            if(CollectionUtils.isNotEmpty(meetingRoomList)){
+            if(CollectionUtils.isNotEmpty(egDeviceList)){
                 for (int i = 0; i < page.getRecords().size(); i++) {
-                    Long RId = Long.valueOf(page.getRecords().get(i).getRoomId());
-                    for (int j = 0; j < meetingRoomList.size(); j++) {
-                        if(RId.equals(meetingRoomList.get(j).getRoomId())){
-                            page.getRecords().get(i).setRoomName(meetingRoomList.get(j).getRoomName());
-                            break;
+                    if(Objects.nonNull(page.getRecords().get(i).getEgDeviceId())){
+                        Integer egDeviceId = page.getRecords().get(i).getEgDeviceId();
+                        for (int j = 0; j < egDeviceList.size(); j++) {
+                            if(egDeviceId.equals(egDeviceList.get(j).getId())){
+                                page.getRecords().get(i).setEgDevice(egDeviceList.get(j));
+                                break;
+                            }
                         }
                     }
+
                 }
             }
         }
@@ -122,11 +173,11 @@ public class MeetingDeviceServiceImpl extends AbstractCrudService<MeetingDeviceM
     }
 
     public boolean checkNameUnique(MeetingDevice meetingDevice){
-        Long deviceId = null == meetingDevice.getDeviceId()?-1:meetingDevice.getDeviceId();
+        Long deviceId = null == meetingDevice.getDeviceUuid()?-1:meetingDevice.getDeviceUuid();
         LambdaQueryWrapper<MeetingDevice> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(MeetingDevice::getDeviceName,meetingDevice.getDeviceName())
                 .eq(MeetingDevice::getTenantId,SecurityUtils.getTenantId());
         MeetingDevice one = this.getOne(queryWrapper);
-        return null != one && !Objects.equals(one.getDeviceId(),deviceId);
+        return null != one && !Objects.equals(one.getDeviceUuid(),deviceId);
     }
 }

+ 20 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingDeviceRequestVO.java

@@ -1,5 +1,8 @@
 package com.usky.meeting.service.vo;
 
+import com.alibaba.fastjson.annotation.JSONField;
+import com.alibaba.fastjson.serializer.ToStringSerializer;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 @Data
@@ -38,4 +41,21 @@ public class MeetingDeviceRequestVO {
      * 备注
      */
     private String remark;
+
+    /**
+     * 所属会议室room_Id
+     */
+    @JSONField(serializeUsing = ToStringSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long roomId;
+
+    /**
+     * 所属会议室名称
+     */
+    private String roomName;
+
+    /**
+     * 所属门禁设备名称
+     */
+    private String egDeviceName;
 }

+ 24 - 0
service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/EgDeviceMapper.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.meeting.mapper.EgDeviceMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.meeting.domain.EgDevice">
+        <id column="id" property="id" />
+        <result column="device_uuid" property="deviceUuid" />
+        <result column="device_name" property="deviceName" />
+        <result column="img_path" property="imgPath" />
+        <result column="nameplate" property="nameplate" />
+        <result column="register_date" property="registerDate" />
+        <result column="maintainer" property="maintainer" />
+        <result column="contacts" property="contacts" />
+        <result column="remark" property="remark" />
+        <result column="create_by" property="createBy" />
+        <result column="update_by" property="updateBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="dept_id" property="deptId" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

+ 1 - 1
service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/MeetingDeviceMapper.xml

@@ -4,7 +4,7 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.usky.meeting.domain.MeetingDevice">
-        <id column="device_id" property="deviceId" />
+        <id column="device_uuid" property="deviceUuid" />
         <result column="device_name" property="deviceName" />
         <result column="storage_id" property="storageId" />
         <result column="img_path" property="imgPath" />