Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-module-operation
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-module-operation
Commits
04a682e8
提交
04a682e8
authored
12月 01, 2025
作者:
000516
浏览文件
操作
浏览文件
下载
差异文件
店内执行-大区/战区表
上级
2297a3d0
2553ba9a
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
512 行增加
和
38 行删除
+512
-38
ApDisplayCoreController.java
...ration/controller/sales/core/ApDisplayCoreController.java
+27
-20
ApPromotionCoreController.java
...tion/controller/sales/core/ApPromotionCoreController.java
+24
-16
APReportQueryController.java
...ation/controller/sales/query/APReportQueryController.java
+28
-2
ISalesApDisplayDao.java
...om/sfa/operation/domain/sales/dao/ISalesApDisplayDao.java
+2
-0
SalesApDisplayDaoImpl.java
...peration/domain/sales/dao/impl/SalesApDisplayDaoImpl.java
+14
-0
SalesApDisplayMapper.java
...a/operation/domain/sales/mapper/SalesApDisplayMapper.java
+4
-0
IApDisplayQueryService.java
...m/sfa/operation/service/sales/IApDisplayQueryService.java
+2
-0
ApDisplayQueryServiceImpl.java
...eration/service/sales/impl/ApDisplayQueryServiceImpl.java
+5
-0
SalesApDisplayMapper.xml
src/main/resources/mapper/sales/SalesApDisplayMapper.xml
+406
-0
没有找到文件。
src/main/java/com/sfa/operation/controller/sales/core/ApDisplayCoreController.java
浏览文件 @
04a682e8
...
@@ -3,6 +3,8 @@ package com.sfa.operation.controller.sales.core;
...
@@ -3,6 +3,8 @@ package com.sfa.operation.controller.sales.core;
import
com.sfa.common.core.constant.RoleConstants
;
import
com.sfa.common.core.constant.RoleConstants
;
import
com.sfa.common.core.enums.ECode
;
import
com.sfa.common.core.enums.ECode
;
import
com.sfa.common.core.exception.CheckedException
;
import
com.sfa.common.core.exception.CheckedException
;
import
com.sfa.common.security.annotation.Logical
;
import
com.sfa.common.security.annotation.RequiresRoles
;
import
com.sfa.common.security.utils.SecurityUtils
;
import
com.sfa.common.security.utils.SecurityUtils
;
import
com.sfa.operation.pojo.sales.request.SalesApRequest
;
import
com.sfa.operation.pojo.sales.request.SalesApRequest
;
import
com.sfa.operation.service.qc.IQinceMarketEmployeeService
;
import
com.sfa.operation.service.qc.IQinceMarketEmployeeService
;
...
@@ -31,8 +33,9 @@ public class ApDisplayCoreController {
...
@@ -31,8 +33,9 @@ public class ApDisplayCoreController {
* 常规陈列 根据id更新
* 常规陈列 根据id更新
*/
*/
@PutMapping
(
"/core/{id}"
)
@PutMapping
(
"/core/{id}"
)
@RequiresRoles
(
value
=
{
RoleConstants
.
OPERATION_AP_MANAGER
,
RoleConstants
.
OPERATIONZQ_AP_MANAGER
,
RoleConstants
.
OPERATIONDQ_AP_MANAGER
,
RoleConstants
.
DISTRICT_AP_MANAGER
},
logical
=
Logical
.
OR
)
public
void
putDetail
(
@PathVariable
(
"id"
)
Long
sadId
,
@RequestBody
SalesApRequest
request
){
public
void
putDetail
(
@PathVariable
(
"id"
)
Long
sadId
,
@RequestBody
SalesApRequest
request
){
checkPermission
();
//
checkPermission();
request
.
setSadId
(
sadId
);
request
.
setSadId
(
sadId
);
apDisplayCoreService
.
updateDetail
(
request
);
apDisplayCoreService
.
updateDetail
(
request
);
}
}
...
@@ -41,8 +44,9 @@ public class ApDisplayCoreController {
...
@@ -41,8 +44,9 @@ public class ApDisplayCoreController {
* 档期陈列 根据id更新
* 档期陈列 根据id更新
*/
*/
@PutMapping
(
"/core_pro/{id}"
)
@PutMapping
(
"/core_pro/{id}"
)
@RequiresRoles
(
value
=
{
RoleConstants
.
OPERATION_AP_MANAGER
,
RoleConstants
.
OPERATIONZQ_AP_MANAGER
,
RoleConstants
.
OPERATIONDQ_AP_MANAGER
,
RoleConstants
.
DISTRICT_AP_MANAGER
},
logical
=
Logical
.
OR
)
public
void
putProDisplayDetail
(
@PathVariable
(
"id"
)
Long
sapdId
,
@RequestBody
SalesApRequest
request
){
public
void
putProDisplayDetail
(
@PathVariable
(
"id"
)
Long
sapdId
,
@RequestBody
SalesApRequest
request
){
checkPermission
();
//
checkPermission();
request
.
setSapdId
(
sapdId
);
request
.
setSapdId
(
sapdId
);
apDisplayCoreService
.
putProDisplayDetail
(
request
);
apDisplayCoreService
.
putProDisplayDetail
(
request
);
}
}
...
@@ -51,8 +55,9 @@ public class ApDisplayCoreController {
...
@@ -51,8 +55,9 @@ public class ApDisplayCoreController {
* 零食陈列 根据id更新
* 零食陈列 根据id更新
*/
*/
@PutMapping
(
"/core_snack/{id}"
)
@PutMapping
(
"/core_snack/{id}"
)
@RequiresRoles
(
value
=
{
RoleConstants
.
OPERATION_AP_MANAGER
,
RoleConstants
.
OPERATIONZQ_AP_MANAGER
,
RoleConstants
.
OPERATIONDQ_AP_MANAGER
,
RoleConstants
.
DISTRICT_AP_MANAGER
},
logical
=
Logical
.
OR
)
public
void
putSnackDisplayDetail
(
@PathVariable
(
"id"
)
Long
sasdId
,
@RequestBody
SalesApRequest
request
){
public
void
putSnackDisplayDetail
(
@PathVariable
(
"id"
)
Long
sasdId
,
@RequestBody
SalesApRequest
request
){
checkPermission
();
//
checkPermission();
request
.
setSasdId
(
sasdId
);
request
.
setSasdId
(
sasdId
);
apDisplayCoreService
.
putSnackDisplayDetail
(
request
);
apDisplayCoreService
.
putSnackDisplayDetail
(
request
);
}
}
...
@@ -61,8 +66,9 @@ public class ApDisplayCoreController {
...
@@ -61,8 +66,9 @@ public class ApDisplayCoreController {
* 三米两秒
* 三米两秒
*/
*/
@PutMapping
(
"/core_s/{id}"
)
@PutMapping
(
"/core_s/{id}"
)
@RequiresRoles
(
value
=
{
RoleConstants
.
OPERATION_AP_MANAGER
,
RoleConstants
.
OPERATIONZQ_AP_MANAGER
,
RoleConstants
.
OPERATIONDQ_AP_MANAGER
,
RoleConstants
.
DISTRICT_AP_MANAGER
},
logical
=
Logical
.
OR
)
public
void
putDisplaySDetail
(
@PathVariable
(
"id"
)
Long
sadsId
,
@RequestBody
SalesApRequest
request
){
public
void
putDisplaySDetail
(
@PathVariable
(
"id"
)
Long
sadsId
,
@RequestBody
SalesApRequest
request
){
checkPermission
();
//
checkPermission();
request
.
setSadsId
(
sadsId
);
request
.
setSadsId
(
sadsId
);
apDisplayCoreService
.
putDisplaySDetail
(
request
);
apDisplayCoreService
.
putDisplaySDetail
(
request
);
}
}
...
@@ -71,27 +77,28 @@ public class ApDisplayCoreController {
...
@@ -71,27 +77,28 @@ public class ApDisplayCoreController {
* 六小金刚
* 六小金刚
*/
*/
@PutMapping
(
"/core_j/{id}"
)
@PutMapping
(
"/core_j/{id}"
)
@RequiresRoles
(
value
=
{
RoleConstants
.
OPERATION_AP_MANAGER
,
RoleConstants
.
OPERATIONZQ_AP_MANAGER
,
RoleConstants
.
OPERATIONDQ_AP_MANAGER
,
RoleConstants
.
DISTRICT_AP_MANAGER
},
logical
=
Logical
.
OR
)
public
void
putDisplayJDetail
(
@PathVariable
(
"id"
)
Long
sadjId
,
@RequestBody
SalesApRequest
request
){
public
void
putDisplayJDetail
(
@PathVariable
(
"id"
)
Long
sadjId
,
@RequestBody
SalesApRequest
request
){
checkPermission
();
//
checkPermission();
request
.
setSadjId
(
sadjId
);
request
.
setSadjId
(
sadjId
);
apDisplayCoreService
.
putDisplayJDetail
(
request
);
apDisplayCoreService
.
putDisplayJDetail
(
request
);
}
}
private
void
checkPermission
(){
// private void checkPermission(){
// 是区域销售部的人员,查看人客关系
// // 是区域销售部的人员,查看人客关系
LoginUser
loginUser
=
SecurityUtils
.
getLoginUser
();
// LoginUser loginUser = SecurityUtils.getLoginUser();
// 只有销售(促销AP管理:cxapgl)、大区TM(大区TM促销AP管理:dqtmcxapgl)两种角色才可以修改
// // 只有销售(促销AP管理:cxapgl)、大区TM(大区TM促销AP管理:dqtmcxapgl)两种角色才可以修改
List
<
SysRole
>
roles
=
loginUser
.
getSysUser
().
getRoles
();
// List<SysRole> roles = loginUser.getSysUser().getRoles();
Optional
<
SysRole
>
first
=
roles
.
stream
().
filter
(
role
->
RoleConstants
.
DISTRICT_AP_MANAGER
.
equals
(
role
.
getRoleKey
())
||
RoleConstants
.
OPERATION_AP_MANAGER
.
equals
(
role
.
getRoleKey
())).
findFirst
();
// Optional<SysRole> first = roles.stream().filter(role -> RoleConstants.DISTRICT_AP_MANAGER.equals(role.getRoleKey()) || RoleConstants.OPERATION_AP_MANAGER.equals(role.getRoleKey())).findFirst();
if
(!
first
.
isPresent
())
{
// if (!first.isPresent()) {
throw
new
CheckedException
(
ECode
.
ZZ_PRODUCT_QUALITY_AP_ERROR
);
// throw new CheckedException(ECode.ZZ_PRODUCT_QUALITY_AP_ERROR);
}
// String empNo = loginUser.getUsername();
// List<String> dealerCodes = qinceMarketEmployeeService.checkPermission(empNo);
// if (dealerCodes.isEmpty()){
// throw new CheckedException(ECode.QC_MARKET_EMP_ERROR);
// }
// }
}
//
//// String empNo = loginUser.getUsername();
//// List<String> dealerCodes = qinceMarketEmployeeService.checkPermission(empNo);
//// if (dealerCodes.isEmpty()){
//// throw new CheckedException(ECode.QC_MARKET_EMP_ERROR);
//// }
// }
}
}
src/main/java/com/sfa/operation/controller/sales/core/ApPromotionCoreController.java
浏览文件 @
04a682e8
...
@@ -3,6 +3,8 @@ package com.sfa.operation.controller.sales.core;
...
@@ -3,6 +3,8 @@ package com.sfa.operation.controller.sales.core;
import
com.sfa.common.core.constant.RoleConstants
;
import
com.sfa.common.core.constant.RoleConstants
;
import
com.sfa.common.core.enums.ECode
;
import
com.sfa.common.core.enums.ECode
;
import
com.sfa.common.core.exception.CheckedException
;
import
com.sfa.common.core.exception.CheckedException
;
import
com.sfa.common.security.annotation.Logical
;
import
com.sfa.common.security.annotation.RequiresRoles
;
import
com.sfa.common.security.utils.SecurityUtils
;
import
com.sfa.common.security.utils.SecurityUtils
;
import
com.sfa.operation.pojo.sales.request.SalesApRequest
;
import
com.sfa.operation.pojo.sales.request.SalesApRequest
;
import
com.sfa.operation.service.qc.IQinceMarketEmployeeService
;
import
com.sfa.operation.service.qc.IQinceMarketEmployeeService
;
...
@@ -27,27 +29,33 @@ public class ApPromotionCoreController {
...
@@ -27,27 +29,33 @@ public class ApPromotionCoreController {
private
IApPromotionCoreService
apPromotionCoreService
;
private
IApPromotionCoreService
apPromotionCoreService
;
@Autowired
@Autowired
private
IQinceMarketEmployeeService
qinceMarketEmployeeService
;
private
IQinceMarketEmployeeService
qinceMarketEmployeeService
;
/**
* 更新AP促销计划详情
* 大区总、战区经理、城市经理、TM,可以更新
*/
@PutMapping
(
"/{id}"
)
@PutMapping
(
"/{id}"
)
@RequiresRoles
(
value
=
{
RoleConstants
.
OPERATION_AP_MANAGER
,
RoleConstants
.
OPERATIONZQ_AP_MANAGER
,
RoleConstants
.
OPERATIONDQ_AP_MANAGER
,
RoleConstants
.
DISTRICT_AP_MANAGER
},
logical
=
Logical
.
OR
)
public
void
putDetail
(
@PathVariable
(
"id"
)
Long
sapId
,
@RequestBody
SalesApRequest
request
)
{
public
void
putDetail
(
@PathVariable
(
"id"
)
Long
sapId
,
@RequestBody
SalesApRequest
request
)
{
checkPermission
();
//
checkPermission();
request
.
setSapId
(
sapId
);
request
.
setSapId
(
sapId
);
apPromotionCoreService
.
updateDetail
(
request
);
apPromotionCoreService
.
updateDetail
(
request
);
}
}
private
void
checkPermission
(){
// private void checkPermission(){
// 是区域销售部的人员,查看人客关系
// // 是区域销售部的人员,查看人客关系
LoginUser
loginUser
=
SecurityUtils
.
getLoginUser
();
// LoginUser loginUser = SecurityUtils.getLoginUser();
// 只有销售(促销AP管理:cxapgl)、大区TM(大区TM促销AP管理:dqtmcxapgl)两种角色才可以修改
// // 只有销售(促销AP管理:cxapgl)、大区TM(大区TM促销AP管理:dqtmcxapgl)两种角色才可以修改
List
<
SysRole
>
roles
=
loginUser
.
getSysUser
().
getRoles
();
// List<SysRole> roles = loginUser.getSysUser().getRoles();
Optional
<
SysRole
>
first
=
roles
.
stream
().
filter
(
role
->
RoleConstants
.
DISTRICT_AP_MANAGER
.
equals
(
role
.
getRoleKey
())
||
RoleConstants
.
OPERATION_AP_MANAGER
.
equals
(
role
.
getRoleKey
())).
findFirst
();
// Optional<SysRole> first = roles.stream().filter(role -> RoleConstants.DISTRICT_AP_MANAGER.equals(role.getRoleKey()) || RoleConstants.OPERATION_AP_MANAGER.equals(role.getRoleKey())).findFirst();
if
(!
first
.
isPresent
())
{
// if (!first.isPresent()) {
throw
new
CheckedException
(
ECode
.
ZZ_PRODUCT_QUALITY_AP_ERROR
);
// throw new CheckedException(ECode.ZZ_PRODUCT_QUALITY_AP_ERROR);
}
// String empNo = loginUser.getUsername();
// List<String> dealerCodes = qinceMarketEmployeeService.checkPermission(empNo);
// if (dealerCodes.isEmpty()){
// throw new CheckedException(ECode.QC_MARKET_EMP_ERROR);
// }
// }
}
//
//// String empNo = loginUser.getUsername();
//// List<String> dealerCodes = qinceMarketEmployeeService.checkPermission(empNo);
//// if (dealerCodes.isEmpty()){
//// throw new CheckedException(ECode.QC_MARKET_EMP_ERROR);
//// }
// }
}
}
src/main/java/com/sfa/operation/controller/sales/query/APReportQueryController.java
浏览文件 @
04a682e8
...
@@ -3,6 +3,8 @@ package com.sfa.operation.controller.sales.query;
...
@@ -3,6 +3,8 @@ package com.sfa.operation.controller.sales.query;
import
com.sfa.common.core.constant.RoleConstants
;
import
com.sfa.common.core.constant.RoleConstants
;
import
com.sfa.common.core.enums.ECode
;
import
com.sfa.common.core.enums.ECode
;
import
com.sfa.common.core.exception.CheckedException
;
import
com.sfa.common.core.exception.CheckedException
;
import
com.sfa.common.security.annotation.Logical
;
import
com.sfa.common.security.annotation.RequiresRoles
;
import
com.sfa.common.security.utils.SecurityUtils
;
import
com.sfa.common.security.utils.SecurityUtils
;
import
com.sfa.operation.config.ConstantValue
;
import
com.sfa.operation.config.ConstantValue
;
import
com.sfa.operation.pojo.sales.request.SalesApRequest
;
import
com.sfa.operation.pojo.sales.request.SalesApRequest
;
...
@@ -36,8 +38,6 @@ public class APReportQueryController {
...
@@ -36,8 +38,6 @@ public class APReportQueryController {
/**
/**
* 店内执行-城市经理
* 店内执行-城市经理
* @param request
* @return
*/
*/
@GetMapping
(
"/store_cm"
)
@GetMapping
(
"/store_cm"
)
public
Object
queryStoreAPReport
(
SalesApRequest
request
)
{
public
Object
queryStoreAPReport
(
SalesApRequest
request
)
{
...
@@ -45,6 +45,16 @@ public class APReportQueryController {
...
@@ -45,6 +45,16 @@ public class APReportQueryController {
return
apDisplayQueryService
.
queryStoreAPReport
(
request
);
return
apDisplayQueryService
.
queryStoreAPReport
(
request
);
}
}
/**
* 店内执行-大区/战区
*/
@GetMapping
(
"/dept_cm"
)
@RequiresRoles
(
value
=
{
RoleConstants
.
OPERATION_CENTER_AP_MANAGER
,
RoleConstants
.
OPERATIONZQ_AP_MANAGER
,
RoleConstants
.
OPERATIONDQ_AP_MANAGER
,
RoleConstants
.
DISTRICT_AP_MANAGER
},
logical
=
Logical
.
OR
)
public
Object
queryDeptAPReport
(
SalesApRequest
request
)
{
checkPermissionDept
(
request
);
return
apDisplayQueryService
.
queryDeptAPReport
(
request
);
}
private
void
checkPermission
(
SalesApRequest
salesApRequest
)
{
private
void
checkPermission
(
SalesApRequest
salesApRequest
)
{
LoginUser
loginUser
=
SecurityUtils
.
getLoginUser
();
LoginUser
loginUser
=
SecurityUtils
.
getLoginUser
();
String
ancestors
=
loginUser
.
getSysUser
().
getDept
().
getAncestors
();
String
ancestors
=
loginUser
.
getSysUser
().
getDept
().
getAncestors
();
...
@@ -72,4 +82,20 @@ public class APReportQueryController {
...
@@ -72,4 +82,20 @@ public class APReportQueryController {
// salesApRequest.setNickName(loginUser.getNickName());
// salesApRequest.setNickName(loginUser.getNickName());
salesApRequest
.
setDealerCodes
(
dealerCodes
);
salesApRequest
.
setDealerCodes
(
dealerCodes
);
}
}
private
void
checkPermissionDept
(
SalesApRequest
salesApRequest
)
{
LoginUser
loginUser
=
SecurityUtils
.
getLoginUser
();
String
ancestors
=
loginUser
.
getSysUser
().
getDept
().
getAncestors
();
List
<
SysRole
>
roles
=
loginUser
.
getSysUser
().
getRoles
();
// 不是区域销售部的人员,可以查看所有
if
(!
ancestors
.
contains
(
constantValue
.
deptYX
)
&&
roles
.
stream
().
filter
(
role
->
RoleConstants
.
OPERATION_CENTER_AP_MANAGER
.
equals
(
role
.
getRoleKey
())).
findFirst
().
isPresent
())
{
return
;
}
// 是区域销售部的人员按部门查询
String
empNo
=
loginUser
.
getUsername
();
String
deptName
=
loginUser
.
getSysUser
().
getDept
().
getDeptName
();
salesApRequest
.
setDeptNames
(
"000889"
.
equals
(
empNo
)
?
Arrays
.
asList
(
deptName
,
"北京特区"
)
:
Arrays
.
asList
(
deptName
));
}
}
}
src/main/java/com/sfa/operation/domain/sales/dao/ISalesApDisplayDao.java
浏览文件 @
04a682e8
...
@@ -15,4 +15,6 @@ public interface ISalesApDisplayDao {
...
@@ -15,4 +15,6 @@ public interface ISalesApDisplayDao {
void
updateDetail
(
SalesApDisplayDto
salesApDisplayDto
);
void
updateDetail
(
SalesApDisplayDto
salesApDisplayDto
);
Object
queryStoreAPReport
(
SalesApWq
build
);
Object
queryStoreAPReport
(
SalesApWq
build
);
Object
queryDeptAPReport
(
SalesApWq
build
);
}
}
src/main/java/com/sfa/operation/domain/sales/dao/impl/SalesApDisplayDaoImpl.java
浏览文件 @
04a682e8
...
@@ -16,6 +16,9 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -16,6 +16,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.Objects
;
/**
/**
...
@@ -49,6 +52,17 @@ public class SalesApDisplayDaoImpl implements ISalesApDisplayDao {
...
@@ -49,6 +52,17 @@ public class SalesApDisplayDaoImpl implements ISalesApDisplayDao {
return
salesapdisMapper
.
queryStoreAPReport
(
build
);
return
salesapdisMapper
.
queryStoreAPReport
(
build
);
}
}
@Override
public
Object
queryDeptAPReport
(
SalesApWq
build
)
{
List
<
Map
<
String
,
Object
>>
mapZ
=
salesapdisMapper
.
queryDeptAPReportZQ
(
build
);
List
<
Map
<
String
,
Object
>>
mapD
=
salesapdisMapper
.
queryDeptAPReportDQ
(
build
);
Map
<
String
,
Object
>
r
=
new
HashMap
<>();
r
.
put
(
"zq"
,
mapZ
);
r
.
put
(
"dq"
,
mapD
);
return
r
;
}
private
LambdaQueryWrapper
<
SalesApDisplay
>
buildWq
(
SalesApWq
salesApWq
)
{
private
LambdaQueryWrapper
<
SalesApDisplay
>
buildWq
(
SalesApWq
salesApWq
)
{
LambdaQueryWrapper
<
SalesApDisplay
>
qw
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
SalesApDisplay
>
qw
=
new
LambdaQueryWrapper
<>();
if
(
StringUtils
.
isNotBlank
(
salesApWq
.
getDealerCode
()))
{
if
(
StringUtils
.
isNotBlank
(
salesApWq
.
getDealerCode
()))
{
...
...
src/main/java/com/sfa/operation/domain/sales/mapper/SalesApDisplayMapper.java
浏览文件 @
04a682e8
...
@@ -18,6 +18,10 @@ import java.util.Map;
...
@@ -18,6 +18,10 @@ import java.util.Map;
public
interface
SalesApDisplayMapper
extends
BaseMapper
<
SalesApDisplay
>
{
public
interface
SalesApDisplayMapper
extends
BaseMapper
<
SalesApDisplay
>
{
List
<
Map
<
String
,
Object
>>
queryStoreAPReport
(
SalesApWq
build
);
List
<
Map
<
String
,
Object
>>
queryStoreAPReport
(
SalesApWq
build
);
List
<
Map
<
String
,
Object
>>
queryDeptAPReportZQ
(
SalesApWq
build
);
List
<
Map
<
String
,
Object
>>
queryDeptAPReportDQ
(
SalesApWq
build
);
}
}
...
...
src/main/java/com/sfa/operation/service/sales/IApDisplayQueryService.java
浏览文件 @
04a682e8
...
@@ -22,4 +22,6 @@ public interface IApDisplayQueryService {
...
@@ -22,4 +22,6 @@ public interface IApDisplayQueryService {
PageInfo
jgPage
(
SalesApRequest
salesApRequest
);
PageInfo
jgPage
(
SalesApRequest
salesApRequest
);
Object
queryStoreAPReport
(
SalesApRequest
request
);
Object
queryStoreAPReport
(
SalesApRequest
request
);
Object
queryDeptAPReport
(
SalesApRequest
request
);
}
}
src/main/java/com/sfa/operation/service/sales/impl/ApDisplayQueryServiceImpl.java
浏览文件 @
04a682e8
...
@@ -64,6 +64,11 @@ public class ApDisplayQueryServiceImpl implements IApDisplayQueryService {
...
@@ -64,6 +64,11 @@ public class ApDisplayQueryServiceImpl implements IApDisplayQueryService {
return
salesApDisplayDao
.
queryStoreAPReport
(
build
(
salesApRequest
));
return
salesApDisplayDao
.
queryStoreAPReport
(
build
(
salesApRequest
));
}
}
@Override
public
Object
queryDeptAPReport
(
SalesApRequest
request
)
{
return
salesApDisplayDao
.
queryDeptAPReport
(
build
(
request
));
}
private
SalesApWq
build
(
SalesApRequest
salesApRequest
){
private
SalesApWq
build
(
SalesApRequest
salesApRequest
){
SalesApWq
salesApWq
=
new
SalesApWq
();
SalesApWq
salesApWq
=
new
SalesApWq
();
BeanUtils
.
copyProperties
(
salesApRequest
,
salesApWq
);
BeanUtils
.
copyProperties
(
salesApRequest
,
salesApWq
);
...
...
src/main/resources/mapper/sales/SalesApDisplayMapper.xml
浏览文件 @
04a682e8
...
@@ -306,4 +306,410 @@
...
@@ -306,4 +306,410 @@
ar.city_manager = sp.city_manager
ar.city_manager = sp.city_manager
</select>
</select>
<sql
id =
"deptZQQuery"
>
<if
test=
"salesMonth != null"
>
and sales_month = #{salesMonth}
</if>
<if
test=
"deptNames != null"
>
and (region_name in
<foreach
collection=
"deptNames"
item=
"item"
open=
"("
close=
")"
separator=
","
>
#{item}
</foreach>
or
district_name in
<foreach
collection=
"deptNames"
item=
"item"
open=
"("
close=
")"
separator=
","
>
#{item}
</foreach>
)
</if>
</sql>
<select
id=
"queryDeptAPReportZQ"
parameterType=
"com.sfa.operation.domain.sales.wq.SalesApWq"
resultType=
"java.util.Map"
>
SELECT ar.region_name as regionName,
ar.district_name as districtName,
d.主货架计划网点数 as planMsStoreCnt,
d.主货架执行网点数 as execMsStoreCnt,
if(d.主货架计划网点数 is null, null,concat( round( coalesce(d.主货架执行网点数,0) / d.主货架计划网点数 *
100,2) ,'%')) as msExecRate,
d.常规端架计划网点数 as planRegEndcapStoreCnt,
d.常规端架执行网点数 as execRegEndcapStoreCnt,
if(d.常规端架计划网点数 is null, null,concat( round( coalesce(d.常规端架执行网点数,0) / d.常规端架计划网点数
* 100,2) ,'%')) as endcapExecRate,
d.常规地堆计划网点数 as planRegGsStoreCnt,
d.常规地堆执行网点数 as execRegGsStoreCnt,
if(d.常规地堆计划网点数 is null, null,concat( round( coalesce(d.常规地堆执行网点数,0) / d.常规地堆计划网点数
* 100,2) ,'%')) as gsExecRate,
d.多点陈列计划网点数 as planMpDispStoreCnt,
d.多点陈列执行网点数 as execMpDispStoreCnt,
if(d.多点陈列计划网点数 is null, null,concat( round( coalesce(d.多点陈列执行网点数,0) / d.多点陈列计划网点数
* 100,2) ,'%')) as mpDispExecRate,
d.挂条计划网点数 as planHsStoreCnt,
d.挂条执行网点数 as execHsStoreCnt,
if(d.挂条计划网点数 is null, null,concat( round( coalesce(d.挂条执行网点数,0) / d.挂条计划网点数 * 100,2)
,'%')) as HsExecRate,
s.三米两秒挂条计划网点数 as planSLStoreCnt,
s.三米两秒挂条执行网点数 as execSLStoreCnt,
if(s.三米两秒挂条计划网点数 is null, null,concat( round( coalesce(s.三米两秒挂条执行网点数,0) /
s.三米两秒挂条计划网点数 * 100,2) ,'%')) as SLExecRate,
j.批发挂网计划网点数 as planSixJdStoreCnt,
j.批发挂网执行网点数 as execSixJdStoreCnt,
if(j.批发挂网计划网点数 is null, null,concat( round( coalesce(j.批发挂网执行网点数,0) / j.批发挂网计划网点数
* 100,2) ,'%')) as sixJdExecRate,
pd.端架计划网点数 as planEndcapStoreCnt,
pd.端架执行网点数 as execEndcapStoreCnt,
if(pd.端架计划网点数 is null, null,concat( round( coalesce(pd.端架执行网点数,0) / pd.端架计划网点数 * 100,2)
,'%')) as endcapExecRatePromoPeriDisp,
pd.地堆计划网点数 as planGsStoreCnt,
pd.地堆执行网点数 as execGsStoreCnt,
if(pd.地堆计划网点数 is null, null,concat( round( coalesce(pd.地堆执行网点数,0) / pd.地堆计划网点数 * 100,2)
,'%')) as gsExecRatePromoPeriDisp,
pd.其他陈列计划网点数 as planOtherDispStoreCnt,
pd.其他陈列执行网点数 as execOtherDispStoreCnt,
if(pd.其他陈列计划网点数 is null, null,concat( round( coalesce(pd.其他陈列执行网点数,0) / pd.其他陈列计划网点数
* 100,2) ,'%')) as otherDispExecRatePromoPeriDisp,
sd.零食计划网点数 as planSnackStoreCnt,
sd.零食执行网点数 as execSnackStoreCnt,
if(sd.零食计划网点数 is null, null,concat( round( coalesce(sd.零食执行网点数,0) / sd.零食计划网点数 * 100,2)
,'%')) as snackExecRate,
sp.档期计划网点数 as planPromoPeriStoreCnt,
sp.档期开展网点数 as launchPromoPeriStoreCnt,
if(sp.档期计划网点数 is null, null,concat( round( coalesce(sp.档期开展网点数,0) / sp.档期计划网点数 * 100,2)
,'%')) as launchRatePromoPeriExec,
sp.促销规格执行网点数 as execPsStoreCnt,
if(sp.档期计划网点数 is null, null,concat( round( coalesce(sp.促销规格执行网点数,0) / sp.档期计划网点数 *
100,2) ,'%')) as psExecRatePromoPeriExec,
sp.促销口味执行网点数 as execPfStoreCnt,
if(sp.档期计划网点数 is null, null,concat( round( coalesce(sp.促销口味执行网点数,0) / sp.档期计划网点数 *
100,2) ,'%')) as pfExecRatePromoPeriExec,
sp.促销价执行网点数 as execPpStoreCnt,
if(sp.档期计划网点数 is null, null,concat( round( coalesce(sp.促销价执行网点数,0) / sp.档期计划网点数 *
100,2) ,'%')) as ppExecRatePromoPeriExec,
sp.海报计划网点数 as planPosterStoreCnt,
sp.海报执行网点数 as execPosterStoreCnt,
if(sp.海报计划网点数 is null, null,concat( round( coalesce(sp.海报执行网点数,0) / sp.海报计划网点数 * 100,2)
,'%')) as posterExecRate
FROM (
SELECT region_name, district_name
FROM sales_ap_display
<where>
<include
refid=
"deptZQQuery"
/>
</where>
UNION
SELECT region_name, district_name
FROM sales_ap_display_s
<where>
<include
refid=
"deptZQQuery"
/>
</where>
UNION
SELECT region_name, district_name
FROM sales_ap_display_j
<where>
<include
refid=
"deptZQQuery"
/>
</where>
UNION
SELECT region_name, district_name
FROM sales_ap_promotion_display
<where>
<include
refid=
"deptZQQuery"
/>
</where>
UNION
SELECT region_name, district_name
FROM sales_ap_snacks_display
<where>
<include
refid=
"deptZQQuery"
/>
</where>
UNION
SELECT region_name, district_name
FROM sales_ap_promotion
<where>
<include
refid=
"deptZQQuery"
/>
</where>
) AS ar
LEFT JOIN (select region_name,
district_name,
sum(main_shelf_type_sn) as 主货架计划网点数,
sum(if(actual_main_shelf_executed is not null and actual_main_shelf_executed = '执行', 1,
0)) as 主货架执行网点数,
sum(end_cap_qty_sn) as 常规端架计划网点数,
sum(if(actual_end_cap_executed is not null and actual_end_cap_executed = '执行', 1,
0)) as 常规端架执行网点数,
sum(floor_stack_area_sn) as 常规地堆计划网点数,
sum(if(actual_floor_stack_executed is not null and actual_floor_stack_executed = '执行', 1,
0)) as 常规地堆执行网点数,
sum(multi_point_display_sn) as 多点陈列计划网点数,
sum(if(actual_multi_display_executed is not null and actual_multi_display_executed = '执行',
1,
0)) as 多点陈列执行网点数,
sum(hanging_strip_sn) as 挂条计划网点数,
sum(if(hanging_strip_executed is not null and hanging_strip_executed = '执行', 1,
0)) as 挂条执行网点数
from sales_ap_display
<where>
<include
refid=
"deptZQQuery"
/>
</where>
group by region_name, district_name) d
ON ar.region_name = d.region_name AND ar.district_name = d.district_name
LEFT JOIN (select region_name,
district_name,
sum(display_sn60) 三米两秒挂条计划网点数,
sum(actual_display_qty60) 三米两秒挂条执行网点数
from sales_ap_display_s
<where>
<include
refid=
"deptZQQuery"
/>
</where>
group by region_name, district_name) s
ON ar.region_name = s.region_name AND ar.district_name = s.district_name
LEFT JOIN (select region_name,
district_name,
sum(gw_sn6) 批发挂网计划网点数,
sum(actual_gw6) 批发挂网执行网点数
from sales_ap_display_j
<where>
<include
refid=
"deptZQQuery"
/>
</where>
group by region_name, district_name) j
ON ar.region_name = j.region_name AND ar.district_name = j.district_name
left join (select region_name,
district_name,
sum(end_cap_sn) 端架计划网点数,
sum(if(actual_end_cap_executed is not null and actual_end_cap_executed = '执行', 1,
0)) as 端架执行网点数,
sum(floor_stack_sn) 地堆计划网点数,
sum(if(actual_floor_stack_executed is not null and actual_floor_stack_executed = '执行', 1,
0)) as 地堆执行网点数,
sum(other_display_sn) 其他陈列计划网点数,
sum(if(actual_other_display_executed is not null and actual_other_display_executed = '执行',
1, 0)) as 其他陈列执行网点数
from sales_ap_promotion_display
<where>
<include
refid=
"deptZQQuery"
/>
</where>
group by region_name, district_name) pd
on ar.region_name = pd.region_name and ar.district_name = pd.district_name
left join (select region_name,
district_name,
sum(actual_display_sn) 零食计划网点数,
sum(if(actual_display_sn = 1, if(snack_display_executed = '执行', 1, 0),
if(snack_display_executed = '执行', actual_end_cap_qty, 0))) 零食执行网点数
from sales_ap_snacks_display
<where>
<include
refid=
"deptZQQuery"
/>
</where>
group by region_name, district_name) sd
on ar.region_name = sd.region_name and ar.district_name = sd.district_name
left join (select region_name,
district_name,
sum(promotion_sn) 档期计划网点数,
sum(if(promotion_implementation_status = '是', 1, 0)) 档期开展网点数,
sum(if(spec_execution_status = '执行', 1, 0)) 促销规格执行网点数,
sum(if(flavor_execution_status = '执行', 1, 0)) 促销口味执行网点数,
sum(if(promotion_price_execution_status = '执行', 1, 0)) 促销价执行网点数,
sum(poster_sn) 海报计划网点数,
sum(if(poster_sn is null, null, if(poster_execution_status = '执行', 1, 0))) 海报执行网点数
from sales_ap_promotion
<where>
<include
refid=
"deptZQQuery"
/>
</where>
group by region_name, district_name) sp
on ar.region_name = sp.region_name and ar.district_name = sp.district_name
</select>
<sql
id =
"deptDQQuery"
>
<if
test=
"salesMonth != null"
>
and sales_month = #{salesMonth}
</if>
<if
test=
"deptNames != null"
>
and (region_name in
<foreach
collection=
"deptNames"
item=
"item"
open=
"("
close=
")"
separator=
","
>
#{item}
</foreach>
)
</if>
</sql>
<select
id=
"queryDeptAPReportDQ"
parameterType=
"com.sfa.operation.domain.sales.wq.SalesApWq"
resultType=
"java.util.Map"
>
SELECT ar.region_name as regionName,
d.主货架计划网点数 as planMsStoreCnt,
d.主货架执行网点数 as execMsStoreCnt,
if(d.主货架计划网点数 is null, null,concat( round( coalesce(d.主货架执行网点数,0) / d.主货架计划网点数 *
100,2) ,'%')) as msExecRate,
d.常规端架计划网点数 as planRegEndcapStoreCnt,
d.常规端架执行网点数 as execRegEndcapStoreCnt,
if(d.常规端架计划网点数 is null, null,concat( round( coalesce(d.常规端架执行网点数,0) / d.常规端架计划网点数
* 100,2) ,'%')) as endcapExecRate,
d.常规地堆计划网点数 as planRegGsStoreCnt,
d.常规地堆执行网点数 as execRegGsStoreCnt,
if(d.常规地堆计划网点数 is null, null,concat( round( coalesce(d.常规地堆执行网点数,0) / d.常规地堆计划网点数
* 100,2) ,'%')) as gsExecRate,
d.多点陈列计划网点数 as planMpDispStoreCnt,
d.多点陈列执行网点数 as execMpDispStoreCnt,
if(d.多点陈列计划网点数 is null, null,concat( round( coalesce(d.多点陈列执行网点数,0) / d.多点陈列计划网点数
* 100,2) ,'%')) as mpDispExecRate,
d.挂条计划网点数 as planHsStoreCnt,
d.挂条执行网点数 as execHsStoreCnt,
if(d.挂条计划网点数 is null, null,concat( round( coalesce(d.挂条执行网点数,0) / d.挂条计划网点数 * 100,2)
,'%')) as HsExecRate,
s.三米两秒挂条计划网点数 as planSLStoreCnt,
s.三米两秒挂条执行网点数 as execSLStoreCnt,
if(s.三米两秒挂条计划网点数 is null, null,concat( round( coalesce(s.三米两秒挂条执行网点数,0) /
s.三米两秒挂条计划网点数 * 100,2) ,'%')) as SLExecRate,
j.批发挂网计划网点数 as planSixJdStoreCnt,
j.批发挂网执行网点数 as execSixJdStoreCnt,
if(j.批发挂网计划网点数 is null, null,concat( round( coalesce(j.批发挂网执行网点数,0) / j.批发挂网计划网点数
* 100,2) ,'%')) as sixJdExecRate,
pd.端架计划网点数 as planEndcapStoreCnt,
pd.端架执行网点数 as execEndcapStoreCnt,
if(pd.端架计划网点数 is null, null,concat( round( coalesce(pd.端架执行网点数,0) / pd.端架计划网点数 * 100,2)
,'%')) as endcapExecRatePromoPeriDisp,
pd.地堆计划网点数 as planGsStoreCnt,
pd.地堆执行网点数 as execGsStoreCnt,
if(pd.地堆计划网点数 is null, null,concat( round( coalesce(pd.地堆执行网点数,0) / pd.地堆计划网点数 * 100,2)
,'%')) as gsExecRatePromoPeriDisp,
pd.其他陈列计划网点数 as planOtherDispStoreCnt,
pd.其他陈列执行网点数 as execOtherDispStoreCnt,
if(pd.其他陈列计划网点数 is null, null,concat( round( coalesce(pd.其他陈列执行网点数,0) / pd.其他陈列计划网点数
* 100,2) ,'%')) as otherDispExecRatePromoPeriDisp,
sd.零食计划网点数 as planSnackStoreCnt,
sd.零食执行网点数 as execSnackStoreCnt,
if(sd.零食计划网点数 is null, null,concat( round( coalesce(sd.零食执行网点数,0) / sd.零食计划网点数 * 100,2)
,'%')) as snackExecRate,
sp.档期计划网点数 as planPromoPeriStoreCnt,
sp.档期开展网点数 as launchPromoPeriStoreCnt,
if(sp.档期计划网点数 is null, null,concat( round( coalesce(sp.档期开展网点数,0) / sp.档期计划网点数 * 100,2)
,'%')) as launchRatePromoPeriExec,
sp.促销规格执行网点数 as execPsStoreCnt,
if(sp.档期计划网点数 is null, null,concat( round( coalesce(sp.促销规格执行网点数,0) / sp.档期计划网点数 *
100,2) ,'%')) as psExecRatePromoPeriExec,
sp.促销口味执行网点数 as execPfStoreCnt,
if(sp.档期计划网点数 is null, null,concat( round( coalesce(sp.促销口味执行网点数,0) / sp.档期计划网点数 *
100,2) ,'%')) as pfExecRatePromoPeriExec,
sp.促销价执行网点数 as execPpStoreCnt,
if(sp.档期计划网点数 is null, null,concat( round( coalesce(sp.促销价执行网点数,0) / sp.档期计划网点数 *
100,2) ,'%')) as ppExecRatePromoPeriExec,
sp.海报计划网点数 as planPosterStoreCnt,
sp.海报执行网点数 as execPosterStoreCnt,
if(sp.海报计划网点数 is null, null,concat( round( coalesce(sp.海报执行网点数,0) / sp.海报计划网点数 * 100,2)
,'%')) as posterExecRate
FROM (
SELECT region_name
FROM sales_ap_display
<where>
<include
refid=
"deptDQQuery"
/>
</where>
UNION
SELECT region_name
FROM sales_ap_display_s
<where>
<include
refid=
"deptDQQuery"
/>
</where>
UNION
SELECT region_name
FROM sales_ap_display_j
<where>
<include
refid=
"deptDQQuery"
/>
</where>
UNION
SELECT region_name
FROM sales_ap_promotion_display
<where>
<include
refid=
"deptDQQuery"
/>
</where>
UNION
SELECT region_name
FROM sales_ap_snacks_display
<where>
<include
refid=
"deptDQQuery"
/>
</where>
UNION
SELECT region_name
FROM sales_ap_promotion
<where>
<include
refid=
"deptDQQuery"
/>
</where>
) AS ar
LEFT JOIN (select region_name,
sum(main_shelf_type_sn) as 主货架计划网点数,
sum(if(actual_main_shelf_executed is not null and actual_main_shelf_executed = '执行', 1,
0)) as 主货架执行网点数,
sum(end_cap_qty_sn) as 常规端架计划网点数,
sum(if(actual_end_cap_executed is not null and actual_end_cap_executed = '执行', 1,
0)) as 常规端架执行网点数,
sum(floor_stack_area_sn) as 常规地堆计划网点数,
sum(if(actual_floor_stack_executed is not null and actual_floor_stack_executed = '执行', 1,
0)) as 常规地堆执行网点数,
sum(multi_point_display_sn) as 多点陈列计划网点数,
sum(if(actual_multi_display_executed is not null and actual_multi_display_executed = '执行',
1,
0)) as 多点陈列执行网点数,
sum(hanging_strip_sn) as 挂条计划网点数,
sum(if(hanging_strip_executed is not null and hanging_strip_executed = '执行', 1,
0)) as 挂条执行网点数
from sales_ap_display
<where>
<include
refid=
"deptDQQuery"
/>
</where>
group by region_name) d
ON ar.region_name = d.region_name
LEFT JOIN (select region_name,
sum(display_sn60) 三米两秒挂条计划网点数,
sum(actual_display_qty60) 三米两秒挂条执行网点数
from sales_ap_display_s
<where>
<include
refid=
"deptDQQuery"
/>
</where>
group by region_name) s
ON ar.region_name = s.region_name
LEFT JOIN (select region_name,
sum(gw_sn6) 批发挂网计划网点数,
sum(actual_gw6) 批发挂网执行网点数
from sales_ap_display_j
<where>
<include
refid=
"deptDQQuery"
/>
</where>
group by region_name) j
ON ar.region_name = j.region_name
left join (select region_name,
sum(end_cap_sn) 端架计划网点数,
sum(if(actual_end_cap_executed is not null and actual_end_cap_executed = '执行', 1,
0)) as 端架执行网点数,
sum(floor_stack_sn) 地堆计划网点数,
sum(if(actual_floor_stack_executed is not null and actual_floor_stack_executed = '执行', 1,
0)) as 地堆执行网点数,
sum(other_display_sn) 其他陈列计划网点数,
sum(if(actual_other_display_executed is not null and actual_other_display_executed = '执行',
1, 0)) as 其他陈列执行网点数
from sales_ap_promotion_display
<where>
<include
refid=
"deptDQQuery"
/>
</where>
group by region_name) pd
on ar.region_name = pd.region_name
left join (select region_name,
sum(actual_display_sn) 零食计划网点数,
sum(if(actual_display_sn = 1, if(snack_display_executed = '执行', 1, 0),
if(snack_display_executed = '执行', actual_end_cap_qty, 0))) 零食执行网点数
from sales_ap_snacks_display
<where>
<include
refid=
"deptDQQuery"
/>
</where>
group by region_name) sd
on ar.region_name = sd.region_name
left join (select region_name,
sum(promotion_sn) 档期计划网点数,
sum(if(promotion_implementation_status = '是', 1, 0)) 档期开展网点数,
sum(if(spec_execution_status = '执行', 1, 0)) 促销规格执行网点数,
sum(if(flavor_execution_status = '执行', 1, 0)) 促销口味执行网点数,
sum(if(promotion_price_execution_status = '执行', 1, 0)) 促销价执行网点数,
sum(poster_sn) 海报计划网点数,
sum(if(poster_sn is null, null, if(poster_execution_status = '执行', 1, 0))) 海报执行网点数
from sales_ap_promotion
<where>
<include
refid=
"deptDQQuery"
/>
</where>
group by region_name) sp
on ar.region_name = sp.region_name
</select>
</mapper>
</mapper>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论