Merge #43 into master from cc_20251208_visit
拜访记录和铺位导出
* cc_20251208_visit: (37 commits squashed)
- feat:拜访记录
- fix:拜访详情接口新增字段
- fix:新增状态转义字段
- fix:惩处单查询提供惩处待处理、惩处已处理状态筛选
- fix
- fix:管理员能查看所有加盟商
- fix:去掉部分字段非空校验
- fix:空校验
- Merge branch 'master' into cc_20251208_visit
# Conflicts:
#	coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java
#	coolstore-partner-dao/src/main/java/com/cool/store/dao/store/StoreMasterSignerInfoDAO.java
#	coolstore-partner-service/src/main/java/com/cool/store/service/impl/UserAuthMappingServiceImpl.java
- fix
- fix:拜访记录失效延时消息
- fix:拜访记录统计
- fix:拜访记录统计新增筛选条件
- fix:字段转义
- feat:拜访调整
- feat:拜访调整_过滤我的
- feat:拜访调整_过滤我的
- feat:拜访字段调整
- feat:拜访字段调整
- Merge branch 'master' into cc_20251208_visit
- fix:拜访我的加盟商取消管辖权限过滤
- Merge branch 'master' into cc_20251208_visit
- fix:新增已分配招商经理的线索查询接口;拜访记录列表接口新增字段
- fix:新增字段
- fix:新老加盟商判断逻辑修复;统计接口新增筛选条件
- fix:过滤未分配招商经理的线索
- Merge branch 'master' into cc_20251208_visit
# Conflicts:
#	coolstore-partner-dao/src/main/resources/mapper/LineInfoMapper.xml
- Merge branch 'master' into cc_20251208_visit
- Merge branch 'master' into cc_20251208_visit
- fix:拜访记录导出
- fix:拜访记录导出限制
- fix:拜访记录导出限制
- fix:铺位导出
- fix:铺位及拜访记录导出加锁时机修改
- fix:铺位导出新增字段
- fix:铺位导出新增字段
- fix
Signed-off-by: 王非凡 <accounts_67eba0c5fee9c49c80c8e2b4@mail.teambition.com>
Merged-by: 正新 <accounts_6964c7bcd2a2c377c5bbd01b@mail.teambition.com>
CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/43
This commit is contained in:
@@ -0,0 +1,259 @@
|
||||
package com.cool.store.vo.point;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnore;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 铺位导出VO
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2026/2/10
|
||||
*/
|
||||
@Data
|
||||
public class PointExportVO {
|
||||
@ApiModelProperty("店铺id")
|
||||
@ExcelIgnore
|
||||
private Long pointId;
|
||||
|
||||
@ApiModelProperty("铺位名称")
|
||||
@ExcelProperty(value = "铺位名称", order = 2)
|
||||
@ColumnWidth(30)
|
||||
private String pointName;
|
||||
|
||||
@ApiModelProperty("铺位编号")
|
||||
@ExcelProperty(value = "铺位编号", order = 1)
|
||||
@ColumnWidth(30)
|
||||
private String pointCode;
|
||||
|
||||
@ApiModelProperty("所属站区")
|
||||
@ExcelProperty(value = "所属大区", order = 5)
|
||||
@ColumnWidth(30)
|
||||
private String regionNodeName;
|
||||
|
||||
@ExcelProperty(value = "铺位状态", order = 6)
|
||||
@ColumnWidth(30)
|
||||
private String pointStatusName;
|
||||
|
||||
@ApiModelProperty("拓展专员")
|
||||
@ExcelProperty(value = "选址人员", order = 4)
|
||||
@ColumnWidth(30)
|
||||
private String developmentManagerUsername;
|
||||
|
||||
@ApiModelProperty("铺位地址")
|
||||
@ExcelProperty(value = "铺位地址", order = 3)
|
||||
@ColumnWidth(30)
|
||||
private String address;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
@ExcelProperty(value = "创建时间", order = 11)
|
||||
@ColumnWidth(30)
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty("更新时间")
|
||||
@ExcelProperty(value = "最近更新时间", order = 10)
|
||||
@ColumnWidth(30)
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty("成功开店")
|
||||
@ExcelProperty(value = "成功开店", order = 7)
|
||||
@ColumnWidth(30)
|
||||
private String openShopName;
|
||||
|
||||
@ApiModelProperty("所属机会点编码")
|
||||
@ExcelProperty(value = "所属机会点编码", order = 8)
|
||||
@ColumnWidth(30)
|
||||
private String opportunityPointCode;
|
||||
@ApiModelProperty("所属机会点名称")
|
||||
@ExcelProperty(value = "所属机会点", order = 9)
|
||||
@ColumnWidth(30)
|
||||
private String opportunityPointName;
|
||||
|
||||
@ApiModelProperty("设备费")
|
||||
@ExcelProperty(value = "设备费", order = 12)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal equipmentCost;
|
||||
|
||||
@ApiModelProperty("装修费")
|
||||
@ExcelProperty(value = "装修费", order = 13)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal decorationCost;
|
||||
|
||||
@ApiModelProperty("加盟费")
|
||||
@ExcelProperty(value = "加盟费", order = 14)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal franchiseFee;
|
||||
|
||||
@ApiModelProperty("管理费")
|
||||
@ExcelProperty(value = "管理费", order = 15)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal managementFee;
|
||||
|
||||
@ApiModelProperty("设计费")
|
||||
@ExcelProperty(value = "设计费", order = 16)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal designFee;
|
||||
|
||||
@ApiModelProperty("首批进货成本")
|
||||
@ExcelProperty(value = "首批进货成本", order = 17)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal firstInventoryCost;
|
||||
|
||||
@ApiModelProperty("押金")
|
||||
@ExcelProperty(value = "押金", order = 18)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal deposit;
|
||||
|
||||
@ApiModelProperty("初始投资额")
|
||||
@ExcelProperty(value = "初始投资额合计", order = 19)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal initialInvestment;
|
||||
|
||||
@ApiModelProperty("日均订单量")
|
||||
@ExcelProperty(value = "日均订单量", order = 20)
|
||||
@ColumnWidth(20)
|
||||
private Integer avgDailyOrders;
|
||||
|
||||
@ApiModelProperty("日均单价")
|
||||
@ExcelProperty(value = "日均单价", order = 21)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal avgOrderPrice;
|
||||
|
||||
@ApiModelProperty("每年运营天数")
|
||||
@ExcelProperty(value = "每年运营天数", order = 22)
|
||||
@ColumnWidth(20)
|
||||
private Integer operatingDaysPerYear;
|
||||
|
||||
@ApiModelProperty("每日销售额")
|
||||
@ExcelProperty(value = "每日销售额", order = 23)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal dailySales;
|
||||
|
||||
@ApiModelProperty("全年GMV")
|
||||
@ExcelProperty(value = "全年GMV", order = 24)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal annualGmv;
|
||||
|
||||
@ApiModelProperty("每月销售额")
|
||||
@ExcelProperty(value = "每月销售额", order = 25)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal monthlySales;
|
||||
|
||||
@ApiModelProperty("门店产品毛利率")
|
||||
@ExcelProperty(value = "门店产品毛利率(%)", order = 26)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal grossMarginRate;
|
||||
|
||||
@ApiModelProperty("正新货品年收入")
|
||||
@ExcelProperty(value = "正新货品年收入", order = 27)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal annualIncome;
|
||||
|
||||
@ApiModelProperty("材料成本")
|
||||
@ExcelProperty(value = "材料成本(元/年)", order = 28)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal materialCostAnnual;
|
||||
|
||||
@ApiModelProperty("材料成本")
|
||||
@ExcelProperty(value = "材料成本(元/月)", order = 29)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal materialCostMonthly;
|
||||
|
||||
@ApiModelProperty("材料成本占收入")
|
||||
@ExcelProperty(value = "材料成本占收入%", order = 30)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal materialCostRate;
|
||||
|
||||
@ApiModelProperty("人员数量")
|
||||
@ExcelProperty(value = "人员数量", order = 31)
|
||||
@ColumnWidth(20)
|
||||
private Integer staffCount;
|
||||
|
||||
@ApiModelProperty("平均工资")
|
||||
@ExcelProperty(value = "平均工资", order = 32)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal avgSalary;
|
||||
|
||||
@ApiModelProperty("员工成本")
|
||||
@ExcelProperty(value = "员工成本(元/年)", order = 33)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal staffCostAnnual;
|
||||
|
||||
@ApiModelProperty("员工成本占收入")
|
||||
@ExcelProperty(value = "员工成本占收入%", order = 34)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal staffCostRate;
|
||||
|
||||
@ApiModelProperty("租金成本(元/年)")
|
||||
@ExcelProperty(value = "租金成本(元/年)", order = 35)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal rentCostAnnual;
|
||||
|
||||
@ApiModelProperty("租金成本占收入%")
|
||||
@ExcelProperty(value = "租金成本占收入%", order = 36)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal rentCostRate;
|
||||
|
||||
@ApiModelProperty("外卖占总营业额")
|
||||
@ExcelProperty(value = "外卖占总营业额%", order = 37)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal takeawayRate;
|
||||
|
||||
@ApiModelProperty("外卖抽点比例")
|
||||
@ExcelProperty(value = "外卖抽点比例(%)", order = 38)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal platformCommissionRate;
|
||||
|
||||
@ApiModelProperty("外卖抽点")
|
||||
@ExcelProperty(value = "外卖抽点", order = 39)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal platformCommission;
|
||||
|
||||
@ApiModelProperty("水电开支")
|
||||
@ExcelProperty(value = "水电开支", order = 40)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal utilityCost;
|
||||
|
||||
@ApiModelProperty("水电开支占收入")
|
||||
@ExcelProperty(value = "水电开支占收入%", order = 41)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal utilityCostRate;
|
||||
|
||||
@ApiModelProperty("其他")
|
||||
@ExcelProperty(value = "其他(含配送费用)", order = 42)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal otherCost;
|
||||
|
||||
@ApiModelProperty("其他占收入")
|
||||
@ExcelProperty(value = "其他占收入%", order = 43)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal otherCostRate;
|
||||
|
||||
@ApiModelProperty("门店经营利润")
|
||||
@ExcelProperty(value = "门店经营利润", order = 44)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal operatingProfit;
|
||||
|
||||
@ApiModelProperty("门店经营利润率")
|
||||
@ExcelProperty(value = "门店经营利润率(%)", order = 45)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal operatingProfitRate;
|
||||
|
||||
@ApiModelProperty("回报期 - 年")
|
||||
@ExcelProperty(value = "回报期(年)", order = 46)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal paybackPeriodYears;
|
||||
|
||||
@ApiModelProperty("回报期 - 月")
|
||||
@ExcelProperty(value = "回报期(月)", order = 47)
|
||||
@ColumnWidth(20)
|
||||
private BigDecimal paybackPeriodMonths;
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.cool.store.vo.point;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.cool.store.dto.PCPointListDTO;
|
||||
import com.cool.store.entity.PointInfoDO;
|
||||
import com.cool.store.enums.point.PointStatusEnum;
|
||||
import com.google.common.collect.Lists;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@@ -34,6 +34,9 @@ public class PointPageVO {
|
||||
@ApiModelProperty("铺位状态 1.采集中、2.已评估、3.待审核、5.已审核、6.已签约、7.已失效")
|
||||
private Integer pointStatus;
|
||||
|
||||
@ExcelProperty(value = "铺位状态", order = 6)
|
||||
private String pointStatusName;
|
||||
|
||||
@ApiModelProperty("铺位得分")
|
||||
private Integer pointScore;
|
||||
|
||||
@@ -68,6 +71,9 @@ public class PointPageVO {
|
||||
@ApiModelProperty("所属机会点名称")
|
||||
private String opportunityPointName;
|
||||
|
||||
public String getPointStatusName() {
|
||||
return PointStatusEnum.getDescByCode(this.pointStatus);
|
||||
}
|
||||
|
||||
public static List<PointPageVO> convertVO(List<PCPointListDTO> pointList, Map<String, String> usernameMap, Map<Long, String> regionNameMap) {
|
||||
if(CollectionUtils.isEmpty(pointList)){
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
package com.cool.store.vo.visit;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnore;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
||||
import com.alibaba.excel.converters.Converter;
|
||||
import com.alibaba.excel.enums.CellDataTypeEnum;
|
||||
import com.alibaba.excel.metadata.CellData;
|
||||
import com.alibaba.excel.metadata.GlobalConfiguration;
|
||||
import com.alibaba.excel.metadata.property.ExcelContentProperty;
|
||||
import com.cool.store.annotation.DictField;
|
||||
import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.enums.visit.VisitStatusEnum;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@@ -18,79 +27,161 @@ import java.util.Date;
|
||||
@Data
|
||||
public class VisitRecordListVO {
|
||||
@ApiModelProperty("id")
|
||||
@ExcelIgnore
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "线索id", hidden = true)
|
||||
@ExcelIgnore
|
||||
private Long lineId;
|
||||
|
||||
@ApiModelProperty("加盟商姓名")
|
||||
@ExcelProperty(value = "加盟商姓名", order = 1)
|
||||
@ColumnWidth(30)
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("加盟商手机号")
|
||||
@ExcelProperty(value = "加盟商手机号", order = 2)
|
||||
@ColumnWidth(30)
|
||||
private String mobile;
|
||||
|
||||
@ApiModelProperty("拜访编号")
|
||||
@ExcelProperty(value = "拜访编号", order = 7)
|
||||
@ColumnWidth(30)
|
||||
private String visitNo;
|
||||
|
||||
@ApiModelProperty("拜访日期")
|
||||
@ExcelProperty(value = "拜访日期", order = 8)
|
||||
@ColumnWidth(30)
|
||||
private Date visitDate;
|
||||
|
||||
@ApiModelProperty("签到地址")
|
||||
@ExcelProperty(value = "拜访地址", order = 9)
|
||||
@ColumnWidth(30)
|
||||
private String signInAddress;
|
||||
|
||||
@ApiModelProperty("开新店意愿")
|
||||
@ExcelIgnore
|
||||
private String desire;
|
||||
|
||||
@ApiModelProperty("开新店意愿名称")
|
||||
@DictField
|
||||
@ExcelProperty(value = "开新店意愿", order = 10)
|
||||
@ColumnWidth(30)
|
||||
private String desireName;
|
||||
|
||||
@ApiModelProperty("意向开店城市")
|
||||
@ExcelIgnore
|
||||
private String desireCity;
|
||||
|
||||
@ApiModelProperty("意向开店城市名称")
|
||||
@ExcelProperty(value = "意向开店城市", order = 11)
|
||||
@ColumnWidth(30)
|
||||
private String desireCityName;
|
||||
|
||||
@ApiModelProperty("具体区域")
|
||||
@ExcelIgnore
|
||||
private String desireDistrict;
|
||||
|
||||
@ApiModelProperty("具体区域名称")
|
||||
@ExcelProperty(value = "具体区域", order = 15)
|
||||
@ColumnWidth(30)
|
||||
private String desireDistrictName;
|
||||
|
||||
@ApiModelProperty("是否对应现有铺位")
|
||||
@ExcelIgnore
|
||||
private Integer existingShopPoint;
|
||||
|
||||
@ApiModelProperty("是否对应现有铺位")
|
||||
@ExcelProperty(value = "是否对应现有铺位", order = 16)
|
||||
@ColumnWidth(30)
|
||||
private String existingShopPointConvert;
|
||||
|
||||
@ApiModelProperty("加盟商合影图片列表")
|
||||
@ExcelProperty(value = "加盟商合影", order = 18)
|
||||
@ColumnWidth(30)
|
||||
private String photos;
|
||||
|
||||
@ApiModelProperty("拜访状态")
|
||||
@ExcelIgnore
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty("拜访状态名称")
|
||||
@ExcelProperty(value = "状态", order = 17)
|
||||
@ColumnWidth(30)
|
||||
private String statusName;
|
||||
|
||||
@ApiModelProperty("新老加盟商,0新 1老")
|
||||
@ExcelIgnore
|
||||
private Integer isVeteran;
|
||||
|
||||
@ApiModelProperty("新老加盟商")
|
||||
@ExcelProperty(value = "新老加盟商", order = 5)
|
||||
@ColumnWidth(30)
|
||||
private String isVeteranConvert;
|
||||
|
||||
@ApiModelProperty("拜访人userId")
|
||||
@ExcelIgnore
|
||||
private String visitUserId;
|
||||
|
||||
@ApiModelProperty("拜访人")
|
||||
@ExcelProperty(value = "拜访人", order = 6)
|
||||
@ColumnWidth(30)
|
||||
private String visitUserName;
|
||||
|
||||
@ApiModelProperty("招商所属大区ID")
|
||||
@ExcelIgnore
|
||||
private Long investRegionId;
|
||||
|
||||
@ApiModelProperty("招商所属大区名称")
|
||||
@ExcelProperty(value = "招商所属大区", order = 3)
|
||||
@ColumnWidth(30)
|
||||
private String investRegionName;
|
||||
|
||||
@ApiModelProperty("招商经理")
|
||||
@ExcelIgnore
|
||||
public String investmentManager;
|
||||
|
||||
|
||||
@ApiModelProperty("招商经理名称")
|
||||
@ExcelProperty(value = "招商经理", order = 4)
|
||||
@ColumnWidth(30)
|
||||
private String investmentManagerName;
|
||||
|
||||
public String getStatusName() {
|
||||
return VisitStatusEnum.getDescByStatus(status);
|
||||
}
|
||||
|
||||
public String getExistingShopPointConvert() {
|
||||
return CommonConstants.INDEX_ONE.equals(existingShopPoint) ? "是" : "否";
|
||||
}
|
||||
|
||||
public String getIsVeteranConvert() {
|
||||
return CommonConstants.INDEX_ONE.equals(isVeteran) ? "老" : "新";
|
||||
}
|
||||
|
||||
public static class VeteranConverter implements Converter<Integer> {
|
||||
|
||||
@Override
|
||||
public Class<?> supportJavaTypeKey() {
|
||||
return Integer.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CellDataTypeEnum supportExcelTypeKey() {
|
||||
return CellDataTypeEnum.STRING;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
|
||||
String value = cellData.getStringValue();
|
||||
return "新".equals(value) ? 0 : 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CellData<?> convertToExcelData(Integer isVeteran, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
|
||||
if (isVeteran == null) {
|
||||
return new CellData<>("");
|
||||
}
|
||||
return new CellData<>(CommonConstants.INDEX_ZERO.equals(isVeteran) ? "新" : "老");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user