|
@@ -211,8 +211,8 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
String initTableName = i.getInitTableName();
|
|
String initTableName = i.getInitTableName();
|
|
|
|
|
|
for (Map<String, String> map : result) {
|
|
for (Map<String, String> map : result) {
|
|
- System.out.println("i:"+i);
|
|
|
|
- System.out.println("map:"+map);
|
|
|
|
|
|
+ System.out.println("i:" + i);
|
|
|
|
+ System.out.println("map:" + map);
|
|
int keyNumb = 0;
|
|
int keyNumb = 0;
|
|
if (tableName.equals(map.get("表名"))) {
|
|
if (tableName.equals(map.get("表名"))) {
|
|
System.out.println(map);
|
|
System.out.println(map);
|
|
@@ -270,7 +270,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
case 4:
|
|
case 4:
|
|
return "datetime"; //日期
|
|
return "datetime"; //日期
|
|
case 5:
|
|
case 5:
|
|
- return "bigint"; //数值
|
|
|
|
|
|
+ return "decimal"; //数值
|
|
case 6:
|
|
case 6:
|
|
return "varchar"; //签名
|
|
return "varchar"; //签名
|
|
case 7:
|
|
case 7:
|
|
@@ -309,9 +309,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
case "文件":
|
|
case "文件":
|
|
return 1000;
|
|
return 1000;
|
|
case "整数":
|
|
case "整数":
|
|
- case "数值":
|
|
|
|
return 255;
|
|
return 255;
|
|
case "小数":
|
|
case "小数":
|
|
|
|
+ case "数值":
|
|
return 65;
|
|
return 65;
|
|
case "日期":
|
|
case "日期":
|
|
default:
|
|
default:
|
|
@@ -381,55 +381,31 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
return String.valueOf(wbsTree.getId());
|
|
return String.valueOf(wbsTree.getId());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * wbs公有树节点excel导入
|
|
|
|
+ *
|
|
|
|
+ * @param excelFile
|
|
|
|
+ * @param wbsTreeFu
|
|
|
|
+ * @param wbsTree1
|
|
|
|
+ * @return
|
|
|
|
+ * @throws IOException
|
|
|
|
+ */
|
|
@Override
|
|
@Override
|
|
- public String importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException {
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ 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);
|
|
- for (Map<String, String> map : result) {
|
|
|
|
- map.forEach((nodeType, nodeName) -> {
|
|
|
|
- WbsTree wbsTreeZi = new WbsTree();
|
|
|
|
- if (StringUtils.isNotEmpty(nodeName)) {
|
|
|
|
- //初始化默认值
|
|
|
|
- wbsTreeZi.setTenantId(AuthUtil.getTenantId());
|
|
|
|
- wbsTreeZi.setDeptName(nodeName);
|
|
|
|
- wbsTreeZi.setDeptCategory(Integer.valueOf(nodeType));
|
|
|
|
- wbsTreeZi.setWbsId(wbsTreeFu.getWbsId());
|
|
|
|
- wbsTreeZi.setParentId(wbsTreeFu.getParentId());
|
|
|
|
- wbsTreeZi.setAncestors(wbsTreeFu.getAncestors());
|
|
|
|
- wbsTreeZi.setProjectNodeId(wbsTree1.getProjectNodeId());
|
|
|
|
- //新增节点返回未创建成功查询出来的wbsTree对象、创建成功后的wbsTreeZi对象
|
|
|
|
- WbsTree wbsTree = importTree(wbsTreeZi);
|
|
|
|
- //后置初始化默认值
|
|
|
|
- if (wbsTree == null) {
|
|
|
|
- Long id = wbsTreeZi.getId();
|
|
|
|
- //设置ancestors祖级id集合
|
|
|
|
- StringBuilder stringBuffer = new StringBuilder();
|
|
|
|
- StringBuilder appendStr = stringBuffer.append(",").append(wbsTreeZi.getParentId());
|
|
|
|
- String ancestors = wbsTreeZi.getAncestors() + appendStr;
|
|
|
|
- //修改ancestors的值
|
|
|
|
- updateData(ancestors, id);
|
|
|
|
- wbsTreeFu.setParentId(id);
|
|
|
|
- wbsTreeFu.setAncestors(ancestors);
|
|
|
|
- } else {
|
|
|
|
- wbsTreeFu.setParentId(wbsTree.getId());
|
|
|
|
- wbsTreeFu.setAncestors(wbsTree.getAncestors());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- //修改根节点ProjectNodeId
|
|
|
|
- baseMapper.updateById(wbsTree1);
|
|
|
|
- return "2";
|
|
|
|
|
|
+ return startAsyncImportExcel(result, wbsTreeFu, wbsTree1);
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
- return "1";
|
|
|
|
|
|
+ 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()) {
|
|
@@ -439,6 +415,45 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private boolean startAsyncImportExcel(ArrayList<Map<String, String>> result, WbsTree wbsTreeFu, WbsTree wbsTree1) {
|
|
|
|
+ for (Map<String, String> map : result) {
|
|
|
|
+ map.forEach((nodeType, nodeName) -> {
|
|
|
|
+ WbsTree wbsTreeZi = new WbsTree();
|
|
|
|
+ if (StringUtils.isNotEmpty(nodeName)) {
|
|
|
|
+ //初始化默认值
|
|
|
|
+ wbsTreeZi.setTenantId(AuthUtil.getTenantId());
|
|
|
|
+ wbsTreeZi.setDeptName(nodeName);
|
|
|
|
+ wbsTreeZi.setDeptCategory(Integer.valueOf(nodeType));
|
|
|
|
+ wbsTreeZi.setWbsId(wbsTreeFu.getWbsId());
|
|
|
|
+ wbsTreeZi.setParentId(wbsTreeFu.getParentId());
|
|
|
|
+ wbsTreeZi.setAncestors(wbsTreeFu.getAncestors());
|
|
|
|
+ wbsTreeZi.setProjectNodeId(wbsTree1.getProjectNodeId());
|
|
|
|
+ //新增节点返回未创建成功查询出来的wbsTree对象、创建成功后的wbsTreeZi对象
|
|
|
|
+ WbsTree wbsTree = importTree(wbsTreeZi);
|
|
|
|
+ //后置初始化默认值
|
|
|
|
+ if (wbsTree == null) {
|
|
|
|
+ Long id = wbsTreeZi.getId();
|
|
|
|
+ //设置ancestors祖级id集合
|
|
|
|
+ StringBuilder stringBuffer = new StringBuilder();
|
|
|
|
+ StringBuilder appendStr = stringBuffer.append(",").append(wbsTreeZi.getParentId());
|
|
|
|
+ String ancestors = wbsTreeZi.getAncestors() + appendStr;
|
|
|
|
+ //修改ancestors的值
|
|
|
|
+ updateData(ancestors, id);
|
|
|
|
+ wbsTreeFu.setParentId(id);
|
|
|
|
+ wbsTreeFu.setAncestors(ancestors);
|
|
|
|
+ } else {
|
|
|
|
+ wbsTreeFu.setParentId(wbsTree.getId());
|
|
|
|
+ wbsTreeFu.setAncestors(wbsTree.getAncestors());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ //修改根节点ProjectNodeId
|
|
|
|
+ int i = baseMapper.updateById(wbsTree1);
|
|
|
|
+ return i > 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
private WbsTree importTree(WbsTree wbsTreeZi) {
|
|
private WbsTree importTree(WbsTree wbsTreeZi) {
|
|
//查重
|
|
//查重
|
|
QueryWrapper<WbsTree> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<WbsTree> queryWrapper = new QueryWrapper<>();
|
|
@@ -528,6 +543,13 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 项目级wbs树保存
|
|
|
|
+ *
|
|
|
|
+ * @param pawDTO
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public String submitWbsTreeInProject(WbsTreeContractDTO pawDTO) {
|
|
public String submitWbsTreeInProject(WbsTreeContractDTO pawDTO) {
|
|
@@ -590,9 +612,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
//TODO 是否要同步删除元素表
|
|
//TODO 是否要同步删除元素表
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- if (idList1.size() > idList2.size()) {
|
|
|
|
|
|
+ if (idList1.size() > idList2.size()) { //新增
|
|
//新增前去删除当前项目已经引用的旧的私有节点,避免重复引用
|
|
//新增前去删除当前项目已经引用的旧的私有节点,避免重复引用
|
|
- wbsTreePrivateMapper.delete(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId()));
|
|
|
|
|
|
+ //wbsTreePrivateMapper.delete(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId()));
|
|
|
|
|
|
for (String id : diffrent) {
|
|
for (String id : diffrent) {
|
|
//项目私有wbs节点库存在该节点且为删除状态,那么修改is_deleted=0,否则新增
|
|
//项目私有wbs节点库存在该节点且为删除状态,那么修改is_deleted=0,否则新增
|
|
@@ -672,7 +694,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
|
|
+ } else { //删除
|
|
for (String id : diffrent) {
|
|
for (String id : diffrent) {
|
|
//删除当前节点
|
|
//删除当前节点
|
|
wbsTreePrivateMapper.deleteByCondition(id, pawDTO.getWbsId(), pawDTO.getProjectId());
|
|
wbsTreePrivateMapper.deleteByCondition(id, pawDTO.getWbsId(), pawDTO.getProjectId());
|