Эх сурвалжийг харах

Merge branch 'test-merge' of http://219.151.181.73:3000/zhuwei/bladex into test-merge

lvy 1 өдөр өмнө
parent
commit
5d2b5e96a6

+ 6 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsNodeTableVO.java

@@ -94,4 +94,10 @@ public class WbsNodeTableVO implements Serializable {
     private String nodeType;
     private Integer wbsType;
 
+    @ApiModelProperty(value = "父级节点名称")
+    private String parentName;
+
+    @ApiModelProperty(value = "祖级路径")
+    private String ancestorPId;
+
 }

+ 15 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeSynchronousRecordController.java

@@ -16,6 +16,7 @@ import org.springblade.manager.service.WbsTreeSynchronousRecordService;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
+import org.springblade.manager.vo.WbsNodeTableVO;
 import org.springblade.manager.vo.WbsTreeSynchronousRecordVo;
 import org.springframework.web.bind.annotation.*;
 
@@ -210,5 +211,19 @@ public class WbsTreeSynchronousRecordController {
                 .eq(WbsTreeSynchronousRecord::getId, id)
         ));
     }
+    /**
+     * 同步其他表单 推荐表单查询
+     */
+    @GetMapping("getRecommendTable")
+    @ApiOperation(value = "同步其他表单 推荐表单查询", notes = "传入表单projectId、pKeyId")
+    public R<List<WbsNodeTableVO>> getRecommendTable(@RequestParam Long projectId,@RequestParam Long pKeyId) {
+        if (projectId == null) {
+            return R.fail("项目Id不能为空");
+        }
+        if (pKeyId == null) {
+            return R.fail("表单pKeyId不能为空");
+        }
+        return R.data(this.mWbsTreeSynchronousRecordService.getRecommendTable(projectId,pKeyId));
+    }
 }
 

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java

@@ -158,4 +158,6 @@ public interface WbsTreePrivateMapper extends EasyBaseMapper<WbsTreePrivate> {
     List<Long> getContractAllLogWbsNodeIds(@Param("contractId") Long contractId);
 
     List<WbsTreePrivate> selectAllChildNode(@Param("leftIds") List<String> leftIds);
+
+    List<WbsNodeTableVO> getRecommendTable(WbsTreePrivate wbsTreePrivate);
 }

+ 43 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -1086,4 +1086,47 @@
             )
         </if>
     </select>
+    <select id="getRecommendTable" resultType="org.springblade.manager.vo.WbsNodeTableVO">
+        SELECT
+            a.p_key_id AS "pKeyId",
+            a.node_name AS tableName,
+            IFNULL(if(length(trim(a.full_name)) > 0, a.full_name, a.node_name), a.node_name) AS fullName,
+            a.table_owner AS tableOwner,
+            case
+                when a.table_type in (1, 9) then 1
+                when a.table_type in (2, 10) then 2
+                else a.table_type
+                end as tableType,
+            b.node_name parentName,
+            a.ancestors_p_id as ancestorPId
+        FROM
+            m_wbs_tree_private a
+            left join m_wbs_tree_private b on a.p_id = b.p_key_id
+        WHERE
+            a.project_id = #{projectId}
+            AND a.is_deleted = 0
+            <choose>
+                <when test="initTableName == null or initTableName == ''">
+                    AND a.id IN (
+                        SELECT
+                            a.id
+                        FROM
+                            m_wbs_tree a
+                        INNER JOIN ( SELECT init_table_name, wbs_id FROM m_wbs_tree WHERE id = #{id} ) b ON a.wbs_id = b.wbs_id
+                        AND a.init_table_name = b.init_table_name
+                        WHERE a.id != #{id}
+                    )
+                </when>
+                <otherwise>
+                    AND a.init_table_name = #{initTableName}
+                </otherwise>
+            </choose>
+            AND a.excel_id IS NOT NULL
+            AND a.init_table_name IS NOT NULL
+            AND a.html_url IS NOT NULL
+            AND a.init_table_id IS NOT NULL
+            GROUP BY
+                a.excel_id,
+                a.init_table_name
+    </select>
 </mapper>

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/WbsTreeSynchronousRecordService.java

@@ -6,6 +6,7 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.entity.WbsTreeSynchronousRecord;
+import org.springblade.manager.vo.WbsNodeTableVO;
 import org.springblade.manager.vo.WbsTreeSynchronousRecordVo;
 
 import java.util.List;
@@ -22,4 +23,6 @@ public interface WbsTreeSynchronousRecordService extends IService<WbsTreeSynchro
     List<WbsTreeSynchronousRecordVo> getProjectTemplate(String nodeIds);
 
     WbsTreeSynchronousRecord getNodeStatus(Long id);
+
+    List<WbsNodeTableVO> getRecommendTable(Long projectId, Long pKeyId);
 }

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -628,7 +628,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             }else if(rightNodeType==18){
                 rightNodeType=2;
             }else {
-                rightNodeType=rightNodeType++;
+                rightNodeType=rightNodeType+1;
             }
             Set<Integer> typeSet = leftLists.stream().filter(o -> o.getType()==1).map(o -> o.getNodeType()).collect(Collectors.toSet());
             for (Integer type : typeSet) {

+ 57 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeSynchronousRecordServiceImpl.java

@@ -1,11 +1,9 @@
 package org.springblade.manager.service.impl;
 
 import cn.hutool.core.date.DateTime;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.redisson.api.RedissonClient;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.common.utils.SystemUtils;
 import org.springblade.core.log.exception.ServiceException;
@@ -15,6 +13,7 @@ import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.manager.entity.*;
 import org.springblade.manager.mapper.*;
 import org.springblade.manager.service.WbsTreeSynchronousRecordService;
+import org.springblade.manager.vo.WbsNodeTableVO;
 import org.springblade.manager.vo.WbsTreeSynchronousRecordVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -202,6 +201,58 @@ public class WbsTreeSynchronousRecordServiceImpl extends ServiceImpl<WbsTreeSync
         return null;
     }
 
