xiexiang vor 2 Jahren
Ursprung
Commit
79494d900e

+ 27 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/PatentMarketDataDTO.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 单篇专利价值曲线传入数据对象DTO
+ *
+ * @Author xiexiang
+ * @Date 2023/3/15
+ */
+@Accessors(chain = true)
+@Data
+public class PatentMarketDataDTO {
+    /**
+     * 专利号
+     */
+    private String patentNo;
+    /**
+     * 产品地区
+     */
+    private String saleArea;
+    /**
+     * 时间单位(0月份,1季度,2年份,不传为月份)
+     */
+    private Integer timeUnit;
+}

+ 2 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/ProductMarketDataDTO.java

@@ -4,6 +4,8 @@ import lombok.Data;
 import lombok.experimental.Accessors;
 
 /**
+ * 产品营销数据趋势图传入数据对象DTO
+ *
  * @Author xiexiang
  * @Date 2023/3/13
  */

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

@@ -0,0 +1,24 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 联合专利号总体返回单篇专利价值曲线的VO类
+ *
+ * @Author xiexiang
+ * @Date 2023/3/15
+ */
+@Data
+public class PatentTrendVO {
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 返回类
+     */
+    private List<ProductMarketDataTrendVO> saleVOS;
+}

+ 2 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/ProductMarketDataTrendVO.java

@@ -6,6 +6,8 @@ import lombok.experimental.Accessors;
 
 
 /**
+ * 产品营销数据返回的数据VO
+ *
  * @Author xiexiang
  * @Date 2023/3/13
  */

+ 18 - 1
PAS/src/main/java/cn/cslg/pas/controller/PatentController.java

@@ -3,6 +3,7 @@ package cn.cslg.pas.controller;
 import cn.cslg.pas.common.core.annotation.Permission;
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.model.dto.PatentDTO;
+import cn.cslg.pas.common.model.dto.PatentMarketDataDTO;
 import cn.cslg.pas.common.model.dto.UploadFileDTO;
 import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
