瀏覽代碼

Merge remote-tracking branch 'origin/feature/1.0.0' into feature/1.0.0

liguosong 4 年之前
父節點
當前提交
305b668251

+ 44 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/ReportController.java

@@ -0,0 +1,44 @@
+package com.abi.qms.platform.controller.console;
+
+import com.abi.qms.platform.dto.req.ReportReq;
+import com.abi.qms.platform.dto.res.ListBrandCodeReportRes;
+import com.abi.qms.platform.service.ReportService;
+import com.abi.task.common.api.base.BaseResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author ludashi
+ * @date 2021年06月02日 15:37
+ */
+@Slf4j
+@RestController
+@RequestMapping("factory")
+@Api(tags = "数据看板")
+public class ReportController {
+
+    @Autowired
+    private ReportService reportService;
+
+    /**
+     * @author ludashi
+     * @date 2021/6/2 17:49
+     * @param reportReq
+     * @return com.abi.task.common.api.base.BaseResponse<com.abi.qms.platform.dto.res.ListBrandCodeReportRes>
+     */
+    @ApiOperation("品牌使用码量占比")
+    @GetMapping("/queryBrandCodeProportion")
+    public BaseResponse<ListBrandCodeReportRes> queryBrandCodeProportion(@Validated ReportReq reportReq) {
+        ListBrandCodeReportRes result= reportService.queryBrandCodeProportion(reportReq);
+       return BaseResponse.create(result);
+    }
+
+}

+ 1 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/QrPackage.java

