Browse Source

优化代码

luyanwen-001 3 years ago
parent
commit
eee99ff2b7

+ 12 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/ReportServiceImpl.java

@@ -10,8 +10,11 @@ import com.abi.qms.platform.service.ReportService;
 import com.abi.task.common.utils.PojoConverterUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
+import java.text.DecimalFormat;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author ludashi
@@ -32,7 +35,16 @@ public class ReportServiceImpl implements ReportService {
     */
     @Override
     public ListBrandCodeReportRes queryBrandCodeProportion(ReportReq reportReq) {
+        //查询 品牌数量
         List<ListBrandCodeReportVO> listReportVOS = reportServiceMapper.queryBrandCodeProportion(reportReq);
+        //求总和
+        Long collect = listReportVOS.stream().collect(Collectors.summingLong(ListBrandCodeReportVO::getQrNumber));
+        if(!CollectionUtils.isEmpty(listReportVOS)){
+            listReportVOS.forEach(listReportVO->{
+                long l = listReportVO.getQrNumber() / collect * 100;
+                listReportVO.setPercent(new DecimalFormat("#0.00").format(l + 0.000001d)+"%");
+            });
+        }
         // 封装出参
         ListBrandCodeReportRes res = new ListBrandCodeReportRes();
         List<ListBrandCodeReportRes.BrandCodeReportBean> reportRes = PojoConverterUtils.copyList(listReportVOS, ListBrandCodeReportRes.BrandCodeReportBean.class);

+ 21 - 30
abi-cloud-qr-platform-server/src/main/resources/dao/mapper/ReportServiceMapper.xml

@@ -4,37 +4,28 @@
 
     <select id="queryBrandCodeProportion" resultType="com.abi.qms.platform.dao.vo.result.ListBrandCodeReportVO">
         SELECT
-            quer.brand_name brandName,
-            SUM( quer.qr_number ) qrNumber,
-            CONCAT( SUM( quer.per ), '', '%' ) percent
+        SUM( package.qr_number ) qrNumber,
+        brand.brand_name brandName
         FROM
-            (
-                SELECT
-                    brand.brand_name brand_name,
-                    package.qr_number qr_number,
-                    ROUND( package.qr_number /( SELECT SUM( e.qr_number ) FROM qr_package AS e ) * 100, 2 ) AS per
-                FROM
-                    base_brand AS brand
-                    LEFT JOIN base_sku AS sku ON brand.brand_code = sku.brand_code
-                    LEFT JOIN base_material AS material ON material.sku_id = sku.id
-                    LEFT JOIN qr_package AS package ON package.material_id = material.id
-                <where>
-                    package.generate_status = 2
-                    <!--   1本周  -->
-                    <if test="null != reportReq.value and reportReq.value == 1">
-                       and yearweek(date_format(package.generate_time,'%Y-%m-%d')) = yearweek(now())
-                    </if>
-                    <!--  2本月 -->
-                    <if test="null != reportReq.value and reportReq.value == 2">
-                       and date_format(package.generate_time,'%Y-%m')=date_format(now(),'%Y-%m')
-                    </if>
-                    <if test="null != reportReq.beginTime and null != reportReq.endTime">
-                        and #{reportReq.beginTime} &lt; package.generate_time &lt; #{reportReq.endTime}
-                    </if>
-                </where>
-                ORDER BY per DESC
-            ) AS quer
-        GROUP BY quer.brand_name
+        qr_package AS package
+        LEFT JOIN base_material AS material ON package.material_id = material.id
+        LEFT JOIN base_sku AS sku ON material.sku_id = sku.id
+        LEFT JOIN base_brand AS brand ON sku.sub_brand_code = brand.brand_code
+        <where>
+            package.generate_status = 2
+            <!--   1本周  -->
+            <if test="null != reportReq.value and reportReq.value == 1">
+                and yearweek(date_format(package.generate_time,'%Y-%m-%d')) = yearweek(now())
+            </if>
+            <!--  2本月 -->
+            <if test="null != reportReq.value and reportReq.value == 2">
+                and date_format(package.generate_time,'%Y-%m')=date_format(now(),'%Y-%m')
+            </if>
+            <if test="null != reportReq.beginTime and null != reportReq.endTime">
+                and #{reportReq.beginTime} &lt; package.generate_time &lt; #{reportReq.endTime}
+            </if>
+        </where>
+        GROUP BY brand.brand_code, brand.brand_name
     </select>
 
     <select id="querySkuCodeRanking" resultType="com.abi.qms.platform.dao.vo.result.ListSkuCodeReportVO">