|
@@ -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,161 @@ 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()
|