gaodm преди 5 години
родител
ревизия
2910acc94f

+ 6 - 0
pom.xml

@@ -183,6 +183,12 @@
             <artifactId>commons-pool2</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>io.github.lvyahui8</groupId>
+            <artifactId>spring-boot-data-aggregator-starter</artifactId>
+            <version>${aggregator.version}</version>
+        </dependency>
+
     </dependencies>
 
     <!-- 私有仓库 -->

+ 99 - 0
src/main/java/com/diagbot/aggregate/ResultStatisticsAggregate.java

@@ -0,0 +1,99 @@
+package com.diagbot.aggregate;
+
+import com.diagbot.dto.ResultDetailDTO;
+import com.diagbot.facade.BehospitalInfoFacade;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.FilterVO;
+import com.google.common.collect.Lists;
+import io.github.lvyahui8.spring.annotation.DataConsumer;
+import io.github.lvyahui8.spring.annotation.DataProvider;
+import io.github.lvyahui8.spring.annotation.InvokeParameter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/4/22 18:09
+ */
+@Component
+public class ResultStatisticsAggregate {
+    @Autowired
+    private BehospitalInfoFacade behospitalInfoFacade;
+
+    @DataProvider("setAllResult")
+    public Map<String, Object> setAllResult(
+            @InvokeParameter("filterVO") FilterVO filterVO,
+            @DataConsumer("getResult") List<ResultDetailDTO> results,
+            @DataConsumer("getResultDept") List<ResultDetailDTO> results2) {
+        Map<String, Object> retMap = new LinkedHashMap<>();
+        if (ListUtil.isNotEmpty(results)) {
+            retMap.put("缺陷排行列表", results);
+        }
+        if (ListUtil.isNotEmpty(results2)) {
+            retMap.put("各科室缺陷占比", results2);
+        }
+        return retMap;
+    }
+
+    @DataProvider("getResult")
+    public List<ResultDetailDTO> getResult(@InvokeParameter("filterVO") FilterVO filterVO) {
+        List<ResultDetailDTO> results = behospitalInfoFacade.resultStatistics(filterVO);
+        if (ListUtil.isNotEmpty(results)) {
+            results.forEach(result -> {
+                DecimalFormat df = new DecimalFormat("#0.00");
+                String percentStr
+                        = df.format(BigDecimal.valueOf(result.getPercent()).multiply(BigDecimal.valueOf(100))) + "%";
+                result.setPercentStr(percentStr);
+            });
+            return results;
+        }
+
+        return null;
+    }
+
+    @DataProvider("getResultDept")
+    public List<ResultDetailDTO> getResultDept(@InvokeParameter("filterVO") FilterVO filterVO) {
+        List<ResultDetailDTO> results2 = behospitalInfoFacade.resultStatisticsByDept(filterVO);
+        if (ListUtil.isNotEmpty(results2)) {
+            List<ResultDetailDTO> retResults = Lists.newLinkedList();
+            if (results2.size() <= 6) {
+                retResults = BeanUtil.listCopyTo(results2, ResultDetailDTO.class);
+            } else {
+
+                Double rate = 0d;
+                Integer num = 0;
+                for (ResultDetailDTO result : results2) {
+                    if (retResults.size() < 5) {
+                        rate = BigDecimal.valueOf(rate)
+                                .add(BigDecimal.valueOf(Double.valueOf(result.getPercent())))
+                                .doubleValue();
+                        retResults.add(result);
+                    } else {
+                        num += result.getNum();
+                    }
+                }
+                ResultDetailDTO retResult = new ResultDetailDTO();
+                retResult.setName("其他");
+                retResult.setNum(num);
+                retResult.setPercent(BigDecimal.valueOf(1).subtract(BigDecimal.valueOf(rate)).doubleValue());
+                retResults.add(retResult);
+            }
+            retResults.forEach(result -> {
+                DecimalFormat df = new DecimalFormat("#0.00");
+                String percentStr
+                        = df.format(BigDecimal.valueOf(result.getPercent()).multiply(BigDecimal.valueOf(100))) + "%";
+                result.setPercentStr(percentStr);
+            });
+            return retResults;
+        }
+        return null;
+    }
+}

+ 56 - 43
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -2,9 +2,10 @@ package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.dto.AverageStatisticsDTO;
-import com.diagbot.dto.ResultDetailDTO;
 import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.ListUtil;
@@ -12,12 +13,13 @@ import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcresultFilterVO;
 import com.google.common.collect.Lists;
