瀏覽代碼

添加了报价单的数据

wxf 2 年之前
父節點
當前提交
cf23eb9a48

+ 1 - 1
hx-item/pom.xml

@@ -32,4 +32,4 @@
 
     </dependencies>
 
-</project>
+</project>

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

@@ -147,4 +147,6 @@ public class ProductInfoController {
         return productInfoService.productRanking(productInfoDto);
     }
 
+
+
 }

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

@@ -110,4 +110,6 @@ public interface ProductInfoService extends BaseService<ProductInfo> {
      * @param productInfoDto
      */
     Page<ProductInfoVo> productRanking(ProductInfoSelectDto productInfoDto);
+
+
 }

+ 2 - 0
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java

@@ -376,6 +376,8 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
     }
 
 
+
+
     //根据字典编码获取字典的数据
     private List<DictTenantDataVo> getDict(String code){
         DictTenantDataSelectDto dto = new DictTenantDataSelectDto();

File diff suppressed because it is too large
+ 0 - 0
hx-sale/src/main/java/com/fjhx/sale/a-json/DocumentsPdfApi.json


+ 12 - 1
hx-sale/src/main/java/com/fjhx/sale/controller/contract/ContractController.java

@@ -1,6 +1,8 @@
 package com.fjhx.sale.controller.contract;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
+import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.fjhx.sale.entity.contract.dto.ContractDto;
 import com.fjhx.sale.entity.contract.dto.ContractSelectDto;
 import com.fjhx.sale.entity.contract.po.Contract;
@@ -12,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -19,7 +22,7 @@ import java.util.List;
  * 外销合同表 前端控制器
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-17
  */
 @RestController
@@ -93,4 +96,12 @@ public class ContractController {
         return contractService.getContractPdfInfo(dto.getId());
     }
 
+    /**
+     * 销售趋势(数据看板-产品分析页面)
+     * @param productInfoDto
+     */
+    @PostMapping("/saleTrend")
+    public  List<Map<String, Object>> saleTrend(@RequestBody ProductInfoSelectDto productInfoDto) {
+        return contractService.saleTrend(productInfoDto);
+    }
 }

+ 2 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/po/Contract.java

@@ -246,4 +246,6 @@ public class Contract extends BasePo {
     @TableField(exist = false)
     private List<ContractProject> contractProjectList;
 
+
+
 }

+ 21 - 1
hx-sale/src/main/java/com/fjhx/sale/entity/contract/po/ContractProduct.java

@@ -16,7 +16,7 @@ import lombok.Setter;
  * 外销合同-产品
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-17
  */
 @Getter
@@ -79,4 +79,24 @@ public class ContractProduct extends BasePo {
      */
     @TableField(exist = false)
     private List<ObsFile> fileList;
+
+
+    /**
+     * 时间
+     */
+    @TableField(exist = false)
+    private String time;
+
+    /**
+     * 月销售量
+     */
+    @TableField(exist = false)
+    private BigDecimal contractQuantity;
+
+
+    /**
+     * 月销售额
+     */
+    @TableField(exist = false)
+    private BigDecimal contractAmount;
 }

+ 9 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractService.java

@@ -3,6 +3,8 @@ package com.fjhx.sale.service.contract;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.customer.entity.customer.dto.CustomerDto;
+import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
+import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.fjhx.sale.entity.contract.dto.ContractDto;
 import com.fjhx.sale.entity.contract.dto.ContractSelectDto;
 import com.fjhx.sale.entity.contract.po.Contract;
@@ -12,6 +14,7 @@ import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
 import com.ruoyi.common.core.service.BaseService;
 
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -84,4 +87,10 @@ public interface ContractService extends BaseService<Contract> {
      * @return
      */
     List<SaleQuotationVo> contractStatistics(QueryWrapper<Object> query);
+
+    /**
+     * 销售趋势(数据看板-产品分析页面)
+     * @param productInfoDto
+     */
+    List<Map<String, Object>> saleTrend(ProductInfoSelectDto productInfoDto);
 }

+ 49 - 4
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -1,14 +1,17 @@
 package com.fjhx.sale.service.contract.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.account.controller.utils.DateUtils;
 import com.fjhx.area.utils.AreaUtil;
 import com.fjhx.common.entity.corporation.po.Corporation;
 import com.fjhx.common.entity.documentary.bo.DocumentaryData;
@@ -18,6 +21,8 @@ import com.fjhx.common.service.documentary.GetDocumentaryBusinessTemplate;
 import com.fjhx.customer.entity.customer.dto.CustomerDto;
 import com.fjhx.customer.entity.customer.po.Customer;
 import com.fjhx.customer.service.customer.CustomerService;
+import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
+import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.sale.entity.contract.bo.ContractDocumentaryBo;
 import com.fjhx.sale.entity.contract.dto.ContractDto;
@@ -47,10 +52,7 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.stream.Collectors;
@@ -231,6 +233,49 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     }
 
     /**
+     * 销售趋势(数据看板-产品分析页面)
+     * @param productInfoDto
+     */
+    @Override
+    public  List<Map<String, Object>> saleTrend(ProductInfoSelectDto productInfoDto) {
+        //存放每月的月度销售额与月度销售量的列表
+        List<Map<String, Object>> list = new ArrayList<>();
+
+        List<String> monthList = DateUtils.getMonthBetweenDate(productInfoDto.getBeginTime(),productInfoDto.getEndTime());
+        //查询月度销售额与月度销售量
+        QueryWrapper<ContractProduct> query = Wrappers.query();
+        String beginTime = DateUtil.format(productInfoDto.getBeginTime(), "yyyy-MM");
+        String endTime = DateUtil.format(productInfoDto.getEndTime(), "yyyy-MM");
+        query.ge("DATE_FORMAT(create_time,'%Y-%m')",beginTime);
+        query.le("DATE_FORMAT(create_time,'%Y-%m')",endTime);
+        query.select("DATE_FORMAT(create_time,'%Y-%m') time,ifnull(SUM(amount),0) contractAmount," +
+                "ifnull(SUM(quantity),0) contractQuantity");
+        query.groupBy("time");
+        List<ContractProduct> contractList = contractProductService.list(query);
+        Map<String, List<ContractProduct>> contractMap = contractList.stream().collect(Collectors.groupingBy(ContractProduct::getTime));
+
+        //给每月赋值月度销售额与月度销售量的值
+        for (String month : monthList) {
+            //存放每月的月度销售额与月度销售量的值
+            Map<String,Object> map = new HashMap<>();
+            //赋值初使值
+            map.put("month",month);
+            map.put("contractAmount",new BigDecimal(0));
+            map.put("contractQuantity",new BigDecimal(0));
+
+            //赋值
+            List<ContractProduct> contracts = contractMap.get(month);
+            if (ObjectUtil.isNotEmpty(contracts)){
+                map.put("contractAmount",contracts.get(0).getContractAmount());
+                map.put("contractQuantity",contracts.get(0).getContractQuantity());
+            }
+            list.add(map);
+        }
+
+        return list;
+    }
+
+    /**
      * 赋值外销合同信息
      *
      * @param contractPdfInfoVo param

Some files were not shown because too many files changed in this diff