From 9d30f3aba92b1fe90eaecd486113f544f0f18b7c Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 16 八月 2024 16:41:11 +0800
Subject: [PATCH] 资产管理动态字段
---
ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java | 1
ycl-server/src/main/java/com/ycl/platform/controller/DynamicColumnController.java | 25 -----
ycl-pojo/src/main/java/com/ycl/platform/domain/form/DynamicColumnForm.java | 14 ---
ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java | 3
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java | 2
ycl-server/src/main/java/com/ycl/platform/service/impl/DynamicColumnServiceImpl.java | 90 ++++++++++------------
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java | 4
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml | 9 +-
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DynamicColumn.java | 19 +++-
ycl-server/src/main/java/com/ycl/platform/service/DynamicColumnService.java | 28 ------
10 files changed, 71 insertions(+), 124 deletions(-)
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java
index cdefd49..a5c872a 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java
@@ -20,7 +20,6 @@
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
- //TODO:鍒犻櫎fill浠g爜灞傚鐞�
/**
* 鍒涘缓鏃堕棿
*/
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DynamicColumn.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DynamicColumn.java
index f47c0f1..0f96a4d 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DynamicColumn.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DynamicColumn.java
@@ -1,10 +1,14 @@
package com.ycl.platform.domain.entity;
+import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ycl.platform.base.AbsEntity;
import lombok.Data;
+
+import java.util.Date;
/**
* 鍔ㄦ�佸垪
@@ -14,13 +18,16 @@
*/
@Data
@TableName("t_dynamic_column")
-public class DynamicColumn extends AbsEntity {
+public class DynamicColumn {
private static final long serialVersionUID = 1L;
- @TableField("ref_id")
- /** 鍏宠仈涓�鏈轰竴妗d */
- private Integer refId;
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("table_name")
+ /** 鍏宠仈琛� */
+ private String tableName;
@TableField("prop_name")
/** elementui table prop */
@@ -30,9 +37,9 @@
/** elementui table label */
private String labelValue;
- @TableField("field_value")
+ @TableField("create_time")
/** 鍊� */
- private String fieldValue;
+ private Date createTime;
}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/DynamicColumnForm.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/DynamicColumnForm.java
index 79e1e5d..115186b 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/DynamicColumnForm.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/DynamicColumnForm.java
@@ -23,21 +23,9 @@
@ApiModel(value = "DynamicColumn琛ㄥ崟", description = "鍔ㄦ�佸垪琛ㄥ崟")
public class DynamicColumnForm extends AbsForm {
- @NotNull(message = "鍏宠仈涓�鏈轰竴妗d涓嶈兘涓虹┖", groups = {Add.class, Update.class})
- @ApiModelProperty("鍏宠仈涓�鏈轰竴妗d")
- private Integer refId;
-
- @NotBlank(message = "elementui table prop涓嶈兘涓虹┖", groups = {Add.class, Update.class})
- @ApiModelProperty("elementui table prop")
- private String propName;
-
- @NotBlank(message = "elementui table label涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @NotBlank(message = "鍒楀悕绉颁笉鑳戒负绌�", groups = {Add.class, Update.class})
@ApiModelProperty("elementui table label")
private String labelValue;
-
- @NotBlank(message = "鍊间笉鑳戒负绌�", groups = {Add.class, Update.class})
- @ApiModelProperty("鍊�")
- private String fieldValue;
public static DynamicColumn getEntityByForm(@NonNull DynamicColumnForm form, DynamicColumn entity) {
if(entity == null) {
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java
index b813bbe..ed35144 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java
@@ -23,5 +23,6 @@
/** 鍏抽敭璇� */
private String keyword;
-
+ /** 鍔ㄦ�佸垪鐨勮〃鏄庢潯浠� */
+ private String tableName = "t_monitor";
}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java
index 0836853..cb4aee4 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java
@@ -16,7 +16,7 @@
public class DynamicColumnVO extends AbsVo {
/** 鍏宠仈涓�鏈轰竴妗d */
- private Integer refId;
+ private String tableName;
/** elementui table prop */
private String propName;
@@ -25,7 +25,7 @@
private String labelValue;
/** 鍊� */
- private String fieldValue;
+ private String columnValue;
public static DynamicColumnVO getVoByEntity(@NonNull DynamicColumn entity, DynamicColumnVO vo) {
if(vo == null) {
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/DynamicColumnController.java b/ycl-server/src/main/java/com/ycl/platform/controller/DynamicColumnController.java
index f3dc788..9780552 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/DynamicColumnController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/DynamicColumnController.java
@@ -40,8 +40,8 @@
@PutMapping
@ApiOperation(value = "淇敼", notes = "淇敼")
@PreAuthorize("@ss.hasPermi('dynamicColumn:edit')")
- public Result update(@RequestBody @Validated(Update.class) DynamicColumnForm form) {
- return dynamicColumnService.update(form);
+ public Result update(@RequestBody @NotEmpty(message = "鏁版嵁涓虹┖锛屾棤娉曚繚瀛�") List<DynamicColumnForm> columnList) {
+ return dynamicColumnService.update(columnList);
}
@DeleteMapping("/{id}")
@@ -49,27 +49,6 @@
@PreAuthorize("@ss.hasPermi('dynamicColumn:del')")
public Result removeById(@PathVariable("id") String id) {
return dynamicColumnService.removeById(id);
- }
-
- @DeleteMapping("/batch")
- @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎")
- @PreAuthorize("@ss.hasPermi('dynamicColumn:del:batch')")
- public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) {
- return dynamicColumnService.remove(ids);
- }
-
- @GetMapping("/page")
- @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉")
- @PreAuthorize("@ss.hasPermi('dynamicColumn:page')")
- public Result page(DynamicColumnQuery query) {
- return dynamicColumnService.page(query);
- }
-
- @GetMapping("/{id}")
- @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
- @PreAuthorize("@ss.hasPermi('dynamicColumn:detail')")
- public Result detail(@PathVariable("id") Integer id) {
- return dynamicColumnService.detail(id);
}
@GetMapping("/list")
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
index 922d206..266214c 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
@@ -125,5 +125,5 @@
* @param page
* @param query
*/
- void assetManagement(IPage<TMonitorVO> page, @Param("query") DataCenterQuery query);
+ IPage assetManagement(IPage<TMonitorVO> page, @Param("query") DataCenterQuery query);
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/DynamicColumnService.java b/ycl-server/src/main/java/com/ycl/platform/service/DynamicColumnService.java
index 56976d9..e42a08a 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/DynamicColumnService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/DynamicColumnService.java
@@ -3,7 +3,6 @@
import com.ycl.platform.domain.entity.DynamicColumn;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.platform.domain.form.DynamicColumnForm;
-import com.ycl.platform.domain.query.DynamicColumnQuery;
import com.ycl.system.Result;
import java.util.List;
@@ -25,17 +24,10 @@
/**
* 淇敼
- * @param form
- * @return
+ *
+ * @param columnList
*/
- Result update(DynamicColumnForm form);
-
- /**
- * 鎵归噺鍒犻櫎
- * @param ids
- * @return
- */
- Result remove(List<String> ids);
+ Result update(List<DynamicColumnForm> columnList);
/**
* id鍒犻櫎
@@ -43,20 +35,6 @@
* @return
*/
Result removeById(String id);
-
- /**
- * 鍒嗛〉鏌ヨ
- * @param query
- * @return
- */
- Result page(DynamicColumnQuery query);
-
- /**
- * 鏍规嵁id鏌ユ壘
- * @param id
- * @return
- */
- Result detail(Integer id);
/**
* 鍒楄〃
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/DynamicColumnServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/DynamicColumnServiceImpl.java
index 14047f0..0097473 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/DynamicColumnServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/DynamicColumnServiceImpl.java
@@ -1,21 +1,24 @@
package com.ycl.platform.service.impl;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.ycl.platform.domain.entity.DynamicColumn;
import com.ycl.platform.mapper.DynamicColumnMapper;
import com.ycl.platform.service.DynamicColumnService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.form.DynamicColumnForm;
import com.ycl.platform.domain.vo.DynamicColumnVO;
-import com.ycl.platform.domain.query.DynamicColumnQuery;
import com.ycl.system.Result;
-import com.ycl.system.page.PageUtil;
+import com.ycl.utils.uuid.IdUtils;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.util.Assert;
+import org.springframework.util.StringUtils;
+import java.util.Date;
import java.util.List;
+import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -30,6 +33,8 @@
private final DynamicColumnMapper dynamicColumnMapper;
+ private final static String TABLE_NAME = "t_monitor";
+
/**
* 娣诲姞
* @param form
@@ -37,36 +42,47 @@
*/
@Override
public Result add(DynamicColumnForm form) {
+ Long num = new LambdaQueryChainWrapper<>(baseMapper)
+ .eq(DynamicColumn::getLabelValue, form.getLabelValue())
+ .eq(DynamicColumn::getTableName, TABLE_NAME)
+ .count();
+ if (num > 0) {
+ throw new RuntimeException("鍒楀悕绉颁笉鑳介噸澶�");
+ }
DynamicColumn entity = DynamicColumnForm.getEntityByForm(form, null);
+ entity.setPropName(IdUtils.timeAddRandomNO(3));
+ entity.setCreateTime(new Date());
+ entity.setTableName(TABLE_NAME);
baseMapper.insert(entity);
return Result.ok("娣诲姞鎴愬姛");
}
/**
* 淇敼
- * @param form
- * @return
+ *
+ * @param columnList@return
*/
@Override
- public Result update(DynamicColumnForm form) {
- DynamicColumn entity = baseMapper.selectById(form.getId());
+ public Result update(List<DynamicColumnForm> columnList) {
+ columnList.stream().filter(item -> StringUtils.hasText(item.getLabelValue())).forEach(column -> {
+ if (Objects.isNull(column.getId())) {
+ this.add(column);
+ } else {
+ Long num = new LambdaQueryChainWrapper<>(baseMapper)
+ .eq(DynamicColumn::getTableName, TABLE_NAME)
+ .eq(DynamicColumn::getLabelValue, column.getLabelValue())
+ .ne(DynamicColumn::getId, column.getId())
+ .count();
+ if (num == 0) {
+ new LambdaUpdateChainWrapper<>(baseMapper)
+ .eq(DynamicColumn::getId, column.getId())
+ .set(DynamicColumn::getLabelValue, column.getLabelValue())
+ .update();
+ }
- // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
- Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
- BeanUtils.copyProperties(form, entity);
- baseMapper.updateById(entity);
- return Result.ok("淇敼鎴愬姛");
- }
-
- /**
- * 鎵归噺鍒犻櫎
- * @param ids
- * @return
- */
- @Override
- public Result remove(List<String> ids) {
- baseMapper.deleteBatchIds(ids);
- return Result.ok("鍒犻櫎鎴愬姛");
+ }
+ });
+ return Result.ok("淇濆瓨鎴愬姛");
}
/**
@@ -81,36 +97,14 @@
}
/**
- * 鍒嗛〉鏌ヨ
- * @param query
- * @return
- */
- @Override
- public Result page(DynamicColumnQuery query) {
- IPage<DynamicColumnVO> page = PageUtil.getPage(query, DynamicColumnVO.class);
- baseMapper.getPage(page, query);
- return Result.ok().data(page.getRecords()).total(page.getTotal());
- }
-
- /**
- * 鏍规嵁id鏌ユ壘
- * @param id
- * @return
- */
- @Override
- public Result detail(Integer id) {
- DynamicColumnVO vo = baseMapper.getById(id);
- Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
- return Result.ok().data(vo);
- }
-
- /**
* 鍒楄〃
* @return
*/
@Override
public Result all() {
- List<DynamicColumn> entities = baseMapper.selectList(null);
+ List<DynamicColumn> entities = new LambdaQueryChainWrapper<>(baseMapper)
+ .orderByAsc(DynamicColumn::getCreateTime)
+ .list();
List<DynamicColumnVO> vos = entities.stream()
.map(entity -> DynamicColumnVO.getVoByEntity(entity, null))
.collect(Collectors.toList());
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
index 604549a..1b1f3f3 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -490,13 +490,14 @@
tm.lxbm,
dc.prop_name,
dc.label_value,
- dc.field_value
+ dcv.column_value
FROM
t_monitor tm
- LEFT JOIN t_dynamic_column dc ON tm.id = dc.ref_id
+ LEFT JOIN t_dynamic_column_value dcv ON tm.id = dcv.ref_id
+ LEFT JOIN t_dynamic_column dc ON dc.id = dcv.dynamic_column_id AND dc.table_name = #{query.tableName}
<where>
<if test="query.keyword != null and query.keyword != ''">
- AND (tm.name like concat('%', #{query.keyword}, '%') OR dc.field_value like concat('%', #{query.keyword}, '%'))
+ AND (tm.name like concat('%', #{query.keyword}, '%') OR dcv.column_value like concat('%', #{query.keyword}, '%'))
</if>
</where>
</select>
@@ -538,7 +539,7 @@
<resultMap id="dynamicColumnMap" type="com.ycl.platform.domain.vo.DynamicColumnVO">
<result column="prop_name" property="propName"/>
<result column="label_value" property="labelValue"/>
- <result column="field_value" property="fieldValue"/>
+ <result column="column_value" property="columnValue"/>
</resultMap>
</mapper>
--
Gitblit v1.8.0