晴为镜 2 сар өмнө
parent
commit
7b50c48e8e

+ 21 - 0
zkqy-business/src/main/java/com/zkqy/business/controller/DragTreeController.java

@@ -1,6 +1,7 @@
 package com.zkqy.business.controller;
 
 import com.zkqy.business.entity.DragTree;
+import com.zkqy.business.entity.dto.DragTreeNodeDto;
 import com.zkqy.business.entity.vo.DragTreeVo;
 import com.zkqy.business.service.IDragTreeService;
 import com.zkqy.common.annotation.Anonymous;
@@ -51,6 +52,26 @@ public class DragTreeController extends BaseController
         return AjaxResult.success(list);
     }
 
+
+    //新增树节点
+    @PostMapping("/node/add")
+    public AjaxResult treeNodeAdd(@RequestBody DragTreeNodeDto treeNodeDto)
+    {
+        return toAjax(dragTreeService.treeNodeAdd(treeNodeDto));
+    }
+    //新增树节点
+    @PostMapping("/node/update")
+    public AjaxResult treeNodeupdate(@RequestBody DragTreeNodeDto treeNodeDto)
+    {
+        return toAjax(dragTreeService.treeNodeUpdate(treeNodeDto));
+    }
+    //删除
+    @PostMapping("/node/delete")
+    public AjaxResult treeNodeDelete(@RequestBody DragTreeNodeDto treeNodeDto)
+    {
+        return toAjax(dragTreeService.treeNodeDelete(treeNodeDto));
+    }
+
     /**
      * 导出拖拽树结构列表
      */

+ 9 - 0
zkqy-business/src/main/java/com/zkqy/business/entity/DragTree.java

@@ -20,6 +20,7 @@ public class DragTree extends BaseEntity
 
     private String  treeShowLabel;
     private String  treeTableJoinTableCondition;
+    private String  treeTableJoinTablePrimaryKey;
 
     /** 唯一标识符,自增主键 */
     private Long id;
@@ -257,4 +258,12 @@ public class DragTree extends BaseEntity
     public void setTreeTableJoinTableCondition(String treeTableJoinTableCondition) {
         this.treeTableJoinTableCondition = treeTableJoinTableCondition;
     }
+
+    public String getTreeTableJoinTablePrimaryKey() {
+        return treeTableJoinTablePrimaryKey;
+    }
+
+    public void setTreeTableJoinTablePrimaryKey(String treeTableJoinTablePrimaryKey) {
+        this.treeTableJoinTablePrimaryKey = treeTableJoinTablePrimaryKey;
+    }
 }

+ 90 - 0
zkqy-business/src/main/java/com/zkqy/business/entity/dto/DragTreeNodeDto.java

@@ -0,0 +1,90 @@
+package com.zkqy.business.entity.dto;
+
+public class DragTreeNodeDto {
+    //树的表名
+    private String tableName;
+
+    //主键名
+    private String primaryName;
+
+    private String primaryValue;
+
+    //字段名
+    private String columnName;
+
+    //字段值
+    private String columnValue;
+
+    //指向上节点的字段名
+    private String parentName;
+
+    private String parentValue;
+
+    // 增加的层级,是本级还是下一级 cur next
+    private String addLevel;
+
+    public String getTableName() {
+        return tableName;
+    }
+
+    public void setTableName(String tableName) {
+        this.tableName = tableName;
+    }
+
+
+    public String getColumnName() {
+        return columnName;
+    }
+
+    public void setColumnName(String columnName) {
+        this.columnName = columnName;
+    }
+
+    public String getColumnValue() {
+        return columnValue;
+    }
+
+    public void setColumnValue(String columnValue) {
+        this.columnValue = columnValue;
+    }
+
+    public String getPrimaryName() {
+        return primaryName;
+    }
+
+    public void setPrimaryName(String primaryName) {
+        this.primaryName = primaryName;
+    }
+
+    public String getPrimaryValue() {
+        return primaryValue;
+    }
+
+    public void setPrimaryValue(String primaryValue) {
+        this.primaryValue = primaryValue;
+    }
+
+    public String getParentName() {
+        return parentName;
+    }
+
+    public void setParentName(String parentName) {
+        this.parentName = parentName;
+    }
+
+    public String getParentValue() {
+        return parentValue;
+    }
+
+    public void setParentValue(String parentValue) {
+        this.parentValue = parentValue;
+    }
+
+    public String getAddLevel() {
+        return addLevel;
+    }
+
+    public void setAddLevel(String addLevel) {
+        this.addLevel = addLevel;
+    }
+}

