Bladeren bron

feat: 1、chatkey管理模块支持多个设备修改为单个关联,并支持页面展示。2、选择框支持查询3、查询条件支持模糊查询

lihao16 4 maanden geleden
bovenliggende
commit
ab4474921c

+ 1 - 1
smsb-modules/smsb-device/src/main/java/com/inspur/device/domain/bo/SmsbDeviceChatKeyBo.java

@@ -59,5 +59,5 @@ public class SmsbDeviceChatKeyBo extends BaseEntity {
      */
     private List<Long> deviceIds;
 
-
+    private String deviceName;
 }

+ 4 - 0
smsb-modules/smsb-device/src/main/java/com/inspur/device/domain/vo/SmsbDeviceChatKeyVo.java

@@ -79,6 +79,10 @@ public class SmsbDeviceChatKeyVo implements Serializable {
     @ExcelProperty(value = "更新人")
     private String updateUser;
 
+    private String deviceName;
+
+    private Long deviceId;
+
 
     private SmsbDeviceXfApiVo xfApiKey;
 

+ 10 - 0
smsb-modules/smsb-device/src/main/java/com/inspur/device/mapper/SmsbDeviceChatKeyMapper.java

@@ -1,6 +1,8 @@
 package com.inspur.device.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.inspur.device.domain.SmsbDeviceChatKey;
+import com.inspur.device.domain.bo.SmsbDeviceChatKeyBo;
 import com.inspur.device.domain.vo.SmsbDeviceChatKeyVo;
 import org.apache.ibatis.annotations.Param;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@@ -19,4 +21,12 @@ public interface SmsbDeviceChatKeyMapper extends BaseMapperPlus<SmsbDeviceChatKe
      * @return
      */
     SmsbDeviceChatKeyVo selectVoByDeviceId(@Param("deviceId") Long deviceId);
+
+    /**
+     * 连表查询关联设备信息
+     * @param page
+     * @param bo
+     * @return
+     */
+    Page<SmsbDeviceChatKeyVo> selectVoPageWithDevice(@Param("page") Page<SmsbDeviceChatKeyVo> page, @Param("bo") SmsbDeviceChatKeyBo bo);
 }

+ 2 - 2
smsb-modules/smsb-device/src/main/java/com/inspur/device/service/impl/SmsbDeviceChatKeyServiceImpl.java

