Prechádzať zdrojové kódy

添加了产品看板

wxf 2 rokov pred
rodič
commit
94581cfd98

+ 3 - 3
hx-item/src/main/java/com/fjhx/item/controller/product/ProductInfoController.java

@@ -164,8 +164,8 @@ public class ProductInfoController {
      * @param productInfoDto
      */
     @PostMapping("/productDistribution")
-    public List<ProductInfo> productDistribution(@RequestBody ProductInfoDto productInfoDto) {
-       return productInfoService.productDistribution(productInfoDto);
+    public List<Map<String,Object>> productDistribution(@RequestBody ProductInfoDto productInfoDto) {
+        return productInfoService.productDistribution(productInfoDto);
     }
 
     /**
@@ -173,7 +173,7 @@ public class ProductInfoController {
      * @param productInfoDto
      */
     @PostMapping("/productTypeRanking")
-    public Page<ProductInfoVo> productTypeRanking(@RequestBody ProductInfoSelectDto productInfoDto) {
+    public List<Map<String,Object>> productTypeRanking(@RequestBody ProductInfoSelectDto productInfoDto) {
         return productInfoService.productTypeRanking(productInfoDto);
     }
 

+ 1 - 1
hx-item/src/main/java/com/fjhx/item/mapper/product/ProductInfoMapper.java

@@ -43,7 +43,7 @@ public interface ProductInfoMapper extends BaseMapper<ProductInfo> {
      * 产品类型排行(数据看板-产品分析页面)
      * @param query
      */
-    Page<ProductInfoVo>  productTypeRanking(@Param("page") Page<Object> page,@Param("ew") QueryWrapper<Object> query);
+    List<ProductInfoVo>  productTypeRanking(@Param("ew") QueryWrapper<Object> query);
 
     /**
      * 产品排行(数据看板-产品分析页面)

+ 2 - 2
hx-item/src/main/java/com/fjhx/item/service/product/ProductInfoService.java

@@ -122,13 +122,13 @@ public interface ProductInfoService extends BaseService<ProductInfo> {
      * 产品分布(数据看板-产品分析页面)
      * @param productInfoDto
      */
-    List<ProductInfo> productDistribution(ProductInfoDto productInfoDto);
+    List<Map<String,Object>> productDistribution(ProductInfoDto productInfoDto);
 
     /**
      * 产品类型排行(数据看板-产品分析页面)
      * @param productInfoDto
      */
-    Page<ProductInfoVo> productTypeRanking(ProductInfoSelectDto productInfoDto);
+    List<Map<String,Object>> productTypeRanking(ProductInfoSelectDto productInfoDto);
 
     /**
      * 产品排行(数据看板-产品分析页面)

+ 77 - 12
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java

@@ -40,6 +40,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -473,17 +474,47 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
      * @param productInfoDto
      */
     @Override
-    public List<ProductInfo> productDistribution(ProductInfoDto productInfoDto) {
+    public List<Map<String,Object>> productDistribution(ProductInfoDto productInfoDto) {
         if (ObjectUtil.isEmpty(productInfoDto) && ObjectUtil.isEmpty(productInfoDto.getBeginTime())
-                && StringUtils.isNotEmpty(productInfoDto.getEndTime())) {
-            throw new ServiceException("参数缺失:开始时间,结束时间不能为null");
+                && StringUtils.isNotEmpty(productInfoDto.getEndTime())){
+            throw  new ServiceException("参数缺失:开始时间,结束时间不能为null");
         }
+        //存放产品分布列表
+        List<Map<String,Object>> list = new ArrayList<>();
+
         QueryWrapper<ProductInfo> query = Wrappers.<ProductInfo>query();
-        query.select("count(*) count,type");
+        query.select("count(*) count,ifnull(type,999) type");
         query.groupBy("type");
         //查询每个类型的总计
         List<ProductInfo> productInfos = baseMapper.selectList(query);
-        return productInfos;
+        if (productInfos.size()==0){
+            new ArrayList<>();
+        }
+        Map<String, List<ProductInfo>>  productInfoMap= productInfos.stream().collect(Collectors.groupingBy(ProductInfo::getType));
+        //获取产品类型的字典数据
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        List<DictTenantDataVo> dictTenantDataVoList = getDict("product_type");
+        DynamicDataSourceContextHolder.poll();
+
+        if (dictTenantDataVoList.size()==0){
+            new ArrayList<>();
+        }
+
+        //赋值
+        for (DictTenantDataVo dictTenantDataVo : dictTenantDataVoList) {
+            Map<String,Object> map = new HashMap<>();
+            //初始化
+            map.put("type",dictTenantDataVo.getDictKey());
+            map.put("name",dictTenantDataVo.getDictValue());
+            map.put("count",0);
+
+            List<ProductInfo> productInfoList = productInfoMap.get(dictTenantDataVo.getDictKey());
+            if (ObjectUtil.isNotEmpty(productInfoList)){
+                map.put("count",productInfoList.get(0).getCount());
+            }
+            list.add(map);
+        }
+        return list;
     }
 
     /**
@@ -492,17 +523,51 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
      * @param productInfoDto
      */
     @Override
-    public Page<ProductInfoVo> productTypeRanking(ProductInfoSelectDto productInfoDto) {
+    public List<Map<String,Object>> productTypeRanking(ProductInfoSelectDto productInfoDto) {
+        //存放产品类型排行数据
+        List<Map<String,Object>> list = new ArrayList<>();
+
         QueryWrapper<Object> query = Wrappers.query();
-        query.ge("DATE_FORMAT(pc.create_time,'%Y-%m-%d')", productInfoDto.getBeginTime());
-        query.le("DATE_FORMAT(pc.create_time,'%Y-%m-%d')", productInfoDto.getEndTime());
-        query.eq(ObjectUtil.isNotEmpty(productInfoDto.getCountryId()), "bc.buy_country_id", productInfoDto.getCountryId());
-        sort(query, productInfoDto);
+        query.ge("DATE_FORMAT(pc.create_time,'%Y-%m-%d')",productInfoDto.getBeginTime());
+        query.le("DATE_FORMAT(pc.create_time,'%Y-%m-%d')",productInfoDto.getEndTime());
+        query.eq(ObjectUtil.isNotEmpty(productInfoDto.getCountryId()),"bc.buy_country_id",productInfoDto.getCountryId());
+        sort(query,productInfoDto);
         query.groupBy("pi.type");
-        Page<ProductInfoVo> productInfoVos = baseMapper.productTypeRanking(productInfoDto.getPage(), query);
-        return productInfoVos;
+        //查询产品类型排行数据
+        List<ProductInfoVo> productInfoVos = baseMapper.productTypeRanking(query);
+        if (productInfoVos.size()==0){
+            return list;
+        }
+        Map<String, List<ProductInfoVo>> productInfoVoMap = productInfoVos.stream().collect(Collectors.groupingBy(ProductInfoVo::getType));
+        //获取产品类型的字典数据
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        List<DictTenantDataVo> dictTenantDataVoList = getDict("product_type");
+        DynamicDataSourceContextHolder.poll();
+
+        //赋值
+        for (DictTenantDataVo dictTenantDataVo : dictTenantDataVoList) {
+            //初始化
+            Map<String,Object> map = new HashMap<>();
+            map.put("type",dictTenantDataVo.getDictKey());
+            map.put("name",dictTenantDataVo.getDictValue());
+            map.put("contractAmount",new BigDecimal(0));
+            map.put("contractQuantity",new BigDecimal(0));
+            map.put("purchaseAmount",new BigDecimal(0));
+            map.put("purchaseQuantity",new BigDecimal(0));
+            //赋值
+            List<ProductInfoVo> productInfoVos1 = productInfoVoMap.get(dictTenantDataVo.getDictKey());
+            if (ObjectUtil.isNotEmpty(productInfoVos1)){
+                map.put("contractAmount",productInfoVos1.get(0).getContractAmount());
+                map.put("contractQuantity",productInfoVos1.get(0).getContractQuantity());
+                map.put("purchaseAmount",productInfoVos1.get(0).getPurchaseAmount());
+                map.put("purchaseQuantity",productInfoVos1.get(0).getPurchaseQuantity());
+            }
+            list.add(map);
+        }
+        return list;
     }
 
+
     /**
      * 产品排行(数据看板-产品分析页面)
      *