Browse Source

售后选择客户

master
fanzongzhe 11 months ago
parent
commit
fd2b68c849
  1. 16
      yxt-as/src/main/java/com/yxt/anrui/as/api/ascustomervehicle/AsCustomerCrmVehVo.java
  2. 42
      yxt-as/src/main/java/com/yxt/anrui/as/api/ascustomervehicle/AsCustomerVehicleQuery.java
  3. 185
      yxt-as/src/main/java/com/yxt/anrui/as/api/ascustomervehicle/QuickAddCustomer.java
  4. 3
      yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleMapper.java
  5. 15
      yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleMapper.xml
  6. 22
      yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleRest.java
  7. 60
      yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleService.java
  8. 146
      yxt-as/src/main/java/com/yxt/anrui/as/feign/crm/CrmCustomerTempDto.java
  9. 35
      yxt-as/src/main/java/com/yxt/anrui/as/feign/crm/CrmCustomerTempFeign.java

16
yxt-as/src/main/java/com/yxt/anrui/as/api/ascustomervehicle/AsCustomerCrmVehVo.java

@ -11,14 +11,18 @@ import lombok.Data;
*/
@Data
public class AsCustomerCrmVehVo implements Vo {
@ApiModelProperty("客户sid")
private String customerSid; // 客户sid
@ApiModelProperty("sid")
private String sid; // 客户车辆信息sid
@ApiModelProperty("车牌号")
private String vehMark; // 车牌号
@ApiModelProperty("车架号")
private String vinNo; // 车架号
@ApiModelProperty("车型sid")
private String vehModelSid;
@ApiModelProperty("车型")
private String vehModel;
@ApiModelProperty("客户类型")
private String customerType; // 车架号
@ApiModelProperty("联系电话")
private String mobile; // 联系电话
@ApiModelProperty("销售公司")
private String salesCompany; // 销售公司
@ApiModelProperty("客户名称")
private String customerName; // 客户名称
}

42
yxt-as/src/main/java/com/yxt/anrui/as/api/ascustomervehicle/AsCustomerVehicleQuery.java

@ -51,39 +51,21 @@ import lombok.Data;
@ApiModel(value = "客户车辆信息 查询条件", description = "客户车辆信息 查询条件")
public class AsCustomerVehicleQuery implements Query {
@ApiModelProperty("客户sid")
private String customerSid; // 客户sid
@ApiModelProperty("客户名称")
private String customerName; // 客户名称
@ApiModelProperty("车牌号")
private String vehMark; // 车牌号
@ApiModelProperty("车架号")
private String vinNo; // 车架号
@ApiModelProperty("发动机号")
private String engineNo; // 发动机号
@ApiModelProperty("车型sid")
private String vehModelSid; // 车型sid
@ApiModelProperty("车型")
private String vehModel; // 车型
@ApiModelProperty("行驶里程")
private Integer mileage; // 行驶里程
@ApiModelProperty("上次保养里程")
private Integer lastMileage; // 上次保养里程
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("下次保养日期")
private Date nextMaintainDateStart; // 下次保养日期
private Date nextMaintainDateEnd; // 下次保养日期
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("购车日期")
private Date buyDateStart; // 购车日期
private Date buyDateEnd; // 购车日期
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("商业险到期日期")
private Date commercialInsuranceEndDateStart; // 商业险到期日期
private Date commercialInsuranceEndDateEnd; // 商业险到期日期
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("交强险到期日期")
private Date compulsoryInsuranceEndDateStart; // 交强险到期日期
private Date compulsoryInsuranceEndDateEnd; // 交强险到期日期
@ApiModelProperty("0为内部车,1为外部车")
private Integer vehState; // 0为内部车,1为外部车
@ApiModelProperty("联系电话")
private String mobile; // 联系电话
@ApiModelProperty("客户类型key")
private String customerTypeKey; // 客户类型key
@ApiModelProperty("工单类型")
private String billType; // 0代表保险维修,显示所有客户(不传值也查询所有);
// 1定点维修显示已备案且在有效期内的定点维修客户;
// 2常规维修显示非定点维修客户
@ApiModelProperty("useOrgSid")
private String useOrgSid; // 部门sid
}

185
yxt-as/src/main/java/com/yxt/anrui/as/api/ascustomervehicle/QuickAddCustomer.java

