Преглед изворни кода

Merge branch 'test-merge' of http://219.151.181.73:3000/zhuwei/bladex into test-merge

lvy пре 1 месец
родитељ
комит
9f2392ec45
16 измењених фајлова са 205 додато и 155 уклоњено
  1. 1 2
      blade-gateway/src/main/java/org/springblade/gateway/provider/AuthProvider.java
  2. 3 3
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java
  3. 12 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileUtils.java
  4. 3 2
      blade-service/blade-business/src/main/java/org/springblade/business/controller/ContractLogController.java
  5. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ContractLogMapper.java
  6. 2 2
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ContractLogMapper.xml
  7. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/IContractLogService.java
  8. 2 2
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ContractLogServiceImpl.java
  9. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  10. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  11. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.xml
  12. 24 17
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  13. 17 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
  14. 102 117
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousServiceImpl.java
  15. 6 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  16. 23 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeSynchronousRecordServiceImpl.java

+ 1 - 2
blade-gateway/src/main/java/org/springblade/gateway/provider/AuthProvider.java

@@ -66,8 +66,7 @@ public class AuthProvider {
         DEFAULT_SKIP_URL.add("/getPk"); //成渝第三方登录获取公钥
         DEFAULT_SKIP_URL.add("/getQualityTestingToken"); //成渝第三方登录获取质检系统tokne
         DEFAULT_SKIP_URL.add("/getArchiveToken"); //成渝第三方登录获取档案系统tokne
-        DEFAULT_SKIP_URL.add("/trialclassificationtree/**"); //德飞第三方登录获取质检系统tokne
-        DEFAULT_SKIP_URL.add("/trialsystemdocking/**"); //德飞第三方登录获取档案系统tokne
+        DEFAULT_SKIP_URL.add("/meeting/**");//DingDing会议接口
 
     }
 

+ 3 - 3
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java

@@ -364,9 +364,9 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
         }
 
         //声影的要不要打码
-        if (archivesAuto.isMedia()) {
-            return;
-        }
+//        if (archivesAuto.isMedia()) {
+//            return;
+//        }
 
         List<String> urls = new ArrayList<>();
         for (ArchiveFile f : waitArchiveFiles) {

+ 12 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileUtils.java

@@ -581,7 +581,18 @@ public class FileUtils {
                                     pdfReader.getPageN(index).put(PdfName.ROTATE, new PdfNumber(180)); // 顺时针旋转270°
                                     //横表旋转后打页码坐标不一样
                                     over.showTextAligned(Element.ALIGN_LEFT, pageNumber, width - 35, 20, 0);
-                                }else {
+                                }else if (rotate!= null && rotate.intValue() == 90) {
+                                    //交换width和height
+                                    pdfReader.getPageN(index).put(PdfName.ROTATE, new PdfNumber(0)); // 顺时针旋转270°
+                                    //横表旋转后打页码坐标不一样
+                                    over.showTextAligned(Element.ALIGN_LEFT, pageNumber, width - 35, 20, 0);
+                                }else if (rotate!= null && rotate.intValue() == -90) {
+                                    //交换width和height
+                                    pdfReader.getPageN(index).put(PdfName.ROTATE, new PdfNumber(180)); // 顺时针旋转270°
+                                    //横表旋转后打页码坐标不一样
+                                    over.showTextAligned(Element.ALIGN_LEFT, pageNumber, width - 35, 20, 0);
+                                }
+                                else {
                                     over.showTextAligned(Element.ALIGN_LEFT, pageNumber, width - 35, 20, 0);
                                 }
                             }

+ 3 - 2
blade-service/blade-business/src/main/java/org/springblade/business/controller/ContractLogController.java

