huangjn 2 年之前
父节点
当前提交
49cacfb586

+ 1 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/InformationQueryClient.java

@@ -21,7 +21,7 @@ public interface InformationQueryClient {
     String API_PREFIX = "/api/business/informationQuery";
 
     /**
-     * 获取记录
+     * 获取首件记录
      */
     @PostMapping(API_PREFIX + "/queryFirstBusinessDataByFirstId")
     JSONObject queryFirstBusinessDataByFirstId(@RequestParam String firstId);

+ 2 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/EVisaTaskCheckController.java

@@ -368,7 +368,8 @@ public class EVisaTaskCheckController {
             List<Long> pKeyList = privateTreeList.stream().map(WbsTreePrivate::getPKeyId).distinct().collect(Collectors.toList());
             jsonList = this.eVisaConfigClient.queryEVisaConfigAllByTableIds(JSONArray.parseArray(JSONObject.toJSONString(pKeyList), String.class));
         } else {
-            jsonList = null;
+            //也许当前参数就是表格,直查
+            jsonList = this.eVisaConfigClient.queryEVisaConfigAllByTableIds(primaryKeyIds);
         }
 
         return jsonList;

+ 22 - 4
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -967,7 +967,7 @@ public class InformationWriteQueryController extends BladeController {
 				});
 			}
 		}
-		return this.saveOrCopyNodeTree(saveList, saveLedger, 32);
+		return this.saveOrCopyNodeTree(saveList, saveLedger, 32, needCopyNode);
 	}
 
 	/**
@@ -1424,7 +1424,7 @@ public class InformationWriteQueryController extends BladeController {
 			});
 		}
 
-		return this.saveOrCopyNodeTree(saveList, saveLedger, 2);
+		return this.saveOrCopyNodeTree(saveList, saveLedger, 2, treeContract);
 	}
 
 	private List<WbsTreePrivate> unifiedCode(List<AddContractTreeNodeVO.Node> allSelectedNodeList, WbsTreeContract treeContract){
@@ -1439,7 +1439,7 @@ public class InformationWriteQueryController extends BladeController {
 	}
 
 	@NotNull
-	private R<Boolean> saveOrCopyNodeTree(List<WbsTreeContract> saveList, List<ConstructionLedger> saveLedger, Integer operationType) {
+	private R<Boolean> saveOrCopyNodeTree(List<WbsTreeContract> saveList, List<ConstructionLedger> saveLedger, Integer operationType, WbsTreeContract currentNode) {
 		if(saveList.size() > 0){
 			//保存施工日志
 			if(saveLedger.size() > 0){
@@ -1447,9 +1447,19 @@ public class InformationWriteQueryController extends BladeController {
 			}
 
 			try{
+				//获取当前节点的所有父节点
+				List<WbsTreeContract> result = new ArrayList<>();
+				result.add(currentNode);
+				this.queryParentNode(currentNode, result);
+				StringBuilder pathName = new StringBuilder();
+				for(int i = 1, l = result.size(); i <= l; i ++){
+					WbsTreeContract node = result.get(result.size() - i);
+					pathName.append("-").append(StringUtils.isNotEmpty(node.getFullName()) ? node.getFullName() : node.getNodeName());
+				}
+
 				JSONObject json = new JSONObject();
 				json.put("operationObjIds", JSONArray.parseArray(JSONObject.toJSONString(saveList.stream().map(WbsTreeContract::getPKeyId).distinct().collect(Collectors.toList())), String.class));
-				json.put("operationObjName", saveList.stream().map(wbs -> StringUtils.isNotEmpty(wbs.getFullName()) ? wbs.getFullName() : wbs.getNodeName()).collect(Collectors.joining()));
+				json.put("operationObjName", pathName.substring(1));
 				//保存操作记录
 				this.operationLogClient.saveUserOperationLog(operationType, "资料管理", "工序资料", json);
 
@@ -1463,6 +1473,14 @@ public class InformationWriteQueryController extends BladeController {
 		return R.data(false);
 	}
 
+	private void queryParentNode(WbsTreeContract currentNode, List<WbsTreeContract> result){
+		WbsTreeContract parentNode = this.wbsTreeContractClient.getContractWbsTreeByContractIdAndId(currentNode.getParentId(), Long.parseLong(currentNode.getContractId()));
+		if(parentNode != null){
+			result.add(parentNode);
+			this.queryParentNode(parentNode, result);
+		}
+	}
+
 	/**
 	 * 处理半选集合
 	 */