@@ -51,8 +52,10 @@ public class PatentController {
     private final CacheUtils cacheUtils;
     private final ProjectFieldPatentLinkService projectFieldPatentLinkService;
     private final LoginUtils loginUtils;
-    private  final PatentRightService patentRightService;
+    private final PatentRightService patentRightService;
     private final FileUtils fileUtils;
+    private final IPatentMarketDataService patentMarketDataService;
+
     @GetMapping("/read/total")
     @Operation(summary = "专利阅读状态统计")
     public String getPatentReadTotal(PatentReadVO params) {
@@ -203,5 +206,19 @@ public class PatentController {
         return fileDTO;
     }
 
+    @Operation(summary = "查询单篇专利价值曲线")
+    @PostMapping("/showTrend")
+    public String showTrend(@RequestBody PatentMarketDataDTO dto) {
+        List<ProductMarketDataTrendVO> queryResult = patentMarketDataService.showTrend(dto);
+        PatentTrendVO patentTrendVO = new PatentTrendVO();
+        patentTrendVO.setPatentNo(dto.getPatentNo());
+        patentTrendVO.setSaleVOS(queryResult);
+        if (patentTrendVO != null){
+            return Response.success(patentTrendVO);
+        } else {
+            return Response.error("查询失败");
+        }
+    }
+
 
 }

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

@@ -0,0 +1,33 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.common.model.vo.ProductMarketDataTrendVO;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 专利价值曲线的Mapper层
+ *
+ * @Author xiexiang
+ * @Date 2023/3/15
+ */
+@Repository
+public interface PatentMarketDataMapper {
+
+    /**
+     * 未传入的营销地区saleArea,且timeUnit为2,按照年份返回数据
+     *
+     * @param patentNo 专利号(必需)
+     * @return 返回查询到的数据
+     */
+    List<ProductMarketDataTrendVO> patentQueryByYear(String patentNo, String saleArea);
+
+    /**
+     * 传入的营销地区saleArea,且timeUnit为2,按照年份返回数据
+     *
+     * @param saleArea 营销地区
+     * @param patentNo 专利号(必需)
+     * @return 返回查询到的数据
+     */
+    List<ProductMarketDataTrendVO> patentQueryByYear2(String patentNo, String saleArea);
+}

+ 25 - 0
PAS/src/main/java/cn/cslg/pas/service/IPatentMarketDataService.java

@@ -0,0 +1,25 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.model.dto.PatentMarketDataDTO;
+import cn.cslg.pas.common.model.vo.ProductMarketDataTrendVO;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 单篇专利价值曲线的Service层
+ *
+ * @Author xiexiang
+ * @Date 2023/3/15
+ */
+public interface IPatentMarketDataService {
+    /**
+     * 查询专利价值曲线
+     * @param dto
+     * @return
+     */
+    @Transactional
+    List<ProductMarketDataTrendVO> showTrend(PatentMarketDataDTO dto);
+
+
+}

+ 41 - 0
PAS/src/main/java/cn/cslg/pas/service/impl/PatentMarketDataServiceImpl.java

@@ -0,0 +1,41 @@
+package cn.cslg.pas.service.impl;
+
+import cn.cslg.pas.common.model.dto.PatentMarketDataDTO;
+import cn.cslg.pas.common.model.vo.ProductMarketDataTrendVO;
+import cn.cslg.pas.mapper.PatentMarketDataMapper;
+import cn.cslg.pas.service.IPatentMarketDataService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 专利价值曲线
+ *
+ * @Author xiexiang
+ * @Date 2023/3/15
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class PatentMarketDataServiceImpl implements IPatentMarketDataService {
+    private final PatentMarketDataMapper patentMarketDataMapper;
+
+    @Override
+    public List<ProductMarketDataTrendVO> showTrend(PatentMarketDataDTO dto) {
+        //传入的营销地区不为空(查询出来的数据要根据地区分类,)
+        if (dto.getSaleArea() != null && dto.getSaleArea() != "") {
+            if (dto.getTimeUnit() == 2) {//按照年份返回营销数据
+                List<ProductMarketDataTrendVO> list1 = patentMarketDataMapper.patentQueryByYear2(dto.getPatentNo(), dto.getSaleArea());
+                return list1;
+            }
+        } else {//未传入的营销地区,所查询出来的数据需要合并
+            if (dto.getTimeUnit() == 2) {//按照年份返回营销数据
+                List<ProductMarketDataTrendVO> list4 = patentMarketDataMapper.patentQueryByYear(dto.getPatentNo(), dto.getSaleArea());
+                return list4;
+            }
+        }
+        return null;
+    }
+}

+ 2 - 6
PAS/src/main/java/cn/cslg/pas/service/impl/PermissionRecordServiceImpl.java

@@ -6,23 +6,19 @@ import cn.cslg.pas.common.model.dto.PermissionRecordDTO;
 import cn.cslg.pas.common.model.dto.PermissionRecordUpdateDTO;
 import cn.cslg.pas.common.model.vo.PermissionRecordVO;
 import cn.cslg.pas.common.utils.CacheUtils;
-import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.pas.domain.PermissionRecord;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.PermissionRecordMapper;
 import cn.cslg.pas.service.IPermissionRecordService;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
+
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
-import java.util.Date;
+
 import java.util.List;
 
 /**

+ 1 - 5
PAS/src/main/java/cn/cslg/pas/service/impl/ProductCategoryServiceImpl.java

@@ -12,19 +12,15 @@ import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.pas.domain.Product;
 import cn.cslg.pas.domain.ProductCategory;
 import cn.cslg.pas.domain.ProductMarketData;
-import cn.cslg.pas.domain.Project;
 import cn.cslg.pas.domain.asso.AssoProductCategoryPicture;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.AssoProductCategoryPictureMapper;
 import cn.cslg.pas.mapper.ProductCategoryMapper;
 import cn.cslg.pas.mapper.ProductMapper;
-import cn.cslg.pas.mapper.ProjectMapper;
 import cn.cslg.pas.service.IProductCategoryService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.v3.oas.models.security.SecurityScheme;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -53,7 +49,7 @@ public class ProductCategoryServiceImpl implements IProductCategoryService {
     private final LoginUtils loginUtils;
     private final FileUtils fileUtils;
     private final ProductServiceImpl productService;
-    private final ProductMarketDataIServicempl productMarketDataIService;
+    private final ProductMarketDataServiceImpl productMarketDataIService;
 
     /**
      * 新增产品类别

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/service/impl/ProductMarketDataIServicempl.java

@@ -38,7 +38,7 @@ import java.util.regex.Pattern;
 @RequiredArgsConstructor
 @Slf4j
 @Service
-public class ProductMarketDataIServicempl extends ServiceImpl<ProductMarketDataMapper, ProductMarketData> implements IProductMarketDataService {
+public class ProductMarketDataServiceImpl extends ServiceImpl<ProductMarketDataMapper, ProductMarketData> implements IProductMarketDataService {
     private final ProductMarketDataMapper productMarketDataMapper;
     private final ProductMapper productMapper;
     private final CacheUtils cacheUtils;

+ 32 - 0
PAS/src/main/resources/mapper/PatentMarkerDataMapper.xml

@@ -0,0 +1,32 @@
+<?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="cn.cslg.pas.mapper.PatentMarketDataMapper">
+
+    <resultMap id="queryByDateMap" type="cn.cslg.pas.common.model.vo.ProductMarketDataTrendVO">
+        <result column="market_date" property="marketDate"/>
+        <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
+        FROM product_market_data
+        WHERE product_id IN
+              (SELECT product_id FROM asso_product_patent UNION
+               SELECT product_id FROM asso_structure_patent
+               WHERE patent_no = #{patentNo})
+        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
+        FROM product_market_data
+        WHERE product_id IN
+              (SELECT product_id FROM asso_product_patent UNION
+               SELECT product_id FROM asso_structure_patent
+               WHERE patent_no = #{patentNo})
+        AND saleArea = #{saleArea}
+        GROUP BY market_date
+    </select>
+</mapper>

+ 1 - 0
PAS/src/main/resources/mapper/ProductMarketDataMapper.xml

@@ -166,4 +166,5 @@
         WHERE product_id = #{productId}
         GROUP BY market_date
     </select>
+
 </mapper>