Quellcode durchsuchen

系统归档树,同步项目归档树,同步合同段归档树

chenr vor 2 Monaten
Ursprung
Commit
31f2736235

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

@@ -12,6 +12,7 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.ArchiveTreeContractAutoRuleMapDTO;
 import org.springblade.manager.dto.ArchiveTreeDTO;
@@ -19,6 +20,8 @@ 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.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springblade.manager.entity.ArchiveTree;
@@ -41,6 +44,8 @@ public class ArchiveTreeController extends BladeController {
 
     private final IArchiveTreeContractService archiveTreeContractService;
 
+    private final JdbcTemplate jdbcTemplate;
+
     /**
      * 初始化归档树根节点
      */
@@ -93,10 +98,36 @@ public class ArchiveTreeController extends BladeController {
     @ApiOperation(value = "修改", notes = "传入ArchiveTree")
     public R update(@Valid @RequestBody ArchiveTree archiveTree) {
         archiveTree.setFullName(archiveTree.getNodeName());
-        if (archiveTree.getProjectId() != null && archiveTree.getProjectId() > 0) {
+        if(archiveTree.getProjectId()==null||archiveTree.getProjectId()==0){
+            //先查出所有引用了该系统级的项目级节点
+            String sql="select * from m_archive_tree where from_id="+archiveTree.getId()+" and is_deleted=0";
+            List<ArchiveTree> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ArchiveTree.class));
+            if(query.size()>0){
+                for (ArchiveTree tree : query) {
+                    tree.setNodeType(archiveTree.getNodeType());
+                    tree.setPostType(archiveTree.getPostType());
+                    tree.setAssociationType(archiveTree.getAssociationType());
+                    tree.setMajorDataType(archiveTree.getMajorDataType());
+                    tree.setDisplayHierarchy(archiveTree.getDisplayHierarchy());
+                    tree.setIsStorageNode(archiveTree.getIsStorageNode());
+                    tree.setIsBuiltDrawing(archiveTree.getIsBuiltDrawing());
+                    tree.setIsInterfaceNode(archiveTree.getIsInterfaceNode());
+                    tree.setProjectType(archiveTree.getProjectType());
+                    tree.setStorageType(archiveTree.getStorageType());
+                    tree.setExpDataType(archiveTree.getExpDataType());
+                    tree.setArchiveAutoType(archiveTree.getArchiveAutoType());
+                    tree.setArchiveAutoNodeId(archiveTree.getArchiveAutoNodeId());
+                    tree.setArchiveAutoGroupId(archiveTree.getArchiveAutoGroupId());
+                    tree.setArchiveAutoGroupSelect(archiveTree.getArchiveAutoGroupSelect());
+                    tree.setIsUploadFileDisplayConfigurationTree(archiveTree.getIsUploadFileDisplayConfigurationTree());
+                    tree.setStorageTime(archiveTree.getStorageTime());
+                    archiveTreeService.updateById(tree);
+                    archiveTreeContractService.UpdateByArchiveTree(tree);
+                }
+            }
+        }else if (archiveTree.getProjectId() != null && archiveTree.getProjectId() > 0) {
             archiveTreeContractService.UpdateByArchiveTree(archiveTree);
         }
-
         return R.status(archiveTreeService.updateById(archiveTree));
     }
 

+ 156 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java

@@ -14,20 +14,18 @@ import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.ArchiveTreeContractAutoRuleMapDTO;
+import org.springblade.manager.dto.ArchiveTreeContractDTO;
 import org.springblade.manager.dto.ArchiveTreeDTO;
 import org.springblade.manager.dto.ArchiveTreeSortDTO;
 import org.springblade.manager.entity.*;
 import org.springblade.manager.mapper.ArchiveAutoRuleWbsMapper;
 import org.springblade.manager.mapper.ArchiveTreeContractMapper;
-import org.springblade.manager.service.IProjectInfoService;
-import org.springblade.manager.service.IWbsTreePrivateService;
-import org.springblade.manager.service.IWbsTreeService;
+import org.springblade.manager.service.*;
 import org.springblade.manager.utils.DiffListUtil;
 import org.springblade.manager.utils.ForestNodeMerger;
 import org.springblade.common.utils.ForestNodeMergerEx;
 import org.springblade.manager.vo.*;
 import org.springblade.manager.mapper.ArchiveTreeMapper;
-import org.springblade.manager.service.IArchiveTreeService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
@@ -43,14 +41,13 @@ import java.util.stream.Collectors;
 public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, ArchiveTree> implements IArchiveTreeService {
 
     private final ArchiveTreeMapper archiveTreeMapper;
-    private final ArTreeContractInitServiceImpl archiveTreeContractInitService;
     private final IWbsTreeService wbsTreeService;
     private final IWbsTreePrivateService wbsTreePrivateService;
     private final IProjectInfoService projectInfoService;
-
     private final ArchiveAutoRuleWbsMapper archiveAutoRuleWbsMapper;
-
+    private final ArchiveTreeContractMapper archiveTreeContractMapper;
     private final ArchiveAutoRuleSyncImpl archiveAutoRuleSync;
+    private final JdbcTemplate jdbcTemplate;
 
     @Override
     public boolean initArchiveTree(Long projectId) {
@@ -403,6 +400,7 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
             archiveTreeDTO.setIsStorageNode(1);
         }
         if (archiveTreeDTO.getId() == null) {
+            archiveTreeDTO.setId(SnowFlakeUtil.getId());
             List<ArchiveTree> trees = baseMapper.selectList(Wrappers.<ArchiveTree>query().lambda()
                     .eq(ArchiveTree::getParentId, archiveTreeDTO.getParentId())
             );
@@ -420,10 +418,160 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
             }
             archiveTreeDTO.setSort(sort + 1);
         }
-
+        //如果是修改的系统级的,需要更新项目级+合同段级
+        if(archiveTreeDTO.getProjectId()==null||archiveTreeDTO.getProjectId()==0){
+            //查出引用了该系统节点的父节点的项目级节点
+            String sql="select * from m_archive_tree where from_id="+archiveTreeDTO.getParentId()+" and is_deleted=0";
+            List<ArchiveTreeDTO> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ArchiveTreeDTO.class));
+            if(query.size()>0){
+                for (ArchiveTreeDTO dto : query) {
+                    ArchiveTreeDTO treeDTO = new ArchiveTreeDTO();
+                    BeanUtil.copy(archiveTreeDTO,treeDTO);
+                    treeDTO.setId(null);
+                    treeDTO.setProjectId(dto.getProjectId());
+                    treeDTO.setParentId(dto.getId());
+                    treeDTO.setAncestors(dto.getAncestors()+StringPool.COMMA+dto.getId());
+                    treeDTO.setFromId(archiveTreeDTO.getId());
+                    Long l = sumbit1(treeDTO);
+                    //在新增合同段级的
+                    String sql1="select * from m_archive_tree_contract where from_id="+treeDTO.getParentId()+" and is_deleted=0";
+                    List<ArchiveTreeContractDTO> query1 = jdbcTemplate.query(sql1, new BeanPropertyRowMapper<>(ArchiveTreeContractDTO.class));
+                    if(query1.size()>0){
+                        for (ArchiveTreeContractDTO dto1 : query1) {
+                            ArchiveTreeContractDTO contractDTO=new ArchiveTreeContractDTO();
+                            BeanUtil.copy(treeDTO,contractDTO);
+                            contractDTO.setId(null);
+                            contractDTO.setParentId(dto1.getId());
+                            contractDTO.setAncestors(dto1.getAncestors()+StringPool.COMMA+dto1.getId());
+                            contractDTO.setFromId(l);
+                            submit2(contractDTO);
+                        }
+                    }
+                }
+            }
+        }else {
+            //如果修改的是项目级就新增合同段级的
+            String sql1="select * from m_archive_tree_contract where from_id="+archiveTreeDTO.getParentId()+" and is_deleted=0";
+            List<ArchiveTreeContractDTO> query1 = jdbcTemplate.query(sql1, new BeanPropertyRowMapper<>(ArchiveTreeContractDTO.class));
+            if(query1.size()>0){
+                for (ArchiveTreeContractDTO dto1 : query1) {
+                    ArchiveTreeContractDTO contractDTO=new ArchiveTreeContractDTO();
+                    BeanUtil.copy(archiveTreeDTO,contractDTO);
+                    contractDTO.setId(null);
+                    contractDTO.setParentId(dto1.getId());
+                    contractDTO.setAncestors(dto1.getAncestors()+StringPool.COMMA+dto1.getId());
+                    contractDTO.setFromId(archiveTreeDTO.getId());
+                    submit2(contractDTO);
+                }
+            }
+        }
         return save(archiveTreeDTO);
     }
 