@@ -49,7 +49,7 @@ public class QrPackage implements Serializable {
 	private String sapOrderNo;
 
 	@Schema(name = "备用码包")
-	private String standbyRatio;
+	private Integer standbyRatio;
 
 	@Schema(name = "码数量")
 	private Long qrNumber;

+ 23 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/ReportServiceMapper.java

@@ -0,0 +1,23 @@
+package com.abi.qms.platform.dao.mapper;
+
+import com.abi.qms.platform.dao.vo.result.ListBrandCodeReportVO;
+import com.abi.qms.platform.dto.req.ReportReq;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author ludashi
+ * @date 2021年06月02日 15:40
+ */
+public interface ReportServiceMapper  {
+    
+    /**
+     * 品牌使用码量占比
+     * @author ludashi
+     * @date 2021/6/2 17:50
+     * @param reportReq
+     * @return java.util.List<com.abi.qms.platform.dao.vo.result.ListBrandCodeReportVO>
+     */
+    List<ListBrandCodeReportVO> queryBrandCodeProportion(@Param("reportReq") ReportReq reportReq);
+}

+ 24 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/ListBrandCodeReportVO.java

@@ -0,0 +1,24 @@
+package com.abi.qms.platform.dao.vo.result;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author ludashi
+ * @date 2021年06月02日 16:39
+ */
+@Data
+@ApiModel
+public class ListBrandCodeReportVO implements Serializable {
+    @ApiModelProperty("品牌名称")
+    private String brandName;
+
+    @ApiModelProperty("码数量")
+    private Long qrNumber;
+
+    @ApiModelProperty("占总数百分比")
+    private String percent;
+}

+ 1 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/QrPackageVO.java

@@ -44,7 +44,7 @@ public class QrPackageVO implements Serializable {
     private String skuName;
 
     @ApiModelProperty(value = "备用码包")
-    private String standbyRatio;
+    private Integer standbyRatio;
 
     @ApiModelProperty("箱码幅面id")
     private Long boxCodeFormatId;

+ 29 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ReportReq.java

@@ -0,0 +1,29 @@
+package com.abi.qms.platform.dto.req;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @author ludashi
+ * @date 2021年06月02日 16:11
+ */
+@Data
+@ApiModel
+public class ReportReq implements Serializable {
+
+    @ApiModelProperty("1本周  2本月")
+    private Integer value;
+
+    @ApiModelProperty("开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime beginTime;
+
+    @ApiModelProperty("结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endTime;
+}

+ 1 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/SaveQrPackageReq.java

@@ -55,7 +55,7 @@ public class SaveQrPackageReq implements Serializable {
 
 	@NotEmpty(message = "备用码包为空")
 	@ApiModelProperty(value = "备用码包")
-	private String standbyRatio;
+	private Integer standbyRatio;
 
 	@NotNull(message = "码数量为空")
 	@ApiModelProperty("码数量")

+ 1 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/GetQrPackageDetailRes.java

@@ -46,7 +46,7 @@ public class GetQrPackageDetailRes implements Serializable {
 	private String skuName;
 
 	@ApiModelProperty(value = "备用码包")
-	private String standbyRatio;
+	private Integer standbyRatio;
 
 	@ApiModelProperty("箱码幅面id")
 	private Long boxCodeFormatId;

+ 40 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListBrandCodeReportRes.java

@@ -0,0 +1,40 @@
+package com.abi.qms.platform.dto.res;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author ludashi
+ * @date 2021年06月02日 16:26
+ */
+@Data
+@ApiModel
+public class ListBrandCodeReportRes implements Serializable {
+
+    @ApiModelProperty("品牌使用码量占比列表")
+    private List<BrandCodeReportBean> reportBrandCodeResList;
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    @ApiModel(value = "ListBrandCodeReportRes_BrandCodeReportBean")
+    public static class BrandCodeReportBean implements Serializable {
+
+        @ApiModelProperty("品牌名称")
+        private String brandName;
+
+        @ApiModelProperty("码数量")
+        private Long qrNumber;
+
+        @ApiModelProperty("占总数百分比")
+        private String percent;
+    }
+}

+ 21 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/ReportService.java

@@ -0,0 +1,21 @@
+package com.abi.qms.platform.service;
+
+import com.abi.qms.platform.dto.req.ReportReq;
+import com.abi.qms.platform.dto.res.ListBrandCodeReportRes;
+
+/**
+ * @author ludashi
+ * @date 2021年06月02日 15:39
+ */
+public interface ReportService {
+
+   /**
+    * 品牌使用码量占比
+    * @author ludashi
+    * @date 2021/6/2 17:50
+    * @param reportReq
+    * @return com.abi.qms.platform.dto.res.ListBrandCodeReportRes
+    */
+   ListBrandCodeReportRes queryBrandCodeProportion(ReportReq reportReq);
+    
+}

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

@@ -0,0 +1,40 @@
+package com.abi.qms.platform.service.impl;
+
+import com.abi.qms.platform.dao.mapper.ReportServiceMapper;
+import com.abi.qms.platform.dao.vo.result.ListBrandCodeReportVO;
+import com.abi.qms.platform.dto.req.ReportReq;
+import com.abi.qms.platform.dto.res.ListBrandCodeReportRes;
+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 java.util.List;
+
+/**
+ * @author ludashi
+ * @date 2021年06月02日 15:39
+ */
+@Service
+public class ReportServiceImpl implements ReportService {
+
+    @Autowired
+    private ReportServiceMapper reportServiceMapper;
+
+   /**
+    * 品牌使用码量占比
+    * @author ludashi
+    * @date 2021/6/2 17:50
+    * @param reportReq
+    * @return com.abi.qms.platform.dto.res.ListBrandCodeReportRes
+    */
+    @Override
+    public ListBrandCodeReportRes queryBrandCodeProportion(ReportReq reportReq) {
+        List<ListBrandCodeReportVO> listReportVOS = reportServiceMapper.queryBrandCodeProportion(reportReq);
+        // 封装出参
+        ListBrandCodeReportRes res = new ListBrandCodeReportRes();
+        List<ListBrandCodeReportRes.BrandCodeReportBean> reportRes = PojoConverterUtils.copyList(listReportVOS, ListBrandCodeReportRes.BrandCodeReportBean.class);
+        res.setReportBrandCodeResList(reportRes);
+        return res;
+    }
+}

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

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.abi.qms.platform.dao.mapper.ReportServiceMapper">
+
+    <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
+        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
+    </select>
+</mapper>