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
4e2d5a39
提交
4e2d5a39
authored
12月 13, 2024
作者:
吕本才
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
货需bi接口对接
上级
6973513a
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
148 行增加
和
17 行删除
+148
-17
EcGoodsSupplyDemandListener.java
.../link/bi/config/listener/EcGoodsSupplyDemandListener.java
+1
-2
EcGoodsSupplyDemandQueryController.java
.../controller/query/EcGoodsSupplyDemandQueryController.java
+36
-0
IEcGoodsSupplyDemandDao.java
.../java/com/link/bi/domain/dao/IEcGoodsSupplyDemandDao.java
+4
-0
EcGoodsSupplyDemandDaoImpl.java
...m/link/bi/domain/dao/impl/EcGoodsSupplyDemandDaoImpl.java
+42
-0
MarketSummaryDto.java
...main/java/com/link/bi/pojo/response/MarketSummaryDto.java
+4
-0
IEcGoodsSupplyDemandService.java
...java/com/link/bi/service/IEcGoodsSupplyDemandService.java
+8
-0
EcGoodsSupplyDemandServiceImpl.java
.../link/bi/service/impl/EcGoodsSupplyDemandServiceImpl.java
+43
-12
SummaryMarketDailyDetailImpl.java
...om/link/bi/service/impl/SummaryMarketDailyDetailImpl.java
+10
-3
没有找到文件。
src/main/java/com/link/bi/config/listener/EcGoodsSupplyDemandListener.java
浏览文件 @
4e2d5a39
...
...
@@ -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
{
...
...
src/main/java/com/link/bi/controller/query/EcGoodsSupplyDemandQueryController.java
0 → 100644
浏览文件 @
4e2d5a39
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
);
}
}
src/main/java/com/link/bi/domain/dao/IEcGoodsSupplyDemandDao.java
浏览文件 @
4e2d5a39
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
);
}
src/main/java/com/link/bi/domain/dao/impl/EcGoodsSupplyDemandDaoImpl.java
浏览文件 @
4e2d5a39
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
;
}
}
src/main/java/com/link/bi/pojo/response/MarketSummaryDto.java
浏览文件 @
4e2d5a39
...
...
@@ -25,6 +25,10 @@ public class MarketSummaryDto {
private
Date
date
;
private
BigDecimal
targetSaleSum
;
// 货需年
private
BigDecimal
goodsSupplyDemandCountY
;
// 货需月
private
BigDecimal
goodsSupplyDemandCountM
;
// 实际销售量-Y
private
BigDecimal
saleCountY
;
...
...
src/main/java/com/link/bi/service/IEcGoodsSupplyDemandService.java
浏览文件 @
4e2d5a39
...
...
@@ -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
);
}
src/main/java/com/link/bi/service/impl/EcGoodsSupplyDemandServiceImpl.java
浏览文件 @
4e2d5a39
...
...
@@ -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
;
}
}
src/main/java/com/link/bi/service/impl/SummaryMarketDailyDetailImpl.java
浏览文件 @
4e2d5a39
...
...
@@ -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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论