+    public int submit2(ArchiveTreeContractDTO archiveTreeContractDTO) {
+        if (Func.isEmpty(archiveTreeContractDTO.getParentId())) {
+            archiveTreeContractDTO.setTenantId(AuthUtil.getTenantId());
+            archiveTreeContractDTO.setParentId(BladeConstant.TOP_PARENT_ID);
+            archiveTreeContractDTO.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID));
+        }
+        if (archiveTreeContractDTO.getParentId() > 0) {
+            ArchiveTreeContract parent = archiveTreeContractMapper.selectById(archiveTreeContractDTO.getParentId());
+            if (Func.toLong(archiveTreeContractDTO.getParentId()) == Func.toLong(archiveTreeContractDTO.getId())) {
+                throw new ServiceException("父节点不可选择自身!");
+            }
+            archiveTreeContractDTO.setTenantId(parent.getTenantId());
+            String ancestors = parent.getAncestors() + StringPool.COMMA + archiveTreeContractDTO.getParentId();
+            archiveTreeContractDTO.setAncestors(ancestors);
+            archiveTreeContractDTO.setTreeSort(parent.getTreeSort());
+            archiveTreeContractDTO.setContractId(parent.getContractId());
+            archiveTreeContractDTO.setTreeCode(parent.getTreeCode());
+
+            archiveTreeContractDTO.setArchiveAutoNodeId(parent.getArchiveAutoNodeId());
+            archiveTreeContractDTO.setArchiveAutoType(parent.getArchiveAutoType());
+            archiveTreeContractDTO.setArchiveAutoGroupId(parent.getArchiveAutoGroupId());
+            archiveTreeContractDTO.setArchiveAutoGroupSelect(0);
+        }
+
+        archiveTreeContractDTO.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+        archiveTreeContractDTO.setFullName(archiveTreeContractDTO.getNodeName());
+        if (archiveTreeContractDTO.getNodeType() == 1) {
+            archiveTreeContractDTO.setIsStorageNode(1);
+        }
+        if (archiveTreeContractDTO.getId() == null) {
+            List<ArchiveTreeContract> trees = archiveTreeContractMapper.selectList(Wrappers.<ArchiveTreeContract>query().lambda()
+                .eq(ArchiveTreeContract::getParentId, archiveTreeContractDTO.getParentId())
+            );
+            List<ArchiveTreeContract> collect = trees.stream().filter(f -> {
+                if (f.getSort() == null) {
+                    f.setSort(0);
+                }
+                return true;
+            }).collect(Collectors.toList());
+            Optional<ArchiveTreeContract> max = collect.stream().max(Comparator.comparingInt(ArchiveTreeContract::getSort));
+            Integer sort = 0;
+            if (max.isPresent()) {
+                sort = max.get().getSort();
+            }
+            archiveTreeContractDTO.setSort(sort + 1);
+            String treeSort = archiveTreeContractDTO.getTreeSort();
+            if (com.mixsmart.utils.StringUtils.isNotEmpty(treeSort)) {
+                treeSort = treeSort + (100 + archiveTreeContractDTO.getSort());
+                archiveTreeContractDTO.setTreeSort(treeSort);
+            }
+        }
+
+        return archiveTreeContractMapper.insert(archiveTreeContractDTO);
+    }
+
+    public Long sumbit1(ArchiveTreeDTO archiveTreeDTO){
+        if (Func.isEmpty(archiveTreeDTO.getParentId())) {
+            archiveTreeDTO.setTenantId(AuthUtil.getTenantId());
+            archiveTreeDTO.setParentId(BladeConstant.TOP_PARENT_ID);
+            archiveTreeDTO.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID));
+        }
+        if (archiveTreeDTO.getParentId() > 0) {
+            ArchiveTree parent = getById(archiveTreeDTO.getParentId());
+            if (Func.toLong(archiveTreeDTO.getParentId()) == Func.toLong(archiveTreeDTO.getId())) {
+                throw new ServiceException("父节点不可选择自身!");
+            }
+            archiveTreeDTO.setTenantId(parent.getTenantId());
+            String ancestors = parent.getAncestors() + StringPool.COMMA + archiveTreeDTO.getParentId();
+            archiveTreeDTO.setAncestors(ancestors);
+
+            archiveTreeDTO.setArchiveAutoType(parent.getArchiveAutoType());
+            archiveTreeDTO.setArchiveAutoNodeId(parent.getArchiveAutoNodeId());
+            archiveTreeDTO.setArchiveAutoGroupId(parent.getArchiveAutoGroupId());
+            archiveTreeDTO.setArchiveAutoGroupSelect(0);
+        }
+
+        archiveTreeDTO.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+        archiveTreeDTO.setFullName(archiveTreeDTO.getNodeName());
+        if (archiveTreeDTO.getNodeType() == 1) {
+            archiveTreeDTO.setIsStorageNode(1);
+        }
+        if (archiveTreeDTO.getId() == null) {
+            archiveTreeDTO.setId(SnowFlakeUtil.getId());
+            List<ArchiveTree> trees = baseMapper.selectList(Wrappers.<ArchiveTree>query().lambda()
+                .eq(ArchiveTree::getParentId, archiveTreeDTO.getParentId())
+            );
+
+            List<ArchiveTree> collect = trees.stream().filter(f -> {
+                if (f.getSort() == null) {
+                    f.setSort(0);
+                }
+                return true;
+            }).collect(Collectors.toList());
+            Optional<ArchiveTree> max = collect.stream().max(Comparator.comparingInt(ArchiveTree::getSort));
+            Integer sort = 0;
+            if (max.isPresent()) {
+                sort = max.get().getSort();
+            }
+            archiveTreeDTO.setSort(sort + 1);
+        }
+        save(archiveTreeDTO);
+        return archiveTreeDTO.getId();
+    }
+
     @Override
     public List<ArchiveTree> treeList(String tenantId, Long projectId, Integer disPlayTree, Integer nodeType) {
         return baseMapper.selectList(Wrappers.<ArchiveTree>query().lambda()