@ -0,0 +1,185 @@
package com.yxt.anrui.as.api.ascustomervehicle;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @author Fan
* @description
* @date 2024/7/19 9:48
*/
@Data
public class QuickAddCustomer implements Dto {
@ApiModelProperty(value = "当前登录用户的sid")
private String userSid;
@ApiModelProperty(value = "客户类型(1个人/2企业)", required = true)
@NotBlank(message = "客户类型为必选项")
private String customerType;
@ApiModelProperty(value = "客户类型key", required = true)
@NotBlank(message = "客户类型为必选项")
private String customerTypeKey;
@ApiModelProperty(value = "见面方式key", required = true)
@NotBlank(message = "见面方式为必选项")
private String visitWayKey;
@ApiModelProperty(value = "见面方式(到店/电话/拜访)", required = true)
@NotBlank(message = "见面方式为必选项")
private String visitWay;
@ApiModelProperty(value = "客户名称", required = true)
@NotBlank(message = "客户名称为必填项")
private String name;
@ApiModelProperty("联系电话")
@NotBlank(message = "联系电话为必填项")
private String mobile;
@ApiModelProperty("微信号码")
private String weixin;
@ApiModelProperty("公司名称:个人客户时显示")
private String companyName;
@ApiModelProperty("行政区划代码(省)")
private String address_province;
@ApiModelProperty("行政区划代码(市)")
private String address_city;
@ApiModelProperty("行政区划代码(县)")
private String address_county;
@ApiModelProperty("客户地址:省")
private String province;
@ApiModelProperty("客户地址:市")
private String city;
@ApiModelProperty("客户地址:县")
private String county;
@ApiModelProperty("客户地址:详细地址")
private String address;
@ApiModelProperty("客户级别(意向客户/准客户/成交客户/集团内销/黑名单客户)")
private String level;
@ApiModelProperty("客户级别key")
private String levelKey;
@ApiModelProperty("是否开启提醒(1开启,0不开启)")
private String isOnRemindkey;
@ApiModelProperty("是否开启提醒(1开启,0不开启)")
private String isOnRemind;
@ApiModelProperty("提醒日期")
private String remind_day;
@ApiModelProperty("提醒备注")
private String remind_remark;
//更多信息
@ApiModelProperty("客户生日:个人客户时显示")
private String birthday;
@ApiModelProperty("性别:个人客户时显示")
private String sex;
@ApiModelProperty("性别key:个人客户时")
private String sexKey;
@ApiModelProperty("证件类型key")
private String certificateTypeKey;
@ApiModelProperty("证件类型(个人为身份证/企业为营业执照)")
private String certificateType;
@ApiModelProperty("证件号码(个人为身份证号/企业为统一社会信用代码)")
private String IDNumber;
@ApiModelProperty("证件有效期")
private String endDate;
@ApiModelProperty("电子邮箱")
private String e_mail;
@ApiModelProperty(value = "联系人")
private String contacts;
@ApiModelProperty("紧急联系人")
private String emergencyContact;
@ApiModelProperty("紧急联系电话")
private String emergencyMobile;
@ApiModelProperty("客户来源(公司资源/自主开发/交接客户/转介绍客户/集团内销)")
private String source;
@ApiModelProperty("客户来源key")
private String sourceKey;
@ApiModelProperty("客户分类(个人:司机/个体老板/其他。企业:企业型客户/一级经销商/二级经销商/终端物流客户)")
private String customerClass;
@ApiModelProperty("客户分类key")
private String customerClassKey;
@ApiModelProperty(value = "备注")
private String remarks;
@ApiModelProperty("业务人员sid")
private String staffSid;
private String orgPath;
private String useOrgSid;
private String customerOrgSid;
private String customerOrgName;
//--------------------车辆信息----------------------
private String customerVehSid; // 客户车辆信息sid
@ApiModelProperty("客户sid")
private String customerSid; // 客户sid
@ApiModelProperty("车牌号")
private String vehMark; // 车牌号
@ApiModelProperty("车架号")
private String vinNo; // 车架号
@ApiModelProperty("发动机号")
private String engineNo; // 发动机号
@ApiModelProperty("车型sid")
private String vehModelSid; // 车型sid
@ApiModelProperty("车型")
private String vehModel; // 车型
@ApiModelProperty("行驶里程")
private String mileage; // 行驶里程
@ApiModelProperty("上次保养里程")
private String lastMileage; // 上次保养里程
@ApiModelProperty("下次保养日期")
private String nextMaintainDate; // 下次保养日期
@ApiModelProperty("购车日期")
private String buyDate; // 购车日期
@ApiModelProperty("商业险到期日期")
private String commercialInsuranceEndDate; // 商业险到期日期
@ApiModelProperty("交强险到期日期")
private String compulsoryInsuranceEndDate; // 交强险到期日期
@ApiModelProperty("行驶里程")
private String currentMileage; // 行驶里程
@ApiModelProperty("每月公里")
private String MonthKm; // 每月公里
@ApiModelProperty("滤芯到期公里")
private String filter_km; // 滤芯到期公里
@ApiModelProperty("滤芯到期日期")
private String filter_date; // 滤芯到期日期
@ApiModelProperty("机油到期公里")
private String engineoil_km; // 机油到期公里
@ApiModelProperty("机油到期日期")
private String engineoil_date; // 机油到期日期
@ApiModelProperty("齿轮油到期公里")
private String gearoil_km; // 齿轮油到期公里
@ApiModelProperty("齿轮油到期日期")
private String gearoil_date; // 齿轮油到期日期
@ApiModelProperty("宝轮到期公里")
private String treasurewheel_km; // 宝轮到期公里
@ApiModelProperty("宝轮到期日期")
private String treasurewheel_date; // 宝轮到期日期
@ApiModelProperty("风扇皮带到期公里")
private String fanbelt_km; // 风扇皮带到期公里
@ApiModelProperty("风扇皮带到期日期")
private String fanbelt_date; // 风扇皮带到期日期
@ApiModelProperty("刹车片到期公里")
private String brakepads_km; // 刹车片到期公里
@ApiModelProperty("刹车片到期日期")
private String brakepads_date; // 刹车片到期日期
@ApiModelProperty("车辆备注")
private String carRemarks;
@ApiModelProperty("保养备注")
private String byRemarks;
}

