|
@@ -234,18 +234,6 @@ public class InformationWriteQueryController extends BladeController {
|
|
|
//获取被复制节点的表格
|
|
|
List<WbsTreeContract> tableList = this.wbsTreeContractClient.queryChildByParentId(wbsTreeContract, "queryTable", "");
|
|
|
if(tableList != null && tableList.size() > 0){
|
|
|
- //获取合同段信息
|
|
|
- ContractInfo contract = this.contractClient.getContractById(Long.parseLong(tableList.get(0).getContractId()));
|
|
|
- if(new Integer("1").equals(contract.getIsCopyData())){
|
|
|
- //说明开启数据复制限制,根据合同段类型判断哪些数据是能够被复制的
|
|
|
- String removeString = new Integer("1").equals(contract.getContractType()) ? "1,2,3" : "5,6,7";
|
|
|
- //删除掉不符合条件的数据
|
|
|
- tableList.removeIf(table -> Arrays.asList(removeString.split(",")).contains(table.getTableType().toString()));
|
|
|
-
|
|
|
- if(tableList.size() <= 0){
|
|
|
- return R.data(300, false, "当前合同段已开启数据隔离,当前节点下未找到符合复制条件的数据");
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
//获取表格的业务数据
|
|
|
Map<String, List<List<Map<String, Object>>>> tableBusinessDataMap = new HashMap<>();
|
|
@@ -271,8 +259,31 @@ public class InformationWriteQueryController extends BladeController {
|
|
|
//新增数据SQL
|
|
|
List<String> saveSqlList = new ArrayList<>();
|
|
|
for(CopyContractTreeNodeVO.CopyBatch copyBatch : batchPathList){
|
|
|
+ //获取选择的节点信息
|
|
|
+ WbsTreeContract selectNode = this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(copyBatch.getPrimaryKeyId());
|
|
|
+
|
|
|
+ //获取合同段信息
|
|
|
+ ContractInfo contract = this.contractClient.getContractById(Long.parseLong(selectNode.getContractId()));
|
|
|
+
|
|
|
+ //实际获取的数据
|
|
|
+ Map<String, List<List<Map<String, Object>>>> currentDataMap = new HashMap<>();
|
|
|
+ if(new Integer("1").equals(contract.getIsCopyData())){
|
|
|
+ //说明开启数据复制限制,根据合同段类型判断哪些数据是能够被复制的
|
|
|
+ String removeString = new Integer("1").equals(contract.getContractType()) ? "1,2,3" : "5,6,7";
|
|
|
+ //找符合条件的表格
|
|
|
+ List<WbsTreeContract> tables = tableList.stream().filter(tree -> Arrays.asList(removeString.split(",")).contains(tree.getTableType().toString())).distinct().collect(Collectors.toList());
|
|
|
+ if(tables.size() <= 0){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ for(WbsTreeContract node : tables){
|
|
|
+ if(tableBusinessDataMap.containsKey(node.getId().toString()) && !currentDataMap.containsKey(node.getId().toString())){
|
|
|
+ currentDataMap.put(node.getId().toString(), tableBusinessDataMap.get(node.getId().toString()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//获取表格信息
|
|
|
- List<WbsTreeContract> copyToTableList = this.wbsTreeContractClient.queryChildByParentId(this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(copyBatch.getPrimaryKeyId()), "queryTable", "");
|
|
|
+ List<WbsTreeContract> copyToTableList = this.wbsTreeContractClient.queryChildByParentId(selectNode, "queryTable", "");
|
|
|
if(copyToTableList != null && copyToTableList.size() > 0){
|
|
|
//首先,记录数据删除sql
|
|
|
for(WbsTreeContract table : copyToTableList){
|
|
@@ -282,15 +293,15 @@ public class InformationWriteQueryController extends BladeController {
|
|
|
}
|
|
|
|
|
|
//其次,检测是否表格是否存在差异(如果存在oldId则优先使用这个字段,不存在时才使用id)
|
|
|
- List<WbsTreeContract> remainTableList = copyToTableList.stream().filter(toTable -> tableBusinessDataMap.containsKey(StringUtils.isNotEmpty(toTable.getOldId()) ? toTable.getOldId() : toTable.getId().toString())).collect(Collectors.toList());
|
|
|
+ List<WbsTreeContract> remainTableList = copyToTableList.stream().filter(toTable -> currentDataMap.containsKey(StringUtils.isNotEmpty(toTable.getOldId()) ? toTable.getOldId() : toTable.getId().toString())).collect(Collectors.toList());
|
|
|
//循环有数据的表格
|
|
|
for(WbsTreeContract remainTable : remainTableList){
|
|
|
if(StringUtils.isNotEmpty(remainTable.getInitTableName())){
|
|
|
//获取主键
|
|
|
String id = StringUtils.isNotEmpty(remainTable.getOldId()) ? remainTable.getOldId() : remainTable.getId().toString();
|
|
|
- if(tableBusinessDataMap.containsKey(id)){
|
|
|
+ if(currentDataMap.containsKey(id)){
|
|
|
//获取对应表格的数据
|
|
|
- Iterator<List<Map<String, Object>>> oneLevelIterator = tableBusinessDataMap.get(id).iterator();
|
|
|
+ Iterator<List<Map<String, Object>>> oneLevelIterator = currentDataMap.get(id).iterator();
|
|
|
while (oneLevelIterator.hasNext()){
|
|
|
List<Map<String, Object>> dataMapList = oneLevelIterator.next();
|
|
|
Iterator<Map<String, Object>> iterator = dataMapList.iterator();
|
|
@@ -506,7 +517,7 @@ public class InformationWriteQueryController extends BladeController {
|
|
|
result.removeIf(query -> StringUtils.isEmpty(query.getPdfUrl()) && StringUtils.isEmpty(query.getPdfUrl()));
|
|
|
if(result.size() > 0){
|
|
|
List<String> urls = new ArrayList<>();
|
|
|
- result.forEach(query -> urls.add(StringUtils.isNotEmpty(query.getEVisaPdfUrl()) ? query.getEVisaPdfUrl() : query.getPdfUrl()));
|
|
|
+ result.forEach(query -> urls.add(StringUtils.isNotEmpty(query.getEVisaPdfUrl()) ? query.getEVisaPdfUrl() + "@@@" + query.getName() : query.getPdfUrl() + "@@@" + query.getName()));
|
|
|
//删除空数据
|
|
|
urls.removeIf(StringUtils::isEmpty);
|
|
|
//打包下载
|
|
@@ -703,6 +714,10 @@ public class InformationWriteQueryController extends BladeController {
|
|
|
//初始化PDF路径
|
|
|
newData.setPdfUrl(null);
|
|
|
newData.setCreateUser(AuthUtil.getUserId());
|
|
|
+
|
|
|
+ //重塑父节点关联关系
|
|
|
+ this.restoreParent(newData, oldToNewIdMap);
|
|
|
+
|
|
|
//保存到集合中
|
|
|
saveList.add(newData);
|
|
|
|
|
@@ -762,23 +777,7 @@ public class InformationWriteQueryController extends BladeController {
|
|
|
newData.setPdfUrl(null);
|
|
|
|
|
|
//重塑父节点关联关系
|
|
|
- String ancestors = newData.getAncestors();
|
|
|
- if(StringUtils.isNotEmpty(ancestors)){
|
|
|
- //重组后的链表
|
|
|
- StringBuilder stringBuilder = new StringBuilder();
|
|
|
- //拆分重组
|
|
|
- String[] ancestorsArray = ancestors.split(",");
|
|
|
- for(String oldParentId : ancestorsArray){
|
|
|
- if(StringUtils.isNotEmpty(oldParentId)){
|
|
|
- //获取新的
|
|
|
- Long newParentId = oldToNewIdMap.get(Long.parseLong(oldParentId));
|
|
|
- //如果新的id为空,说明不变
|
|
|
- stringBuilder.append(",").append(newParentId == null ? oldParentId : newParentId);
|
|
|
- }
|
|
|
- }
|
|
|
- //将新链表设置进对象中
|
|
|
- newData.setAncestors(stringBuilder.substring(1));
|
|
|
- }
|
|
|
+ this.restoreParent(newData, oldToNewIdMap);
|
|
|
|
|
|
//保存到集合中
|
|
|
saveList.add(newData);
|
|
@@ -795,6 +794,29 @@ public class InformationWriteQueryController extends BladeController {
|
|
|
return this.saveOrCopyNodeTree(saveList, saveLedger, 32);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 重塑父节点链
|
|
|
+ */
|
|
|
+ private void restoreParent(WbsTreeContract newData, Map<Long,Long> oldToNewIdMap){
|
|
|
+ String ancestors = newData.getAncestors();
|
|
|
+ if(StringUtils.isNotEmpty(ancestors)){
|
|
|
+ //重组后的链表
|
|
|
+ StringBuilder stringBuilder = new StringBuilder();
|
|
|
+ //拆分重组
|
|
|
+ String[] ancestorsArray = ancestors.split(",");
|
|
|
+ for(String oldParentId : ancestorsArray){
|
|
|
+ if(StringUtils.isNotEmpty(oldParentId)){
|
|
|
+ //获取新的
|
|
|
+ Long newParentId = oldToNewIdMap.get(Long.parseLong(oldParentId));
|
|
|
+ //如果新的id为空,说明不变
|
|
|
+ stringBuilder.append(",").append(newParentId == null ? oldParentId : newParentId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //将新链表设置进对象中
|
|
|
+ newData.setAncestors(stringBuilder.substring(1));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 生成施工日志记录
|
|
|
*/
|