Browse Source

公式相关:评定重复数据问题处理

yangyj 1 year ago
parent
commit
7344522f61

+ 3 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/FormulaDataBlock.java

@@ -9,7 +9,7 @@ import lombok.Data;
 /**
  * @author yangyj
  * @Date 2023/4/13 15:40
- * @description TODO
+ * @description 分项评定数据集
  */
 @Data
 @TableName("m_formula_data_block")
@@ -23,6 +23,8 @@ public class FormulaDataBlock {
     private Integer type;
     /**
      * sub work
+     * 查找第一个包含分项评定子节点的父节点的id
+     * 一个分项里面可以存在多个评定节点,共享数据所以采用共同父级锚定
      */
     private Long swId;
     private Long contractId;

+ 6 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/CurrentNode.java

@@ -6,6 +6,8 @@ import org.springblade.manager.entity.WbsTreePrivate;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Optional;
 
 /**
@@ -33,6 +35,9 @@ public class CurrentNode {
     private Long wtpPkeyId;
     /**wbs_tree的流水号 需要溯源*/
     private Long wbsNodeId;
-
+    /**
+     * 当前节点父级下所有子孙节点里所有的node_type in(6,4)节点的pkeyId
+     * */
+    public List<CurrentNode> divisional= new ArrayList<>();
 
 }

