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代码层处理 /** * 创建时间 */ 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") /** 关联一机一档id */ 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; } 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 = "关联一机一档id不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("关联一机一档id") 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) { ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java
@@ -23,5 +23,6 @@ /** 关键词 */ private String keyword; /** 动态列的表明条件 */ private String tableName = "t_monitor"; } ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java
@@ -16,7 +16,7 @@ public class DynamicColumnVO extends AbsVo { /** 关联一机一档id */ 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) { 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") 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); /** * 列表 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(); } // 为空抛IllegalArgumentException,做全局异常处理 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()); 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> @@ -542,7 +543,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>