|
@@ -179,6 +179,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
wbsTree.setAncestors(ancestors);
|
|
wbsTree.setAncestors(ancestors);
|
|
wbsTree.setType(2);
|
|
wbsTree.setType(2);
|
|
wbsTree.setIsDeleted(BladeConstant.DB_NOT_DELETED);
|
|
wbsTree.setIsDeleted(BladeConstant.DB_NOT_DELETED);
|
|
|
|
+ wbsTree.setStatus(1);
|
|
maps.stream().forEach(map -> {
|
|
maps.stream().forEach(map -> {
|
|
String deptName = map.get("表名");
|
|
String deptName = map.get("表名");
|
|
wbsTree.setDeptName(deptName);
|
|
wbsTree.setDeptName(deptName);
|
|
@@ -241,6 +242,11 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public boolean deleteLogicById(String id) {
|
|
|
|
+ return baseMapper.deleteLogicById(id) > 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
private Boolean initTable(String tableName) {
|
|
private Boolean initTable(String tableName) {
|
|
//建表
|
|
//建表
|
|
@@ -383,19 +389,23 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public boolean importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException {
|
|
public boolean importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException {
|
|
- //赋值
|
|
|
|
|
|
+ //初始化赋值
|
|
wbsTreeFu.setAncestors("0");
|
|
wbsTreeFu.setAncestors("0");
|
|
wbsTree1.setProjectNodeId(wbsTree1.getId());
|
|
wbsTree1.setProjectNodeId(wbsTree1.getId());
|
|
File file = WbsExcelUtil.convert(excelFile);
|
|
File file = WbsExcelUtil.convert(excelFile);
|
|
String canonicalPath = file.getCanonicalPath();
|
|
String canonicalPath = file.getCanonicalPath();
|
|
|
|
+
|
|
try {
|
|
try {
|
|
- //解析
|
|
|
|
|
|
+ //解析excel
|
|
WbsExcelUtil excelUtil = new WbsExcelUtil();
|
|
WbsExcelUtil excelUtil = new WbsExcelUtil();
|
|
ArrayList<Map<String, String>> result = excelUtil.readExcelToObj(canonicalPath);
|
|
ArrayList<Map<String, String>> result = excelUtil.readExcelToObj(canonicalPath);
|
|
|
|
+
|
|
|
|
+ //导入excel
|
|
return importExcel(result, wbsTreeFu, wbsTree1);
|
|
return importExcel(result, wbsTreeFu, wbsTree1);
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
- throw new ServiceException("导入失败,请确认模板是否正确");
|
|
|
|
|
|
+ throw new ServiceException("导入失败,请确认模板格式内容是否正确");
|
|
} finally {
|
|
} finally {
|
|
|
|
+ //资源删除
|
|
File file2 = new File(canonicalPath);
|
|
File file2 = new File(canonicalPath);
|
|
if (file2.isFile() && file2.exists()) {
|
|
if (file2.isFile() && file2.exists()) {
|
|
file2.delete();
|
|
file2.delete();
|
|
@@ -405,11 +415,12 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
}
|
|
}
|
|
|
|
|
|
private boolean importExcel(ArrayList<Map<String, String>> result, WbsTree wbsTreeFu, WbsTree wbsTree1) {
|
|
private boolean importExcel(ArrayList<Map<String, String>> result, WbsTree wbsTreeFu, WbsTree wbsTree1) {
|
|
|
|
+ //解析list-map
|
|
result.stream().forEach(map -> {
|
|
result.stream().forEach(map -> {
|
|
map.forEach((nodeType, nodeName) -> {
|
|
map.forEach((nodeType, nodeName) -> {
|
|
- WbsTree wbsTreeZi = new WbsTree();
|
|
|
|
if (StringUtils.isNotEmpty(nodeName)) {
|
|
if (StringUtils.isNotEmpty(nodeName)) {
|
|
- //初始化
|
|
|
|
|
|
+ //初始化节点参数
|
|
|
|
+ WbsTree wbsTreeZi = new WbsTree();
|
|
wbsTreeZi.setTenantId(AuthUtil.getTenantId());
|
|
wbsTreeZi.setTenantId(AuthUtil.getTenantId());
|
|
wbsTreeZi.setDeptName(nodeName);
|
|
wbsTreeZi.setDeptName(nodeName);
|
|
wbsTreeZi.setDeptCategory(Integer.valueOf(nodeType));
|
|
wbsTreeZi.setDeptCategory(Integer.valueOf(nodeType));
|
|
@@ -417,19 +428,22 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
wbsTreeZi.setParentId(wbsTreeFu.getParentId());
|
|
wbsTreeZi.setParentId(wbsTreeFu.getParentId());
|
|
wbsTreeZi.setAncestors(wbsTreeFu.getAncestors());
|
|
wbsTreeZi.setAncestors(wbsTreeFu.getAncestors());
|
|
wbsTreeZi.setProjectNodeId(wbsTree1.getProjectNodeId());
|
|
wbsTreeZi.setProjectNodeId(wbsTree1.getProjectNodeId());
|
|
- //新增节点返回未创建成功查询出来的wbsTree对象、创建成功后的wbsTreeZi对象
|
|
|
|
|
|
+
|
|
|
|
+ //新增节点返回未创建成功查询出来的wbsTree对象、成功后的wbsTreeZi对象
|
|
WbsTree wbsTree = importTree(wbsTreeZi);
|
|
WbsTree wbsTree = importTree(wbsTreeZi);
|
|
- //后置初始化
|
|
|
|
|
|
+
|
|
if (wbsTree == null) {
|
|
if (wbsTree == null) {
|
|
|
|
+ //后置赋值
|
|
Long id = wbsTreeZi.getId();
|
|
Long id = wbsTreeZi.getId();
|
|
- //初始化ancestors
|
|
|
|
StringBuilder stringBuffer = new StringBuilder();
|
|
StringBuilder stringBuffer = new StringBuilder();
|
|
StringBuilder appendStr = stringBuffer.append(",").append(wbsTreeZi.getParentId());
|
|
StringBuilder appendStr = stringBuffer.append(",").append(wbsTreeZi.getParentId());
|
|
String ancestors = wbsTreeZi.getAncestors() + appendStr;
|
|
String ancestors = wbsTreeZi.getAncestors() + appendStr;
|
|
- //修改ancestors
|
|
|
|
|
|
+
|
|
|
|
+ //修改节点ancestors
|
|
updateData(ancestors, id);
|
|
updateData(ancestors, id);
|
|
wbsTreeFu.setParentId(id);
|
|
wbsTreeFu.setParentId(id);
|
|
wbsTreeFu.setAncestors(ancestors);
|
|
wbsTreeFu.setAncestors(ancestors);
|
|
|
|
+
|
|
} else {
|
|
} else {
|
|
wbsTreeFu.setParentId(wbsTree.getId());
|
|
wbsTreeFu.setParentId(wbsTree.getId());
|
|
wbsTreeFu.setAncestors(wbsTree.getAncestors());
|
|
wbsTreeFu.setAncestors(wbsTree.getAncestors());
|
|
@@ -438,21 +452,23 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
- //修改ProjectNodeId
|
|
|
|
|
|
+ //修改projectNodeId
|
|
int i = baseMapper.updateById(wbsTree1);
|
|
int i = baseMapper.updateById(wbsTree1);
|
|
return i > 0;
|
|
return i > 0;
|
|
}
|
|
}
|
|
|
|
|
|
private WbsTree importTree(WbsTree wbsTreeZi) {
|
|
private WbsTree importTree(WbsTree wbsTreeZi) {
|
|
|
|
+ //判断节点名称是否重复
|
|
QueryWrapper<WbsTree> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<WbsTree> queryWrapper = new QueryWrapper<>();
|
|
queryWrapper.eq("wbs_id", wbsTreeZi.getWbsId());
|
|
queryWrapper.eq("wbs_id", wbsTreeZi.getWbsId());
|
|
queryWrapper.eq("dept_name", wbsTreeZi.getDeptName());
|
|
queryWrapper.eq("dept_name", wbsTreeZi.getDeptName());
|
|
queryWrapper.eq("dept_category", wbsTreeZi.getDeptCategory());
|
|
queryWrapper.eq("dept_category", wbsTreeZi.getDeptCategory());
|
|
queryWrapper.eq("project_node_id", wbsTreeZi.getProjectNodeId());
|
|
queryWrapper.eq("project_node_id", wbsTreeZi.getProjectNodeId());
|
|
queryWrapper.ne("ancestors", wbsTreeZi.getAncestors());
|
|
queryWrapper.ne("ancestors", wbsTreeZi.getAncestors());
|
|
- WbsTree wbsTrees = baseMapper.selectOne(queryWrapper);
|
|
|
|
- if (wbsTrees == null) {
|
|
|
|
- //初始化
|
|
|
|
|
|
+ List<WbsTree> wbsTrees = baseMapper.selectList(queryWrapper);
|
|
|
|
+ WbsTree wbsTree = null;
|
|
|
|
+
|
|
|
|
+ if (wbsTrees.size() <= 0) { //不重复-直接新增
|
|
wbsTreeZi.setStatus(1);
|
|
wbsTreeZi.setStatus(1);
|
|
wbsTreeZi.setType(1);
|
|
wbsTreeZi.setType(1);
|
|
wbsTreeZi.setMajorDataType(0);
|
|
wbsTreeZi.setMajorDataType(0);
|
|
@@ -461,9 +477,27 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
wbsTreeZi.setIsExpernode(0);
|
|
wbsTreeZi.setIsExpernode(0);
|
|
}
|
|
}
|
|
baseMapper.insert(wbsTreeZi);
|
|
baseMapper.insert(wbsTreeZi);
|
|
|
|
+
|
|
|
|
+ } else { //重复-判断是否同级,同级跳过,不同级新增
|
|
|
|
+
|
|
|
|
+ //获取当前相同节点对象信息
|
|
|
|
+ wbsTree = wbsTrees.stream().findFirst().orElse(wbsTrees.get(wbsTrees.size() - 1));
|
|
|
|
+
|
|
|
|
+ //只判断4 5 6级节点类型的名称是否重复,后续可根据实际情况更改控制的层级
|
|
|
|
+ if (wbsTreeZi.getDeptCategory() == 4 || wbsTreeZi.getDeptCategory() == 5 || wbsTreeZi.getDeptCategory() == 6) {
|
|
|
|
+ if (wbsTreeZi.getDeptName().equals(wbsTree.getDeptName()) && !wbsTreeZi.getParentId().equals(wbsTree.getParentId())) {
|
|
|
|
+ wbsTreeZi.setStatus(1);
|
|
|
|
+ wbsTreeZi.setType(1);
|
|
|
|
+ wbsTreeZi.setMajorDataType(0);
|
|
|
|
+ if (wbsTreeZi.getDeptCategory() == 6) {
|
|
|
|
+ wbsTreeZi.setIsConcrete(0);
|
|
|
|
+ wbsTreeZi.setIsExpernode(0);
|
|
|
|
+ }
|
|
|
|
+ baseMapper.insert(wbsTreeZi);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- //TODO 暂未处理重复条新增问题
|
|
|
|
- return wbsTrees;
|
|
|
|
|
|
+ return wbsTree;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -488,6 +522,17 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
@Override
|
|
@Override
|
|
public List<SaveUserInfoByProjectVO2> findProjectAndContractList(Long userId) {
|
|
public List<SaveUserInfoByProjectVO2> findProjectAndContractList(Long userId) {
|
|
List<SaveUserInfoByProjectVO2> list = baseMapper.selectListByUserId(userId);
|
|
List<SaveUserInfoByProjectVO2> list = baseMapper.selectListByUserId(userId);
|
|
|
|
+
|
|
|
|
+ //TODO 合并projectName返回
|
|
|
|
+ Map<String, List<SaveUserInfoByProjectVO2>> collect = list.stream().collect(Collectors.groupingBy(SaveUserInfoByProjectVO2::getProjectName));
|
|
|
|
+ List<Map> collect1 = collect.entrySet().stream().map(entity -> {
|
|
|
|
+ Map resultMap = new HashMap();
|
|
|
|
+ resultMap.put("projectName", entity.getKey());
|
|
|
|
+ resultMap.put("dataInfo", entity.getValue());
|
|
|
|
+ return resultMap;
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+
|
|
return list;
|
|
return list;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -502,7 +547,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
int number = 1;
|
|
int number = 1;
|
|
for (WbsTreeDTO2 wbsTree : wbsTreeList) {
|
|
for (WbsTreeDTO2 wbsTree : wbsTreeList) {
|
|
wbsTree.setSort(number);
|
|
wbsTree.setSort(number);
|
|
- //修改sort
|
|
|
|
baseMapper.updateSortById(wbsTree.getId(), wbsTree.getSort());
|
|
baseMapper.updateSortById(wbsTree.getId(), wbsTree.getSort());
|
|
number++;
|
|
number++;
|
|
}
|
|
}
|