@@ -28,6 +28,7 @@ import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.oss.model.BladeFile;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
@@ -396,8 +397,8 @@ public class ContractLogController extends BladeController {
     @PostMapping("/getSubmitLogDateList")
     @ApiOperationSupport(order = 6)
     @ApiOperation(value = "获取合同段当前日志节点下的填报日期记录")
-    public R<List<String>> getSubmitLogDateList(@RequestParam String contractId, @RequestParam String primaryKeyId, @RequestParam String year) {
-        return R.data(this.contractLogService.getSubmitLogDateList(contractId, primaryKeyId, year));
+    public R<List<String>> getSubmitLogDateList(@RequestParam String contractId, @RequestParam String primaryKeyId, @RequestParam String year, BladeUser user) {
+        return R.data(this.contractLogService.getSubmitLogDateList(contractId, primaryKeyId, year, user.getUserId()+""));
     }
 
     /**

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ContractLogMapper.java

@@ -34,7 +34,7 @@ public interface ContractLogMapper extends BaseMapper<ContractLog> {
 
     List<String> queryReportLogTimeTree(@Param("contractId") String contractId, @Param("nodePrimaryKeyId") String nodePrimaryKeyId);
 
-    List<String> getSubmitLogDateList(@Param("contractId") String contractId, @Param("primaryKeyId") String primaryKeyId, @Param("year") String year);
+    List<String> getSubmitLogDateList(@Param("contractId") String contractId, @Param("primaryKeyId") String primaryKeyId, @Param("year") String year,@Param("userId") String userId);
 
     List<ContractLog> queryFillUser(@Param("vo") ContractLogVO vo);
 

+ 2 - 2
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ContractLogMapper.xml

@@ -72,8 +72,8 @@
         from u_contract_log
         where is_deleted = 0
           and wbs_node_id = #{primaryKeyId}
-          and contract_id =
-              #{contractId}
+          and contract_id = #{contractId}
+          and create_user = #{userId}
           and record_time like concat('%', #{year}, '%')
         group by record_time
         order by record_time DESC

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/IContractLogService.java

@@ -38,7 +38,7 @@ public interface IContractLogService extends BaseService<ContractLog> {
 
     List<FileUserVO> queryFillUser(ContractLogVO logVO);
 
-    List<String> getSubmitLogDateList(String contractId, String primaryKeyId, String year);
+    List<String> getSubmitLogDateList(String contractId, String primaryKeyId, String year,String userId);
 
     /**
      * 施工日志分页

+ 2 - 2
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ContractLogServiceImpl.java

@@ -95,8 +95,8 @@ public class ContractLogServiceImpl extends BaseServiceImpl<ContractLogMapper, C
     }
 
     @Override
-    public List<String> getSubmitLogDateList(String contractId, String primaryKeyId, String year) {
-        return this.baseMapper.getSubmitLogDateList(contractId, primaryKeyId, year);
+    public List<String> getSubmitLogDateList(String contractId, String primaryKeyId, String year,String userId) {
+        return this.baseMapper.getSubmitLogDateList(contractId, primaryKeyId, year,userId);
     }
 
     @Override

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -1570,7 +1570,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
             task.setType(1);
             task.setStatus(1);
             try {
-                if (DistributedRedisLock.acquire("TaskService_StartApproval_" + task.getFormDataId(), 5)) {
+                if (DistributedRedisLock.acquire("TaskService_StartApproval_" + task.getFormDataId(), 20)) {
                     long count = this.count(Wrappers.<Task>lambdaQuery().eq(Task::getFormDataId, task.getFormDataId()).ne(Task::getStatus, 3));
                     if (count > 0) {
                         return false;

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

@@ -1917,7 +1917,7 @@ public class ExcelTabController extends BladeController {
         }
 
         //获取节点下的所有表单,和附件,如果表单全是隐藏的,并且没有附件,则提示暂无数据
-        String sql = "select pdf_url,e_visa_pdf_url,pdf_trial_url,pdf_trial_url_position,status from u_information_query where classify='" + classify + "' and wbs_id='" + nodeId + "' and contract_id='" + contractId + "'  and status<>3 ";
+        String sql = "select pdf_url,e_visa_pdf_url,pdf_trial_url,pdf_trial_url_position,status from u_information_query where classify='" + classify + "' and wbs_id='" + nodeId + "' and contract_id='" + contractId + "'  and status<>3 and is_deleted=0";
         List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
         if (maps.size() < 1) {
             //判断当前合同段的类型
@@ -1933,7 +1933,7 @@ public class ExcelTabController extends BladeController {
                         String contractsIdsStr = contractsIds.stream()
                             .map(id -> "'" + id + "'")
                             .collect(Collectors.joining(", "));;
-                        String sql1 = "select pdf_url,e_visa_pdf_url,pdf_trial_url,pdf_trial_url_position,status from u_information_query where classify='" + classify + "' and wbs_id='" + nodeId + "' and contract_id in(" + contractsIdsStr + ") and status in(0,1,2)";
+                        String sql1 = "select pdf_url,e_visa_pdf_url,pdf_trial_url,pdf_trial_url_position,status from u_information_query where classify='" + classify + "' and wbs_id='" + nodeId + "' and contract_id in(" + contractsIdsStr + ") and status in(0,1,2) and is_deleted=0";
                         maps = jdbcTemplate.queryForList(sql1);
                     }
                 }

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.xml

@@ -169,6 +169,9 @@
         dept.parent_id,
         dept.name,
         dept.file_type,
+        dept.tab_type,
+        dept.tab_id,
+        info.table_owner as tableOwner,
         (
         SELECT
         CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
@@ -179,6 +182,8 @@
         ) AS "has_children"
         FROM
         m_excel_tab dept
+        LEFT JOIN
+        m_table_info info ON dept.tab_id = info.id
         WHERE
         dept.is_deleted = 0
         <if test="param1!=null and param1!=''">

+ 24 - 17
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -2976,6 +2976,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         //实体数据
         String querySql = "select * from " + wbsTreePrivate.getInitTableName() + " where p_key_id=" + pkeyId + " and group_id = " + groupId;
         List<Map<String, Object>> dataIn = jdbcTemplate.queryForList(querySql);
+
+
+
         String keyNames="";
         //匹配关联
         try {
@@ -2992,6 +2995,20 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             htmlString = htmlString.replaceAll("placeholder", "placeholderxx");
             htmlString = htmlString.replaceAll("title", "titlexx");
             Document doc = Jsoup.parse(htmlString);
+
+
+            // 获取默认值
+            Elements elements = doc.getElementsByAttribute("defText");
+            if(Func.isNotEmpty(elements) && elements.size()>=1){
+                for(Element eleme: elements){
+                    String id = Func.isNull(eleme.attr("id"))?eleme.attr("keyname"):eleme.attr("id");
+                    if(Func.isNotEmpty(id)){
+
+                        reData.put(id, eleme.attr("defText"));
+                    }
+                }
+            }
+
             keyNames= getKeyNameList(doc);
             TrialSelfInspectionRecord record = jdbcTemplate.query("select * from u_trial_self_inspection_record where id = " + groupId, new BeanPropertyRowMapper<>(TrialSelfInspectionRecord.class)).stream().findAny().orElse(null);
             // 优先使用试验记录中的委托单和样品
@@ -3214,6 +3231,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
                         if ((tabVal.contains("BG-") || tabVal.contains("JL-")) && Func.isNotEmpty(contractInfo.getIsTestRecord()) && contractInfo.getIsTestRecord()==1) {
                             //重新生成自己的编号,不引用旧编号
+
                             continue;
                         }
                         // 时间段处理
@@ -3289,25 +3307,14 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     }
                 }
             }
+
+
         } catch (Exception e) {
             e.printStackTrace();
         }
 
-        // 获取默认值
-        QueryWrapper<TextdictInfo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.select("col_key", "sig_role_name");
-        queryWrapper.eq("type", 4);
-        queryWrapper.eq("tab_id", wbsTreePrivate.getPKeyId());
-        final List<TextdictInfo> textDictInfos = textdictInfoService.getBaseMapper().selectList(queryWrapper);
-        if (!textDictInfos.isEmpty()) {
-            for (TextdictInfo textdictInfo : textDictInfos) {
-                if (reData.containsKey(textdictInfo.getColKey())) {
-                    String keyVal = reData.get(textdictInfo.getColKey()) + "";
-                } else {
-                    reData.put(textdictInfo.getColKey() + "", textdictInfo.getSigRoleName());
-                }
-            }
-        }
+
+
 
         // 移除Id 和 p_key_id
         reData.remove("id");
@@ -3335,13 +3342,13 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 }
             }
         }
-        if(reData1.size()>0){
+        /*if(reData1.size()>0){
             for (Map.Entry<String, Object> entry : reData1.entrySet()) {
                 if(reData.containsKey(entry.getKey())){
                     reData.put(entry.getKey(), entry.getValue());
                 }
             }
-        }
+        }*/
         list.add(reData);
         return list;
     }

+ 17 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -5199,7 +5199,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                     for (int i = 0; i < partition1.size(); i++) {
                         List<String> strings = partition1.get(i);
                         //按组取获取数据
-                        List<FormData> target1 = getFormDataByCode(StringUtils.join( strings,","), tec);
+                        List<FormData> target1 = getFormDataByCode(StringUtils.join( strings,","), tec, null);
                         //全部都能获取到数据
                         if(target1.size() == strings.size()){
                             target.addAll(target1);
@@ -5917,6 +5917,22 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         return target;
     }
 
+    /**
+     * 细集料图表获取数据单独调整 排除空数据和/数据
+     * */
+    public List<FormData> getFormDataByCode(String codes, TableElementConverter tec , String key) {
+        List<FormData> target = new ArrayList<>();
+        String[] tfa = codes.split(",");
+        for (String code : tfa) {
+            code = code.replace("E['", "").replace("']", "");
+            FormData fdt = tec.formDataMap.get(code);
+            if (fdt != null && CollectionUtil.isNotEmpty(fdt.getValues()) && !Objects.equals(fdt.getValues().get(0).getValue(),"/")) {
+                target.add(fdt);
+            }
+        }
+        return target;
+    }
+
     @Override
     public Map<String, Object> getElementInfoByCodes(String codes) {
         final String ekey = "ekey";

+ 102 - 117
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousServiceImpl.java

@@ -32,6 +32,7 @@ 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;
 
 /**
@@ -634,7 +635,7 @@ public class WbsSynchronousServiceImpl {
             if (wbsTreePrivates.isEmpty()) {
                 throw new ServiceException("无法找到模板对应节点,请检查模板节点");
             }
-
+            Map<Long, WbsTreePrivate> collect1 = wbsTreePrivates.stream().collect(Collectors.toMap(WbsTreePrivate::getPKeyId, Function.identity()));
             //合同同步
             for (ContractInfo contractInfo : contractInfos) {
                 //获取合同下当前节点的数据
@@ -685,114 +686,114 @@ public class WbsSynchronousServiceImpl {
 
                     //筛选出需要更新的节点  同时做数据隔离
                     List<WbsTreeContract> editContractNodes = new ArrayList<>();
-                    for (WbsTreePrivate templateNode : wbsTreePrivates) {
-                        //更新只跟新表单
-                        for (WbsTreeContract editContractNode : wbsTreeContracts) {
-
-
-                            // 判断模板表与项目表 html是否一致
-                            if (ObjectUtils.equals(templateNode.getPKeyId(), editContractNode.getIsTypePrivatePid())) {
-                                if (templateNode.getType() == 2) {
-                                    //同步范围 当前节点是否允许修改
-                                    Boolean isSync = false;
-
-                                    //是否记录历史html
-                                    Boolean isOldHtml = false;
-
-                                    if (CollectionUtil.isNotEmpty(contractRanges)) {
-                                        switch (Integer.valueOf(wbsTreePrivate.getWbsType())) {
-                                            //质检
-                                            case 1:
-                                                //判断是否已保存
-                                                if (StringUtils.isEmpty(editContractNode.getInitTableName())) {
-                                                    throw new ServiceException(editContractNode.getNodeName() + "( " + editContractNode.getPKeyId() + ")--实体表不存在");
-                                                }
-                                                String isSave = "select count(0) from " + editContractNode.getInitTableName() + " where p_key_id = " + editContractNode.getPKeyId();
-                                                Integer i = jdbcTemplate.queryForObject(isSave, Integer.class);
 
-                                                //判断是否上报审批
-                                                Integer submit = informationQueryMap.get(editContractNode.getPId());
+                    //更新只跟新表单
+                    for (WbsTreeContract editContractNode : wbsTreeContracts) {
+                        if (editContractNode.getType() != 2 || editContractNode.getIsTypePrivatePid() == null) {
+                            continue;
+                        }
+                        WbsTreePrivate templateNode = collect1.get(editContractNode.getIsTypePrivatePid());
 
-                                                if (submit == null && contractRanges.contains(WbsSyncTypeEnum.NOT_FILLED_IN.code)) {
-                                                    //未填报 101
-                                                    isSync = true;
+                        // 判断模板表与项目表 html是否一致
+                        if (templateNode != null) {
+                            if (templateNode.getType() == 2) {
+                                //同步范围 当前节点是否允许修改
+                                Boolean isSync = false;
+
+                                //是否记录历史html
+                                Boolean isOldHtml = false;
+
+                                if (CollectionUtil.isNotEmpty(contractRanges)) {
+                                    switch (Integer.valueOf(wbsTreePrivate.getWbsType())) {
+                                        //质检
+                                        case 1:
+                                            //判断是否已保存
+                                            if (StringUtils.isEmpty(editContractNode.getInitTableName())) {
+                                                throw new ServiceException(editContractNode.getNodeName() + "( " + editContractNode.getPKeyId() + ")--实体表不存在");
+                                            }
+                                            String isSave = "select count(0) from " + editContractNode.getInitTableName() + " where p_key_id = " + editContractNode.getPKeyId();
+                                            Integer i = jdbcTemplate.queryForObject(isSave, Integer.class);
+
+                                            //判断是否上报审批
+                                            Integer submit = informationQueryMap.get(editContractNode.getPId());
+
+                                            if (submit == null && contractRanges.contains(WbsSyncTypeEnum.NOT_FILLED_IN.code)) {
+                                                //未填报 101
+                                                isSync = true;
+                                            } else {
+                                                //没有选择未填报,但是表单查不到数据,表示这个节点有问题
+                                                if (i == 0 && !contractRanges.contains(WbsSyncTypeEnum.NOT_FILLED_IN.code)) {
+                                                    errorMsg.append(editContractNode.getNodeName() + "(" + editContractNode.getPKeyId() + ")").append("未填报;");
                                                 } else {
-                                                    //没有选择未填报,但是表单查不到数据,表示这个节点有问题
-                                                    if (i == 0 && !contractRanges.contains(WbsSyncTypeEnum.NOT_FILLED_IN.code)) {
-                                                        errorMsg.append(editContractNode.getNodeName() + "(" + editContractNode.getPKeyId() + ")").append("未填报;");
+                                                    if (contractRanges.contains(WbsSyncTypeEnum.ALREADY_FILLED_IN_NOT_REPORTED.code) && (submit == null || submit == 0)) {
+                                                        //已填报-未上报 102
+                                                        isSync = true;
                                                     } else {
-                                                        if (contractRanges.contains(WbsSyncTypeEnum.ALREADY_FILLED_IN_NOT_REPORTED.code) && (submit == null || submit == 0)) {
-                                                            //已填报-未上报 102
-                                                            isSync = true;
+                                                        if (submit == null) {
+                                                            isSync = false;
+                                                            errorMsg.append(editContractNode.getNodeName() + "(" + editContractNode.getPKeyId() + ")").append("未上报;");
                                                         } else {
-                                                            if (submit == null) {
-                                                                isSync = false;
-                                                                errorMsg.append(editContractNode.getNodeName() + "(" + editContractNode.getPKeyId() + ")").append("未上报;");
-                                                            } else {
-                                                                if (submit == 1 && contractRanges.contains(WbsSyncTypeEnum.PENDING_APPROVAL.code)) {
-                                                                    //待审批 104
-                                                                    isSync = true;
-                                                                    isOldHtml = true;
-                                                                } else if (submit == 2 && contractRanges.contains(WbsSyncTypeEnum.APPROVED.code)) {
-                                                                    //已审批 105
-                                                                    isSync = true;
-                                                                    isOldHtml = true;
-                                                                }
+                                                            if (submit == 1 && contractRanges.contains(WbsSyncTypeEnum.PENDING_APPROVAL.code)) {
+                                                                //待审批 104
+                                                                isSync = true;
+                                                                isOldHtml = true;
+                                                            } else if (submit == 2 && contractRanges.contains(WbsSyncTypeEnum.APPROVED.code)) {
+                                                                //已审批 105
+                                                                isSync = true;
+                                                                isOldHtml = true;
                                                             }
                                                         }
                                                     }
                                                 }
-                                                break;
-                                            //试验
-                                            case 2:
-                                                break;
-                                            //计量
-                                            case 3:
-                                                break;
-                                            //日志
-                                            case 4:
-                                                break;
-                                            //征地拆迁
-                                            case 5:
-                                                break;
-                                            default:
-                                                break;
-                                        }
-                                    } else {
-                                        isSync = true;
+                                            }
+                                            break;
+                                        //试验
+                                        case 2:
+                                            break;
+                                        //计量
+                                        case 3:
+                                            break;
+                                        //日志
+                                        case 4:
+                                            break;
+                                        //征地拆迁
+                                        case 5:
+                                            break;
+                                        default:
+                                            break;
                                     }
+                                } else {
+                                    isOldHtml = true;
+                                    isSync = true;
+                                }
 
 
-                                    //清表 公式 元素
-                                    if (collect.contains(2) || collect.contains(3) || collect.contains(5)) {
-                                        if (collect.contains(2) && (templateNode.getHtmlUrl() == null || templateNode.getInitTableName() == null || templateNode.getExcelId() == null)) {
-                                            errorMsg.append(editContractNode.getNodeName() + "(" + editContractNode.getPKeyId() + ")").append("未配置清表;");
-                                        } else {
-                                            editContractNode.setExcelId(templateNode.getExcelId());
-                                            editContractNode.setInitTableName(templateNode.getInitTableName());
-                                            editContractNode.setHtmlUrl(templateNode.getHtmlUrl());
-                                            if (templateNode.getExcelId() != null) {
-                                                editContractNode.setIsLinkTable(2);
-                                            }
+                                //清表 公式 元素
+                                if (collect.contains(2) || collect.contains(3) || collect.contains(5)) {
+                                    if (collect.contains(2) && (templateNode.getHtmlUrl() == null || templateNode.getInitTableName() == null || templateNode.getExcelId() == null)) {
+                                        errorMsg.append(editContractNode.getNodeName() + "(" + editContractNode.getPKeyId() + ")").append("未配置清表;");
+                                    } else {
+                                        editContractNode.setExcelId(templateNode.getExcelId());
+                                        editContractNode.setInitTableName(templateNode.getInitTableName());
+                                        editContractNode.setHtmlUrl(templateNode.getHtmlUrl());
+                                        if (templateNode.getExcelId() != null) {
+                                            editContractNode.setIsLinkTable(2);
                                         }
                                     }
-                                    //排序
-                                    if (collect.contains(7)) {
-                                        editContractNode.setSort(templateNode.getSort());
+                                }
+                                //排序
+                                if (collect.contains(7)) {
+                                    editContractNode.setSort(templateNode.getSort());
+                                }
+                                //手动选中的表单 进行筛选
+                                if (collect.contains(2) || collect.contains(3) || collect.contains(4) || collect.contains(5) || collect.contains(6) || collect.contains(7)) {
+                                    if (isSync) {
+                                        editContractNodes.add(editContractNode);
                                     }
-                                    //手动选中的表单 进行筛选
-                                    if (collect.contains(2) || collect.contains(3) || collect.contains(4) || collect.contains(5) || collect.contains(6) || collect.contains(7)) {
-                                        if (isSync) {
-                                            editContractNodes.add(editContractNode);
-                                        }
-                                        //记录历史html
-                                        if (isOldHtml) {
-                                            oldHtml.add(editContractNode);
-                                        }
-
+                                    //记录历史html
+                                    if (isOldHtml) {
+                                        oldHtml.add(editContractNode);
                                     }
-                                    //找到了某个选中节点下与项目节点想同的节点了  提前结束循环,节省资源
-                                    break;
                                 }
                             }
                         }
@@ -800,33 +801,17 @@ public class WbsSynchronousServiceImpl {
 
                     //合同段新增节点
                     List<WbsTreeContract> addContractNode = null;
-                    if (addPrivateNodes != null) {
+                    if (addPrivateNodes != null && (CollectionUtil.isEmpty(collect) || collect.contains(1))) {
                         addContractNode = BeanUtil.copyProperties(addPrivateNodes, WbsTreeContract.class);
                     }
 
-                    //转类型排序
-                    List<Integer> integers = new ArrayList<>(collect);
-                    Collections.sort(integers);
-                    for (Integer i : integers) {
-                        switch (i) {
-                            //添加表单
-                            case 1:
-                                List<WbsTreeContract> list = insertContractForm(wbsTreeSynchronousRecord, contractInfo, wbsTreeContracts, addContractNode, errorMsg);
-                                addData.addAll(list);
-                                break;
-                            //清表配置
-                            case 2:
-                                //元素配置
-                            case 3:
-                                //公式配置
-                            case 5:
-                                //排序
-                            case 7:
-                                editData.addAll(editContractNodes);
-                                break;
-                            default:
-                                break;
-                        }
+                    if (CollectionUtil.isNotEmpty(addContractNode)) {
+                        List<WbsTreeContract> list = insertContractForm(wbsTreeSynchronousRecord, contractInfo, wbsTreeContracts, addContractNode, errorMsg);
+                        addData.addAll(list);
+                    }
+
+                    if (CollectionUtil.isNotEmpty(editContractNodes)) {
+                        editData.addAll(editContractNodes);
                     }
                 }
             }

+ 6 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -4806,13 +4806,17 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 for (WbsTreeContract childContract : childContracts) {
                     String ancestorsPId =  childContract.getAncestorsPId();
                     ancestorsPId=ancestorsPId.replace(oldancestorsPId,contract.getAncestorsPId());
+                    childContract.setAncestorsPId(ancestorsPId);
                     String ancestors = childContract.getAncestors();
                     ancestors=ancestors.replace(oldancestors,contract.getAncestors());
-                    wbsTreeContractMapper.updateAncestorsPid(ancestorsPId,ancestors,childContract.getPKeyId());
+                    childContract.setAncestors(ancestors);
+                    //wbsTreeContractMapper.updateAncestorsPid(ancestorsPId,ancestors,childContract.getPKeyId());
                 }
+                this.saveBatch(childContracts);
             }
-            this.wbsTreeContractMapper.updateWbsTreeAncestors(contract);
+            //this.wbsTreeContractMapper.updateWbsTreeAncestors(contract);
         }
+        this.saveBatch(list);
         String ids = dto.getLeftPkeyIds().stream().map(id -> id + "").collect(Collectors.joining(","));
         this.wbsTreeContractStatisticsClient.updateAncestors(ids);
         return R.success("操作成功");

+ 23 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeSynchronousRecordServiceImpl.java

@@ -81,7 +81,7 @@ public class WbsTreeSynchronousRecordServiceImpl extends ServiceImpl<WbsTreeSync
 
 
         //记录选中节点下的表单数
-        String[] newNodeIds = mWbsTreeSynchronousRecord.getNodeId().split(",");
+        List<String> newNodeIds = Arrays.asList(mWbsTreeSynchronousRecord.getNodeId().split(","));
         for (String newNodeId : newNodeIds) {
             Long nodeIdLong = Long.valueOf(newNodeId);
             if (privateIds.contains(nodeIdLong)) {
@@ -89,6 +89,28 @@ public class WbsTreeSynchronousRecordServiceImpl extends ServiceImpl<WbsTreeSync
             }
         }
 
+        List<String> parentIds = new ArrayList<>();
+        //处理父节点包含子节点数据
+        for (String newNodeId : newNodeIds) {
+            WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery()
+                    .eq(WbsTreePrivate::getPKeyId, newNodeId));
+            //如果是最顶层节点
+            if(wbsTreePrivate.getPId() == 0){
+                //清空所有记录,只保留最顶层节点id
+                parentIds.clear();
+                parentIds.add(newNodeId);
+                break;
+            }
+            //如果当前节点的父节点也在列表中,去掉当前节点
+            if(newNodeIds.contains(wbsTreePrivate.getPId().toString())){
+                continue;
+            }
+            parentIds.add(newNodeId);
+        }
+        if(!parentIds.isEmpty()){
+            mWbsTreeSynchronousRecord.setNodeId(String.join(",", parentIds));
+        }
+
         //模板项目信息
         ProjectInfo tempProject = projectInfoMapper.selectOne(Wrappers.<ProjectInfo>lambdaQuery()
                 .eq(ProjectInfo::getId, mWbsTreeSynchronousRecord.getTemplateId()));