Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-api-boot-master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lanbaoming
jiedao-api-boot-master
Commits
2d320dc2
Commit
2d320dc2
authored
Apr 25, 2024
by
lanbaoming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2024-04-25
parent
7712ef74
Changes
29
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
1151 additions
and
59 deletions
+1151
-59
CustomerAnalysisControl.java
...le/delivery/controller/admin/CustomerAnalysisControl.java
+199
-8
EcwReportPermissionController.java
...ivery/controller/admin/EcwReportPermissionController.java
+14
-1
SalesAnalysisControl.java
...odule/delivery/controller/admin/SalesAnalysisControl.java
+17
-7
CustomerAnalysisExcelResp.java
...dao/module/delivery/entity/CustomerAnalysisExcelResp.java
+232
-0
CustomerAnalysisReq.java
...der/yudao/module/delivery/entity/CustomerAnalysisReq.java
+8
-0
CustomerAnalysisResp.java
...er/yudao/module/delivery/entity/CustomerAnalysisResp.java
+1
-2
EcwReportPermission.java
...der/yudao/module/delivery/entity/EcwReportPermission.java
+5
-0
SalesAnalysisExcelResp.java
.../yudao/module/delivery/entity/SalesAnalysisExcelResp.java
+138
-0
SalesAnalysisReq.java
...ocoder/yudao/module/delivery/entity/SalesAnalysisReq.java
+12
-1
SalesAnalysisResp.java
...coder/yudao/module/delivery/entity/SalesAnalysisResp.java
+2
-1
SalesReportReq.java
.../iocoder/yudao/module/delivery/entity/SalesReportReq.java
+1
-7
view_order_businesstime.java
...le/delivery/entity/orderdata/view_order_businesstime.java
+45
-0
CustomerAnalysisMapper.java
.../yudao/module/delivery/mapper/CustomerAnalysisMapper.java
+3
-0
CustomerAnalysisMapper2.java
...yudao/module/delivery/mapper/CustomerAnalysisMapper2.java
+14
-0
SalesAnalysisMapper.java
...der/yudao/module/delivery/mapper/SalesAnalysisMapper.java
+6
-3
view_order_businesstimeMapper.java
...module/delivery/mapper/view_order_businesstimeMapper.java
+38
-0
CustomerAnalysisService.java
...udao/module/delivery/service/CustomerAnalysisService.java
+4
-1
CustomerAnalysisService2.java
...dao/module/delivery/service/CustomerAnalysisService2.java
+13
-0
CustomerAnalysisImpl.java
...ao/module/delivery/service/Impl/CustomerAnalysisImpl.java
+54
-2
CustomerAnalysisImpl2.java
...o/module/delivery/service/Impl/CustomerAnalysisImpl2.java
+28
-0
SalesAnalysisImpl.java
...yudao/module/delivery/service/Impl/SalesAnalysisImpl.java
+7
-3
view_order_businesstimeServiceImpl.java
...very/service/Impl/view_order_businesstimeServiceImpl.java
+27
-0
SalesAnalysisService.java
...r/yudao/module/delivery/service/SalesAnalysisService.java
+5
-2
view_order_businesstimeService.java
...dule/delivery/service/view_order_businesstimeService.java
+13
-0
CustomerAnalysisMapper.xml
...rest/src/main/resources/mapper/CustomerAnalysisMapper.xml
+72
-3
CustomerAnalysisMapper2.xml
...est/src/main/resources/mapper/CustomerAnalysisMapper2.xml
+112
-0
SalesAnalysisMapper.xml
...ry-rest/src/main/resources/mapper/SalesAnalysisMapper.xml
+50
-17
view_order_businesstimeMapper.xml
...c/main/resources/mapper/view_order_businesstimeMapper.xml
+29
-0
MakeBillOfLadingServiceImpl.java
...service/makeBillOfLading/MakeBillOfLadingServiceImpl.java
+2
-1
No files found.
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/controller/admin/CustomerAnalysisControl.java
View file @
2d320dc2
package
cn
.
iocoder
.
yudao
.
module
.
delivery
.
controller
.
admin
;
import
cn.iocoder.yudao.framework.common.exception.ErrorCode
;
import
cn.iocoder.yudao.framework.common.pojo.CommonResult
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO
;
import
cn.iocoder.yudao.framework.excel.util.ExcelUtils
;
import
cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils
;
import
cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog
;
import
cn.iocoder.yudao.framework.redis.helper.RedisHelper
;
import
cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils
;
import
cn.iocoder.yudao.module.delivery.entity.*
;
import
cn.iocoder.yudao.module.delivery.entity.orderdata.view_order_businesstime
;
import
cn.iocoder.yudao.module.delivery.service.CustomerAnalysisService
;
import
cn.iocoder.yudao.module.delivery.service.CustomerAnalysisService2
;
import
cn.iocoder.yudao.module.delivery.service.EcwReportPermissionService
;
import
cn.iocoder.yudao.module.delivery.service.view_order_businesstimeService
;
import
cn.iocoder.yudao.module.system.api.dict.DictDataApi
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -27,6 +35,7 @@ import java.text.SimpleDateFormat;
import
java.time.LocalDate
;
import
java.time.YearMonth
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
pojo
.
CommonResult
.
error
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
pojo
.
CommonResult
.
success
;
...
...
@@ -45,10 +54,22 @@ public class CustomerAnalysisControl {
@Autowired
private
CustomerAnalysisService
customerAnalysisService
;
@Resource
private
CustomerAnalysisService2
customerAnalysisService2
;
//报表权限信息
@Resource
private
EcwReportPermissionService
ecwReportPermissionService
;
@Resource
private
RedisHelper
redisHelper
;
@Resource
private
view_order_businesstimeService
vieworderbusinesstimeService
;
private
List
<
view_order_businesstime
>
listBData
=
null
;
private
List
<
CustomerAnalysisResp
>
objListResult
=
null
;
/*
数据字典项
...
...
@@ -182,12 +203,11 @@ public class CustomerAnalysisControl {
*/
@PostMapping
(
"/getListPage"
)
public
CommonResult
<
PageResult
<
CustomerAnalysisResp
>>
getListPage
(
@RequestBody
Map
map
)
{
getListPage
(
@RequestBody
Map
map
)
throws
JsonProcessingException
{
//ecw_customer 的部门字段都为空 department 都为空,所以要关联客户经理所在的部门来查询
//ecw_order_item order_item_type 订单类型:1 普货 2 重货 3 泡货
//ecw_order order_type 订单类型:1 普货 2 重货 3 泡货
// is_cargo_control 是否控货 1 控货,0不控货
//同比增长速度=(本期发展水平-同期发展水平)/同期发展水平×100%
//客户角色数据字典
//客户表和数据字典表中的编码方式不一样,做关联查询有异常,为了不改变表的编码方式,在后台做转换
...
...
@@ -305,6 +325,7 @@ public class CustomerAnalysisControl {
*/
}
private
CustomerAnalysisResp
calMonthAvg
(
CustomerAnalysisReq
query
,
CustomerAnalysisResp
r
,
boolean
bZzNull
)
{
String
sTemp
=
""
;
...
...
@@ -583,14 +604,184 @@ public class CustomerAnalysisControl {
}
@PostMapping
(
"/exportExcel"
)
private
List
<
CustomerAnalysisResp
>
GetPageResult
(
List
<
CustomerAnalysisResp
>
list
,
int
pageNum
,
int
pageSize
)
{
/*
// 正序
Collections.sort(list, (a, b) -> {
return a.排序字段 - b.排序字段;
});
// 倒序
Collections.sort(list, (a, b) -> {
return b.排序字段 - a.排序字段;
});*/
// 总数
int
total
=
list
.
size
();
// 分页数据
List
<
CustomerAnalysisResp
>
subList
=
list
.
stream
().
skip
((
pageNum
-
1
)
*
pageSize
).
limit
(
pageSize
).
collect
(
Collectors
.
toList
());
return
subList
;
}
@GetMapping
(
"/exportExcel"
)
@ApiOperation
(
"导出客户分析数据"
)
@OperateLog
(
type
=
EXPORT
)
public
void
export
(
HttpServletResponse
response
,
@Valid
CustomerAnalysisReq
Req
)
throws
IOException
{
// List<DictDataDO> list = dictDataService.getDictDatas(reqVO);
//List<DictDataExcelVO> data = DictDataConvert.INSTANCE.convertList02(list);
// 输出
//ExcelUtils.write(response, "客户分析数据.xls", "客户分析数据列表", DictDataExcelVO.class, data);
Req
=
getReq
(
Req
);
Req
=
getDataWhere
(
Req
);
System
.
out
.
println
(
"处理后的查询条件:"
+
Req
);
List
<
CustomerAnalysisExcelResp
>
list
=
customerAnalysisService
.
getList
(
Req
);
// 导出 Excel
ExcelUtils
.
write
(
response
,
"客户分析报表.xls"
,
"数据"
,
CustomerAnalysisExcelResp
.
class
,
list
);
}
@PostMapping
(
"/getListPageWithRedis"
)
public
CommonResult
<
PageResult
<
CustomerAnalysisResp
>>
getListPageWithRedis
(
@RequestBody
Map
map
)
throws
JsonProcessingException
{
//ecw_customer 的部门字段都为空 department 都为空,所以要关联客户经理所在的部门来查询
//ecw_order_item order_item_type 订单类型:1 普货 2 重货 3 泡货
//ecw_order order_type 订单类型:1 普货 2 重货 3 泡货
// is_cargo_control 是否控货 1 控货,0不控货
//同比增长速度=(本期发展水平-同期发展水平)/同期发展水平×100%
//客户角色数据字典
//客户表和数据字典表中的编码方式不一样,做关联查询有异常,为了不改变表的编码方式,在后台做转换
//获取当前用户ID
//先判断用户有什么报表权限
Long
loginUserId
=
SecurityFrameworkUtils
.
getLoginUserId
();
LambdaQueryWrapper
<
EcwReportPermission
>
lambdaQueryWrapper
=
new
LambdaQueryWrapper
();
lambdaQueryWrapper
.
eq
(
EcwReportPermission:
:
getUserId
,
loginUserId
);
List
<
EcwReportPermission
>
objList
=
ecwReportPermissionService
.
list
(
lambdaQueryWrapper
);
if
(
objList
==
null
||
objList
.
size
()
==
0
)
{
ErrorCode
eCode
=
new
ErrorCode
(
2024041504
,
"当前用户未分配报表权限,请联系系统管理员处理。"
);
return
error
(
eCode
);
}
System
.
out
.
println
(
map
);
CustomerAnalysisReq
query
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
map
),
CustomerAnalysisReq
.
class
);
query
=
getReq
(
query
);
query
=
getDataWhere
(
query
);
System
.
out
.
println
(
"处理后的查询条件:"
+
query
);
//把model转 JSON字符串 lanbm
//String jsonStr = JsonUtils.toJsonString(query);
//JsonUtils.SaveLog(jsonStr);
System
.
out
.
println
(
"客户分析查询条件为:"
+
query
);
List
<
DictDataRespDTO
>
dicCustomer_type
=
dictDataApi
.
getDictDatas
(
"customer_type"
);
Map
<
String
,
String
>
mapDic
=
new
HashMap
<>();
for
(
DictDataRespDTO
d
:
dicCustomer_type
)
{
mapDic
.
put
(
d
.
getValue
(),
d
.
getLabel
());
}
ObjectMapper
objectMapper
=
new
ObjectMapper
();
String
sList
=
redisHelper
.
get
(
"view_order_businesstime"
);
if
(
sList
==
null
||
sList
.
length
()
==
0
)
{
listBData
=
vieworderbusinesstimeService
.
getOrderBusinessData
();
String
json
=
objectMapper
.
writeValueAsString
(
listBData
);
redisHelper
.
set
(
"view_order_businesstime"
,
json
);
}
else
{
if
(
listBData
==
null
)
{
listBData
=
JSON
.
parseArray
(
sList
,
view_order_businesstime
.
class
);
}
}
String
sList2
=
redisHelper
.
get
(
"CustomerAnalysisResp"
);
if
(
sList2
==
null
||
sList2
.
length
()
==
0
)
{
objListResult
=
customerAnalysisService2
.
getList
(
query
);
String
json
=
objectMapper
.
writeValueAsString
(
objListResult
);
redisHelper
.
set
(
"CustomerAnalysisResp"
,
json
);
}
else
{
if
(
objListResult
==
null
)
{
objListResult
=
JSON
.
parseArray
(
sList2
,
CustomerAnalysisResp
.
class
);
}
}
if
(
query
.
getCountry
()
!=
null
&&
query
.
getCountry
().
length
()
>
0
)
{
String
cC
=
query
.
getCountry
();
objListResult
=
objListResult
.
stream
().
filter
(
c
->
c
.
getCountryID
()
==
cC
).
collect
(
Collectors
.
toList
());
}
String
sTemp
=
""
;
int
nPm
=
1
;
for
(
CustomerAnalysisResp
r
:
objListResult
)
{
r
.
setPx
(
nPm
);
nPm
++;
//客户类型转换
String
sType
=
r
.
getType
();
if
(
sType
==
null
)
{
r
.
setCustomerrole
(
""
);
}
else
{
r
.
setCustomerrole
(
mapDic
.
get
(
sType
));
}
if
(
r
.
getAllsumvolume
()
==
null
||
r
.
getAllsumvolume
().
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
r
.
setAllsumvolume
(
new
BigDecimal
(
0
));
//计算月均
r
=
calMonthAvg
(
query
,
r
,
true
);
//计算总值
r
=
calAll
(
r
,
true
);
//计算海运数据
r
=
cal1
(
query
,
r
,
true
);
//计算空运数据
r
=
cal3
(
query
,
r
,
true
);
//计算重货数据
r
=
calZH
(
r
,
true
);
//计算泡货数据
r
=
calPH
(
r
,
true
);
//计算控货数据
r
=
calKH
(
r
,
true
);
}
else
{
//计算月均
r
=
calMonthAvg
(
query
,
r
,
false
);
//计算总值
r
=
calAll
(
r
,
false
);
//计算海运数据
r
=
cal1
(
query
,
r
,
false
);
//计算空运数据
r
=
cal3
(
query
,
r
,
false
);
//重货
r
=
calZH
(
r
,
false
);
//计算泡货占比
r
=
calPH
(
r
,
false
);
//计算控货占比
r
=
calKH
(
r
,
false
);
}
r
=
calPick
(
r
,
false
);
}
IPage
<
CustomerAnalysisResp
>
mpPage
=
MyBatisUtils
.
buildPage
(
query
);
long
total
=
objListResult
.
size
();
System
.
out
.
println
(
"符合条件的客户总数:"
+
String
.
valueOf
(
total
));
List
<
CustomerAnalysisResp
>
list
=
GetPageResult
(
objListResult
,
query
.
getPageNo
(),
query
.
getPageSize
());
PageResult
<
CustomerAnalysisResp
>
pageResult
=
new
PageResult
<>(
list
,
total
,
mpPage
.
getSize
(),
query
.
getPageNo
(),
(
total
+
mpPage
.
getSize
()
-
1
)
/
mpPage
.
getSize
());
return
success
(
pageResult
);
}
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/controller/admin/EcwReportPermissionController.java
View file @
2d320dc2
package
cn
.
iocoder
.
yudao
.
module
.
delivery
.
controller
.
admin
;
import
cn.iocoder.yudao.framework.common.exception.ErrorCode
;
import
cn.iocoder.yudao.framework.redis.helper.RedisHelper
;
import
cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils
;
import
cn.iocoder.yudao.module.delivery.entity.EcwReportPermission
;
import
cn.iocoder.yudao.module.delivery.entity.EcwReportPermissionPageReq
;
...
...
@@ -20,6 +21,7 @@ import javax.validation.*;
import
io.swagger.v3.oas.annotations.Operation
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -38,6 +40,9 @@ public class EcwReportPermissionController {
@Resource
private
EcwReportPermissionService
ecwReportPermissionService
;
@Resource
private
RedisHelper
redisHelper
;
private
ErrorCode
eCode
;
/*
...
...
@@ -111,10 +116,11 @@ public class EcwReportPermissionController {
*/
@PostMapping
(
"/update"
)
public
CommonResult
<
Boolean
>
update
(
@RequestBody
EcwReportPermission
ecwReportPermission
)
{
/*
boolean bR = isRight(ecwReportPermission);
if (bR == false) {
return error(eCode);
}
}
*/
ecwReportPermissionService
.
update
(
ecwReportPermission
);
return
success
(
true
);
}
...
...
@@ -170,6 +176,7 @@ public class EcwReportPermissionController {
*/
@GetMapping
public
CommonResult
queryAll
()
{
return
success
(
this
.
ecwReportPermissionService
.
list
());
}
...
...
@@ -184,6 +191,12 @@ public class EcwReportPermissionController {
//myBatisPlus分页
//return success(this.ecwReportPermissionService.getListPage(PageReq));
//通过自定义SQL语句分页 lanbm 2024-04-15 add
redisHelper
.
set
(
"123"
,
"测试"
);
List
<
String
>
l
=
new
ArrayList
<>();
l
.
add
(
"112"
);
l
.
add
(
"12444"
);
redisHelper
.
set
(
"myTest"
,
l
.
toString
());
return
success
(
this
.
ecwReportPermissionService
.
getListPageCustom
(
PageReq
));
}
...
...
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/controller/admin/SalesAnalysisControl.java
View file @
2d320dc2
...
...
@@ -4,9 +4,11 @@ package cn.iocoder.yudao.module.delivery.controller.admin;
import
cn.iocoder.yudao.framework.common.pojo.CommonResult
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO
;
import
cn.iocoder.yudao.framework.excel.util.ExcelUtils
;
import
cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisReq
;
import
cn.iocoder.yudao.module.delivery.entity.SalesAnalysisExcelResp
;
import
cn.iocoder.yudao.module.delivery.entity.SalesAnalysisReq
;
import
cn.iocoder.yudao.module.delivery.entity.SalesAnalysisResp
;
import
cn.iocoder.yudao.module.delivery.service.SalesAnalysisService
;
...
...
@@ -50,6 +52,8 @@ public class SalesAnalysisControl {
@GetMapping
(
"/getListPage"
)
public
CommonResult
<
PageResult
<
SalesAnalysisResp
>>
getListPage
(
@Valid
SalesAnalysisReq
query
)
{
System
.
out
.
println
(
"订单分析查询条件:"
+
query
);
/*
SalesAnalysisReq query = JSON.parseObject(JSON.toJSONString(map),
SalesAnalysisReq.class);
...
...
@@ -77,9 +81,9 @@ public class SalesAnalysisControl {
//订单状态
r
.
setStatusName
(
map_order_status
.
get
(
r
.
getStatus
()));
if
(
r
.
getTransportId
()==
"1"
)
if
(
r
.
getTransportId
()
==
"1"
)
r
.
setTransportIdName
(
"海运拼柜"
);
else
if
(
r
.
getTransportId
()==
"3"
)
else
if
(
r
.
getTransportId
()
==
"3"
)
r
.
setTransportIdName
(
"专线空运"
);
...
...
@@ -88,13 +92,19 @@ public class SalesAnalysisControl {
return
success
(
pageResult
);
}
/*
lanbm 2024-04-24 add
*/
@GetMapping
(
"/exportExcel"
)
@ApiOperation
(
"导出销售分析数据"
)
@OperateLog
(
type
=
EXPORT
)
public
void
export
(
HttpServletResponse
response
,
@Valid
CustomerAnalysisReq
Req
)
throws
IOException
{
// List<DictDataDO> list = dictDataService.getDictDatas(reqVO);
//List<DictDataExcelVO> data = DictDataConvert.INSTANCE.convertList02(list);
// 输出
//ExcelUtils.write(response, "客户分析数据.xls", "客户分析数据列表", DictDataExcelVO.class, data);
public
void
export
(
HttpServletResponse
response
,
@Valid
SalesAnalysisReq
Req
)
throws
IOException
{
System
.
out
.
println
(
"订单分析查询数据导出查询条件:"
+
Req
);
List
<
SalesAnalysisExcelResp
>
list
=
salesAnalysisService
.
getList
(
Req
);
ExcelUtils
.
write
(
response
,
"销售分析数据.xls"
,
"销售分析数据"
,
SalesAnalysisExcelResp
.
class
,
list
);
}
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/entity/CustomerAnalysisExcelResp.java
0 → 100644
View file @
2d320dc2
package
cn
.
iocoder
.
yudao
.
module
.
delivery
.
entity
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
@Data
public
class
CustomerAnalysisExcelResp
{
/*
排名编号
*/
@ExcelProperty
(
"排名编号"
)
private
int
px
;
/*
客户编号
*/
@ExcelProperty
(
"客户编号"
)
private
String
number
;
private
String
id
;
/*
客户姓名
*/
@ExcelProperty
(
"客户姓名"
)
private
String
name
;
/*
客户经理姓名
*/
@ExcelProperty
(
"客户经理姓名"
)
private
String
salesman
;
/*
客户经理所在的部门
*/
private
String
deptid
;
/*
部门名称
*/
@ExcelProperty
(
"客户经理部门"
)
private
String
deptname
;
/*
客户经理ID
customer_service 客户表中的跟进客服
*/
private
String
salesmanid
;
/*
总值,海运拼柜,专线空运
*/
@ExcelProperty
(
"总V值"
)
private
BigDecimal
allsumvolume
;
/*
总值同比
*/
private
BigDecimal
allsumvolumeTb
;
/*
总V值同比显示信息
*/
@ExcelProperty
(
"总V值同比"
)
private
String
allsumvolumeTbShow
;
/*
海运拼柜
*/
private
BigDecimal
sumvolume1
;
private
BigDecimal
sumvolumeV1
;
private
BigDecimal
sumvolumeTb1
;
private
BigDecimal
sumvolumeTbV1
;
/*
海运拼柜占比
*/
private
String
seaZb
;
/*
海运同比显示
*/
private
String
sumvolumeTbShow1
;
/*
专线空运
*/
private
BigDecimal
sumweight3
;
private
BigDecimal
sumweightV3
;
private
BigDecimal
sumweightTb3
;
private
BigDecimal
sumweightTbV3
;
/*
空运占比
*/
private
String
airZb
;
/*
空运同步显示
*/
private
String
sumweightTbShow3
;
/*
月均
*/
private
String
monthAvg
;
private
String
monthAvgTb
;
/*
月均同比
*/
private
String
monthAvgTbShow
;
/*
海运月均方数
*/
private
String
seaMonthAvg
;
/*
海运月均方数同比
*/
private
String
seaMonthAvgTb
;
/*
空运月均重量
*/
private
String
airMothAvg
;
/*
空运月均同比
*/
private
String
airMothAvgTb
;
/*
重货总V值
*/
private
BigDecimal
weightSumV
;
/*
重货占比
*/
private
String
weithtSumZb
;
/*
泡货总V值
*/
private
BigDecimal
phSumV
;
/*
泡货占比
*/
private
String
phSumZb
;
/*
控货总V值
*/
private
BigDecimal
khSumV
;
/*
控货总占比
*/
private
String
khSumZb
;
/*
是否首次成交
*/
private
String
isFirst
;
/*
首次成交时间
*/
private
String
firstDate
;
/*
入库总箱数
*/
private
int
chargequantity
;
/*
提货数
*/
private
int
pickquantity
;
/*
提货率
*/
private
String
thL
;
/*
客户业绩类型
是否新客户:1是新客户,0是老客户
*/
@ExcelProperty
(
"客户业绩类型"
)
private
String
cusYjType
;
/*
客户来源
*/
private
String
source
;
/*
客户来源名称
*/
@ExcelProperty
(
"客户来源"
)
private
String
sourcename
;
/*
客户国家
*/
@ExcelProperty
(
"客户国家"
)
private
String
country
;
/*
客户角色
*/
private
String
customerrole
;
/*
对应数据字典中的客户类别 type
*/
@ExcelProperty
(
"客户角色"
)
private
String
type
;
/*
客户创建日期
*/
@ExcelProperty
(
"客户创建日期"
)
private
String
createtime
;
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/entity/CustomerAnalysisReq.java
View file @
2d320dc2
...
...
@@ -84,6 +84,14 @@ public class CustomerAnalysisReq extends PageParam {
private
String
searchDataType2
;
private
String
searchDataType3
;
/*
客户时间筛选条件
*/
private
String
searchDataType4
;
private
String
sdate4
;
private
String
edate4
;
/*
时间筛选类型
首次成交日期,客户创建日期
...
...
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/entity/CustomerAnalysisResp.java
View file @
2d320dc2
...
...
@@ -20,8 +20,6 @@ import java.math.BigDecimal;
@AllArgsConstructor
public
class
CustomerAnalysisResp
{
/*
排名编号
*/
...
...
@@ -211,6 +209,7 @@ public class CustomerAnalysisResp {
客户国家
*/
private
String
country
;
private
String
countryID
;
/*
...
...
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/entity/EcwReportPermission.java
View file @
2d320dc2
...
...
@@ -40,6 +40,11 @@ public class EcwReportPermission extends BaseDO {
*/
private
String
deptId
;
/*
是否有数据导出权
*/
private
int
exportdataq
;
...
...
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/entity/SalesAnalysisExcelResp.java
0 → 100644
View file @
2d320dc2
package
cn
.
iocoder
.
yudao
.
module
.
delivery
.
entity
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
@Data
public
class
SalesAnalysisExcelResp
{
/*
排名编号
*/
private
int
px
;
@ExcelProperty
(
"排名"
)
/*
订单编号
*/
private
String
orderNo
;
@ExcelProperty
(
"订单编号"
)
/*
提单号
*/
private
String
tidanNo
;
@ExcelProperty
(
"提单号"
)
/*
订单发货人编号
*/
private
String
orderConsignorName
;
@ExcelProperty
(
"发货人名称"
)
/*
订单发货人客户ID,用户链接
*/
private
String
orderConsignorCusId
;
/*
订单收货人名称
*/
@ExcelProperty
(
"订单收货人名称"
)
private
String
orderConsigneeName
;
/*
订单收货人客户编号,用于链接
*/
private
String
orderConsigneeCusId
;
/*
客户经理
*/
private
String
salesmanid
;
@ExcelProperty
(
"客户经理"
)
private
String
salesmanidName
;
/*
订单状态
*/
private
String
status
;
@ExcelProperty
(
"订单状态"
)
private
String
statusName
;
/*
运输方式
*/
private
String
transportId
;
@ExcelProperty
(
"运输方式"
)
private
String
transportIdName
;
/*
始发仓
*/
@ExcelProperty
(
"始发仓"
)
private
String
startwarehousename
;
/*
目的国
*/
/*
目的城市
*/
/*
目的仓
*/
@ExcelProperty
(
"目的仓"
)
private
String
dstwarehousename
;
/*
渠道
*/
private
String
channelid
;
@ExcelProperty
(
"渠道"
)
private
String
channelidName
;
/*
唛头
*/
@ExcelProperty
(
"唛头"
)
private
String
marks
;
/*
入仓箱数
*/
@ExcelProperty
(
"入仓箱数"
)
private
String
sumquantity
;
/*
入仓体积
*/
@ExcelProperty
(
"入仓体积"
)
private
String
sumvolume
;
/*
入仓重量
*/
@ExcelProperty
(
"入仓重量"
)
private
String
sumweight
;
/*
是否控货
*/
@ExcelProperty
(
"是否控货"
)
private
String
iscargocontrol
;
/*
创建时间
*/
@ExcelProperty
(
"创建时间"
)
private
String
createtime
;
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/entity/SalesAnalysisReq.java
View file @
2d320dc2
...
...
@@ -17,10 +17,21 @@ public class SalesAnalysisReq extends PageParam {
private
int
start
;
private
int
size
;
/*
运输方式
1 海运柜拼柜 2海运整柜 3专线空运 4海空联运
*/
private
int
transportId
;
/*
订单编号查询类型
*/
private
String
SearchType1
;
/*
订单编号
*/
private
String
orderNo
;
private
String
orderNo
;
/*
提单编号
...
...
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/entity/SalesAnalysisResp.java
View file @
2d320dc2
...
...
@@ -74,6 +74,7 @@ public class SalesAnalysisResp {
/*
始发仓
*/
private
String
startwarehousename
;
/*
目的国
...
...
@@ -86,7 +87,7 @@ public class SalesAnalysisResp {
/*
目的仓
*/
private
String
dstwarehousename
;
/*
渠道
...
...
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/entity/SalesReportReq.java
View file @
2d320dc2
...
...
@@ -17,12 +17,6 @@ import lombok.ToString;
@ToString
(
callSuper
=
true
)
public
class
SalesReportReq
{
/*
运输方式
1 海运柜拼柜 2海运整柜 3专线空运 4海空联运
*/
//private int transportid;
/*
销售经理
*/
...
...
@@ -36,5 +30,5 @@ public class SalesReportReq {
/*
对比年份
*/
private
String
duibiYear
;
private
String
duibiYear
;
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/entity/orderdata/view_order_businesstime.java
0 → 100644
View file @
2d320dc2
package
cn
.
iocoder
.
yudao
.
module
.
delivery
.
entity
.
orderdata
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
lombok.ToString
;
import
java.math.BigDecimal
;
@Schema
(
description
=
"管理后台 - 订单业务数据"
)
@Data
@ToString
(
callSuper
=
true
)
public
class
view_order_businesstime
{
private
int
orderid
;
private
String
orderno
;
private
String
tidanno
;
private
String
transportid
;
/*
客户id
*/
private
String
customerid
;
/*
是否控货
*/
private
String
iscargocontrol
;
private
String
ordertype
;
private
String
businesstime
;
private
int
chargequantity
;
private
int
picknum
;
private
BigDecimal
chargevolume
;
private
BigDecimal
chargeweight
;
private
BigDecimal
vz
;
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/mapper/CustomerAnalysisMapper.java
View file @
2d320dc2
...
...
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.delivery.mapper;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisExcelResp
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisReq
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisResp
;
import
cn.iocoder.yudao.module.delivery.entity.Employee
;
...
...
@@ -27,4 +28,6 @@ public interface CustomerAnalysisMapper {
*/
Long
GetCount
(
CustomerAnalysisReq
req
);
List
<
CustomerAnalysisExcelResp
>
getList
(
CustomerAnalysisReq
req
);
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/mapper/CustomerAnalysisMapper2.java
0 → 100644
View file @
2d320dc2
package
cn
.
iocoder
.
yudao
.
module
.
delivery
.
mapper
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisExcelResp
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisReq
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisResp
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
@Mapper
public
interface
CustomerAnalysisMapper2
{
List
<
CustomerAnalysisResp
>
getListPage
(
CustomerAnalysisReq
req
);
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/mapper/SalesAnalysisMapper.java
View file @
2d320dc2
package
cn
.
iocoder
.
yudao
.
module
.
delivery
.
mapper
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisReq
;
import
cn.iocoder.yudao.module.delivery.entity.SalesAnalysisReq
;
import
cn.iocoder.yudao.module.delivery.entity.SalesAnalysisResp
;
import
cn.iocoder.yudao.module.delivery.entity.*
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
...
...
@@ -24,4 +22,9 @@ public interface SalesAnalysisMapper {
*/
Long
GetCount
(
SalesAnalysisReq
req
);
/*
导出报表列表 lanbm 2024-04-24 add
*/
List
<
SalesAnalysisExcelResp
>
getList
(
SalesAnalysisReq
req
);
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/mapper/view_order_businesstimeMapper.java
0 → 100644
View file @
2d320dc2
package
cn
.
iocoder
.
yudao
.
module
.
delivery
.
mapper
;
import
cn.iocoder.yudao.module.delivery.entity.orderdata.view_order_businesstime
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/*
订单业务数据 lanbm 2024-04-25 add
*/
@Mapper
public
interface
view_order_businesstimeMapper
{
/*
// 升序排序
List<Dictionaries> dictionaries =
list.stream().sorted().collect(Collectors.toList());
// 降序排序
List<Dictionaries> dictionaries =
list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
// 定制升序排序
List<Dictionaries> dictionaries =
list.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList());
// 定制降序排序
List<Dictionaries> dictionaries =
list.stream().sorted(Comparator.comparing(Student::getAge).reverseOrder()).collect(Collectors.toList());
*/
/*
获取订单业务数据 lanbm 2024-04-25
*/
List
<
view_order_businesstime
>
getOrderBusinessData
();
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/service/CustomerAnalysisService.java
View file @
2d320dc2
...
...
@@ -4,12 +4,15 @@ package cn.iocoder.yudao.module.delivery.service;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.mybatis.core.vo.PageVO
;
import
cn.iocoder.yudao.module.delivery.entity.*
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
java.util.List
;
public
interface
CustomerAnalysisService
{
PageResult
<
CustomerAnalysisResp
>
getListPage
(
CustomerAnalysisReq
req
);
PageResult
<
CustomerAnalysisResp
>
getListPage
(
CustomerAnalysisReq
req
)
throws
JsonProcessingException
;
List
<
CustomerAnalysisExcelResp
>
getList
(
CustomerAnalysisReq
req
);
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/service/CustomerAnalysisService2.java
0 → 100644
View file @
2d320dc2
package
cn
.
iocoder
.
yudao
.
module
.
delivery
.
service
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisExcelResp
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisReq
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisResp
;
import
java.util.List
;
public
interface
CustomerAnalysisService2
{
List
<
CustomerAnalysisResp
>
getList
(
CustomerAnalysisReq
req
);
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/service/Impl/CustomerAnalysisImpl.java
View file @
2d320dc2
...
...
@@ -5,18 +5,25 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import
cn.iocoder.yudao.framework.i18n.core.I18nMessage
;
import
cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils
;
import
cn.iocoder.yudao.framework.mybatis.core.vo.PageVO
;
import
cn.iocoder.yudao.framework.redis.helper.RedisHelper
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisReq
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisResp
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisExcelResp
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerReportReq
;
import
cn.iocoder.yudao.module.delivery.mapper.CustomerAnalysisMapper
;
import
cn.iocoder.yudao.module.delivery.service.CustomerAnalysisService
;
import
cn.iocoder.yudao.module.delivery.service.CustomerReportService
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/*
lanbm 2024-04-01 add
...
...
@@ -28,8 +35,17 @@ public class CustomerAnalysisImpl implements CustomerAnalysisService {
@Autowired
private
CustomerAnalysisMapper
customerAnalysisMapper
;
@Resource
private
RedisHelper
redisHelper
;
public
PageResult
<
CustomerAnalysisResp
>
getListPage
(
CustomerAnalysisReq
req
)
{
public
List
<
CustomerAnalysisExcelResp
>
getList
(
CustomerAnalysisReq
req
)
{
return
customerAnalysisMapper
.
getList
(
req
);
}
public
PageResult
<
CustomerAnalysisResp
>
getListPage
(
CustomerAnalysisReq
req
)
throws
JsonProcessingException
{
IPage
<
CustomerAnalysisResp
>
mpPage
=
MyBatisUtils
.
buildPage
(
req
);
long
total
=
customerAnalysisMapper
.
GetCount
(
req
);
...
...
@@ -40,11 +56,47 @@ public class CustomerAnalysisImpl implements CustomerAnalysisService {
req
.
setSize
(
size
);
req
.
setStart
(
start
);
List
<
CustomerAnalysisResp
>
list
=
customerAnalysisMapper
.
getListPage
(
req
);
List
<
CustomerAnalysisResp
>
list
=
null
;
String
sList
=
redisHelper
.
get
(
"CustomerAnalysisRespList"
);
if
(
sList
==
null
||
sList
.
length
()==
0
)
{
list
=
customerAnalysisMapper
.
getListPage
(
req
);
ObjectMapper
objectMapper
=
new
ObjectMapper
();
// 将List转换为JSON字符串
String
json
=
objectMapper
.
writeValueAsString
(
list
);
redisHelper
.
set
(
"CustomerAnalysisRespList"
,
json
);
}
else
{
list
=
JSON
.
parseArray
(
sList
,
CustomerAnalysisResp
.
class
);
}
list
=
GetPageResult
(
list
,
req
.
getPageNo
(),
req
.
getPageSize
());
return
new
PageResult
<>(
list
,
total
,
mpPage
.
getSize
(),
req
.
getPageNo
(),
(
total
+
mpPage
.
getSize
()
-
1
)
/
mpPage
.
getSize
());
}
private
List
<
CustomerAnalysisResp
>
GetPageResult
(
List
<
CustomerAnalysisResp
>
list
,
int
pageNum
,
int
pageSize
)
{
/*
// 正序
Collections.sort(list, (a, b) -> {
return a.排序字段 - b.排序字段;
});
// 倒序
Collections.sort(list, (a, b) -> {
return b.排序字段 - a.排序字段;
});*/
// 总数
int
total
=
list
.
size
();
// 分页数据
List
<
CustomerAnalysisResp
>
subList
=
list
.
stream
().
skip
((
pageNum
-
1
)
*
pageSize
).
limit
(
pageSize
).
collect
(
Collectors
.
toList
());
return
subList
;
}
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/service/Impl/CustomerAnalysisImpl2.java
0 → 100644
View file @
2d320dc2
package
cn
.
iocoder
.
yudao
.
module
.
delivery
.
service
.
Impl
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisExcelResp
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisReq
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisResp
;
import
cn.iocoder.yudao.module.delivery.mapper.CustomerAnalysisMapper
;
import
cn.iocoder.yudao.module.delivery.mapper.CustomerAnalysisMapper2
;
import
cn.iocoder.yudao.module.delivery.service.CustomerAnalysisService2
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
@Service
(
"CustomerAnalysisImpl2"
)
public
class
CustomerAnalysisImpl2
implements
CustomerAnalysisService2
{
@Autowired
private
CustomerAnalysisMapper2
customerAnalysisMapper2
;
public
List
<
CustomerAnalysisResp
>
getList
(
CustomerAnalysisReq
req
)
{
return
customerAnalysisMapper2
.
getListPage
(
req
);
}
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/service/Impl/SalesAnalysisImpl.java
View file @
2d320dc2
...
...
@@ -2,9 +2,7 @@ package cn.iocoder.yudao.module.delivery.service.Impl;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils
;
import
cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisResp
;
import
cn.iocoder.yudao.module.delivery.entity.SalesAnalysisReq
;
import
cn.iocoder.yudao.module.delivery.entity.SalesAnalysisResp
;
import
cn.iocoder.yudao.module.delivery.entity.*
;
import
cn.iocoder.yudao.module.delivery.mapper.SalesAnalysisMapper
;
import
cn.iocoder.yudao.module.delivery.service.SalesAnalysisService
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
...
...
@@ -22,6 +20,12 @@ public class SalesAnalysisImpl implements SalesAnalysisService {
@Autowired
private
SalesAnalysisMapper
salesAnalysisMapper
;
public
List
<
SalesAnalysisExcelResp
>
getList
(
SalesAnalysisReq
req
)
{
return
salesAnalysisMapper
.
getList
(
req
);
}
public
PageResult
<
SalesAnalysisResp
>
getListPage
(
SalesAnalysisReq
req
)
{
IPage
<
SalesAnalysisResp
>
mpPage
=
MyBatisUtils
.
buildPage
(
req
);
...
...
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/service/Impl/view_order_businesstimeServiceImpl.java
0 → 100644
View file @
2d320dc2
package
cn
.
iocoder
.
yudao
.
module
.
delivery
.
service
.
Impl
;
import
cn.iocoder.yudao.module.delivery.entity.orderdata.view_order_businesstime
;
import
cn.iocoder.yudao.module.delivery.mapper.SalesReportMapper
;
import
cn.iocoder.yudao.module.delivery.mapper.view_order_businesstimeMapper
;
import
cn.iocoder.yudao.module.delivery.service.view_order_businesstimeService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/*
lanbm 2024-04-25 add
*/
@Service
(
"view_order_businesstimeServiceImpl"
)
public
class
view_order_businesstimeServiceImpl
implements
view_order_businesstimeService
{
@Autowired
private
view_order_businesstimeMapper
vieworderbusinesstimeMapper
;
public
List
<
view_order_businesstime
>
getOrderBusinessData
()
{
return
vieworderbusinesstimeMapper
.
getOrderBusinessData
();
}
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/service/SalesAnalysisService.java
View file @
2d320dc2
package
cn
.
iocoder
.
yudao
.
module
.
delivery
.
service
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.module.delivery.entity.SalesAnalysisReq
;
import
cn.iocoder.yudao.module.delivery.entity.SalesAnalysisResp
;
import
cn.iocoder.yudao.module.delivery.entity.*
;
import
java.util.List
;
public
interface
SalesAnalysisService
{
PageResult
<
SalesAnalysisResp
>
getListPage
(
SalesAnalysisReq
page
);
List
<
SalesAnalysisExcelResp
>
getList
(
SalesAnalysisReq
req
);
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/java/cn/iocoder/yudao/module/delivery/service/view_order_businesstimeService.java
0 → 100644
View file @
2d320dc2
package
cn
.
iocoder
.
yudao
.
module
.
delivery
.
service
;
import
cn.iocoder.yudao.module.delivery.entity.orderdata.view_order_businesstime
;
import
java.util.List
;
/*
订单业务数据 lanbm 2024-04-25 add
*/
public
interface
view_order_businesstimeService
{
List
<
view_order_businesstime
>
getOrderBusinessData
();
}
yudao-module-delivery/yudao-module-delivery-rest/src/main/resources/mapper/CustomerAnalysisMapper.xml
View file @
2d320dc2
...
...
@@ -42,9 +42,9 @@
(CASE WHEN c.is_new = 1 THEN '是' ELSE '否' END) as isFirst,
(if(c.is_new = 1,c.update_time,''))as firstDate,
<!--提货率 已提货箱数除总入库总箱数-->
(select sum(charge_quantity) from view_order_businesstime where customer_id = c.id and
is_cargo_control=1 and
(select sum(charge_quantity) from view_order_businesstime where customer_id = c.id and
business_time BETWEEN '${sdate}' AND '${edate}') as chargequantity,
(select sum(pick_num) from view_order_businesstime where customer_id = c.id and
is_cargo_control=1 and
(select sum(pick_num) from view_order_businesstime where customer_id = c.id and
business_time BETWEEN '${sdate}' AND '${edate}') as pickquantity,
(CASE WHEN c.is_new = 1 THEN '新客户' ELSE '旧客户' END ) as cusYjType,
(SELECT name_zh from ecw_country where deleted=0 and id=c.country) as country,
...
...
@@ -55,7 +55,7 @@
system_user u LEFT JOIN system_dept d ON u.dept_id = d.id
) AS u_d ON c.customer_service = u_d.userid
<include
refid=
"WherePage"
/>
ORDER BY allsumvolume desc limit #{start}, #{size}
<!-- ORDER BY allsumvolume desc limit #{start}, #{size}-->
</select>
<sql
id=
"WherePage"
>
<where>
...
...
@@ -101,6 +101,20 @@
<if
test=
"deptid!=null and deptid!=''"
>
and u_d.dept_id= #{deptid}
</if>
<if
test=
"searchDataType4!=null and searchDataType4!=''"
>
<if
test=
"sdate4!=null and sdate4!=''
and edate4!=null and edate4!=''"
>
<choose>
<when
test=
"searchDataType4 =='1'"
>
and firstDate BETWEEN #{sdate4} AND #{edate4}
</when>
<when
test=
"searchDataType4 =='0'"
>
and c.create_time BETWEEN #{sdate4} AND #{edate4}
</when>
</choose>
</if>
</if>
<!--2024-04-22
<if test="searchDataType1!=null and searchDataType1!=''
and searchDataType2!=null and searchDataType2!=''
...
...
@@ -125,6 +139,61 @@
<include
refid=
"WherePage"
/>
</select>
<select
id=
"getList"
parameterType=
"cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisReq"
resultType=
"cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisExcelResp"
>
SELECT number,name,c.id,(
SELECT nickname from system_user where id=c.customer_service
) as salesman,c.customer_service as salesmanid,
(SELECT label from system_dict_data
where dict_type='customer_source' and value=c.source) as sourcename,
c.source,(u_d.dept_id) as deptid,(u_d.deptName) as deptname,
(select round(sum(vz),2) from view_order_businesstime where customer_id = c.id and business_time BETWEEN
'${sdate}' AND '${edate}') AS allsumvolume,
(select round(sum(vz),2) from view_order_businesstime where customer_id = c.id and business_time BETWEEN
'${sduibidate}' AND '${eduibidate}') as allsumvolumeTb,
<!--海运-->
(select round(sum(charge_volume),2) from view_order_businesstime where customer_id = c.id and transport_id=1 and
business_time BETWEEN '${sdate}' AND '${edate}') AS sumvolume1,
(select round(sum(charge_volume),2) from view_order_businesstime where customer_id = c.id and transport_id=1 and
business_time BETWEEN '${sduibidate}' AND '${eduibidate}') as sumvolumeTb1,
<!--空运-->
(select round(sum(charge_weight),2) from view_order_businesstime where customer_id = c.id and transport_id=3 and
business_time BETWEEN '${sdate}' AND '${edate}') AS sumweight3,
(select round(sum(charge_weight),2) from view_order_businesstime where customer_id = c.id and transport_id=3 and
business_time BETWEEN '${sduibidate}' AND '${eduibidate}') as sumweightTb3,
'4' as monthAvg,
'5' as monthAvgTb,
'6' as seaMonthAvg,
'7' as seaMonthAvgTb,
'8' as airMothAvg,
'9' as airMothAvgTb,
<!--重货 计算占比,不计算同步-->
(select round(sum(vz),2) from view_order_businesstime where customer_id = c.id and order_type=2 and
business_time BETWEEN '${sdate}' AND '${edate}') as weightSumV,
<!--泡货 计算占比,不计算同步-->
(select round(sum(vz),2) from view_order_businesstime where customer_id = c.id and order_type=3 and
business_time BETWEEN '${sdate}' AND '${edate}') as phSumV,
<!--控货 计算占比,不计算同步-->
(select round(sum(vz),2) from view_order_businesstime where customer_id = c.id and is_cargo_control=1 and
business_time BETWEEN '${sdate}' AND '${edate}') as khSumV,
(CASE WHEN c.is_new = 1 THEN '是' ELSE '否' END) as isFirst,
(if(c.is_new = 1,c.update_time,''))as firstDate,
<!--提货率 已提货箱数除总入库总箱数-->
(select sum(charge_quantity) from view_order_businesstime where customer_id = c.id and
business_time BETWEEN '${sdate}' AND '${edate}') as chargequantity,
(select sum(pick_num) from view_order_businesstime where customer_id = c.id and
business_time BETWEEN '${sdate}' AND '${edate}') as pickquantity,
(CASE WHEN c.is_new = 1 THEN '新客户' ELSE '旧客户' END ) as cusYjType,
(SELECT name_zh from ecw_country where deleted=0 and id=c.country) as country,
c.type,
c.create_time as createtime
from ecw_customer c left join (
SELECT d.NAME as deptName,u.dept_id,u.id as userid FROM
system_user u LEFT JOIN system_dept d ON u.dept_id = d.id
) AS u_d ON c.customer_service = u_d.userid
<include
refid=
"WherePage"
/>
</select>
</mapper>
yudao-module-delivery/yudao-module-delivery-rest/src/main/resources/mapper/CustomerAnalysisMapper2.xml
0 → 100644
View file @
2d320dc2
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"cn.iocoder.yudao.module.delivery.mapper.CustomerAnalysisMapper2"
>
<select
id=
"getListPage"
parameterType=
"cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisReq"
resultType=
"cn.iocoder.yudao.module.delivery.entity.CustomerAnalysisResp"
>
SELECT number,name,c.id,(
SELECT nickname from system_user where id=c.customer_service
) as salesman,c.customer_service as salesmanid,
(SELECT label from system_dict_data
where dict_type='customer_source' and value=c.source) as sourcename,
c.source,(u_d.dept_id) as deptid,(u_d.deptName) as deptname,
1 AS allsumvolume,
2 as allsumvolumeTb,
3 AS sumvolume1,
4 as sumvolumeTb1,
5 AS sumweight3,
6 as sumweightTb3,
7 as monthAvg,
8 as monthAvgTb,
9 as seaMonthAvg,
10 as seaMonthAvgTb,
11 as airMothAvg,
12 as airMothAvgTb,
13 as weightSumV,
14 as phSumV,
15 as khSumV,
(CASE WHEN c.is_new = 1 THEN '是' ELSE '否' END) as isFirst,
(if(c.is_new = 1,c.update_time,''))as firstDate,
16 as chargequantity,
17 as pickquantity,
(CASE WHEN c.is_new = 1 THEN '新客户' ELSE '旧客户' END ) as cusYjType,
(SELECT name_zh from ecw_country where deleted=0 and id=c.country) as country,
c.country as countryID, c.type,
c.create_time as createtime
from ecw_customer c left join (
SELECT d.NAME as deptName,u.dept_id,u.id as userid FROM
system_user u LEFT JOIN system_dept d ON u.dept_id = d.id
) AS u_d ON c.customer_service = u_d.userid
<include
refid=
"WherePage"
/>
</select>
<sql
id=
"WherePage"
>
<where>
and c.deleted = 0
<if
test=
"name!=null and name!=''"
>
<choose>
<when
test=
"searchtype =='in'.toString()"
>
and (name like concat('%',#{name},'%') or
number like concat('%',#{name},'%'))
</when>
<when
test=
"searchtype =='notin'.toString()"
>
and (name not like concat('%',#{name},'%') or
number not like concat('%',#{name},'%'))
</when>
<when
test=
"searchtype =='eq'.toString()"
>
and (name= #{name} or number=#{name})
</when>
<when
test=
"searchtype =='noeq'.toString()"
>
and (name != #{name} or number != #{name})
</when>
<otherwise>
and (name= #{name} or number=#{name})
</otherwise>
</choose>
</if>
<if
test=
"isnew!=null and isnew!=''"
>
and is_new= #{isnew}
</if>
<if
test=
"source!=null and source!=''"
>
and source= #{source}
</if>
<if
test=
"customerrole!=null and customerrole!=''"
>
and type= #{customerrole}
</if>
<if
test=
"country!=null and country!=''"
>
and c.country= #{country}
</if>
<if
test=
"salesmanid!=null and salesmanid!=''"
>
<!--有具体的客户经理,就不算掉入公海池客户-->
and c.is_in_open_sea=0
and c.customer_service= #{salesmanid}
</if>
<if
test=
"deptid!=null and deptid!=''"
>
and u_d.dept_id= #{deptid}
</if>
<if
test=
"searchDataType4!=null and searchDataType4!=''"
>
<if
test=
"sdate4!=null and sdate4!=''
and edate4!=null and edate4!=''"
>
<choose>
<when
test=
"searchDataType4 =='1'"
>
and firstDate BETWEEN #{sdate4} AND #{edate4}
</when>
<when
test=
"searchDataType4 =='0'"
>
and c.create_time BETWEEN #{sdate4} AND #{edate4}
</when>
</choose>
</if>
</if>
</where>
</sql>
<select
id=
"GetCount"
resultType=
"java.lang.Long"
>
SELECT count(1)
from ecw_customer
<include
refid=
"WherePage"
/>
</select>
</mapper>
yudao-module-delivery/yudao-module-delivery-rest/src/main/resources/mapper/SalesAnalysisMapper.xml
View file @
2d320dc2
...
...
@@ -5,39 +5,44 @@
parameterType=
"cn.iocoder.yudao.module.delivery.entity.SalesAnalysisReq"
resultType=
"cn.iocoder.yudao.module.delivery.entity.SalesAnalysisResp"
>
select order_no as orderNo, tidan_no as tidanNo,
status,salesman_id as salesmanid,transport_id,marks,
channel_id as channelid,channel.name_zh as channelidName,
create_time as createtime,sum_quantity as sumquantity,
c.status,salesman_id as salesmanid,transport_id,marks,
w.start_warehouse_name as startwarehousename,
w.dst_warehouse_name as dstwarehousename,w.muDiGuo,w.muDiShi,
c.channel_id as channelid,channel.name_zh as channelidName,
c.create_time as createtime,sum_quantity as sumquantity,
sum_volume as sumvolume,sum_weight as sumweight,
is_cargo_control as iscargocontrol
from ecw_order c
left join (SELECT ewl.id AS line_id,ew_start.id AS start_warehouse_id,
left join (SELECT ewl.id AS line_id,
ew_start.id AS start_warehouse_id,
ew_dest.id AS dst_warehouse_id,ew_start.title_zh AS start_title_zh,
ew_dest.title_zh AS dst_warehouse_name,
r_dest.title_zh as muDiGuo,r_sdest.title_zh as muDiShi,
ew_start.title_zh AS start_warehouse_name FROM ecw_warehouse_line ewl
LEFT JOIN ecw_warehouse ew_start ON ewl.start_warehouse_id = ew_start.id
LEFT JOIN ecw_warehouse ew_start ON
ewl.start_warehouse_id = ew_start.id
LEFT JOIN ecw_warehouse ew_dest ON ewl.dest_warehouse_id = ew_dest.id
left join ecw_region r_dest on ew_dest.guojia=r_dest.id
LEFT JOIN ecw_region r_sdest on ew_dest.shi=r_sdest.id
) w ON w.line_id = c.line_id
<!--始发仓 2024-04-22-->
left join ecw_order_departure de on de.order_id = c.order_id
<!--目的仓-->
left join ecw_order_objective ob on ob.order_id = c.order_id
<!--订单关联渠道信息-->
left join ecw_channel channel on channel.channel_id =c.channel_id
<!--订单发货人信息-->
left join ecw_order_consignor nor on nor.order_id = c.order_id
<!--订单收货人信息-->
left join ecw_order_consignee nee on nee.order_id = c.order_id
<include
refid=
"WherePage"
/>
limit 1,10
ORDER BY c.create_time desc limit #{start}, #{size}
</select>
<sql
id=
"WherePage"
>
<where>
and c.deleted = 0
<if
test=
"transportId!=null and transportId!=''"
>
<!--运输方式查询条件-->
and c.transport_id= #{transportId}
</if>
<if
test=
"orderNo!=null and orderNo!=''"
>
<!--订单编号-->
and c.order_no= #{orderNo}
</if>
</where>
</sql>
...
...
@@ -48,6 +53,34 @@
<include
refid=
"WherePage"
/>
</select>
<select
id=
"getList"
parameterType=
"cn.iocoder.yudao.module.delivery.entity.SalesAnalysisReq"
resultType=
"cn.iocoder.yudao.module.delivery.entity.SalesAnalysisExcelResp"
>
select order_no as orderNo, tidan_no as tidanNo,
c.status,salesman_id as salesmanid,transport_id,marks,
w.start_warehouse_name as startwarehousename,
w.dst_warehouse_name as dstwarehousename,w.muDiGuo,w.muDiShi,
c.channel_id as channelid,channel.name_zh as channelidName,
c.create_time as createtime,sum_quantity as sumquantity,
sum_volume as sumvolume,sum_weight as sumweight,
is_cargo_control as iscargocontrol
from ecw_order c
left join (SELECT ewl.id AS line_id,
ew_start.id AS start_warehouse_id,
ew_dest.id AS dst_warehouse_id,ew_start.title_zh AS start_title_zh,
ew_dest.title_zh AS dst_warehouse_name,
r_dest.title_zh as muDiGuo,r_sdest.title_zh as muDiShi,
ew_start.title_zh AS start_warehouse_name FROM ecw_warehouse_line ewl
LEFT JOIN ecw_warehouse ew_start ON
ewl.start_warehouse_id = ew_start.id
LEFT JOIN ecw_warehouse ew_dest ON ewl.dest_warehouse_id = ew_dest.id
left join ecw_region r_dest on ew_dest.guojia=r_dest.id
LEFT JOIN ecw_region r_sdest on ew_dest.shi=r_sdest.id
) w ON w.line_id = c.line_id
left join ecw_channel channel on channel.channel_id =c.channel_id
<include
refid=
"WherePage"
/>
</select>
</mapper>
...
...
yudao-module-delivery/yudao-module-delivery-rest/src/main/resources/mapper/view_order_businesstimeMapper.xml
0 → 100644
View file @
2d320dc2
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"cn.iocoder.yudao.module.delivery.mapper.view_order_businesstimeMapper"
>
<select
id=
"getOrderBusinessData"
resultType=
"cn.iocoder.yudao.module.delivery.entity.orderdata.view_order_businesstime"
>
select o.order_id AS orderid,
o.order_no AS orderno,
o.tidan_no AS tidanno,
o.transport_id AS transportid,
o.customer_id AS customerid,
o.is_cargo_control AS iscargocontrol,
o.order_type AS ordertype,
if((o.transport_id = 1), o.load_time, o.rucang_time) AS businesstime,
o.sum_num AS chargequantity,
(select sum(ecw_order_pickup.pick_num)
from ecw_order_pickup
where (ecw_order_pickup.order_id = o.order_no)) AS picknum,
o.sum_volume AS chargevolume,
o.sum_weight AS chargeweight,
if((o.transport_id = 1),
o.sum_volume, (o.sum_weight * 100)) AS vz
from ecw_order o
where o.deleted = 0
</select>
</mapper>
yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/service/makeBillOfLading/MakeBillOfLadingServiceImpl.java
View file @
2d320dc2
...
...
@@ -444,7 +444,8 @@ public class MakeBillOfLadingServiceImpl extends AbstractService<MakeBillOfLadin
// }
paramMap
.
put
(
"seaFreight"
,
item
.
getOneSeaFreight
()
+
currencyMap
.
get
(
item
.
getSeaFreightCurrency
())
+
"/m³"
);
if
(
item
.
getOneClearanceFreight
().
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
paramMap
.
put
(
"clearanceFreight"
,
""
);
//paramMap.put("clearanceFreight", "");
paramMap
.
put
(
"clearanceFreight"
,
"0"
+
currencyMap
.
get
(
item
.
getClearanceFreightCurrency
())
+
"/m³"
);
}
else
{
paramMap
.
put
(
"clearanceFreight"
,
item
.
getOneClearanceFreight
()
+
currencyMap
.
get
(
item
.
getClearanceFreightCurrency
())
+
"/m³"
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment