Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-link-module-bi
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-link-module-bi
Commits
96c22c9a
提交
96c22c9a
authored
11月 25, 2024
作者:
李秋林
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
旺店通门店维护、同步商品系列与口味、创建销售每日明细表以平台维度进行日期类数据的计算
上级
8cb8dcdc
显示空白字符变更
内嵌
并排
正在显示
26 个修改的文件
包含
987 行增加
和
0 行删除
+987
-0
ControllerResponseAdvice.java
...a/com/link/bi/config/advice/ControllerResponseAdvice.java
+47
-0
MybatisPlusConfig.java
...main/java/com/link/bi/config/mysql/MybatisPlusConfig.java
+23
-0
EcStoreCoreController.java
...va/com/link/bi/controller/core/EcStoreCoreController.java
+56
-0
EcStoreQueryController.java
.../com/link/bi/controller/query/EcStoreQueryController.java
+56
-0
PrdQueryController.java
...java/com/link/bi/controller/query/PrdQueryController.java
+43
-0
SummaryMarketDailyDetailController.java
.../controller/query/SummaryMarketDailyDetailController.java
+35
-0
IEcMarketDailyDetailDao.java
.../java/com/link/bi/domain/dao/IEcMarketDailyDetailDao.java
+20
-0
IEcStoreDao.java
src/main/java/com/link/bi/domain/dao/IEcStoreDao.java
+18
-0
IProductDao.java
src/main/java/com/link/bi/domain/dao/IProductDao.java
+18
-0
EcMarketDailyDetailDaoImpl.java
...m/link/bi/domain/dao/impl/EcMarketDailyDetailDaoImpl.java
+31
-0
EcStoreDaoImpl.java
...main/java/com/link/bi/domain/dao/impl/EcStoreDaoImpl.java
+80
-0
ProductDaoImpl.java
...main/java/com/link/bi/domain/dao/impl/ProductDaoImpl.java
+55
-0
EcStoreWq.java
src/main/java/com/link/bi/domain/wq/EcStoreWq.java
+25
-0
MarketDetailWq.java
src/main/java/com/link/bi/domain/wq/MarketDetailWq.java
+46
-0
ProductWq.java
src/main/java/com/link/bi/domain/wq/ProductWq.java
+15
-0
EcStoreVo.java
src/main/java/com/link/bi/pojo/request/EcStoreVo.java
+59
-0
MarketSummaryVo.java
src/main/java/com/link/bi/pojo/request/MarketSummaryVo.java
+35
-0
ProductVo.java
src/main/java/com/link/bi/pojo/request/ProductVo.java
+15
-0
EcStoreDto.java
src/main/java/com/link/bi/pojo/response/EcStoreDto.java
+72
-0
MarketSummaryDto.java
...main/java/com/link/bi/pojo/response/MarketSummaryDto.java
+47
-0
IEcStoreService.java
src/main/java/com/link/bi/service/IEcStoreService.java
+18
-0
IProductService.java
src/main/java/com/link/bi/service/IProductService.java
+18
-0
ISummaryMarketDailyDetailService.java
...com/link/bi/service/ISummaryMarketDailyDetailService.java
+15
-0
EcStoreServiceImpl.java
...ain/java/com/link/bi/service/impl/EcStoreServiceImpl.java
+42
-0
ProductServiceImpl.java
...ain/java/com/link/bi/service/impl/ProductServiceImpl.java
+37
-0
SummaryMarketDailyDetailImpl.java
...om/link/bi/service/impl/SummaryMarketDailyDetailImpl.java
+61
-0
没有找到文件。
src/main/java/com/link/bi/config/advice/ControllerResponseAdvice.java
0 → 100644
浏览文件 @
96c22c9a
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
);
}
}
src/main/java/com/link/bi/config/mysql/MybatisPlusConfig.java
0 → 100644
浏览文件 @
96c22c9a
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
src/main/java/com/link/bi/controller/core/EcStoreCoreController.java
0 → 100644
浏览文件 @
96c22c9a
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
);
}
}
src/main/java/com/link/bi/controller/query/EcStoreQueryController.java
0 → 100644
浏览文件 @
96c22c9a
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));
// }
}
src/main/java/com/link/bi/controller/query/PrdQueryController.java
0 → 100644
浏览文件 @
96c22c9a
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
);
}
}
src/main/java/com/link/bi/controller/query/SummaryMarketDailyDetailController.java
0 → 100644
浏览文件 @
96c22c9a
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
);
}
}
src/main/java/com/link/bi/domain/dao/IEcMarketDailyDetailDao.java
0 → 100644
浏览文件 @
96c22c9a
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
);
}
src/main/java/com/link/bi/domain/dao/IEcStoreDao.java
0 → 100644
浏览文件 @
96c22c9a
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
);
}
src/main/java/com/link/bi/domain/dao/IProductDao.java
0 → 100644
浏览文件 @
96c22c9a
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
);
}
src/main/java/com/link/bi/domain/dao/impl/EcMarketDailyDetailDaoImpl.java
0 → 100644
浏览文件 @
96c22c9a
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
);
}
}
src/main/java/com/link/bi/domain/dao/impl/EcStoreDaoImpl.java
0 → 100644
浏览文件 @
96c22c9a
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
;
}
}
src/main/java/com/link/bi/domain/dao/impl/ProductDaoImpl.java
0 → 100644
浏览文件 @
96c22c9a
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
);
}
}
src/main/java/com/link/bi/domain/wq/EcStoreWq.java
0 → 100644
浏览文件 @
96c22c9a
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
;
}
src/main/java/com/link/bi/domain/wq/MarketDetailWq.java
0 → 100644
浏览文件 @
96c22c9a
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
;
}
src/main/java/com/link/bi/domain/wq/ProductWq.java
0 → 100644
浏览文件 @
96c22c9a
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
;
}
src/main/java/com/link/bi/pojo/request/EcStoreVo.java
0 → 100644
浏览文件 @
96c22c9a
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
;
}
src/main/java/com/link/bi/pojo/request/MarketSummaryVo.java
0 → 100644
浏览文件 @
96c22c9a
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
;
}
}
src/main/java/com/link/bi/pojo/request/ProductVo.java
0 → 100644
浏览文件 @
96c22c9a
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
;
}
src/main/java/com/link/bi/pojo/response/EcStoreDto.java
0 → 100644
浏览文件 @
96c22c9a
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
;
}
src/main/java/com/link/bi/pojo/response/MarketSummaryDto.java
0 → 100644
浏览文件 @
96c22c9a
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
;
}
src/main/java/com/link/bi/service/IEcStoreService.java
0 → 100644
浏览文件 @
96c22c9a
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
);
}
src/main/java/com/link/bi/service/IProductService.java
0 → 100644
浏览文件 @
96c22c9a
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
);
}
src/main/java/com/link/bi/service/ISummaryMarketDailyDetailService.java
0 → 100644
浏览文件 @
96c22c9a
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
);
}
src/main/java/com/link/bi/service/impl/EcStoreServiceImpl.java
0 → 100644
浏览文件 @
96c22c9a
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
);
}
}
src/main/java/com/link/bi/service/impl/ProductServiceImpl.java
0 → 100644
浏览文件 @
96c22c9a
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
);
}
}
src/main/java/com/link/bi/service/impl/SummaryMarketDailyDetailImpl.java
0 → 100644
浏览文件 @
96c22c9a
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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论