3
yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleMapper.java

@ -26,6 +26,7 @@
package com.yxt.anrui.as.biz.ascustomervehicle;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
@ -69,4 +70,6 @@ public interface AsCustomerVehicleMapper extends BaseMapper<AsCustomerVehicle> {
@Update("update as_customer_vehicle set isDelete = '1' where sid =#{sid}")
void delBySid(@Param("sid") String sid);
IPage<AsCustomerCrmVehVo> customerList(IPage<AsCustomerVehicle> page,@Param(Constants.WRAPPER) QueryWrapper<AsCustomerVehicle> qw);
}

15
yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleMapper.xml

@ -24,4 +24,19 @@
WHERE
customerSid = #{sid}
</select>
<select id="customerList" resultType="com.yxt.anrui.as.api.ascustomervehicle.AsCustomerCrmVehVo">
SELECT
v.sid,
v.vehMark,
v.vinNo,
c.`name` AS customerName,
c.customerType,
c.mobile,
s.`name` AS salesCompany
FROM
as_customer_vehicle AS v
LEFT JOIN anrui_crm.crm_customer_temp AS c ON v.customerSid = c.sid
LEFT JOIN anrui_portal.sys_organization AS s ON c.createOrgSid = s.sid
<where> ${ew.sqlSegment} </where>
</select>
</mapper>

22
yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleRest.java

@ -82,6 +82,13 @@ public class AsCustomerVehicleRest{
return rb.success();
}
@ApiOperation("查询数据的列表")
@PostMapping("/customerList")
public ResultBean<PagerVo<AsCustomerCrmVehVo>> customerList(@RequestBody PagerQuery<AsCustomerVehicleQuery> pq){
ResultBean rb = ResultBean.fireFail();
PagerVo<AsCustomerCrmVehVo> pv = asCustomerVehicleService.customerList(pq);
return rb.success().setData(pv);
}
@ApiOperation("根据sid批量删除")
@DeleteMapping("/delBySids")
@ -113,4 +120,19 @@ public class AsCustomerVehicleRest{
public ResultBean saveCustomerVeh(@RequestBody AsCustomerVehicleDetails dto){
return asCustomerVehicleService.saveCustomerVeh(dto);
}
@ApiOperation("快捷新增初始化")
@GetMapping("/quickAddInit")
public ResultBean<QuickAddCustomer> quickAddInit(@RequestParam("sid") String sid){
ResultBean rb = ResultBean.fireFail();
QuickAddCustomer quickAddInit = asCustomerVehicleService.quickAddInit(sid);
return rb.success().setData(quickAddInit);
}
@ApiOperation("快捷新增初保存")
@PostMapping("/quickAddSave")
public ResultBean quickAddSave(@RequestBody QuickAddCustomer dto){
return asCustomerVehicleService.quickAddSave(dto);
}
}

60
yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleService.java