+ 1 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -32,6 +32,7 @@ import org.springblade.core.tool.jackson.JsonUtil;
 import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.flow.core.entity.BladeFlow;
 import org.springblade.flow.core.feign.NewFlowClient;
+import org.springblade.manager.feign.ContractClient;
 import org.springblade.resource.feign.NewISmsClient;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;

+ 15 - 1
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/InformationQueryClientImpl.java

@@ -1,9 +1,12 @@
 package org.springblade.business.feignClient;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import org.springblade.business.entity.InformationQuery;
+import org.springblade.business.entity.InformationQueryFile;
 import org.springblade.business.feign.InformationQueryClient;
+import org.springblade.business.service.IInformationQueryFileService;
 import org.springblade.business.service.IInformationQueryService;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -15,10 +18,21 @@ public class InformationQueryClientImpl implements InformationQueryClient {
 
     private final IInformationQueryService iInformationQueryService;
 
+    private final IInformationQueryFileService informationQueryFileService;
+
     @Override
     public JSONObject queryFirstBusinessDataByFirstId(String firstId) {
         InformationQuery query = this.iInformationQueryService.getById(firstId);
-        return query != null ? JSONObject.parseObject(JSONObject.toJSONString(query), JSONObject.class) : null;
+        if(query != null){
+            JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(query), JSONObject.class);
+            InformationQueryFile queryFile = this.informationQueryFileService.getOne(Wrappers.<InformationQueryFile>lambdaQuery().eq(InformationQueryFile::getQueryId, query.getId()));
+            if(queryFile != null){
+                json.put("uploadFile", queryFile.getPdfUrl());
+            }
+            return json;
+        }
+
+        return null;
     }
 
     @Override

