Explorar o código

3/17 Xiexiang patentvalue

xiexiang %!s(int64=2) %!d(string=hai) anos
pai
achega
d1a67d4c36

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentTrendVO.java

@@ -15,7 +15,7 @@ public class PatentTrendVO {
     /**
      * 专利号
      */
-    private String patentNo;
+    private List<String> patentNoList;
 
     /**
      * 返回类

+ 0 - 12
PAS/src/main/java/cn/cslg/pas/mapper/PatentMarketDataMapper.java

@@ -15,18 +15,6 @@ import java.util.List;
 public interface PatentMarketDataMapper {
 
     /**
-     * 未传入的营销地区saleArea,且timeUnit为2,按照年份返回数据
-     *
-     * @param patentNoList 专利号(必需)
-     * @return 返回查询到的数据
-     */
-    List<ProductMarketDataTrendVO> patentQueryByYear2(List patentNoList, String saleArea);
-
-    List<ProductMarketDataTrendVO> patentQueryBySeason2(List patentNoList, String saleArea);
-
-    List<ProductMarketDataTrendVO> patentQueryByMonth2(List patentNoList, String saleArea);
-
-    /**
      * 传入的营销地区saleArea,且timeUnit为2,按照年份返回数据
      *
      * @param saleArea 营销地区

+ 1 - 2
PAS/src/main/java/cn/cslg/pas/service/IPatentMarketDataService.java

@@ -7,7 +7,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.List;
 
 /**
- * 单篇专利价值曲线的Service层
+ * 专利价值曲线的Service层
  *
  * @Author xiexiang
  * @Date 2023/3/15
@@ -21,5 +21,4 @@ public interface IPatentMarketDataService {
     @Transactional
     List<PatentTrendVO> showTrend(PatentMarketDataDTO dto);
 
-
 }

+ 13 - 45
PAS/src/main/java/cn/cslg/pas/service/impl/PatentMarketDataServiceImpl.java

@@ -29,55 +29,23 @@ public class PatentMarketDataServiceImpl implements IPatentMarketDataService {
     public List<PatentTrendVO> showTrend(PatentMarketDataDTO dto) {
         //存储专利号以及各专利号对应的营销数据
         List<PatentTrendVO> trendVOS = new ArrayList<>();
-
+        //存储产品id查询到的营销数据
+        List<ProductMarketDataTrendVO> saleVOS = new ArrayList<>();
+        //判断专利号集合内是否有内容,没有的话直接返回null
         if(dto.getPatentNoList() == null && dto.getPatentNoList().size() == 0) {
             return null;
         }
-        List<String> patentNoLists = dto.getPatentNoList();
-        for(String patentNo : patentNoLists) {
-            //传入的营销地区不为空(查询出来的数据要根据地区分类,)
-            if (dto.getSaleArea() != null && dto.getSaleArea() != "") {
-                if (dto.getTimeUnit() == 2) {//按照年份返回营销数据
-                    List<ProductMarketDataTrendVO> saleVOS = patentMarketDataMapper.patentQueryByYear(dto.getPatentNoList(), dto.getSaleArea());
-                    PatentTrendVO trendVO = new PatentTrendVO();
-                    trendVO.setPatentNo(patentNo);
-                    trendVO.setSaleVOS(saleVOS);
-                    trendVOS.add(trendVO);
-                } else if (dto.getTimeUnit() == 1) {//按照季度返回营销数据
-                    List<ProductMarketDataTrendVO> saleVOS = patentMarketDataMapper.patentQueryBySeason(dto.getPatentNoList(), dto.getSaleArea());
-                    PatentTrendVO trendVO = new PatentTrendVO();
-                    trendVO.setPatentNo(patentNo);
-                    trendVO.setSaleVOS(saleVOS);
-                    trendVOS.add(trendVO);
-                } else if (dto.getTimeUnit() == null||dto.getTimeUnit() == 0){//按照月份返回营销数据
-                    List<ProductMarketDataTrendVO> saleVOS = patentMarketDataMapper.patentQueryByMonth(dto.getPatentNoList(), dto.getSaleArea());
-                    PatentTrendVO trendVO = new PatentTrendVO();
-                    trendVO.setPatentNo(patentNo);
-                    trendVO.setSaleVOS(saleVOS);
-                    trendVOS.add(trendVO);
-                }
-            } else {//未传入的营销地区,所查询出来的数据需要合并
-                if (dto.getTimeUnit() == 2){//按照年份返回营销数据
-                    List<ProductMarketDataTrendVO> saleVOS = patentMarketDataMapper.patentQueryByYear2(dto.getPatentNoList(), dto.getSaleArea());
-                    PatentTrendVO trendVO = new PatentTrendVO();
-                    trendVO.setPatentNo(patentNo);
-                    trendVO.setSaleVOS(saleVOS);
-                    trendVOS.add(trendVO);
-                } else if (dto.getTimeUnit() == 1) {//按照季度返回营销数据
-                    List<ProductMarketDataTrendVO> saleVOS = patentMarketDataMapper.patentQueryBySeason2(dto.getPatentNoList(), dto.getSaleArea());
-                    PatentTrendVO trendVO = new PatentTrendVO();
-                    trendVO.setPatentNo(patentNo);
-                    trendVO.setSaleVOS(saleVOS);
-                    trendVOS.add(trendVO);
-                } else if (dto.getTimeUnit() == null||dto.getTimeUnit() == 0){//按照月份返回营销数据
-                    List<ProductMarketDataTrendVO> saleVOS = patentMarketDataMapper.patentQueryByMonth2(dto.getPatentNoList(), dto.getSaleArea());
-                    PatentTrendVO trendVO = new PatentTrendVO();
-                    trendVO.setPatentNo(patentNo);
-                    trendVO.setSaleVOS(saleVOS);
-                    trendVOS.add(trendVO);
-                }
-            }
+        if (dto.getTimeUnit() == 2) {//按照年份返回营销数据
+            saleVOS = patentMarketDataMapper.patentQueryByYear(dto.getPatentNoList(), dto.getSaleArea());
+        } else if (dto.getTimeUnit() == 1) {//按照季度返回营销数据
+            saleVOS = patentMarketDataMapper.patentQueryBySeason(dto.getPatentNoList(), dto.getSaleArea());
+        } else if (dto.getTimeUnit() == null || dto.getTimeUnit() == 0) {//按照月份返回营销数据
+            saleVOS = patentMarketDataMapper.patentQueryByMonth(dto.getPatentNoList(), dto.getSaleArea());
         }
+        PatentTrendVO trendVO = new PatentTrendVO();
+        trendVO.setPatentNoList(dto.getPatentNoList());
+        trendVO.setSaleVOS(saleVOS);
+        trendVOS.add(trendVO);
         return trendVOS;
     }
 

+ 20 - 66
PAS/src/main/resources/mapper/PatentMarkerDataMapper.xml

@@ -7,9 +7,10 @@
         <result column="sale_total_money" property="saleTotalMoney"/>
     </resultMap>
 
+    <!--传入了地区-->
+    <!--按照年为单位返回查询到的营销数据-->
     <select id="patentQueryByYear" resultMap="queryByDateMap">
-        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'年') AS market_date,
-               sum(sale_money) AS sale_total_money
+        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'年') AS market_date,sum(sale_money) AS sale_total_money
         FROM product_market_data
         WHERE product_id IN
                 (SELECT product_id FROM asso_structure_patent WHERE patent_no IN
@@ -22,51 +23,15 @@
                     #{patentNo}
                 </foreach>
                 )
-        AND saleArea = #{saleArea}
+                <if test="saleArea !=null and saleArea != ''">
+                    AND sale_area = #{saleArea}
+                </if>
         GROUP BY market_date
     </select>
-
+    <!--传入了地区-->
+    <!--按照季度为单位返回查询到的营销数据-->
     <select id="patentQueryBySeason" resultMap="queryByDateMap">
-        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'年','第',
-                CAST(QUARTER(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'季度') AS market_date,
-                sum(sale_money) AS sale_total_money
-        WHERE product_id IN
-                (SELECT product_id FROM asso_structure_patent WHERE patent_no IN
-                <foreach collection="patentNoList" item="patentNo" index="index" open="(" close=")" separator=",">
-                    #{patentNo}
-                </foreach>
-                UNION
-                SELECT product_id FROM asso_product_patent WHERE patent_no IN
-                <foreach collection="patentNoList" item="patentNo" index="index" open="(" close=")" separator=",">
-                    #{patentNo}
-                </foreach>
-                )
-                AND saleArea = #{saleArea}
-        GROUP BY market_date
-    </select>
-
-    <select id="patentQueryByMonth" resultMap="queryByDateMap">
-        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) AS CHAR),'-',
-                CAST(MONTH(STR_TO_DATE(sale_time,'%Y-%m')) AS CHAR)) AS market_date,
-                sum(sale_money) AS sale_total_money
-        WHERE product_id IN
-                (SELECT product_id FROM asso_structure_patent WHERE patent_no IN
-                <foreach collection="patentNoList" item="patentNo" index="index" open="(" close=")" separator=",">
-                    #{patentNo}
-                </foreach>
-                UNION
-                SELECT product_id FROM asso_product_patent WHERE patent_no IN
-                <foreach collection="patentNoList" item="patentNo" index="index" open="(" close=")" separator=",">
-                    #{patentNo}
-                </foreach>
-                )
-                AND saleArea = #{saleArea}
-        GROUP BY market_date
-    </select>
-
-    <select id="patentQueryByYear2" resultMap="queryByDateMap">
-        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'年') AS market_date,
-        sum(sale_money) AS sale_total_money
+        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'年','第',CAST(QUARTER(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'季度') AS market_date,sum(sale_money) AS sale_total_money
         FROM product_market_data
         WHERE product_id IN
                 (SELECT product_id FROM asso_structure_patent WHERE patent_no IN
@@ -79,31 +44,16 @@
                     #{patentNo}
                 </foreach>
                 )
-        GROUP BY market_date
-    </select>
+                <if test="saleArea !=null and saleArea != ''">
+                    AND sale_area = #{saleArea}
+                </if>
 
-    <select id="patentQueryBySeason2" resultMap="queryByDateMap">
-        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'年','第',
-                CAST(QUARTER(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'季度') AS market_date,
-                sum(sale_money) AS sale_total_money
-        WHERE product_id IN
-                (SELECT product_id FROM asso_structure_patent WHERE patent_no IN
-                <foreach collection="patentNoList" item="patentNo" index="index" open="(" close=")" separator=",">
-                    #{patentNo}
-                </foreach>
-                UNION
-                SELECT product_id FROM asso_product_patent WHERE patent_no IN
-                <foreach collection="patentNoList" item="patentNo" index="index" open="(" close=")" separator=",">
-                    #{patentNo}
-                </foreach>
-                )
         GROUP BY market_date
     </select>
-
-    <select id="patentQueryByMonth2" resultMap="queryByDateMap">
-        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) AS CHAR),'-',
-                CAST(MONTH(STR_TO_DATE(sale_time,'%Y-%m')) AS CHAR)) AS market_date,
-                sum(sale_money) AS sale_total_money
+    <!--传入了地区-->
+    <!--按照月份为单位返回查询到的营销数据-->
+    <select id="patentQueryByMonth" resultMap="queryByDateMap">
+        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) AS CHAR),'-',CAST(MONTH(STR_TO_DATE(sale_time,'%Y-%m')) AS CHAR)) AS market_date,sum(sale_money) AS sale_total_money
         FROM product_market_data
         WHERE product_id IN
                 (SELECT product_id FROM asso_structure_patent WHERE patent_no IN
@@ -116,6 +66,10 @@
                     #{patentNo}
                 </foreach>
                 )
+                <if test="saleArea !=null and saleArea != ''">
+                    AND sale_area = #{saleArea}
+                </if>
         GROUP BY market_date
     </select>
+
 </mapper>