Explorar o código

3/17 Xiexiang

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

+ 29 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/GetAreaListDTO.java

@@ -0,0 +1,29 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 查询架构的地区集合
+ *
+ * @Author xiexiang
+ * @Date 2023/3/16
+ */
+@Data
+public class GetAreaListDTO {
+    /**
+     * 产品id
+     */
+    private Integer productId;
+
+    /**
+     * 架构id
+     */
+    private Integer categoryId;
+
+    /**
+     * 专利号集合
+     */
+    private List<String> patentNoList;
+}

+ 4 - 7
PAS/src/main/java/cn/cslg/pas/controller/ProductCategoryController.java

@@ -2,10 +2,7 @@ package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.JsonPage;
 import cn.cslg.pas.common.core.base.Constants;
-import cn.cslg.pas.common.model.dto.ProductCategoryAddNewDTO;
-import cn.cslg.pas.common.model.dto.ProductCategoryDTO;
-import cn.cslg.pas.common.model.dto.ProductCategoryQueryPageDTO;
-import cn.cslg.pas.common.model.dto.ProductCategoryUpdateDTO;
+import cn.cslg.pas.common.model.dto.*;
 import cn.cslg.pas.common.model.vo.ProductCategoryTrendVO;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.exception.XiaoShiException;
@@ -93,9 +90,9 @@ public class ProductCategoryController {
     }
 
     @Operation(summary = "获得架构的地区集合")