@ -31,6 +31,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.as.api.ascustomervehicle.*;
import com.yxt.anrui.as.api.ascustomervehmaintenance.AsCustomervehMaintenance;
import com.yxt.anrui.as.biz.ascustomervehmaintenance.AsCustomervehMaintenanceService;
import com.yxt.anrui.as.feign.crm.CrmCustomerTempDto;
import com.yxt.anrui.as.feign.crm.CrmCustomerTempFeign;
import com.yxt.common.core.result.ResultBean;
import org.apache.commons.lang3.StringUtils;
import com.yxt.common.base.service.MybatisBaseService;
@ -61,6 +63,8 @@ import java.util.List;
public class AsCustomerVehicleService extends MybatisBaseService<AsCustomerVehicleMapper, AsCustomerVehicle> {
@Autowired
private AsCustomervehMaintenanceService asCustomervehMaintenanceService;
@Autowired
private CrmCustomerTempFeign crmCustomerTempFeign;
private QueryWrapper<AsCustomerVehicle> createQueryWrapper(AsCustomerVehicleQuery query) {
// todo: 这里根据具体业务调整查询条件
@ -202,4 +206,60 @@ public class AsCustomerVehicleService extends MybatisBaseService<AsCustomerVehic
}
return rb.success();
}
public PagerVo<AsCustomerCrmVehVo> customerList(PagerQuery<AsCustomerVehicleQuery> pq) {
AsCustomerVehicleQuery query = pq.getParams();
QueryWrapper<AsCustomerVehicle> qw = new QueryWrapper<>();
if (StringUtils.isNotBlank(query.getUseOrgSid())) {
qw.eq("c.useOrgSid", query.getUseOrgSid());
}
if (StringUtils.isNotBlank(query.getCustomerName())) {
qw.eq("c.name", query.getCustomerName());
}
if (StringUtils.isNotBlank(query.getMobile())) {
qw.eq("c.mobile", query.getMobile());
}
if (StringUtils.isNotBlank(query.getCustomerTypeKey())) {
qw.eq("c.customerTypeKey", query.getCustomerTypeKey());
}
if (StringUtils.isNotBlank(query.getBillType())) {
}
if (StringUtils.isNotBlank(query.getVehMark())) {
qw.eq("v.vehMark", query.getVehMark());
}
if (StringUtils.isNotBlank(query.getVinNo())) {
qw.eq("v.vinNo", query.getVinNo());
}
IPage<AsCustomerVehicle> page = PagerUtil.queryToPage(pq);
IPage<AsCustomerCrmVehVo> pagging = baseMapper.customerList(page, qw);
PagerVo<AsCustomerCrmVehVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public QuickAddCustomer quickAddInit(String sid) {
QuickAddCustomer vo = new QuickAddCustomer();
AsCustomerVehicleDetails vehicleDetails = fetchDetailsVoBySid(sid);
if (null != vehicleDetails) {
BeanUtil.copyProperties(vehicleDetails, vo, "id", "sid", "customerVehSid", "customerSid");
}
return vo;
}
public ResultBean quickAddSave(QuickAddCustomer dto) {
ResultBean rb = ResultBean.fireFail();
CrmCustomerTempDto tempDto = new CrmCustomerTempDto();
BeanUtil.copyProperties(dto, tempDto);
ResultBean save = crmCustomerTempFeign.save(tempDto);
if (save.getSuccess()) {
String sid = (String) save.getData();
dto.setCustomerSid(sid);
AsCustomerVehicleDetails vehicleDetails = new AsCustomerVehicleDetails();
BeanUtil.copyProperties(dto, vehicleDetails);
saveCustomerVeh(vehicleDetails);
} else {
return rb.setMsg(save.getMsg());
}
return rb.success();
}
}

146
yxt-as/src/main/java/com/yxt/anrui/as/feign/crm/CrmCustomerTempDto.java