@@ -67,8 +67,8 @@ public class SmsbDeviceChatKeyServiceImpl implements ISmsbDeviceChatKeyService {
      */
     @Override
     public TableDataInfo<SmsbDeviceChatKeyVo> queryPageList(SmsbDeviceChatKeyBo bo, PageQuery pageQuery) {
-        LambdaQueryWrapper<SmsbDeviceChatKey> lqw = buildQueryWrapper(bo);
-        Page<SmsbDeviceChatKeyVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        // LambdaQueryWrapper<SmsbDeviceChatKey> lqw = buildQueryWrapper(bo);
+        Page<SmsbDeviceChatKeyVo> result = baseMapper.selectVoPageWithDevice(pageQuery.build(), bo);
         return TableDataInfo.build(result);
     }
 

+ 22 - 0
smsb-modules/smsb-device/src/main/resources/mapper/device/SmsbDeviceChatKeyMapper.xml

@@ -11,4 +11,26 @@
         WHERE
             id = (SELECT key_id FROM smsb_device_chat_key_rel WHERE device_id = #{deviceId})
     </select>
+
+    <select id="selectVoPageWithDevice" resultType="com.inspur.device.domain.vo.SmsbDeviceChatKeyVo">
+        SELECT
+            sdck.*,
+            sd.id AS deviceId,
+            sd.`name` AS deviceName
+        FROM
+            smsb_device_chat_key sdck
+        LEFT JOIN smsb_device_chat_key_rel sdckr ON sdck.id = sdckr.key_id
+        LEFT JOIN smsb_device sd ON sdckr.device_id = sd.id
+        WHERE 1 = 1
+        <if test="bo.apiName != null and bo.apiName != ''">
+            AND sdck.api_name like concat('%',#{bo.apiName},'%')
+        </if>
+        <if test="bo.apiKey != null and bo.apiKey != ''">
+            AND sdck.api_key like concat('%',#{bo.apiKey},'%')
+        </if>
+        <if test="bo.deviceName != null and bo.deviceName != ''">
+            AND sd.name like concat('%',#{bo.deviceName},'%')
+        </if>
+        ORDER BY sdck.id desc
+    </select>
 </mapper>

+ 2 - 0
smsb-plus-ui/src/api/smsb/device/chat_api_type.ts

@@ -96,6 +96,8 @@ export interface DeviceChatKeyQuery extends PageQuery {
    */
   apiKey?: string;
 
+  deviceName?: string;
+
   /**
    * 日期范围参数
    */

+ 23 - 7
smsb-plus-ui/src/views/smsb/chatKey/index.vue

@@ -3,19 +3,22 @@
     <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
       <div v-show="showSearch" class="mb-[10px]">
         <el-card shadow="hover" :style="{ marginTop: '10px', height: '60px' }">
-          <el-form ref="queryFormRef" :model="queryParams" :inline="true">
+          <el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="40px">
             <el-form-item label="名称" prop="apiName">
               <el-input v-model="queryParams.apiName" placeholder="请输入名称" clearable @keyup.enter="handleQuery" />
             </el-form-item>
-            <el-form-item label="key" prop="apiKey">
+            <el-form-item label="KEY" prop="apiKey">
               <el-input v-model="queryParams.apiKey" placeholder="请输入key" clearable @keyup.enter="handleQuery" />
             </el-form-item>
+            <el-form-item label="设备" prop="deviceName">
+              <el-input v-model="queryParams.deviceName" placeholder="请输入设备名称" clearable @keyup.enter="handleQuery" />
+            </el-form-item>
             <el-form-item>
               <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
               <el-button icon="Refresh" @click="resetQuery">重置</el-button>
               <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['device:chatKey:add']">新增</el-button>
-              <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['device:chatKey:edit']">修改</el-button>
-              <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['device:chatKey:remove']">删除</el-button>
+<!--              <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['device:chatKey:edit']">修改</el-button>
+              <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['device:chatKey:remove']">删除</el-button>-->
             </el-form-item>
           </el-form>
         </el-card>
@@ -25,11 +28,12 @@
     <el-card shadow="never">
       <div class="table-content">
         <el-table v-loading="loading" :data="deviceChatKeyList" @selection-change="handleSelectionChange">
-          <el-table-column type="selection" width="55" align="center"/>
-          <el-table-column label="ID" align="left" prop="id" v-if="true" width="180" :show-overflow-tooltip="true"/>
+<!--          <el-table-column label="ID" align="left" prop="id" v-if="true" width="170" :show-overflow-tooltip="true"/>-->
+          <el-table-column label="" align="left" prop="" width="8"/>
           <el-table-column label="名称" align="left" prop="apiName"/>
           <el-table-column label="KEY" align="left" prop="apiKey" :show-overflow-tooltip="true" width="220"/>
           <el-table-column label="URL" align="left" prop="apiUrl" :show-overflow-tooltip="true" width="220"/>
+          <el-table-column label="关联设备" align="left" prop="deviceName" :show-overflow-tooltip="true" width="220"/>
           <el-table-column label="创建时间" align="left" prop="createTime" width="160"/>
           <el-table-column label="创建人" align="left" prop="createUser" width="100" />
           <el-table-column label="更新时间" align="left" prop="updateTime" width="160"/>
@@ -87,7 +91,10 @@
     </el-dialog>
 
     <el-dialog :title="dialog_device.title" v-model="dialog_device.visible" width="700px" append-to-body>
-      <el-select v-model="deviceIds" multiple placeholder="请选择设备">
+<!--      <el-select v-model="deviceIds" multiple placeholder="请选择设备">
+        <el-option v-for="item in deviceList" :key="item.id" :value="item.id" :label="item.name"></el-option>
+      </el-select>-->
+      <el-select v-model="deviceId" filterable placeholder="请选择设备">
         <el-option v-for="item in deviceList" :key="item.id" :value="item.id" :label="item.name"></el-option>
       </el-select>
       <template #footer>
@@ -124,6 +131,7 @@ const single = ref(true);
 const multiple = ref(true);
 const total = ref(0);
 const deviceIds = ref<Array<string | number>>([]);
+const deviceId = ref<string | number>();
 const keyId = ref<number>(0);
 const queryFormRef = ref<ElFormInstance>();
 const deviceChatKeyFormRef = ref<ElFormInstance>();
@@ -161,6 +169,7 @@ const data = reactive<PageData<DeviceChatKeyForm, DeviceChatKeyQuery>>({
     pageSize: 10,
     apiName: undefined,
     apiKey: undefined,
+    deviceName: undefined,
     params: {
     }
   },
@@ -237,8 +246,12 @@ const getDeviceList = async () => {
 };
 
 const getRelDeviceIds = async () => {
+  deviceId.value = null;
   const res = await getDeviceChatKeyRel(keyId.value);
   deviceIds.value = res.data;
+  if (deviceIds.value.length > 0) {
+    deviceId.value = deviceIds.value[0];
+  }
 }
 
 /** 新增按钮操作 */
@@ -259,12 +272,15 @@ const handleUpdate = async (row?: DeviceChatKeyVO) => {
 }
 
 const submitDeviceRel = async () => {
+  deviceIds.value = [];
+  deviceIds.value.push(deviceId.value);
   const requestParam = {
     deviceIds: deviceIds.value,
     id: keyId.value
   }
   await addDeviceChatKeyRel(requestParam).finally(() => buttonLoading.value = false);
   proxy?.$modal.msgSuccess("操作成功");
+  await getList();
   dialog_device.visible = false;
 }