Browse Source

资料填报填报率排除默认生成

qianxb 1 year ago
parent
commit
e7ac7c2ac5

+ 19 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -1342,7 +1342,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 for (Element element : bhtitle) {
                 for (Element element : bhtitle) {
                     int trindex = Integer.parseInt(element.attr("trindex"));
                     int trindex = Integer.parseInt(element.attr("trindex"));
                     if (trindex <= 10) {
                     if (trindex <= 10) {
-                        reData.put(element.attr("keyName"), node.getPartitionCode() == null ? "" : node.getPartitionCode());
+                        if (StringUtils.isNotBlank(node.getPartitionCode())) {
+                            reData.put(element.attr("keyName"), node.getPartitionCode());
+                        }
                     }
                     }
                 }
                 }
             }
             }
@@ -1511,8 +1513,6 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         Map<String, Object> DataInfo = (Map<String, Object>) getBussDataInfo(pkeyId, 0).getData();
         Map<String, Object> DataInfo = (Map<String, Object>) getBussDataInfo(pkeyId, 0).getData();
         //真实填报率
         //真实填报率
         Integer realFillRate = 0;
         Integer realFillRate = 0;
-        //获取已经填报的数据
-        Long fillNumbers = DataInfo.keySet().stream().filter(e -> e.contains("__")).count();
 
 
         //获取excel流 和 html流
         //获取excel流 和 html流
         InputStream exceInp = CommonUtil.getOSSInputStream(excelTab.getFileUrl());
         InputStream exceInp = CommonUtil.getOSSInputStream(excelTab.getFileUrl());
@@ -1589,20 +1589,30 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         //数据不为空
         //数据不为空
         if (StringUtils.isNotEmpty(wbsTreeContract.getHtmlUrl())) {
         if (StringUtils.isNotEmpty(wbsTreeContract.getHtmlUrl())) {
             InputStream inputStreamByUrl = FileUtils.getInputStreamByUrl(wbsTreeContract.getHtmlUrl());
             InputStream inputStreamByUrl = FileUtils.getInputStreamByUrl(wbsTreeContract.getHtmlUrl());
-//            InputStream inputStreamByUrl = FileUtils.getInputStreamByUrl("C:\\Users\\泓创研发01\\Desktop\\privateUrl\\1578963584895942656.html");
+//            InputStream inputStreamByUrl = FileUtils.getInputStreamByUrl("C:\\Users\\泓创研发01\\Desktop\\privateUrl\\1693464012966068224.html");
             String htmlString = IoUtil.readToString(inputStreamByUrl);
             String htmlString = IoUtil.readToString(inputStreamByUrl);
 
 
             Document doc = Jsoup.parse(htmlString);
             Document doc = Jsoup.parse(htmlString);
             Element table = doc.select("table").first();
             Element table = doc.select("table").first();
             //计算填报率
             //计算填报率
-            Long keySize = table.getElementsByAttribute("v-model").stream().count();
+            List<String> keyList = table.getElementsByAttribute("v-model").stream()
+                    .map(l -> {
+                        String attr = l.attr("v-model");
+                        System.out.println(attr);
+                        String[] split = attr.split("\\.");
+                        return split[1];
+                    })
+                    .collect(Collectors.toList());
             Long sigSize = table.getElementsByAttribute(":readonly").stream().count();
             Long sigSize = table.getElementsByAttribute(":readonly").stream().count();
-            if (fillNumbers != 0 && keySize != 0){
+            int keySize = keyList.size();
+            List<String> fills = DataInfo.keySet().stream().filter(e -> e.contains("__") && e.contains("key")).collect(Collectors.toList());
+            if (fills.size() != 0 && keyList != null && keyList.size() != 0){
                 if (keySize == sigSize){
                 if (keySize == sigSize){
                     realFillRate = 100;
                     realFillRate = 100;
-                }else {
-                    keySize = keySize - sigSize;
-                    Double v = fillNumbers.doubleValue() / keySize.doubleValue() * 100;
+                }else if (keySize > sigSize) {
+                    keySize = keySize - sigSize.intValue();
+                    keyList.retainAll(fills);
+                    Double v = new Double(keyList.size()) / new Double(keySize) * 100;
                     realFillRate = v.intValue();
                     realFillRate = v.intValue();
                 }
                 }
             }
             }