+ 13 - 0
zkqy-business/src/main/java/com/zkqy/business/mapper/DragTreeMapper.java

@@ -3,6 +3,7 @@ package com.zkqy.business.mapper;
 
 
 import com.zkqy.business.entity.DragTree;
+import com.zkqy.business.entity.dto.DragTreeNodeDto;
 import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 import org.apache.ibatis.annotations.Param;
 
@@ -88,4 +89,16 @@ public interface DragTreeMapper
      * @return 结果
      */
     public int deleteDragTreeByIds(Long[] ids);
+
+    int insertTreeNodeCur(DragTreeNodeDto treeNodeDto);
+
+    int insertTreeNodeNext(DragTreeNodeDto treeNodeDto);
+
+    int updateTreeNode(DragTreeNodeDto treeNodeDto);
+
+    int deleteTreeNodeByIds(@Param("treeMapData") List<String> treeMapData, @Param("tableName") String tableName, @Param("primaryName") String primaryName);
+
+    List<Map<String, String>> selectTreeNodeList(@Param("tableName") String tableName);
+
+
 }

+ 7 - 0
zkqy-business/src/main/java/com/zkqy/business/service/IDragTreeService.java

@@ -3,6 +3,7 @@ package com.zkqy.business.service;
 
 
 import com.zkqy.business.entity.DragTree;
+import com.zkqy.business.entity.dto.DragTreeNodeDto;
 import com.zkqy.business.entity.vo.DragTreeVo;
 
 import java.util.List;
@@ -70,4 +71,10 @@ public interface IDragTreeService
      * @return
      */
     DragTreeVo recursionTree(String treeTableKey);
+
+    int treeNodeAdd(DragTreeNodeDto treeNodeDto);
+
+    int treeNodeUpdate(DragTreeNodeDto treeNodeDto);
+
+    int treeNodeDelete(DragTreeNodeDto treeNodeDto);
 }

+ 89 - 4
zkqy-business/src/main/java/com/zkqy/business/service/impl/DragTreeServiceImpl.java

@@ -3,6 +3,7 @@ package com.zkqy.business.service.impl;
 import com.alibaba.fastjson2.JSON;
 import com.fasterxml.jackson.databind.json.JsonMapper;
 import com.zkqy.business.entity.DragTree;
+import com.zkqy.business.entity.dto.DragTreeNodeDto;
 import com.zkqy.business.entity.vo.DragTreeVo;
 import com.zkqy.business.mapper.DragTreeMapper;
 import com.zkqy.business.service.IDragTreeService;
@@ -11,13 +12,12 @@ import com.zkqy.business.utils.TreeBuilder;
 import com.zkqy.common.exception.base.BaseException;
 import com.zkqy.common.utils.DateUtils;
 import com.zkqy.common.utils.SecurityUtils;
-import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.common.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 拖拽树结构Service业务层处理
@@ -114,7 +114,7 @@ public class DragTreeServiceImpl implements IDragTreeService
      */
     @Override
     public DragTreeVo recursionTree(String treeTableKey) {
-        treeTableKey="48e90c10-147f-4bfa-a1a0-f702ba93b5c8";
+//        treeTableKey="48e90c10-147f-4bfa-a1a0-f702ba93b5c8";
         // 首先通过tableKey查询模版数据
         DragTree dragTree = dragTreeMapper.selectDragTreeByTreeTableKey(treeTableKey);
         // 数据表名称 ammunition_plan_information_intermediate_table
@@ -123,6 +123,8 @@ public class DragTreeServiceImpl implements IDragTreeService
         String tableId = dragTree.getTreeTablePrimaryKey();
         // 递归列
         String treeTableDgl = dragTree.getTreeTableDgl();
+        // 下划线转驼峰
+        treeTableDgl = StringUtils.toCamelCase(treeTableDgl);
         // 展示字段(label)
         String treeShowLabel = dragTree.getTreeShowLabel();
         // 当前表字段的所有列名
@@ -159,4 +161,87 @@ public class DragTreeServiceImpl implements IDragTreeService
         //查询对应的表格信息
         return dragTreeVo;
     }
