Browse Source

客户管理相关问题修改

master
hanlinghao 3 years ago
parent
commit
90f0c34b78
  1. 4
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeign.java
  2. 5
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemandFeign.java
  3. 5
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemandFeignFallback.java
  4. 7
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileMapper.xml
  5. 40
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileService.java
  6. 3
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.java
  7. 28
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.xml
  8. 43
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java
  9. 9
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandMapper.java
  10. 23
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandMapper.xml
  11. 7
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandRest.java
  12. 38
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandService.java

4
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeign.java

@ -132,8 +132,8 @@ public interface CrmCustomerTempFeign {
@ApiOperation("初始化客户详情基础信息详情")
@ResponseBody
@GetMapping("/getAppCustomerTempDetailsBySid")
public ResultBean<AppCrmCustomerTempInfoVo> getAppCustomerTempDetailsBySid(@RequestParam("sid") String sid);
@GetMapping("/getAppCustomerTempDetailsBySid/{sid}")
public ResultBean<AppCrmCustomerTempInfoVo> getAppCustomerTempDetailsBySid(@PathVariable("sid") String sid);
@ApiOperation("初始化客户档案")
@ResponseBody

5
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemandFeign.java

@ -144,4 +144,9 @@ public interface CrmVehicledemandFeign {
ResultBean<PagerVo<PcCrmVehicleDemandVo>> selectPagePc(@RequestBody PagerQuery<PcCrmVehicleDemandQuery> pcCrmVehicleDemandQuery);
@ApiOperation("App销售订单选择意向车型列表")
@ResponseBody
@PostMapping("/init/wantCarList")
ResultBean<PagerVo<AppOrderCrmVehicleDemandVo>> getWantCarList(@RequestBody PagerQuery<AppCrmOrderVehicleDemandQuery> pagerQuery);
}

5
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemandFeignFallback.java

@ -89,6 +89,11 @@ public class CrmVehicledemandFeignFallback implements CrmVehicledemandFeign {
return null;
}
@Override
public ResultBean<PagerVo<AppOrderCrmVehicleDemandVo>> getWantCarList(PagerQuery<AppCrmOrderVehicleDemandQuery> pagerQuery) {
return null;
}
//app

7
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileMapper.xml

@ -23,9 +23,10 @@
<select id="selectByCustomerSid"
resultType="com.yxt.anrui.crm.api.crmcustomerfile.AppCustomerArchivesDataVo">
SELECT ccf.sid,
ccf.dataType AS `key`,
ccf.fileName AS title,
(SELECT MAX(cf.createTime) FROM crm_file cf WHERE cf.linkSid = ccf.sid) AS createTime
ccf.dataType AS `key`,
ccf.fileName AS title,
createTime
-- (SELECT MAX(cf.createTime) FROM crm_file cf WHERE cf.linkSid = ccf.sid) AS createTime
FROM crm_customer_file ccf
WHERE ccf.linkSid = #{customerSid}
</select>

40
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileService.java

@ -135,7 +135,13 @@ public class CrmCustomerFileService extends MybatisBaseService<CrmCustomerFileMa
List<BaseDataListVo> data = bean.getData();
for (BaseDataListVo datum : data) {
CrmCustomerFile crmCustomerFile = new CrmCustomerFile();
datum.fromEntity(crmCustomerFile);
// datum.fromEntity(crmCustomerFile);
// BeanUtil.copyProperties(datum,crmCustomerFile);
crmCustomerFile.setDataType(datum.getDataType());
crmCustomerFile.setFileName(datum.getFileName());
crmCustomerFile.setFileType(datum.getFileType());
crmCustomerFile.setAttachType(datum.getAttachType());
crmCustomerFile.setSortNo(datum.getSortNo());
crmCustomerFile.setLinkSid(customerSid);
this.save(crmCustomerFile);
}
@ -198,24 +204,28 @@ public class CrmCustomerFileService extends MybatisBaseService<CrmCustomerFileMa
public ResultBean<AppCrmCustomerTempArchivesVo> initCustomerArchives(String customerSid, String userSid) {
ResultBean rb = ResultBean.fireFail();
fetchByDataTypeKey(customerSid);
AppCrmCustomerTempArchivesVo vo = new AppCrmCustomerTempArchivesVo();
List<AppCustomerArchivesDataVo> dataVos = baseMapper.selectByCustomerSid(customerSid);
for (AppCustomerArchivesDataVo appCustomerArchivesDataVo : dataVos) {
String createTime = appCustomerArchivesDataVo.getCreateTime();
Date date = DateUtils.dateStrConvertDate(createTime, "yyyy-MM-dd HH:mm:ss");
long time = date.getTime();
String s = String.valueOf(time);
appCustomerArchivesDataVo.setLastUploadTime(s);
String sid = appCustomerArchivesDataVo.getSid();
List<CrmFile> listVo = baseMapper.selArchivesFileImageBySid(sid);
List<String> list = new ArrayList<>();
for (CrmFile crmFile : listVo) {
String url = fileUploadComponent.getUrlPrefix() + crmFile.getFilePath();
list.add(url);
if (dataVos.size() > 0) {
for (AppCustomerArchivesDataVo appCustomerArchivesDataVo : dataVos) {
String createTime = appCustomerArchivesDataVo.getCreateTime();
Date date = DateUtils.dateStrConvertDate(createTime, "yyyy-MM-dd HH:mm:ss");
long time = date.getTime();
String s = String.valueOf(time);
appCustomerArchivesDataVo.setLastUploadTime(s);
String sid = appCustomerArchivesDataVo.getSid();
List<CrmFile> listVo = baseMapper.selArchivesFileImageBySid(sid);
List<String> list = new ArrayList<>();
for (CrmFile crmFile : listVo) {
String url = fileUploadComponent.getUrlPrefix() + crmFile.getFilePath();
list.add(url);
}
appCustomerArchivesDataVo.setFiles(list);
}
appCustomerArchivesDataVo.setFiles(list);
} else {
fetchByDataTypeKey(customerSid);
}
vo.setData(dataVos);
return rb.success().setData(vo);
}

3
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.java

@ -60,7 +60,6 @@ public interface CrmCustomerTempMapper extends BaseMapper<CrmCustomerTemp> {
IPage<AppCrmCustomerTempVo> getCustomerTempListByUserSid(IPage<AppCrmCustomerTempQuery> page, @Param("staffSid") String staffSid, @Param("name") String name);
CrmCustomerTempVo selectByMobileOrWx(Map<String, String> map);
@Select("SELECT COUNT(1) FROM crm_customer_temp WHERE createOrgSid=#{orgSid}")
@ -113,4 +112,6 @@ public interface CrmCustomerTempMapper extends BaseMapper<CrmCustomerTemp> {
* @return
*/
AppCrmCustomerTempInfoVo getAppCustomerTempDetailsBySid(@Param("sid") String sid);
int selBySidAndMobile(@Param("sid") String sid, @Param("mobile") String mobile);
}

28
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.xml

@ -55,8 +55,7 @@
<select id="selectBySid" resultType="com.yxt.anrui.crm.api.crmcustomertemp.AppCrmCustomerTempInfoVo">
SELECT cct.*
FROM crm_customer_temp cct
Left JOIN
WHERE cct.sid=#{sid}
WHERE cct.sid = #{sid}
</select>
<!--对应手机号应为一条,对应微信号可能为多条-->
<select id="selectByMobileOrWx" parameterType="map"
@ -127,7 +126,7 @@
resultType="com.yxt.anrui.crm.api.crmcustomertemp.AppCrmCustomerTempBasicsDetailsVo">
SELECT cct.customerType,
cct.customerTypeKey,
cct.contacts AS `name`,
cct.`name`,
cct.mobile,
cct.weixin,
cct.companyName,
@ -173,18 +172,18 @@
cct.companyName,
cct.weiXin,
cct.mobile,
cct.emergencyMobile AS mobile2,
cct.contacts AS `name`,
cct.emergencyContact AS name2,
cct.emergencyMobile AS mobile2,
cct.contacts AS `name`,
cct.emergencyContact AS name2,
cct.address,
cct.(province + city + county) AS addressNss,
(cct.province + cct.city + cct.county) AS addressNss,
cct.remarks,
cct.customerClass AS classification,
cct.customerClass AS classification,
cct.source,
cct.e_mail AS email,
cct.endDate AS idDate,
cct.e_mail AS email,
cct.endDate AS idDate,
cct.idNumber,
cct.certificateType AS idType,
cct.certificateType AS idType,
cct.sex,
cct.birthday,
cct.`level`,
@ -192,4 +191,11 @@
FROM crm_customer_temp cct
WHERE cct.sid = #{sid}
</select>
<select id="selBySidAndMobile" resultType="java.lang.Integer">
SELECT count(*)
FROM crm_customer_temp cct
WHERE cct.sid != #{sid}
AND
cct.mobile =#{mobile}
</select>
</mapper>

43
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java

@ -24,6 +24,7 @@ import com.yxt.anrui.crm.biz.crmfile.CrmFileService;
import com.yxt.anrui.crm.biz.crmvehicledemand.CrmVehicledemandService;
import com.yxt.anrui.crm.biz.crmvisit.CrmVisitService;
import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign;
import com.yxt.anrui.portal.api.dictcommon.DictCommonVo;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserInfoVo;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
@ -220,17 +221,28 @@ public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMa
}
} else { // 修改
if (StringUtils.isNotBlank(dto.getMobile())) {
map.put("mobile", dto.getMobile());
CrmCustomerTempVo crmCustomerTempVo = baseMapper.selectByMobileOrWx(map);
if (crmCustomerTempVo != null && crmCustomerTempVo.getStaffSid().equals(userOrgInfoVo.getStaffSid())) {
return new ResultBean().fail().setMsg("该手机号已绑定其它客户,请重新添加");
// map.put("mobile", dto.getMobile());
// CrmCustomerTempVo crmCustomerTempVo = baseMapper.selectByMobileOrWx(map);
// if (crmCustomerTempVo != null && !crmCustomerTempVo.getStaffSid().equals(userOrgInfoVo.getStaffSid())) {
// return new ResultBean().fail().setMsg("该手机号已绑定其它客户,请重新添加");
// }
AppCrmCustomerTempInfoVo appCrmCustomerTempInfoVo = baseMapper.selectBySid(dto.getSid());
String mobile = appCrmCustomerTempInfoVo.getMobile();
if (!mobile.equals(dto.getMobile())) {
int count = baseMapper.selBySidAndMobile(dto.getSid(), dto.getMobile());
if (count > 0) {
return new ResultBean().fail().setMsg("该手机号已绑定其它客户,请重新添加");
}
}
}
if (StringUtils.isNotBlank(dto.getWeixin())) {
map.put("weixin", dto.getWeixin());
CrmCustomerTempVo crmCustomerTempVo = baseMapper.selectByMobileOrWx(map);
if (crmCustomerTempVo != null && crmCustomerTempVo.getStaffSid().equals(userOrgInfoVo.getStaffSid())) {
return new ResultBean().fail().setMsg("该微信号已绑定其它客户,请重新添加");
if (crmCustomerTempVo.getWeixin().equals(dto.getWeixin())) {
return new ResultBean().fail().setMsg("该微信号已绑定其它客户,请重新添加");
}
}
}
CrmCustomerTemp customerTemp = fetchBySid(dto.getSid());
@ -398,7 +410,11 @@ public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMa
String city = appCrmCustomerTempVo.getCity();
String county = appCrmCustomerTempVo.getCounty();
String address = appCrmCustomerTempVo.getAddress();
appCrmCustomerTempVo.setAddressNss(province + city + county + address);
if (StringUtils.isNotBlank(province) || StringUtils.isNotBlank(city) || StringUtils.isNotBlank(county) || StringUtils.isNotBlank(address)) {
appCrmCustomerTempVo.setAddressNss(province + city + county + address);
} else {
appCrmCustomerTempVo.setAddressNss("");
}
String customerPhoto = appCrmCustomerTempVo.getCustomerPhoto();
if (customerPhoto != null) {
String urlPrefix = fileUploadComponent.getUrlPrefix();
@ -542,6 +558,11 @@ public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMa
customerTemp.setAddress_city(adCode.substring(2, 4));
customerTemp.setAddress_county(adCode.substring(4, 6));
}
if ("0".equals(dto.getIsOnRemindkey())) {
customerTemp.setRemind_day("未设置提醒");
} else if ("1".equals(dto.getIsOnRemindkey())) {
customerTemp.setRemind_day(dto.getRemind_day());
}
save(customerTemp);
// 增加跟进记录
Map<String, String> paramMap = new HashMap<>();
@ -776,8 +797,16 @@ public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMa
*/
public AppCrmCustomerTempBasicsDetailsVo customerTempDetailsBySid(String sid) {
AppCrmCustomerTempBasicsDetailsVo vo = baseMapper.customerTempDetailsBySid(sid);
vo.setSid(sid);
String adCode = vo.getAddress_province() + vo.getAddress_city() + vo.getAddress_county();
vo.setAdCode(adCode);
if (StringUtils.isNotBlank(adCode)) {
vo.setAdCode(adCode);
} else {
vo.setAdCode("");
}
String type = "customerType";
DictCommonVo customerType = dictCommonFeign.selectBykey(vo.getCustomerTypeKey(), type).getData();
vo.setParentSid(customerType.getSid());
List<CrmFileDetailsVo> crmFileDetailsVos = crmFileService.fetchByLinkSid(sid);
List<String> list = new ArrayList<>();
if (crmFileDetailsVos != null) {

9
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandMapper.java

@ -97,4 +97,13 @@ public interface CrmVehicledemandMapper extends BaseMapper<CrmVehicledemand> {
* @return
*/
IPage<PcCrmVehicleDemandVo> selectPagePc(IPage<CrmVehicledemand> page, @Param(Constants.WRAPPER) QueryWrapper<CrmVehicledemand> qw);
/**
* App销售订单选择意向车型列表
*
* @param page
* @param qw
* @return
*/
IPage<AppOrderCrmVehicleDemandVo> getWantCarList(IPage<CrmVehicledemand> page, @Param(Constants.WRAPPER) QueryWrapper<CrmVehicledemand> qw);
}

23
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandMapper.xml

@ -71,14 +71,14 @@
<!--获取意向车型列表-->
<select id="getVisitListSid" resultType="com.yxt.anrui.crm.api.crmvehicledemand.AppCrmVehicledemandVo">
SELECT DISTINCT cvcd.sid,
cvcd.modelName,
cvcd.brandName,
cvcd.createTime,
cvcd.saleReferencePrice AS guidancePrice,
cvcd.purchaseMethodValue AS purchaseType
cvcd.modelName,
cvcd.brandName,
cvcd.createTime,
cvcd.saleReferencePrice AS guidancePrice,
cvcd.purchaseMethodValue AS purchaseType
FROM crm_visit cv
LEFT JOIN crm_visit_demand cvd ON cv.sid = cvd.visitSid
LEFT JOIN crm_vehicledemand cvcd ON cvcd.sid = cvd.demandSid
LEFT JOIN crm_visit_demand cvd ON cv.sid = cvd.visitSid
LEFT JOIN crm_vehicledemand cvcd ON cvcd.sid = cvd.demandSid
<where>
${ew.sqlSegment}
</where>
@ -126,4 +126,13 @@
cv.brandName
from crm_vehicledemand cv ${ew.customSqlSegment}
</select>
<select id="getWantCarList" resultType="com.yxt.anrui.crm.api.crmvehicledemand.AppOrderCrmVehicleDemandVo">
select cv.modelSid,
cv.comonConfigSid as configSid,
cv.modelAlias as modelName,
cv.brandName,
cv.createTime
from crm_vehicledemand cv ${ew.customSqlSegment}
</select>
</mapper>

7
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandRest.java

@ -185,4 +185,11 @@ public class CrmVehicledemandRest implements CrmVehicledemandFeign {
PagerVo<PcCrmVehicleDemandVo> pv = crmVehicledemandService.selectPagePc(pcCrmVehicleDemandQuery);
return rb.success().setData(pv);
}
@Override
public ResultBean<PagerVo<AppOrderCrmVehicleDemandVo>> getWantCarList(PagerQuery<AppCrmOrderVehicleDemandQuery> pagerQuery) {
ResultBean<PagerVo<AppOrderCrmVehicleDemandVo>> rb = ResultBean.fireFail();
PagerVo<AppOrderCrmVehicleDemandVo> pv = crmVehicledemandService.getWantCarList(pagerQuery);
return rb.success().setData(pv);
}
}

38
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandService.java

@ -411,4 +411,42 @@ public class CrmVehicledemandService extends MybatisBaseService<CrmVehicledemand
}
return qw;
}
/**
* App销售订单选择意向车型列表
*
* @param pagerQuery
* @return
*/
public PagerVo<AppOrderCrmVehicleDemandVo> getWantCarList(PagerQuery<AppCrmOrderVehicleDemandQuery> pagerQuery) {
QueryWrapper<CrmVehicledemand> qw = AppCreatePagePcWrapper(pagerQuery.getParams());
IPage<CrmVehicledemand> page = PagerUtil.queryToPage(pagerQuery);
IPage<AppOrderCrmVehicleDemandVo> pagging = baseMapper.getWantCarList(page, qw);
PagerVo<AppOrderCrmVehicleDemandVo> p = PagerUtil.pageToVo(pagging, null);
List<AppOrderCrmVehicleDemandVo> list = p.getRecords();
if (list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
//根据车型sid及配置sid查询单台指导价
ResultBean<BaseVehmodelVo> voResultBean = baseVehmodelConfigFeign.selectOne(list.get(i).getModelSid(), list.get(i).getModelSid());
if (voResultBean.getSuccess()) {
list.get(i).setGuidancePrice(voResultBean.getData().getGuidedPrice());
}
}
}
return p;
}
/**
* 构造查询条件
*
* @param query 查询条件
* @return
*/
private QueryWrapper<CrmVehicledemand> AppCreatePagePcWrapper(AppCrmOrderVehicleDemandQuery query) {
QueryWrapper<CrmVehicledemand> qw = new QueryWrapper<>();
if (query != null) {
qw.eq("cv.customerSid", query.getCustomerSid());
}
return qw;
}
}
Loading…
Cancel
Save