提交 aaa2d5dd authored 作者: 000516's avatar 000516 提交者: Coding

旺店通门店维护、同步商品系列与口味、创建销售每日明细表以平台维度进行日期类数据的计算

Merge Request: 旺店通门店维护、同步商品系列与口味、创建销售每日明细表以平台维度进行日期类数据的计算 Created By: @李秋林 Accepted By: @李秋林 URL: https://g-pkkp8204.coding.net/p/wangxiaolu-sfa/d/wangxiaolu-link-module-bi/git/merge/45?initial=true
package com.link.bi.config.advice;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sfa.common.core.domain.R;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
/**
* @author : liqiulin
* @date : 2024-10-28 17
* @describe :自动封装
*/
@RestControllerAdvice
public class ControllerResponseAdvice implements ResponseBodyAdvice<Object>{
/**
* response是R类型或者注释了NotControllerResponseAdvice都不进行包装
*/
@Override
public boolean supports(MethodParameter methodParameter, Class converterType) {
// if (methodParameter.getParameterType().isAssignableFrom(AjaxResult.class)) {
// return false;
// }
return !methodParameter.getParameterType().isAssignableFrom(R.class);
}
@Override
public Object beforeBodyWrite(Object body, MethodParameter methodParameter, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
// String类型不能直接包装
if (methodParameter.getGenericParameterType().equals(String.class)) {
ObjectMapper objectMapper = new ObjectMapper();
try {
// 将数据包装在ResultVo里后转换为json串进行返回
return objectMapper.writeValueAsString(R.ok(body));
} catch (JsonProcessingException e) {
throw new RuntimeException();
}
}
// 包装成R返回
return R.ok(body);
}
}
package com.link.bi.config.mysql;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author : liqiulin
* @date : 2024-04-25 13
* @describe :
*/
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
\ No newline at end of file
package com.link.bi.controller.core;
import com.link.bi.pojo.request.EcStoreVo;
import com.link.bi.pojo.response.EcStoreDto;
import com.link.bi.service.IEcStoreService;
import com.sfa.common.log.annotation.Log;
import com.sfa.common.log.enums.BusinessType;
import com.sfa.common.security.annotation.RequiresPermissions;
import com.sfa.common.security.utils.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* @author : liqiulin
* @date : 2024-11-20 15
* @describe :
*/
@RestController
@RequestMapping("/store/core")
public class EcStoreCoreController {
@Autowired
IEcStoreService ecStoreService;
/**
* 新增电商-店铺
*/
@RequiresPermissions("bi:store")
@Log(title = "电商-店铺", businessType = BusinessType.INSERT)
@PostMapping
public void add(@RequestBody @Validated EcStoreVo storeVo)
{
EcStoreDto dto = new EcStoreDto();
BeanUtils.copyProperties(storeVo,dto);
dto.setCreateBy(SecurityUtils.getUsername());
dto.setCreateUserId(SecurityUtils.getUserId());
ecStoreService.addStore(dto);
}
/**
* 修改电商-店铺
*/
@RequiresPermissions("bi:store")
@Log(title = "电商-店铺", businessType = BusinessType.UPDATE)
@PutMapping
public void edit(@RequestBody @Validated EcStoreVo storeVo)
{
EcStoreDto dto = new EcStoreDto();
BeanUtils.copyProperties(storeVo,dto);
dto.setUpdateBy(SecurityUtils.getUsername());
dto.setUpdateUserId(SecurityUtils.getUserId());
ecStoreService.editStore(dto);
}
}
package com.link.bi.controller.query;
import com.link.bi.pojo.request.EcStoreVo;
import com.link.bi.service.IEcStoreService;
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;
/**
* @author : liqiulin
* @date : 2024-11-20 15
* @describe :
*/
@RestController
@RequestMapping("/store/query")
public class EcStoreQueryController {
@Autowired
IEcStoreService ecStoreService;
/**
* 查询电商-店铺列表
*/
@RequiresPermissions("bi:store:list")
@GetMapping("/list")
public PageInfo list(EcStoreVo ecStoreVo)
{
return ecStoreService.selectPage(ecStoreVo);
}
/**
* 导出电商-店铺列表
*/
// @RequiresPermissions("bi:store:list")
// @Log(title = "电商-店铺", businessType = BusinessType.EXPORT)
// @PostMapping("/export")
// public void export(HttpServletResponse response, EcStore ecStore)
// {
// List<EcStore> list = ecStoreService.selectEcStoreList(ecStore);
// ExcelUtil<EcStore> util = new ExcelUtil<EcStore>(EcStore.class);
// util.exportExcel(response, list, "电商-店铺数据");
// }
/**
* 获取电商-店铺详细信息
*/
// @RequiresPermissions("bi:store:list")
// @GetMapping(value = "/{storeId}")
// public AjaxResult getInfo(@PathVariable("storeId") Long storeId)
// {
// return success(ecStoreService.selectEcStoreByStoreId(storeId));
// }
}
package com.link.bi.controller.query;
import com.link.bi.pojo.request.ProductVo;
import com.link.bi.service.IProductService;
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;
import java.util.List;
/**
* @author : liqiulin
* @date : 2024-11-22 16
* @describe :
*/
@RestController
@RequestMapping("/prd/query")
public class PrdQueryController {
@Autowired
IProductService productService;
/**
* 查询商品系列列表
*/
@RequiresPermissions("bi:product:list")
@GetMapping("/series")
public List seriesList(){
return productService.seriesList();
}
@RequiresPermissions("bi:product:list")
@GetMapping()
public PageInfo productPage(ProductVo productVo){
return productService.productPage(productVo);
}
}
package com.link.bi.controller.query;
import com.link.bi.pojo.request.MarketSummaryVo;
import com.link.bi.pojo.response.MarketSummaryDto;
import com.link.bi.service.ISummaryMarketDailyDetailService;
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;
import java.util.List;
/**
* @author : liqiulin
* @date : 2024-11-21 17
* @describe : 根据每日销售明细表进行汇总数据
*/
@RestController
@RequestMapping("/market/detail")
public class SummaryMarketDailyDetailController {
@Autowired
ISummaryMarketDailyDetailService summaryService;
/**
* 汇总到日期维度
*/
@RequiresPermissions("bi:store:list")
@GetMapping("/sum_d")
public List<MarketSummaryDto> marketSummary(MarketSummaryVo summaryVo){
return summaryService.marketSummary(summaryVo);
}
}
package com.link.bi.domain.dao;
import com.link.bi.domain.wq.MarketDetailWq;
import com.link.bi.pojo.response.MarketSummaryDto;
import java.util.List;
/**
* @author : liqiulin
* @date : 2024-11-21 16
* @describe :
*/
public interface IEcMarketDailyDetailDao {
/**
* 平台维度汇总
* YTD、MTD、近7日、昨日
*/
List<MarketSummaryDto> summaryByPlatform(MarketDetailWq mqw);
}
package com.link.bi.domain.dao;
import com.link.bi.domain.wq.EcStoreWq;
import com.link.bi.pojo.response.EcStoreDto;
import com.sfa.common.core.web.domain.PageInfo;
/**
* @author : liqiulin
* @date : 2024-11-20 16
* @describe :
*/
public interface IEcStoreDao {
PageInfo selectPage(EcStoreWq wq);
void add(EcStoreDto dto);
void editStore(EcStoreDto dto);
}
package com.link.bi.domain.dao;
import com.link.bi.domain.wq.ProductWq;
import com.sfa.common.core.web.domain.PageInfo;
import java.util.List;
/**
* @author : liqiulin
* @date : 2024-11-22 16
* @describe :
*/
public interface IProductDao {
List selectSeriesList();
PageInfo productPage(ProductWq qw);
}
package com.link.bi.domain.dao.impl;
import com.link.bi.domain.dao.IEcMarketDailyDetailDao;
import com.link.bi.domain.mapper.EcMarketDailyDetailMapper;
import com.link.bi.domain.wq.MarketDetailWq;
import com.link.bi.pojo.response.MarketSummaryDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author : liqiulin
* @date : 2024-11-21 16
* @describe :
*/
@Service
public class EcMarketDailyDetailDaoImpl implements IEcMarketDailyDetailDao {
@Autowired
EcMarketDailyDetailMapper mapper;
/**
* 平台维度汇总
* YTD、MTD、近7日、昨日
*/
@Override
public List<MarketSummaryDto> summaryByPlatform(MarketDetailWq mqw) {
return mapper.summaryByPlatform(mqw);
}
}
package com.link.bi.domain.dao.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.link.bi.domain.dao.IEcStoreDao;
import com.link.bi.domain.entity.EcStore;
import com.link.bi.domain.mapper.EcStoreMapper;
import com.link.bi.domain.wq.EcStoreWq;
import com.link.bi.pojo.response.EcStoreDto;
import com.sfa.common.core.enums.ECode;
import com.sfa.common.core.exception.WXLSQLException;
import com.sfa.common.core.web.domain.PageInfo;
import com.sfa.common.core.web.page.TableSupport;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
/**
* @author : liqiulin
* @date : 2024-11-20 16
* @describe :
*/
@Service
public class EcStoreDaoImpl implements IEcStoreDao {
@Autowired
EcStoreMapper ecStoreMapper;
@Override
public PageInfo selectPage(EcStoreWq wq) {
LambdaQueryWrapper<EcStore> qWrapper = builderWq(wq);
Page<EcStore> page = ecStoreMapper.selectPage(TableSupport.pageI(), qWrapper);
PageInfo pageInfo = new PageInfo<>(page);
return pageInfo;
}
@Override
public void add(EcStoreDto dto) {
try {
EcStore entity = new EcStore();
BeanUtils.copyProperties(dto, entity);
ecStoreMapper.insert(entity);
} catch (Exception e) {
String eMsg = e.getCause().getMessage();
if (eMsg.contains("for key 'store_code_unique'") || eMsg.contains("for key 'store_name_unique'")) {
throw new WXLSQLException(ECode.DB_TABLE_UNIQUE_EXIST, "旺店通店铺");
}
}
}
@Override
public void editStore(EcStoreDto dto) {
try {
EcStore entity = new EcStore();
BeanUtils.copyProperties(dto, entity);
ecStoreMapper.updateById(entity);
} catch (Exception e) {
String eMsg = e.getCause().getMessage();
if (eMsg.contains("for key 'store_code_unique'") || eMsg.contains("for key 'store_name_unique'")) {
throw new WXLSQLException(ECode.DB_TABLE_UNIQUE_EXIST, "旺店通店铺");
}
}
}
private LambdaQueryWrapper<EcStore> builderWq(EcStoreWq wq) {
LambdaQueryWrapper<EcStore> wrapper = new LambdaQueryWrapper<>();
if (Objects.nonNull(wq.getPlatformId())) {
wrapper.eq(EcStore::getPlatformId, wq.getPlatformId());
}
if (Objects.nonNull(wq.getStatus())) {
wrapper.eq(EcStore::getStatus, wq.getStatus());
}
if (StringUtils.isNotBlank(wq.getStoreNameLike())) {
wrapper.like(EcStore::getStoreName, wq.getStoreNameLike());
}
return wrapper;
}
}
package com.link.bi.domain.dao.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.link.bi.domain.dao.IProductDao;
import com.link.bi.domain.entity.ProInfo;
import com.link.bi.domain.mapper.ProInfoMapper;
import com.link.bi.domain.mapper.ProSeriesMapper;
import com.link.bi.domain.wq.ProductWq;
import com.sfa.common.core.enums.StatusType;
import com.sfa.common.core.web.domain.PageInfo;
import com.sfa.common.core.web.page.TableSupport;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @author : liqiulin
* @date : 2024-11-22 16
* @describe :
*/
@Service
public class ProductDaoImpl implements IProductDao {
@Autowired
ProInfoMapper proInfoMapper;
@Autowired
ProSeriesMapper proSeriesMapper;
@Override
public List selectSeriesList() {
List<Map<String, Object>> maps = proSeriesMapper.selectListByStatus(StatusType.VALID.getType());
return maps;
}
@Override
public PageInfo productPage(ProductWq pqw) {
LambdaQueryWrapper<ProInfo> qw = new LambdaQueryWrapper<>();
if (Objects.nonNull(pqw.getSeriesId())){
qw.eq(ProInfo::getSeriesId,pqw.getSeriesId());
}
if (StringUtils.isNotBlank(pqw.getPrdCode())){
qw.eq(ProInfo::getPrdCode,pqw.getPrdCode());
}
if (StringUtils.isNotBlank(pqw.getPrdNameLike())){
qw.like(ProInfo::getPrdName,pqw.getPrdNameLike());
}
Page<ProInfo> page = proInfoMapper.selectPage(TableSupport.pageI(), qw);
return new PageInfo<>(page);
}
}
package com.link.bi.domain.wq;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author : liqiulin
* @date : 2024-11-20 16
* @describe :
*/
@Data
@Accessors(chain = true)
public class EcStoreWq {
private String storeNameLike;
/**
* 平台Id - 字典:销售平台
*/
private Integer platformId;
/**
* 0正常(默认),1停用
*/
private Integer status;
}
package com.link.bi.domain.wq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* @author : liqiulin
* @date : 2024-11-21 17
* @describe :
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class MarketDetailWq {
/**
* 年份
*/
private Integer year;
/**
* 月份
*/
private Integer month;
/**
* 指定截止日期,默认昨天
*/
private Date date;
/**
* 货品品类id
* 带汤去骨、礼盒、虎皮凤爪……
*/
private Integer seriesId;
/**
* 商品/货品编码
* |礼盒-2025小抓财手|、|虎皮凤爪-香辣400g|、|牛肉豆堡-卤香120g|……
* */
private String prdCode;
}
package com.link.bi.domain.wq;
import lombok.Data;
/**
* @author : liqiulin
* @date : 2024-11-22 17
* @describe :
*/
@Data
public class ProductWq {
private String prdCode;
private String prdNameLike;
private Integer seriesId;
}
package com.link.bi.pojo.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @author : liqiulin
* @date : 2024-11-20 16
* @describe :
*/
@Data
public class EcStoreVo {
/**
* 店铺id
*/
private Integer storeId;
/**
* 旺店通店铺编码
*/
@NotBlank(message = "旺店通-店铺编码不可为空")
private String storeCode;
/**
* 店铺名称
*/
@NotBlank(message = "店铺名称不可为空")
private String storeName;
/**
* 渠道
*/
@NotNull(message = "请填写渠道")
private Integer channelId;
/**
* 1 电商; 2 线下;
*/
private String channel;
/**
* 平台
*/
@NotNull(message = "请填写平台")
private Integer platformId;
/**
* 1 天猫; 2 抖音; 3 拼多多; 4 京东; 5 私域; 6 分销; 7 线下; 8 样品; 9 团购; 10 其他;
*/
private String platform;
/**
* 0正常(默认),1停用
*/
private Integer status;
}
package com.link.bi.pojo.request;
import lombok.Data;
import java.util.Date;
/**
* @author : liqiulin
* @date : 2024-11-21 17
* @describe :
*/
@Data
public class MarketSummaryVo {
/**
* 指定截止日期,默认昨天
*/
private Date date;
/**
* 货品品类id
* 带汤去骨、礼盒、虎皮凤爪……
*/
private Integer seriesId;
/**
* 商品/货品编码
* |礼盒-2025小抓财手|、|虎皮凤爪-香辣400g|、|牛肉豆堡-卤香120g|……
* */
private String prdCode;
public boolean isOnlyPlatform() {
return seriesId == null && prdCode == null;
}
}
package com.link.bi.pojo.request;
import lombok.Data;
/**
* @author : liqiulin
* @date : 2024-11-22 17
* @describe :
*/
@Data
public class ProductVo {
private String prdCode;
private String prdName;
private Integer seriesId;
}
package com.link.bi.pojo.response;
import lombok.Data;
/**
* @author : liqiulin
* @date : 2024-11-20 16
* @describe :
*/
@Data
public class EcStoreDto {
/**
* 店铺id
*/
private Integer storeId;
/**
* 旺店通店铺编码
*/
private String storeCode;
/**
* 店铺名称
*/
private String storeName;
/**
* 渠道
*/
private Integer channelId;
/**
* 1 电商; 2 线下;
*/
private String channel;
/**
* 平台
*/
private Integer platformId;
/**
* 1 天猫; 2 抖音; 3 拼多多; 4 京东; 5 私域; 6 分销; 7 线下; 8 样品; 9 团购; 10 其他;
*/
private String platform;
/**
* 0正常,1停用
*/
private Integer status;
/**
* 创建者
*/
private String createBy;
/**
* 创建人UserID
*/
private Long createUserId;
/**
* 更新者
*/
private String updateBy;
/**
* 修改人UserID
*/
private Long updateUserId;
}
package com.link.bi.pojo.response;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
/**
* @author : liqiulin
* @date : 2024-11-21 16
* @describe : 电商数据汇总返回DTO
*/
@Data
@Accessors(chain = true)
public class MarketSummaryDto {
// 平台
private Integer platformId;
// 平台
private String platform;
private BigDecimal targetSaleSum;
// 实际销售量-Y
private BigDecimal saleCountY;
// 实际销售额-Y
private BigDecimal saleSumY;
// 实际销售量-M
private BigDecimal saleCountM;
// 实际销售额-M
private BigDecimal saleSumM;
// 实际销售量-W
private BigDecimal saleCountW;
// 实际销售额-W
private BigDecimal saleSumW;
// 实际销售量-Ys
private BigDecimal saleCountYs;
// 实际销售额-Ys
private BigDecimal saleSumYs;
}
package com.link.bi.service;
import com.link.bi.pojo.request.EcStoreVo;
import com.link.bi.pojo.response.EcStoreDto;
import com.sfa.common.core.web.domain.PageInfo;
/**
* @author : liqiulin
* @date : 2024-11-20 15
* @describe :
*/
public interface IEcStoreService {
PageInfo selectPage(EcStoreVo ecStoreVo);
void addStore(EcStoreDto dto);
void editStore(EcStoreDto dto);
}
package com.link.bi.service;
import com.link.bi.pojo.request.ProductVo;
import com.sfa.common.core.web.domain.PageInfo;
import java.util.List;
/**
* @author : liqiulin
* @date : 2024-11-22 16
* @describe :
*/
public interface IProductService {
List seriesList();
PageInfo productPage(ProductVo productVo);
}
package com.link.bi.service;
import com.link.bi.pojo.request.MarketSummaryVo;
import com.link.bi.pojo.response.MarketSummaryDto;
import java.util.List;
/**
* @author : liqiulin
* @date : 2024-11-21 17
* @describe :
*/
public interface ISummaryMarketDailyDetailService {
List<MarketSummaryDto> marketSummary(MarketSummaryVo summaryVo);
}
package com.link.bi.service.impl;
import com.link.bi.domain.dao.IEcStoreDao;
import com.link.bi.domain.wq.EcStoreWq;
import com.link.bi.pojo.request.EcStoreVo;
import com.link.bi.pojo.response.EcStoreDto;
import com.link.bi.service.IEcStoreService;
import com.sfa.common.core.web.domain.PageInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author : liqiulin
* @date : 2024-11-20 15
* @describe :
*/
@Service
public class EcStoreServiceImpl implements IEcStoreService {
@Autowired
IEcStoreDao ecStoreDao;
@Override
public PageInfo selectPage(EcStoreVo ecStoreVo) {
EcStoreWq wq = new EcStoreWq();
BeanUtils.copyProperties(ecStoreVo,wq);
wq.setStoreNameLike(ecStoreVo.getStoreName());
return ecStoreDao.selectPage(wq);
}
@Override
public void addStore(EcStoreDto dto) {
ecStoreDao.add(dto);
}
@Override
public void editStore(EcStoreDto dto) {
ecStoreDao.editStore(dto);
}
}
package com.link.bi.service.impl;
import com.link.bi.domain.dao.IProductDao;
import com.link.bi.domain.wq.ProductWq;
import com.link.bi.pojo.request.ProductVo;
import com.link.bi.service.IProductService;
import com.sfa.common.core.web.domain.PageInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author : liqiulin
* @date : 2024-11-22 16
* @describe :
*/
@Service
public class ProductServiceImpl implements IProductService {
@Autowired
IProductDao productDao;
@Override
public List seriesList() {
return productDao.selectSeriesList();
}
@Override
public PageInfo productPage(ProductVo productVo) {
ProductWq qw = new ProductWq();
BeanUtils.copyProperties(productVo,qw);
qw.setPrdNameLike(productVo.getPrdName());
return productDao.productPage(qw);
}
}
package com.link.bi.service.impl;
import cn.hutool.core.date.DateUtil;
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.ISummaryMarketDailyDetailService;
import com.sfa.common.core.utils.DateUtils;
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;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author : liqiulin
* @date : 2024-11-21 17
* @describe :
*/
@Service
public class SummaryMarketDailyDetailImpl implements ISummaryMarketDailyDetailService {
@Autowired
IEcMarketDailyDetailDao ecMarketDailyDetailDao;
@Autowired
RedisService redisService;
@Override
public List<MarketSummaryDto> marketSummary(MarketSummaryVo summaryVo) {
MarketDetailWq mqw = new MarketDetailWq();
BeanUtils.copyProperties(summaryVo, mqw);
Date date = mqw.getDate();
mqw.setYear(DateUtil.year(date));
mqw.setMonth(DateUtil.month(date) + 1);
List<MarketSummaryDto> marketSummaryDtos = ecMarketDailyDetailDao.summaryByPlatform(mqw);
// 获取平台-年目标数据:
boolean onlyPlatform = summaryVo.isOnlyPlatform();
Map<String, String> tMap = redisService.getCacheMap(RedisKeyBi.MARKET_PLATFORM_TARGETED);
for (MarketSummaryDto mDto : marketSummaryDtos) {
mDto.setTargetSaleSum(onlyPlatform ? new BigDecimal(tMap.get(mDto.getPlatformId() + "-" + mDto.getPlatform())) : BigDecimal.ZERO);
tMap.remove(mDto.getPlatformId() + "-" + mDto.getPlatform());
}
for (Map.Entry<String, String> entry : tMap.entrySet()) {
String[] split = StringUtils.split(entry.getKey(), "-");
MarketSummaryDto dto = new MarketSummaryDto().setPlatformId(Integer.valueOf(split[0]))
.setPlatform(split[1])
.setTargetSaleSum(onlyPlatform ? new BigDecimal(entry.getValue()) : BigDecimal.ZERO);
marketSummaryDtos.add(dto);
}
return marketSummaryDtos.stream().sorted(Comparator.comparing(MarketSummaryDto::getPlatformId)).collect(Collectors.toList());
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论