提交 9f730abe authored 作者: 000516's avatar 000516

城市经理-店内执行汇总看板

上级 3bfcc803
package com.sfa.operation.controller.sales.query;
import com.sfa.common.core.constant.RoleConstants;
import com.sfa.common.core.enums.ECode;
import com.sfa.common.core.exception.CheckedException;
import com.sfa.common.security.utils.SecurityUtils;
import com.sfa.operation.config.ConstantValue;
import com.sfa.operation.pojo.sales.request.SalesApRequest;
import com.sfa.operation.service.qc.IQinceMarketEmployeeService;
import com.sfa.operation.service.sales.IApDisplayQueryService;
import com.sfa.operation.service.sales.IApPromotionQueryService;
import com.sfa.system.api.domain.SysRole;
import com.sfa.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
/**
* @author : liqiulin
* @date : 2025-12-01 15
* @describe :
*/
@RestController
@RequestMapping("/sales/ap_report/query")
public class APReportQueryController {
@Autowired
private IApDisplayQueryService apDisplayQueryService;
@Autowired
private IQinceMarketEmployeeService qinceMarketEmployeeService;
@Autowired
private ConstantValue constantValue;
/**
* 店内执行-城市经理
* @param request
* @return
*/
@GetMapping("/store_cm")
public Object queryStoreAPReport(SalesApRequest request) {
checkPermission(request);
return apDisplayQueryService.queryStoreAPReport(request);
}
private void checkPermission(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;
}
// 是区域销售部的人员:1、销售查看人客关系;2、大区TM查看当前部门下所有数据
// 判断是否是大区TM
String empNo = loginUser.getUsername();
Optional<SysRole> first = roles.stream().filter(role -> RoleConstants.DISTRICT_AP_MANAGER.equals(role.getRoleKey())).findFirst();
if (first.isPresent()) {
String deptName = loginUser.getSysUser().getDept().getDeptName();
salesApRequest.setDeptNames("000889".equals(empNo) ? Arrays.asList(deptName,"北京特区") : Arrays.asList(deptName));
return;
}
// 不是大区TM,判断是否是销售人员(人客关系)
List<String> dealerCodes = qinceMarketEmployeeService.checkPermission(empNo);
if (dealerCodes.isEmpty()) {
throw new CheckedException(ECode.QC_MARKET_EMP_ERROR);
}
// salesApRequest.setNickName(loginUser.getNickName());
salesApRequest.setDealerCodes(dealerCodes);
}
}
...@@ -13,4 +13,6 @@ public interface ISalesApDisplayDao { ...@@ -13,4 +13,6 @@ public interface ISalesApDisplayDao {
PageInfo page(SalesApWq salesApWq); PageInfo page(SalesApWq salesApWq);
void updateDetail(SalesApDisplayDto salesApDisplayDto); void updateDetail(SalesApDisplayDto salesApDisplayDto);
Object queryStoreAPReport(SalesApWq build);
} }
...@@ -45,6 +45,11 @@ public class SalesApDisplayDaoImpl implements ISalesApDisplayDao { ...@@ -45,6 +45,11 @@ public class SalesApDisplayDaoImpl implements ISalesApDisplayDao {
salesapdisMapper.updateById(updateDo); salesapdisMapper.updateById(updateDo);
} }
@Override
public Object queryStoreAPReport(SalesApWq build) {
return salesapdisMapper.queryStoreAPReport(build);
}
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())) {
......
...@@ -2,8 +2,12 @@ package com.sfa.operation.domain.sales.mapper; ...@@ -2,8 +2,12 @@ package com.sfa.operation.domain.sales.mapper;
import com.sfa.operation.domain.sales.entity.SalesApDisplay; import com.sfa.operation.domain.sales.entity.SalesApDisplay;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sfa.operation.domain.sales.wq.SalesApWq;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
/** /**
* @author a02200059 * @author a02200059
* @description 针对表【sales_ap_display(营销中心-活动计划-陈列(计划+执行))】的数据库操作Mapper * @description 针对表【sales_ap_display(营销中心-活动计划-陈列(计划+执行))】的数据库操作Mapper
...@@ -13,6 +17,7 @@ import org.springframework.stereotype.Repository; ...@@ -13,6 +17,7 @@ import org.springframework.stereotype.Repository;
@Repository @Repository
public interface SalesApDisplayMapper extends BaseMapper<SalesApDisplay> { public interface SalesApDisplayMapper extends BaseMapper<SalesApDisplay> {
List<Map<String,Object>> queryStoreAPReport(SalesApWq build);
} }
......
...@@ -19,8 +19,10 @@ public class SalesApWq { ...@@ -19,8 +19,10 @@ public class SalesApWq {
* 大区/战区 * 大区/战区
*/ */
private String deptName; private String deptName;
private List<String> deptNames;
private String nickName; private String nickName;
private List<String> dealerCodes; private List<String> dealerCodes;
private String dealerCodeStrs;
/** /**
* 经销商编码(精准)/名称(模糊) * 经销商编码(精准)/名称(模糊)
*/ */
...@@ -33,4 +35,12 @@ public class SalesApWq { ...@@ -33,4 +35,12 @@ public class SalesApWq {
* 系统名称 * 系统名称
*/ */
private String lineNameLike; private String lineNameLike;
/**
* 登录人工号
*/
private String empNo;
/**
* 部门编码
*/
private String deptCode;
} }
...@@ -29,19 +29,31 @@ public class SalesApRequest { ...@@ -29,19 +29,31 @@ public class SalesApRequest {
private String dealerCN; private String dealerCN;
private String cityManager; private String cityManager;
/** /**
* 大区/战区 * 大区/战区(用来查询大区/战区两列)
*/ */
private String deptName; private String deptName;
private List<String> deptNames;
/** /**
* 门店编码/名称(模糊) * 门店编码/名称(模糊)
*/ */
private String storeCN; private String storeCN;
/**
* 登录人姓名
*/
private String nickName; private String nickName;
private List<String> dealerCodes; private List<String> dealerCodes;
/** /**
* 系统名称 * 系统名称
*/ */
private String lineNameLike; private String lineNameLike;
/**
* 登录人工号
*/
private String empNo;
/**
* 部门编码
*/
private String deptCode;
// ######################## 通用查询 ######################## // ######################## 通用查询 ########################
......
...@@ -20,4 +20,6 @@ public interface IApDisplayQueryService { ...@@ -20,4 +20,6 @@ public interface IApDisplayQueryService {
PageInfo slPage(SalesApRequest salesApRequest); PageInfo slPage(SalesApRequest salesApRequest);
PageInfo jgPage(SalesApRequest salesApRequest); PageInfo jgPage(SalesApRequest salesApRequest);
Object queryStoreAPReport(SalesApRequest request);
} }
...@@ -59,6 +59,11 @@ public class ApDisplayQueryServiceImpl implements IApDisplayQueryService { ...@@ -59,6 +59,11 @@ public class ApDisplayQueryServiceImpl implements IApDisplayQueryService {
return salesApDisplayJDao.page(build(salesApRequest)); return salesApDisplayJDao.page(build(salesApRequest));
} }
@Override
public Object queryStoreAPReport(SalesApRequest salesApRequest) {
return salesApDisplayDao.queryStoreAPReport(build(salesApRequest));
}
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);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论