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