xiangpei
2024-08-16 9d30f3aba92b1fe90eaecd486113f544f0f18b7c
资产管理动态字段
10个文件已修改
195 ■■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DynamicColumn.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/form/DynamicColumnForm.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/controller/DynamicColumnController.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/DynamicColumnService.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/DynamicColumnServiceImpl.java 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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/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);
}
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>
@@ -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>