+    @Override
+    public List<WbsNodeTableVO> getRecommendTable(Long projectId, Long pKeyId) {
+        //查询当前节点是否存在 initTableName
+        WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectById(pKeyId);
+        List<WbsNodeTableVO> list = wbsTreePrivateMapper.getRecommendTable(wbsTreePrivate);
+        list.sort((obj1, obj2) -> {
+            String ancestors1 = obj1.getAncestorPId();
+            String ancestors2 = obj2.getAncestorPId();
+            return compareAncestors(ancestors1, ancestors2);
+        });
+        return list;
+    }
+
+    //排序规则
+    private int compareAncestors(String ancestors1, String ancestors2) {
+        if (ancestors1 == null && ancestors2 == null) return 0;
+        if (ancestors1 == null) return -1;
+        if (ancestors2 == null) return 1;
+
+        String[] arr1 = ancestors1.split(",");
+        String[] arr2 = ancestors2.split(",");
+
+        int minLength = Math.min(arr1.length, arr2.length);
+
+        // 比较相同索引的ID
+        for (int i = 0; i < minLength; i++) {
+            String id1 = arr1[i].trim();
+            String id2 = arr2[i].trim();
+
+            if (!id1.equals(id2)) {
+                // 查询数据库获取排序值
+                Integer sort1 = wbsTreePrivateMapper.selectById(id1).getSort();
+                Integer sort2 = wbsTreePrivateMapper.selectById(id2).getSort();
+
+                // 比较排序值
+                if (sort1 != null && sort2 != null) {
+                    return Integer.compare(sort1, sort2);
+                } else if (sort1 != null) {
+                    return -1;
+                } else if (sort2 != null) {
+                    return 1;
+                } else {
+                    return id1.compareTo(id2); // 降级方案
+                }
+            }
+        }
+
+        // 如果共同部分都相同,长度短的排在前面(父级在子级前面)
+        return Integer.compare(arr1.length, arr2.length);
+    }
+
+
     @Override
     public List<WbsTreeSynchronousRecordVo> getProjectTemplate(String nodeIds) {
 
@@ -290,6 +341,10 @@ public class WbsTreeSynchronousRecordServiceImpl extends ServiceImpl<WbsTreeSync
                     .eq(WbsTreeSynchronousRecord::getId, wbsTreeSynchronousRecord.getId()));
         }
     }
+
+
+
+
 }
 
 

+ 3 - 3
blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictBizMapper.xml

@@ -40,9 +40,9 @@
         <if test="notRoot != null and notRoot != ''">
             and parent_id > 0
         </if>
-        <if test="tenantId != null and tenantId != ''">
-            and tenant_id = #{tenantId}
-        </if>
+<!--        <if test="tenantId != null and tenantId != ''">-->
+<!--            and tenant_id = #{tenantId}-->
+<!--        </if>-->
         and is_sealed = 0 and is_deleted = 0
         order by sort
     </select>