+ 8 - 202
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -1435,9 +1435,15 @@ public class ExcelTabController extends BladeController {
             @ApiImplicitParam(name = "contractId", value = "合同段Id", required = true)
     })
     public R getpdfs(String nodeId, String classify, String contractId, String projectId) {
-        String sql = "select  pdf_url from u_information_query  where classify='" + classify + "' and  wbs_id='" + nodeId + "' and contract_id ='" + contractId + "' ";
+        String sql = "select pdf_url, e_visa_pdf_url from u_information_query  where classify='" + classify + "' and  wbs_id='" + nodeId + "' and contract_id ='" + contractId + "' ";
         Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap(sql);
-        return R.data(stringObjectMap.get("pdf_url"));
+        Object pdfUrl = stringObjectMap.get("pdf_url");
+        if(stringObjectMap.get("e_visa_pdf_url") != null){
+            //优先使用电签的PDF
+            pdfUrl = stringObjectMap.get("e_visa_pdf_url");
+        }
+
+        return R.data(pdfUrl);
     }
 
     /**
@@ -2048,206 +2054,6 @@ public class ExcelTabController extends BladeController {
         return R.data(300, null, "未找到对应的业务数据");
     }
 
-    /**
-     * 预览首件PDF
-     */
-    @GetMapping("/get-first-pdf-info")
-    @ApiOperationSupport(order = 28)
-    @ApiOperation(value = "获取首件填报记录")
-    @ApiImplicitParam(name = "firstId", value = "首件列表ID")
-    public R<String> getFirstPdfInfo(String firstId) {
-        if (StringUtils.isNotEmpty(firstId)) {
-            //PDF路径集合
-            List<String> pdfUrls = new ArrayList<>();
-
-            //获取配置的路径
-            String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-            //获取数据
-            JSONObject firstJson = this.informationQueryClient.queryFirstBusinessDataByFirstId(firstId);
-            if (firstJson != null) {
-                if (StringUtils.isNotEmpty(firstJson.getString("eVisaPdfUrl")) || StringUtils.isNotEmpty(firstJson.getString("pdfUrl"))) {
-                    pdfUrls.add(StringUtils.isNotEmpty(firstJson.getString("eVisaPdfUrl")) ? firstJson.getString("eVisaPdfUrl") : firstJson.getString("pdfUrl"));
-                } else {
-                    //没有生成拼接的记录,生成
-                    //获取html
-                    WbsTreeContract tableNode = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, firstJson.getString("tableId")));
-
-                    if (tableNode == null) {
-                        return R.fail("该数据下无此节点!");
-                    }
-
-                    if (StringUtils.isEmpty(tableNode.getHtmlUrl())) {
-                        return R.fail("请关联清表!");
-                    }
-
-                    // 获取清表信息
-                    ExcelTab excelTab = excelTabService.getById(tableNode.getExcelId());
-                    if (excelTab == null) {
-                        return R.fail("失败");
-                    }
-
-                    List<Map<String, Object>> businessDataMapList = this.getFirstBusinessData(firstId).getData();
-
-                    try {
-                        //处理数据
-                        for (Map<String, Object> dataMap : businessDataMapList) {
-                            // 获取excel流 和 html流
-                            Workbook wb = new Workbook();
-                            wb.loadFromMHtml(CommonUtil.getOSSInputStream(excelTab.getFileUrl()));
-                            //获取工作表
-                            Worksheet sheet = wb.getWorksheets().get(0);
-
-                            // 数据不为空 &&
-                            if (StringUtils.isNotEmpty(tableNode.getHtmlUrl())) {
-                                File htmlFile = ResourceUtil.getFile(tableNode.getHtmlUrl());
-                                if (htmlFile.exists()) {
-                                    String htmlString = IoUtil.readToString(new FileInputStream(htmlFile));
-                                    Document doc = Jsoup.parse(htmlString);
-                                    Element table = doc.select("table").first();
-                                    Elements trs = table.select("tr");
-
-                                    if (ObjectUtil.isNotEmpty(dataMap)) {
-                                        for (String val : dataMap.keySet()) {
-                                            if (val.indexOf("__") >= 0) {
-                                                String DataVal[] = val.split("__");
-                                                String[] xy = DataVal[1].split("_");
-                                                Element data = trs.get(Integer.parseInt(xy[0])).select("td").get(Integer.parseInt(xy[1]));
-
-                                                if (data.html().indexOf("x1") >= 0 && data.html().indexOf("y1") >= 0) {
-                                                    int x1, y1;
-
-                                                    if (data.html().indexOf("el-tooltip") >= 0) {
-                                                        x1 = Integer.parseInt(data.children().get(0).children().get(0).attr("x1"));
-                                                        y1 = Integer.parseInt(data.children().get(0).children().get(0).attr("y1"));
-                                                    } else {
-                                                        x1 = Integer.parseInt(data.children().get(0).attr("x1"));
-                                                        y1 = Integer.parseInt(data.children().get(0).attr("y1"));
-                                                    }
-                                                    if (x1 == 0) {
-                                                        x1 = 1;
-                                                    }
-                                                    String myData = dataMap.get(val) + "";
-                                                    if (myData.indexOf("T") >= 0 && myData.indexOf("-") >= 0) {
-                                                        if (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0) {
-                                                            myData = myData.replace("[", "").replace("]", "");
-                                                            String[] dataVal = myData.split(",");
-                                                            String Start_dataStr[] = dataVal[0].split("T")[0].split("-");
-                                                            String StartDate = StringUtil.format("{}年{}月{}日", new Object[]{Start_dataStr[0], Start_dataStr[1], Integer.parseInt(Start_dataStr[2]) + 1});
-
-                                                            String end_dataStr[] = dataVal[1].split("T")[0].split("-");
-                                                            String endDate = StringUtil.format("{}年{}月{}日", new Object[]{end_dataStr[0], end_dataStr[1], Integer.parseInt(end_dataStr[2]) + 1});
-
-                                                            if (StartDate.equals(endDate)) {
-                                                                myData = StartDate;
-                                                            } else {
-                                                                myData = StartDate + "-" + endDate;
-                                                            }
-                                                        } else {
-                                                            String dataStr[] = myData.split("T")[0].split("-");
-                                                            myData = StringUtil.format("{}年{}月{}日", new Object[]{dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1});
-                                                        }
-                                                    }
-
-                                                    if (myData.indexOf("https") >= 0 && myData.indexOf("aliyuncs") >= 0) {
-                                                        Element element = trs.get(y1).select("td").get(x1);
-                                                        String styles[] = element.attr("style").split(";");
-                                                        int Height = 0;
-                                                        for (String sty : styles) {
-                                                            if (sty.indexOf("height:") >= 0) {
-                                                                Height = Integer.parseInt(sty.replace("height:", "").replace("px", ""));
-                                                            }
-                                                        }
-
-                                                        BufferedImage image = ImageIO.read(CommonUtil.getOSSInputStream(myData));
-                                                        ExcelPicture pic = sheet.getPictures().add(y1, x1, image);
-                                                        pic.setHeight(Height);
-                                                        sheet.getCellRange(y1, x1).getStyle().setShrinkToFit(true);
-
-                                                    } else {
-                                                        final CellRange cellRange = sheet.getCellRange(y1, x1);
-                                                        cellRange.setText(myData);
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-
-                                    // 组装电签设置
-                                    QueryWrapper<TextdictInfo> queryWrapper = new QueryWrapper<>();
-                                    queryWrapper.eq("type", 2);
-                                    queryWrapper.eq("tab_id", tableNode.getPKeyId());
-
-                                    final List<TextdictInfo> textdictInfos = textdictInfoService.getBaseMapper().selectList(queryWrapper);
-                                    if (textdictInfos != null && !textdictInfos.isEmpty()) {
-                                        textdictInfos.forEach(e -> {
-                                            String key = e.getColKey();
-                                            String keys[] = key.split("__");
-                                            String[] trtd = keys[1].split("_");
-                                            Element data = trs.get(Integer.parseInt(trtd[0])).select("td").get(Integer.parseInt(trtd[1]));
-                                            int x1 = Integer.parseInt(data.children().get(0).attr("x1"));
-                                            if (x1 == 0) {
-                                                x1 = 1;
-                                            }
-                                            int y1 = Integer.parseInt(data.children().get(0).attr("y1"));
-
-                                            final CellRange cellRange = sheet.getCellRange(y1, x1);
-
-                                            cellRange.setText(e.getId() + "");
-                                            cellRange.getCellStyle().getFont().setColor(Color.white);
-
-                                        });
-                                    }
-                                }
-                            }
-
-                            Long fileName = SnowFlakeUtil.getId();
-                            String onePdfPath = file_path + "/pdf//" + fileName + ".pdf";
-
-                            sheet.saveToPdf(onePdfPath);
-
-                            BladeFile bladeFile = this.newIOSSClient.uploadFile(fileName + ".pdf", onePdfPath);
-
-                            pdfUrls.add(bladeFile.getLink());
-
-                            wb.dispose();
-                        }
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                }
-
-                if (pdfUrls.size() > 0) {
-                    try {
-                        //关联的数据
-                        if (StringUtils.isNotEmpty(firstJson.getString("linkMergePdfUrl"))) {
-                            pdfUrls.add(firstJson.getString("linkMergePdfUrl"));
-                        }
-                        //总结报告,暂时无
-
-                        //上传
-                        String mergePdfPath = file_path + "/pdf//" + firstId + ".pdf";
-                        File oldMergePdf = ResourceUtil.getFile(mergePdfPath);
-                        if (oldMergePdf.exists()) {
-                            oldMergePdf.delete();
-                        }
-                        //合并
-                        FileUtils.mergePdfPublicMethods(pdfUrls, mergePdfPath);
-                        //上传
-                        BladeFile mergeFile = this.newIOSSClient.uploadFile(firstId + '-' + new Date().getTime() + ".pdf", mergePdfPath);
-
-                        //返回
-                        return R.data(mergeFile.getLink());
-
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                }
-            }
-        }
-
-        return R.data(300, null, "未找到数据");
-    }
-
     @PostMapping("/save_log_first_buss_data")
     @ApiOperationSupport(order = 29)
     @ApiOperation(value = "填报页面数据保存", notes = "填报页面数据保存")

+ 5 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FirstController.java

@@ -290,7 +290,7 @@ public class FirstController extends BladeController {
                                     // 组装电签设置
                                     QueryWrapper<TextdictInfo> queryWrapper = new QueryWrapper<>();
                                     queryWrapper.eq("type", 2);
-                                    queryWrapper.eq("tab_id", tableNode.getPKeyId());
+                                    queryWrapper.eq("tab_id", StringUtils.isNotEmpty(tableNode.getIsTypePrivatePid().toString()) ? tableNode.getIsTypePrivatePid() : tableNode.getPKeyId());
 
                                     final List<TextdictInfo> textdictInfos = this.textdictInfoService.getBaseMapper().selectList(queryWrapper);
                                     if (textdictInfos != null && !textdictInfos.isEmpty()) {
@@ -341,7 +341,10 @@ public class FirstController extends BladeController {
                         if(StringUtils.isNotEmpty(firstJson.getString("linkMergePdfUrl"))){
                             pdfUrls.add(firstJson.getString("linkMergePdfUrl"));
                         }
-                        //总结报告,暂时无
+                        //总结报告
+                        if(StringUtils.isNotEmpty(firstJson.getString("uploadFile"))){
+                            pdfUrls.add(firstJson.getString("uploadFile"));
+                        }
 
                         //上传
                         String mergePdfPath = file_path + "/pdf//" + firstId + ".pdf";

+ 73 - 39
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -36,6 +36,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.validation.Valid;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
 
@@ -67,26 +68,62 @@ public class WbsTreePrivateController extends BladeController {
             //需要保存的集合
             List<WbsTreePrivate> saveTreePrivateList = new ArrayList<>();
 
+            //记录需要修改的对象
+            List<WbsTreePrivate> updateList = new ArrayList<>();
+
             //模板节点
             List<String> wbsTreeIds = new ArrayList<>(Arrays.asList(vo.getWbsTreeIds().split(",")));
 
-            if (oldDataList != null && oldDataList.size() > 0) {
-                //只新增节点
-                //检查哪些节点是重复的,删除
-                Iterator<String> iterator = wbsTreeIds.iterator();
-                while (iterator.hasNext()) {
-                    String id = iterator.next();
-                    for (WbsTreePrivate oldPrivate : oldDataList) {
-                        if (oldPrivate.getId().toString().equals(id)) {
-                            iterator.remove();
-                            break;
+            if (wbsTreeIds.size() > 0) {
+                //获取模板节点
+                List<WbsTree> wbsTreeList = this.wbsTreeService.list(Wrappers.<WbsTree>lambdaQuery().in(WbsTree::getId, wbsTreeIds));
+                //获取这些模板下的表格元素
+                List<WbsTree> wbsTreeTableList = this.wbsTreeService.list(Wrappers.<WbsTree>lambdaQuery().in(WbsTree::getParentId, wbsTreeIds).eq(WbsTree::getType, 2));
+                if (wbsTreeTableList != null && wbsTreeTableList.size() > 0) {
+                    wbsTreeList.addAll(wbsTreeTableList);
+                }
+
+                if (oldDataList != null && oldDataList.size() > 0) {
+                    //检查哪些节点是重复的或修改的,删除
+                    Iterator<WbsTree> iterator = wbsTreeList.iterator();
+                    while (iterator.hasNext()) {
+                        WbsTree next = iterator.next();
+                        for (WbsTreePrivate oldPrivate : oldDataList) {
+                            if (oldPrivate.getId().equals(next.getId())) {
+                                if (
+                                        (StringUtils.isNotEmpty(next.getFullName(), oldPrivate.getFullName()) && !next.getFullName().equals(oldPrivate.getFullName()))
+                                                || (StringUtils.isNotEmpty(next.getNodeName(), oldPrivate.getNodeName()) && !next.getNodeName().equals(oldPrivate.getNodeName()))
+                                                || (StringUtils.isNotEmpty(next.getMajorDataType(), oldPrivate.getMajorDataType()) && !next.getMajorDataType().equals(oldPrivate.getMajorDataType()))
+                                                || (StringUtils.isNotEmpty(next.getNodeType(), oldPrivate.getNodeType()) && !next.getNodeType().equals(oldPrivate.getNodeType()))
+                                ) {
+                                    //需要修改
+                                    oldPrivate.setFullName(next.getFullName());
+                                    oldPrivate.setNodeName(next.getNodeName());
+                                    oldPrivate.setNodeType(next.getNodeType());
+                                    oldPrivate.setMajorDataType(next.getMajorDataType());
+
+                                    updateList.add(oldPrivate);
+                                }
+                                iterator.remove();
+                                break;
+                            }
+
                         }
                     }
                 }
-            }
 
-            //记录需要修改的对象(只改名称)
-            List<WbsTreePrivate> updateList = new ArrayList<>();
+                //复制数据
+                for (WbsTree tree : wbsTreeList) {
+                    WbsTreePrivate treePrivate = new WbsTreePrivate();
+                    BeanUtils.copyProperties(tree, treePrivate);
+                    treePrivate.setWbsType("4");
+                    treePrivate.setProjectId(vo.getProjectId());
+                    treePrivate.setPKeyId(SnowFlakeUtil.getId());
+                    treePrivate.setCreateTime(now);
+
+                    saveTreePrivateList.add(treePrivate);
+                }
+            }
 
             //检查一下原本节点的表是否有新增的(只处理新增)
             if (oldDataList != null && oldDataList.size() > 0) {
@@ -109,12 +146,12 @@ public class WbsTreePrivateController extends BladeController {
                                     if (privateNode.getId().equals(tree.getId())) {
                                         if (
                                                 (StringUtils.isNotEmpty(privateNode.getFullName(), tree.getFullName()) && !privateNode.getFullName().equals(tree.getFullName()))
-                                                        ||
-                                                        (StringUtils.isNotEmpty(privateNode.getNodeName(), tree.getNodeName()) && !privateNode.getNodeName().equals(tree.getNodeName()))
+                                                || (StringUtils.isNotEmpty(privateNode.getNodeName(), tree.getNodeName()) && !privateNode.getNodeName().equals(tree.getNodeName()))
                                         ) {
                                             //名字不同,需要修改
                                             privateNode.setFullName(tree.getFullName());
                                             privateNode.setNodeName(tree.getNodeName());
+
                                             updateList.add(privateNode);
                                         }
 
@@ -142,28 +179,6 @@ public class WbsTreePrivateController extends BladeController {
                 }
             }
 
-            if (wbsTreeIds.size() > 0) {
-                //获取模板节点
-                List<WbsTree> wbsTreeList = this.wbsTreeService.list(Wrappers.<WbsTree>lambdaQuery().in(WbsTree::getId, wbsTreeIds));
-                //获取这些模板下的表格元素
-                List<WbsTree> wbsTreeTableList = this.wbsTreeService.list(Wrappers.<WbsTree>lambdaQuery().in(WbsTree::getParentId, wbsTreeIds).eq(WbsTree::getType, 2));
-                if (wbsTreeTableList != null && wbsTreeTableList.size() > 0) {
-                    wbsTreeList.addAll(wbsTreeTableList);
-                }
-
-                //复制数据
-                for (WbsTree tree : wbsTreeList) {
-                    WbsTreePrivate treePrivate = new WbsTreePrivate();
-                    BeanUtils.copyProperties(tree, treePrivate);
-                    treePrivate.setWbsType("4");
-                    treePrivate.setProjectId(vo.getProjectId());
-                    treePrivate.setPKeyId(SnowFlakeUtil.getId());
-                    treePrivate.setCreateTime(now);
-
-                    saveTreePrivateList.add(treePrivate);
-                }
-            }
-
             if (saveTreePrivateList.size() > 0) {
                 //修改项目引用
                 this.projectInfoService.update(Wrappers.<ProjectInfo>lambdaUpdate().set(ProjectInfo::getReferenceLogWbsTemplateId, vo.getWbsId()).eq(ProjectInfo::getId, vo.getProjectId()));
@@ -173,13 +188,32 @@ public class WbsTreePrivateController extends BladeController {
             }
             if (updateList.size() > 0) {
                 for (WbsTreePrivate treePrivate : updateList) {
-                    this.wbsTreePrivateService.update(Wrappers.<WbsTreePrivate>lambdaUpdate().set(WbsTreePrivate::getNodeName, treePrivate.getNodeName()).set(WbsTreePrivate::getFullName, treePrivate.getFullName()).eq(WbsTreePrivate::getPKeyId, treePrivate.getPKeyId()));
+                    this.wbsTreePrivateService.update(Wrappers.<WbsTreePrivate>lambdaUpdate()
+                            .set(WbsTreePrivate::getNodeName, treePrivate.getNodeName())
+                            .set(WbsTreePrivate::getFullName, treePrivate.getFullName())
+                            .set(WbsTreePrivate::getNodeType, treePrivate.getNodeType())
+                            .set(WbsTreePrivate::getMajorDataType, treePrivate.getMajorDataType())
+                            .eq(WbsTreePrivate::getPKeyId, treePrivate.getPKeyId()));
                 }
             }
 
             return R.data(200, true, "保存成功");
+        } else {
+            //没有数据,直接清空
+            //获取当前项目已经划分的日志树
+            List<WbsTreePrivate> oldDataList = this.wbsTreePrivateService.list(Wrappers.<WbsTreePrivate>lambdaQuery()
+                    .eq(WbsTreePrivate::getProjectId, vo.getProjectId())
+                    .eq(WbsTreePrivate::getWbsType, "4")
+                    .eq(WbsTreePrivate::getWbsId, vo.getWbsId()));
+
+            if(oldDataList != null && oldDataList.size() > 0){
+                //旧数据唯一键
+                List<Long> primaryKeyIds = oldDataList.stream().map(WbsTreePrivate::getPKeyId).distinct().collect(Collectors.toList());
+                //删除记录
+                this.wbsTreePrivateService.update(Wrappers.<WbsTreePrivate>lambdaUpdate().set(WbsTreePrivate::getIsDeleted, "1").in(WbsTreePrivate::getPKeyId, primaryKeyIds));
+            }
         }
-        return R.data(300, true, "保存失败,未选择任何数据");
+        return R.data(200, true, "未选择任何数据,默认执行清空操作");
     }
 
     /**