Эх сурвалжийг харах

连续检测数据 报表返回汇总信息,导出顺带调整

王苗苗 5 сар өмнө
parent
commit
54fbb78d18

BIN
ruoyi-admin/.DS_Store


+ 23 - 16
ruoyi-admin/src/main/java/com/ruoyi/web/controller/business/BusinessController.java

@@ -15,6 +15,7 @@ import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.DataSourceType;
+import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.datasource.DynamicDataSourceContextHolder;
 import lombok.extern.slf4j.Slf4j;
@@ -293,28 +294,32 @@ public class BusinessController extends BaseController {
         List<String> collect5 = new ArrayList<>();
         //拼接表头和业务数据
         map.forEach((outKey, outMap) ->{
-            outMap.forEach((innerKey, list) ->{
-                List<String> headerList = new ArrayList<>();
-                for (ContinuousAssayResultRes continuousAssayResultRes : list) {
-                    //表头
-                    headerList.add(outKey);
-                    headerList.add(innerKey);
-                    headers.add(headerList);
-                    //业务数据
-                    collect0.add(continuousAssayResultRes.getAssayCounts());
-                    collect1.add(continuousAssayResultRes.getMinVal());
-                    collect2.add(continuousAssayResultRes.getMaxVal());
-                    collect3.add(continuousAssayResultRes.getPassedRates());
-                    collect4.add(continuousAssayResultRes.getBx());
-                    collect5.add(continuousAssayResultRes.getRatesDeviation());
-                }
-            });
+            //2024年10月10日10:55:13 由于列表给前端处理了合计,导出又做了一次,所以过滤掉(也可以在下面处理,稍微麻烦)
+            if(!"total".equals(outKey)){
+                outMap.forEach((innerKey, list) ->{
+                    List<String> headerList = new ArrayList<>();
+                    for (ContinuousAssayResultRes continuousAssayResultRes : list) {
+                        //表头
+                        headerList.add(outKey);
+                        headerList.add(innerKey);
+                        headers.add(headerList);
+                        //业务数据
+                        collect0.add(continuousAssayResultRes.getAssayCounts());
+                        collect1.add(continuousAssayResultRes.getMinVal());
+                        collect2.add(continuousAssayResultRes.getMaxVal());
+                        collect3.add(continuousAssayResultRes.getPassedRates());
+                        collect4.add(continuousAssayResultRes.getBx());
+                        collect5.add(continuousAssayResultRes.getRatesDeviation());
+                    }
+                });
+            }
         });
         //最后的合计
         ArrayList<String> lastList = new ArrayList<>();
         lastList.add("");
         lastList.add("合计");
         headers.add(lastList);
+
         //处理业务数据
         ArrayList<Object> list0 = new ArrayList<>();
         list0.add("实际检测数量");
@@ -449,6 +454,8 @@ public class BusinessController extends BaseController {
 
     public static void main(String[] args) {
         System.out.println(head());
+        System.out.println(DateUtils.getDate());
+        System.out.println(String.join("", Collections.nCopies(3, " ")));
     }
 
 }

+ 14 - 5
ruoyi-system/src/main/java/com/ruoyi/business/service/impl/BusinessServiceImpl.java

@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 import static com.ruoyi.common.constant.Constants.INT_2;
@@ -119,9 +120,10 @@ public class BusinessServiceImpl implements IBusinessService {
     @Override
     public Map<String, Map<String, List<ContinuousAssayResultRes>>> continuousAssayCountByDates(AssayReq assayReq) {
         //返回的最终对象
-        Map<String, Map<String, List<ContinuousAssayResultRes>>> resultMap = new HashMap<>();
+        Map<String, Map<String, List<ContinuousAssayResultRes>>> resultMap = new LinkedHashMap<>();
         //通过筛选条件获取最基本的数据列表
         List<ContinuousAssayBasic> list = this.zAssayResultMapper.continuousAssayCountByDates(assayReq);
+        AtomicInteger totalCount = new AtomicInteger();//合计次数
         if(!CollectionUtils.isEmpty(list)){
             //有数据 再分组,再分别统计信息
             Map<String, List<ContinuousAssayBasic>> itemNameMap = list.stream().collect(Collectors.groupingBy(ContinuousAssayBasic::getItemName));
@@ -135,8 +137,7 @@ public class BusinessServiceImpl implements IBusinessService {
                     ContinuousAssayResultRes continuousAssayResultRes = new ContinuousAssayResultRes();
                     //处理统计信息
                     int assayCounts = assayBasicList.size();//实际检测数量
-                    Double minVal = assayBasicList.stream().map(ContinuousAssayBasic::getResultConcentration).min(Double::compareTo).get();
-                    Double maxVal = assayBasicList.stream().map(ContinuousAssayBasic::getResultConcentration).max(Double::compareTo).get();
+                    totalCount.addAndGet(assayCounts);
                     //调用通用的获取合格数量的方法
                     List<ZAssayResult> zAssayResults = new ArrayList<>();
                     for (ContinuousAssayBasic continuousAssayBasic : assayBasicList) {
@@ -150,14 +151,22 @@ public class BusinessServiceImpl implements IBusinessService {
                     //封装到对象
                     continuousAssayResultRes.setAssayName(assayName);
                     continuousAssayResultRes.setAssayCounts(assayCounts);
-                    continuousAssayResultRes.setMinVal(minVal);
-                    continuousAssayResultRes.setMaxVal(maxVal);
+                    continuousAssayResultRes.setMinVal(assayBasicList.stream().map(ContinuousAssayBasic::getResultConcentration).min(Double::compareTo).get());
+                    continuousAssayResultRes.setMaxVal(assayBasicList.stream().map(ContinuousAssayBasic::getResultConcentration).max(Double::compareTo).get());
                     continuousAssayResultRes.setPassedRates(NumberUtils.getDoublePercentAndNLength(INT_4, ((double) passedCounts/(double)assayCounts), INT_2));
                     innerList.add(continuousAssayResultRes);
                     innerMap.put(assayName, innerList);
                 });
                 resultMap.put(k, innerMap);
             });
+            //2024年10月10日10:10:10 把 合计的结果也返回
+            HashMap<String, List<ContinuousAssayResultRes>> extraMap = new HashMap<>();
+            List<ContinuousAssayResultRes> extraList = new ArrayList<>();
+            ContinuousAssayResultRes continuousAssayResultRes = new ContinuousAssayResultRes();
+            continuousAssayResultRes.setAssayCounts(totalCount.get());
+            extraList.add(continuousAssayResultRes);
+            extraMap.put("合计", extraList);
+            resultMap.put("total", extraMap);
         }
         return resultMap;
     }