-    @GetMapping("/getAreaList")
-    public String getAreaList(Integer id, Integer productId) {
-        return Response.success(productCategoryService.getAreaList(id, productId));
+    @PostMapping("/getAreaList")
+    public String getAreaList(@RequestBody GetAreaListDTO dto) {
+        return Response.success(productCategoryService.getAreaList(dto));
     }
 
     @Operation(summary = "获得架构的公司集合")

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

@@ -1,5 +1,6 @@
 package cn.cslg.pas.mapper;
 
+import cn.cslg.pas.common.model.dto.GetAreaListDTO;
 import cn.cslg.pas.common.model.dto.ProductCategoryQueryPageDTO;
 import cn.cslg.pas.common.model.vo.ProductCategoryVO;
 import cn.cslg.pas.domain.ProductCategory;
@@ -63,4 +64,15 @@ public interface ProductCategoryMapper {
      */
     List<ProductCategoryVO> query(ProductCategoryQueryPageDTO productCategoryQueryPageDTO);
 
+    /**
+     * 查询地区列表
+     *
+     * @return 返回查询到的地区集合
+     */
+    List<String> getAreaList(GetAreaListDTO dto);
+
+
+
+
+
 }

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

@@ -82,17 +82,5 @@ public interface ProductMarketDataMapper extends BaseMapper<ProductMarketData> {
 
     List<ProductMarketDataTrendVO> queryByMonth(Integer productId, String saleArea);
 
-    /**
-     * 未传入的营销地区saleArea
-     *
-     * @param saleArea 营销地区
-     * @param productId 产品id(必需)
-     * @return 返回查询到的数据
-     */
-    List<ProductMarketDataTrendVO> queryByYear2(Integer productId, String saleArea);
-
-    List<ProductMarketDataTrendVO> queryBySeason2(Integer productId, String saleArea);
-
-    List<ProductMarketDataTrendVO> queryByMonth2(Integer productId, String saleArea);
 
 }

+ 3 - 0
PAS/src/main/java/cn/cslg/pas/mapper/ProjectUserMapper.java

@@ -5,6 +5,8 @@ import cn.cslg.pas.common.model.vo.ProjectUserVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
 
 /**
  * <p>
@@ -14,6 +16,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  * @author 王岩
  * @since 2022-02-18
  */
+@Repository
 public interface ProjectUserMapper extends BaseMapper<ProjectUser> {
 
     IPage<ProjectUser> getPageList(Page<ProjectUser> page, ProjectUserVO params);

+ 2 - 5
PAS/src/main/java/cn/cslg/pas/service/IProductCategoryService.java

@@ -1,10 +1,7 @@
 package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.JsonPage;
-import cn.cslg.pas.common.model.dto.ProductCategoryAddNewDTO;
-import cn.cslg.pas.common.model.dto.ProductCategoryDTO;
-import cn.cslg.pas.common.model.dto.ProductCategoryQueryPageDTO;
-import cn.cslg.pas.common.model.dto.ProductCategoryUpdateDTO;
+import cn.cslg.pas.common.model.dto.*;
 import cn.cslg.pas.common.model.vo.ProductCategoryTrendVO;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -59,7 +56,7 @@ public interface IProductCategoryService {
     @Transactional
     List<ProductCategoryTrendVO> showTrend(ProductCategoryDTO dto);
 
-    List<String> getAreaList(Integer id,Integer productId);
+    List<String> getAreaList(GetAreaListDTO dto);
 
     List<String> getCompanyList(Integer id);
 }

+ 2 - 31
PAS/src/main/java/cn/cslg/pas/service/impl/ProductCategoryServiceImpl.java

@@ -320,38 +320,9 @@ public class ProductCategoryServiceImpl implements IProductCategoryService {
     }
 
     @Override
-    public List<String> getAreaList(Integer id,Integer productId) {
-        //存储所有产品的营销数据
-        List<ProductMarketData> marketData = new ArrayList<>();
+    public List<String> getAreaList(GetAreaListDTO dto) {
         List<String> areaList = new ArrayList<>();
-        List<Integer> productIds = new ArrayList<>();
-        if(productId==null) {
-            //根据架构id获得产品
-            LambdaQueryWrapper<Product> productWrapper = new LambdaQueryWrapper<>();
-            productWrapper.eq(Product::getProductCategoryId, id);
-            List<Product> products = productService.list(productWrapper);
-
-            if (products.size() != 0) {
-                productIds = products.stream().map(Product::getId).collect(Collectors.toList());
-            }
-        }
-        else {
-            productIds=Arrays.asList(productId);
-        }
-        if (productIds.size() > 0) {
-            //根据产品Id获得产品营销数据
-            LambdaQueryWrapper<ProductMarketData> market = new LambdaQueryWrapper<>();
-            market.in(ProductMarketData::getProductId, productIds);
-            marketData = productMarketDataIService.list(market);
-        }
-
-        marketData.forEach(
-                item -> {
-                    if (!areaList.contains(item.getSaleArea())) {
-                        areaList.add(item.getSaleArea());
-                    }
-                }
-        );
+        areaList = productCategoryMapper.getAreaList(dto);
         return areaList;
     }
 

+ 11 - 28
PAS/src/main/java/cn/cslg/pas/service/impl/ProductMarketDataServiceImpl.java

@@ -207,34 +207,17 @@ public class ProductMarketDataServiceImpl extends ServiceImpl<ProductMarketDataM
      */
     @Override
     public List<ProductMarketDataTrendVO> showTrend(ProductMarketDataDTO dto) {
-
-        //传入的营销地区不为空(查询出来的数据要根据地区分类,)
-        if(dto.getSaleArea() != null && dto.getSaleArea() != "") {
-            if(dto.getTimeUnit() == 2){//按照年份返回营销数据
-                List<ProductMarketDataTrendVO> list= productMarketDataMapper.queryByYear(dto.getProductId(), dto.getSaleArea());
-                return list;
-            }else if(dto.getTimeUnit() == 1 ){//按照季度返回营销数据
-                List<ProductMarketDataTrendVO> list= productMarketDataMapper.queryBySeason(dto.getProductId(), dto.getSaleArea());
-                return list;
-            }else if(dto.getTimeUnit() == null||dto.getTimeUnit() == 0 ){//按照月份返回营销数据
-                List<ProductMarketDataTrendVO> list= productMarketDataMapper.queryByMonth(dto.getProductId(), dto.getSaleArea());
-                return list;
-            }else{
-                return null;
-            }
-        }else{//未传入的营销地区,所查询出来的数据需要合并
-            if(dto.getTimeUnit() == 2){//按照年份返回营销数据
-                List<ProductMarketDataTrendVO> list= productMarketDataMapper.queryByYear2(dto.getProductId(), dto.getSaleArea());
-                return list;
-            }else if(dto.getTimeUnit() == 1 ){//按照季度返回营销数据
-                List<ProductMarketDataTrendVO> list= productMarketDataMapper.queryBySeason2(dto.getProductId(), dto.getSaleArea());
-                return list;
-            }else if(dto.getTimeUnit() == null||dto.getTimeUnit() == 0){//按照月份返回营销数据
-                List<ProductMarketDataTrendVO> list= productMarketDataMapper.queryByMonth2(dto.getProductId(), dto.getSaleArea());
-                return list;
-            }else{
-                return null;
-            }
+        if(dto.getTimeUnit() == 2){//按照年份返回营销数据
+            List<ProductMarketDataTrendVO> list= productMarketDataMapper.queryByYear(dto.getProductId(), dto.getSaleArea());
+            return list;
+        }else if(dto.getTimeUnit() == 1 ){//按照季度返回营销数据
+            List<ProductMarketDataTrendVO> list= productMarketDataMapper.queryBySeason(dto.getProductId(), dto.getSaleArea());
+            return list;
+        }else if(dto.getTimeUnit() == null||dto.getTimeUnit() == 0 ){//按照月份返回营销数据
+            List<ProductMarketDataTrendVO> list= productMarketDataMapper.queryByMonth(dto.getProductId(), dto.getSaleArea());
+            return list;
+        }else{
+            return null;
         }
     }
 }

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

@@ -47,7 +47,6 @@
                 <if test="saleArea !=null and saleArea != ''">
                     AND sale_area = #{saleArea}
                 </if>
-
         GROUP BY market_date
     </select>
     <!--传入了地区-->

+ 39 - 0
PAS/src/main/resources/mapper/ProductCategoryMapper.xml

@@ -98,4 +98,43 @@
         <result column="picture" property="picture"/>
     </resultMap>
 
+    <!--根据产品id、架构id和专利号集合三者其一查询地区集合-->
+    <resultMap id="getAreaListMap" type="String">
+        <result column="sale_area" property="saleArea"/>
+    </resultMap>
+
+
+    <select id="getAreaList" resultMap="getAreaListMap">
+        SELECT DISTINCT sale_area
+        FROM product_market_data
+        WHERE
+          <if test="productId != null and productId != ''">
+              product_id = #{productId}
+          </if>
+          <if test="categoryId !=null and categoryId != ''">
+              product_id
+              IN(
+              SELECT id
+              FROM product
+              WHERE
+              product_category_id = #{categoryId})
+          </if>
+          <if test="patentNoList != null and patentNoList.size() > 0 ">
+            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>
+            )
+          </if>
+    </select>
 </mapper>

+ 11 - 30
PAS/src/main/resources/mapper/ProductMarketDataMapper.xml

@@ -109,7 +109,6 @@
         <result column="custom_license_rate" property="customLicenseRate"/>
     </resultMap>
 
-
     <resultMap id="queryByDateMap" type="cn.cslg.pas.common.model.vo.ProductMarketDataTrendVO">
         <result column="market_date" property="marketDate"/>
         <result column="sale_total_money" property="saleTotalMoney"/>
@@ -119,7 +118,10 @@
         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 = #{productId} AND saleArea = #{saleArea}
+        WHERE product_id = #{productId}
+        <if test="saleArea != null and saleArea != ''">
+            AND sale_Area = #{saleArea}
+        </if>
         GROUP BY market_date
     </select>
 
@@ -128,7 +130,10 @@
                       '第',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 = #{productId} AND saleArea = #{saleArea}
+        WHERE product_id = #{productId}
+        <if test="saleArea != null and saleArea != ''">
+            AND sale_Area = #{saleArea}
+        </if>
         GROUP BY market_date
     </select>
 
@@ -137,34 +142,10 @@
                       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 = #{productId} AND saleArea = #{saleArea}
-        GROUP BY market_date
-    </select>
-
-    <select id="queryByYear2" 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 = #{productId}
+        <if test="saleArea != null and saleArea != ''">
+            AND sale_Area = #{saleArea}
+        </if>
         GROUP BY market_date
     </select>
-
-    <select id="queryBySeason2" 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
-        FROM product_market_data
-        WHERE product_id = #{productId}
-        GROUP BY market_date
-    </select>
-
-    <select id="queryByMonth2" 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 = #{productId}
-        GROUP BY market_date
-    </select>
-
 </mapper>