Bläddra i källkod

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

lvy 3 månader sedan
förälder
incheckning
2ba8ef844d
15 ändrade filer med 107 tillägg och 86 borttagningar
  1. 3 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsParamClient.java
  2. 11 5
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  3. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeController.java
  4. 6 9
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/TextdictInfoController.java
  5. 4 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java
  6. 8 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeSynchronousRecordController.java
  7. 6 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsParamClientImpl.java
  8. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml
  9. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/ITextdictInfoService.java
  10. 4 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  11. 16 47
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/TextdictInfoServiceImpl.java
  12. 32 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousEViSaServiceImpl.java
  13. 9 7
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousServiceImpl.java
  14. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  15. 3 6
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsParamClient.java

@@ -2,6 +2,7 @@ package org.springblade.manager.feign;
 
 
 import org.springblade.manager.entity.WbsParam;
+import org.springblade.manager.entity.WbsTreeContract;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -27,4 +28,6 @@ public interface WbsParamClient {
 
     @PostMapping(API_PREFIX + "/saveWbsParams")
     void saveWbsParams(@RequestBody List<WbsParam> wbsParamList);
+    @PostMapping(API_PREFIX + "/createFileTitle")
+    String createFileTitle(@RequestBody WbsTreeContract contract);
 }

