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

货需bi接口对接

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