+ 1 - 1
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -1476,7 +1476,7 @@ public class CustomFunction {
     public static Object tableNames(List<String> treeNodes) {
         if (CollectionUtil.isNotEmpty(treeNodes)) {
             List<String> nodes = new ArrayList<>(treeNodes);
-            return nodes.stream().filter(e -> StringUtils.isNotEmpty(e) && !e.contains("A15")).map(e -> e.replaceAll("_(PL)?_\\d+$", "")).distinct().collect(Collectors.joining("\n"));
+            return nodes.stream().filter(StringUtils::isNotEmpty).map(e -> e.replaceAll("[\\s]+|_(PL)?_\\d+$", "")).distinct().collect(Collectors.joining("\n"));
         }
         return "";
     }

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

@@ -469,10 +469,10 @@ public class FormulaUtils {
         return data.stream().peek(e->{if(StringUtils.isDouble(e.getValue())){e.setValue(StringUtils.number2StringZero(e.getValue(),finalScale));}}).collect(Collectors.toList());
     }
 
-    public static void main1(String[] args) {
-        Map<String,String> map=getElementCell("/www/wwwroot//Users/hongchuangyanfa/Desktop/privateUrl/1584783238218383360.html","key_16");
+/*    public static void main(String[] args) {
+        Map<String,String> map=getElementCell("/www/wwwroot/Users/hongchuangyanfa/Desktop/privateUrl/1694630551069130752.html","key_22");
         System.out.println(map);
-    }
+    }*/
     /**
      * @Description  定位信息排序
      * @Param [coords]

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

@@ -9,7 +9,7 @@ import java.util.List;
 /**
  * @author yangyj
  * @Date 2023/4/14 14:57
- * @description TODO
+ * @description 元素数据集
  */
 
 @Data

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

@@ -17,7 +17,7 @@ import static org.springblade.manager.formula.TurnPoint.*;
  * @author yangyj
  */
 public interface ITurnPointCalculator {
-    Long VERSION=2309061500L;
+    Long VERSION=2309081800L;
      String ZD_REG="(?i)zd\\d+";
     static List<TurnPoint> create(List<Map<String, Object>> data, LinkedHashMap<String, String> configMap,LevelInfo levelInfo) {
         /*1.验证数据的合理性,如果已经合理则不需要计算

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

@@ -11,7 +11,7 @@ import java.util.stream.Collectors;
 /**
  * @author yangyj
  * @Date 2023/4/14 14:45
- * @description TODO
+ * @description 元素分页数据集
  */
 @Data
 public class ItemBlock {

+ 4 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/TableElementConverter.java

@@ -86,11 +86,14 @@ public class TableElementConverter implements ITableElementConverter {
      * 当前执行环境全局变量
      */
     public Map<String, Object> constantMap = new HashMap<>();
+    /**公式执行序列*/
     public List<FormData> formDataList;
 
-
+    /**检查项*/
     public List<FormData> checkItems = new ArrayList<>();
+    /**关键日期*/
     public List<FormData> checkDate = new ArrayList<>();
+    /**汇总公式*/
     public List<FormData> summary = new ArrayList<>();
 
 
@@ -106,17 +109,10 @@ public class TableElementConverter implements ITableElementConverter {
         this.coordinateMap = coordinateMap;
         this.nodeId = wtc.getPkId();
         this.wbsTreeId = wtc.getId();
-/*        if (Func.isNotEmpty(tableInfoList)) {总监办有问题
-            this.contractId = Long.parseLong(tableInfoList.get(0).getContractId());
-        }*/
         this.currentNode = wtc;
         this.tableAll = tableAll;
     }
 
-    public TableElementConverter() {
-
-    }
-
 
     public Boolean isPresent() {
         return BaseUtils.isNotNull(this.keyMappers, this.formulas, this.nodeId);

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

@@ -22,6 +22,9 @@ public interface IWbsParamService extends BaseService<WbsParam> {
      * @Author yangyj
      **/
     String createFileTitle(Long nodeId, Long contractId, WbsTreeContract wbsTreeContract);
+    String createFileTitle(Long id, Long contractId);
+    String createFileTitle(WbsTreeContract wbsTreeContract);
+    String createFileTitle(Long pkeyId);
 
     /**
      * @Description 获取节点参数 nodeId:项目级节点id

+ 23 - 16
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -287,9 +287,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                             if (g != null) {
                                 List<ItemBlock> itemBlockList = g.getList();
                                 int originSize = itemBlockList.size();
-                                /*过滤方法有问题*/
-//                                List<Long> ids = this.jdbcTemplate.queryForList("select b.p_key_id from m_wbs_tree_contract a join m_wbs_tree_contract b on (a.parent_id=b.parent_id and a.contract_id=b.contract_id) where a.p_key_id=" + tec.getCurrentNode().getPkId() + " and b.is_deleted=0 and b.node_type=6", Long.class);
-//                                itemBlockList.removeIf(ik -> !ids.contains(ik.getPkeyId()));
+                                List<Long> ids =getNodeType46().stream().map(CurrentNode::getId).collect(Collectors.toList());
+                                /*清除那些已经不存在的工序*/
+                                itemBlockList.removeIf(ik -> !ids.contains(ik.getPkeyId()));
                                 if (itemBlockList.size() > 0) {
                                     int total = itemBlockList.stream().mapToInt(ItemBlock::getSubTotal).sum();
                                     int passNum = itemBlockList.stream().mapToInt(ItemBlock::getSubPass).sum();
@@ -302,7 +302,6 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                     List<String> values = itemBlockList.stream().map(ItemBlock::getData).flatMap(v -> v.stream().flatMap(Collection::stream)).map(Object::toString).collect(Collectors.toList());
                                     int scale = StringUtils.getScale(values);
                                     FormulaUtils.write(t.getValue(), values.stream().map(u -> StringUtils.number2String(u, scale)).collect(Collectors.toList()), true);
-
 //                                   if(t.getValue().getEName().contains("±")){
 //                                       /*存在偏差范围则获取的是偏差值:实测-设计*/
 //                                       FormulaUtils.write(t.getValue(),itemBlockList.stream().flatMap(b->{
@@ -339,7 +338,15 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     }
 
 
-
+   public List<CurrentNode> getNodeType46(){
+        if(tec.getCurrentNode().getDivisional().size()==0){
+            List<Map<String,Object>> listMaps=this.jdbcTemplate.queryForList("select b.p_Key_id pkId,b.id from m_wbs_tree_contract a join m_wbs_tree_contract b on (a.contract_id=b.contract_id and b.ancestors like CONCAT(a.ancestors,'%')) where a.p_key_id="+tec.getCurrentNode().getPkId()+" and b.is_deleted=0 and b.node_type=6 ORDER BY b.sort");
+            if(listMaps.size()>0){
+                tec.getCurrentNode().getDivisional().addAll(listMaps.stream().map(m->BeanUtil.toBean(m,CurrentNode.class)).collect(Collectors.toList()));
+            }
+        }
+       return tec.getCurrentNode().getDivisional();
+   }
 
     public void missingFill(List<String> missingList){
         /*数据池里面没有任何元素匹配和当前依赖匹配*/
@@ -1080,17 +1087,17 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                             eb.getList().remove(targetItem);
                         }
                     }
-//                if(c.executable()){
-//                    /*主要是获取实测值,合格率,合格数量*/
-//                    List<String> relyCode = c.getFormula().getRelyList();
-//                    if(Func.isNotEmpty(relyCode)){
-//                        List<FormData> designList=  tec.getFormDataMap().values().stream().filter(t->relyCode.contains(t.getCode())&&t.getEName().contains("设计")).collect(Collectors.toList());
-//                        if(designList.size()>0){
-//                            FormData design =designList.get(0);
-//
-//                        }
-//                    }
-//                }
+               /* if(c.executable()){
+                    *//*主要是获取实测值,合格率,合格数量*//*
+                    List<String> relyCode = c.getFormula().getRelyList();
+                    if(Func.isNotEmpty(relyCode)){
+                        List<FormData> designList=  tec.getFormDataMap().values().stream().filter(t->relyCode.contains(t.getCode())&&t.getEName().contains("设计")).collect(Collectors.toList());
+                        if(designList.size()>0){
+                            FormData design =designList.get(0);
+
+                        }
+                    }
+                }*/
                 });
                 fdb.setVal(JSON.toJSONString(elementBlockList));
                 this.formulaDataBlockService.saveOrUpdate(fdb);

+ 18 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsParamServiceImpl.java

@@ -10,7 +10,6 @@ import org.springblade.common.utils.BaseUtils;
 import org.springblade.core.mp.base.BaseEntity;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.entity.*;
 import org.springblade.manager.mapper.WbsParamMapper;
@@ -61,11 +60,26 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
                 if (Func.isNotEmpty(wp)) {
                     return CustomFunction.tree(nodes.stream().map(w->StringUtils.isNotEmpty(w.getFullName())?w.getFullName():w.getNodeName()).collect(Collectors.toList()), wp.getV()).toString();
                 }
-                return NOT_SET;
             }
         }
-        return null;
+        return NOT_SET;
+    }
+
+    @Override
+    public String createFileTitle(Long id, Long contractId) {
+        return NOT_SET;
     }
+
+    @Override
+    public String createFileTitle(WbsTreeContract wbsTreeContract) {
+        return NOT_SET;
+    }
+
+    @Override
+    public String createFileTitle(Long pkeyId) {
+        return NOT_SET;
+    }
+
     @Override
     public List<WbsTreeContract> tracing(@NotNull Long pkeyId){
         WbsTreeContract one = this.treeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, pkeyId));
@@ -191,7 +205,7 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public boolean insertBatch(Collection<WbsParam> entityList, int batchSize) {
+    public void insertBatch(Collection<WbsParam> entityList, int batchSize) {
         try {
             int size = entityList.size();
             int idxLimit = Math.min(batchSize, size);
@@ -210,9 +224,7 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
             }
         } catch (Exception e) {
             log.error("保存失败", e);
-            return false;
         }
-        return true;
     }