|
@@ -16,8 +16,6 @@
|
|
|
*/
|
|
|
package org.springblade.manager.service.impl;
|
|
|
|
|
|
-import cn.hutool.core.bean.BeanUtil;
|
|
|
-import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import lombok.AllArgsConstructor;
|
|
@@ -56,7 +54,6 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.io.IOException;
|
|
|
-import java.lang.reflect.Array;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -551,9 +548,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public String submitWbsTreeInProject(WbsTreeContractDTO pawDTO) {
|
|
|
String wbsTreeIds = pawDTO.getWbsTreeIds();
|
|
|
- /*if (StringUtils.isEmpty(wbsTreeIds)) {
|
|
|
- throw new ServiceException("请选择需要关联的节点树");
|
|
|
- }*/
|
|
|
String[] ids = wbsTreeIds.split(",");
|
|
|
List<String> idList = Arrays.asList(ids);
|
|
|
List<String> idList1 = idList.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
|
|
@@ -581,7 +575,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
}
|
|
|
deletedStatus = 1;
|
|
|
}
|
|
|
-
|
|
|
List<String> diffrent = WbsTreeContractServiceImpl.getDiffrent(idList1, idList2);
|
|
|
if (diffrent.size() == 0) {
|
|
|
List<String> tableId1 = new ArrayList<>();
|
|
@@ -627,114 +620,64 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
} else {
|
|
|
//新增
|
|
|
if (idList1.size() > idList2.size()) {
|
|
|
- for (String id : diffrent) {
|
|
|
- //公共
|
|
|
- if (pawDTO.getReferenceType().equals("public")) {
|
|
|
- WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectByCondition2(id, pawDTO.getProjectId(), pawDTO.getWbsId());
|
|
|
- if (wbsTreePrivate != null) {
|
|
|
- //修改节点、元素表
|
|
|
- wbsTreePrivateMapper.updateByCondition(id, pawDTO.getProjectId(), pawDTO.getWbsId());
|
|
|
- wbsTreePrivateMapper.updateTableByCondition(id, pawDTO.getProjectId(), pawDTO.getWbsId());
|
|
|
- }
|
|
|
- WbsTree wbsTree = wbsTreeMapper.selectById(id);
|
|
|
- if (wbsTree != null) {
|
|
|
- //判重(是否存在修改的旧数据)
|
|
|
- WbsTreePrivate wbsTreePrivate1 = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
- .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
|
|
|
- .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
|
|
|
- .eq(WbsTreePrivate::getId, id)
|
|
|
- );
|
|
|
- if (wbsTreePrivate1 == null) {
|
|
|
- //新增
|
|
|
- Long snowId = SnowFlakeUtil.getId();
|
|
|
- wbsTreePrivateMapper.insertCombination1(snowId, wbsTree, pawDTO.getWbsType(), pawDTO.getProjectId());
|
|
|
- //查询该节点下是否有元素表
|
|
|
- Long tableParentId = wbsTree.getId();
|
|
|
- List<WbsTree> wbsTreeTableList = wbsTreeMapper.selectIsTable(tableParentId);
|
|
|
- if (wbsTreeTableList.size() > 0) {
|
|
|
- //新增元素表
|
|
|
- for (WbsTree tree : wbsTreeTableList) {
|
|
|
- //判重
|
|
|
- WbsTreePrivate wbsTreePrivates1 = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
- .eq(WbsTreePrivate::getId, tree.getId())
|
|
|
- .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
|
|
|
- .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
|
|
|
- .eq(WbsTreePrivate::getParentId, tree.getParentId())
|
|
|
- .eq(WbsTreePrivate::getDeptName, tree.getDeptName())
|
|
|
- .eq(WbsTreePrivate::getType, 2)
|
|
|
- );
|
|
|
- if (wbsTreePrivates1 == null) {
|
|
|
- Long snowId1 = SnowFlakeUtil.getId();
|
|
|
- wbsTreePrivateMapper.insertCombination1(snowId1, tree, pawDTO.getWbsType(), pawDTO.getProjectId());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- //保存返回
|
|
|
- projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
|
|
|
+ List<WbsTreePrivate> insertData = new ArrayList<>(); //数据初始化节点-引用公有
|
|
|
+ List<WbsTreePrivate> insertData2 = new ArrayList<>(); //数据初始化节点-引用私有
|
|
|
+ if (pawDTO.getReferenceType().equals("public")) {
|
|
|
+ //公有
|
|
|
+ List<List<WbsTree>> wbsTrees = new ArrayList<>();
|
|
|
+ for (String id : diffrent) {
|
|
|
+ //查询所有公共节点+表单
|
|
|
+ List<WbsTree> trees = baseMapper.selectNodeAndTable(Long.valueOf(id));
|
|
|
+ wbsTrees.add(trees);
|
|
|
+ }
|
|
|
+ for (List<WbsTree> trees : wbsTrees) {
|
|
|
+ for (WbsTree tree : trees) {
|
|
|
+ WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate1(tree, pawDTO);
|
|
|
+ insertData.add(wbsTreePrivate2);
|
|
|
}
|
|
|
}
|
|
|
+ projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
|
|
|
+
|
|
|
+ } else if (pawDTO.getReferenceType().equals("private")) {
|
|
|
//私有
|
|
|
- else if (pawDTO.getReferenceType().equals("private")) {
|
|
|
- //判重
|
|
|
- WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectByCondition2(id, pawDTO.getProjectId(), pawDTO.getPrimaryKeyId());
|
|
|
- if (wbsTreePrivate != null) {
|
|
|
- //修改节点、元素表
|
|
|
- wbsTreePrivateMapper.updateByCondition(id, pawDTO.getProjectId(), pawDTO.getPrimaryKeyId());
|
|
|
- wbsTreePrivateMapper.updateTableByCondition(id, pawDTO.getProjectId(), pawDTO.getPrimaryKeyId());
|
|
|
- }
|
|
|
- //引用私有库
|
|
|
- WbsTreePrivate wbsTreePrivate1 = wbsTreePrivateMapper.selectByCondition(id, pawDTO.getWbsId(), pawDTO.getReferencePrivateWbsProjectId());
|
|
|
- if (wbsTreePrivate1 != null) {
|
|
|
- String wbsId = String.valueOf(pawDTO.getPrimaryKeyId());
|
|
|
- wbsTreePrivate1.setWbsId(wbsId);
|
|
|
- //判重(是否存在修改的旧数据)
|
|
|
- WbsTreePrivate wbsTreePrivate2 = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
- .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
|
|
|
- .eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId())
|
|
|
- .eq(WbsTreePrivate::getId, id)
|
|
|
- );
|
|
|
- if (wbsTreePrivate2 == null) {
|
|
|
- //新增
|
|
|
- Long snowId = SnowFlakeUtil.getId();
|
|
|
- wbsTreePrivateMapper.insertCombination2(snowId, wbsTreePrivate1, pawDTO.getProjectId()); //pawDTO.getProjectId() 为当前项目id
|
|
|
- //查询该节点下是否有元素表
|
|
|
- List<WbsTree> wbsTreeTableList = wbsTreePrivateMapper.selectIsTable(wbsTreePrivate1.getId(), pawDTO.getReferencePrivateWbsProjectId());
|
|
|
- if (wbsTreeTableList.size() > 0) {
|
|
|
- for (WbsTree tree : wbsTreeTableList) {
|
|
|
- //判重
|
|
|
- WbsTreePrivate wbsTreePrivates1 = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
- .eq(WbsTreePrivate::getId, tree.getId())
|
|
|
- .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
|
|
|
- .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
|
|
|
- .eq(WbsTreePrivate::getParentId, tree.getParentId())
|
|
|
- .eq(WbsTreePrivate::getDeptName, tree.getDeptName())
|
|
|
- .eq(WbsTreePrivate::getType, 2)
|
|
|
- );
|
|
|
- if (wbsTreePrivates1 == null) {
|
|
|
- Long snowId1 = SnowFlakeUtil.getId();
|
|
|
- tree.setWbsId(String.valueOf(pawDTO.getPrimaryKeyId()));
|
|
|
- wbsTreePrivateMapper.insertCombination1(snowId1, tree, pawDTO.getWbsType(), pawDTO.getProjectId());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
|
|
|
+ List<List<WbsTreePrivate>> wbsTreesPrivate = new ArrayList<>();
|
|
|
+ for (String id : diffrent) {
|
|
|
+ //查询所有私有节点 表单
|
|
|
+ List<WbsTreePrivate> wbsTreePrivate = wbsTreePrivateMapper.selectNodeAndTable(id, pawDTO.getWbsId(), pawDTO.getReferencePrivateWbsProjectId());
|
|
|
+ wbsTreesPrivate.add(wbsTreePrivate);
|
|
|
+ }
|
|
|
+ for (List<WbsTreePrivate> wbsTreePrivates : wbsTreesPrivate) {
|
|
|
+ for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
|
|
|
+ WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate2(wbsTreePrivate, pawDTO);
|
|
|
+ insertData2.add(wbsTreePrivate2);
|
|
|
}
|
|
|
}
|
|
|
+ projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
|
|
|
+ }
|
|
|
+ if (pawDTO.getReferenceType().equals("public")) {
|
|
|
+ wbsTreePrivateService.saveBatch(insertData, 10000);
|
|
|
+ } else if (pawDTO.getReferenceType().equals("private")) {
|
|
|
+ wbsTreePrivateService.saveBatch(insertData2, 10000);
|
|
|
}
|
|
|
} else {
|
|
|
- //删除节点、元素表
|
|
|
+ //删除节点 表单
|
|
|
+ ArrayList<Long> ids1 = new ArrayList<>();
|
|
|
+ ArrayList<Long> ids2 = new ArrayList<>();
|
|
|
for (String id : diffrent) {
|
|
|
- wbsTreePrivateMapper.deleteByCondition(id, pawDTO.getWbsId(), pawDTO.getProjectId());
|
|
|
- wbsTreePrivateMapper.deleteByCondition2(id, pawDTO.getWbsId(), pawDTO.getProjectId());
|
|
|
+ ids1.add(Long.valueOf(id));
|
|
|
}
|
|
|
if (deletedStatus == 1) {
|
|
|
for (String id : diffrent) {
|
|
|
- wbsTreePrivateMapper.deleteByCondition(id, pawDTO.getPrimaryKeyId(), pawDTO.getProjectId());
|
|
|
- wbsTreePrivateMapper.deleteByCondition2(id, pawDTO.getPrimaryKeyId(), pawDTO.getProjectId());
|
|
|
+ ids2.add(Long.valueOf(id));
|
|
|
}
|
|
|
}
|
|
|
+ if (pawDTO.getReferenceType().equals("public")) {
|
|
|
+ baseMapper.deleteBatch(ids1, pawDTO.getWbsId(), pawDTO.getProjectId());
|
|
|
+ baseMapper.deleteBatch2(ids1, pawDTO.getWbsId(), pawDTO.getProjectId());
|
|
|
+ } else if (pawDTO.getReferenceType().equals("private")) {
|
|
|
+ baseMapper.deleteBatch(ids2, pawDTO.getPrimaryKeyId(), pawDTO.getProjectId());
|
|
|
+ baseMapper.deleteBatch2(ids2, pawDTO.getPrimaryKeyId(), pawDTO.getProjectId());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return "2";
|
|
@@ -749,13 +692,79 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
return baseMapper.selectBatchIds(idList);
|
|
|
}
|
|
|
|
|
|
+ private WbsTreePrivate getWbsTreePrivate1(WbsTree wbsTree, WbsTreeContractDTO pawDTO) {
|
|
|
+ WbsTreePrivate wbsTreePrivate = new WbsTreePrivate();
|
|
|
+ //数据初始化
|
|
|
+ Long snowId = SnowFlakeUtil.getId();
|
|
|
+ wbsTreePrivate.setPKeyId(snowId);
|
|
|
+ wbsTreePrivate.setId(wbsTree.getId());
|
|
|
+ wbsTreePrivate.setWbsId(wbsTree.getWbsId());
|
|
|
+ wbsTreePrivate.setWbsType(String.valueOf(pawDTO.getWbsType()));
|
|
|
+ wbsTreePrivate.setProjectId(pawDTO.getProjectId());
|
|
|
+ wbsTreePrivate.setTenantId(wbsTree.getTenantId());
|
|
|
+ wbsTreePrivate.setParentId(wbsTree.getParentId());
|
|
|
+ wbsTreePrivate.setAncestors(wbsTree.getAncestors());
|
|
|
+ wbsTreePrivate.setDeptCategory(wbsTree.getDeptCategory());
|
|
|
+ wbsTreePrivate.setDeptName(wbsTree.getDeptName());
|
|
|
+ wbsTreePrivate.setFullName(wbsTree.getFullName());
|
|
|
+ wbsTreePrivate.setSort(wbsTree.getSort());
|
|
|
+ wbsTreePrivate.setRemark(wbsTree.getRemark());
|
|
|
+ wbsTreePrivate.setType(wbsTree.getType());
|
|
|
+ wbsTreePrivate.setTableType(wbsTree.getTableType());
|
|
|
+ wbsTreePrivate.setStatus(wbsTree.getStatus());
|
|
|
+ wbsTreePrivate.setIsDeleted(wbsTree.getIsDeleted());
|
|
|
+ wbsTreePrivate.setUniqueCode(wbsTree.getUniqueCode());
|
|
|
+ wbsTreePrivate.setPartitionCode(wbsTree.getPartitionCode());
|
|
|
+ wbsTreePrivate.setIsConcrete(wbsTree.getIsConcrete());
|
|
|
+ wbsTreePrivate.setIsExpernode(wbsTree.getIsExpernode());
|
|
|
+ wbsTreePrivate.setTableOwner(wbsTree.getTableOwner());
|
|
|
+ wbsTreePrivate.setMajorDataType(wbsTree.getMajorDataType());
|
|
|
+ wbsTreePrivate.setInitTableName(wbsTree.getInitTableName());
|
|
|
+ wbsTreePrivate.setIsLinkTable(wbsTree.getIsLinkTable());
|
|
|
+ wbsTreePrivate.setIsExistForm(wbsTree.getIsExistForm());
|
|
|
+ return wbsTreePrivate;
|
|
|
+ }
|
|
|
+
|
|
|
+ private WbsTreePrivate getWbsTreePrivate2(WbsTreePrivate wbsTree, WbsTreeContractDTO pawDTO) {
|
|
|
+ WbsTreePrivate wbsTreePrivate = new WbsTreePrivate();
|
|
|
+ //数据初始化
|
|
|
+ Long snowId = SnowFlakeUtil.getId();
|
|
|
+ wbsTreePrivate.setPKeyId(snowId);
|
|
|
+ wbsTreePrivate.setId(wbsTree.getId());
|
|
|
+ wbsTreePrivate.setWbsId(pawDTO.getPrimaryKeyId());
|
|
|
+ wbsTreePrivate.setWbsType(String.valueOf(pawDTO.getWbsType()));
|
|
|
+ wbsTreePrivate.setProjectId(pawDTO.getProjectId());
|
|
|
+ wbsTreePrivate.setTenantId(wbsTree.getTenantId());
|
|
|
+ wbsTreePrivate.setParentId(wbsTree.getParentId());
|
|
|
+ wbsTreePrivate.setAncestors(wbsTree.getAncestors());
|
|
|
+ wbsTreePrivate.setDeptCategory(wbsTree.getDeptCategory());
|
|
|
+ wbsTreePrivate.setDeptName(wbsTree.getDeptName());
|
|
|
+ wbsTreePrivate.setFullName(wbsTree.getFullName());
|
|
|
+ wbsTreePrivate.setSort(wbsTree.getSort());
|
|
|
+ wbsTreePrivate.setRemark(wbsTree.getRemark());
|
|
|
+ wbsTreePrivate.setType(wbsTree.getType());
|
|
|
+ wbsTreePrivate.setTableType(wbsTree.getTableType());
|
|
|
+ wbsTreePrivate.setStatus(wbsTree.getStatus());
|
|
|
+ wbsTreePrivate.setIsDeleted(wbsTree.getIsDeleted());
|
|
|
+ wbsTreePrivate.setUniqueCode(wbsTree.getUniqueCode());
|
|
|
+ wbsTreePrivate.setPartitionCode(wbsTree.getPartitionCode());
|
|
|
+ wbsTreePrivate.setIsConcrete(wbsTree.getIsConcrete());
|
|
|
+ wbsTreePrivate.setIsExpernode(wbsTree.getIsExpernode());
|
|
|
+ wbsTreePrivate.setTableOwner(wbsTree.getTableOwner());
|
|
|
+ wbsTreePrivate.setMajorDataType(wbsTree.getMajorDataType());
|
|
|
+ wbsTreePrivate.setInitTableName(wbsTree.getInitTableName());
|
|
|
+ wbsTreePrivate.setIsLinkTable(wbsTree.getIsLinkTable());
|
|
|
+ wbsTreePrivate.setIsExistForm(wbsTree.getIsExistForm());
|
|
|
+ return wbsTreePrivate;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public WbsTreeAllListVO findWbsTreeList(Integer type) {
|
|
|
WbsTreeAllListVO wbsTreeAllListVO = new WbsTreeAllListVO();
|
|
|
- //查询Wbs总树
|
|
|
+ //Wbs总树
|
|
|
List<WbsInfo> wbsInfos = wbsInfoMapper.selectAll(type);
|
|
|
wbsTreeAllListVO.setWbsInfos(wbsInfos);
|
|
|
- //查询项目私有树 默认type=1质检
|
|
|
+ //项目私有树
|
|
|
List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectAll(type);
|
|
|
wbsTreeAllListVO.setWbsTreePrivates(wbsTreePrivates);
|
|
|
return wbsTreeAllListVO;
|