+ 11 - 5
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -150,6 +150,7 @@ public class InformationWriteQueryController extends BladeController {
 
     private final IRecycleBinService recycleBinService;
 
+
     @Autowired
     StringRedisTemplate RedisTemplate;
 
@@ -200,7 +201,7 @@ public class InformationWriteQueryController extends BladeController {
             .map(Long::valueOf)
             .collect(Collectors.toList());
         List<InformationQuery> queryList = this.informationQueryService.list(Wrappers.<InformationQuery>lambdaQuery()
-            .select(InformationQuery::getId, InformationQuery::getName,InformationQuery::getProjectId,InformationQuery::getClassify,InformationQuery::getStatus).in(InformationQuery::getId, idList));
+            .select(InformationQuery::getId, InformationQuery::getName,InformationQuery::getProjectId,InformationQuery::getClassify,InformationQuery::getStatus,InformationQuery::getWbsId).in(InformationQuery::getId, idList));
         String sgSuffix="";
         String jlSuffix="";
         if(queryList.size()>0){
@@ -211,13 +212,18 @@ public class InformationWriteQueryController extends BladeController {
                 jlSuffix=projectInfos.get(0).getJlSuffix()==null?"":projectInfos.get(0).getJlSuffix();
             }
             for (InformationQuery query : queryList) {
+                String sql="select * from m_wbs_tree_contract where p_key_id="+query.getWbsId()+" and is_deleted=0";
+                WbsTreeContract contract = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
+                  String result=wbsParamClient.createFileTitle(contract);
                 if(query.getClassify()!=null&&query.getClassify()==1&&StringUtils.isNotEmpty(sgSuffix)){
-                   if(!query.getName().endsWith(sgSuffix)){
-                       query.setName(query.getName()+sgSuffix);
+                    result=result+sgSuffix;
+                   if(!query.getName().equals(result)){
+                       query.setName(result);
                    }
                 }else if(query.getClassify()!=null&&query.getClassify()==2&&StringUtils.isNotEmpty(jlSuffix)){
-                    if(!query.getName().endsWith(jlSuffix)){
-                        query.setName(query.getName()+jlSuffix);
+                    result=result+jlSuffix;
+                    if(!query.getName().equals(result)){
+                        query.setName(result);
                     }
                 }
             }

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

@@ -17,11 +17,13 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.ArchiveTreeContractAutoRuleMapDTO;
 import org.springblade.manager.dto.ArchiveTreeDTO;
 import org.springblade.manager.dto.ArchiveTreeSortDTO;
+import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.service.IArchiveTreeContractService;
 import org.springblade.manager.vo.ArchiveTreeVO2;
 import org.springblade.manager.vo.ArchiveTreeVO3;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springblade.manager.entity.ArchiveTree;

+ 6 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/TextdictInfoController.java

@@ -102,11 +102,6 @@ public class TextdictInfoController extends BladeController {
     @ApiOperationSupport(order = 2)
     @ApiOperation(value = "分页", notes = "传入textdictInfo")
     public R<IPage<TextdictInfo>> list(TextdictInfo textdictInfo, Query query) {
-        if(textdictInfo.getType() == 4){
-            return R.data(textdictInfoService.analysisHtmlDefault(textdictInfo.getTabId()));
-        }
-
-
         IPage<TextdictInfo> pages = textdictInfoService.page(Condition.getPage(query), Condition.getQueryWrapper(textdictInfo));
         return R.data(pages);
     }
@@ -118,7 +113,9 @@ public class TextdictInfoController extends BladeController {
     @ApiOperationSupport(order = 3)
     @ApiOperation(value = "分页", notes = "传入textdictInfo")
     public R<IPage<TextdictInfoVO>> page(TextdictInfoVO textdictInfo, Query query) {
-
+        if(textdictInfo.getType() == 4){
+            return R.data(textdictInfoService.analysisHtmlDefault(textdictInfo.getTabId()));
+        }
         IPage<TextdictInfoVO> pages = textdictInfoService.selectTextdictInfoPage(Condition.getPage(query), textdictInfo);
         return R.data(pages);
     }
@@ -162,9 +159,9 @@ public class TextdictInfoController extends BladeController {
     @ApiOperation(value = "逻辑删除", notes = "传入ids")
     public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids,
                     @ApiParam(value = "wbs p_key_id", required = true) @RequestParam String tabId,
-                    @ApiParam(value = "colKey", required = false) @RequestParam String colKey,
-                    @ApiParam(value = "type", required = false) @RequestParam Integer type) throws FileNotFoundException {
-        if(type == 4){
+                    String colKey,
+                    Integer type) throws FileNotFoundException {
+        if(type != null && type == 4){
             textdictInfoService.removeHtmlDefault(tabId,colKey);
             return R.success("删除成功");
         }

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

@@ -980,8 +980,8 @@ public class WbsTreePrivateController extends BladeController {
     public String getNameRuleV(String string){
         // 定义工程名称到C格式的映射
         Map<String, String> mapping = new HashMap<>();
-        mapping.put("单位工程", "C0");
-        mapping.put("单位工程", "C1");
+        mapping.put("单位工程类型", "C0");
+        mapping.put("单位工程", "C1");
         mapping.put("分部工程", "C2");
         mapping.put("子分部工程", "C3");
         mapping.put("分项工程", "C4");
@@ -1002,8 +1002,8 @@ public class WbsTreePrivateController extends BladeController {
     public String getNameRuleV1(String string){
         // 定义工程名称到C格式的映射
         Map<String, String> mapping = new HashMap<>();
-        mapping.put("C0", "单位工程");
-        mapping.put("C1", "单位工程");
+        mapping.put("C0", "单位工程类型");
+        mapping.put("C1", "单位工程");
         mapping.put("C2", "分部工程");
         mapping.put("C3", "子分部工程");
         mapping.put("C4", "分项工程");

+ 8 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeSynchronousRecordController.java

@@ -93,6 +93,14 @@ public class WbsTreeSynchronousRecordController {
      */
     @PostMapping("add")
     public R<WbsTreeSynchronousRecord> insert(@RequestBody WbsTreeSynchronousRecord mWbsTreeSynchronousRecord) {
+        if (StringUtil.isBlank(mWbsTreeSynchronousRecord.getNodeId())) {
+            return R.fail("节点不能为空");
+        }else{
+            String[] split = mWbsTreeSynchronousRecord.getNodeId().split(",");
+            if(split.length > 100){
+                return R.fail("节点过多,如果勾选了父节点,请勿带子节点!");
+            }
+        }
         if (StringUtil.isBlank(mWbsTreeSynchronousRecord.getType())) {
             return R.fail("请选择同步类型");
         }

+ 6 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsParamClientImpl.java

@@ -3,6 +3,7 @@ package org.springblade.manager.feign;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import org.springblade.manager.entity.WbsParam;
+import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.service.IWbsParamService;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -28,4 +29,9 @@ public class WbsParamClientImpl implements WbsParamClient{
     public void saveWbsParams(List<WbsParam> wbsParamList) {
         iWbsParamService.saveBatch(wbsParamList);
     }
+
+    @Override
+    public String createFileTitle(WbsTreeContract contract) {
+        return iWbsParamService.createFileTitle(contract);
+    }
 }

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml

@@ -235,7 +235,7 @@
                         inner join u_archive_file b on b.node_id = a.id and b.is_deleted = a.is_deleted and b.project_id = a.project_id and (b.is_auto_file is null or b.is_auto_file != 1)
                            WHERE  a.is_deleted = 0
                              and a.project_id = #{projectId}
-                             and a.ancestors like CONCAT('%',d.id,'%')
+                             and (FIND_IN_SET(d.id,a.ancestors) or a.id = d.id)
         <if test="code!=null and code!=''">
             AND (a.tree_code = #{code} or a.tree_code = #{contractId} or a.parent_id = 0)
         </if>

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/ITextdictInfoService.java

@@ -49,7 +49,7 @@ public interface ITextdictInfoService extends IService<TextdictInfo> {
 
     TextdictInfo selectTextdictInfoOne(String id,String sigRoleId,String projectId);
 
-    IPage<TextdictInfo> analysisHtmlDefault(String tabId);
+    IPage<TextdictInfoVO> analysisHtmlDefault(String tabId);
 
     void removeHtmlDefault(String tabId, String colKey);
 

+ 4 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -2295,6 +2295,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     Row row = sheet.getRow(y1 - 1);
                     if (row != null) {
                         Cell cell = row.getCell(x1 - 1, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
+                        if (cell == null) {
+                            cell = row.createCell(x1 - 1);
+                        }
                         if (cell != null || ObjectUtils.isNotEmpty(cell)) {
                              // 获取单元格的现有值
                             String existingValue = cell.getStringCellValue();
@@ -4157,7 +4160,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
                     Row row = sheet.getRow(y1 - 1);
                     if (row != null) {
-                        Cell cell = row.getCell(x1 - 1);
+                        Cell cell = row.getCell(x1 - 1,  Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
                         if (cell != null || ObjectUtils.isNotEmpty(cell)) {
                             short fontIndex = cell.getCellStyle().getFontIndex();
                             Font oldfontAt = workbook.getFontAt(fontIndex);

+ 16 - 47
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/TextdictInfoServiceImpl.java

@@ -33,7 +33,6 @@ import org.springblade.manager.entity.TextdictInfo;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.mapper.TextdictInfoMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
-import org.springblade.manager.service.ISignConfigService;
 import org.springblade.manager.service.ITextdictInfoService;
 import org.springblade.manager.utils.FileUtils;
 import org.springblade.manager.vo.TextdictBy345VO;
@@ -48,7 +47,6 @@ import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.InputStream;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * 参数信息表 服务实现类
@@ -60,9 +58,6 @@ import java.util.stream.Collectors;
 public class TextdictInfoServiceImpl extends ServiceImpl<TextdictInfoMapper, TextdictInfo> implements ITextdictInfoService {
     @Resource
     private WbsTreePrivateMapper wbsTreePrivateMapper;
-
-    @Resource
-    private ISignConfigService iSignConfigService;
     @Override
     public IPage<TextdictInfoVO> selectTextdictInfoPage(IPage<TextdictInfoVO> page, TextdictInfoVO textdictInfo) {
         List<TextdictInfoVO> textdict = new ArrayList<>();
@@ -74,47 +69,20 @@ public class TextdictInfoServiceImpl extends ServiceImpl<TextdictInfoMapper, Tex
                 String htmlString = IoUtil.readToString(fileInputStream);
                 Document doc = Jsoup.parse(htmlString);
                 Elements table = doc.getElementsByAttribute("dqid");
-                List<String> dqid = new ArrayList<>();
-                List<String> keys = new ArrayList<>();
-                for(Element ek:table){
-                    dqid.addAll(Func.toStrList("\\|\\|",ek.attr("dqid")));
-                    Elements keyNames = ek.getElementsByAttribute("keyname");
-                    if(Func.isNotEmpty(keyNames)){
-                        for(Element keyName:keyNames){
-                            keys.addAll(Func.toStrList("\\|\\|",keyName.attr("keyname")));
-                        }
-                    }
-                }
-                if(Func.isNotEmpty(textdictInfo.getShowType()) && textdictInfo.getShowType() == 1){
-                    if(Func.isNotEmpty(dqid) && dqid.size() > 0){
-                        textdict = baseMapper.selectTextdictBYIds(dqid,privateInfo.getProjectId());
-                    }else {
-                        textdict = new ArrayList<>();
-                    }
-                }else{
-                    textdict = baseMapper.selectTextdictInfoByExcelId(page, textdictInfo);
-                }
-                if (textdict != null && !keys.isEmpty()) {
-                    for (TextdictInfoVO vo : textdict) {
-                        if (!(privateInfo.getPKeyId() + "").equals(vo.getTabId())) {
-                            vo.setIsSystem(1);
-                        }
-                        keys.remove(vo.getColKey());
+
+                    List<String> dqid = new ArrayList<>();
+                    for(Element ek:table){
+                        dqid.addAll(Func.toStrList("\\|\\|",ek.attr("dqid")));
                     }
-                    if (Func.isNotEmpty(keys)) {
-                        // 查询系统级电签配置
-                        TextdictInfoVO temp = textdict.stream().findFirst().orElse(null);
-                        if (temp == null) {
-                            temp = new TextdictInfoVO();
-                            temp.setProjectId(privateInfo.getProjectId());
-                            temp.setExcelId(privateInfo.getExcelId() + "");
-                            temp.setTabId(privateInfo.getPKeyId() + "");
-                            temp.setType(2);
+                    if(Func.isNotEmpty(textdictInfo.getShowType()) && textdictInfo.getShowType() == 1){
+                        if(Func.isNotEmpty(dqid) && dqid.size() > 0){
+                            textdict = baseMapper.selectTextdictBYIds(dqid,privateInfo.getProjectId());
+                        }else {
+                            textdict = new ArrayList<>();
                         }
-                        List<TextdictInfoVO> textdictList = iSignConfigService.hasSignConfig(privateInfo.getInitTableName(), keys, temp);
-                        textdict.addAll(textdictList);
+                    }else{
+                        textdict = baseMapper.selectTextdictInfoByExcelId(page, textdictInfo);
                     }
-                }
             } catch (Exception e) {
                 throw new RuntimeException(e);
             }
@@ -222,12 +190,12 @@ public class TextdictInfoServiceImpl extends ServiceImpl<TextdictInfoMapper, Tex
     }
 
     @Override
-    public IPage<TextdictInfo> analysisHtmlDefault(String tabId) {
+    public IPage<TextdictInfoVO> analysisHtmlDefault(String tabId) {
         String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
         String sys_file_net_url = ParamCache.getValue(CommonConstant.SYS_FILE_NET_URL);
 
         WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.getByPKeyId(Long.parseLong(tabId));
-        IPage<TextdictInfo> textdictInfoPage = new Page<TextdictInfo>();
+        IPage<TextdictInfoVO> textdictInfoPage = new Page<TextdictInfoVO>();
         try {
             File file1 = ResourceUtil.getFile(wbsTreePrivate.getHtmlUrl());
             InputStream fileInputStream;
@@ -244,9 +212,9 @@ public class TextdictInfoServiceImpl extends ServiceImpl<TextdictInfoMapper, Tex
             Element table = doc.select("table").first();
             Elements elements = table.select("[defText]");
 
-            ArrayList<TextdictInfo> textdictInfos = new ArrayList<>();
+            ArrayList<TextdictInfoVO> textdictInfos = new ArrayList<>();
             for (Element element : elements) {
-                TextdictInfo textdictInfo = new TextdictInfo();
+                TextdictInfoVO textdictInfo = new TextdictInfoVO();
                 String keyname = element.attr("keyname");
                 String placeholder = element.attr("placeholder");
                 String defText = element.attr("defText");
@@ -254,6 +222,7 @@ public class TextdictInfoServiceImpl extends ServiceImpl<TextdictInfoMapper, Tex
                 textdictInfo.setColName(placeholder);
                 textdictInfo.setSigRoleName(defText);
                 textdictInfo.setType(4);
+                textdictInfo.setId(-1L);
                 textdictInfos.add(textdictInfo);
             }
             textdictInfoPage.setRecords(textdictInfos);

+ 32 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousEViSaServiceImpl.java

@@ -2,10 +2,9 @@ package org.springblade.manager.service.impl;
 
 import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import org.springblade.manager.entity.TextdictInfo;
-import org.springblade.manager.entity.WbsTreeContract;
-import org.springblade.manager.entity.WbsTreePrivate;
-import org.springblade.manager.entity.WbsTreeSynchronousRecord;
+import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.tool.utils.CollectionUtil;
+import org.springblade.manager.entity.*;
 import org.springblade.manager.mapper.TextdictInfoMapper;
 import org.springblade.manager.mapper.WbsTreeContractMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
@@ -35,6 +34,10 @@ public class WbsSynchronousEViSaServiceImpl {
     @Autowired
     private WbsTreeSynchronousRecordMapper synchronousRecordMapper;
 
+    //公式
+    @Autowired
+    private ElementFormulaMappingServiceImpl elementFormulaMappingService;
+
     @Transactional(rollbackFor = Exception.class)
     public void updateTextDictInfo(Long projectId, List<Long> editPrivateIds, List<TextdictInfo> addData) {
         //删除 需要新增的节点的电签和默认值
@@ -93,4 +96,29 @@ public class WbsSynchronousEViSaServiceImpl {
             wbsTreeContractMapper.updateById(treeContract);
         }
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void saveFormula(WbsTreeSynchronousRecord wbsTreeSynchronousRecord, List<WbsTreePrivate> list){
+        Map<Long, List<WbsTreePrivate>> collect = list.stream().collect(Collectors.groupingBy(WbsTreePrivate::getParentId));
+        Set<Long> ids = collect.keySet();
+        if(CollectionUtil.isEmpty(ids)){
+            return;
+        }
+        List<ElementFormulaMapping> elementFormulaMappings = elementFormulaMappingService.list(Wrappers.<ElementFormulaMapping>lambdaQuery()
+                .eq(ElementFormulaMapping::getProjectId, wbsTreeSynchronousRecord.getTemplateId())
+                .in(ElementFormulaMapping::getNodeId, ids));
+        elementFormulaMappings.forEach(f -> {
+            f.setId(SnowFlakeUtil.getId());
+            f.setProjectId(wbsTreeSynchronousRecord.getProjectId());
+            f.setCreateTime(DateTime.now());
+        });
+
+        //删除当前节点的公式
+        elementFormulaMappingService.remove(Wrappers.<ElementFormulaMapping>lambdaQuery()
+                .eq(ElementFormulaMapping::getProjectId, wbsTreeSynchronousRecord.getProjectId())
+                .in(ElementFormulaMapping::getNodeId, ids));
+        //复制新增模板节点的公式
+        elementFormulaMappingService.saveBatch(elementFormulaMappings);
+
+    }
 }

+ 9 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousServiceImpl.java

@@ -76,7 +76,6 @@ public class WbsSynchronousServiceImpl {
     @Autowired
     private WbsTreeSynchronousRecordMapper synchronousRecordMapper;
 
-
     @Async("taskExecutor1")
     public void syncExecute(WbsTreeSynchronousRecord wbsTreeSynchronousRecord) {
         // 类型枚举 WbsSyncTypeEnum.ALREADY_FILLED_IN_NOT_REPORTED
@@ -394,7 +393,8 @@ public class WbsSynchronousServiceImpl {
                     //更新只跟新表单
                     for (WbsTreePrivate editPrivateNode : wbsTreePrivates) {
                         // 判断模板表与项目表 html是否一致
-                        if (ObjectUtils.equals(templateNode.getTreePId(), editPrivateNode.getTreePId()) && templateNode.getType() == 2) {
+                        if (ObjectUtils.equals(templateNode.getTreePId(), editPrivateNode.getTreePId()) &&
+                                (templateNode.getType() == 2 || templateNode.getType() == 3 || templateNode.getType() == 5 || templateNode.getType() == 7)) {
                             //清表
                             if (collect.contains(2)) {
                                 //绑定清表
@@ -438,12 +438,9 @@ public class WbsSynchronousServiceImpl {
                                 editPrivateNode.setIsLinkTable(2);
                             }
 
-                            //元素 是与表绑定
-                            if (collect.contains(3)) {
+                            //元素、公式 是根据init_table_id去查询
+                            if (collect.contains(3) || collect.contains(5)) {
                                 editPrivateNode.setInitTableName(templateNode.getInitTableName());
-                            }
-                            //公式 根据init_table_id去查询的
-                            if (collect.contains(5)) {
                                 editPrivateNode.setInitTableId(templateNode.getInitTableId());
                             }
 
@@ -483,6 +480,9 @@ public class WbsSynchronousServiceImpl {
                         case 3:
                             //公式配置
                         case 5:
+                            editData.addAll(addPrivateNodes);
+                            editData.addAll(editPrivateNodes);
+                            wbsSynchronousEViSaService.saveFormula(wbsTreeSynchronousRecord, editData);
                             //排序
                         case 7:
                             //元素配置
@@ -1293,4 +1293,6 @@ public class WbsSynchronousServiceImpl {
         }
         return collect;
     }
+
+
 }

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

@@ -2493,7 +2493,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                     }
                 }
                 //wbs节点和分部工程的名称类型能对应上,并且编号不一样,并且祖级节点也都能对应上,就修改编号
-                if(vo.getNodeName().equals(dto.getDivisionName())&&vo.getNodeType()==2&&!vo.getPartitionCode().equals(dto.getDivisionCode())){
+                if(vo.getNodeName().equals(dto.getDivisionName())&&vo.getNodeType()==2&&(vo.getPartitionCode()==null||vo.getPartitionCode().equals(dto.getDivisionCode()))){
                     Boolean exist = this.isExist(dto, WbsTreeContractListupdate, 3, wbsTreeContractRoot);
                     if(exist){
                         if(isTrueNode(Arrays.asList(dto.getUnitName(),dto.getSubUnitName(),dto.getDivisionName()),vo)){

+ 3 - 6
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -1432,9 +1432,9 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
             long startTime = System.currentTimeMillis();
 
             /*重新计算,进行递归获取父节点计数统计*/
-//            this.recursiveGetParentNodes(resultParentNodesTB, lowestNodeParentIdsTB, nodesAll);
-            Map<Long, List<WbsTreeContractLazyVO>> map = nodesAll.stream().collect(Collectors.groupingBy(WbsTreeContractLazyVO::getId));
-            recursiveGetParentNodes(resultParentNodesTB, lowestNodeParentIdsTB, map);
+            this.recursiveGetParentNodes(resultParentNodesTB, lowestNodeParentIdsTB, nodesAll);
+//            Map<Long, List<WbsTreeContractLazyVO>> map = nodesAll.stream().collect(Collectors.groupingBy(WbsTreeContractLazyVO::getId));
+//            recursiveGetParentNodes(resultParentNodesTB, lowestNodeParentIdsTB, map);
             long endTime = System.currentTimeMillis();
             long executionTime = endTime - startTime;
             _logger.info("合同段 " + contractId + " wbs节点树 数量计算 执行时间:" + executionTime + " ms");
@@ -1511,9 +1511,6 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
                     return nodes.stream();
                 })
                 .collect(Collectors.toList());
-        if (collectedNodes.isEmpty()) {
-            return;
-        }
         List<Long> collect = collectedNodes.stream()
                 .map(WbsTreeContractLazyVO::getParentId).filter(Objects::nonNull).distinct()
                 .collect(Collectors.toList());