提交 cabb014d authored 作者: 000516's avatar 000516

店内执行查看/修改权限限制;添加三米两秒、六小金刚

package com.sfa.operation.controller.qc.query;
import com.sfa.common.core.constant.RoleConstants;
import com.sfa.common.security.utils.SecurityUtils;
import com.sfa.operation.service.qc.IQinceMarketEmployeeService;
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;
......@@ -9,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Optional;
/**
* @author : liqiulin
......@@ -23,8 +26,14 @@ public class QcMarketEmpQuery {
@GetMapping
public boolean query() {
// 区域销售部的人员,查看人客关系
// 运营中心、大区TM、区域销售部的人员,查看人客关系
LoginUser loginUser = SecurityUtils.getLoginUser();
List<SysRole> roles = loginUser.getSysUser().getRoles();
Optional<SysRole> first = roles.stream().filter(role -> RoleConstants.OPERATION_CENTER_AP_MANAGER.equals(role.getRoleKey()) || RoleConstants.DISTRICT_AP_MANAGER.equals(role.getRoleKey())).findFirst();
if (first.isPresent()) {
return true;
}
String empNo = loginUser.getUsername();
List<String> dealerCodes = qinceMarketEmployeeService.checkPermission(empNo);
return !dealerCodes.isEmpty();
......
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.utils.SecurityUtils;
import com.sfa.operation.pojo.sales.request.SalesApRequest;
import com.sfa.operation.service.qc.IQinceMarketEmployeeService;
import com.sfa.operation.service.sales.IApDisplayCoreService;
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
......@@ -54,14 +57,41 @@ public class ApDisplayCoreController {
apDisplayCoreService.putSnackDisplayDetail(request);
}
/**
* 三米两秒
*/
@PutMapping("/core_s/{id}")
public void putDisplaySDetail(@PathVariable("id") Long sadsId, @RequestBody SalesApRequest request){
checkPermission();
request.setSadsId(sadsId);
apDisplayCoreService.putDisplaySDetail(request);
}
/**
* 六小金刚
*/
@PutMapping("/core_j/{id}")
public void putDisplayJDetail(@PathVariable("id") Long sadjId, @RequestBody SalesApRequest request){
checkPermission();
request.setSadjId(sadjId);
apDisplayCoreService.putDisplayJDetail(request);
}
private void checkPermission(){
// 是区域销售部的人员,查看人客关系
LoginUser loginUser = SecurityUtils.getLoginUser();
String empNo = loginUser.getUsername();
List<String> dealerCodes = qinceMarketEmployeeService.checkPermission(empNo);
if (dealerCodes.isEmpty()){
throw new CheckedException(ECode.QC_MARKET_EMP_ERROR);
// 只有销售(促销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);
// }
}
}
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.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 :
* @describe : 档期计划
*/
@RestController
@RequestMapping("/sales/ap_promotion/core")
......@@ -34,10 +37,17 @@ public class ApPromotionCoreController {
private void checkPermission(){
// 是区域销售部的人员,查看人客关系
LoginUser loginUser = SecurityUtils.getLoginUser();
String empNo = loginUser.getUsername();
List<String> dealerCodes = qinceMarketEmployeeService.checkPermission(empNo);
if (dealerCodes.isEmpty()){
throw new CheckedException(ECode.QC_MARKET_EMP_ERROR);
// 只有销售(促销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);
// }
}
}
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.annotation.RequiresPermissions;
import com.sfa.common.security.utils.SecurityUtils;
......@@ -7,6 +10,7 @@ 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.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;
......@@ -14,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Optional;
/**
* @author : liqiulin
......@@ -22,6 +27,8 @@ import java.util.List;
* 常规陈列
* 档期陈列
* 零食陈列
* 三米两秒
* 六小金刚
*/
@RequiresPermissions("promotion:display_schedule:list")
@RestController
......@@ -61,6 +68,24 @@ public class ApDisplayQueryController {
return apDisplayQueryService.snackPage(salesApRequest);
}
/**
* 三米两秒
*/
@GetMapping("/sl_page")
public PageInfo slPage(SalesApRequest salesApRequest){
checkPermission(salesApRequest);
return apDisplayQueryService.slPage(salesApRequest);
}
/**
* 六小金刚
*/
@GetMapping("/jg_page")
public PageInfo jgPage(SalesApRequest salesApRequest){
checkPermission(salesApRequest);
return apDisplayQueryService.jgPage(salesApRequest);
}
/**
* 判断登录人权限
* 判断是否存在人客关系,存在:根据负责经销商查询数据;不存在:判断是否是销售部人员。是:根据部门查询;不是:返回全部数据
......@@ -73,15 +98,25 @@ public class ApDisplayQueryController {
return;
}
// 是区域销售部的人员,查看人客关系
// 是区域销售部的人员:1、销售查看人客关系;2、大区TM查看当前部门下所有数据
// 判断是否是大区TM
List<SysRole> roles = loginUser.getSysUser().getRoles();
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.setDeptName(deptName);
return;
}
// 不是大区TM,判断是否是销售人员
String empNo = loginUser.getUsername();
List<String> dealerCodes = qinceMarketEmployeeService.checkPermission(empNo);
// 没有人客关系,根据部门查询
// 没有人客关系
if (dealerCodes.isEmpty()) {
String deptName = loginUser.getSysUser().getDept().getDeptName();
salesApRequest.setDeptName(deptName);
return;
throw new CheckedException(ECode.QC_MARKET_EMP_ERROR);
// String deptName = loginUser.getSysUser().getDept().getDeptName();
// salesApRequest.setDeptName(deptName);
// return;
}
// 有人客关系,根据负责经销商查询
salesApRequest.setDealerCodes(dealerCodes);
......
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;
......@@ -13,11 +17,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Optional;
/**
* @author : liqiulin
* @date : 2025-09-17 15
* @describe :
* @describe : 档期计划
*/
@RestController
@RequestMapping("/sales/ap_promotion/query")
......@@ -48,16 +53,26 @@ public class ApPromotionQueryController {
return;
}
// 是区域销售部的人员,查看人客关系
String empNo = loginUser.getNickName();
List<String> dealerCodes = qinceMarketEmployeeService.checkPermission(empNo);
// 没有人客关系,根据部门查询
if (dealerCodes.isEmpty()) {
// 是区域销售部的人员:1、销售查看人客关系;2、大区TM查看当前部门下所有数据
// 判断是否是大区TM
List<SysRole> roles = loginUser.getSysUser().getRoles();
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.setDeptName(deptName);
return;
}
// 不是大区TM,判断是否是销售人员
String empNo = loginUser.getUsername();
List<String> dealerCodes = qinceMarketEmployeeService.checkPermission(empNo);
// 没有人客关系
if (dealerCodes.isEmpty()) {
throw new CheckedException(ECode.QC_MARKET_EMP_ERROR);
// String deptName = loginUser.getSysUser().getDept().getDeptName();
// salesApRequest.setDeptName(deptName);
// return;
}
// 有人客关系,根据负责经销商查询
salesApRequest.setDealerCodes(dealerCodes);
}
......
package com.sfa.operation.domain.sales.dao;
import com.sfa.common.core.web.domain.PageInfo;
import com.sfa.operation.domain.sales.wq.SalesApWq;
import com.sfa.operation.pojo.sales.response.SalesApDisplayJDto;
/**
* @author : liqiulin
* @date : 2025-11-21 14
* @describe :
*/
public interface ISalesApDisplayJDao {
PageInfo page(SalesApWq salesApWq);
void updateDetail(SalesApDisplayJDto djDto);
}
package com.sfa.operation.domain.sales.dao;
import com.sfa.common.core.web.domain.PageInfo;
import com.sfa.operation.domain.sales.wq.SalesApWq;
import com.sfa.operation.pojo.sales.response.SalesApDisplaySDto;
/**
* @author : liqiulin
* @date : 2025-11-21 13
* @describe :
*/
public interface ISalesApDisplaySDao {
PageInfo page(SalesApWq wq);
void updateDetail(SalesApDisplaySDto dsDto);
}
package com.sfa.operation.domain.sales.dao.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.ISalesApDisplayJDao;
import com.sfa.operation.domain.sales.entity.SalesApDisplayJ;
import com.sfa.operation.domain.sales.mapper.SalesApDisplayJMapper;
import com.sfa.operation.domain.sales.wq.SalesApWq;
import com.sfa.operation.pojo.sales.response.SalesApDisplayJDto;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Objects;
/**
* @author : liqiulin
* @date : 2025-11-21 14
* @describe :
*/
@DS("bi")
@Service
public class SalesApDisplayJDaoImpl implements ISalesApDisplayJDao {
@Autowired
private SalesApDisplayJMapper salesApDisplayJMapper;
@Override
public PageInfo page(SalesApWq salesApWq) {
LambdaQueryWrapper<SalesApDisplayJ> qw = buildWq(salesApWq);
Page<SalesApDisplayJ> salesApDisplayJPage = salesApDisplayJMapper.selectPage(TableSupport.pageI(), qw);
return new PageInfo<>(salesApDisplayJPage);
}
@Override
public void updateDetail(SalesApDisplayJDto djDto) {
SalesApDisplayJ entity = new SalesApDisplayJ();
BeanUtils.copyProperties(djDto, entity);
salesApDisplayJMapper.updateById(entity);
}
private LambdaQueryWrapper<SalesApDisplayJ> buildWq(SalesApWq salesApWq) {
LambdaQueryWrapper<SalesApDisplayJ> qw = new LambdaQueryWrapper<>();
if (Objects.nonNull(salesApWq.getSalesMonth())){
qw.eq(SalesApDisplayJ::getSalesMonth, salesApWq.getSalesMonth());
}
if (!CollectionUtils.isEmpty(salesApWq.getDealerCodes())) {
qw.in(SalesApDisplayJ::getDealerCode, salesApWq.getDealerCodes());
}
if (StringUtils.isNotBlank(salesApWq.getDeptName())){
qw.and(
wrapper -> wrapper.eq(SalesApDisplayJ::getRegionName, salesApWq.getDeptName())
.or()
.eq(SalesApDisplayJ::getDistrictName, salesApWq.getDeptName())
);
}
if (StringUtils.isNotBlank(salesApWq.getNickName())){
qw.and(
wrapper -> wrapper.eq(SalesApDisplayJ::getRegionManager, salesApWq.getNickName())
.or()
.eq(SalesApDisplayJ::getDistrictManager, salesApWq.getNickName())
.or()
.eq(SalesApDisplayJ::getCityManager, salesApWq.getNickName())
);
}
if (StringUtils.isNotBlank(salesApWq.getDealerCN())){
qw.and(
wrapper -> wrapper.like(SalesApDisplayJ::getDealerName, salesApWq.getDealerCN())
.or()
.like(SalesApDisplayJ::getDealerCode, salesApWq.getDealerCN())
);
}
if (StringUtils.isNotBlank(salesApWq.getStoreCN())){
qw.and(
wrapper -> wrapper.like(SalesApDisplayJ::getStoreName, salesApWq.getStoreCN())
.or()
.like(SalesApDisplayJ::getStoreCode, salesApWq.getStoreCN())
);
}
if (StringUtils.isNotBlank(salesApWq.getLineNameLike())){
qw.like(SalesApDisplayJ::getLineName, salesApWq.getLineNameLike());
}
return qw;
}
}
package com.sfa.operation.domain.sales.dao.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.ISalesApDisplaySDao;
import com.sfa.operation.domain.sales.entity.SalesApDisplayS;
import com.sfa.operation.domain.sales.mapper.SalesApDisplaySMapper;
import com.sfa.operation.domain.sales.wq.SalesApWq;
import com.sfa.operation.pojo.sales.response.SalesApDisplaySDto;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Objects;
/**
* @author : liqiulin
* @date : 2025-11-21 13
* @describe : 三米两秒表
*/
@DS("bi")
@Service
public class SalesApDisplaySDaoImpl implements ISalesApDisplaySDao {
@Autowired
private SalesApDisplaySMapper salesApDisplaySMapper;
@Override
public PageInfo page(SalesApWq wq) {
LambdaQueryWrapper<SalesApDisplayS> qw = buildWq(wq);
Page<SalesApDisplayS> salesApDisplaySPage = salesApDisplaySMapper.selectPage(TableSupport.pageI(), qw);
return new PageInfo<>(salesApDisplaySPage);
}
@Override
public void updateDetail(SalesApDisplaySDto dsDto) {
SalesApDisplayS entity = new SalesApDisplayS();
BeanUtils.copyProperties(dsDto, entity);
salesApDisplaySMapper.updateById(entity);
}
private LambdaQueryWrapper<SalesApDisplayS> buildWq(SalesApWq salesApWq) {
LambdaQueryWrapper<SalesApDisplayS> qw = new LambdaQueryWrapper<>();
if (Objects.nonNull(salesApWq.getSalesMonth())){
qw.eq(SalesApDisplayS::getSalesMonth, salesApWq.getSalesMonth());
}
if (!CollectionUtils.isEmpty(salesApWq.getDealerCodes())) {
qw.in(SalesApDisplayS::getDealerCode, salesApWq.getDealerCodes());
}
if (StringUtils.isNotBlank(salesApWq.getDeptName())){
qw.and(
wrapper -> wrapper.eq(SalesApDisplayS::getRegionName, salesApWq.getDeptName())
.or()
.eq(SalesApDisplayS::getDistrictName, salesApWq.getDeptName())
);
}
if (StringUtils.isNotBlank(salesApWq.getNickName())){
qw.and(
wrapper -> wrapper.eq(SalesApDisplayS::getRegionManager, salesApWq.getNickName())
.or()
.eq(SalesApDisplayS::getDistrictManager, salesApWq.getNickName())
.or()
.eq(SalesApDisplayS::getCityManager, salesApWq.getNickName())
);
}
if (StringUtils.isNotBlank(salesApWq.getDealerCN())){
qw.and(
wrapper -> wrapper.like(SalesApDisplayS::getDealerName, salesApWq.getDealerCN())
.or()
.like(SalesApDisplayS::getDealerCode, salesApWq.getDealerCN())
);
}
if (StringUtils.isNotBlank(salesApWq.getStoreCN())){
qw.and(
wrapper -> wrapper.like(SalesApDisplayS::getStoreName, salesApWq.getStoreCN())
.or()
.like(SalesApDisplayS::getStoreCode, salesApWq.getStoreCN())
);
}
if (StringUtils.isNotBlank(salesApWq.getLineNameLike())){
qw.like(SalesApDisplayS::getLineName, salesApWq.getLineNameLike());
}
return qw;
}
}
......@@ -58,8 +58,6 @@ public class SalesApPromotionImplDao implements ISalesApPromotionDao {
if (dto.getIsActualPromotionEndDate() && Objects.nonNull(dto.getActualPromotionEndDate())){
Date plansDate = entityOld.getPlannedPromotionEndDate();
Date sDate = dto.getActualPromotionEndDate();
System.out.println(DateUtils.isSameYearMonth(sDate,plansDate));
System.out.println(DateUtils.isNextMonth(sDate,plansDate));
if (!(DateUtils.isSameYearMonth(sDate,plansDate) || DateUtils.isNextMonth(plansDate,sDate))){
throw new CheckedException(ECode.SAP_EXECUTE_MONTH_ERROR);
}
......
......@@ -7,8 +7,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.ISalesApSnacksDisplayDao;
import com.sfa.operation.domain.sales.entity.SalesApDisplay;
import com.sfa.operation.domain.sales.entity.SalesApPromotionDisplay;
import com.sfa.operation.domain.sales.entity.SalesApSnacksDisplay;
import com.sfa.operation.domain.sales.mapper.SalesApSnacksDisplayMapper;
import com.sfa.operation.domain.sales.wq.SalesApWq;
......
......@@ -21,7 +21,12 @@ public class SalesApDisplay implements Serializable {
*/
@TableId(type = IdType.AUTO)
private Long sadId;
/**
* 陈列所属月份
*/
private Date salesMonth;
/**
* 销售大区
*/
......@@ -193,10 +198,15 @@ public class SalesApDisplay implements Serializable {
private Integer actualMainShelfQty;
/**
* 实际主货架-是否执行
* 实际主货架-是否执行,有计划默认否
*/
private String actualMainShelfExecuted;
/**
* 主货架目标网点数
*/
private Integer mainShelfTypeSn;
/**
* 计划端架-数量
*/
......@@ -218,10 +228,15 @@ public class SalesApDisplay implements Serializable {
private Double actualEndCapQty;
/**
* 实际端架-是否执行
* 实际端架-是否执行,有计划默认否
*/
private String actualEndCapExecuted;
/**
* 端架目标网点数
*/
private Integer endCapQtySn;
/**
* 计划地堆-平米数(㎡)
*/
......@@ -263,10 +278,15 @@ public class SalesApDisplay implements Serializable {
private String actualThemedFloorStack;
/**
* 实际地堆是否执行
* 实际地堆是否执行,有计划默认否
*/
private String actualFloorStackExecuted;
/**
* 地堆目标网点数
*/
private Integer floorStackAreaSn;
/**
* 计划多点陈列-数量+形式
*/
......@@ -283,10 +303,35 @@ public class SalesApDisplay implements Serializable {
private String actualMultiDisplay;
/**
* 实际多点陈列-是否执行
* 实际多点陈列-是否执行,有计划默认否
*/
private String actualMultiDisplayExecuted;
/**
* 多点陈列目标网点数
*/
private Integer multiPointDisplaySn;
/**
* 计划挂条-数量+形式
*/
private String plannedHangingStripQuantityForm;
/**
* 实际挂条-数量+形式
*/
private String actualHangingStripQuantityForm;
/**
* 挂条-是否执行
*/
private String hangingStripExecuted;
/**
* 挂条目标网点数
*/
private Integer hangingStripSn;
/**
* 合计费用-费用
*/
......@@ -298,7 +343,7 @@ public class SalesApDisplay implements Serializable {
private Double totalCostRate;
/**
* 常规陈列是否执行
* 常规陈列是否执行,有计划默认否
*/
private String regularDisplayExecuted;
......@@ -316,8 +361,20 @@ public class SalesApDisplay implements Serializable {
* 当月是否拜访
*/
private String monthlyVisited;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新者
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
@TableField(exist = false)
......
package com.sfa.operation.domain.sales.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
/**
* 六小金刚批发挂网执行表
* @TableName sales_ap_display_j
*/
@TableName(value ="sales_ap_display_j")
@Data
public class SalesApDisplayJ implements Serializable {
/**
* 主键ID(自增)
*/
@TableId(type = IdType.AUTO)
private Long sadjId;
/**
* 陈列所属月份
*/
private Date salesMonth;
/**
* 销售大区
*/
private String regionName;
/**
* 销售战区
*/
private String districtName;
/**
* 经销商-省份
*/
private String dealerProvince;
/**
* 经销商-城市
*/
private String dealerCity;
/**
* 经销商-代码
*/
private String dealerCode;
/**
* 经销商名称
*/
private String dealerName;
/**
* 大区总监
*/
private String regionManager;
/**
* 战区经理
*/
private String districtManager;
/**
* 城市经理
*/
private String cityManager;
/**
* 门店编码
*/
private String storeCode;
/**
* 门店名称
*/
private String storeName;
/**
* 门店-省份
*/
private String storeProvince;
/**
* 门店-城市
*/
private String storeCity;
/**
* 系统名称
*/
private String lineName;
/**
* 系统类型
*/
private String lineType;
/**
* 渠道大类
*/
private String channelDl;
/**
* 渠道小类
*/
private String channelXl;
/**
* 门店类型
*/
private String storeType;
/**
* 系统业态
*/
private String lineLf;
/**
* 计划执行-六小金刚批发挂网
*/
private String plannedGw6;
/**
* 实际执行-六小金刚批发挂网
*/
private String actualGw6;
/**
* 六小金刚批发挂网陈列费
*/
private BigDecimal totalCostGw6;
/**
* 六小金刚批发挂网-是否执行(Y=是,N=否)
*/
private String gwExecuted6;
/**
* 六小金刚批发挂网目标网点数
*/
private Integer gwSn6;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新者
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.sfa.operation.domain.sales.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
/**
* 三米两秒表
* @TableName sales_ap_display_s
*/
@TableName(value ="sales_ap_display_s")
@Data
public class SalesApDisplayS implements Serializable {
/**
* 主键ID(自增)
*/
@TableId(type = IdType.AUTO)
private Long sadsId;
/**
* 陈列所属月份
*/
private Date salesMonth;
/**
* 销售大区
*/
private String regionName;
/**
* 销售战区
*/
private String districtName;
/**
* 经销商-省份
*/
private String dealerProvince;
/**
* 经销商-城市
*/
private String dealerCity;
/**
* 经销商-代码
*/
private String dealerCode;
/**
* 经销商名称
*/
private String dealerName;
/**
* 大区总监
*/
private String regionManager;
/**
* 战区经理
*/
private String districtManager;
/**
* 城市经理
*/
private String cityManager;
/**
* 门店编码
*/
private String storeCode;
/**
* 门店名称
*/
private String storeName;
/**
* 门店-省份
*/
private String storeProvince;
/**
* 门店-城市
*/
private String storeCity;
/**
* 系统名称
*/
private String lineName;
/**
* 系统类型
*/
private String lineType;
/**
* 渠道大类
*/
private String channelDl;
/**
* 渠道小类
*/
private String channelXl;
/**
* 门店类型
*/
private String storeType;
/**
* 系统业态
*/
private String lineLf;
/**
* 计划-60g挂条陈列数量
*/
private String plannedDisplayQty60;
/**
* 实际-60g挂条陈列数量
*/
private String actualDisplayQty60;
/**
* 60g挂条陈列费
*/
private BigDecimal totalCost60;
/**
* 60g挂条陈列-是否执行
*/
private String displayQtyExecuted60;
/**
* 60g挂条陈列目标网点数
*/
private Integer displaySn60;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新者
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -21,7 +21,12 @@ public class SalesApPromotion implements Serializable {
*/
@TableId(type = IdType.AUTO)
private Long sapId;
/**
* 陈列所属月份
*/
private Date salesMonth;
/**
* 销售大区
*/
......@@ -117,6 +122,11 @@ public class SalesApPromotion implements Serializable {
*/
private String promotionExecutionMonth;
/**
* 档期目标网点数
*/
private Integer promotionSn;
/**
* 档期计划-促销规格
*/
......@@ -132,18 +142,28 @@ public class SalesApPromotion implements Serializable {
*/
private String actualPromotionSpec;
/**
* 实际执行规格(填报)
*/
private String actualPromotionSpecRe;
/**
* 档期执行-促销口味
*/
private String actualPromotionFlavor;
/**
* 档期规格是否执行
* 实际执行口味(填报)
*/
private String actualPromotionFlavorRe;
/**
* 档期规格是否执行,有计划默认否
*/
private String specExecutionStatus;
/**
* 促销口味是否执行
* 促销口味是否执行,有计划默认未执行
*/
private String flavorExecutionStatus;
......@@ -191,8 +211,6 @@ public class SalesApPromotion implements Serializable {
* 实际-档期开始时间
*/
private Date actualPromotionStartDate;
@TableField(exist = false)
private Boolean isActualPromotionStartDate;
/**
* 计划-档期结束时间
......@@ -203,16 +221,14 @@ public class SalesApPromotion implements Serializable {
* 实际-档期结束时间
*/
private Date actualPromotionEndDate;
@TableField(exist = false)
private Boolean isActualPromotionEndDate;
/**
* 档期是否开展
* 档期是否开展,有计划默认否
*/
private String promotionImplementationStatus;
/**
* 时间是否执行
* 时间是否执行,有计划默认否
*/
private String timeExecutionStatus;
......@@ -237,7 +253,7 @@ public class SalesApPromotion implements Serializable {
private String actualPromotionMechanism;
/**
* 促销机制是否执行
* 促销机制是否执行,有计划默认否
*/
private String promotionMechanismExecutionStatus;
......@@ -277,10 +293,15 @@ public class SalesApPromotion implements Serializable {
private BigDecimal actualPromotionPrice;
/**
* 促销价是否执行
* 促销价是否执行,有计划默认否
*/
private String promotionPriceExecutionStatus;
/**
* 实际执行价格(填报)
*/
private String actualPromotionPriceRe;
/**
* 正常经销商毛利现状
*/
......@@ -322,7 +343,7 @@ public class SalesApPromotion implements Serializable {
private BigDecimal totalAdjustmentCost;
/**
* 档期是否执行
* 档期是否执行,有计划默认否
*/
private String promotionExecutionStatus;
......@@ -342,7 +363,7 @@ public class SalesApPromotion implements Serializable {
private String actualPosterFormat;
/**
* 海报是否执行
* 海报是否执行,有计划默认否
*/
private String posterExecutionStatus;
......@@ -360,9 +381,26 @@ public class SalesApPromotion implements Serializable {
* 费用
*/
private BigDecimal cost;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新者
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
@TableField(exist = false)
private Boolean isActualPromotionStartDate;
@TableField(exist = false)
private Boolean isActualPromotionEndDate;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -154,7 +154,7 @@ public class SalesApSnacksDisplay implements Serializable {
/**
* 实际-端架数量(组)
*/
private Double actualEndCapQty;
private String actualEndCapQty;
/**
* 端架数量是否执行
*/
......@@ -163,6 +163,10 @@ public class SalesApSnacksDisplay implements Serializable {
* 零食陈列是否执行
*/
private String snackDisplayExecuted;
/**
* 陈列目标网点数
*/
private String actualDisplaySn;
/**
* 计划-陈列费用
*/
......
package com.sfa.operation.domain.sales.mapper;
import com.sfa.operation.domain.sales.entity.SalesApDisplayJ;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* @author a02200059
* @description 针对表【sales_ap_display_j(六小金刚批发挂网执行表)】的数据库操作Mapper
* @createDate 2025-11-21 13:42:23
* @Entity com.sfa.operation.domain.sales.entity.SalesApDisplayJ
*/
@Repository
public interface SalesApDisplayJMapper extends BaseMapper<SalesApDisplayJ> {
}
package com.sfa.operation.domain.sales.mapper;
import com.sfa.operation.domain.sales.entity.SalesApDisplayS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* @author a02200059
* @description 针对表【sales_ap_display_s(三米两秒表)】的数据库操作Mapper
* @createDate 2025-11-21 13:42:23
* @Entity com.sfa.operation.domain.sales.entity.SalesApDisplayS
*/
@Repository
public interface SalesApDisplaySMapper extends BaseMapper<SalesApDisplayS> {
}
......@@ -69,6 +69,17 @@ public class SalesApRequest {
private Long sasdId;
private SnackDisplay snackDisplay;
/**
* 三米两秒
*/
private Long sadsId;
private DisplayS displayS;
/**
* 六小金刚
*/
private Long sadjId;
private DisplayJ displayJ;
@Data
public static class Display{
......@@ -134,6 +145,17 @@ public class SalesApRequest {
* 常规陈列是否执行
*/
private String regularDisplayExecuted;
/**
* 实际挂条-数量+形式
*/
private String actualHangingStripQuantityForm;
/**
* 挂条-是否执行
*/
private String hangingStripExecuted;
}
@Data
public static class Promotion{
......@@ -141,10 +163,18 @@ public class SalesApRequest {
* 档期执行-促销规格
*/
private String actualPromotionSpec;
/**
* 实际执行规格
*/
private String actualPromotionSpecRe;
/**
* 档期执行-促销口味
*/
private String actualPromotionFlavor;
/**
* 实际执行口味
*/
private String actualPromotionFlavorRe;
/**
* 档期规格是否执行
*/
......@@ -206,6 +236,10 @@ public class SalesApRequest {
* 促销价是否执行
*/
private String promotionPriceExecutionStatus;
/**
* 实际执行价格(填报)
*/
private String actualPromotionPriceRe;
/**
* 档期是否执行
*/
......@@ -220,7 +254,7 @@ public class SalesApRequest {
private String posterExecutionStatus;
}
@Data
private class SnackDisplay {
private static class SnackDisplay {
/**
* 实际-陈列形式
......@@ -234,7 +268,7 @@ public class SalesApRequest {
/**
* 实际-端架数量(组)
*/
private Double actualEndCapQty;
private String actualEndCapQty;
/**
* 端架数量是否执行
*/
......@@ -245,7 +279,7 @@ public class SalesApRequest {
private String snackDisplayExecuted;
}
@Data
private class PromotionDisplay {
private static class PromotionDisplay {
/**
* 实际端架-数量
......@@ -287,6 +321,28 @@ public class SalesApRequest {
*/
private String promotionDisplayExecuted;
}
@Data
private static class DisplayS{
/**
* 实际-60g挂条陈列数量
*/
private String actualDisplayQty60;
/**
* 60g挂条陈列-是否执行
*/
private String displayQtyExecuted60;
}
@Data
private static class DisplayJ {
/**
* 实际执行-六小金刚批发挂网
*/
private String actualGw6;
/**
* 六小金刚批发挂网-是否执行(Y=是,N=否)
*/
private String gwExecuted6;
}
}
......@@ -75,4 +75,14 @@ public class SalesApDisplayDto {
private String regularDisplayExecuted;
private String updateBy;
/**
* 实际挂条-数量+形式
*/
private String actualHangingStripQuantityForm;
/**
* 挂条-是否执行
*/
private String hangingStripExecuted;
}
package com.sfa.operation.pojo.sales.response;
import lombok.Data;
/**
* @author : liqiulin
* @date : 2025-11-21 15
* @describe :
*/
@Data
public class SalesApDisplayJDto {
private Long sadjId;
/**
* 实际执行-六小金刚批发挂网
*/
private String actualGw6;
/**
* 六小金刚批发挂网-是否执行(Y=是,N=否)
*/
private String gwExecuted6;
private String updateBy;
}
package com.sfa.operation.pojo.sales.response;
import lombok.Data;
/**
* @author : liqiulin
* @date : 2025-11-21 15
* @describe :
*/
@Data
public class SalesApDisplaySDto {
private Long sadsId;
/**
* 实际-60g挂条陈列数量
*/
private String actualDisplayQty60;
/**
* 60g挂条陈列-是否执行
*/
private String displayQtyExecuted60;
private String updateBy;
}
......@@ -17,10 +17,18 @@ public class SalesApPromotionDto {
* 档期执行-促销规格
*/
private String actualPromotionSpec;
/**
* 实际执行规格
*/
private String actualPromotionSpecRe;
/**
* 档期执行-促销口味
*/
private String actualPromotionFlavor;
/**
* 实际执行口味
*/
private String actualPromotionFlavorRe;
/**
* 档期规格是否执行
*/
......@@ -66,6 +74,10 @@ public class SalesApPromotionDto {
* 实际促销售价(单包)
*/
private BigDecimal actualPromotionPrice;
/**
* 实际执行价格(填报)
*/
private String actualPromotionPriceRe;
/**
* 促销价是否执行
*/
......
......@@ -23,7 +23,7 @@ public class SalesApSnacksDisplayDto {
/**
* 实际-端架数量(组)
*/
private Double actualEndCapQty;
private String actualEndCapQty;
/**
* 端架数量是否执行
*/
......
......@@ -13,4 +13,8 @@ public interface IApDisplayCoreService {
void putSnackDisplayDetail(SalesApRequest request);
void putProDisplayDetail(SalesApRequest request);
void putDisplaySDetail(SalesApRequest request);
void putDisplayJDetail(SalesApRequest request);
}
......@@ -16,4 +16,8 @@ public interface IApDisplayQueryService {
PageInfo proPage(SalesApRequest salesApRequest);
PageInfo snackPage(SalesApRequest salesApRequest);
PageInfo slPage(SalesApRequest salesApRequest);
PageInfo jgPage(SalesApRequest salesApRequest);
}
package com.sfa.operation.service.sales.impl;
import com.sfa.common.security.utils.SecurityUtils;
import com.sfa.operation.domain.sales.dao.ISalesApDisplayDao;
import com.sfa.operation.domain.sales.dao.ISalesApPromotionDisplayDao;
import com.sfa.operation.domain.sales.dao.ISalesApSnacksDisplayDao;
import com.sfa.operation.domain.sales.dao.*;
import com.sfa.operation.pojo.sales.request.SalesApRequest;
import com.sfa.operation.pojo.sales.response.SalesApDisplayDto;
import com.sfa.operation.pojo.sales.response.SalesApPromotionDisplayDto;
import com.sfa.operation.pojo.sales.response.SalesApSnacksDisplayDto;
import com.sfa.operation.pojo.sales.response.*;
import com.sfa.operation.service.sales.IApDisplayCoreService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -26,6 +22,10 @@ public class ApDisplayCoreServiceImpl implements IApDisplayCoreService {
private ISalesApSnacksDisplayDao salesApSnacksDisplayDao;
@Autowired
private ISalesApPromotionDisplayDao salesApPromotionDisplayDao;
@Autowired
private ISalesApDisplaySDao salesApDisplaySDao;
@Autowired
private ISalesApDisplayJDao salesApDisplayJDao;
@Override
public void updateDetail(SalesApRequest request) {
SalesApDisplayDto salesApDisplayDto = new SalesApDisplayDto();
......@@ -52,4 +52,22 @@ public class ApDisplayCoreServiceImpl implements IApDisplayCoreService {
pdDto.setUpdateBy(SecurityUtils.getNickName());
salesApPromotionDisplayDao.updateDetail(pdDto);
}
@Override
public void putDisplaySDetail(SalesApRequest request) {
SalesApDisplaySDto dsDto = new SalesApDisplaySDto();
BeanUtils.copyProperties(request.getDisplayS(), dsDto);
dsDto.setSadsId(request.getSadsId());
dsDto.setUpdateBy(SecurityUtils.getNickName());
salesApDisplaySDao.updateDetail(dsDto);
}
@Override
public void putDisplayJDetail(SalesApRequest request) {
SalesApDisplayJDto djDto = new SalesApDisplayJDto();
BeanUtils.copyProperties(request.getDisplayJ(), djDto);
djDto.setSadjId(request.getSadjId());
djDto.setUpdateBy(SecurityUtils.getNickName());
salesApDisplayJDao.updateDetail(djDto);
}
}
......@@ -5,9 +5,7 @@ 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.feishu.dao.IQinceMarketEmployeeDao;
import com.sfa.operation.domain.sales.dao.ISalesApDisplayDao;
import com.sfa.operation.domain.sales.dao.ISalesApPromotionDisplayDao;
import com.sfa.operation.domain.sales.dao.ISalesApSnacksDisplayDao;
import com.sfa.operation.domain.sales.dao.*;
import com.sfa.operation.domain.sales.wq.SalesApWq;
import com.sfa.operation.pojo.sales.request.SalesApRequest;
import com.sfa.operation.service.sales.IApDisplayQueryService;
......@@ -30,29 +28,41 @@ public class ApDisplayQueryServiceImpl implements IApDisplayQueryService {
private ISalesApPromotionDisplayDao salesApPromotionDisplayDao;
@Autowired
private ISalesApSnacksDisplayDao salesapsnackdsDisplayDao;
@Autowired
private ISalesApDisplaySDao salesApDisplaySDao;
@Autowired
private ISalesApDisplayJDao salesApDisplayJDao;
@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 salesApDisplayDao.page(salesApWq);
return salesApDisplayDao.page(build(salesApRequest));
}
@Override
public PageInfo proPage(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 salesApPromotionDisplayDao.page(salesApWq);
return salesApPromotionDisplayDao.page(build(salesApRequest));
}
@Override
public PageInfo snackPage(SalesApRequest salesApRequest) {
return salesapsnackdsDisplayDao.page(build(salesApRequest));
}
@Override
public PageInfo slPage(SalesApRequest salesApRequest) {
return salesApDisplaySDao.page(build(salesApRequest));
}
@Override
public PageInfo jgPage(SalesApRequest salesApRequest) {
return salesApDisplayJDao.page(build(salesApRequest));
}
private SalesApWq build(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 salesapsnackdsDisplayDao.page(salesApWq);
return salesApWq;
}
}
<?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="com.sfa.operation.domain.sales.mapper.SalesApDisplayJMapper">
<resultMap id="SalesApDisplayJBase" type="com.sfa.operation.domain.sales.entity.SalesApDisplayJ">
<id property="sadjId" column="sadj_id" jdbcType="BIGINT"/>
<result property="salesMonth" column="sales_month" jdbcType="DATE"/>
<result property="regionName" column="region_name" jdbcType="VARCHAR"/>
<result property="districtName" column="district_name" jdbcType="VARCHAR"/>
<result property="dealerProvince" column="dealer_province" jdbcType="VARCHAR"/>
<result property="dealerCity" column="dealer_city" jdbcType="VARCHAR"/>
<result property="dealerCode" column="dealer_code" jdbcType="VARCHAR"/>
<result property="dealerName" column="dealer_name" jdbcType="VARCHAR"/>
<result property="regionManager" column="region_manager" jdbcType="VARCHAR"/>
<result property="districtManager" column="district_manager" jdbcType="VARCHAR"/>
<result property="cityManager" column="city_manager" jdbcType="VARCHAR"/>
<result property="storeCode" column="store_code" jdbcType="VARCHAR"/>
<result property="storeName" column="store_name" jdbcType="VARCHAR"/>
<result property="storeProvince" column="store_province" jdbcType="VARCHAR"/>
<result property="storeCity" column="store_city" jdbcType="VARCHAR"/>
<result property="lineName" column="line_name" jdbcType="VARCHAR"/>
<result property="lineType" column="line_type" jdbcType="VARCHAR"/>
<result property="channelDl" column="channel_dl" jdbcType="VARCHAR"/>
<result property="channelXl" column="channel_xl" jdbcType="VARCHAR"/>
<result property="storeType" column="store_type" jdbcType="VARCHAR"/>
<result property="lineLf" column="line_lf" jdbcType="VARCHAR"/>
<result property="plannedGw6" column="planned_gw_6" jdbcType="VARCHAR"/>
<result property="actualGw6" column="actual_gw_6" jdbcType="VARCHAR"/>
<result property="totalCostGw6" column="total_cost_gw_6" jdbcType="DECIMAL"/>
<result property="gwExecuted6" column="gw_executed_6" jdbcType="VARCHAR"/>
<result property="gwSn6" column="gw_sn_6" jdbcType="INTEGER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
</mapper>
......@@ -6,6 +6,7 @@
<resultMap id="SalesApDisplayBash" type="com.sfa.operation.domain.sales.entity.SalesApDisplay">
<id property="sadId" column="sad_id" jdbcType="BIGINT"/>
<result property="salesMonth" column="sales_month" jdbcType="DATE"/>
<result property="regionName" column="region_name" jdbcType="VARCHAR"/>
<result property="districtName" column="district_name" jdbcType="VARCHAR"/>
<result property="dealerProvince" column="dealer_province" jdbcType="VARCHAR"/>
......@@ -41,11 +42,13 @@
<result property="actualMainShelfType" column="actual_main_shelf_type" jdbcType="VARCHAR"/>
<result property="actualMainShelfQty" column="actual_main_shelf_qty" jdbcType="INTEGER"/>
<result property="actualMainShelfExecuted" column="actual_main_shelf_executed" jdbcType="VARCHAR"/>
<result property="mainShelfTypeSn" column="main_shelf_type_sn" jdbcType="INTEGER"/>
<result property="plannedEndCapQty" column="planned_end_cap_qty" jdbcType="FLOAT"/>
<result property="plannedEndCapTotalCost" column="planned_end_cap_total_cost" jdbcType="DECIMAL"/>
<result property="plannedEndCapUnitCost" column="planned_end_cap_unit_cost" jdbcType="DECIMAL"/>
<result property="actualEndCapQty" column="actual_end_cap_qty" jdbcType="FLOAT"/>
<result property="actualEndCapExecuted" column="actual_end_cap_executed" jdbcType="VARCHAR"/>
<result property="endCapQtySn" column="end_cap_qty_sn" jdbcType="INTEGER"/>
<result property="plannedFloorStackArea" column="planned_floor_stack_area" jdbcType="FLOAT"/>
<result property="plannedFloorStackQty" column="planned_floor_stack_qty" jdbcType="INTEGER"/>
<result property="plannedThemedFloorStack" column="planned_themed_floor_stack" jdbcType="VARCHAR"/>
......@@ -55,16 +58,25 @@
<result property="actualFloorStackQty" column="actual_floor_stack_qty" jdbcType="INTEGER"/>
<result property="actualThemedFloorStack" column="actual_themed_floor_stack" jdbcType="VARCHAR"/>
<result property="actualFloorStackExecuted" column="actual_floor_stack_executed" jdbcType="VARCHAR"/>
<result property="floorStackAreaSn" column="floor_stack_area_sn" jdbcType="INTEGER"/>
<result property="plannedMultiDisplay" column="planned_multi_display" jdbcType="VARCHAR"/>
<result property="plannedMultiDisplayTotalCost" column="planned_multi_display_total_cost" jdbcType="DECIMAL"/>
<result property="actualMultiDisplay" column="actual_multi_display" jdbcType="VARCHAR"/>
<result property="actualMultiDisplayExecuted" column="actual_multi_display_executed" jdbcType="VARCHAR"/>
<result property="multiPointDisplaySn" column="multi_point_display_sn" jdbcType="INTEGER"/>
<result property="plannedHangingStripQuantityForm" column="planned_hanging_strip_quantity_form" jdbcType="VARCHAR"/>
<result property="actualHangingStripQuantityForm" column="actual_hanging_strip_quantity_form" jdbcType="VARCHAR"/>
<result property="hangingStripExecuted" column="hanging_strip_executed" jdbcType="VARCHAR"/>
<result property="hangingStripSn" column="hanging_strip_sn" jdbcType="INTEGER"/>
<result property="totalCost" column="total_cost" jdbcType="DECIMAL"/>
<result property="totalCostRate" column="total_cost_rate" jdbcType="FLOAT"/>
<result property="regularDisplayExecuted" column="regular_display_executed" jdbcType="VARCHAR"/>
<result property="paidDisplay" column="paid_display" jdbcType="VARCHAR"/>
<result property="monthlyVisitTarget" column="monthly_visit_target" jdbcType="VARCHAR"/>
<result property="monthlyVisited" column="monthly_visited" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
......
<?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="com.sfa.operation.domain.sales.mapper.SalesApDisplaySMapper">
<resultMap id="SalesApDisplaySBase" type="com.sfa.operation.domain.sales.entity.SalesApDisplayS">
<id property="sadsId" column="sads_id" jdbcType="BIGINT"/>
<result property="salesMonth" column="sales_month" jdbcType="DATE"/>
<result property="regionName" column="region_name" jdbcType="VARCHAR"/>
<result property="districtName" column="district_name" jdbcType="VARCHAR"/>
<result property="dealerProvince" column="dealer_province" jdbcType="VARCHAR"/>
<result property="dealerCity" column="dealer_city" jdbcType="VARCHAR"/>
<result property="dealerCode" column="dealer_code" jdbcType="VARCHAR"/>
<result property="dealerName" column="dealer_name" jdbcType="VARCHAR"/>
<result property="regionManager" column="region_manager" jdbcType="VARCHAR"/>
<result property="districtManager" column="district_manager" jdbcType="VARCHAR"/>
<result property="cityManager" column="city_manager" jdbcType="VARCHAR"/>
<result property="storeCode" column="store_code" jdbcType="VARCHAR"/>
<result property="storeName" column="store_name" jdbcType="VARCHAR"/>
<result property="storeProvince" column="store_province" jdbcType="VARCHAR"/>
<result property="storeCity" column="store_city" jdbcType="VARCHAR"/>
<result property="lineName" column="line_name" jdbcType="VARCHAR"/>
<result property="lineType" column="line_type" jdbcType="VARCHAR"/>
<result property="channelDl" column="channel_dl" jdbcType="VARCHAR"/>
<result property="channelXl" column="channel_xl" jdbcType="VARCHAR"/>
<result property="storeType" column="store_type" jdbcType="VARCHAR"/>
<result property="lineLf" column="line_lf" jdbcType="VARCHAR"/>
<result property="plannedDisplayQty60" column="planned_display_qty_60" jdbcType="VARCHAR"/>
<result property="actualDisplayQty60" column="actual_display_qty_60" jdbcType="VARCHAR"/>
<result property="totalCost60" column="total_cost_60" jdbcType="DECIMAL"/>
<result property="displayQtyExecuted60" column="display_qty_executed_60" jdbcType="VARCHAR"/>
<result property="displaySn60" column="display_sn_60" jdbcType="INTEGER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
</mapper>
......@@ -5,6 +5,7 @@
<mapper namespace="com.sfa.operation.domain.sales.mapper.SalesApPromotionMapper">
<resultMap id="SalesApPromotionBaseMap" type="com.sfa.operation.domain.sales.entity.SalesApPromotion">
<id property="sapId" column="sap_id" jdbcType="BIGINT"/>
<result property="salesMonth" column="sales_month" jdbcType="DATE"/>
<result property="regionName" column="region_name" jdbcType="VARCHAR"/>
<result property="districtName" column="district_name" jdbcType="VARCHAR"/>
<result property="dealerProvince" column="dealer_province" jdbcType="VARCHAR"/>
......@@ -24,10 +25,13 @@
<result property="lineLf" column="line_lf" jdbcType="VARCHAR"/>
<result property="storeCount" column="store_count" jdbcType="VARCHAR"/>
<result property="promotionExecutionMonth" column="promotion_execution_month" jdbcType="VARCHAR"/>
<result property="promotionSn" column="promotion_sn" jdbcType="INTEGER"/>
<result property="plannedPromotionSpec" column="planned_promotion_spec" jdbcType="VARCHAR"/>
<result property="plannedPromotionFlavor" column="planned_promotion_flavor" jdbcType="VARCHAR"/>
<result property="actualPromotionSpec" column="actual_promotion_spec" jdbcType="VARCHAR"/>
<result property="actualPromotionSpecRe" column="actual_promotion_spec_re" jdbcType="VARCHAR"/>
<result property="actualPromotionFlavor" column="actual_promotion_flavor" jdbcType="VARCHAR"/>
<result property="actualPromotionFlavorRe" column="actual_promotion_flavor_re" jdbcType="VARCHAR"/>
<result property="specExecutionStatus" column="spec_execution_status" jdbcType="VARCHAR"/>
<result property="flavorExecutionStatus" column="flavor_execution_status" jdbcType="VARCHAR"/>
<result property="totalCost" column="total_cost" jdbcType="DECIMAL"/>
......@@ -35,23 +39,19 @@
<result property="plannedPromotionFormat" column="planned_promotion_format" jdbcType="VARCHAR"/>
<result property="plannedVerificationMethod" column="planned_verification_method" jdbcType="VARCHAR"/>
<result property="plannedPromotionRules" column="planned_promotion_rules" jdbcType="VARCHAR"/>
<result property="plannedPrePromotionAdjustDays" column="planned_pre_promotion_adjust_days"
jdbcType="INTEGER"/>
<result property="plannedPostPromotionAdjustDays" column="planned_post_promotion_adjust_days"
jdbcType="INTEGER"/>
<result property="plannedPrePromotionAdjustDays" column="planned_pre_promotion_adjust_days" jdbcType="INTEGER"/>
<result property="plannedPostPromotionAdjustDays" column="planned_post_promotion_adjust_days" jdbcType="INTEGER"/>
<result property="plannedPromotionStartDate" column="planned_promotion_start_date" jdbcType="DATE"/>
<result property="actualPromotionStartDate" column="actual_promotion_start_date" jdbcType="DATE"/>
<result property="plannedPromotionEndDate" column="planned_promotion_end_date" jdbcType="DATE"/>
<result property="actualPromotionEndDate" column="actual_promotion_end_date" jdbcType="DATE"/>
<result property="promotionImplementationStatus" column="promotion_implementation_status"
jdbcType="VARCHAR"/>
<result property="promotionImplementationStatus" column="promotion_implementation_status" jdbcType="VARCHAR"/>
<result property="timeExecutionStatus" column="time_execution_status" jdbcType="VARCHAR"/>
<result property="plannedAdjustmentStartDate" column="planned_adjustment_start_date" jdbcType="DATE"/>
<result property="plannedAdjustmentEndDate" column="planned_adjustment_end_date" jdbcType="DATE"/>
<result property="plannedPromotionMechanism" column="planned_promotion_mechanism" jdbcType="VARCHAR"/>
<result property="actualPromotionMechanism" column="actual_promotion_mechanism" jdbcType="VARCHAR"/>
<result property="promotionMechanismExecutionStatus" column="promotion_mechanism_execution_status"
jdbcType="VARCHAR"/>
<result property="promotionMechanismExecutionStatus" column="promotion_mechanism_execution_status" jdbcType="VARCHAR"/>
<result property="estimatedBagCount" column="estimated_bag_count" jdbcType="INTEGER"/>
<result property="promotionStockQuantity" column="promotion_stock_quantity" jdbcType="INTEGER"/>
<result property="unitFactoryPrice" column="unit_factory_price" jdbcType="DECIMAL"/>
......@@ -59,15 +59,12 @@
<result property="regularRetailPrice" column="regular_retail_price" jdbcType="DECIMAL"/>
<result property="plannedPromotionPrice" column="planned_promotion_price" jdbcType="DECIMAL"/>
<result property="actualPromotionPrice" column="actual_promotion_price" jdbcType="DECIMAL"/>
<result property="promotionPriceExecutionStatus" column="promotion_price_execution_status"
jdbcType="VARCHAR"/>
<result property="promotionPriceExecutionStatus" column="promotion_price_execution_status" jdbcType="VARCHAR"/>
<result property="actualPromotionPriceRe" column="actual_promotion_price_re" jdbcType="VARCHAR"/>
<result property="normalDealerMarginStatus" column="normal_dealer_margin_status" jdbcType="VARCHAR"/>
<result property="systemFrontendMarginGuarantee" column="system_frontend_margin_guarantee"
jdbcType="VARCHAR"/>
<result property="systemBackendMarginGuarantee" column="system_backend_margin_guarantee"
jdbcType="VARCHAR"/>
<result property="systemPromotionMarginGuarantee" column="system_promotion_margin_guarantee"
jdbcType="VARCHAR"/>
<result property="systemFrontendMarginGuarantee" column="system_frontend_margin_guarantee" jdbcType="VARCHAR"/>
<result property="systemBackendMarginGuarantee" column="system_backend_margin_guarantee" jdbcType="VARCHAR"/>
<result property="systemPromotionMarginGuarantee" column="system_promotion_margin_guarantee" jdbcType="VARCHAR"/>
<result property="dealerMarginGuarantee" column="dealer_margin_guarantee" jdbcType="VARCHAR"/>
<result property="unitBagAdjustmentAmount" column="unit_bag_adjustment_amount" jdbcType="DECIMAL"/>
<result property="adjustmentCostRatio" column="adjustment_cost_ratio" jdbcType="FLOAT"/>
......@@ -80,6 +77,9 @@
<result property="storeCountInt" column="store_count_int" jdbcType="INTEGER"/>
<result property="averageStoreCost" column="average_store_cost" jdbcType="DECIMAL"/>
<result property="cost" column="cost" jdbcType="DECIMAL"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
<update id="putById" parameterType="com.sfa.operation.domain.sales.entity.SalesApPromotion">
......@@ -89,9 +89,15 @@
<if test="actualPromotionSpec != null">
actual_promotion_spec = #{actualPromotionSpec},
</if>
<if test="actualPromotionSpecRe != null">
actual_promotion_spec_re = #{actualPromotionSpecRe},
</if>
<if test="actualPromotionFlavor != null">
actual_promotion_flavor = #{actualPromotionFlavor},
</if>
<if test="actualPromotionFlavorRe != null">
actual_promotion_flavor_re = #{actualPromotionFlavorRe},
</if>
<if test="flavorExecutionStatus != null">
flavor_execution_status = #{flavorExecutionStatus},
</if>
......@@ -122,6 +128,9 @@
<if test="actualPromotionPrice != null">
actual_promotion_price = #{actualPromotionPrice},
</if>
<if test="actualPromotionPriceRe != null">
actual_promotion_price_re = #{actualPromotionPriceRe},
</if>
<if test="promotionPriceExecutionStatus != null">
promotion_price_execution_status = #{promotionPriceExecutionStatus},
</if>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论