Explorar el Código

Merge branch 'dev' of http://219.151.181.73:3000/zhuwei/bladex into lihb

LHB hace 2 meses
padre
commit
755e49c530
Se han modificado 16 ficheros con 343 adiciones y 5 borrados
  1. 10 0
      blade-common/src/main/java/org/springblade/common/utils/ForestNodeManagerEx.java
  2. 21 0
      blade-common/src/main/java/org/springblade/common/utils/ForestNodeMergerEx.java
  3. 3 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTree.java
  4. 1 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTreeContract.java
  5. 3 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ContractInfo.java
  6. 107 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ArchiveTreeVO3.java
  7. 6 0
      blade-service/blade-business/src/main/java/org/springblade/business/controller/ArchiveFileController.java
  8. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/EntrustInfoMapper.xml
  9. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/IArchiveFileService.java
  10. 27 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ArchiveFileServiceImpl.java
  11. 3 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeController.java
  12. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeMapper.java
  13. 36 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeMapper.xml
  14. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IArchiveTreeService.java
  15. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java
  16. 117 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java

+ 10 - 0
blade-common/src/main/java/org/springblade/common/utils/ForestNodeManagerEx.java

@@ -35,4 +35,14 @@ public class ForestNodeManagerEx<T extends INodeEx<T>> {
         });
         return roots;
     }
+    public List<T> getStartRoot() {
+        List<T> roots = new ArrayList();
+        this.nodeMap.forEach((key, node) -> {
+            if ((node.getParentId() != null && node.getParentId() == 0L)) {
+                roots.add(node);
+            }
+
+        });
+        return roots;
+    }
 }

+ 21 - 0
blade-common/src/main/java/org/springblade/common/utils/ForestNodeMergerEx.java

@@ -33,6 +33,27 @@ public class ForestNodeMergerEx {
 
         return forestNodeManager.getRoot();
     }
