diff --git a/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/CrmCustomerFileRest.java b/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/CrmCustomerFileRest.java new file mode 100644 index 0000000..736f8b5 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/CrmCustomerFileRest.java @@ -0,0 +1,93 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.oms.apiadmin.aggregation; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.oms.biz.func.crmcustomerfile.CrmCustomerFileQuery; +import com.yxt.oms.biz.func.crmcustomerfile.CrmCustomerFileService; +import com.yxt.oms.biz.func.crmcustomerfile.CrmCustomerFileVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * Project: anrui-crm(客户)
+ * File: CrmCustomerFileFeignFallback.java
+ * Class: com.yxt.anrui.crm.biz.crmcustomerfile.CrmCustomerFileRest
+ * Description: 客户资料初始化表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-02-26 14:10:17
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "客户资料初始化表") +@RestController("com.yxt.anrui.crm.biz.crmcustomerfile.CrmCustomerFileRest") +@RequestMapping("v1/crmcustomerfile") +public class CrmCustomerFileRest { + + @Autowired + private CrmCustomerFileService crmCustomerFileService; + + /** + * 客户资料初始化分页查询列表 + * + * @param pq + * @return + */ + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + return crmCustomerFileService.listPageVo(pq); + } +// +// +// public ResultBean saveCustomerFile(String staffName, String staffSid, String sid, List crmFileDtos) { +// return crmCustomerFileService.saveCustomerFile(staffName, staffSid, sid, crmFileDtos); +// } +// +// +// public ResultBean fetchFileListBySid(String sid) { +// return crmCustomerFileService.fetchFileListBySid(sid); +// } +// +// +// public ResultBean> selectIdImageByCustomerSid(String customerSid) { +// ResultBean rb = ResultBean.fireFail(); +// List crmCustomerFiles = crmCustomerFileService.selectIdImageByCustomerSid(customerSid); +// return rb.success().setData(crmCustomerFiles); +// } + + +} diff --git a/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/CrmCustomerTempRest.java b/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/CrmCustomerTempRest.java index e459d4a..dd99285 100644 --- a/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/CrmCustomerTempRest.java +++ b/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/CrmCustomerTempRest.java @@ -41,81 +41,82 @@ public class CrmCustomerTempRest { return crmCustomerTempService.chooseCustomerList(pq); } -// -// /** -// * 潜在客户管理的分页查询 -// * -// * @param pq -// * @return -// */ -// @ApiOperation("根据条件分页查询数据的列表") -// @PostMapping("/listPage") -// public ResultBean> listPage(@RequestBody PagerQuery pq) { -// return crmCustomerTempService.listPageVo(pq); -// } -// -// -// /** -// * 潜在客户新增保存 -// * -// * @param dto 数据传输对象 -// * @return -// */ -// @ApiOperation("新增保存") -// @PostMapping("/save") -// public ResultBean save(@Valid @RequestBody CrmCustomerTempDto dto) { -// return crmCustomerTempService.saveCrmCustomer(dto); -// } -// -// /** -// * 潜在客户修改保存 -// * -// * @param dto 数据传输对象 -// * @param sid 潜在客户sid -// * @return -// */ -// @ApiOperation("修改保存") -// @PostMapping("/update/{sid}") -// public ResultBean update(@RequestBody CrmCustomerTempUpdateDto dto, @PathVariable("sid") String sid) { -// ResultBean rb = ResultBean.fireFail(); -// String weixin = dto.getWeixin(); -// if (StringUtils.isNotBlank(weixin)) { -// if (!weixin.matches("^[a-zA-Z]{1}[-_a-zA-Z0-9]{5,19}$") && !weixin.matches("^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$")) { -// return rb.setMsg("微信号格式不正确"); -// } -// } -// String email = dto.getE_mail(); -// if (StringUtils.isNotBlank(email)) { -// if (!email.matches("^[0-9A-Za-z][\\.-_0-9A-Za-z]*@[0-9A-Za-z]+(?:\\.[0-9A-Za-z]+)+$")) { -// return rb.setMsg("邮箱格式不正确"); -// } -// } -// ResultBean resultBean = crmCustomerTempService.updateCrmCustomer(dto, sid); -// if (!resultBean.getSuccess()) { -// return rb.setMsg(resultBean.getMsg()); -// } -// return rb.success().setMsg(resultBean.getMsg()); -// } -// -// @ApiOperation("删除记录") -// @DeleteMapping("/del") -// public ResultBean del(@RequestBody String[] sid) { -// ResultBean rb = ResultBean.fireFail(); -// crmCustomerTempService.delBySids(sid); -// return rb.success(); -// } -// -// @ApiOperation("获取一条记录") -// @GetMapping("/fetchSid/{sid}") -// public ResultBean fetchSid(@PathVariable("sid") String sid) { -// ResultBean rb = ResultBean.fireFail(); -// CrmCustomerTemp customerTemp = crmCustomerTempService.fetchBySid(sid); -// if (customerTemp == null) { -// return rb.setMsg("该客户不存在"); -// } -// CrmCustomerTempVo vo = crmCustomerTempService.fetchAllBySid(sid); -// return rb.success().setData(vo); -// } + + /** + * 潜在客户管理的分页查询 + * + * @param pq + * @return + */ + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + return crmCustomerTempService.listPageVo(pq); + } + + + /** + * 潜在客户新增保存 + * + * @param dto 数据传输对象 + * @return + */ + @ApiOperation("新增保存") + @PostMapping("/save") + public ResultBean save(@Valid @RequestBody CrmCustomerTempDto dto) { + return crmCustomerTempService.saveCrmCustomer(dto); + } + + @ApiOperation("删除记录") + @DeleteMapping("/del") + public ResultBean del(@RequestBody String[] sid) { + return crmCustomerTempService.del(sid); + } + + + /** + * 潜在客户修改保存 + * + * @param dto 数据传输对象 + * @param sid 潜在客户sid + * @return + */ + @ApiOperation("修改保存") + @PostMapping("/update/{sid}") + public ResultBean update(@RequestBody CrmCustomerTempUpdateDto dto, @PathVariable("sid") String sid) { + ResultBean rb = ResultBean.fireFail(); + String weixin = dto.getWeixin(); + if (StringUtils.isNotBlank(weixin)) { + if (!weixin.matches("^[a-zA-Z]{1}[-_a-zA-Z0-9]{5,19}$") && !weixin.matches("^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$")) { + return rb.setMsg("微信号格式不正确"); + } + } + String email = dto.getE_mail(); + if (StringUtils.isNotBlank(email)) { + if (!email.matches("^[0-9A-Za-z][\\.-_0-9A-Za-z]*@[0-9A-Za-z]+(?:\\.[0-9A-Za-z]+)+$")) { + return rb.setMsg("邮箱格式不正确"); + } + } + ResultBean resultBean = crmCustomerTempService.updateCrmCustomer(dto, sid); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setMsg(resultBean.getMsg()); + } + + + + @ApiOperation("获取一条记录") + @GetMapping("/fetchSid/{sid}") + public ResultBean fetchSid(@PathVariable("sid") String sid) { + ResultBean rb = ResultBean.fireFail(); + CrmCustomerTemp customerTemp = crmCustomerTempService.fetchBySid(sid); + if (customerTemp == null) { + return rb.setMsg("该客户不存在"); + } + CrmCustomerTempVo vo = crmCustomerTempService.fetchAllBySid(sid); + return rb.success().setData(vo); + } diff --git a/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/CrmVisitRest.java b/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/CrmVisitRest.java new file mode 100644 index 0000000..7523d31 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/apiadmin/aggregation/CrmVisitRest.java @@ -0,0 +1,155 @@ +package com.yxt.oms.apiadmin.aggregation; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.common.base.utils.DateUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.oms.biz.func.crmfile.CommonAttachTypeEnum; +import com.yxt.oms.biz.func.crmfile.PcCommonAppendixDto; +import com.yxt.oms.biz.func.crmvisit.*; +import com.yxt.oms.feign.customer.crmfile.CrmFileFeign; +import com.yxt.oms.feign.customer.crmvisit.CrmVisitFeign; +import com.yxt.oms.feign.customer.customertemp.CrmCustomerTempFeign; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +/** + * Project: anrui-crm(客户管理)
+ * File: CrmVisitFeignFallback.java
+ * Class: com.yxt.anrui.crm.biz.crmvisit.CrmVisitRest
+ * Description: 客户跟进记录.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-09-28 09:57:14
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "客户跟进记录") +@RestController +@RequestMapping("v1/crmvisit") +public class CrmVisitRest { + + @Autowired + private CrmVisitService crmVisitService; + @Autowired + private CrmCustomerTempFeign crmCustomerTempFeign; + @Autowired + private CrmFileFeign crmFileFeign; + + + /** + * pc端某客户的跟进记录分页列表 + * + * @param pagerQuery + * @return + */ + @ApiOperation("跟进记录分页列表") + @PostMapping("/pagerList") + public ResultBean> pagerList(@RequestBody PagerQuery pagerQuery) { + return crmVisitService.pagerList(pagerQuery); + } + + @ApiOperation("Pc查看详情及修改回显") + @GetMapping("/fetchSid/{sid}") + public ResultBean fetchSid(@PathVariable("sid") String sid){ + return crmVisitService.fetchSid(sid); + } + + @ApiOperation("Pc新增保存") + @PostMapping("/save") + public ResultBean save(@RequestBody CrmVisitDto dto){ + ResultBean rb = ResultBean.fireFail(); + String customerSid = dto.getCustomerSid(); + int count = crmCustomerTempFeign.selBySid(customerSid); + if (count > 0) { + CrmVisit entity = new CrmVisit(); + BeanUtil.copyProperties(dto, entity); + boolean IsSave = crmVisitService.save(entity); + if (!IsSave) { + return rb.fail().setMsg("添加失败"); + } + List pcCrmvisitAppendixDtos = dto.getList(); + for (PcCrmVisitAppendixDto pcCrmvisitAppendixDto : pcCrmvisitAppendixDtos) { + PcCommonAppendixDto pcCommonAppendixDto = new PcCommonAppendixDto(); + String sid = entity.getSid(); + String staffSid = dto.getStaffSid(); + BeanUtil.copyProperties(pcCrmvisitAppendixDto, pcCommonAppendixDto); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String createTime = simpleDateFormat.format(new Date()); + if (dto.getList().size() != 0) { + crmFileFeign.saveOrUpdatePcAppendix(pcCommonAppendixDto, sid, staffSid, CommonAttachTypeEnum.WITNESS.getAttachType()); + } + } + String isOnRemindkey = dto.getIsOnRemindkey(); + if (StringUtils.isNotBlank(isOnRemindkey)) { // 0 未开启 1 开启 + String remindDay = "未设置提醒"; + if (isOnRemindkey.equals("0")) { + //没有开启默认未设置 + dto.setRemind_day(remindDay); + dto.setRemind_remark(""); + } + if (isOnRemindkey.equals("1")) { + //开启默认判断时间是否是10:00之前 + String date = DateUtils.dateConvertStr(new Date(), "yyyy-MM-dd") + " 10:00:00"; + if (DateUtils.compTime2(date, dto.getRemind_day())) { + //是的话设置开启时间 + dto.setRemind_day(dto.getRemind_day()); + } else { + dto.setRemind_day(remindDay); + } + } + } + //更新客户信息的提醒日期、提醒备注、是否提醒。 + String remind_day = dto.getRemind_day(); + String remind_remark = dto.getRemind_remark(); + String isOnRemind = dto.getIsOnRemind(); + String follow_state = dto.getFollow_state(); + crmCustomerTempFeign.updateRemindAndByCustomerSid(customerSid, remind_day, remind_remark, isOnRemind, isOnRemindkey, follow_state); + return rb.success().setMsg("添加成功"); + } + return rb.fail().setMsg("保存失败,该客户不存在"); + } + + @ApiOperation("Pc修改保存") + @PostMapping("/update/{sid}") + public ResultBean update(@RequestBody CrmVisitDto dto, @PathVariable("sid") String sid){ + + ResultBean rb = ResultBean.fireFail(); + int i = crmVisitService.updateBySid(dto, sid); + if (i == 0) { + return rb.fail().setMsg("修改失败"); + } + ResultBean delFiles = crmFileFeign.deleteFiles(sid); + if (delFiles != null) { + List pcCrmvisitAppendixDtos = dto.getList(); + for (PcCrmVisitAppendixDto pcCrmvisitAppendixDto : pcCrmvisitAppendixDtos) { + PcCommonAppendixDto pcCommonAppendixDto = new PcCommonAppendixDto(); + String staffSid = dto.getStaffSid(); + BeanUtil.copyProperties(pcCrmvisitAppendixDto, pcCommonAppendixDto); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String createTime = simpleDateFormat.format(new Date()); + if (dto.getList().size() != 0) { + ResultBean resultBean = crmFileFeign.saveOrUpdatePcAppendix(pcCommonAppendixDto, sid, staffSid, CommonAttachTypeEnum.WITNESS.getAttachType()); + } + } + return rb.success().setMsg("修改成功"); + } + return rb.fail().setMsg("修改失败"); + } + + @ApiOperation("删除记录") + @DeleteMapping("/del") + public ResultBean del(@RequestBody String[] ids){ + return crmVisitService.delBySids(ids); + } +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTemp.java b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTemp.java new file mode 100644 index 0000000..922a954 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTemp.java @@ -0,0 +1,163 @@ +package com.yxt.oms.biz.func.crmcustomer; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-crm(客户管理)
+ * File: CrmCustomerTemp.java
+ * Class: com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp
+ * Description: 潜在客户信息.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-01-12 11:21:16
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "潜在客户信息", description = "潜在客户信息") +@TableName("crm_customer") +@Data +public class CrmCustomerTemp extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("客户编号(部门编码+客户类型(1位,0个人,1企业)+部门内部流水号(6位))") + private String customerNo; + + @ApiModelProperty("客户类型(自然人/法人)") + private String customerType; + + @ApiModelProperty("客户类型key") + private String customerTypeKey; + + @ApiModelProperty("客户分类(个人:司机/个体老板/其他。企业:企业型客户/一级经销商/二级经销商/终端物流客户)") + private String customerClass; + + @ApiModelProperty("客户分类key") + private String customerClassKey; + + @ApiModelProperty("客户来源(公司资源/自主开发/交接客户/转介绍客户/集团内销)") + private String source; + + @ApiModelProperty("客户来源key") + private String sourceKey; + + @ApiModelProperty("客户级别(意向客户/准客户/成交客户/集团内销/黑名单客户)") + private String level; + + @ApiModelProperty("客户级别key") + private String levelKey; + + @ApiModelProperty("客户名称") + private String name; + + @ApiModelProperty("证件类型key") + private String certificateTypeKey; + + @ApiModelProperty("证件类型(个人为身份证/企业为营业执照)") + private String certificateType; + + @ApiModelProperty("证件号码(个人为身份证号/企业为统一社会信用代码)") + private String IDNumber; + + @ApiModelProperty("证件有效期") + private String endDate; + + @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 zipCode; + + @ApiModelProperty("电子邮箱") + private String e_mail; + + @ApiModelProperty("联系人") + private String contacts; + + @ApiModelProperty("联系电话") + private String mobile; + + @ApiModelProperty("紧急联系电话") + private String emergencyContact; + + @ApiModelProperty("紧急联系电话") + private String emergencyMobile; + + @ApiModelProperty("微信号码") + private String weixin; + + @ApiModelProperty("业务人员sid") + private String staffSid; + + @ApiModelProperty("创建组织sid") + private String createOrgSid; + + @ApiModelProperty("创建部门sid") + private String useOrgSid; + + @ApiModelProperty("性别") + private String sex; + + @ApiModelProperty("性别key") + private String sexKey; + + @ApiModelProperty("生日") + private String birthday; + + @ApiModelProperty("所在公司名称") + private String companyName; + + @ApiModelProperty("跟进状态key") + private String follow_state_key; + + @ApiModelProperty("跟进状态") + private String follow_state; + + @ApiModelProperty("是否开启提醒key(1开启,0不开启)") + private String isOnRemindkey; + + @ApiModelProperty("是否开启提醒(1开启,0不开启)") + private String isOnRemind; + + @ApiModelProperty("提醒日期") + private String remind_day; + + @ApiModelProperty("提醒备注") + private String remind_remark; + + @ApiModelProperty("客户头像") + private String customerPhoto; + + @ApiModelProperty("见面方式key") + private String visitWayKey; + + @ApiModelProperty("见面方式(到店/电话/拜访)") + private String visitWay; + + @ApiModelProperty("证件地址") + private String certificateAddress; +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempDto.java b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempDto.java new file mode 100644 index 0000000..bbe35a3 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempDto.java @@ -0,0 +1,144 @@ +package com.yxt.oms.biz.func.crmcustomer; + + + +import com.yxt.common.core.dto.Dto; +import com.yxt.oms.biz.func.crmvisit.PcCrmVisitAppendixDto; +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(客户管理)
+ * File: CrmCustomerTempDto.java
+ * Class: com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempDto
+ * Description: 潜在客户信息 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-01-12 11:21:16
+ * + * @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 List crmVisitAppendixDtoList = new ArrayList<>(); + + + private String orgPath; + private String useOrgSid; + private String customerOrgSid; + private String customerOrgName; + +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempQuery.java b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempQuery.java new file mode 100644 index 0000000..a846628 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempQuery.java @@ -0,0 +1,67 @@ +package com.yxt.oms.biz.func.crmcustomer; + + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * Project: anrui-crm(客户管理)
+ * File: CrmCustomerTempQuery.java
+ * Class: com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempQuery
+ * Description: 潜在客户信息 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-01-12 11:21:16
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "潜在客户信息 查询条件", description = "潜在客户信息 查询条件") +@Data +public class CrmCustomerTempQuery implements Query { + + @ApiModelProperty(value = "组织全路径") + private String orgSidPath; + + @ApiModelProperty("客户类型key(自然人/法人)") + private String customerTypeKey; + + @ApiModelProperty("客户级别(意向客户/准客户/成交客户/集团内销/黑名单客户)") + private String levelKey; + + @ApiModelProperty("客户名称") + private String name; + + @ApiModelProperty("联系电话") + private String mobile; + + @ApiModelProperty("提醒开始日期") + private String remindStartDay; + + @ApiModelProperty("提醒结束日期") + private String remindEndDay; + + @ApiModelProperty("业务员sid") + private String staffSid; + + @ApiModelProperty("用户sid") + private String userSid; + + @ApiModelProperty("客户sid") + private List customerSidList; + + @ApiModelProperty("创建开始日期") + private String createStartDate; + + @ApiModelProperty("创建结束日期") + private String createEndDate; + + @ApiModelProperty("销售专员") + private String staffName; + +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempService.java b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempService.java index 9fe395d..e2b1f67 100644 --- a/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempService.java +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempService.java @@ -1,19 +1,23 @@ package com.yxt.oms.biz.func.crmcustomer; import cn.hutool.core.bean.BeanUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; - import com.yxt.common.base.config.component.FileUploadComponent; -import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.HanZiConverterPinYin; import com.yxt.common.base.utils.HttpStatusEnum; -import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; +import com.yxt.oms.biz.func.crmfile.PcCommonAppendixDto; +import com.yxt.oms.biz.func.crmvisit.CrmVisitService; +import com.yxt.oms.biz.func.crmvisit.PcCrmVisitAppendixDto; import com.yxt.oms.biz.func.sysorganization.SysOrganizationVo; +import com.yxt.oms.biz.func.sysstafforg.SysStaffOrg; +import com.yxt.oms.config.DictCommonType; +import com.yxt.oms.feign.customer.crmfile.CrmFileFeign; import com.yxt.oms.feign.customer.customertemp.CrmCustomerTempFeign; +import com.yxt.oms.feign.portal.dictcommon.DictCommonFeign; +import com.yxt.oms.feign.portal.sysorganization.SysOrganizationFeign; +import com.yxt.oms.feign.portal.sysstafforg.SysStaffOrgFeign; import com.yxt.oms.feign.portal.sysuser.SysUserFeign; import com.yxt.oms.feign.portal.sysuser.SysUserVo; import org.apache.commons.lang3.StringUtils; @@ -22,10 +26,10 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.*; +import java.util.ArrayList; +import java.util.List; /** * Project: anrui-crm(客户管理)
@@ -44,24 +48,225 @@ import java.util.*; public class CrmCustomerTempService { public static final Logger logger = LoggerFactory.getLogger(CrmCustomerTempService.class); + @Autowired + private CrmFileFeign crmFileFeign; + @Autowired + private CrmVisitService crmVisitService; @Autowired private FileUploadComponent fileUploadComponent; @Resource private SysUserFeign sysUserFeign; @Autowired private CrmCustomerTempFeign crmCustomerTempFeign; + @Autowired + private SysStaffOrgFeign sysStaffOrgFeign; + @Resource + private DictCommonFeign dictCommonFeign; + @Resource + private SysOrganizationFeign sysOrganizationFeign; -// public ResultBean> listPageVo(PagerQuery pq) { -// if (StringUtils.isNotBlank(pq.getParams().getUserSid())) { -// String staffSid = sysUserFeign.selectBySid(pq.getParams().getUserSid()).getData().getStaffSid(); -// pq.getParams().setStaffSid(staffSid); -// } -// return crmCustomerTempFeign.listPage(pq); -// } + public ResultBean> listPageVo(PagerQuery pq) { + if (StringUtils.isNotBlank(pq.getParams().getUserSid())) { + String staffSid = sysUserFeign.selectBySid(pq.getParams().getUserSid()).getData().getStaffSid(); + pq.getParams().setStaffSid(staffSid); + } + return crmCustomerTempFeign.listPage(pq); + } public ResultBean> chooseCustomerList(PagerQuery pq) { ResultBean> pagerVoResultBean = crmCustomerTempFeign.chooseCustomerList(pq); return pagerVoResultBean; } + + /** + * pc端潜在客户新增保存 + * + * @param dto 数据传输对象 + * state值:211:为当前用户的客户 + * @return + */ + public ResultBean saveCrmCustomer(CrmCustomerTempDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + //手机号 + String mobile = dto.getMobile(); + //微信号 + String weixin = dto.getWeixin(); + if (StringUtils.isNotBlank(weixin)) { + if (!weixin.matches("^[a-zA-Z]{1}[-_a-zA-Z0-9]{5,19}$") && !weixin.matches("^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$")) { + return rb.setMsg("微信号格式不正确"); + } + } + String email = dto.getE_mail(); + if (StringUtils.isNotBlank(email)) { + if (!email.matches("^[0-9A-Za-z][\\.-_0-9A-Za-z]*@[0-9A-Za-z]+(?:\\.[0-9A-Za-z]+)+$")) { + return rb.setMsg("邮箱格式不正确"); + } + } + String emergencyMobile = dto.getEmergencyMobile(); + if (StringUtils.isNotBlank(emergencyMobile)) { + if (!emergencyMobile.matches("^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$")) { + return rb.setMsg("紧急联系电话格式不正确"); + } + } + //根据用户sid获取业务员信息 + SysUserVo sysUserVo = sysUserFeign.fetchBySid(dto.getUserSid()).getData(); + if (sysUserVo == null) { + return rb.setMsg("该用户不存在"); + } + String staffSid = sysUserVo.getStaffSid(); + String name = dto.getName(); + //生成客户编码:分公司简称+部门编码+手机号+姓名首字母大写拼写 + String customerNo = getPrefix(staffSid, name, mobile); + //查询该客户编码是否存在 + CrmCustomerTemp crmCustomerTemp = crmCustomerTempFeign.selectByCustomerNo(customerNo).getData(); + if (crmCustomerTemp != null) {//存在 + //查询是否是当前用户客户 + if (!dto.getUserSid().equals(crmCustomerTemp.getCreateBySid())) { + String staffName = ""; + SysUserVo sysCrmVo = sysUserFeign.fetchBySid(crmCustomerTemp.getCreateBySid()).getData(); + if (sysCrmVo != null) { + staffName = sysCrmVo.getName(); + return rb.setCode(HttpStatusEnum.CRM_ERROR_NOTBELONG.getCode()).setMsg("为" + staffName + "客户"); + } + } else { + // 返回潜在客户sid,跳转维护信息页面 + return rb.setCode(HttpStatusEnum.CRM_ERROR_EXIST.getCode()).setMsg(HttpStatusEnum.CRM_ERROR_EXIST.getMsg()).setData(crmCustomerTemp.getSid()); + } + + } else {//不存在 + // 新增 + CrmCustomerTemp customerTemp = saveCrmCustomerTemp(dto, sysUserVo); + sid = customerTemp.getSid(); + } + return rb.success().setData(sid); + } + + /** + * 新增潜在客户信息及运营信息并增加跟进记录 + * + * @param dto 潜在客户信息数据传输对象 + * @param sysUserInfoVo 当前登录者的组织信息 + * @return + */ + private CrmCustomerTemp saveCrmCustomerTemp(CrmCustomerTempDto dto, SysUserVo sysUserInfoVo) { + CrmCustomerTemp crmCustomerTemp = new CrmCustomerTemp(); + dto.fillEntity(crmCustomerTemp); + crmCustomerTemp.setCreateBySid(dto.getUserSid()); + crmCustomerTemp.setStaffSid(sysUserInfoVo.getStaffSid()); + String orgSid = ""; + if (StringUtils.isNotBlank(dto.getOrgPath())) { + orgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData(); + } else { + orgSid = sysStaffOrgFeign.getPathSidByUserSid(dto.getUserSid()).getData(); + } + crmCustomerTemp.setCreateOrgSid(orgSid); + ResultBean resultBean = dictCommonFeign.getFirstDictKeyByType(DictCommonType.FOLLOW_STATE, "0"); + if (resultBean.getSuccess() && resultBean.getData() != null) { + String key = resultBean.getData().toString(); + crmCustomerTemp.setFollow_state_key(key); + crmCustomerTemp.setFollow_state(dictCommonFeign.selectBykey(key, DictCommonType.FOLLOW_STATE).getData().getDictValue()); + } + //客户编码 + String customerNo = getPrefix(crmCustomerTemp.getStaffSid(), crmCustomerTemp.getName(), crmCustomerTemp.getMobile()); + crmCustomerTemp.setCustomerNo(customerNo); + if (StringUtils.isNotBlank(dto.getUseOrgSid())) { + crmCustomerTemp.setUseOrgSid(dto.getUseOrgSid()); + } + crmCustomerTempFeign.saveEntity(crmCustomerTemp); + // 增加跟进记录 + String visitSid = crmVisitService.insertCrmVisitOne(dto.getUserSid(), crmCustomerTemp.getSid(), crmCustomerTemp.getIsOnRemindkey(), crmCustomerTemp.getIsOnRemind(), dto.getVisitWay(), dto.getVisitWayKey()); + // 增加附件信息 + if (dto.getCrmVisitAppendixDtoList().size() != 0) { + List pcCommonAppendixDtoList = new ArrayList<>(); + List list = dto.getCrmVisitAppendixDtoList(); + for (int i = 0; i < list.size(); i++) { + PcCommonAppendixDto pcCommonAppendixDto = new PcCommonAppendixDto(); + PcCrmVisitAppendixDto pcCrmVisitAppendixDto = list.get(i); + BeanUtils.copyProperties(pcCrmVisitAppendixDto, pcCommonAppendixDto); + pcCommonAppendixDtoList.add(pcCommonAppendixDto); + } + crmFileFeign.saveCommonAppendix(visitSid, pcCommonAppendixDtoList); + } + return crmCustomerTemp; + + } + + + public String getPrefix(String staffSid, String name, String mobile) { + String customerNoPrefix = ""; + //查询业务员的分公司简称和部门编码 + ResultBean staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(staffSid); + if (staffOrgResultBean.getSuccess()) { + SysStaffOrg sysStaffOrg = staffOrgResultBean.getData(); + if (sysStaffOrg != null) { +// ResultBean resultBean1 = sysStaffOrgFeign.getOrgSidByPath(sysStaffOrg.getOrgSid()); +// if (resultBean1.getSuccess()) { +// String osid = resultBean1.getData(); +// if (StringUtils.isNotBlank(osid)) { +// ResultBean sysOrganizationVoResultBean = sysOrganizationFeign.fetchBySid(osid); +// if (sysOrganizationVoResultBean.getSuccess()) { +// SysOrganizationVo sysOrganizationVo = sysOrganizationVoResultBean.getData(); +// customerNoPrefix = customerNoPrefix + sysOrganizationVo.getOrgAbbre(); +// } +// } +// } + String orgSid1 = sysStaffOrg.getOrgSid(); + ResultBean sysOrganizationVoResultBean = sysOrganizationFeign.fetchBySid(orgSid1); + if (sysOrganizationVoResultBean.getSuccess()) { + SysOrganizationVo sysOrganizationVo = sysOrganizationVoResultBean.getData(); + customerNoPrefix = customerNoPrefix + sysOrganizationVo.getOrgCode(); + } + } + } + customerNoPrefix = customerNoPrefix + mobile + HanZiConverterPinYin.getPinYinFirst(name); + System.out.println(customerNoPrefix.length() > 30 ? customerNoPrefix.substring(0, 30) : customerNoPrefix); + return customerNoPrefix.length() > 30 ? customerNoPrefix.substring(0, 30) : customerNoPrefix; + } + + + public ResultBean del(String[] sid) { + return crmCustomerTempFeign.del(sid); + } + + /** + * 潜在客户的信息的编辑保存 + * + * @param dto 数据传输对象 + * @param sid 潜在客户的sid + * @return + */ + public ResultBean updateCrmCustomer(CrmCustomerTempUpdateDto dto, String sid) { + ResultBean rb = ResultBean.fireFail(); + CrmCustomerTemp customerTemp = crmCustomerTempFeign.fetchBySid(sid).getData(); + if (customerTemp == null) { + return rb.setMsg("该客户不存在"); + } + //对比客户名称以及手机号是否变化 + if (!customerTemp.getName().equals(dto.getName())) { + return rb.setMsg("客户名称不允许修改"); + } + if (!customerTemp.getMobile().equals(dto.getMobile())) { + return rb.setMsg("客户手机号不允许修改"); + } + BeanUtil.copyProperties(dto, customerTemp); + if (StringUtils.isNotBlank(dto.getUseOrgSid())) { + customerTemp.setUseOrgSid(dto.getUseOrgSid()); + } + crmCustomerTempFeign.updateEntity(customerTemp); + return rb.success(); + } + + public CrmCustomerTemp fetchBySid(String sid) { + CrmCustomerTemp customerTemp = crmCustomerTempFeign.fetchBySid(sid).getData(); + return customerTemp; + } + + public CrmCustomerTempVo fetchAllBySid(String sid) { + CrmCustomerTempVo vo = new CrmCustomerTempVo(); + CrmCustomerTemp crmCustomerTemp = this.fetchBySid(sid); + BeanUtil.copyProperties(crmCustomerTemp, vo); + return vo; + } } diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempUpdateDto.java b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempUpdateDto.java new file mode 100644 index 0000000..8957ce4 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempUpdateDto.java @@ -0,0 +1,115 @@ +package com.yxt.oms.biz.func.crmcustomer; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; + +/** + * @Author dimengzhe + * @Date 2022/7/12 14:04 + * @Description + */ +@Data +public class CrmCustomerTempUpdateDto implements Dto { + private static final long serialVersionUID = -1744083007571476652L; + + @ApiModelProperty(value = "当前登录用户的sid") + private String userSid; + + @ApiModelProperty(value = "客户类型(个人/企业)", 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 = "联系电话为必填项") + @Pattern(regexp = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$", 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("客户生日:个人客户时显示") + 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; + + private String orgPath; + private String useOrgSid; + private String customerOrgSid; + private String customerOrgName; + +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempVo.java b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempVo.java new file mode 100644 index 0000000..753353f --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomer/CrmCustomerTempVo.java @@ -0,0 +1,192 @@ +package com.yxt.oms.biz.func.crmcustomer; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * Project: anrui-crm(客户管理)
+ * File: CrmCustomerTempVo.java
+ * Class: com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo
+ * Description: 潜在客户信息 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-01-12 11:21:16
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "潜在客户信息 视图数据对象", description = "潜在客户信息 视图数据对象") +@Data +public class CrmCustomerTempVo implements Vo { + + @ApiModelProperty("潜在客户sid") + private String sid; + + @ApiModelProperty("分公司名称") + private String createOrgName; + + @ApiModelProperty("业务员名称") + private String staffName; + + @ApiModelProperty("部门名称") + private String deptName; + + @ApiModelProperty("创建人sid") + private String createBySid; + + @ApiModelProperty("登记日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date createTime; + + @ApiModelProperty("客户编号(部门编码+客户类型(1位,0个人,1企业)+部门内部流水号(6位))") + private String customerNo; + + @ApiModelProperty("客户类型(自然人/法人)") + private String customerType; + + @ApiModelProperty("客户类型key") + private String customerTypeKey; + + @ApiModelProperty("客户分类(个人:司机/个体老板/其他。企业:企业型客户/一级经销商/二级经销商/终端物流客户)") + private String customerClass; + + @ApiModelProperty("客户分类key") + private String customerClassKey; + + @ApiModelProperty("客户来源(公司资源/自主开发/交接客户/转介绍客户/集团内销)") + private String source; + + @ApiModelProperty("客户来源key") + private String sourceKey; + + @ApiModelProperty("客户级别(意向客户/准客户/成交客户/集团内销/黑名单客户)") + private String level; + + @ApiModelProperty("客户级别key") + private String levelKey; + + @ApiModelProperty("客户名称") + private String name; + + @ApiModelProperty("证件类型key") + private String certificateTypeKey; + + @ApiModelProperty("证件类型(个人为身份证/企业为营业执照)") + private String certificateType; + + @ApiModelProperty("证件号码(个人为身份证号/企业为统一社会信用代码)") + private String IDNumber; + + @ApiModelProperty("证件有效期") + private String endDate; + + @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 zipCode; + + @ApiModelProperty("电子邮箱") + private String e_mail; + + @ApiModelProperty("联系人") + private String contacts; + + @ApiModelProperty("联系电话") + private String mobile; + + @ApiModelProperty("紧急联系电话") + private String emergencyContact; + + @ApiModelProperty("紧急联系电话") + private String emergencyMobile; + + @ApiModelProperty("微信号码") + private String weixin; + + @ApiModelProperty("业务人员sid") + private String staffSid; + + @ApiModelProperty("创建组织sid") + private String createOrgSid; + + @ApiModelProperty("性别") + private String sex; + + @ApiModelProperty("性别key") + private String sexKey; + + @ApiModelProperty("客户生日") + private String birthday; + + @ApiModelProperty("所在公司名称") + private String companyName; + + @ApiModelProperty("跟进状态key") + private String follow_state_key; + + @ApiModelProperty("跟进状态") + private String follow_state; + + @ApiModelProperty("是否开启提醒key(1开启,0不开启)") + private String isOnRemindkey; + + @ApiModelProperty("是否开启提醒(1开启,0不开启)") + private String isOnRemind; + + @ApiModelProperty("提醒日期") + private String remind_day; + + @ApiModelProperty("提醒备注") + private String remind_remark; + + @ApiModelProperty("客户头像") + private String customerPhoto; + + @ApiModelProperty("见面方式key") + private String visitWayKey; + + @ApiModelProperty("见面方式(到店/电话/拜访)") + private String visitWay; + + @ApiModelProperty("备注") + private String remarks; + + @ApiModelProperty("意向车型数量") + private String yxcounts; + + @ApiModelProperty("跟进记录数量") + private String gjcounts; + + + + private String useOrgSid; + private String customerOrgSid; + private String customerOrgName; + +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmcustomerfile/CrmCustomerFileQuery.java b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomerfile/CrmCustomerFileQuery.java new file mode 100644 index 0000000..1973ddb --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomerfile/CrmCustomerFileQuery.java @@ -0,0 +1,58 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.oms.biz.func.crmcustomerfile; + + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-crm(客户)
+ * File: CrmCustomerFileQuery.java
+ * Class: com.yxt.anrui.crm.api.crmcustomerfile.CrmCustomerFileQuery
+ * Description: 客户资料初始化表 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-02-26 14:10:17
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "客户资料初始化表 查询条件", description = "客户资料初始化表 查询条件") +@Data +public class CrmCustomerFileQuery implements Query { + + private static final long serialVersionUID = -7649979452082150903L; + @ApiModelProperty("文件类别") + private String attachType; + @ApiModelProperty("文件名称") + private String fileName; + @ApiModelProperty("客户sid") + private String customerSid; +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmcustomerfile/CrmCustomerFileService.java b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomerfile/CrmCustomerFileService.java new file mode 100644 index 0000000..c41f4be --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomerfile/CrmCustomerFileService.java @@ -0,0 +1,54 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.oms.biz.func.crmcustomerfile; + +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.stereotype.Service; + +/** + * Project: anrui-crm(客户)
+ * File: CrmCustomerFileService.java
+ * Class: com.yxt.anrui.crm.biz.crmcustomerfile.CrmCustomerFileService
+ * Description: 客户资料初始化表 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-02-26 14:10:17
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class CrmCustomerFileService { + + + public ResultBean> listPageVo(PagerQuery pq) { + return null; + } +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmcustomerfile/CrmCustomerFileVo.java b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomerfile/CrmCustomerFileVo.java new file mode 100644 index 0000000..19e8dbd --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmcustomerfile/CrmCustomerFileVo.java @@ -0,0 +1,64 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.oms.biz.func.crmcustomerfile; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-crm(客户)
+ * File: CrmCustomerFileVo.java
+ * Class: com.yxt.anrui.crm.api.crmcustomerfile.CrmCustomerFileVo
+ * Description: 客户资料初始化表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-02-26 14:10:17
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "客户资料初始化表 视图数据对象", description = "客户资料初始化表 视图数据对象") +@Data +public class CrmCustomerFileVo implements Vo { + + private static final long serialVersionUID = -2901642630941149061L; + @ApiModelProperty("客户资料初始化sid") + private String sid; + @ApiModelProperty("文件类别") + private String attachType; + @ApiModelProperty("文件名称") + private String fileName; + @ApiModelProperty("最新上传人") + private String name; + @ApiModelProperty("最新上传时间") + private String createTime; + @ApiModelProperty("示例") + private String sample; +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmfile/CommonAttachTypeEnum.java b/oms/src/main/java/com/yxt/oms/biz/func/crmfile/CommonAttachTypeEnum.java new file mode 100644 index 0000000..b7d7f6a --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmfile/CommonAttachTypeEnum.java @@ -0,0 +1,85 @@ +package com.yxt.oms.biz.func.crmfile; + +/** + * @Author dimengzhe + * @Date 2022/2/12 10:13 + * @Description 附件类型枚举 + */ +public enum CommonAttachTypeEnum { + /** + * 附件类型: + * 1、0001:合同, + * 2、0002:人行征信, + * 3、0003:开票申请附件, + * 4、0004:跟进记录的材料 + * 5、0005:家访照片 + * 6、0006_1:贷款人证明文_担保人人行征信查询授权书(原件) + * 7、0006_2:贷款人证明文_贷款人人行征信查询授权书(手持) + * 8、0006_3:贷款人证明文_配偶人行征信查询授权书(原件) + * 9、0006_4:贷款人证明文_配偶人行征信查询授权书(手持) + * 10、0006_5:贷款人证明文_配偶数据查询授权书 + * 11、0006_6:贷款人证明文_征信查询报告(有效期:3个月以内) + * 12、0006_7:贷款人证明文_贷款人及配偶居住证明 + * 13、0007_1:担保人文件_担保人人行征信查询授权书(原件) + * 14、0007_2:担保人文件_担保人人行征信查询授权书(手持) + * 15、0008:资产证明 + * 16、0009_01:放款文件_家访照片 + * 17、0009_02:放款文件_交车照片 + * 18、0009_03:放款文件_车辆合格证 + * 19、0009_04:放款文件_挂车合格证 + * 20、0009_05:放款文件_新车全车照片 + * 21、0009_06:放款文件_挂车照片 + * 22、0009_07:放款文件_新车发动机号照片 + * 23、0009_08:放款文件_新车车架号照片 + * 24、0009_09:放款文件_挂车车架号照片 + * 25、0009_10:放款文件_放款文件其它资料 + * 26、0009_11:放款文件_首付款证明 + */ + CONTRACT("0001", "合同"), + CONTRACT_UPLOAD("0001_1", "合同下载"), + CREDIT("0002", "人行征信"), + INVOICE("0003", "开票申请附件"), + INVOICE_KHKPSQS("0003_1", "客户开票申请书"), + INVOICE_CLDJHT("0003_2", "车辆登记合同"), + INVOICE_KPXXQRS("0003_3", "开票信息确认书"), + WITNESS("0004", "跟进记录的材料"), + ADVANCE_GIN("0005", "提前开票附件"), + ADVANCE_KHKPSQS("0005_1", "客户开票申请书"), + ADVANCE_CLDJHT("0005_2", "车辆登记合同"), + ADVANCE_KPXXQRS("0005_3", "开票信息确认书"), + CUSTOMER_FILE("0006", "客户资料附件"), + ARREARS("0007", "欠款提车附件"), + SCENESIGN("0008", "现场签署附件"), + PAYMENT_VOUCHER("0009", "打款凭证附件"), + REMITTAN_CECONFIRMATION("0010", "汇款确认书附件"), + SEAL_APPLY("0011", "盖章附件"), + BILL_APPLICAYION("0012", "开票申请附件"), + MANUFACTOR_SUB("0013", "厂商认款附件"), + MANUFACTOR_RETWARE("0014", "厂家退库车辆附件"), + SHUNTINGINVOICINAPPLY("0015", "调车开票附件"), + OUTSOURCINGAPPLY("0016", "外采申请附件"), + INBOUNDAPPLY("0017", "入账申请附件"), + VEHBUYBLANK("0018", "车辆买断附件"); + /** + * 附件类型 + */ + private final String attachType; + + /** + * 代号 + */ + private final String mark; + + CommonAttachTypeEnum(String attachType, String mark) { + this.attachType = attachType; + this.mark = mark; + } + + public String getAttachType() { + return attachType; + } + + public String getMark() { + return mark; + } +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmfile/PcCommonAppendixDto.java b/oms/src/main/java/com/yxt/oms/biz/func/crmfile/PcCommonAppendixDto.java new file mode 100644 index 0000000..941cbb4 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmfile/PcCommonAppendixDto.java @@ -0,0 +1,28 @@ +package com.yxt.oms.biz.func.crmfile; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description + * @Author liuguohui + * @Date 2021/11/22 + */ +@Data +public class PcCommonAppendixDto implements Dto { + + private static final long serialVersionUID = 2211027947432178940L; + @ApiModelProperty("上传人sid") + private String createBySid; + @ApiModelProperty("上传人") + private String name; + @ApiModelProperty("文件名") + private String fileName; + @ApiModelProperty("文件类型") + private String fileType; + @ApiModelProperty("文件大小") + private String fileSize; + @ApiModelProperty("文件的路径") + private String filePath; +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/CrmVisit.java b/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/CrmVisit.java new file mode 100644 index 0000000..214e0b1 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/CrmVisit.java @@ -0,0 +1,98 @@ +package com.yxt.oms.biz.func.crmvisit; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-crm(客户管理)
+ * File: CrmVisit.java
+ * Class: com.yxt.anrui.crm.api.crmvisit.CrmVisit
+ * Description: 客户跟进记录.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-09-28 09:57:14
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "客户跟进记录", description = "客户跟进记录") +@TableName("crm_visit") +@Data +public class CrmVisit extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("客户sid") + private String customerSid; + + @ApiModelProperty("员工Sid") + private String staffSid; + + @ApiModelProperty("跟进形式key") + private String follow_form_key; + + @ApiModelProperty("跟进形式(电话/上门/微信/到店)") + private String follow_form; + + @ApiModelProperty("跟进类别key") + private String follow_type_key; + + @ApiModelProperty("跟进类别(例行安排/临时)") + private String follow_type; + + @ApiModelProperty("跟进时间") + private String follow_time; + + @ApiModelProperty("跟进效果") + private String follow_result; + + @ApiModelProperty("拜访见证材料") + private String visit_witness_materials; + + @ApiModelProperty("组织sid") + private String orgSid; + + @ApiModelProperty("跟进状态key") + private String follow_state_key; + + @ApiModelProperty("跟进状态(新获取/待跟进/初步意向/准客户/成交/失效)") + private String follow_state; + + @ApiModelProperty("是否开启提醒(1开启,0不开启)") + private String isOnRemind; + + @ApiModelProperty("是否开启提醒(1开启,0不开启)") + private String isOnRemindkey; + + @ApiModelProperty("设置提醒日期的时间") + private String setTime; + + @ApiModelProperty("提醒日期(天)") + private String remind_day; + + @ApiModelProperty("提醒日期(天)key") + private String remind_day_key; + + @ApiModelProperty("提醒备注") + private String remind_remark; + + @ApiModelProperty("位置信息") + private String positionInformation; + +/* @ApiModelProperty("区域代码(省)") + private String address_province; + @ApiModelProperty("区域代码(市)") + private String address_city; + @ApiModelProperty("区域代码(县)") + private String address_county;*/ + + @ApiModelProperty("经度") + private String longitude; + @ApiModelProperty("纬度") + private String latitude; + +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/CrmVisitDto.java b/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/CrmVisitDto.java new file mode 100644 index 0000000..b045053 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/CrmVisitDto.java @@ -0,0 +1,86 @@ +package com.yxt.oms.biz.func.crmvisit; + + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * Project: anrui-crm(客户管理)
+ * File: CrmVisitDto.java
+ * Class: com.yxt.anrui.crm.api.crmvisit.CrmVisitDto
+ * Description: 客户跟进记录 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-09-28 09:57:14
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "客户跟进记录 数据传输对象", description = "客户跟进记录 数据传输对象") +@Data +public class CrmVisitDto implements Dto { + + + @ApiModelProperty("客户sid") + private String customerSid; + + @ApiModelProperty("员工Sid") + private String staffSid; + + @ApiModelProperty("跟进形式key") + private String follow_form_key; + + @ApiModelProperty("跟进形式(电话/上门/微信/到店)") + private String follow_form; + + @ApiModelProperty("跟进类别key") + private String follow_type_key; + + @ApiModelProperty("跟进类别(例行安排/临时)") + private String follow_type; + + @ApiModelProperty("跟进时间") + private String follow_time; + + @ApiModelProperty("跟进效果") + private String follow_result; + + @ApiModelProperty("拜访见证材料") + private String visit_witness_materials; + + @ApiModelProperty("组织sid") + private String orgSid; + + @ApiModelProperty("跟进状态key") + private String follow_state_key; + + @ApiModelProperty("跟进状态(新获取/待跟进/初步意向/准客户/成交/失效)") + private String follow_state; + + @ApiModelProperty("是否开启提醒(1开启,0不开启)") + private String isOnRemindkey; + + @ApiModelProperty("是否开启提醒(1开启,0不开启)") + private String isOnRemind; + + @ApiModelProperty("设置提醒日期的时间") + private String setTime; + + @ApiModelProperty("提醒日期(天)") + private String remind_day; + + @ApiModelProperty("提醒日期(天)key") + private String remind_day_key; + + @ApiModelProperty("提醒备注") + private String remind_remark; + + @ApiModelProperty("附件信息") + private List list; + +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/CrmVisitQuery.java b/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/CrmVisitQuery.java new file mode 100644 index 0000000..7a3986d --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/CrmVisitQuery.java @@ -0,0 +1,43 @@ +package com.yxt.oms.biz.func.crmvisit; + + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-crm(客户管理)
+ * File: CrmVisitQuery.java
+ * Class: com.yxt.anrui.crm.api.crmvisit.CrmVisitQuery
+ * Description: 客户跟进记录 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-09-28 09:57:14
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "客户跟进记录 查询条件", description = "客户跟进记录 查询条件") +@Data +public class CrmVisitQuery implements Query { + + @ApiModelProperty("客户sid") + private String customerSid; + + @ApiModelProperty("员工Sid") + private String staffSid; + + @ApiModelProperty("跟进形式key") + private String follow_form_key; + + @ApiModelProperty("起始跟进时间") + private String start_follow_time; + + @ApiModelProperty("结束跟进时间") + private String end_follow_time; + + @ApiModelProperty("跟进状态key") + private String follow_state_key; +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/CrmVisitService.java b/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/CrmVisitService.java new file mode 100644 index 0000000..bb662e9 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/CrmVisitService.java @@ -0,0 +1,122 @@ +package com.yxt.oms.biz.func.crmvisit; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.DateUtils; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.oms.biz.func.dictcommon.DictCommonVo; +import com.yxt.oms.config.DictCommonType; +import com.yxt.oms.feign.customer.crmvisit.CrmVisitFeign; +import com.yxt.oms.feign.portal.dictcommon.DictCommonFeign; +import com.yxt.oms.feign.portal.sysstafforg.SysStaffOrgFeign; +import com.yxt.oms.feign.portal.sysuser.SysStaffOrgVo; +import com.yxt.oms.feign.portal.sysuser.SysUser; +import com.yxt.oms.feign.portal.sysuser.SysUserFeign; +import com.yxt.oms.feign.portal.sysuser.SysUserVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * Project: anrui-crm(客户管理)
+ * File: CrmVisitService.java
+ * Class: com.yxt.anrui.crm.biz.crmvisit.CrmVisitService
+ * Description: 客户跟进记录 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-09-28 09:57:14
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class CrmVisitService { + + @Resource + private SysUserFeign sysUserFeign; + @Autowired + private SysStaffOrgFeign sysStaffOrgFeign; + @Resource + private DictCommonFeign dictCommonFeign; + @Autowired + private CrmVisitFeign crmVisitFeign; + + public String insertCrmVisitOne(String userSid, String customerSid, String isOnRemindkey, String isOnRemind, String visitWay, String visitWayKey) { + CrmVisit visit = new CrmVisit(); + //查询用户信息 + SysUserVo user = sysUserFeign.fetchBySid(userSid).getData(); + visit.setCreateBySid(userSid); + visit.setCustomerSid(customerSid); + visit.setStaffSid(user.getStaffSid()); + visit.setFollow_time(DateUtils.dateConvertStr(new Date(), "yyyy-MM-dd")); + visit.setFollow_result("客户登记"); + visit.setFollow_form(visitWay); + visit.setFollow_form_key(visitWayKey); + //visit.setVisit_witness_materials(); + //查询组织 + List list = sysStaffOrgFeign.getSysStaffOrgListByStaffSid(user.getStaffSid()).getData(); + if (list.size() > 0) { + SysStaffOrgVo sysStaffOrgVo = list.get(0); + visit.setOrgSid(sysStaffOrgVo.getOrgSid()); + } + ResultBean resultBean = dictCommonFeign.getFirstDictKeyByType(DictCommonType.FOLLOW_STATE, "0"); + if (resultBean.getSuccess() && resultBean.getData() != null) { + String key = resultBean.getData().toString(); + visit.setFollow_state_key(key); + visit.setFollow_state(dictCommonFeign.selectBykey(key, DictCommonType.FOLLOW_STATE).getData().getDictValue()); + } + visit.setIsOnRemindkey(isOnRemindkey); + visit.setIsOnRemind(isOnRemind); + List commonVoList = dictCommonFeign.getTypeValues(DictCommonType.REMIND_DAY, "0").getData(); + String remindDayKey = ""; + if (commonVoList.size() > 0) { + remindDayKey = commonVoList.get(0).getDictKey(); + } + visit.setRemind_day_key(remindDayKey); + visit.setRemind_day(dictCommonFeign.selectBykey(remindDayKey, DictCommonType.REMIND_DAY).getData().getDictValue()); + crmVisitFeign.saveEntity(visit); + return visit.getSid(); + } + + public ResultBean> pagerList(PagerQuery pagerQuery) { + ResultBean> rb = ResultBean.fireFail(); + String staffSid = pagerQuery.getParams().getStaffSid(); + ResultBean sysUserVoResultBean = sysUserFeign.selectByStaffsid(staffSid); + String name = sysUserVoResultBean.getData().getName(); + IPage page = crmVisitFeign.pageList(pagerQuery); + PagerVo pv = new PagerVo<>(); + PagerVo pv1 = PagerUtil.pageToVo(page, pv); + List list = pv1.getRecords(); + for (CrmVisitVo crmVisitVo : list) { + crmVisitVo.setStaffName(name); + } + return rb.success().setData(pv1); + + } + + public ResultBean fetchSid(String sid) { + return crmVisitFeign.fetchSid(sid); + } + + public boolean save(CrmVisit entity) { + return crmVisitFeign.saveEntity(entity); + } + + + public int updateBySid(CrmVisitDto dto, String sid) { + return crmVisitFeign.update(dto,sid); + } + + public ResultBean delBySids(String[] ids) { + return crmVisitFeign.del(ids); + } +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/CrmVisitVo.java b/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/CrmVisitVo.java new file mode 100644 index 0000000..6286e83 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/CrmVisitVo.java @@ -0,0 +1,104 @@ +package com.yxt.oms.biz.func.crmvisit; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-crm(客户管理)
+ * File: CrmVisitVo.java
+ * Class: com.yxt.anrui.crm.api.crmvisit.CrmVisitVo
+ * Description: 客户跟进记录 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-09-28 09:57:14
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "客户跟进记录 视图数据对象", description = "客户跟进记录 视图数据对象") +@Data +public class CrmVisitVo implements Vo { + + private static final long serialVersionUID = 3237477051430279347L; + @ApiModelProperty("sid") + private String sid; + + @ApiModelProperty("员工Sid") + private String staffSid; + + @ApiModelProperty("员工Name") + private String staffName; + + @ApiModelProperty("客户名称") + private String customerName; + + @ApiModelProperty("跟进形式key") + private String follow_form_key; + + @ApiModelProperty("跟进形式(电话/上门/微信/到店)") + private String follow_form; + + @ApiModelProperty("跟进类别key") + private String follow_type_key; + + @ApiModelProperty("跟进类别(例行安排/临时)") + private String follow_type; + + @ApiModelProperty("跟进时间") + private String follow_time; + + @ApiModelProperty("跟进效果") + private String follow_result; + + @ApiModelProperty("拜访见证材料") + private String visit_witness_materials; + + @ApiModelProperty("组织sid") + private String orgSid; + + @ApiModelProperty("跟进状态key") + private String follow_state_key; + + @ApiModelProperty("跟进状态(新获取/待跟进/初步意向/准客户/成交/失效)") + private String follow_state; + + @ApiModelProperty("是否开启提醒(1开启,0不开启)") + private String isOnRemind; + + @ApiModelProperty("是否开启提醒(1开启,0不开启)") + private String isOnRemindkey; + + @ApiModelProperty("设置提醒日期的时间") + private String setTime; + + @ApiModelProperty("提醒日期(天)") + private String remind_day; + + @ApiModelProperty("提醒日期(天)key") + private String remind_day_key; + + @ApiModelProperty("提醒备注") + private String remind_remark; + + @ApiModelProperty("位置信息") + private String positionInformation; + + @ApiModelProperty("经度") + private String longitude; + + @ApiModelProperty("纬度") + private String latitude; + + @ApiModelProperty("经纬度") + private String location; + + @ApiModelProperty("区域代码描述") + private String locationStr; + + @ApiModelProperty("车辆需求条数") + private String xqcounts; +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/PcCrmVisitAppendixDto.java b/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/PcCrmVisitAppendixDto.java new file mode 100644 index 0000000..087dc9d --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/crmvisit/PcCrmVisitAppendixDto.java @@ -0,0 +1,22 @@ +package com.yxt.oms.biz.func.crmvisit; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PcCrmVisitAppendixDto implements Dto { + + private static final long serialVersionUID = -215934317034761854L; + //附件类型:1、0001:合同,2、0002:人行征信,3、0003:开票申请附件,4、0004:跟进记录的材料 + @ApiModelProperty("上传人sid") + private String createBySid; + @ApiModelProperty("文件名") + private String fileName; + @ApiModelProperty("文件类型") + private String fileType; + @ApiModelProperty("文件大小") + private String fileSize; + @ApiModelProperty("文件的路径") + private String filePath; +} diff --git a/oms/src/main/java/com/yxt/oms/biz/func/sysstafforg/SysStaffOrg.java b/oms/src/main/java/com/yxt/oms/biz/func/sysstafforg/SysStaffOrg.java new file mode 100644 index 0000000..8f9a1ff --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/biz/func/sysstafforg/SysStaffOrg.java @@ -0,0 +1,46 @@ +package com.yxt.oms.biz.func.sysstafforg; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysStaffOrg.java
+ * Class: com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg
+ * Description: 员工部门关联表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "员工部门关联表", description = "员工部门关联表") +@TableName("sys_staff_org") +@Data +public class SysStaffOrg extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("部门sid") + private String orgSid; + + @ApiModelProperty("部门名称") + private String orgName; + + @ApiModelProperty("人员sid") + private String staffSid; + +// @ApiModelProperty("部门路径") +// private String orgSidPath; + +// @ApiModelProperty("部门名称路径") +// private String orgNamePath; + + @ApiModelProperty("管理类型:1、主管。2、分管。3、员工") + private String manageType; +} diff --git a/oms/src/main/java/com/yxt/oms/config/DictCommonType.java b/oms/src/main/java/com/yxt/oms/config/DictCommonType.java new file mode 100644 index 0000000..80d149a --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/config/DictCommonType.java @@ -0,0 +1,267 @@ +package com.yxt.oms.config; + +import io.swagger.annotations.ApiModelProperty; + +/** + * @author dimengzhe + * @date 2021/7/1 10:23 + * @description 常量值管理 + */ +public class DictCommonType { + + //客户端获取手机验证码redis前缀定义 + public static final String WX_REGIST = "wx-regist-";//注册获取验证码 + public static final String WX_LOGIN = "wx-login-";//登录获取验证码 + public static final String WX_FORGET = "wx-forget-";//忘记密码获取验证码 + public static final String WX_UPDATE = "wx-update-";//忘记密码获取验证码 + public static final String WX_NEW = "wx-new-";//新手机号获取验证码 + + /*供应厂商相关*/ + @ApiModelProperty(value = "供应商分类") + public static final String SUPPLIER_TYPE = "supplierType";//数据字典已添加 + @ApiModelProperty(value = "供应类别") + public static final String SUPPLY_TYPE = "supplyType";//数据字典已添加 + @ApiModelProperty(value = "供应商分组") + public static final String SUPPLIE_RGROUP = "supplierGroup";//数据字典已添加 + + /*供应厂商财务信息相关*/ + @ApiModelProperty(value = "结算币种") + public static final String SETTLEMENT_CURRENCY = "settlementCurrency";//数据字典已添加 + @ApiModelProperty(value = "结算方式") + public static final String SETTLEMENT_WAY = "settlementWay";//数据字典已添加 + @ApiModelProperty(value = "税分类") + public static final String TAX_CLASSIFICATION = "taxClassification";//数据字典已添加 + /*基础信息品牌相关*/ + @ApiModelProperty(value = "品牌类型") + public static final String BRAND_TYPE = "brandType";//数据字典已添加 + @ApiModelProperty(value = "职级(岗位)") + public static final String POSTLEVEL = "postLevel"; + + /*车型、车型配置、车辆信息相关*/ + @ApiModelProperty(value = "车辆类型") + public static final String VEHICLE_TYPE = "vehicleType";//数据字典已添加 + @ApiModelProperty(value = "排放标准") + public static final String EMISSION_STANDARD = "emissionStandard";//数据字典已添加 + @ApiModelProperty(value = "产品线") + public static final String PRODUCT_LINE = "productLine";//数据字典已添加 + @ApiModelProperty(value = "后桥") + public static final String REAR_AXLE = "rearAxle";//数据字典已添加 + @ApiModelProperty(value = "速比") + public static final String SPEED_RATIO = "speedRatio";//数据字典已添加 + @ApiModelProperty(value = "系别") + private static final String SERIES = "series";//数据字典已添加 + @ApiModelProperty(value = "车辆功能") + private static final String VEHICLE_FUNCTION = "vehicleFunction";//数据字典已添加 + @ApiModelProperty(value = "细分市场") + private static final String MARKETSEGMENTS = "marketSegments";//数据字典已添加 + + @ApiModelProperty(value = "车身颜色") + public static final String BODYCOLOR = "bodyColor"; + @ApiModelProperty(value = "缓速器") + public static final String SLOWMACHINE = "slowMachine"; + @ApiModelProperty(value = "后视镜") + public static final String REARVIEWMIRROR = "rearViewMirror"; + @ApiModelProperty(value = "轮胎") + public static final String TIRESIZE = "tireSize"; + @ApiModelProperty(value = "驾驶室") + public static final String SPECIFICATION = "specification"; + @ApiModelProperty(value = "后桥速比") + public static final String REARAXLERATIO = "rearAxleRatio"; + @ApiModelProperty(value = "轮毂材质") + public static final String HUBMATERIAL = "hubMaterial"; + @ApiModelProperty(value = "悬架") + public static final String SUSPENSION = "suspension"; + @ApiModelProperty(value = "座椅") + public static final String SEAT = "seat"; + @ApiModelProperty(value = "鞍座") + public static final String SADDLE = "saddle"; + @ApiModelProperty(value = "轴距") + public static final String WHEELBASE = "wheelbase"; + @ApiModelProperty(value = "保险杠") + public static final String BUMPER = "bumper"; + @ApiModelProperty(value = "配置包") + public static final String CONFIGURINGBAO = "configuringBao"; + @ApiModelProperty(value = "独立热源") + public static final String INDEPENDENTSOURCES = "independentSources"; + @ApiModelProperty(value = "燃料箱") + public static final String FUELTANK = "fuelTank"; + @ApiModelProperty(value = "有无:1有0无") + public static final String WHETHER = "whether"; + + @ApiModelProperty(value = "车辆状态") + public static final String VEHICLE_STATE = "vehicleState"; + @ApiModelProperty(value = "车辆状态(车辆台账)") + public static final String VEHICLE_LEDGER_STATE = "vehicleLedgerState"; + @ApiModelProperty(value = "驱动") + public static final String DRIVER = "driver"; + @ApiModelProperty(value = "马力") + public static final String HORSEPOWER = "horsepower"; + @ApiModelProperty(value = "锁定状态") + public static final String LOCKED_STATE = "lockedState"; + @ApiModelProperty(value = "预计订金日期") + public static final String RESERVE_DEPOSIT_DATE = "reserveDepositDate"; + + + @ApiModelProperty(value = "贷款主体类型") + public static final String LOANTYPE = "loanType"; + @ApiModelProperty(value = "打包项目") + public static final String PACKAGINGPROJECT = "packagingProject"; + @ApiModelProperty(value = "融资项目(比打包项目多一个“配件”)") + public static final String PACKAGINGPROJECTFIN = "packagingProjectFin"; + @ApiModelProperty(value = "变速箱") + public static final String GEARBOX = "gearbox"; + @ApiModelProperty(value = "燃料种类") + public static final String FUELTYPE = "fuelType"; + @ApiModelProperty(value = "版本(车辆需求)") + public static final String VEHICLEVERSION = "vehicleVersion"; + @ApiModelProperty(value = "采购形式") + public static final String PURCHASINGFORM = "purchasingForm"; + /*经销商相关*/ + @ApiModelProperty(value = "经销商分类") + public static final String DISTRIBUTOR_CLASSIFICATION = "distributorClassification";//数据字典已添加 + @ApiModelProperty(value = "经销商类型") + public static final String DISTRIBUTOR_TYPE = "distributorType";//数据字典已添加 + @ApiModelProperty(value = "经销商等级") + public static final String DISTRIBUTOR_LEVEL = "distributorLevel";//数据字典已添加 + @ApiModelProperty(value = "企业性质") + public static final String ENTERPRISE_NATURE = "enterpriseNature";//数据字典已添加 + @ApiModelProperty(value = "登记状态") + public static final String REGIST_STATE = "registState"; + @ApiModelProperty(value = "注册资本单位") + public static final String REGISTEREDCAPITAL_ORG = "registeredCapitalOrg"; + @ApiModelProperty(value = "项目类型") + public static final String PROJECT_TYPE = "projectType"; + /*经销商相关结束*/ + + + @ApiModelProperty(value = "合格证情况:0001虚拟 ,002正式") + public static final String CERTIFICATE_SITUATION = "certificateSituation"; + @ApiModelProperty(value = "客户类型:1个人2企业") + public static final String CUSTOMER_TYPE = "customerType"; + @ApiModelProperty(value = "登记注册号类型") + public static final String REGIST_NUM_TYPE = "registNumType"; + @ApiModelProperty(value = "现居住状况") + public static final String CURRENT_LIVE_STATE = "currentlivestate"; + @ApiModelProperty(value = "教育程度") + public static final String EDUCATION_DEGREE = "educationdegree"; + @ApiModelProperty(value = "雇员类型") + public static final String EMPLOYEE_TYPE = "employeetype"; + @ApiModelProperty(value = "证件类型") + public static final String DOCUMENT_TYPE = "documenttype"; + @ApiModelProperty(value = "行业类别") + public static final String INDUSTRY_TYPE = "industrytype"; + @ApiModelProperty(value = "经济类型") + public static final String ECONOMIC_TYPE = "economictype"; + @ApiModelProperty(value = "组织机构类别") + public static final String ORGANIZATION_TYPE = "organizationtype"; + @ApiModelProperty(value = "组织机构类别细分") + public static final String ORGANIZATION_TYPE_DETAILS = "organizationtypedetails"; + + @ApiModelProperty(value = "是或否") + public static final String IS_TRUE = "isTrue"; + @ApiModelProperty(value = "准驾车型") + public static final String CAR_TYPE = "carType"; + + @ApiModelProperty(value = "与客户关系") + public static final String RELATION_SHIP = "relationship"; + @ApiModelProperty(value = "现工作单位性质") + public static final String ORG_NATURE = "orgNature"; + @ApiModelProperty(value = "主要收入来源") + public static final String INCOME_SOURCE = "incomeSource"; + @ApiModelProperty(value = "职位") + public static final String POSITION = "position"; + @ApiModelProperty(value = "经销商类型") + public static final String DEALERS_TYPE = "dealersType"; + @ApiModelProperty(value = "附件类型") + public static final String ATTACH_TYPE = "attachType"; + @ApiModelProperty(value = "信用记录") + public static final String CREDIT_RECORD = "creditRecord"; + @ApiModelProperty(value = "拟租赁形式l") + public static final String PLANS_TO_LEASE = "plansToLease"; + @ApiModelProperty(value = "去返程货物") + public static final String GO_GOODS = "goGoods"; + @ApiModelProperty(value = "经营业务范围") + public static final String BUSINESSSCOPE = "businessScope"; + /* 客户信息相关*/ + @ApiModelProperty(value = "客户分类") + public static final String CUSTOMER_CLASS = "customerClass"; + @ApiModelProperty(value = "客户来源") + public static final String CUSTOMER_SOURCE = "customerSource"; + @ApiModelProperty(value = "客户等级") + public static final String CUSTOMER_LEVEL = "customerLevel"; + @ApiModelProperty(value = "来访方式") + public static final String VISIT_WAY = "visitWay"; + @ApiModelProperty(value = "跟进状态") + public static final String FOLLOW_STATE = "followState"; + @ApiModelProperty(value = "提醒日期(天)") + public static final String REMIND_DAY = "remindDay"; + @ApiModelProperty(value = "承运货物类型") + public static final String CONSIGNMENT_TYPE = "consignmentType"; + @ApiModelProperty(value = "承运货物(暂为假数据)") + public static final String CONSIGNMENT = "consignment"; + @ApiModelProperty(value = "购车方式") + public static final String PURCHASETYPE = "purchaseType"; + @ApiModelProperty(value = "提车方式") + public static final String SALETYPE = "saleType"; + /* 车辆订单 */ + @ApiModelProperty(value = "单据类型") + public static final String BILLSTYPE = "billsType"; + @ApiModelProperty(value = "合同类型") + public static final String CONTRACTTYPE = "contractType"; + + @ApiModelProperty(value = "主车优惠类型") + public static final String DISCOUNTTYPE = "discountType"; + @ApiModelProperty(value = "还款方式") + public static final String MODEOFREPAY = "modeOfRePay"; + @ApiModelProperty(value = "保证金方式") + public static final String BONDMETHOD = "bondMethod"; + @ApiModelProperty(value = "业务类型") + public static final String BUSINESSTYPE = "businessType"; + @ApiModelProperty(value = "开户银行") + public static final String BANK = "bank"; + @ApiModelProperty(value = "账户类型") + public static final String ACCOUNTTYPE = "accountType"; + @ApiModelProperty(value = "运输货物") + public static final String TRANSPORTCARGO = "transportCargo"; + @ApiModelProperty(value = "结账周期") + public static final String CHECKOUTCYCLE = "checkoutCycle"; + @ApiModelProperty(value = "虚拟订单类型") + public static final String DEPOSITBILLTYPE = "depositBillType"; + @ApiModelProperty(value = "付款方式") + public static final String PAYMENTTYPE = "paymentType"; + + /* 物料相关 */ + @ApiModelProperty(value = "物料分组") + public static final String MATERIAL_GROUP = "materialGroup"; + @ApiModelProperty(value = "物料属性") + public static final String MATERIAL_PROPERTIES = "materialProperties"; + @ApiModelProperty(value = "存货类别") + public static final String STOCK_TYPE = "stockType"; + @ApiModelProperty(value = "基本单位") + public static final String BASIC_UNIT = "basicUnit"; + + /* 合同相关 */ + @ApiModelProperty(value = "人员类型") + public static final String PERSONNEL_TYPE = "personnelType"; + + /* 开票申请单相关 */ + @ApiModelProperty(value = "开票性质") + public static final String INVOICING_NATURE = "invoicingNature"; + + /*员工信息管理相关*/ + @ApiModelProperty(value = "婚姻状况") + public static final String MARITAL_STATUS = "maritalstatus"; + @ApiModelProperty(value = "民族") + public static final String NATIONAL = "national"; + @ApiModelProperty(value = "性别") + public static final String SEX = "sex"; + @ApiModelProperty(value = "政治面貌") + public static final String POLITICAL = "political"; + + + /*资料清单相关*/ + @ApiModelProperty(value = "资料类别") + public static final String DATA_TYPE = "dataType"; + @ApiModelProperty(value = "文件格式") + public static final String FILE_TYPE = "fileType"; +} diff --git a/oms/src/main/java/com/yxt/oms/feign/customer/crmfile/CrmFileFeign.java b/oms/src/main/java/com/yxt/oms/feign/customer/crmfile/CrmFileFeign.java new file mode 100644 index 0000000..af41b2c --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/feign/customer/crmfile/CrmFileFeign.java @@ -0,0 +1,54 @@ +package com.yxt.oms.feign.customer.crmfile; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.oms.biz.func.crmfile.CommonAttachTypeEnum; +import com.yxt.oms.biz.func.crmfile.PcCommonAppendixDto; +import com.yxt.oms.biz.func.crmvisit.CrmVisit; +import com.yxt.oms.biz.func.crmvisit.CrmVisitQuery; +import com.yxt.oms.biz.func.crmvisit.CrmVisitVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * Project: anrui-crm(客户管理)
+ * File: CrmCustomerTempFeign.java
+ * Class: com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign
+ * Description: 潜在客户信息.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-01-12 11:21:16
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "潜在客户信息") +@FeignClient( + contextId = "ss-common-customer-CrmFile", + name = "ss-common-customer", + path = "v1/crmfile" + ) +public interface CrmFileFeign { + @ApiOperation("附件保存") + @PostMapping("/saveCommonAppendix") + ResultBean saveCommonAppendix(@RequestParam(value = "linkSid") String linkSid, @RequestBody List list); + + @ApiOperation("PC端保存/修改附件") + @PostMapping("/saveOrUpdatePcAppendix") + public ResultBean saveOrUpdatePcAppendix(@RequestBody PcCommonAppendixDto dto, @RequestParam("sid") String sid, @RequestParam("staffSid") String staffSid, @RequestParam("attachType") String attachType); + + @ApiOperation(value = "批量删除文件") + @PostMapping("/deleteFiles") + ResultBean deleteFiles(@RequestParam(value = "linkSid") String linkSid); + + + +} diff --git a/oms/src/main/java/com/yxt/oms/feign/customer/crmvisit/CrmVisitFeign.java b/oms/src/main/java/com/yxt/oms/feign/customer/crmvisit/CrmVisitFeign.java new file mode 100644 index 0000000..77c9796 --- /dev/null +++ b/oms/src/main/java/com/yxt/oms/feign/customer/crmvisit/CrmVisitFeign.java @@ -0,0 +1,66 @@ +package com.yxt.oms.feign.customer.crmvisit; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.oms.biz.func.crmcustomer.*; +import com.yxt.oms.biz.func.crmvisit.CrmVisit; +import com.yxt.oms.biz.func.crmvisit.CrmVisitDto; +import com.yxt.oms.biz.func.crmvisit.CrmVisitQuery; +import com.yxt.oms.biz.func.crmvisit.CrmVisitVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.*; + +/** + * Project: anrui-crm(客户管理)
+ * File: CrmCustomerTempFeign.java
+ * Class: com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign
+ * Description: 潜在客户信息.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-01-12 11:21:16
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "潜在客户信息") +@FeignClient( + contextId = "ss-common-customer-CrmVisit", + name = "ss-common-customer", + path = "v1/crmvisit" + ) +public interface CrmVisitFeign { + + @ApiOperation("保存") + @PostMapping("/saveEntity") + public boolean saveEntity(@RequestBody CrmVisit visit); + + /** + * 客户跟进记录分页列表 + * + * @param pagerQuery 查询条件 + * @return + */ + @ApiOperation("客户跟进记录分页列表") + @PostMapping("/pageList") + public IPage pageList(PagerQuery pagerQuery); + + + @ApiOperation("Pc查看详情及修改回显") + @GetMapping("/fetchSid/{sid}") + public ResultBean fetchSid(@PathVariable("sid") String sid); + + + @ApiOperation("修改") + @PostMapping("/update") + public int update(@RequestBody CrmVisitDto dto, @PathVariable("sid") String sid); + + @ApiOperation("删除记录") + @DeleteMapping("/del") + public ResultBean del(@RequestBody String[] ids); +} diff --git a/oms/src/main/java/com/yxt/oms/feign/customer/customertemp/CrmCustomerTempFeign.java b/oms/src/main/java/com/yxt/oms/feign/customer/customertemp/CrmCustomerTempFeign.java index 2d49bdd..4212f03 100644 --- a/oms/src/main/java/com/yxt/oms/feign/customer/customertemp/CrmCustomerTempFeign.java +++ b/oms/src/main/java/com/yxt/oms/feign/customer/customertemp/CrmCustomerTempFeign.java @@ -38,57 +38,65 @@ public interface CrmCustomerTempFeign { @PostMapping("/chooseCustomerList") public ResultBean> chooseCustomerList(@RequestBody PagerQuery pq); -// /** -// * 潜在客户管理的分页查询 -// * -// * @param pq -// * @return -// */ -// @ApiOperation("根据条件分页查询数据的列表") -// @PostMapping("/listPage") -// public ResultBean> listPage(@RequestBody PagerQuery pq); -// -// /** -// * pc端潜在客户新增保存 -// * -// * @param dto 客户信息及运行信息数据传输对象 -// * @return -// */ -// @ApiOperation("新增保存") -// @PostMapping("/save") -// public ResultBean save(@Valid @RequestBody CrmCustomerTempDto dto); -// -// /** -// * pc端潜在客户编辑保存 -// * -// * @param dto 数据传输对象 -// * @param sid 潜在客户sid -// * @return -// */ -// @ApiOperation("修改保存") -// @PostMapping("/update/{sid}") -// public ResultBean update(@RequestBody CrmCustomerTempUpdateDto dto, @PathVariable("sid") String sid); -// -// /** -// * pc潜在客户的批量删除 -// * -// * @param sid -// * @return -// */ -// @ApiOperation("删除记录") -// @DeleteMapping("/del") -// public ResultBean del(@RequestBody String[] sid); -// -// /** -// * pc潜在客户的编辑回显 -// * -// * @param sid -// * @return -// */ -// @ApiOperation("获取一条记录") -// @GetMapping("/fetchSid/{sid}") -// public ResultBean fetchSid(@PathVariable("sid") String sid); + /** + * 潜在客户管理的分页查询 + * + * @param pq + * @return + */ + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq); + @ApiOperation("根据客户编码查询客户") + @GetMapping("/selectByCustomerNo") + public ResultBean selectByCustomerNo(@RequestParam("customerNo") String customerNo); + @ApiOperation("保存") + @PostMapping("/saveEntity") + public ResultBean saveEntity(@RequestBody CrmCustomerTemp temp); + + /** + * pc潜在客户的批量删除 + * + * @param sid + * @return + */ + @ApiOperation("删除记录") + @DeleteMapping("/del") + public ResultBean del(@RequestBody String[] sid); + + @ApiOperation("根据客户编码查询客户") + @GetMapping("/fetchBySid") + public ResultBean fetchBySid(@RequestParam("sid") String sid); + + @ApiOperation("修改") + @PostMapping("/updateEntity") + public ResultBean updateEntity(@RequestBody CrmCustomerTemp temp); + + /** + * 添加运营情况信息时/添加跟进记录查询客户是否存在 + * + * @param customerSid + * @return + */ + @ApiOperation("添加运营情况信息时/添加跟进记录查询客户是否存在") + @GetMapping("/selBySid") + public int selBySid(@RequestParam("customerSid") String customerSid); + + /** + * 添加运营情况信息时/添加跟进记录查询客户是否存在 + * + * @param customerSid + * @return + */ + @ApiOperation("添加运营情况信息时/添加跟进记录查询客户是否存在") + @PostMapping("/selBySid") + public int updateRemindAndByCustomerSid(@RequestParam(value = "customerSid", required = false) String customerSid, + @RequestParam(value = "remind_day", required = false) String remind_day, + @RequestParam(value = "remind_remark", required = false) String remind_remark, + @RequestParam(value = "isOnRemind", required = false) String isOnRemind, + @RequestParam(value = "isOnRemindkey", required = false) String isOnRemindkey, + @RequestParam(value = "follow_state", required = false) String follow_state); } diff --git a/oms/src/main/java/com/yxt/oms/feign/portal/sysstafforg/SysStaffOrgFeign.java b/oms/src/main/java/com/yxt/oms/feign/portal/sysstafforg/SysStaffOrgFeign.java index a274a80..fd92a88 100644 --- a/oms/src/main/java/com/yxt/oms/feign/portal/sysstafforg/SysStaffOrgFeign.java +++ b/oms/src/main/java/com/yxt/oms/feign/portal/sysstafforg/SysStaffOrgFeign.java @@ -1,10 +1,14 @@ package com.yxt.oms.feign.portal.sysstafforg; +import com.yxt.common.base.utils.StringUtils; import com.yxt.common.core.result.ResultBean; +import com.yxt.oms.biz.func.sysstafforg.SysStaffOrg; import com.yxt.oms.biz.func.sysstafforg.SysStaffOrgByUserVo; +import com.yxt.oms.feign.portal.sysuser.SysStaffOrgVo; import io.swagger.annotations.ApiOperation; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; @@ -30,4 +34,19 @@ public interface SysStaffOrgFeign { @ResponseBody @ApiOperation("根据组织全路径查询当前部门下的所有员工") public ResultBean> selAllByOrgSidPath(String orgSidPath); + + @GetMapping("/getOrgByStaffSid") + @ResponseBody + @ApiOperation("根据用户组织全路径获取用户的分公司sid") + public ResultBean getOrgByStaffSid(@RequestParam("staffSid") String staffSid); + + @GetMapping("/getPathSidByUserSid") + @ResponseBody + @ApiOperation("根据组织全路径查询当前部门下的所有员工") + public ResultBean getPathSidByUserSid(@RequestParam(value = "userSid") String applySid); + + @ApiOperation("根据员工sid获取部门信息") + @ResponseBody + @GetMapping("/getSysStaffOrgListByStaffSid/{staffSid}") + public ResultBean> getSysStaffOrgListByStaffSid(@PathVariable("staffSid") String staffSid); } diff --git a/oms/src/main/java/com/yxt/oms/feign/portal/sysuser/SysUserFeign.java b/oms/src/main/java/com/yxt/oms/feign/portal/sysuser/SysUserFeign.java index c1e2c36..66274b3 100644 --- a/oms/src/main/java/com/yxt/oms/feign/portal/sysuser/SysUserFeign.java +++ b/oms/src/main/java/com/yxt/oms/feign/portal/sysuser/SysUserFeign.java @@ -95,4 +95,9 @@ public interface SysUserFeign { @ApiOperation("根据sid查询用户信息") @PostMapping("/selectBySid") public ResultBean selectBySid(@RequestParam("sid") String sid); + + @ApiOperation("根据staffsid查询用户") + @ResponseBody + @GetMapping("/selectByStaffsid/{staffsid}") + public ResultBean selectByStaffsid(@PathVariable("staffsid") String staffsid); }