|
@@ -176,7 +176,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
wbsTree.setAncestors(ancestors);
|
|
|
wbsTree.setType(2);
|
|
|
wbsTree.setIsDeleted(BladeConstant.DB_NOT_DELETED);
|
|
|
- maps.stream().forEach(map->{
|
|
|
+ maps.stream().forEach(map -> {
|
|
|
String deptName = map.get("表名");
|
|
|
wbsTree.setDeptName(deptName);
|
|
|
wbsTree.setTableType(getTableType(map.get("表类型")));
|
|
@@ -203,7 +203,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
String tableName = i.getTableName();
|
|
|
String initTableName = i.getInitTableName();
|
|
|
final int[] keyNumb = {0};
|
|
|
- result2.stream().forEach(map->{
|
|
|
+ result2.stream().forEach(map -> {
|
|
|
if (tableName.equals(map.get("表名"))) {
|
|
|
keyNumb[0]++;
|
|
|
WbsFormElement wbsFormElement = new WbsFormElement();
|
|
@@ -228,7 +228,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
return true;
|
|
|
} catch (
|
|
|
IOException | ClassNotFoundException e) {
|
|
|
- e.printStackTrace();
|
|
|
+ throw new ServiceException("操作失败,请上传正确模板内容");
|
|
|
} finally {
|
|
|
File file2 = new File(canonicalPath);
|
|
|
if (file2.isFile() && file2.exists()) {
|
|
@@ -236,7 +236,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
System.gc();
|
|
|
}
|
|
|
}
|
|
|
- return false;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -295,12 +294,11 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
case "字符串":
|
|
|
case "签名":
|
|
|
case "文件":
|
|
|
- return 1000;
|
|
|
- case "整数":
|
|
|
return 255;
|
|
|
- case "小数":
|
|
|
+ case "整数":
|
|
|
case "数值":
|
|
|
- return 65;
|
|
|
+ case "小数":
|
|
|
+ return 20;
|
|
|
case "日期":
|
|
|
default:
|
|
|
return 0;
|
|
@@ -386,8 +384,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
ArrayList<Map<String, String>> result = excelUtil.readExcelToObj(canonicalPath);
|
|
|
return importExcel(result, wbsTreeFu, wbsTree1);
|
|
|
} catch (Exception e) {
|
|
|
- String message = e.getMessage();
|
|
|
- throw new ServiceException("导入失败,message{}" + message);
|
|
|
+ throw new ServiceException("导入失败,请确认模板是否正确");
|
|
|
} finally {
|
|
|
File file2 = new File(canonicalPath);
|
|
|
if (file2.isFile() && file2.exists()) {
|
|
@@ -531,13 +528,17 @@ 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("未选择需要分配的wbs树");
|
|
|
+ }*/
|
|
|
String[] ids = wbsTreeIds.split(",");
|
|
|
List<String> idList = Arrays.asList(ids);
|
|
|
List<String> idList1 = idList.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
|
|
|
List<String> idList2 = new ArrayList<>();
|
|
|
int deletedStatus = 0;
|
|
|
+
|
|
|
+ //当前公有引用
|
|
|
if (pawDTO.getReferenceType().equals("public")) {
|
|
|
- //当前公有引用
|
|
|
List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
.eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
|
|
|
.eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
|
|
@@ -545,10 +546,11 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
);
|
|
|
wbsTreePrivates.stream().forEach(wbsTreePrivate -> {
|
|
|
idList2.add(String.valueOf(wbsTreePrivate.getId()));
|
|
|
-
|
|
|
});
|
|
|
- } else if (pawDTO.getReferenceType().equals("private")) {
|
|
|
- //私有引用
|
|
|
+ }
|
|
|
+
|
|
|
+ //私有引用
|
|
|
+ else if (pawDTO.getReferenceType().equals("private")) {
|
|
|
List<WbsTreePrivate> wbsTreePrivates2 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
.eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId())
|
|
|
.eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
|
|
@@ -559,58 +561,121 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
});
|
|
|
deletedStatus = 1;
|
|
|
}
|
|
|
- List<String> diffrent = WbsTreeContractServiceImpl.getDiffrent(idList1, idList2);
|
|
|
- if (diffrent.size() == 0) {
|
|
|
+
|
|
|
+ List<String> diffRent = WbsTreeContractServiceImpl.getDiffrent(idList1, idList2);
|
|
|
+
|
|
|
+ //元素表同步
|
|
|
+ if (diffRent.size() == 0) {
|
|
|
List<String> tableId1 = new ArrayList<>();
|
|
|
List<String> tableId2 = new ArrayList<>();
|
|
|
- //公有树是否新增元素表,同步到私有
|
|
|
- List<WbsTree> allNodeList = findAllNodeList(wbsTreeIds);
|
|
|
- List<WbsTree> wbsTreeListAll = new ArrayList<>();
|
|
|
- allNodeList.stream().forEach(wbsTree -> {
|
|
|
- List<WbsTree> wbsTreeList = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
|
|
|
- .eq(WbsTree::getWbsId, pawDTO.getWbsId())
|
|
|
- .eq(WbsTree::getType, 2)
|
|
|
- .eq(WbsTree::getParentId, wbsTree.getId())
|
|
|
- );
|
|
|
- wbsTreeListAll.addAll(wbsTreeList);
|
|
|
- });
|
|
|
- wbsTreeListAll.stream().forEach(wbsTree -> {
|
|
|
- tableId1.add(String.valueOf(wbsTree.getId()));
|
|
|
- });
|
|
|
|
|
|
- //获取项目私有树下所有的元素表
|
|
|
- List<WbsTreePrivate> wbsTreePrivates1 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
- .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
|
|
|
- .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
|
|
|
- .eq(WbsTreePrivate::getType, 2)
|
|
|
- );
|
|
|
- wbsTreePrivates1.stream().forEach(wbsTreePrivate -> {
|
|
|
- tableId2.add(String.valueOf(wbsTreePrivate.getId()));
|
|
|
- });
|
|
|
- List<String> diffrent1 = WbsTreeContractServiceImpl.getDiffrent(tableId1, tableId2);
|
|
|
- if (diffrent1.size() == 0) {
|
|
|
- throw new ServiceException("未进行任何操作");
|
|
|
- } else {
|
|
|
- if (tableId1.size() > tableId2.size()) {
|
|
|
- //同步元素表
|
|
|
- diffrent1.stream().forEach(tableId -> {
|
|
|
- WbsTree wbsTree = wbsTreeMapper.selectById(tableId);
|
|
|
- Long snowId1 = SnowFlakeUtil.getId();
|
|
|
- wbsTreePrivateMapper.insertCombination1(snowId1, wbsTree, pawDTO.getWbsType(), pawDTO.getProjectId());
|
|
|
+ if (pawDTO.getReferenceType().equals("public")) {
|
|
|
+ //公有同步新增元素表
|
|
|
+ //获取公有wbs树新增的元素表
|
|
|
+ List<WbsTree> allNodeList = findAllNodeList(wbsTreeIds);
|
|
|
+ List<WbsTree> wbsTreeListAll = new ArrayList<>();
|
|
|
+ if (allNodeList != null) {
|
|
|
+ allNodeList.stream().forEach(wbsTree -> {
|
|
|
+ List<WbsTree> wbsTreeList = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
|
|
|
+ .eq(WbsTree::getWbsId, pawDTO.getWbsId())
|
|
|
+ .eq(WbsTree::getType, 2)
|
|
|
+ .eq(WbsTree::getParentId, wbsTree.getId())
|
|
|
+ );
|
|
|
+ wbsTreeListAll.addAll(wbsTreeList);
|
|
|
});
|
|
|
- return "1";
|
|
|
}
|
|
|
- //同步删除 TODO
|
|
|
+ wbsTreeListAll.stream().forEach(wbsTree -> {
|
|
|
+ tableId1.add(String.valueOf(wbsTree.getId()));
|
|
|
+ });
|
|
|
+ //获取项目私有wbs树下当前所有的元素表
|
|
|
+ List<WbsTreePrivate> wbsTreePrivates1 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
|
|
|
+ .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getType, 2)
|
|
|
+ );
|
|
|
+ wbsTreePrivates1.stream().forEach(wbsTreePrivate -> {
|
|
|
+ tableId2.add(String.valueOf(wbsTreePrivate.getId()));
|
|
|
+ });
|
|
|
+ List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(tableId1, tableId2);
|
|
|
+ if (diffRent1.size() == 0) {
|
|
|
+ //当wbsTreeIds == "" 时 1.在第一次新增未选择wbs树时 2.同步新增的元素表时
|
|
|
+ throw new ServiceException("请选择需要关联的树或未检测到所对应新增的元素表");
|
|
|
+ } else {
|
|
|
+ if (tableId1.size() > tableId2.size()) {
|
|
|
+ //公有同步元素表
|
|
|
+ diffRent1.stream().forEach(tableId -> {
|
|
|
+ WbsTree wbsTree = wbsTreeMapper.selectById(tableId);
|
|
|
+ Long snowId1 = SnowFlakeUtil.getId();
|
|
|
+ wbsTreePrivateMapper.insertCombination1(snowId1, wbsTree, pawDTO.getWbsType(), pawDTO.getProjectId());
|
|
|
+ });
|
|
|
+ return "1";
|
|
|
+ }
|
|
|
+ //TODO删除
|
|
|
+ }
|
|
|
+ } else if (pawDTO.getReferenceType().equals("private")) {
|
|
|
+ //私有同步新增元素表
|
|
|
+ //获取所私有引用项目的新增的元素表 根据primaryKeyId获取对象信息
|
|
|
+ WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getPKeyId, pawDTO.getPrimaryKeyId()));
|
|
|
+ //获取所私有引用项目的wbs树的全部表单
|
|
|
+ List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
|
|
|
+ .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getType, 2)
|
|
|
+ );
|
|
|
+ wbsTreePrivates.stream().forEach(wbsTreePrivate1 -> {
|
|
|
+ tableId1.add(String.valueOf(wbsTreePrivate1.getId()));
|
|
|
+ });
|
|
|
+ //获取当前项目私有wbs树下当前所有的元素表
|
|
|
+ List<WbsTreePrivate> wbsTreePrivates1 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId())
|
|
|
+ .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getType, 2)
|
|
|
+ );
|
|
|
+ wbsTreePrivates1.stream().forEach(wbsTreePrivate2 -> {
|
|
|
+ tableId2.add(String.valueOf(wbsTreePrivate2.getId()));
|
|
|
+ });
|
|
|
+
|
|
|
+ List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(tableId1, tableId2);
|
|
|
+
|
|
|
+ if (diffRent1.size() == 0) {
|
|
|
+ throw new ServiceException("未检测到引用的私有wbs树下有新增的元素表");
|
|
|
+ } else {
|
|
|
+ if (tableId1.size() > tableId2.size()) {
|
|
|
+ //私有同步元素表
|
|
|
+ List<WbsTreePrivate> lists = new ArrayList<>();
|
|
|
+ diffRent1.stream().forEach(tableId -> {
|
|
|
+ List<WbsTreePrivate> wbsTreePrivates3 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getId, tableId)
|
|
|
+ .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
|
|
|
+ .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getType, 2)
|
|
|
+ );
|
|
|
+ lists.addAll(wbsTreePrivates3);
|
|
|
+ });
|
|
|
+ lists.stream().forEach(list -> {
|
|
|
+ list.setPKeyId(SnowFlakeUtil.getId());
|
|
|
+ list.setWbsId(pawDTO.getPrimaryKeyId());
|
|
|
+ list.setProjectId(pawDTO.getProjectId());
|
|
|
+ });
|
|
|
+ wbsTreePrivateService.saveBatch(lists, 10000);
|
|
|
+ return "1";
|
|
|
+ }
|
|
|
+ //TODO删除
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
- } else {
|
|
|
- //新增
|
|
|
+ }
|
|
|
+
|
|
|
+ //新增
|
|
|
+ else {
|
|
|
if (idList1.size() > idList2.size()) {
|
|
|
List<WbsTreePrivate> insertData = new ArrayList<>(); //数据初始化节点-引用公有
|
|
|
List<WbsTreePrivate> insertData2 = new ArrayList<>(); //数据初始化节点-引用私有
|
|
|
if (pawDTO.getReferenceType().equals("public")) {
|
|
|
//公有
|
|
|
List<List<WbsTree>> wbsTrees = new ArrayList<>();
|
|
|
- diffrent.stream().forEach(id -> {
|
|
|
+ diffRent.stream().forEach(id -> {
|
|
|
//查询所有公共节点 表单
|
|
|
List<WbsTree> trees = baseMapper.selectNodeAndTable(Long.valueOf(id));
|
|
|
wbsTrees.add(trees);
|
|
@@ -621,12 +686,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
insertData.add(wbsTreePrivate2);
|
|
|
});
|
|
|
});
|
|
|
- projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
|
|
|
-
|
|
|
} else if (pawDTO.getReferenceType().equals("private")) {
|
|
|
//私有
|
|
|
List<List<WbsTreePrivate>> wbsTreesPrivate = new ArrayList<>();
|
|
|
- diffrent.stream().forEach(id -> {
|
|
|
+ diffRent.stream().forEach(id -> {
|
|
|
//查询所有私有节点 表单
|
|
|
List<WbsTreePrivate> wbsTreePrivate = wbsTreePrivateMapper.selectNodeAndTable(id, pawDTO.getWbsId(), pawDTO.getReferencePrivateWbsProjectId());
|
|
|
wbsTreesPrivate.add(wbsTreePrivate);
|
|
@@ -637,22 +700,25 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
insertData2.add(wbsTreePrivate2);
|
|
|
});
|
|
|
});
|
|
|
- projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
|
|
|
}
|
|
|
if (pawDTO.getReferenceType().equals("public")) {
|
|
|
wbsTreePrivateService.saveBatch(insertData, 10000);
|
|
|
+ projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
|
|
|
} else if (pawDTO.getReferenceType().equals("private")) {
|
|
|
wbsTreePrivateService.saveBatch(insertData2, 10000);
|
|
|
+ projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
|
|
|
}
|
|
|
- } else {
|
|
|
- //删除节点 表单
|
|
|
+ }
|
|
|
+
|
|
|
+ //删除节点 表单
|
|
|
+ else {
|
|
|
ArrayList<Long> ids1 = new ArrayList<>();
|
|
|
ArrayList<Long> ids2 = new ArrayList<>();
|
|
|
- diffrent.stream().forEach(id -> {
|
|
|
+ diffRent.stream().forEach(id -> {
|
|
|
ids1.add(Long.valueOf(id));
|
|
|
});
|
|
|
if (deletedStatus == 1) {
|
|
|
- diffrent.stream().forEach(id -> {
|
|
|
+ diffRent.stream().forEach(id -> {
|
|
|
ids2.add(Long.valueOf(id));
|
|
|
});
|
|
|
}
|
|
@@ -669,12 +735,16 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
}
|
|
|
|
|
|
public List<WbsTree> findAllNodeList(String wbsTreeIds) {
|
|
|
- String[] ids = wbsTreeIds.split(",");
|
|
|
- List<Long> idList = new ArrayList<>();
|
|
|
- for (String id : ids) {
|
|
|
- idList.add(Long.valueOf(id));
|
|
|
+ if (StringUtils.isNotEmpty(wbsTreeIds)) {
|
|
|
+ String[] ids = wbsTreeIds.split(",");
|
|
|
+ List<Long> idList = new ArrayList<>();
|
|
|
+ for (String id : ids) {
|
|
|
+ idList.add(Long.valueOf(id));
|
|
|
+ }
|
|
|
+ return baseMapper.selectBatchIds(idList);
|
|
|
+ } else {
|
|
|
+ return null;
|
|
|
}
|
|
|
- return baseMapper.selectBatchIds(idList);
|
|
|
}
|
|
|
|
|
|
private WbsTreePrivate getWbsTreePrivate1(WbsTree wbsTree, WbsTreeContractDTO pawDTO) {
|