+    public static <T extends INodeEx<T>> List<T> mergeRoot(List<T> items) {
+
+        for (T item : items) {
+            item.clearChildren();
+        }
+
+        ForestNodeManagerEx<T> forestNodeManager = new ForestNodeManagerEx(items);
+        items.forEach((forestNode) -> {
+            if (forestNode.getParentId() != null && forestNode.getParentId() != 0L) {
+                INodeEx<T> node = forestNodeManager.getTreeNodeAt(forestNode.getParentId());
+                if (node != null) {
+                    node.getChildren().add(forestNode);
+                } else {
+                    forestNodeManager.addParentId(forestNode.getId());
+                }
+            }
+
+        });
+
+        return forestNodeManager.getStartRoot();
+    }
 
     public static <T extends INodeEx<T>> List<T> mergeOnlyRoot(List<T> items) {
 

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTree.java

@@ -185,6 +185,9 @@ public class ArchiveTree extends BaseEntity {
     @ApiModelProperty(value = "试验资料类型(归档树)对应字典试验节点类型,数字逗号拼接")
     private String contractTrialType;
 
+    @ApiModelProperty(value = "保存期限")
+    private String storageTime;
+
     public ArchiveTree() {
     }
 

+ 1 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTreeContract.java

@@ -325,6 +325,7 @@ public class ArchiveTreeContract extends BaseEntity {
         this.isUploadFileDisplayConfigurationTree = archiveTree.getIsUploadFileDisplayConfigurationTree();
         this.contractLogType = archiveTree.getContractLogType();
         this.contractTrialType = archiveTree.getContractTrialType();
+        this.storageTime=archiveTree.getStorageTime();
     }
 
     public void sync(ArchiveTreeVO2 archiveTree) {

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ContractInfo.java

@@ -178,6 +178,9 @@ public class ContractInfo extends BaseEntity {
     @ApiModelProperty(value = "模板引用 1.模版节点 2.底层节点")
     private Integer templateType;
 
+    @ApiModelProperty(value = "卷盒规格")
+    private String specification;
+
     public BigDecimal getProjectMileage() {
         if (projectMileage == null){
             return null;

+ 107 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ArchiveTreeVO3.java

@@ -0,0 +1,107 @@
+package org.springblade.manager.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.common.utils.INodeEx;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+@Data
+public class ArchiveTreeVO3 implements INodeEx<ArchiveTreeVO3> {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "主键id")
+    private Long id;
+
+
+    /**
+     * 父节点ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "父级id")
+    private Long parentId;
+
+    /**
+     * title
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "节点名称")
+    private String title;
+
+    /**
+     * 子孙节点
+     */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    @ApiModelProperty(value = "子孙节点")
+    private List<ArchiveTreeVO3> children;
+
+    /**
+     * 是否有子孙节点
+     */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    @ApiModelProperty(value = "是否有子孙节点")
+    private Boolean hasChildren;
+
+    @Override
+    public List<ArchiveTreeVO3> getChildren() {
+        if (this.children == null) {
+            this.children = new ArrayList<>();
+        }
+        return this.children;
+    }
+
+    @Override
+    public void clearChildren() {
+        if (children != null) {
+            children.clear();
+        }
+    }
+
+    /**
+     * 显示层级(用于显示控制)
+     */
+    @ApiModelProperty(value = "显示层级(用于显示控制)")
+    private String displayHierarchy;
+
+
+    @JsonSerialize(
+            using = ToStringSerializer.class
+    )
+    private Long value;
+    /**
+     * 是否显示
+     */
+    private Integer isDisplayTree;
+
+
+
+    /**
+     * 关联类型
+     */
+    @ApiModelProperty(value = "关联类型")
+    private Integer associationType;
+
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+
+
+
+
+    /**
+     * 选中的节点集合
+     */
+    private List<String> selectAllNodes;
+    private String treeSort;
+
+    private String ancestors;
+
+}

+ 6 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/ArchiveFileController.java

@@ -417,6 +417,12 @@ public class ArchiveFileController extends BladeController {
 
         return R.data(this.archiveFileService.selectArchiveFilePage(queryVo));
     }
+    @PostMapping("/sortByFileTime")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("按文件日期排序")
+    public R<Boolean> sortByFileTime(@RequestParam Long nodeId){
+        return R.data(this.archiveFileService.sortByFileTime(nodeId));
+    }
 
     /**
      * 批量新增

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/EntrustInfoMapper.xml

@@ -69,7 +69,7 @@
             and a.status = #{param2.status}
         </if>
         <if test="param2.entrustName != null and param2.entrustName != ''">
-            AND a.entrust_name like CONCAT(CONCAT('%', #{param2.entrustName}), '%')
+            AND ( a.entrust_name like CONCAT(CONCAT('%', #{param2.entrustName}), '%') or a.entrust_no like CONCAT(CONCAT('%', #{param2.entrustName}), '%') )
         </if>
     </select>
 

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/IArchiveFileService.java

@@ -74,4 +74,6 @@ public interface IArchiveFileService extends BaseService<ArchiveFile> {
     public void addArchiveFileEx(List<ArchiveFile> files);
 
     public void updateArchiveFileEx(List<ArchiveFile> files);
+
+    boolean sortByFileTime(Long nodeId);
 }

+ 27 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ArchiveFileServiceImpl.java

@@ -307,4 +307,31 @@ public class ArchiveFileServiceImpl extends BaseServiceImpl<ArchiveFileMapper, A
         });
     }
 
+    @Override
+    public boolean sortByFileTime(Long nodeId) {
+     String sql="SELECT id,file_time FROM u_archive_file WHERE node_id IN (SELECT id FROM m_archive_tree_contract WHERE  FIND_IN_SET("+nodeId+",ancestors)) AND is_deleted=0";
+     List<ArchiveFile> list=jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(ArchiveFile.class));
+     if(list.size()>0){
+         Map<String, List<ArchiveFile>> group = list.stream()
+             .collect(Collectors.groupingBy(ArchiveFile::getNodeId));
+         for (Map.Entry<String, List<ArchiveFile>> entry : group.entrySet()) {
+             List<ArchiveFile> archiveFiles = entry.getValue();
+             archiveFiles.sort((a, b) -> {
+                 if (a.getFileTime() == null && b.getFileTime() == null) return 0;
+                 if (a.getFileTime() == null) return -1;
+                 if (b.getFileTime() == null) return 1;
+                 return a.getFileTime().compareTo(b.getFileTime());
+             });
+             int sort = 1;
+             for (ArchiveFile file : archiveFiles) {
+                 file.setSort(sort++);
+             }
+             this.updateBatchById(archiveFiles);
+         }
+         return true;
+     }else {
+         return false;
+     }
+    }
+
 }

+ 3 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeController.java

@@ -18,6 +18,7 @@ import org.springblade.manager.dto.ArchiveTreeDTO;
 import org.springblade.manager.dto.ArchiveTreeSortDTO;
 import org.springblade.manager.service.IArchiveTreeContractService;
 import org.springblade.manager.vo.ArchiveTreeVO2;
+import org.springblade.manager.vo.ArchiveTreeVO3;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springblade.manager.entity.ArchiveTree;
@@ -149,9 +150,9 @@ public class ArchiveTreeController extends BladeController {
             @ApiImplicitParam(name = "nodeType", value = "'null'=全加载 '1'=关联电子原生文件类型树 '2'=文件上传类型树"),
             @ApiImplicitParam(name = "wbsId", value = "对应的wbs树,用于展示关联质检节点下的"),
     })
-    public R<List<ArchiveTreeVO2>> tree(Long projectId, Integer disPlayTree, Integer nodeType, String wbsId) {
+    public R<List<ArchiveTreeVO3>> tree(Long projectId, Integer disPlayTree, Integer nodeType, String wbsId) {
 
-        List<ArchiveTreeVO2> tree = archiveTreeService.tree2(AuthUtil.getTenantId(), projectId, disPlayTree, nodeType, wbsId, true);
+        List<ArchiveTreeVO3> tree = archiveTreeService.tree3(AuthUtil.getTenantId(), projectId, disPlayTree, nodeType, wbsId, true);
         if (tree != null && tree.size() > 0) {
             return R.data(tree);
         }

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

@@ -6,6 +6,7 @@ import org.springblade.manager.vo.ArchiveTreeAutoRuleVO;
 import org.springblade.manager.vo.ArchiveTreeVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springblade.manager.vo.ArchiveTreeVO2;
+import org.springblade.manager.vo.ArchiveTreeVO3;
 
 import java.util.List;
 
@@ -18,6 +19,7 @@ public interface ArchiveTreeMapper extends BaseMapper<ArchiveTree> {
     List<ArchiveTreeVO2> lazyTree2(@Param("tenantId") String tenantId, @Param("projectId") Long projectId, @Param("parentId") Long parentId);
 
     List<ArchiveTreeVO2> tree2(@Param("tenantId") String tenantId, @Param("projectId") Long projectId, @Param("disPlayTree") Integer disPlayTree, @Param("nodeType") Integer nodeType);
+    List<ArchiveTreeVO3> tree3(@Param("tenantId") String tenantId, @Param("projectId") Long projectId, @Param("disPlayTree") Integer disPlayTree, @Param("nodeType") Integer nodeType);
 
     int updateBatch(@Param("diffRent") List<String> diffRent);
 

+ 36 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeMapper.xml

@@ -72,6 +72,17 @@
         <result column="interface_type" property="interfaceType"/>
         <result column="sort" property="sort"/>
     </resultMap>
+    <resultMap id="ArchiveTreeVOResultMap3" type="org.springblade.manager.vo.ArchiveTreeVO3">
+        <id column="id" property="id"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="title" property="title"/>
+        <result column="value" property="value"/>
+        <result column="has_children" property="hasChildren"/>
+        <result column="displayHierarchy" property="displayHierarchy"/>
+        <result column="isDisplayTree" property="isDisplayTree"/>
+        <result column="association_type" property="associationType"/>
+        <result column="sort" property="sort"/>
+    </resultMap>
 
     <resultMap id="treeNodeResultMap" type="org.springblade.manager.vo.TreeNodeVO2">
         <id column="id" property="id"/>
@@ -282,6 +293,31 @@
         OR (parent_id = 0 and is_deleted = 0 AND project_id = #{projectId})
         ORDER BY sort
     </select>
+    <select id="tree3" resultMap="ArchiveTreeVOResultMap3">
+        SELECT
+        id,
+        parent_id,
+        node_name AS title,
+        display_hierarchy AS "displayHierarchy",
+        is_upload_file_display_configuration_tree AS "isDisplayTree",
+        association_type,
+        ( SELECT CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END FROM m_archive_tree t2 WHERE t2.parent_id = t1 .id and
+        t2.node_type in (0, #{nodeType})) AS "has_children"
+        FROM m_archive_tree t1
+        WHERE is_deleted = 0 AND project_id = #{projectId}
+        <if test=" tenantId!=null and tenantId!='' ">
+            AND tenant_id = #{tenantId}
+        </if>
+        <if test=" disPlayTree!=null and disPlayTree!='' ">
+            AND is_upload_file_display_configuration_tree = 1
+        </if>
+        <if test=" nodeType !=null and nodeType !='' ">
+            /*根节点=0 关联电子原生文件=1 数字化上传文件=2*/
+            AND node_type in (0,#{nodeType})
+        </if>
+        OR (parent_id = 0 and is_deleted = 0 AND project_id = #{projectId})
+        ORDER BY sort
+    </select>
 
     <select id="getAllChildren" resultMap="ArchiveTreeVOResultMap">
         SELECT

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

@@ -8,6 +8,7 @@ import org.springblade.manager.vo.ArchiveTreeVO;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.manager.vo.ArchiveTreeVO2;
+import org.springblade.manager.vo.ArchiveTreeVO3;
 
 import java.util.List;
 import java.util.Map;
@@ -26,6 +27,7 @@ public interface IArchiveTreeService extends BaseService<ArchiveTree> {
     List<ArchiveTreeVO2> lazyTree2(String tenantId, Long projectId, Long parentId, Long extId, Long level);
 
     List<ArchiveTreeVO2> tree2(String tenantI, Long projectId, Integer disPlayTree, Integer nodeType, String wbsId, boolean bgetExtNodes);
+    List<ArchiveTreeVO3> tree3(String tenantI, Long projectId, Integer disPlayTree, Integer nodeType, String wbsId, boolean bgetExtNodes);
 
     List<ArchiveTree> selectByParentIdOrId(String id);
 

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

@@ -868,7 +868,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		}
 		if (StringUtils.isEmpty(node.getSpecification())) {
 			//默认30mm ,对应枚举 1
-			node.setSpecification("30");
+			node.setSpecification(contractInfo.getSpecification());
 		}
 		//没有默认
 		if (StringUtils.isEmpty(node.getArchiveNameSuffix())) {
@@ -884,7 +884,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		if (archiveTreeContracts == null || archiveTreeContracts.size() == 0) {
 			return;
 		}
-		
+
 		Long projectId = archiveTreeContracts.get(0).getProjectId();
 		List<ContractInfo> contractInfos = contractInfoService.selectContractInfoPageByPid(projectId.toString());
 		if (contractInfos == null || contractInfos.size() == 0) {

+ 117 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java

@@ -262,6 +262,53 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
         }
         return treeVO2s;
     }
+    @Override
+    public List<ArchiveTreeVO3> tree3(String tenantId, Long projectId, Integer disPlayTree, Integer nodeType, String wbsId, boolean bgetExtNodes) {
+        if (projectId == null) {
+            projectId = 0L;
+        }
+
+        List<ArchiveTreeVO3> archiveTreeVOList = baseMapper.tree3(tenantId, projectId, disPlayTree, nodeType);
+        List<ArchiveTreeVO3> treeVO2s = ForestNodeMergerEx.mergeRoot(archiveTreeVOList);
+        if (archiveTreeVOList != null && archiveTreeVOList.size() > 0) {
+            List<String> list = new ArrayList<>();
+            archiveTreeVOList.stream().forEach(l -> {
+                if (l.getHasChildren() == false && l.getIsDisplayTree() == 1) {
+                    list.add(l.getId() + "");
+                }
+            });
+            treeVO2s.get(0).setSelectAllNodes(list);
+        }
+        //todo 遍历树,找到质检节点,调用getWbsArchiveTree,根据关联层级,拼接上去
+
+        //是否获取扩展的wbs节点
+        if (StringUtils.isEmpty(wbsId) && projectId != null && projectId != 0 && bgetExtNodes) {
+            ProjectInfo projectInfo = projectInfoService.getOne(projectId);
+            if (projectInfo != null) {
+                Long lWbsId = projectInfo.getReferenceWbsTemplateId();
+                if (lWbsId != null) {
+                    wbsId = projectInfo.getReferenceWbsTemplateId().toString();
+                }
+            }
+        }
+
+        if (StringUtils.isNotEmpty(wbsId)) {
+            for (ArchiveTreeVO3 ar : archiveTreeVOList) {
+                //关联质检资料
+                if (ar.getAssociationType() != null
+                        && ar.getAssociationType() == 1
+                        && ar.getDisplayHierarchy() != null) {
+                    ArchiveTreeVO3 child = getWbsArchiveTree3(tenantId, projectId, ar.getId(),
+                            wbsId, "1", Long.parseLong(ar.getDisplayHierarchy()));
+
+                    if (child != null) {
+                        ar.getChildren().add(child);
+                    }
+                }
+            }
+        }
+        return treeVO2s;
+    }
 
     @Override
     public List<ArchiveTree> selectByParentIdOrId(String id) {
@@ -452,6 +499,76 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
         return null;
     }
 
+    /**
+     * 按照层次获取归档树链表
+     *
+     * @param parentId
+     * @param wbsId
+     * @param tenantId
+     * @param type
+     * @param level    层次,1,单位工程,2
+     * @return
+     */
+    public ArchiveTreeVO3 getWbsArchiveTree3(String tenantId, Long projectId, Long parentId, String wbsId, String type, Long level) {
+        List<ArchiveTreeVO3> archiveTreeList = new ArrayList<>();
+
+        List<WbsTreeVO2> wbsTreeVO2s = null;
+
+        if (projectId == 0) {
+            wbsTreeVO2s = wbsTreeService.tree(wbsId, tenantId, type);
+        } else {
+            wbsTreeVO2s = wbsTreePrivateService.tree2(wbsId, projectId.toString());
+        }
+
+        List<WbsTreeVO2> wbsTreeVO2List = new ArrayList<>();
+        ForestNodeMerger.getTreeList(wbsTreeVO2s.get(0), wbsTreeVO2List);
+
+        Map<Long, Long> idPkidMap = new LinkedHashMap<>();
+        if (projectId != 0) {
+            for (WbsTreeVO2 wbsTreeVO2 : wbsTreeVO2List) {
+                idPkidMap.put(wbsTreeVO2.getId(), wbsTreeVO2.getPrimaryKeyId());
+            }
+        }
+
+        //遍历构建
+        for (WbsTreeVO2 wbsTreeVO2 : wbsTreeVO2List) {
+            //只展示指定层级之上的
+
+//            if (!wbsTreeVO2.isProcessType()) {
+//                continue;
+//            }
+
+            if (!wbsTreeVO2.isMatchLevel(level)) {
+                continue;
+            }
+            ArchiveTreeVO3 archiveTree = new ArchiveTreeVO3();
+            archiveTree.setTitle(wbsTreeVO2.getTitle());
+
+            archiveTree.setId(wbsTreeVO2.getId());
+            archiveTree.setParentId(wbsTreeVO2.getParentId());
+            if (projectId != 0) {
+                archiveTree.setId(wbsTreeVO2.getId());
+                //archiveTree.setId(idPkidMap.get(wbsTreeVO2.getId()));
+                int i = 0;
+                Long pid = wbsTreeVO2.getParentId();
+                if (pid == null) {
+                    pid = 0L;
+                }
+                archiveTree.setParentId(pid);
+            }
+
+            archiveTree.setDisplayHierarchy(level.toString());
+            archiveTreeList.add(archiveTree);
+        }
+
+        //设置pid
+        List<ArchiveTreeVO3> archiveTreeVO2s = ForestNodeMergerEx.merge(archiveTreeList);
+        if (archiveTreeVO2s != null && archiveTreeVO2s.size() > 0) {
+            return archiveTreeVO2s.get(0);
+        }
+        return null;
+    }
+
 
     /**
      * 保存组卷规则设置