|
@@ -3,9 +3,7 @@ package cn.cslg.pas.service.impl;
|
|
import cn.cslg.pas.common.JsonPage;
|
|
import cn.cslg.pas.common.JsonPage;
|
|
import cn.cslg.pas.common.model.PersonnelVO;
|
|
import cn.cslg.pas.common.model.PersonnelVO;
|
|
import cn.cslg.pas.common.model.dto.*;
|
|
import cn.cslg.pas.common.model.dto.*;
|
|
-import cn.cslg.pas.common.model.vo.ProductCategoryPictureVO;
|
|
|
|
-import cn.cslg.pas.common.model.vo.ProductCategoryTrendVO;
|
|
|
|
-import cn.cslg.pas.common.model.vo.ProductCategoryVO;
|
|
|
|
|
|
+import cn.cslg.pas.common.model.vo.*;
|
|
import cn.cslg.pas.common.utils.CacheUtils;
|
|
import cn.cslg.pas.common.utils.CacheUtils;
|
|
import cn.cslg.pas.common.utils.FileUtils;
|
|
import cn.cslg.pas.common.utils.FileUtils;
|
|
import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
|
|
import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
|
|
@@ -249,116 +247,57 @@ public class ProductCategoryServiceImpl implements IProductCategoryService {
|
|
log.info("删除产品类别完成");
|
|
log.info("删除产品类别完成");
|
|
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ //返回总的营销数据
|
|
@Override
|
|
@Override
|
|
public List<ProductCategoryTrendVO> showTrend(ProductCategoryDTO dto) {
|
|
public List<ProductCategoryTrendVO> showTrend(ProductCategoryDTO dto) {
|
|
- //存储各个产品信息和营销数据信息
|
|
|
|
|
|
+ //判断架构id是否有内容,没有的话直接返回null
|
|
|
|
+ if(dto.getCategoryId() == null && dto.getCategoryId() == 0) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ //存储各个产品信息和营销数据
|
|
List<ProductCategoryTrendVO> trendVOS = new ArrayList<>();
|
|
List<ProductCategoryTrendVO> trendVOS = new ArrayList<>();
|
|
- //存储所有产品的营销数据
|
|
|
|
- List<ProductMarketData> marketData = new ArrayList<>();
|
|
|
|
|
|
+ //存储所有产品营销数据
|
|
|
|
+ List<ProductMarketDataTrendVO> saleVOS = new ArrayList<>();
|
|
//存储所有
|
|
//存储所有
|
|
- ProductCategoryTrendVO trendAllVO = new ProductCategoryTrendVO();
|
|
|
|
- trendAllVO.setProductId(0);
|
|
|
|
-
|
|
|
|
- trendAllVO.setProductName("总产品");
|
|
|
|
- Map<String, Object> allMarketDataMap = new HashMap<>();
|
|
|
|
- //根据产品类别ID获得产品id和产品名称
|
|
|
|
- LambdaQueryWrapper<Product> productWrapper = new LambdaQueryWrapper<>();
|
|
|
|
- productWrapper.eq(Product::getProductCategoryId, dto.getCategoryId());
|
|
|
|
- if (dto.getCompanyName() != null && dto.getCompanyName() != "") {
|
|
|
|
- productWrapper.eq(Product::getCompanyName, dto.getCompanyName());
|
|
|
|
|
|
+ ProductCategoryTrendVO totalTrendVO = new ProductCategoryTrendVO();
|
|
|
|
+ totalTrendVO.setProductId(0);
|
|
|
|
+ totalTrendVO.setProductName("总产品");
|
|
|
|
+ //查询架构id返回的总体营销数据
|
|
|
|
+ List<ProductMarketDataTrendVO> totalSaleVOS = new ArrayList<>();
|
|
|
|
+ if (dto.getTimeUnit() == 2) {//按照年份返回营销数据
|
|
|
|
+ totalSaleVOS = productCategoryMapper.categoryQueryByYear(dto.getCategoryId(),dto.getCategoryArea(),dto.getCompanyName());
|
|
|
|
+ } else if (dto.getTimeUnit() == 1) {//按照季度返回营销数据
|
|
|
|
+ totalSaleVOS = productCategoryMapper.categoryQueryBySeason(dto.getCategoryId(),dto.getCategoryArea(),dto.getCompanyName());
|
|
|
|
+ } else if (dto.getTimeUnit() == null || dto.getTimeUnit() == 0) {//按照月份返回营销数据
|
|
|
|
+ totalSaleVOS = productCategoryMapper.categoryQueryByMonth(dto.getCategoryId(),dto.getCategoryArea(),dto.getCompanyName());
|
|
}
|
|
}
|
|
- List<Product> products = productService.list(productWrapper);
|
|
|
|
- if (products.size() != 0) {
|
|
|
|
- List<Integer> productIds = products.stream().map(Product::getId).collect(Collectors.toList());
|
|
|
|
- if (productIds.size() > 0) {
|
|
|
|
- //根据产品Id获得产品营销数据
|
|
|
|
- LambdaQueryWrapper<ProductMarketData> market = new LambdaQueryWrapper<>();
|
|
|
|
- market.in(ProductMarketData::getProductId, productIds);
|
|
|
|
- marketData = productMarketDataIService.list(market);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- for (Product product : products) {
|
|
|
|
|
|
+ totalTrendVO.setSaleVOS(totalSaleVOS);
|
|
|
|
+ trendVOS.add(totalTrendVO);
|
|
|
|
+ //根据传入的架构id、公司名称以及营销地区查询产品id
|
|
|
|
+ List<ProductIdAndNameVO> idNameVOS = new ArrayList<>();
|
|
|
|
+ idNameVOS = productCategoryMapper.queryProductIdAndNameByCategoryId(dto.getCategoryId(), dto.getCompanyName());
|
|
|
|
+ //返回根据架构id查询到的每个产品id的营销数据
|
|
|
|
+ for(ProductIdAndNameVO idNameVO:idNameVOS){
|
|
ProductCategoryTrendVO trendVO = new ProductCategoryTrendVO();
|
|
ProductCategoryTrendVO trendVO = new ProductCategoryTrendVO();
|
|
- trendVO.setProductId(product.getId());
|
|
|
|
- trendVO.setProductName(product.getProductName());
|
|
|
|
- //获得产品的营销数据
|
|
|
|
- // 如果地区不为空
|
|
|
|
- List<ProductMarketData> temMarketData = new ArrayList<>();
|
|
|
|
- if (dto.getCategoryArea() != null && dto.getCategoryArea() != "") {
|
|
|
|
- temMarketData = marketData.stream().filter(item -> item.getProductId().equals(product.getId()) && item.getSaleArea().equals(dto.getCategoryArea())).collect(Collectors.toList());
|
|
|
|
- } else {
|
|
|
|
- temMarketData = marketData.stream().filter(item -> item.getProductId().equals(product.getId())).collect(Collectors.toList());
|
|
|
|
- }
|
|
|
|
- Map<String, Object> marketDataMap = new HashMap<>();
|
|
|
|
- //营销数据遍历
|
|
|
|
- temMarketData.forEach(item -> {
|
|
|
|
- //获得营销数据的时间
|
|
|
|
- String date = item.getSaleTime();
|
|
|
|
- double saleCount = item.getSaleMoney();
|
|
|
|
- if (dto.getTimeUnit() == 1) {
|
|
|
|
- try {
|
|
|
|
- Date dateForm = new SimpleDateFormat("yyyy-MM").parse(date);
|
|
|
|
- Calendar ca = Calendar.getInstance();
|
|
|
|
- ca.setTime(dateForm);
|
|
|
|
- int month = ca.get(Calendar.MONTH);//第几个月
|
|
|
|
- int year = ca.get(Calendar.YEAR);//年份数值
|
|
|
|
- int season = (month - 1) / 3 + 1;
|
|
|
|
- date = year + "-" + season;
|
|
|
|
- } catch (ParseException e) {
|
|
|
|
- e.printStackTrace();
|
|
|
|
- }
|
|
|
|
- } else if (dto.getTimeUnit() == 2) {
|
|
|
|
- try {
|
|
|
|
- Date dateForm = new SimpleDateFormat("yyyy-MM").parse(date);
|
|
|
|
- Calendar ca = Calendar.getInstance();
|
|
|
|
- ca.setTime(dateForm);
|
|
|
|
- int year = ca.get(Calendar.YEAR);//年份数值
|
|
|
|
- date = year + "";
|
|
|
|
- } catch (ParseException e) {
|
|
|
|
- e.printStackTrace();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- //计算销售额
|
|
|
|
- if (marketDataMap.get(date) != null) {
|
|
|
|
- saleCount += Double.parseDouble(marketDataMap.get(date).toString());
|
|
|
|
- }
|
|
|
|
- marketDataMap.put(date, saleCount);
|
|
|
|
-
|
|
|
|
- //产品总体部分
|
|
|
|
- if (allMarketDataMap.get(date) != null) {
|
|
|
|
- saleCount += Double.parseDouble(allMarketDataMap.get(date).toString());
|
|
|
|
- }
|
|
|
|
- allMarketDataMap.put(date, saleCount);
|
|
|
|
- }
|
|
|
|
- );
|
|
|
|
- Set keyset = marketDataMap.keySet();
|
|
|
|
- List<ProductCategoryTrendVO.saleVO> saleVOS = new ArrayList<>();
|
|
|
|
- for (Object key : keyset) {
|
|
|
|
- ProductCategoryTrendVO.saleVO saleVO = new ProductCategoryTrendVO.saleVO();
|
|
|
|
- saleVO.setMarketDate(key.toString());
|
|
|
|
- saleVO.setSaleTotalMoney(Double.parseDouble(marketDataMap.get(key).toString()));
|
|
|
|
- saleVOS.add(saleVO);
|
|
|
|
|
|
+ trendVO.setProductId(idNameVO.getProductId());
|
|
|
|
+ trendVO.setProductName(idNameVO.getProductName());
|
|
|
|
+ List<ProductMarketDataTrendVO> temSaleVOS = new ArrayList<>();
|
|
|
|
+ if (dto.getTimeUnit() == 2) {//按照年份返回营销数据
|
|
|
|
+ temSaleVOS = productCategoryMapper.queryByYear(idNameVO.getProductId(),dto.getCategoryArea());
|
|
|
|
+ } else if (dto.getTimeUnit() == 1) {//按照季度返回营销数据
|
|
|
|
+ temSaleVOS = productCategoryMapper.queryBySeason(idNameVO.getProductId(),dto.getCategoryArea());
|
|
|
|
+ } else if (dto.getTimeUnit() == null || dto.getTimeUnit() == 0) {//按照月份返回营销数据
|
|
|
|
+ temSaleVOS = productCategoryMapper.queryByMonth(idNameVO.getProductId(),dto.getCategoryArea());
|
|
}
|
|
}
|
|
- trendVO.setSaleVOS(saleVOS);
|
|
|
|
|
|
+ trendVO.setSaleVOS(temSaleVOS);
|
|
trendVOS.add(trendVO);
|
|
trendVOS.add(trendVO);
|
|
}
|
|
}
|
|
- Set keyset = allMarketDataMap.keySet();
|
|
|
|
- List<ProductCategoryTrendVO.saleVO> saleVOS = new ArrayList<>();
|
|
|
|
- for (Object key : keyset) {
|
|
|
|
- ProductCategoryTrendVO.saleVO saleVO = new ProductCategoryTrendVO.saleVO();
|
|
|
|
- saleVO.setMarketDate(key.toString());
|
|
|
|
- saleVO.setSaleTotalMoney(Double.parseDouble(allMarketDataMap.get(key).toString()));
|
|
|
|
- saleVOS.add(saleVO);
|
|
|
|
- }
|
|
|
|
- trendAllVO.setSaleVOS(saleVOS);
|
|
|
|
- trendVOS.add(trendAllVO);
|
|
|
|
return trendVOS;
|
|
return trendVOS;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public List<String> getAreaList(GetAreaListDTO dto) {
|
|
public List<String> getAreaList(GetAreaListDTO dto) {
|
|
-
|
|
|
|
List<String> areaList = new ArrayList<>();
|
|
List<String> areaList = new ArrayList<>();
|
|
areaList = productCategoryMapper.getAreaList(dto);
|
|
areaList = productCategoryMapper.getAreaList(dto);
|
|
return areaList;
|
|
return areaList;
|