提交 44b9c1b6 authored 作者: 000516's avatar 000516

店内执行-城市经理看板,不返回没有城市经理的信息;

......@@ -25,7 +25,8 @@ public class ControllerResponseAdvice implements ResponseBodyAdvice<Object>{
*/
@Override
public boolean supports(MethodParameter methodParameter, Class converterType) {
if (methodParameter.getParameterType().isAssignableFrom(AjaxResult.class)) {
String parameterName = methodParameter.getParameterType().getCanonicalName();
if ("com.sfa.common.core.web.domain.AjaxResult".equals(parameterName)) {
return false;
}
return !methodParameter.getParameterType().isAssignableFrom(R.class);
......
......@@ -23,16 +23,14 @@ import java.util.Optional;
* @describe : 常规陈列、档期陈列、零食陈列
*/
@RestController
@RequestMapping("/sales/ap_display")
public class ApDisplayCoreController {
@Autowired
private IApDisplayCoreService apDisplayCoreService;
@Autowired
private IQinceMarketEmployeeService qinceMarketEmployeeService;
/**
* 常规陈列 根据id更新
*/
@PutMapping("/core/{id}")
@PutMapping("/sales/ap_display/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){
// checkPermission();
......@@ -43,7 +41,7 @@ public class ApDisplayCoreController {
/**
* 档期陈列 根据id更新
*/
@PutMapping("/core_pro/{id}")
@PutMapping("/sales/ap_display/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){
// checkPermission();
......@@ -54,7 +52,7 @@ public class ApDisplayCoreController {
/**
* 零食陈列 根据id更新
*/
@PutMapping("/core_snack/{id}")
@PutMapping("/sales/ap_display/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){
// checkPermission();
......@@ -65,7 +63,7 @@ public class ApDisplayCoreController {
/**
* 三米两秒
*/
@PutMapping("/core_s/{id}")
@PutMapping("/sales/ap_display/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){
// checkPermission();
......@@ -76,7 +74,7 @@ public class ApDisplayCoreController {
/**
* 六小金刚
*/
@PutMapping("/core_j/{id}")
@PutMapping("/sales/ap_display/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){
// checkPermission();
......@@ -84,6 +82,22 @@ public class ApDisplayCoreController {
apDisplayCoreService.putDisplayJDetail(request);
}
/**
* 更新AP促销计划详情
* 大区总、战区经理、城市经理、TM,可以更新
*/
@PutMapping("/sales/ap_promotion/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 putPromotionDetail(@PathVariable("id") Long sapId, @RequestBody SalesApRequest request) {
// checkPermission();
request.setSapId(sapId);
apDisplayCoreService.putPromotionDetail(request);
}
// @Autowired
// private IQinceMarketEmployeeService qinceMarketEmployeeService;
// private void checkPermission(){
// // 是区域销售部的人员,查看人客关系
// LoginUser loginUser = SecurityUtils.getLoginUser();
......
package com.sfa.operation.controller.sales.core;
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.annotation.Logical;
import com.sfa.common.security.annotation.RequiresRoles;
import com.sfa.common.security.utils.SecurityUtils;
import com.sfa.operation.pojo.sales.request.SalesApRequest;
import com.sfa.operation.service.qc.IQinceMarketEmployeeService;
import com.sfa.operation.service.sales.IApPromotionCoreService;
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.*;
import java.util.List;
import java.util.Optional;
/**
* @author : liqiulin
* @date : 2025-09-17 15
* @describe : 档期计划
*/
@RestController
@RequestMapping("/sales/ap_promotion/core")
public class ApPromotionCoreController {
@Autowired
private IApPromotionCoreService apPromotionCoreService;
@Autowired
private IQinceMarketEmployeeService qinceMarketEmployeeService;
/**
* 更新AP促销计划详情
* 大区总、战区经理、城市经理、TM,可以更新
*/
@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) {
// checkPermission();
request.setSapId(sapId);
apPromotionCoreService.updateDetail(request);
}
// private void checkPermission(){
// // 是区域销售部的人员,查看人客关系
// LoginUser loginUser = SecurityUtils.getLoginUser();
// // 只有销售(促销AP管理:cxapgl)、大区TM(大区TM促销AP管理:dqtmcxapgl)两种角色才可以修改
// 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();
// if (!first.isPresent()) {
// 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);
//// }
// }
}
......@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
......@@ -31,9 +32,7 @@ import java.util.Optional;
* 三米两秒
* 六小金刚
*/
@RequiresPermissions("promotion:display_schedule:list")
@RestController
@RequestMapping("/sales/ap_display/query")
public class ApDisplayQueryController {
@Autowired
private IApDisplayQueryService apDisplayQueryService;
......@@ -45,7 +44,7 @@ public class ApDisplayQueryController {
/**
* 常规陈列
*/
@GetMapping("/page")
@GetMapping("/sales/ap_display/query/page")
public PageInfo page(SalesApRequest salesApRequest){
checkPermission(salesApRequest);
return apDisplayQueryService.page(salesApRequest);
......@@ -54,7 +53,7 @@ public class ApDisplayQueryController {
/**
* 档期陈列
*/
@GetMapping("/pro_page")
@GetMapping("/sales/ap_display/query/pro_page")
public PageInfo proPage(SalesApRequest salesApRequest){
checkPermission(salesApRequest);
return apDisplayQueryService.proPage(salesApRequest);
......@@ -63,7 +62,7 @@ public class ApDisplayQueryController {
/**
* 零食陈列
*/
@GetMapping("/snack_page")
@GetMapping("/sales/ap_display/query/snack_page")
public PageInfo snackPage(SalesApRequest salesApRequest){
checkPermission(salesApRequest);
return apDisplayQueryService.snackPage(salesApRequest);
......@@ -72,7 +71,7 @@ public class ApDisplayQueryController {
/**
* 三米两秒
*/
@GetMapping("/sl_page")
@GetMapping("/sales/ap_display/query/sl_page")
public PageInfo slPage(SalesApRequest salesApRequest){
checkPermission(salesApRequest);
return apDisplayQueryService.slPage(salesApRequest);
......@@ -81,12 +80,21 @@ public class ApDisplayQueryController {
/**
* 六小金刚
*/
@GetMapping("/jg_page")
@GetMapping("/sales/ap_display/query/jg_page")
public PageInfo jgPage(SalesApRequest salesApRequest){
checkPermission(salesApRequest);
return apDisplayQueryService.jgPage(salesApRequest);
}
/**
* 档期计划
*/
@GetMapping("/sales/ap_promotion/query/page")
public PageInfo promotionPage(SalesApRequest salesApRequest){
checkPermission(salesApRequest);
return apDisplayQueryService.promotionPage(salesApRequest);
}
/**
* 判断登录人权限
* 判断是否存在人客关系,存在:根据负责经销商查询数据;不存在:判断是否是销售部人员。是:根据部门查询;不是:返回全部数据
......@@ -106,8 +114,11 @@ public class ApDisplayQueryController {
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));
ArrayList<String> deptNames = new ArrayList<>();
deptNames.add(loginUser.getSysUser().getDept().getDeptName());
if ("000889".equals(empNo)){
deptNames.add("北京特区");
}
return;
}
// 不是大区TM,判断是否是销售人员(人客关系)
......
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.core.web.domain.PageInfo;
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.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-09-17 15
* @describe : 档期计划
*/
@RestController
@RequestMapping("/sales/ap_promotion/query")
public class ApPromotionQueryController {
@Autowired
private IApPromotionQueryService apPromotionQueryService;
@Autowired
private IQinceMarketEmployeeService qinceMarketEmployeeService;
@Autowired
private ConstantValue constantValue;
@GetMapping("/page")
public PageInfo page(SalesApRequest salesApRequest){
checkPermission(salesApRequest);
return apPromotionQueryService.page(salesApRequest);
}
/**
* 判断登录人权限
* 判断是否存在人客关系,存在:根据负责经销商查询数据;不存在:判断是否是销售部人员。是:根据部门查询;不是:返回全部数据
*/
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);
}
}
......@@ -88,6 +88,13 @@ public class SalesApDisplayDaoImpl implements ISalesApDisplayDao {
.in(SalesApDisplay::getDistrictName, salesApWq.getDeptNames())
);
}
if (StringUtils.isNotBlank(salesApWq.getDeptName())){
qw.and(
wrapper -> wrapper.like(SalesApDisplay::getRegionName, salesApWq.getDeptName())
.or()
.like(SalesApDisplay::getDistrictName, salesApWq.getDeptName())
);
}
if (StringUtils.isNotBlank(salesApWq.getNickName())){
qw.and(
wrapper -> wrapper.eq(SalesApDisplay::getRegionManager, salesApWq.getNickName())
......
......@@ -71,6 +71,13 @@ public class SalesApDisplayJDaoImpl implements ISalesApDisplayJDao {
.in(SalesApDisplayJ::getDistrictName, salesApWq.getDeptNames())
);
}
if (StringUtils.isNotBlank(salesApWq.getDeptName())) {
qw.and(
wrapper -> wrapper.like(SalesApDisplayJ::getRegionName, salesApWq.getDeptName())
.or()
.like(SalesApDisplayJ::getDistrictName, salesApWq.getDeptName())
);
}
if (StringUtils.isNotBlank(salesApWq.getNickName())){
qw.and(
wrapper -> wrapper.eq(SalesApDisplayJ::getRegionManager, salesApWq.getNickName())
......
......@@ -70,6 +70,13 @@ public class SalesApDisplaySDaoImpl implements ISalesApDisplaySDao {
.in(SalesApDisplayS::getDistrictName, salesApWq.getDeptNames())
);
}
if (StringUtils.isNotBlank(salesApWq.getDeptName())) {
qw.and(
wrapper -> wrapper.like(SalesApDisplayS::getRegionName, salesApWq.getDeptName())
.or()
.like(SalesApDisplayS::getDistrictName, salesApWq.getDeptName())
);
}
if (StringUtils.isNotBlank(salesApWq.getNickName())){
qw.and(
wrapper -> wrapper.eq(SalesApDisplayS::getRegionManager, salesApWq.getNickName())
......
......@@ -32,6 +32,7 @@ import java.util.Objects;
public class SalesApPromotionDisplayDaoImpl implements ISalesApPromotionDisplayDao {
@Autowired
private SalesApPromotionDisplayMapper salesApPromotionDisplayMapper;
@Override
public PageInfo page(SalesApWq salesApWq) {
LambdaQueryWrapper<SalesApPromotionDisplay> qw = buildWq(salesApWq);
......@@ -42,30 +43,37 @@ public class SalesApPromotionDisplayDaoImpl implements ISalesApPromotionDisplayD
@Override
public void updateDetail(SalesApPromotionDisplayDto pdDto) {
SalesApPromotionDisplay salesApPromotionDisplay = salesApPromotionDisplayMapper.selectById(pdDto.getSapdId());
if (!DateUtils.isSameYearMonth(salesApPromotionDisplay.getSalesMonth(),new Date())){
if (!DateUtils.isSameYearMonth(salesApPromotionDisplay.getSalesMonth(), new Date())) {
throw new CheckedException(ECode.SALES_AP_UPDATE_ERROR);
}
SalesApPromotionDisplay pd = new SalesApPromotionDisplay();
BeanUtils.copyProperties(pdDto,pd);
BeanUtils.copyProperties(pdDto, pd);
salesApPromotionDisplayMapper.updateById(pd);
}
private LambdaQueryWrapper<SalesApPromotionDisplay> buildWq(SalesApWq salesApWq) {
LambdaQueryWrapper<SalesApPromotionDisplay> qw = new LambdaQueryWrapper<>();
if (Objects.nonNull(salesApWq.getSalesMonth())){
if (Objects.nonNull(salesApWq.getSalesMonth())) {
qw.eq(SalesApPromotionDisplay::getSalesMonth, salesApWq.getSalesMonth());
}
if (!CollectionUtils.isEmpty(salesApWq.getDealerCodes())) {
qw.in(SalesApPromotionDisplay::getDealerCode, salesApWq.getDealerCodes());
}
if (!CollectionUtils.isEmpty(salesApWq.getDeptNames())){
if (!CollectionUtils.isEmpty(salesApWq.getDeptNames())) {
qw.and(
wrapper -> wrapper.in(SalesApPromotionDisplay::getRegionName, salesApWq.getDeptNames())
.or()
.in(SalesApPromotionDisplay::getDistrictName, salesApWq.getDeptNames())
);
}
if (StringUtils.isNotBlank(salesApWq.getNickName())){
if (StringUtils.isNotBlank(salesApWq.getDeptName())) {
qw.and(
wrapper -> wrapper.like(SalesApPromotionDisplay::getRegionName, salesApWq.getDeptName())
.or()
.like(SalesApPromotionDisplay::getDistrictName, salesApWq.getDeptName())
);
}
if (StringUtils.isNotBlank(salesApWq.getNickName())) {
qw.and(
wrapper -> wrapper.eq(SalesApPromotionDisplay::getRegionManager, salesApWq.getNickName())
.or()
......@@ -74,24 +82,24 @@ public class SalesApPromotionDisplayDaoImpl implements ISalesApPromotionDisplayD
.eq(SalesApPromotionDisplay::getCityManager, salesApWq.getNickName())
);
}
if (StringUtils.isNotBlank(salesApWq.getDealerCN())){
if (StringUtils.isNotBlank(salesApWq.getDealerCN())) {
qw.and(
wrapper -> wrapper.like(SalesApPromotionDisplay::getDealerName, salesApWq.getDealerCN())
.or()
.like(SalesApPromotionDisplay::getDealerCode, salesApWq.getDealerCN())
);
}
if (StringUtils.isNotBlank(salesApWq.getStoreCN())){
if (StringUtils.isNotBlank(salesApWq.getStoreCN())) {
qw.and(
wrapper -> wrapper.like(SalesApPromotionDisplay::getStoreName, salesApWq.getStoreCN())
.or()
.like(SalesApPromotionDisplay::getStoreCode, salesApWq.getStoreCN())
);
}
if (StringUtils.isNotBlank(salesApWq.getLineNameLike())){
if (StringUtils.isNotBlank(salesApWq.getLineNameLike())) {
qw.like(SalesApPromotionDisplay::getLineName, salesApWq.getLineNameLike());
}
if (StringUtils.isNotBlank(salesApWq.getRqStatus())){
if (StringUtils.isNotBlank(salesApWq.getRqStatus())) {
qw.and(
wrapper -> wrapper.eq(SalesApPromotionDisplay::getActualEndCapExecuted, salesApWq.getRqStatus())
.or()
......
......@@ -10,7 +10,6 @@ import com.sfa.common.core.utils.StringUtils;
import com.sfa.common.core.web.domain.PageInfo;
import com.sfa.common.core.web.page.TableSupport;
import com.sfa.operation.domain.sales.dao.ISalesApPromotionDao;
import com.sfa.operation.domain.sales.entity.SalesApDisplay;
import com.sfa.operation.domain.sales.entity.SalesApPromotion;
import com.sfa.operation.domain.sales.mapper.SalesApPromotionMapper;
import com.sfa.operation.domain.sales.wq.SalesApWq;
......@@ -20,8 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.Objects;
......@@ -93,6 +90,13 @@ public class SalesApPromotionImplDao implements ISalesApPromotionDao {
.in(SalesApPromotion::getDistrictName, salesApWq.getDeptNames())
);
}
if (StringUtils.isNotBlank(salesApWq.getDeptName())) {
qw.and(
wrapper -> wrapper.like(SalesApPromotion::getRegionName, salesApWq.getDeptName())
.or()
.like(SalesApPromotion::getDistrictName, salesApWq.getDeptName())
);
}
if (StringUtils.isNotBlank(salesApWq.getNickName())){
qw.and(
wrapper -> wrapper.eq(SalesApPromotion::getRegionManager, salesApWq.getNickName())
......
......@@ -68,6 +68,13 @@ public class SalesApSnacksDisplayDaoImpl implements ISalesApSnacksDisplayDao {
.in(SalesApSnacksDisplay::getDistrictName, salesApWq.getDeptNames())
);
}
if (StringUtils.isNotBlank(salesApWq.getDeptName())) {
qw.and(
wrapper -> wrapper.like(SalesApSnacksDisplay::getRegionName, salesApWq.getDeptName())
.or()
.like(SalesApSnacksDisplay::getDistrictName, salesApWq.getDeptName())
);
}
if (StringUtils.isNotBlank(salesApWq.getNickName())){
qw.and(
wrapper -> wrapper.eq(SalesApSnacksDisplay::getRegionManager, salesApWq.getNickName())
......
......@@ -16,9 +16,13 @@ public class SalesApWq {
private Date salesMonth;
private String cityManager;
/**
* 大区/战区
* 前端搜索条件:大区/战区
*/
private String deptName;
/**
* 根据登录人,默认重置大区/战区信息
* 与deptName,不冲突
*/
private List<String> deptNames;
private String nickName;
private List<String> dealerCodes;
......
......@@ -17,4 +17,6 @@ public interface IApDisplayCoreService {
void putDisplaySDetail(SalesApRequest request);
void putDisplayJDetail(SalesApRequest request);
void putPromotionDetail(SalesApRequest request);
}
......@@ -21,6 +21,8 @@ public interface IApDisplayQueryService {
PageInfo jgPage(SalesApRequest salesApRequest);
PageInfo promotionPage(SalesApRequest salesApRequest);
Object queryStoreAPReport(SalesApRequest request);
Object queryDeptAPReport(SalesApRequest request);
......
package com.sfa.operation.service.sales;
import com.sfa.operation.pojo.sales.request.SalesApRequest;
/**
* @author : liqiulin
* @date : 2025-09-17 15
* @describe :
*/
public interface IApPromotionCoreService {
void updateDetail(SalesApRequest request);
}
package com.sfa.operation.service.sales;
import com.sfa.common.core.web.domain.PageInfo;
import com.sfa.operation.pojo.sales.request.SalesApRequest;
/**
* @author : liqiulin
* @date : 2025-09-17 15
* @describe :
*/
public interface IApPromotionQueryService {
PageInfo page(SalesApRequest salesApRequest);
}
package com.sfa.operation.service.sales.impl;
import cn.hutool.core.date.DatePattern;
import com.sfa.common.security.utils.SecurityUtils;
import com.sfa.operation.domain.sales.dao.*;
import com.sfa.operation.pojo.sales.request.SalesApRequest;
......@@ -9,6 +10,10 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.util.Date;
import java.util.Objects;
/**
* @author : liqiulin
* @date : 2025-09-16 16
......@@ -26,6 +31,8 @@ public class ApDisplayCoreServiceImpl implements IApDisplayCoreService {
private ISalesApDisplaySDao salesApDisplaySDao;
@Autowired
private ISalesApDisplayJDao salesApDisplayJDao;
@Autowired
private ISalesApPromotionDao salesApPromotionDao;
@Override
public void updateDetail(SalesApRequest request) {
SalesApDisplayDto salesApDisplayDto = new SalesApDisplayDto();
......@@ -70,4 +77,37 @@ public class ApDisplayCoreServiceImpl implements IApDisplayCoreService {
djDto.setUpdateBy(SecurityUtils.getNickName());
salesApDisplayJDao.updateDetail(djDto);
}
@Override
public void putPromotionDetail(SalesApRequest request) {
// 修改DB 日期值为null
try {
SalesApPromotionDto dto = new SalesApPromotionDto();
SalesApRequest.Promotion promotion = request.getPromotion();
BeanUtils.copyProperties(promotion, dto);
dto.setSapId(request.getSapId());
Date parse = DatePattern.NORM_DATE_FORMAT.parse("2000-01-01");
if (Objects.isNull(promotion.getActualPromotionStartDate())) {
dto.setIsActualPromotionStartDate(true);
} else if (promotion.getActualPromotionStartDate().compareTo(parse) == 0) {
dto.setIsActualPromotionStartDate(false);
}else {
dto.setIsActualPromotionStartDate(true);
}
if (Objects.isNull(promotion.getActualPromotionEndDate())) {
// DB 日期值无需修改
dto.setIsActualPromotionEndDate(true);
} else if (promotion.getActualPromotionEndDate().compareTo(parse) == 0) {
// DB 日期值无需修改
dto.setIsActualPromotionEndDate(false);
}else {
dto.setIsActualPromotionEndDate(true);
}
dto.setUpdateBy(SecurityUtils.getNickName());
salesApPromotionDao.updateById(dto);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
......@@ -2,6 +2,7 @@ package com.sfa.operation.service.sales.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import com.sfa.common.core.utils.StringUtils;
import com.sfa.common.core.utils.bean.BeanUtils;
import com.sfa.common.core.web.domain.PageInfo;
import com.sfa.operation.domain.feishu.dao.IQinceMarketEmployeeDao;
......@@ -11,8 +12,11 @@ import com.sfa.operation.pojo.sales.request.SalesApRequest;
import com.sfa.operation.service.sales.IApDisplayQueryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.awt.dnd.Autoscroll;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
......@@ -32,7 +36,8 @@ public class ApDisplayQueryServiceImpl implements IApDisplayQueryService {
private ISalesApDisplaySDao salesApDisplaySDao;
@Autowired
private ISalesApDisplayJDao salesApDisplayJDao;
@Autowired
private ISalesApPromotionDao salesApPromotionDao;
@Override
public PageInfo page(SalesApRequest salesApRequest) {
......@@ -59,6 +64,11 @@ public class ApDisplayQueryServiceImpl implements IApDisplayQueryService {
return salesApDisplayJDao.page(build(salesApRequest));
}
@Override
public PageInfo promotionPage(SalesApRequest salesApRequest) {
return salesApPromotionDao.page(build(salesApRequest));
}
@Override
public Object queryStoreAPReport(SalesApRequest salesApRequest) {
return salesApDisplayDao.queryStoreAPReport(build(salesApRequest));
......@@ -73,6 +83,12 @@ public class ApDisplayQueryServiceImpl implements IApDisplayQueryService {
SalesApWq salesApWq = new SalesApWq();
BeanUtils.copyProperties(salesApRequest,salesApWq);
salesApWq.setSalesMonth(salesApRequest.getSalesMonth() != null ? DateUtil.parse(salesApRequest.getSalesMonth() + "-01", DatePattern.NORM_DATE_PATTERN) : null);
// if (StringUtils.isNotBlank(salesApRequest.getDeptName())){
// List<String> deptNames = CollectionUtils.isEmpty(salesApWq.getDeptNames()) ? new ArrayList<>() : salesApWq.getDeptNames();
// deptNames.add(salesApRequest.getDeptName());
// salesApWq.setDeptNames(deptNames);
// }
return salesApWq;
}
}
package com.sfa.operation.service.sales.impl;
import cn.hutool.core.date.DatePattern;
import com.sfa.common.security.utils.SecurityUtils;
import com.sfa.operation.domain.sales.dao.ISalesApPromotionDao;
import com.sfa.operation.pojo.sales.request.SalesApRequest;
import com.sfa.operation.pojo.sales.response.SalesApPromotionDto;
import com.sfa.operation.service.sales.IApPromotionCoreService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.util.Date;
import java.util.Objects;
/**
* @author : liqiulin
* @date : 2025-09-17 15
* @describe :
*/
@Service
public class ApPromotionCoreServiceImpl implements IApPromotionCoreService {
@Autowired
private ISalesApPromotionDao salesApPromotionDao;
@Override
public void updateDetail(SalesApRequest request) {
// 修改DB 日期值为null
try {
SalesApPromotionDto dto = new SalesApPromotionDto();
SalesApRequest.Promotion promotion = request.getPromotion();
BeanUtils.copyProperties(promotion, dto);
dto.setSapId(request.getSapId());
Date parse = DatePattern.NORM_DATE_FORMAT.parse("2000-01-01");
if (Objects.isNull(promotion.getActualPromotionStartDate())) {
dto.setIsActualPromotionStartDate(true);
} else if (promotion.getActualPromotionStartDate().compareTo(parse) == 0) {
dto.setIsActualPromotionStartDate(false);
}else {
dto.setIsActualPromotionStartDate(true);
}
if (Objects.isNull(promotion.getActualPromotionEndDate())) {
// DB 日期值无需修改
dto.setIsActualPromotionEndDate(true);
} else if (promotion.getActualPromotionEndDate().compareTo(parse) == 0) {
// DB 日期值无需修改
dto.setIsActualPromotionEndDate(false);
}else {
dto.setIsActualPromotionEndDate(true);
}
dto.setUpdateBy(SecurityUtils.getNickName());
salesApPromotionDao.updateById(dto);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
package com.sfa.operation.service.sales.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import com.sfa.common.core.utils.bean.BeanUtils;
import com.sfa.common.core.web.domain.PageInfo;
import com.sfa.operation.domain.sales.dao.ISalesApPromotionDao;
import com.sfa.operation.domain.sales.wq.SalesApWq;
import com.sfa.operation.pojo.sales.request.SalesApRequest;
import com.sfa.operation.service.sales.IApPromotionQueryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author : liqiulin
* @date : 2025-09-17 15
* @describe :
*/
@Service
public class ApPromotionQueryServiceImpl implements IApPromotionQueryService {
@Autowired
private ISalesApPromotionDao salesApPromotionDao;
@Override
public PageInfo page(SalesApRequest salesApRequest) {
SalesApWq salesApWq = new SalesApWq();
BeanUtils.copyProperties(salesApRequest,salesApWq);
salesApWq.setSalesMonth(salesApRequest.getSalesMonth() != null ? DateUtil.parse(salesApRequest.getSalesMonth() + "-01", DatePattern.NORM_DATE_PATTERN) : null);
return salesApPromotionDao.page(salesApWq);
}
}
......@@ -80,6 +80,7 @@
</resultMap>
<sql id = "commonQueryConditions">
and city_manager is not null
<if test="salesMonth != null">
and sales_month = #{salesMonth}
</if>
......@@ -303,7 +304,7 @@
</where>
group by region_name, district_name,city_manager) sp
on ar.region_name = sp.region_name and ar.district_name = sp.district_name and
ar.city_manager = sp.city_manager
ar.city_manager = sp.city_manager order by ar.region_name,ar.district_name
</select>
......@@ -512,7 +513,7 @@
<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
on ar.region_name = sp.region_name and ar.district_name = sp.district_name order by ar.region_name,ar.district_name
</select>
......@@ -709,7 +710,6 @@
<include refid="deptDQQuery"/>
</where>
group by region_name) sp
on ar.region_name = sp.region_name
on ar.region_name = sp.region_name order by ar.region_name
</select>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论