+import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
-import java.text.DecimalFormat;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -36,6 +38,8 @@ public class ConsoleFacade {
     private BehospitalInfoFacade behospitalInfoFacade;
     @Autowired
     private HomePageFacade homePageFacade;
+    @Autowired
+    private DataBeanAggregateQueryFacade dataBeanAggregateQueryFacade;
 
 
     /**
@@ -156,48 +160,57 @@ public class ConsoleFacade {
         if (filterVO.getLimitCount() == null || filterVO.getLimitCount().equals(0)) {
             filterVO.setLimitCount(10);
         }
-        List<ResultDetailDTO> results = behospitalInfoFacade.resultStatistics(filterVO);
-        if (ListUtil.isNotEmpty(results)) {
-            results.forEach(result -> {
-                DecimalFormat df = new DecimalFormat("#0.00");
-                String percentStr
-                        = df.format(BigDecimal.valueOf(result.getPercent()).multiply(BigDecimal.valueOf(100))) + "%";
-                result.setPercentStr(percentStr);
-            });
-            retMap.put("缺陷排行列表", results);
-        }
-        List<ResultDetailDTO> results2 = behospitalInfoFacade.resultStatisticsByDept(filterVO);
-        if (ListUtil.isNotEmpty(results2)) {
-            List<ResultDetailDTO> retResults = Lists.newLinkedList();
-            if (results2.size() <= 6) {
-                retResults = BeanUtil.listCopyTo(results2, ResultDetailDTO.class);
-            } else {
+        //        List<ResultDetailDTO> results = behospitalInfoFacade.resultStatistics(filterVO);
+        //        if (ListUtil.isNotEmpty(results)) {
+        //            results.forEach(result -> {
+        //                DecimalFormat df = new DecimalFormat("#0.00");
+        //                String percentStr
+        //                        = df.format(BigDecimal.valueOf(result.getPercent()).multiply(BigDecimal.valueOf(100))) + "%";
+        //                result.setPercentStr(percentStr);
+        //            });
+        //            retMap.put("缺陷排行列表", results);
+        //        }
+        //        List<ResultDetailDTO> results2 = behospitalInfoFacade.resultStatisticsByDept(filterVO);
+        //        if (ListUtil.isNotEmpty(results2)) {
+        //            List<ResultDetailDTO> retResults = Lists.newLinkedList();
+        //            if (results2.size() <= 6) {
+        //                retResults = BeanUtil.listCopyTo(results2, ResultDetailDTO.class);
+        //            } else {
+        //
+        //                Double rate = 0d;
+        //                Integer num = 0;
+        //                for (ResultDetailDTO result : results2) {
+        //                    if (retResults.size() < 5) {
+        //                        rate = BigDecimal.valueOf(rate)
+        //                                .add(BigDecimal.valueOf(Double.valueOf(result.getPercent())))
+        //                                .doubleValue();
+        //                        retResults.add(result);
+        //                    } else {
+        //                        num += result.getNum();
+        //                    }
+        //                }
+        //                ResultDetailDTO retResult = new ResultDetailDTO();
+        //                retResult.setName("其他");
+        //                retResult.setNum(num);
+        //                retResult.setPercent(BigDecimal.valueOf(1).subtract(BigDecimal.valueOf(rate)).doubleValue());
+        //                retResults.add(retResult);
+        //            }
+        //            retResults.forEach(result -> {
+        //                DecimalFormat df = new DecimalFormat("#0.00");
+        //                String percentStr
+        //                        = df.format(BigDecimal.valueOf(result.getPercent()).multiply(BigDecimal.valueOf(100))) + "%";
+        //                result.setPercentStr(percentStr);
+        //            });
+        //            retMap.put("各科室缺陷占比", retResults);
+        //        }
 
-                Double rate = 0d;
-                Integer num = 0;
-                for (ResultDetailDTO result : results2) {
-                    if (retResults.size() < 5) {
-                        rate = BigDecimal.valueOf(rate)
-                                .add(BigDecimal.valueOf(Double.valueOf(result.getPercent())))
-                                .doubleValue();
-                        retResults.add(result);
-                    } else {
-                        num += result.getNum();
-                    }
-                }
-                ResultDetailDTO retResult = new ResultDetailDTO();
-                retResult.setName("其他");
-                retResult.setNum(num);
-                retResult.setPercent(BigDecimal.valueOf(1).subtract(BigDecimal.valueOf(rate)).doubleValue());
-                retResults.add(retResult);
-            }
-            retResults.forEach(result -> {
-                DecimalFormat df = new DecimalFormat("#0.00");
-                String percentStr
-                        = df.format(BigDecimal.valueOf(result.getPercent()).multiply(BigDecimal.valueOf(100))) + "%";
-                result.setPercentStr(percentStr);
-            });
-            retMap.put("各科室缺陷占比", retResults);
+        try {
+            Map<String, Object> invokeParams = new HashMap<>();
+            invokeParams.put("filterVO", filterVO);
+            retMap
+                    = dataBeanAggregateQueryFacade.get("setAllResult", invokeParams, Map.class);
+        } catch (Exception e) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
         }
         return retMap;
     }

+ 4 - 0
src/main/resources/application-dev.yml

@@ -150,6 +150,10 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
+io.github.lvyahui8.spring:
+  base-packages: com.diagbot.aggregate
+  thread-number: 12
+
 myhost: localhost
 oath.self.address: http://${myhost}:${server.port}
 qc.address: http://192.168.2.232:6009

+ 4 - 0
src/main/resources/application-local.yml

@@ -150,6 +150,10 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
+io.github.lvyahui8.spring:
+  base-packages: com.diagbot.aggregate
+  thread-number: 12
+
 myhost: localhost
 oath.self.address: http://${myhost}:${server.port}
 qc.address: http://192.168.2.232:6009

+ 4 - 0
src/main/resources/application-pre.yml

@@ -150,6 +150,10 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
+io.github.lvyahui8.spring:
+  base-packages: com.diagbot.aggregate
+  thread-number: 12
+
 myhost: localhost
 oath.self.address: http://${myhost}:${server.port}
 qc.address: http://192.168.2.232:6009

+ 4 - 0
src/main/resources/application-pro.yml

@@ -150,6 +150,10 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
+io.github.lvyahui8.spring:
+  base-packages: com.diagbot.aggregate
+  thread-number: 12
+
 myhost: localhost
 oath.self.address: http://${myhost}:${server.port}
 qc.address: http://192.168.2.232:6009

+ 4 - 0
src/main/resources/application-test.yml

@@ -150,6 +150,10 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
+io.github.lvyahui8.spring:
+  base-packages: com.diagbot.aggregate
+  thread-number: 12
+
 myhost: localhost
 oath.self.address: http://${myhost}:${server.port}
 qc.address: http://192.168.2.232:6009