+
+    @Override
+    public int treeNodeAdd(DragTreeNodeDto treeNodeDto) {
+        Boolean legalParam = isLegalParam(treeNodeDto);
+        //增加情况额外判断
+        String parentValue = treeNodeDto.getParentValue();
+        String addLevel = treeNodeDto.getAddLevel();
+        if (legalParam.equals(false) || StringUtils.isBlank(parentValue) || StringUtils.isBlank(addLevel)){
+            return -1;
+        }
+        //当前层级添加
+        if (addLevel.equals("cur")){
+            return dragTreeMapper.insertTreeNodeCur(treeNodeDto);
+        //下一层级添加
+        }else if(addLevel.equals("next")){
+            return dragTreeMapper.insertTreeNodeNext(treeNodeDto);
+        }else{
+            return -1;
+        }
+    }
+
+    @Override
+    public int treeNodeUpdate(DragTreeNodeDto treeNodeDto) {
+        Boolean legalParam = isLegalParam(treeNodeDto);
+        if (legalParam.equals(false)){
+            return -1;
+        }
+        return dragTreeMapper.updateTreeNode(treeNodeDto);
+    }
+
+    @Override
+    public int treeNodeDelete(DragTreeNodeDto treeNodeDto) {
+        Boolean legalParam = isLegalParam(treeNodeDto);
+        if (legalParam.equals(false)){
+            return -1;
+        }
+        String tableName = treeNodeDto.getTableName();
+        String primaryValue = treeNodeDto.getPrimaryValue();
+        String primaryName = treeNodeDto.getPrimaryName();
+        String parentName = treeNodeDto.getParentName();
+        // 查询出所有的数据
+        List<Map<String, String>> mapList = dragTreeMapper.selectTreeNodeList(tableName);
+        //递归得到要删除的树形id集合
+        List<String> ids = new ArrayList<>();
+        // 下划线转驼峰
+        parentName = StringUtils.toCamelCase(parentName);
+        List<String> treeMapData = TreeBuilder.getTreeIdList(mapList,primaryValue,primaryName,parentName,ids);
+        // 删除这些id
+        return dragTreeMapper.deleteTreeNodeByIds(treeMapData,tableName,primaryName);
+    }
+
+    //参数校验
+    public Boolean isLegalParam(DragTreeNodeDto treeNodeDto){
+        if (treeNodeDto == null){
+            return false;
+        }
+        boolean a = StringUtils.isNotBlank(treeNodeDto.getTableName());
+        boolean a1 = StringUtils.isNotBlank(treeNodeDto.getPrimaryName());
+        boolean a2 = StringUtils.isNotBlank(treeNodeDto.getPrimaryValue());
+        boolean a3 = StringUtils.isNotBlank(treeNodeDto.getColumnName());
+        boolean a4 = StringUtils.isNotBlank(treeNodeDto.getColumnValue());
+        boolean a5 = StringUtils.isNotBlank(treeNodeDto.getParentName());
+        if (a && a1 && a2 && a3 && a4 && a5){
+            return true;
+        }
+        return false;
+    }
+    public static void main(String[] args) {
+        String s = "parentId";
+        String s1 = "asdsadas";
+        String s2 = "   ";
+        String s3 = "asd_asdd_as";
+        String s4 = StringUtils.toCamelCase(s3);
+        String s5 = StringUtils.toCamelCase(s);
+        String s6 = StringUtils.toCamelCase(s1);
+        String s7 = StringUtils.toCamelCase(s2);
+        System.out.println(s4);
+        System.out.println(s5);
+        System.out.println(s6);
+        System.out.println(s7);
+    }
+
+
 }

+ 24 - 4
zkqy-business/src/main/java/com/zkqy/business/utils/TreeBuilder.java

@@ -28,6 +28,24 @@ public class TreeBuilder {
                 .collect(Collectors.toList());
     }
 
