From 9d30f3aba92b1fe90eaecd486113f544f0f18b7c Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 16 八月 2024 16:41:11 +0800
Subject: [PATCH] 资产管理动态字段

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/DynamicColumnServiceImpl.java |   90 +++++++++++++++++++++------------------------
 1 files changed, 42 insertions(+), 48 deletions(-)

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());

--
Gitblit v1.8.0