chenr 3 месяцев назад
Родитель
Сommit
7c622beb90
21 измененных файлов с 287 добавлено и 48 удалено
  1. 3 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreeContract.java
  2. 3 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractLazyVO.java
  3. 0 1
      blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/InformationQueryVO1.java
  4. 3 0
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  5. 1 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/service/impl/LeaveServiceImpl.java
  6. 0 9
      blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java
  7. 3 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/ManagerApplication.java
  8. 33 9
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  9. 0 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaController.java
  10. 14 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeContractController.java
  11. 109 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/FormulaZhiZuo.java
  12. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IFormulaService.java
  13. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java
  14. 5 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  15. 3 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
  16. 68 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  17. 16 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/utils/CompositeKey.java
  18. 1 1
      blade-service/blade-user/src/main/java/org/springblade/system/user/controller/WbsTreeController.java
  19. 1 1
      blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.java
  20. 2 2
      blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml
  21. 19 17
      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/entity/WbsTreeContract.java

@@ -25,6 +25,9 @@ public class WbsTreeContract extends BaseEntity {
     @ApiModelProperty(value = "主键id")
     private Long pKeyId;
 
+
+    @ApiModelProperty(value = "新节点Id")
+    private Long pId;
     /**
      * wbsId
      */

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractLazyVO.java

@@ -121,4 +121,7 @@ public class WbsTreeContractLazyVO implements Serializable {
     @ApiModelProperty(value = "数字化节点的创建时间")
     private Date digitizeTime;
 
+    @ApiModelProperty(value = "是否引用编号")
+    private Integer isReferenceNumber;
+
 }

+ 0 - 1
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/InformationQueryVO1.java

@@ -12,7 +12,6 @@ public class InformationQueryVO1 {
     private String id;
     @TableField("name")
     private String name;
-    @TableField("e_visa_pdf_url")
     @JsonProperty("eVisaPdfUrl")
     private String eVisaPdfUrl;
 }

+ 3 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -2944,6 +2944,7 @@ public class InformationWriteQueryController extends BladeController {
             if (allSelectedNodeList.size() > 0) {
                 //查询数据
                 selectedNodeList = this.unifiedCode(allSelectedNodeList, treeContract, "1", query);
+
                 if (ObjectUtil.isEmpty(selectedNodeList)) {
                     return R.data(null);
                 }
@@ -3009,9 +3010,11 @@ public class InformationWriteQueryController extends BladeController {
                     .map(AddContractTreeNodeVO.Node::getNodeName)
                     .orElse("")));
 
+
         //原始表ids,电签位置信息使用
         List<Long> oldTabIds = selectedNodeList.stream().filter(f -> new Integer(2).equals(f.getType())).map(WbsTreePrivate::getId).collect(Collectors.toList());
 
+
         //构造参数
         if (selectedNodeList.size() > 0) {
             //重塑关键信息

+ 1 - 1
blade-service/blade-desk/src/main/java/org/springblade/desk/service/impl/LeaveServiceImpl.java

@@ -50,7 +50,7 @@ public class LeaveServiceImpl extends BaseServiceImpl<LeaveMapper, ProcessLeave>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    // @GlobalTransactional
+    //@GlobalTransactional
     public boolean startProcess(ProcessLeave leave) {
         String businessTable = FlowUtil.getBusinessTable(ProcessConstant.LEAVE_KEY);
         if (Func.isEmpty(leave.getId())) {

+ 0 - 9
blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java

@@ -1018,15 +1018,6 @@ public class FormulaUtils {
 
         try {
             pretreatment(local,formula);
-//            List<Object>  r=new ArrayList<>();
-//            for (LocalVariable l : local) {
-//                if(!l.hasEmptyElementValue()){
-//                    String string = Expression.parse(l.getFormula()).calculate(l.getCurrentMap()).toString();
-//                    r.add(string);
-//                }else {
-//                    r.add("");
-//                }
-//            }
             List<Object>  r= local.stream().map(e-> {
                 /*所有依赖元素的内容必须非空才进行计算,否则返回空值*/
                 return e.hasEmptyElementValue()?"": Expression.parse(e.getFormula()).calculate(e.getCurrentMap()).toString();

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

@@ -7,11 +7,13 @@ import org.springframework.cache.annotation.EnableCaching;
 import org.springframework.cloud.client.SpringCloudApplication;
 
 import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 @EnableBladeFeign
 @SpringCloudApplication
 @EnableAsync
-@EnableCaching //缓存
+@EnableCaching//缓存
+@EnableScheduling
 public class ManagerApplication {
 
     public static void main(String[] args) {

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

@@ -1979,6 +1979,7 @@ public class ExcelTabController extends BladeController {
         if(tableInfoList.size()==0){
             R.success("数据未发生变化");
         }
+
         executionTime.info("公式耗时");
         //保存数据到数据库
         R<Object> result = this.excelTabService.saveOrUpdateInfo(tableInfoList);
@@ -2455,6 +2456,28 @@ public class ExcelTabController extends BladeController {
                                                     }
                                                 }
                                             }
+                                            if (myData.indexOf("lang.String") >= 0) {
+                                                Object obj = dataMap.get(val);
+                                                if (obj instanceof String[]) {
+                                                    String[] dataDate = (String[]) obj;
+                                                    String HtmlEle = data.toString();
+                                                    if (HtmlEle.indexOf("el-date-picker") >= 0) {//时间时间段处理格式
+                                                        if ((dataDate[0].trim()).equals((dataDate[1].trim()))) {
+                                                            myData = dataDate[0];
+                                                        } else {
+                                                            myData = dataDate[0].replace("\"", "") + "-" + dataDate[1].trim().replace("\"", "");
+                                                        }
+                                                    }
+                                                    else {
+                                                        myData = Func.convert(dataDate, String.class).replaceAll(" ", "");
+                                                        if (myData.startsWith("[") && myData.endsWith("]")) {
+                                                            // 去掉两端的中括号
+                                                            myData = myData.substring(1, myData.length() - 1);
+                                                        }
+                                                    }
+
+                                                }
+                                            }
 
                                             if (myData.indexOf("http") >= 0 && (myData.indexOf("aliyuncs") >= 0 ||myData.indexOf("183.247.216.148") >= 0)) {
                                                 Element element = trs.get(y1).select("td").get(x1);
@@ -2764,7 +2787,8 @@ public class ExcelTabController extends BladeController {
                                         String[] tabData = data.split("_\\^_");
                                         reData.put(key + "__" + tabData[1], tabData[0]);
                                     }
-                                } else if (tabVal.indexOf("_^_") >= 0) {
+                                }
+                                else if (tabVal.indexOf("_^_") >= 0) { //数组处理方式
                                     String[] tabData = tabVal.split("_\\^_");
                                     if (StringUtils.isNotEmpty(tabData[0])) {
                                         if (tabVal.contains("[") && tabVal.contains("年")) {
@@ -2774,16 +2798,16 @@ public class ExcelTabController extends BladeController {
                                         if (tabVal.contains("[") && tabVal.contains("]") && tabVal.indexOf(",") >= 0) {
                                             String[] strings = StringUtils.strip(tabData[0], "[]").split(",");
                                             reData.put(key + "__" + tabData[1], strings);
-                                        }
-                                        if(tabVal.contains("[")&&tabVal.contains("]")&&tabVal.indexOf(",")==-1){
-                                        String[]strings= new String[]{StringUtils.strip(tabData[0],"[]")};
-                                            reData.put(key+"__"+tabData[1],strings);
-                                        }
-                                        else {
-                                            reData.put(key + "__" + tabData[1], tabData[0]);
+                                        } else {
+                                            if(tabVal.contains("[") && tabVal.contains("]")){
+                                                reData.put(key+"__"+tabData[1],tabData);
+                                            }else {
+                                                reData.put(key + "__" + tabData[1],tabData[0]);
+                                            }
                                         }
                                     }
-                                } else {
+                                }
+                                else {
                                     reData.put(key, tabVal);
                                 }
                             }

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

@@ -901,6 +901,4 @@ public class FormulaController {
     }
 
 
-
-
 }

+ 14 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeContractController.java

@@ -9,6 +9,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.google.common.collect.Lists;
 import com.spire.xls.FileFormat;
 import com.spire.xls.Worksheet;
+import com.sun.org.apache.bcel.internal.generic.NEW;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -49,6 +50,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -72,8 +74,6 @@ import java.util.stream.Collectors;
 @Api(value = "合同段wbs树", tags = "合同段wbs树接口")
 public class WbsTreeContractController extends BladeController {
 
-    @Autowired
-    StringRedisTemplate redisTemplate;
     private final JdbcTemplate jdbcTemplate;
     private final IWbsTreeContractService iWbsTreeContractService;
     private final WbsTreeContractServiceImpl wbsTreeContractServiceImpl;
@@ -82,6 +82,15 @@ public class WbsTreeContractController extends BladeController {
 
     private final ExcelTabController excelTabController;
 
+
+    @GetMapping("/diGuiWbs")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "递归修改")
+    public R diGuiWbs(@RequestParam int i){
+        iWbsTreeContractService.diGuiWbs(i);
+        return R.success("成功");
+    }
+
     @GetMapping("/search-node-tables")
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "查询当前节点下所有元素表信息", notes = "传入节点primaryKeyId、type、合同段id、项目id")
@@ -283,6 +292,7 @@ public class WbsTreeContractController extends BladeController {
             } else {
                 htmlUrl = tab.getHtmlUrl();
 //                htmlUrl = "C:\\Users\\泓创研发01\\Desktop\\fsdownload\\1783774897227431936.html";
+                htmlUrl="D:\\web\\html\\1848904722870697984.html";
                 fileName = ObjectUtil.isNotEmpty(tab.getFullName()) ? tab.getFullName() : tab.getNodeName();
             }
 
@@ -299,6 +309,7 @@ public class WbsTreeContractController extends BladeController {
 //            workbook.loadFromHtml(inputStreamByUrl);
 //            workbook.loadFromHtml("D:\\BaiduNetdiskDownload\\1783381225877012480.html");
             workbook.save(byteArrayOutputStream, SaveFormat.XLSX);
+
             //将转换的spireExcel存储到流中
             byte[] excelBytes = byteArrayOutputStream.toByteArray();
 
@@ -315,7 +326,6 @@ public class WbsTreeContractController extends BladeController {
                             //存储需要修改的单元格信息
                             cellsToModify.add(new CellModificationInfo(cell, cell.getStringCellValue().trim()));
                         }
-
                         //获取单元格所属的合并单元格区域
                         CellRangeAddress mergedRegion = findMergedRegion(poiSheet, cell.getRowIndex(), cell.getColumnIndex());
                         if (mergedRegion != null) {
@@ -796,4 +806,5 @@ public class WbsTreeContractController extends BladeController {
         return R.success("成功");
     }
 
+
 }

+ 109 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/FormulaZhiZuo.java

@@ -0,0 +1,109 @@
+package org.springblade.manager.formula.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.mixsmart.utils.StringUtils;
+import lombok.Data;
+import org.springblade.manager.bean.TableInfo;
+import org.springblade.manager.dto.ElementData;
+import org.springblade.manager.dto.FormData;
+import org.springblade.manager.entity.Formula;
+import org.springblade.manager.formula.FormulaStrategy;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+
+@Component
+@Data
+public class FormulaZhiZuo implements FormulaStrategy {
+    @Override
+    public void execute(FormData cur, TableElementConverter tec) {
+        String key = cur.getFormula().getRely().substring(cur.getFormula().getRely().indexOf(':') + 1);
+        String s = tec.getTableInfoList().get(0).getDataMap().get(key);
+        String[] strings = s.split("☆");
+        Map<Integer, Double> list = new HashMap<>();
+        for (int i = 0; i < strings.length; i++) {
+            String pattern = "_\\^_(.*?)_";
+            java.util.regex.Pattern r = java.util.regex.Pattern.compile(pattern);
+            java.util.regex.Matcher m = r.matcher(strings[i]);
+            if (m.find()) {
+                // 获取匹配的值
+                Integer mapkey = Integer.parseInt(m.group(1));
+                Double v = Double.valueOf(strings[i].substring(0, strings[i].indexOf("_^_")));
+                list.put(mapkey, v);
+            }
+        }
+        List<ElementData> values = cur.getValues();
+        values.forEach(e->e.setValue(null));
+        TreeMap<Integer, Double> map = new TreeMap<>(list);
+        Map.Entry<Integer, Double> firstEntry = map.firstEntry();
+        Double first = firstEntry.getValue();
+        Double second;
+        Double threed;
+        for (int i = 0; i < map.size(); i++) {
+            if(i>=4){
+                break;
+            }
+            Double v = map.get(firstEntry.getKey() + i + 1);
+            if (ObjectUtil.isNotEmpty(v)) {
+                Double value = first - v;
+                for (int j = i; j < values.size(); j++) {
+                    if(values.get(j).getY()==firstEntry.getKey() + i + 1){
+                        values.get(j).setValue(value);
+                        break;
+                    }
+                }
+            }
+        }
+        if (map.size() >= 5) {
+            Integer key1 = firstEntry.getKey() + 5;
+            second = map.get(key1);
+            if (ObjectUtil.isNotEmpty(second)) {
+                for (int i = 5; i < map.size(); i++) {
+                    if(i>=9){
+                        break;
+                    }
+                    Double v = map.get(key1 + i -4);
+                    if (ObjectUtil.isNotEmpty(v)) {
+                        Double value = second - v;
+                        for (int j = i; j < values.size(); j++) {
+                            if(values.get(j).getY()==key1 + i -4){
+                                values.get(j).setValue(value);
+                                break;
+                            }
+                        }
+                    }
+                }
+
+            }
+        }
+        if (map.size() >= 10) {
+            Integer key2 = firstEntry.getKey() + 10;
+            threed = map.get(key2);
+            if (ObjectUtil.isNotEmpty(threed)) {
+                for (int i = 10; i < map.size(); i++) {
+                    Double v = map.get(key2 + i -9);
+                    if (ObjectUtil.isNotEmpty(v)) {
+                        Double value = threed - v;
+                        for (int j = i; j < values.size(); j++) {
+                            if(values.get(j).getY()==key2 + i -9){
+                                values.get(j).setValue(value);
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+
+        }
+        System.out.println(values);
+    }
+
+    @Override
+    public boolean accept(FormData fd) {
+        if (!fd.verify()) {
+            return false;
+        }
+        Formula f = fd.getFormula();
+        return "ZHIZUO".equals(f.getNumber());
+    }
+}

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

@@ -99,4 +99,5 @@ public interface IFormulaService extends BaseService<Formula> {
     /** 节点同步工序资料*/
     R<Object> syncWorkDate(@NotNull(message = "节点ID不能为空") Long nodeId);
 
+
 }

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

@@ -78,4 +78,6 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
     List<ArchiveSyncWbsVO> getContractAllNode(Long contractId);
 
 
+    //递归修改pid和ancestors
+    void diGuiWbs(int i);
 }

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

@@ -1604,7 +1604,11 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                                 String[] strings = StringUtils.strip(tabData[0], "[]").split(",");
                                 reData.put(key + "__" + tabData[1], strings);
                             } else {
-                                reData.put(key + "__" + tabData[1],tabData[0]);
+                                if(tabVal.contains("[") && tabVal.contains("]")){
+                                    reData.put(key+"__"+tabData[1],tabData);
+                                }else {
+                                    reData.put(key + "__" + tabData[1],tabData[0]);
+                                }
                             }
                         }
                     } else {

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -144,6 +144,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             option(tec);
             /*评定表*/
             assessmentForm(tec);
+
         }
         return this;
     }
@@ -2126,6 +2127,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         }
     }
 
+
+
     public void updateRecord(Long id, Map<String, Object> fieldValues,String tableName) {
         StringBuilder sqlBuilder = new StringBuilder("UPDATE "+tableName+" SET ");
         StringBuilder paramsBuilder = new StringBuilder();

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

@@ -5,7 +5,9 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.Update;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.common.collect.Lists;
@@ -43,6 +45,7 @@ import org.springblade.manager.mapper.WbsTreeContractMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.service.ITableFileService;
 import org.springblade.manager.service.IWbsTreeContractService;
+import org.springblade.manager.utils.CompositeKey;
 import org.springblade.manager.vo.*;
 import org.springblade.system.cache.ParamCache;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -1113,6 +1116,13 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         return baseMapper.getContractAllNode(contractId);
     }
 
+
+
+
+
+
+
+
     /**
      * 递归获取隐蔽工程节点的所有父级节点
      *
@@ -2590,4 +2600,62 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         }
         System.out.println("66666666666");
     }
+    public void diGuiWbs(int i) {
+        QueryWrapper<WbsTreeContract> wbsTreeContractQueryWrapper = new QueryWrapper<>();
+        wbsTreeContractQueryWrapper.select("p_key_id","id","p_id","wbs_id","contract_id","parent_id","ancestors");
+        wbsTreeContractQueryWrapper.eq("parent_id",0);
+        wbsTreeContractQueryWrapper.eq("is_deleted",0);
+        wbsTreeContractQueryWrapper.isNotNull("contract_id");
+        wbsTreeContractQueryWrapper.isNotNull("wbs_id");
+        List<WbsTreeContract> list = this.list(wbsTreeContractQueryWrapper);
+        if(!list.isEmpty()){
+            WbsTreeContract wbsTreeContract = list.get(i);
+            //通过parentID,contractID,wbsId分组,映射map
+            Map<CompositeKey, List<WbsTreeContract>> map = findAllContract(wbsTreeContract).stream()
+                .collect(Collectors.groupingBy(
+                    item -> new CompositeKey(item.getParentId(),item.getContractId(),item.getWbsId())
+                ));
+            List<WbsTreeContract>updateList=new ArrayList<>();
+
+            //递归设置pid和ancestors
+            setPidAndAncestors(map,wbsTreeContract,updateList);
+            System.out.println("第"+i+"次递归:"+updateList.size());
+            for (WbsTreeContract contract : updateList) {
+                UpdateWrapper wrapper=new UpdateWrapper();
+                wrapper.set("p_id",contract.getPId());
+                wrapper.set("ancestors",contract.getAncestors());
+                wrapper.eq("p_key_id",contract.getPKeyId());
+                this.update(wrapper);
+            }
+        }
+        System.out.println("第"+i+"次递归完成");
+
+
+    }
+    public  List<WbsTreeContract> findAllContract(WbsTreeContract wbsTreeContract){
+        QueryWrapper<WbsTreeContract> wbsTreeContractQueryWrapper = new QueryWrapper<>();
+        wbsTreeContractQueryWrapper.select("p_key_id","id","p_id","wbs_id","contract_id","parent_id","ancestors");
+        wbsTreeContractQueryWrapper.eq("contract_id",wbsTreeContract.getContractId());
+        wbsTreeContractQueryWrapper.eq("wbs_id",wbsTreeContract.getWbsId());
+        return this.list(wbsTreeContractQueryWrapper);
+    }
+    public  void setPidAndAncestors(Map<CompositeKey, List<WbsTreeContract>> map,WbsTreeContract wbsTreeContract,List<WbsTreeContract>updateList){
+        CompositeKey key = new CompositeKey(wbsTreeContract.getId(),wbsTreeContract.getContractId(),wbsTreeContract.getWbsId());
+        //拿到当前节点的子节点
+        List<WbsTreeContract> childrens = map.get(key);
+        if(ObjectUtil.isNotEmpty(childrens)){
+            for (WbsTreeContract children : childrens) {
+                if(children.getParentId().equals(wbsTreeContract.getId())){
+                    //设置祖级节点和pid
+                    String ancestors=wbsTreeContract.getAncestors()+",";
+                    ancestors=ancestors+wbsTreeContract.getPKeyId();
+                    children.setAncestors(ancestors);
+                    children.setPId(wbsTreeContract.getPKeyId());
+                    updateList.add(children);
+                    //递归调用自己继续将一个合同段的子节点设置完
+                    setPidAndAncestors(map,children,updateList);
+                }
+            }
+        }
+    }
 }

+ 16 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/CompositeKey.java

@@ -0,0 +1,16 @@
+package org.springblade.manager.utils;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+@Data
+@EqualsAndHashCode
+@AllArgsConstructor
+@NoArgsConstructor
+public class CompositeKey {
+    private Long id;
+    private String contractId;
+    private String wbsId;
+}

+ 1 - 1
blade-service/blade-user/src/main/java/org/springblade/system/user/controller/WbsTreeController.java

@@ -132,7 +132,7 @@ public class WbsTreeController extends BladeController {
 
 
     @GetMapping("/informationWriteQuery/queryInformationByContractIdAndName")
-    @ApiOperation("根据合同段Id,模糊文件名查询")
+    @ApiOperation("根据合同段Id,模糊文件名查询(杭宁项目专用)")
     @ApiImplicitParams(value = {
         @ApiImplicitParam(name = "contractId",value = "合同段Id"),
         @ApiImplicitParam(name="name",value = "文件名")

+ 1 - 1
blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.java

@@ -79,5 +79,5 @@ public interface UserMapper extends BaseMapper<User> {
 
     List<PrivateTreeVO2> getAllNode(@Param("projectId") String projectId);
 
-    List<InformationQueryVO2> queryInformationByContractIdAndName(@Param("contractId")String contractId, @Param("name")String name);
+    List<InformationQueryVO1> queryInformationByContractIdAndName(@Param("contractId")String contractId, @Param("name")String name);
 }

+ 2 - 2
blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml

@@ -232,8 +232,8 @@
     </select>
 
     <select id="queryInformationByContractIdAndName"
-            resultType="org.springblade.system.user.vo.InformationQueryVO2">
-    SELECT id,name,e_visa_pdf_url,node_pdf_url FROM u_information_query where contract_id=#{contractId} AND status=2
+            resultType="org.springblade.system.user.vo.InformationQueryVO1">
+    SELECT id,name,COALESCE(node_pdf_url,e_visa_pdf_url) AS eVisaPdfUrl FROM u_information_query where contract_id=#{contractId} AND status=2
         <if test="name!=null and name!=''">
         AND name  LIKE CONCAT('%', #{name}, '%')
         </if>

+ 19 - 17
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -723,6 +723,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
                 /* =========================== 施工合同段 =========================== */
                 if (new Integer(1).equals(contractInfo.getContractType())) {
                     String sql = "SELECT is_custom,p_key_id,contract_id," +
+                            "(SELECT is_reference_number FROM m_contract_info WHERE id="+contractId+") AS isReferenceNumber,"+
                             "(SELECT id FROM u_contract_tree_drawings WHERE process_id = p_key_id AND is_deleted = 0 limit 1) AS drawingsId," +
                             "id,parent_id,node_type,type,wbs_type,is_buss_show as isBussShow,is_concrete,major_data_type,class_name,unit_name,node_class,unit_num,excellent_num,is_classifition,digitize_time,partition_code,old_id,contract_id_relation,is_concealed_works_node," +
                             "CASE (SELECT count(1) FROM u_tree_contract_first AS tcf WHERE tcf.is_deleted = 0 AND tcf.wbs_node_id = a.p_key_id) " +
@@ -861,6 +862,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
                                 new BeanPropertyRowMapper<>(ContractInfo.class)).stream().findAny().orElse(null);
                         if (sgContractInfo != null) {
                             String sql = "SELECT is_custom,p_key_id,contract_id," +
+                                    "(SELECT is_reference_number FROM m_contract_info WHERE id="+contractId+") AS isReferenceNumber,"+
                                     "(SELECT id FROM u_contract_tree_drawings WHERE process_id = p_key_id AND is_deleted = 0 limit 1) AS drawingsId," +
                                     "id,parent_id,node_type,type,wbs_type,is_concrete,major_data_type,class_name,unit_name,node_class,unit_num,excellent_num,is_classifition,digitize_time,partition_code,old_id,contract_id_relation,is_concealed_works_node," +
                                     "CASE (SELECT count(1) FROM u_tree_contract_first AS tcf WHERE tcf.is_deleted = 0 AND tcf.wbs_node_id = a.p_key_id) " +
@@ -1194,23 +1196,23 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
         if(!contract.getPId().equals("1792760669353865218")){
             throw new ServiceException("请输入正确的合同段id");
         }
-        List<InformationQueryVO2> informationQueryVO2s = baseMapper.queryInformationByContractIdAndName(contractId, name);
-         List<InformationQueryVO1> list= new ArrayList<>();
-         if(informationQueryVO2s.size()>0){
-             for (InformationQueryVO2 informationQueryVO2 : informationQueryVO2s) {
-                 InformationQueryVO1 i=new InformationQueryVO1();
-                 i.setId(informationQueryVO2.getId());
-                 i.setName(informationQueryVO2.getName());
-                 if(ObjectUtil.isNotEmpty(informationQueryVO2.getEVisaPdfUrl())){
-                     i.setEVisaPdfUrl(informationQueryVO2.getEVisaPdfUrl());
-                 }
-                 if(ObjectUtil.isNotEmpty(informationQueryVO2.getNodePdfUrl())){
-                     i.setEVisaPdfUrl(informationQueryVO2.getNodePdfUrl());
-                 }
-                 list.add(i);
-             }
-         }
-        return list;
+        List<InformationQueryVO1> informationQueryVO1s = baseMapper.queryInformationByContractIdAndName(contractId, name);
+//         List<InformationQueryVO1> list= new ArrayList<>();
+//         if(informationQueryVO2s.size()>0){
+//             for (InformationQueryVO2 informationQueryVO2 : informationQueryVO2s) {
+//                 InformationQueryVO1 i=new InformationQueryVO1();
+//                 i.setId(informationQueryVO2.getId());
+//                 i.setName(informationQueryVO2.getName());
+//                 if(ObjectUtil.isNotEmpty(informationQueryVO2.getEVisaPdfUrl())){
+//                     i.setEVisaPdfUrl(informationQueryVO2.getEVisaPdfUrl());
+//                 }
+//                 if(ObjectUtil.isNotEmpty(informationQueryVO2.getNodePdfUrl())){
+//                     i.setEVisaPdfUrl(informationQueryVO2.getNodePdfUrl());
+//                 }
+//                 list.add(i);
+//             }
+//         }
+        return informationQueryVO1s;
     }