yangyj hace 1 año
padre
commit
6385d11439

+ 34 - 23
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/SubTable.java

@@ -25,12 +25,19 @@ public class SubTable {
     public static final String DATA = "检验结果";
     public static final Integer[] STEP = new Integer[]{15, 15, 1};
     public static final List<String> KEYS = Arrays.asList(ITEM, DESIGN, DATA);
+    /**每页最大行数*/
     public static final Integer ROW_SIZE = 15;
+    /**表单数据*/
     private LinkedHashMap<String, Item> group = new LinkedHashMap<>();
+    /**上次的记录*/
     private LinkedHashMap<String, Item> original = new LinkedHashMap<>();
+    /**检验单检查项目元素,用来排序*/
     private List<FormData> mainList;
+    /**项目名称*/
     private FormData itemName;
+    /**设计值*/
     private FormData design;
+    /**实测值*/
     private FormData data;
 
 
@@ -40,8 +47,6 @@ public class SubTable {
     public SubTable(List<FormData> source,List<FormData> mainList) {
         if (source != null && source.size() > 0) {
             source.stream().filter(e -> KEYS.contains(e.getEName().trim())).forEach(fd -> {
-                /*这是把所有数据重置为空,如果要实现手填就必须分析出项目,按项目名称覆盖LinkedHashMap<String, List<Object>> group*/
-                /*fd.getValues().forEach(e -> e.setValue(null));*/
                 switch (KEYS.indexOf(fd.getEName().trim())) {
                     case 0:
                         itemName = fd;
@@ -69,44 +74,44 @@ public class SubTable {
         return itemName != null && data != null;
     }
 
-/*    public void put(String key, List<ElementData> data) {
-        if (data != null && data.size() > 0) {
-            group.put(key, data.stream().map(ElementData::getValue).filter(StringUtils::isNotEmpty).collect(Collectors.toList()));
-        }
-    }*/
 
+
+    /*解析项目信息*/
     public void put(List<FormData> inspectionList,Map<String, FormData> formDataMap) {
+        /*根据行号排序*/
+        inspectionList.sort(Comparator.comparingInt(e->e.getCoordsList().get(0).getY()));
         /*检验单、评定表不能超过一页,多余的需要删除并把检测项数据写人附表*/
         /*检验单或者评定表存的超页数据汇总到附表对象*/
-          for(FormData fd:inspectionList){
+          for(FormData fd:inspectionList) {
               List<ElementData> overList = fd.getValues().stream().skip(fd.getCoordsList().size()).collect(Collectors.toList());
               fd.setValues(fd.getValues().stream().limit(fd.getCoordsList().size()).collect(Collectors.toList()));
               fd.setAddPages(0);
-              Item item = new Item(FormulaUtils.parseItemName(fd.getEName()).trim());
-              /*同项目*/
-              Optional<FormData> designFdOp = formDataMap.values().stream().filter(o -> o.getTableName().equals(fd.getTableName()) && !o.equals(fd) && fd.getMaxRow().equals(o.getMaxRow()) && o.getEName().contains("设计")).findAny();
-              designFdOp.ifPresent(formData -> item.setDesign(formData.getValues().stream().map(ElementData::stringValue).filter(StringUtils::isNotEmpty).collect(Collectors.toList())));
-              item.setData(FormulaUtils.setScale(null, overList).stream().map(ElementData::getValue).filter(StringUtils::isNotEmpty).collect(Collectors.toList()));
-              group.put(item.getName(),item);
+              if (overList.stream().anyMatch(ElementData::isNotEmpty)){
+                  Item item = new Item(FormulaUtils.parseItemName(fd.getEName()).trim());
+                  /*同项目*/
+                  Optional<FormData> designFdOp = formDataMap.values().stream().filter(o -> o.getTableName().equals(fd.getTableName()) && !o.equals(fd) && fd.getMaxRow().equals(o.getMaxRow()) && o.getEName().contains("设计")).findAny();
+                  designFdOp.ifPresent(formData -> item.setDesign(formData.getValues().stream().map(ElementData::stringValue).filter(StringUtils::isNotEmpty).collect(Collectors.toList())));
+                  item.setData(FormulaUtils.setScale(null, overList).stream().map(ElementData::getValue).filter(StringUtils::isNotEmpty).collect(Collectors.toList()));
+                  group.put(item.getName(), item);
+             }
           }
     }
 
 
+    /**将项目信息写入附表元素*/
     public void flush() {
         if(!checked()){
             return;
         }
-        /*初始化group,保留原先内容,只做同KEY覆盖*/
-        initGroup();
-        /*行号,起始为0,当前行号整除列大小余0就是每页首行*/
-        AtomicInteger index=new AtomicInteger(0);
+        /*获取项目数据*/
         List<Item> itemList =getPutOutList();
         if (itemList.size() > 0) {
+            /*行号,起始为0,当前行号整除列大小余0就是每页首行*/
+            AtomicInteger index=new AtomicInteger(0);
             List<String> itemNameList = new ArrayList<>();
             List<Object> designList = new ArrayList<>();
             List<Object> dataList = new ArrayList<>();
             int columnSize = getColumnSize();
-
             for (Item item :itemList) {
                 String name = item.getName();
                 List<Object> values = item.getData();
@@ -159,16 +164,22 @@ public class SubTable {
 
     /*获取最终输出的项目信息*/
     public List<Item> getPutOutList(){
+        /*初始化group,保留原先内容,只做同KEY覆盖*/
+        initOriginal();
         List<Item> itemList = new ArrayList<>(group.values());
         if(this.mainList!=null){
-            List<String> itemNameIndex = this.mainList.stream().map(e->FormulaUtils.parseItemName(e.getEName()).trim()).collect(Collectors.toList());
-            AtomicInteger other= new AtomicInteger(itemList.size());
-            itemList.sort(Comparator.comparingInt(item-> itemNameIndex.contains(item.getName()) ?itemNameIndex.indexOf(item.getName()): other.getAndIncrement()));
+            List<String> itemNameIndex = this.mainList.stream().sorted(Comparator.comparingInt(FormData::getMaxRow)).map(e->FormulaUtils.parseItemName(e.getEName()).trim()).collect(Collectors.toList());
+            /*额外手写的项目排在所有检验项的后面*/
+            itemList.sort(Comparator.comparingInt(item-> itemNameIndex.contains(item.getName()) ?itemNameIndex.indexOf(item.getName()):itemNameIndex.size()));
+            itemList.forEach(e->{
+                /*去掉空白行数据*/
+                e.setData(e.getData().stream().filter(StringUtils::isNotEmpty).collect(Collectors.toList()));
+            });
         }
         return itemList;
     }
     /*用原有数据初始化*/
-    private void initGroup(){
+    private void initOriginal(){
         List<String> itemName = this.itemName.getValues().stream().map(ElementData::stringValue).collect(Collectors.toList());
         List<String> designs = this.design.getValues().stream().map(ElementData::stringValue).collect(Collectors.toList());
         List<Object> data = this.data.getRawValue();

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

@@ -1170,26 +1170,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 List<FormData> mainList=tec.pick(e->StringUtils.isEquals(main.getInitTableName(),e.getTableName())&&e.getCoordsList().size()>1);
                 /*初始化附表对象*/
                 SubTable sta=new SubTable(subTableFds,mainList);
-                /*根据行号排序*/
-                inspectionList.sort(Comparator.comparingInt(e->e.getCoordsList().get(0).getY()));
                 sta.put(inspectionList,tec.formDataMap);
-            /*    inspectionList.forEach(f -> {
-                    *//*检验单、评定表不能超过一页,多余的需要删除并把检测项数据写人附表*//*
-                    *//*检验单或者评定表存的超页数据汇总到附表对象*//*
-                    List<ElementData> overList = f.getValues().stream().skip(f.getCoordsList().size()).collect(Collectors.toList());
-                    f.setValues(f.getValues().stream().limit(f.getCoordsList().size()).collect(Collectors.toList()));
-                    f.setAddPages(0);
-                    if(overList.stream().anyMatch(ElementData::isNotEmpty)) {
-                        String itemName = FormulaUtils.parseItemName(f.getEName());
-                        String key = itemName.trim();
-                        *//*同项目*//*
-                        Optional<FormData> designFdOp = tec.formDataMap.values().stream().filter(o -> o.getTableName().equals(f.getTableName()) && !o.equals(f) && f.getMaxRow().equals(o.getMaxRow()) && o.getEName().contains("设计")).findAny();
-                        if (designFdOp.isPresent()) {
-                            key += "@" + designFdOp.get().getValues().stream().map(ElementData::getValue).filter(StringUtils::isNotEmpty).findAny().orElse("");
-                        }
-                        sta.put(key, FormulaUtils.setScale(null, overList));
-                    }
-                });*/
                 /*把附表数据刷入对应的附表元素对象*/
                 sta.flush();
                 /*把主表的表头表尾信息拷贝*/