+    // 递归的找到所有本节点和子节点的id
+    public static List<String> getTreeIdList(List<Map<String, String>> allNodes, String parentId,String tableId,String treeTableDgl,List<String> resIds) {
+        resIds.add(parentId);
+         allNodes.stream()
+                .filter(node ->Objects.equals(convertToString(parentId), convertToString(node.get(treeTableDgl))))
+                .map(parentNode -> {
+                    // 确保 tableId 对应的值被正确地转换为字符串
+                    Object tableIdObj = parentNode.get(tableId);
+                    String tableIdStr = convertToString(tableIdObj);
+                    System.out.println(tableIdStr);
+                    getTreeIdList(allNodes, tableIdStr, tableId,treeTableDgl,resIds);
+                    return parentNode;
+                })
+                .collect(Collectors.toList());
+        List<String> resIdList = resIds.stream().distinct().collect(Collectors.toList());
+        return resIdList;
+    }
+
     private static String convertToString(Object obj) {
         if (obj instanceof Integer) {
             return ((Integer) obj).toString();
@@ -48,7 +66,7 @@ public class TreeBuilder {
                 new HashMap<String, String>() {{
                     put("id", "1");
                     put("name", "根节点");
-                    put("parentId", null); // 根节点
+                    put("parentId", "0"); // 根节点
                 }},
                 new HashMap<String, String>() {{
                     put("id", "2");
@@ -67,9 +85,11 @@ public class TreeBuilder {
                 }});
 
         // 构建树形结构
-        List<Map<String, ?>> tree = buildTree(mapList, null,"id","parentId");
-        String jsonString = JSON.toJSONString(tree);
-        System.out.println(jsonString);
+        ArrayList<String> strings = new ArrayList<>();
+        List<String> treeIdList = getTreeIdList(mapList, "2", "id", "parentId", strings);
+//        List<Map<String, ?>> tree = buildTree(mapList, "1","id","parentId");
+//        String jsonString = JSON.toJSONString(tree);
+//        System.out.println(jsonString);
         // 打印结果
 //        printTree(tree);
     }

+ 37 - 5
zkqy-business/src/main/resources/mapper/dragmapper/DragTreeMapper.xml

@@ -27,10 +27,11 @@
         <result property="treeTableKey" column="tree_table_key"/>
         <result property="treeShowLabel" column="tree_show_label"/>
         <result property="treeTableJoinTableCondition" column="tree_table_join_table_condition"/>
+        <result property="treeTableJoinTablePrimaryKey" column="tree_table_join_table_primary_key"/>
     </resultMap>
 
     <sql id="selectDragTreeVo">
-        select id, menu_id, menu_name, tree_desc, tree_table_name, tree_table_primary_key, tree_table_dgl, tree_table_condition, tree_table_join_table, table_name_des, del_flag, create_by, create_by_id, create_time, update_by, update_by_id, update_time,table_id,tree_table_key,tree_show_label,tree_table_join_table_condition from {DBNAME}.drag_tree
+        select id, menu_id, menu_name, tree_desc, tree_table_name, tree_table_primary_key, tree_table_dgl, tree_table_condition, tree_table_join_table, table_name_des, del_flag, create_by, create_by_id, create_time, update_by, update_by_id, update_time,table_id,tree_table_key,tree_show_label,tree_table_join_table_condition,tree_table_join_table_primary_key from {DBNAME}.drag_tree
     </sql>
 
     <select id="selectDragTreeList" parameterType="com.zkqy.business.entity.DragTree" resultMap="DragTreeResult">
@@ -49,6 +50,9 @@
             <if test="updateById != null "> and update_by_id = #{updateById}</if>
             <if test="tableId != null">and table_id=#{tableId},</if>
             <if test="treeTableKey!=null">and tree_table_key=#{treeTableKey}</if>
+            <if test="treeShowLabel!=null">and tree_show_label=#{treeShowLabel}</if>
+            <if test="treeTableJoinTableCondition!=null">and tree_table_join_table_condition=#{treeTableJoinTableCondition}</if>
+            <if test="treeTableJoinTablePrimaryKey!=null">and tree_table_join_table_primary_key=#{treeTableJoinTablePrimaryKey}</if>
         </where>
     </select>
 
@@ -74,8 +78,10 @@
         WHERE TABLE_SCHEMA = #{dbname}
           AND TABLE_NAME = #{tableName}
     </select>
-
-
+    <select id="selectTreeNodeList" resultType="java.util.Map">
+        select *
+        from {DBNAME}.${tableName}
+    </select>
 
 
     <insert id="insertDragTree" parameterType="com.zkqy.business.entity.DragTree" useGeneratedKeys="true" keyProperty="id">
@@ -99,6 +105,9 @@
             <if test="updateTime != null">update_time,</if>
             <if test="tableId != null">table_id,</if>
             <if test="treeTableKey!=null">tree_table_key,</if>
+            <if test="treeShowLabel!=null">tree_show_label,</if>
+            <if test="treeTableJoinTableCondition!=null">tree_table_join_table_condition,</if>
+            <if test="treeTableJoinTablePrimaryKey!=null">tree_table_join_table_primary_key,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="menuId != null">#{menuId},</if>
@@ -118,9 +127,23 @@
             <if test="updateById != null">#{updateById},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="tableId != null">#{tableId},</if>
-            <if test="treeTableKey!=null">#{treeTableKey}</if>
+            <if test="treeTableKey!=null">#{treeTableKey},</if>
+            <if test="treeShowLabel!=null">#{treeShowLabel},</if>
+            <if test="treeTableJoinTableCondition!=null">#{treeTableJoinTableCondition},</if>
+            <if test="treeTableJoinTablePrimaryKey!=null">#{treeTableJoinTablePrimaryKey},</if>
         </trim>
     </insert>
+    <insert id="insertTreeNodeCur" parameterType="com.zkqy.business.entity.dto.DragTreeNodeDto">
+        insert into {DBNAME}.${tableName} (${columnName},${parentName}) values(#{columnValue},#{parentValue})
+    </insert>
+    <insert id="insertTreeNodeNext" parameterType="com.zkqy.business.entity.dto.DragTreeNodeDto">
+        insert into {DBNAME}.${tableName} (${columnName},${parentName}) values(#{columnValue},#{primaryValue})
+    </insert>
+    <update id="updateTreeNode">
+        update {DBNAME}.${tableName}
+        set ${columnName} = #{columnValue}
+        where ${primaryName} = #{primaryValue}
+    </update>
 
     <update id="updateDragTree" parameterType="com.zkqy.business.entity.DragTree">
         update {DBNAME}.drag_tree
@@ -142,7 +165,10 @@
             <if test="updateById != null">update_by_id = #{updateById},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="tableId != null">table_id=#{tableId},</if>
-            <if test="treeTableKey!=null">tree_table_key=#{treeTableKey}</if>
+            <if test="treeTableKey!=null">tree_table_key=#{treeTableKey},</if>
+            <if test="treeShowLabel!=null">tree_show_label=#{treeShowLabel}</if>
+            <if test="treeTableJoinTableCondition!=null">tree_table_join_table_condition=#{treeTableJoinTableCondition},</if>
+            <if test="treeTableJoinTablePrimaryKey!=null">tree_table_join_table_primary_key=#{treeTableJoinTablePrimaryKey},</if>
         </trim>
         where id = #{id}
     </update>
@@ -157,5 +183,11 @@
             #{id}
         </foreach>
     </delete>
+    <delete id="deleteTreeNodeByIds">
+        delete from {DBNAME}.${tableName} where ${primaryName} in
+        <foreach item="id" collection="treeMapData" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
 
 </mapper>

+ 0 - 10
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/CommonServiceImpl.java

@@ -355,19 +355,9 @@ public class CommonServiceImpl implements ICommonService {
         // 可能会存在多个时间范围的查询,根据查询字段名称做筛选条件
         Map<String, Object> timeMap = JSONObject.parseObject(queryMap.get("timehorizon") != null ? queryMap.get("timehorizon").toString() : String.valueOf(new HashMap<String, Object>()));
 
-
         String beginTimeSql = " AND date_format(#{field},'%Y%m%d%H%i%s') >= date_format('#{beginTime}','%Y%m%d%H%i%s')";
         String endTimeSql = " AND date_format(#{field},'%Y%m%d%H%i%s') <= date_format('#{endTime}','%Y%m%d%H%i%s')";
 
-
-        //		<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
-        //			AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
-        //		</if>
-        //		<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
-        //			AND date_format(u.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
-        //		</if>
-
-
         //  处理时间sql拼接
         timeMap.keySet().forEach(item -> {
             Map<String, Object> endtime = (Map) timeMap.get(item);