提交 4e2d5a39 authored 作者: 吕本才's avatar 吕本才

货需bi接口对接

上级 6973513a
......@@ -357,8 +357,7 @@ public class EcGoodsSupplyDemandListener extends AnalysisEventListener<Map<Integ
String startStr = titleHeaders.get(1)[j];
if (ObjectUtil.isNotEmpty(s1)) {
if (s1.length() == 4) {
if (ObjectUtil.isNotEmpty(startStr) &&
startStr.contains("月")) {
if (ObjectUtil.isNotEmpty(startStr) && startStr.contains("月")) {
// 如果是月份
return 2L;
} else {
......
package com.link.bi.controller.query;
import com.link.bi.pojo.request.EcStoreVo;
import com.link.bi.service.IEcGoodsSupplyDemandService;
import com.sfa.common.core.web.controller.BaseController;
import com.sfa.common.core.web.domain.PageInfo;
import com.sfa.common.security.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 电商-货物供需Controller
*
* @author admin
* @date 2024-12-05
*/
@RestController
@RequestMapping("/demand/core")
public class EcGoodsSupplyDemandQueryController extends BaseController
{
@Autowired
private IEcGoodsSupplyDemandService ecGoodsSupplyDemandService;
/**
* 导出电商-货物供需列表
*/
@RequiresPermissions("bi:demand:list")
@GetMapping("/list")
public PageInfo list(EcStoreVo ecStoreVo)
{
return ecGoodsSupplyDemandService.selectPage(ecStoreVo);
}
}
package com.link.bi.domain.dao;
import com.link.bi.domain.entity.EcGoodsSupplyDemand;
import com.link.bi.domain.wq.MarketDetailWq;
import java.util.List;
import java.util.Map;
/**
* @author : liqiulin
......@@ -15,4 +17,6 @@ public interface IEcGoodsSupplyDemandDao {
Integer deleteByYear(Integer year);
Map<String, Map<String, String>> getSupplyDemandYearAndMonth(MarketDetailWq mqw);
}
package com.link.bi.domain.dao.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.link.bi.domain.dao.IEcGoodsSupplyDemandDao;
import com.link.bi.domain.entity.EcGoodsSupplyDemand;
import com.link.bi.domain.mapper.EcGoodsSupplyDemandMapper;
import com.link.bi.domain.wq.MarketDetailWq;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author : liqiulin
......@@ -35,4 +41,40 @@ public class EcGoodsSupplyDemandDaoImpl implements IEcGoodsSupplyDemandDao {
return delete;
}
@Override
public Map<String, Map<String, String>> getSupplyDemandYearAndMonth(MarketDetailWq mqw) {
QueryWrapper<EcGoodsSupplyDemand> yearWrapper = new QueryWrapper<EcGoodsSupplyDemand>();
yearWrapper.lambda().eq(EcGoodsSupplyDemand::getYear, mqw.getYear())
.eq(EcGoodsSupplyDemand::getReportDateType, 1L)
// 年度
.isNotNull(EcGoodsSupplyDemand::getPlatformId)
.groupBy(EcGoodsSupplyDemand::getPlatformId, EcGoodsSupplyDemand::getYear);
yearWrapper.lambda().select(EcGoodsSupplyDemand::getPlatformId);
String columns = yearWrapper.getSqlSelect() + ",IFNULL(sum(supply_demand_amount),0) AS supplyDemandCount";
yearWrapper.select(columns);
List<Map<String, Object>> yearMaps = mapper.selectMaps(yearWrapper);
// List转Map<String,Map<String,Object>>
Map<String, String> yearMap = yearMaps.stream().collect(Collectors.toMap(k -> k.get("platform_id").toString(), v -> ObjectUtil.isNotEmpty(v.get("supplyDemandCount")) ? v.get("supplyDemandCount").toString() : "0"));
QueryWrapper<EcGoodsSupplyDemand> wrapper = new QueryWrapper<EcGoodsSupplyDemand>();
wrapper.lambda().eq(EcGoodsSupplyDemand::getYear, mqw.getYear())
.eq(EcGoodsSupplyDemand::getMonth, mqw.getMonth())
.eq(EcGoodsSupplyDemand::getReportDateType, 2L)
// 年度
.isNotNull(EcGoodsSupplyDemand::getPlatformId)
.groupBy(EcGoodsSupplyDemand::getPlatformId, EcGoodsSupplyDemand::getYear, EcGoodsSupplyDemand::getMonth);
wrapper.lambda().select(EcGoodsSupplyDemand::getPlatformId);
String monthColumns = yearWrapper.getSqlSelect() + ",IFNULL(sum(supply_demand_amount),0) AS supplyDemandCount";
wrapper.select(monthColumns);
// 月度
List<Map<String, Object>> montMaps = mapper.selectMaps(wrapper);
Map<String, String> monthMap = montMaps.stream().collect(Collectors.toMap(k -> k.get("platform_id").toString(), v -> ObjectUtil.isNotEmpty(v.get("supplyDemandCount")) ? v.get("supplyDemandCount").toString() : "0"));
Map<String, Map<String, String>> allMaps = new HashMap<>();
allMaps.put("year", yearMap);
allMaps.put("month", monthMap);
return allMaps;
}
}
......@@ -25,6 +25,10 @@ public class MarketSummaryDto {
private Date date;
private BigDecimal targetSaleSum;
// 货需年
private BigDecimal goodsSupplyDemandCountY;
// 货需月
private BigDecimal goodsSupplyDemandCountM;
// 实际销售量-Y
private BigDecimal saleCountY;
......
......@@ -3,9 +3,13 @@ package com.link.bi.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.link.bi.domain.entity.EcGoodsSupplyDemand;
import com.link.bi.domain.wq.MarketDetailWq;
import com.link.bi.pojo.request.EcStoreVo;
import com.sfa.common.core.web.domain.PageInfo;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
/**
* 电商-货物供需Service接口
......@@ -21,4 +25,8 @@ public interface IEcGoodsSupplyDemandService extends IService<EcGoodsSupplyDeman
void batchSaveEcGoodsSupplyDemands(List<EcGoodsSupplyDemand> demandList);
void deleteByYear(Integer year);
Map<String, Map<String, String>> getSupplyDemandYearAndMonth(MarketDetailWq mqw);
PageInfo selectPage(EcStoreVo ecStoreVo);
}
......@@ -8,9 +8,12 @@ import com.link.bi.config.listener.EcGoodsSupplyDemandListener;
import com.link.bi.domain.dao.IEcGoodsSupplyDemandDao;
import com.link.bi.domain.entity.EcGoodsSupplyDemand;
import com.link.bi.domain.mapper.EcGoodsSupplyDemandMapper;
import com.link.bi.domain.wq.MarketDetailWq;
import com.link.bi.pojo.request.EcStoreVo;
import com.link.bi.pojo.response.PrdInfoDto;
import com.link.bi.service.IEcGoodsSupplyDemandService;
import com.link.bi.service.IProductService;
import com.sfa.common.core.web.domain.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -20,6 +23,7 @@ import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 电商-货物供需Service业务层处理
......@@ -36,6 +40,12 @@ public class EcGoodsSupplyDemandServiceImpl extends ServiceImpl<EcGoodsSupplyDem
@Autowired
IProductService productService;
/**
* 导入数据
* @param multipartFile
* @param year
* @return
*/
@Override
public List<EcGoodsSupplyDemand> importData(MultipartFile multipartFile, Integer year) {
// 上传并解析excel
......@@ -44,7 +54,7 @@ public class EcGoodsSupplyDemandServiceImpl extends ServiceImpl<EcGoodsSupplyDem
List<PrdInfoDto> prdInfoDtos = productService.selectListByCodes(codeLists);
// 创建EcGoodsSupplyDemandListener实例
EcGoodsSupplyDemandListener listener = new EcGoodsSupplyDemandListener(this,prdInfoDtos,year);
EcGoodsSupplyDemandListener listener = new EcGoodsSupplyDemandListener(this, prdInfoDtos, year);
// 读取文件内容
EasyExcel.read(file, listener).ignoreEmptyRow(true)
.headRowNumber(4).sheet("电商-需求").doRead();
......@@ -53,8 +63,15 @@ public class EcGoodsSupplyDemandServiceImpl extends ServiceImpl<EcGoodsSupplyDem
return data;
}
/**
* 文件转File
* 参考https://blog.csdn.net/qq_42383970/article/details/120201524
*
* @param multipartFile
* @return
*/
public File transferToFile(MultipartFile multipartFile) {
// 选择用缓冲区来实现这个转换即使用java 创建的临时文件 使用 MultipartFile.transferto()方法 。
// 选择用缓冲区来实现这个转换即使用java 创建的临时文件 使用 MultipartFile.transferto()方法 。
File file = null;
try {
String originalFilename = multipartFile.getOriginalFilename();
......@@ -64,17 +81,14 @@ public class EcGoodsSupplyDemandServiceImpl extends ServiceImpl<EcGoodsSupplyDem
file.deleteOnExit();
} catch (IOException e) {
e.printStackTrace();
log.error(e.getMessage(),e);
log.error(e.getMessage(), e);
}
return file;
//————————————————
//
// 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
//
// 原文链接:https://blog.csdn.net/qq_42383970/article/details/120201524
}
// 批量保存
/**
* 批量保存
*/
@Override
public void batchSaveEcGoodsSupplyDemands(List<EcGoodsSupplyDemand> demandList) {
demandDao.batchSaveEcGoodsSupplyDemands(demandList);
......@@ -82,10 +96,27 @@ public class EcGoodsSupplyDemandServiceImpl extends ServiceImpl<EcGoodsSupplyDem
@Override
public void deleteByYear(Integer year) {
if (ObjectUtil.isEmpty(year)) {
year = DateUtil.thisYear();
if (ObjectUtil.isEmpty(year)) {
year = DateUtil.thisYear();
}
demandDao.deleteByYear(year);
}
/**
* bi报表查询
* @param mqw
* @return
*/
@Override
public Map<String, Map<String, String>> getSupplyDemandYearAndMonth(MarketDetailWq mqw) {
return demandDao.getSupplyDemandYearAndMonth(mqw);
}
@Override
public PageInfo selectPage(EcStoreVo ecStoreVo) {
return null;
}
}
......@@ -5,10 +5,10 @@ import com.link.bi.domain.dao.IEcMarketDailyDetailDao;
import com.link.bi.domain.wq.MarketDetailWq;
import com.link.bi.pojo.request.MarketSummaryVo;
import com.link.bi.pojo.response.MarketSummaryDto;
import com.link.bi.service.IEcGoodsSupplyDemandService;
import com.link.bi.service.ISummaryMarketDailyDetailService;
import com.sfa.common.redis.keys.RedisKeyBi;
import com.sfa.common.redis.service.RedisService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -29,7 +29,8 @@ public class SummaryMarketDailyDetailImpl implements ISummaryMarketDailyDetailSe
IEcMarketDailyDetailDao ecMarketDailyDetailDao;
@Autowired
RedisService redisService;
@Autowired
IEcGoodsSupplyDemandService supplyDemandService;
@Override
public Map marketSummary(MarketSummaryVo summaryVo) {
MarketDetailWq mqw = new MarketDetailWq();
......@@ -49,6 +50,12 @@ public class SummaryMarketDailyDetailImpl implements ISummaryMarketDailyDetailSe
mDto.setTargetSaleSum(onlyPlatform ? new BigDecimal(tMap.get(String.valueOf(mDto.getPlatformId()))) : BigDecimal.ZERO);
tMap.remove(String.valueOf(mDto.getPlatformId()));
}
// 获取平台-年度和月度的货需数据:
Map<String, Map<String, String>> supplyDemandYearAndMonthMap = supplyDemandService.getSupplyDemandYearAndMonth(mqw);
for (MarketSummaryDto mDto : marketSummaryDtos) {
mDto.setGoodsSupplyDemandCountY(onlyPlatform ? new BigDecimal(supplyDemandYearAndMonthMap.get("year").get(String.valueOf(mDto.getPlatformId()))) : BigDecimal.ZERO);
mDto.setGoodsSupplyDemandCountM(onlyPlatform ? new BigDecimal(supplyDemandYearAndMonthMap.get("month").get(String.valueOf(mDto.getPlatformId()))) : BigDecimal.ZERO);
}
for (Map.Entry<String, String> entry : tMap.entrySet()) {
String key = entry.getKey();
......@@ -56,7 +63,7 @@ public class SummaryMarketDailyDetailImpl implements ISummaryMarketDailyDetailSe
.setTargetSaleSum(onlyPlatform ? new BigDecimal(entry.getValue()) : BigDecimal.ZERO);
marketSummaryDtos.add(dto);
}
List<MarketSummaryDto> table = marketSummaryDtos.stream().sorted(Comparator.comparing(MarketSummaryDto::getPlatformId)).collect(Collectors.toList());
Map<Integer, List<MarketSummaryDto>> chart = chartDtos.stream().collect(Collectors.groupingBy(MarketSummaryDto::getPlatformId));
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论