@ -0,0 +1,146 @@
package com.yxt.anrui.as.feign.crm;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.List;
/**
* Project: anrui-crm(客户管理) <br/>
* File: CrmCustomerTempDto.java <br/>
* Class: com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempDto <br/>
* Description: 潜在客户信息 数据传输对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2022-01-12 11:21:16 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@ApiModel(value = "潜在客户信息 数据传输对象", description = "潜在客户信息 数据传输对象")
@Data
public class CrmCustomerTempDto implements Dto {
private static final long serialVersionUID = 793474187074718535L;
@ApiModelProperty(value = "当前登录用户的sid")
private String userSid;
@ApiModelProperty(value = "客户类型(1个人/2企业)", required = true)
@NotBlank(message = "客户类型为必选项")
private String customerType;
@ApiModelProperty(value = "客户类型key", required = true)
@NotBlank(message = "客户类型为必选项")
private String customerTypeKey;
@ApiModelProperty(value = "见面方式key", required = true)
@NotBlank(message = "见面方式为必选项")
private String visitWayKey;
@ApiModelProperty(value = "见面方式(到店/电话/拜访)", required = true)
@NotBlank(message = "见面方式为必选项")
private String visitWay;
@ApiModelProperty(value = "客户名称", required = true)
@NotBlank(message = "客户名称为必填项")
private String name;
@ApiModelProperty("联系电话")
@NotBlank(message = "联系电话为必填项")
private String mobile;
@ApiModelProperty("微信号码")
private String weixin;
@ApiModelProperty("公司名称:个人客户时显示")
private String companyName;
@ApiModelProperty("行政区划代码(省)")
private String address_province;
@ApiModelProperty("行政区划代码(市)")
private String address_city;
@ApiModelProperty("行政区划代码(县)")
private String address_county;
@ApiModelProperty("客户地址:省")
private String province;
@ApiModelProperty("客户地址:市")
private String city;
@ApiModelProperty("客户地址:县")
private String county;
@ApiModelProperty("客户地址:详细地址")
private String address;
@ApiModelProperty("客户级别(意向客户/准客户/成交客户/集团内销/黑名单客户)")
private String level;
@ApiModelProperty("客户级别key")
private String levelKey;
@ApiModelProperty("是否开启提醒(1开启,0不开启)")
private String isOnRemindkey;
@ApiModelProperty("是否开启提醒(1开启,0不开启)")
private String isOnRemind;
@ApiModelProperty("提醒日期")
private String remind_day;
@ApiModelProperty("提醒备注")
private String remind_remark;
//更多信息
@ApiModelProperty("客户生日:个人客户时显示")
private String birthday;
@ApiModelProperty("性别:个人客户时显示")
private String sex;
@ApiModelProperty("性别key:个人客户时")
private String sexKey;
@ApiModelProperty("证件类型key")
private String certificateTypeKey;
@ApiModelProperty("证件类型(个人为身份证/企业为营业执照)")
private String certificateType;
@ApiModelProperty("证件号码(个人为身份证号/企业为统一社会信用代码)")
private String IDNumber;
@ApiModelProperty("证件有效期")
private String endDate;
@ApiModelProperty("电子邮箱")
private String e_mail;
@ApiModelProperty(value = "联系人")
private String contacts;
@ApiModelProperty("紧急联系人")
private String emergencyContact;
@ApiModelProperty("紧急联系电话")
private String emergencyMobile;
@ApiModelProperty("客户来源(公司资源/自主开发/交接客户/转介绍客户/集团内销)")
private String source;
@ApiModelProperty("客户来源key")
private String sourceKey;
@ApiModelProperty("客户分类(个人:司机/个体老板/其他。企业:企业型客户/一级经销商/二级经销商/终端物流客户)")
private String customerClass;
@ApiModelProperty("客户分类key")
private String customerClassKey;
@ApiModelProperty(value = "备注")
private String remarks;
@ApiModelProperty("业务人员sid")
private String staffSid;
//运营信息
// @ApiModelProperty(value = "运营信息")
// private CrmBusinessDto crmBusinessDto = new CrmBusinessDto();
// //见证材料集合
// @ApiModelProperty(value = "见证材料的集合,编辑保存时无此字段")
// private List<PcCrmVisitAppendixDto> crmVisitAppendixDtoList = new ArrayList<>();
private String orgPath;
private String useOrgSid;
private String customerOrgSid;
private String customerOrgName;
}

35
yxt-as/src/main/java/com/yxt/anrui/as/feign/crm/CrmCustomerTempFeign.java

@ -0,0 +1,35 @@
package com.yxt.anrui.as.feign.crm;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import javax.validation.Valid;
/**
* @author Fan
* @description
* @date 2024/7/19 10:10
*/
@Api(tags = "潜在客户信息")
@FeignClient(
contextId = "anrui-crm-CrmCustomerTemp",
name = "anrui-crm",
path = "v1/crmcustomertemp"
)
public interface CrmCustomerTempFeign {
/**
* pc端潜在客户新增保存
*
* @param dto 客户信息及运行信息数据传输对象
* @return
*/
@ApiOperation("新增保存")
@PostMapping("/save")
public ResultBean save(@Valid @RequestBody CrmCustomerTempDto dto);
}
Loading…
Cancel
Save