|
@@ -24,14 +24,12 @@ import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.io.File;
|
|
|
-import java.io.FileInputStream;
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
import java.nio.file.Files;
|
|
|
import java.nio.file.StandardCopyOption;
|
|
|
import java.rmi.ServerException;
|
|
|
import java.util.*;
|
|
|
-import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -719,9 +717,10 @@ public class WbsSynchronousServiceImpl {
|
|
|
//未填报 101
|
|
|
isSync = true;
|
|
|
} else {
|
|
|
- if (i == 0) {
|
|
|
- isSync = false;
|
|
|
+ //没有选择未填报,但是表单查不到数据,表示这个节点有问题
|
|
|
+ if (i == 0 && !contractRanges.contains(WbsSyncTypeEnum.NOT_FILLED_IN.code)) {
|
|
|
errorMsg.append(editContractNode.getNodeName() + "(" + editContractNode.getPKeyId() + ")").append("未填报;");
|
|
|
+ continue;
|
|
|
}
|
|
|
if (contractRanges.contains(WbsSyncTypeEnum.ALREADY_FILLED_IN_NOT_REPORTED.code) && (submit == null || submit == 0)) {
|
|
|
//已填报-未上报 102
|
|
@@ -813,7 +812,7 @@ public class WbsSynchronousServiceImpl {
|
|
|
switch (i) {
|
|
|
//添加表单
|
|
|
case 1:
|
|
|
- addData.addAll(insertContractForm(wbsTreeSynchronousRecord, contractInfo, wbsTreeContracts, addContractNode));
|
|
|
+ addData.addAll(insertContractForm(wbsTreeSynchronousRecord, contractInfo, wbsTreeContracts, addContractNode,errorMsg));
|
|
|
//如果同时选择新增表单和其他的同步类型 在操作其他类型的时候需要添加新的表单
|
|
|
// if (CollectionUtil.isNotEmpty(addContractNode)) {
|
|
|
// editContractNodes.addAll(addContractNode.stream().filter(f -> f.getType() == 2).collect(Collectors.toList()));
|
|
@@ -861,7 +860,29 @@ public class WbsSynchronousServiceImpl {
|
|
|
//新增数据
|
|
|
List<WbsTreeContract> addContractNode = collect2.get(pId);
|
|
|
if(CollectionUtil.isNotEmpty(addContractNode)){
|
|
|
- wbsSynchronousEViSaService.insertContractForm(wbsTreeSynchronousRecord, addContractNode ,pId);
|
|
|
+ int i = wbsSynchronousEViSaService.insertContractForm(wbsTreeSynchronousRecord, addContractNode, pId);
|
|
|
+ //如果失败 -- - - - - 继续执行 或者把当前节点的p_key_id 记录到某个地方 方便后续处理
|
|
|
+ if (i == 0) {
|
|
|
+ //这里可以保存到数据库指定错误日志表
|
|
|
+ //这里可以保存到数据库指定错误日志表
|
|
|
+ } else {
|
|
|
+ //排序调整
|
|
|
+ if (wbsTreeSynchronousRecord.getType().contains("7")) {
|
|
|
+ //获取节点下的当前表单
|
|
|
+ List<WbsTreeContract> resourceData = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
|
|
|
+ .select(WbsTreeContract::getPKeyId, WbsTreeContract::getSort)
|
|
|
+ .eq(WbsTreeContract::getPId, pId)
|
|
|
+ .eq(WbsTreeContract::getIsDeleted, 0)
|
|
|
+ .orderByAsc(WbsTreeContract::getSort));
|
|
|
+ if (CollectionUtil.isNotEmpty(resourceData)) {
|
|
|
+ for (int j = 0; j < resourceData.size(); j++) {
|
|
|
+ resourceData.get(j).setSort(j + 1);
|
|
|
+ }
|
|
|
+ //修改排序为连续排序
|
|
|
+ wbsTreeContractMapper.updateSortBatchByPKeyId(resourceData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
List<WbsTreeContract> list = collect1.get(pId);
|
|
@@ -971,21 +992,6 @@ public class WbsSynchronousServiceImpl {
|
|
|
throw new ServiceException("重置表单路径错误");
|
|
|
}
|
|
|
|
|
|
- //查询出当前项目所有节点---------------------------------------------------------------------------------------------------
|
|
|
-// List<WbsTreePrivate> addList = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
|
|
|
-// .select(WbsTreePrivate::getPKeyId, WbsTreePrivate::getPId)
|
|
|
-// .eq(WbsTreePrivate::getIsDeleted, 0)
|
|
|
-// .eq(WbsTreePrivate::getProjectId, addData.get(0).getProjectId()));
|
|
|
-//
|
|
|
-// addList.addAll(addData);
|
|
|
-// //组合祖级路径 根据当前选中节点为开始
|
|
|
-// Map<Long, WbsTreePrivate> collect = addList.stream().collect(Collectors.toMap(WbsTreePrivate::getPKeyId, Function.identity()));
|
|
|
-//
|
|
|
-// addData.forEach(node -> {
|
|
|
-// String correctAncestors = createAncestorsPId(node, collect);
|
|
|
-// node.setAncestorsPId(correctAncestors);
|
|
|
-// });
|
|
|
-
|
|
|
//新增-----------------------------------------------------------------------------------------------------------------
|
|
|
Map<Long, List<WbsTreePrivate>> collect = addData.stream().collect(Collectors.groupingBy(WbsTreePrivate::getPId));
|
|
|
Set<Long> longs = collect.keySet();
|
|
@@ -1062,35 +1068,37 @@ public class WbsSynchronousServiceImpl {
|
|
|
* @param wbsTreeContracts 当前合同节点数据
|
|
|
* @param addContractNodes 新增节点数据
|
|
|
*/
|
|
|
- public List<WbsTreeContract> insertContractForm(WbsTreeSynchronousRecord wbsTreeSynchronousRecord, ContractInfo contractInfo, List<WbsTreeContract> wbsTreeContracts, List<WbsTreeContract> addContractNodes) {
|
|
|
+ public List<WbsTreeContract> insertContractForm(WbsTreeSynchronousRecord wbsTreeSynchronousRecord, ContractInfo contractInfo, List<WbsTreeContract> wbsTreeContracts, List<WbsTreeContract> addContractNodes, StringBuilder errorMsg) {
|
|
|
List<WbsTreeContract> addData = new ArrayList<>();
|
|
|
|
|
|
|
|
|
if (CollectionUtil.isNotEmpty(addContractNodes)) {
|
|
|
+ //项目级:p_key_id:p_id
|
|
|
+ HashMap<Long, Long> map = new HashMap<>();
|
|
|
+
|
|
|
+
|
|
|
|
|
|
//选给新增的节点赋值
|
|
|
addContractNodes.forEach(f -> {
|
|
|
+ Long id = SnowFlakeUtil.getId();
|
|
|
+ map.put(id,f.getPId());
|
|
|
+
|
|
|
f.setIsTypePrivatePid(f.getPKeyId());
|
|
|
- f.setPKeyId(SnowFlakeUtil.getId());
|
|
|
+ f.setPKeyId(id);
|
|
|
});
|
|
|
|
|
|
for (WbsTreeContract addContractNode : addContractNodes) {
|
|
|
if (addContractNode.getParentId() == 0) {
|
|
|
continue;
|
|
|
}
|
|
|
-
|
|
|
- //查询出当前模板节点的父节点 去获取对应项目节点 如果父节点为0就跳过
|
|
|
- List<WbsTreeContract> addContractParentNodes = wbsTreeContracts.stream().filter(f -> Objects.equals(f.getTreePId(), addContractNode.getParentId())).collect(Collectors.toList());
|
|
|
-
|
|
|
- //如果没有数据 就表示这条数据的父节点也时新增节点 就需要从新增节点集合中找父级节点
|
|
|
- if (addContractParentNodes.isEmpty()) {
|
|
|
- addContractParentNodes = addContractNodes.stream().filter(f -> f.getTreePId().equals(addContractNode.getParentId())).collect(Collectors.toList());
|
|
|
- }
|
|
|
- //如果现在还找不到当前节点的父节点就表示数据有问题
|
|
|
- if (addContractParentNodes.isEmpty()) {
|
|
|
- //TODO
|
|
|
- throw new ServiceException(addContractNode.getNodeName() + "( " + addContractNode.getPKeyId() + ")-找不到父节点");
|
|
|
+ //新增的数据只有表单,所以找父节点可以直接在合同段中找,如果找不到就说明当前表单的父节点在合同段中不存在 数据有问题
|
|
|
+ List<WbsTreeContract> addContractParentNodes = wbsTreeContracts.stream().filter(f -> Objects.equals(f.getIsTypePrivatePid(), map.get(addContractNode.getPKeyId()))).collect(Collectors.toList());
|
|
|
+ //获取新增数据中的父级节点
|
|
|
+ if (CollectionUtil.isEmpty(addContractParentNodes)) {
|
|
|
+ errorMsg.append("未在合同段[" + contractInfo.getContractName() + "]找到当前节点父节点-p_key_id(" + map.get(addContractNode.getPKeyId()) + ");");
|
|
|
+ continue;
|
|
|
}
|
|
|
+
|
|
|
//当前新增节点的父节点
|
|
|
WbsTreeContract parent = addContractParentNodes.get(0);
|
|
|
|