Browse Source

客户查询优化、增加查询条件、导出接口

master
fanzongzhe 1 year ago
parent
commit
14eb2fae67
  1. 43
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempExportVo.java
  2. 9
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeign.java
  3. 5
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeignFallback.java
  4. 9
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempQuery.java
  5. 2
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.java
  6. 19
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.xml
  7. 29
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempRest.java
  8. 97
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java

43
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempExportVo.java

@ -0,0 +1,43 @@
package com.yxt.anrui.crm.api.crmcustomertemp;
import com.yxt.common.core.utils.ExportEntityMap;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/11/13 9:34
*/
@Data
public class CrmCustomerTempExportVo {
private String staffSid;
private String createOrgSid;
@ExportEntityMap(CnName = "序号", EnName = "rankNo")
private Integer rankNo;
@ExportEntityMap(CnName = "创建日期", EnName = "createTime")
private String createTime;
@ExportEntityMap(CnName = "客户编码", EnName = "customerNo")
private String customerNo;
@ExportEntityMap(CnName = "分公司", EnName = "createOrgName")
private String createOrgName;
@ExportEntityMap(CnName = "部门", EnName = "deptName")
private String deptName;
@ExportEntityMap(CnName = " 销售专员", EnName = "staffName")
private String staffName;
@ExportEntityMap(CnName = "客户名称", EnName = "name")
private String name;
@ExportEntityMap(CnName = "客户类型", EnName = "customerType")
private String customerType;
@ExportEntityMap(CnName = "联系电话", EnName = "mobile")
private String mobile;
@ExportEntityMap(CnName = "微信号", EnName = "weixin")
private String weixin;
@ExportEntityMap(CnName = "客户级别", EnName = "level")
private String level;
@ExportEntityMap(CnName = "提醒日期", EnName = "remind_day")
private String remind_day;
@ExportEntityMap(CnName = "意向车型", EnName = "yxcounts")
private String yxcounts;
@ExportEntityMap(CnName = "跟进记录", EnName = "gjcounts")
private String gjcounts;
}

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

@ -96,6 +96,15 @@ public interface CrmCustomerTempFeign {
public ResultBean<CrmAppDisAndCustm> billApplicatSaveCust(@Valid @RequestBody CrmCustomerBillApplicationDto dto);
/**
* 客户列表导出
* @param crmCustomerTempQuery
*/
@PostMapping("/exportExcel")
@ApiOperation(value = "客户列表导出")
@ResponseBody
public void exportExcel(@RequestBody CrmCustomerTempQuery crmCustomerTempQuery);
/**
* pc端潜在客户编辑保存
*

5
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeignFallback.java

@ -73,6 +73,11 @@ public class CrmCustomerTempFeignFallback implements CrmCustomerTempFeign {
return null;
}
@Override
public void exportExcel(CrmCustomerTempQuery crmCustomerTempQuery) {
}
@Override
public ResultBean update(CrmCustomerTempUpdateDto dto,String sid){
return ResultBean.fireFail().setMsg("接口anrui-crm/crmcustomertemp/update无法访问");

9
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempQuery.java

@ -56,4 +56,13 @@ public class CrmCustomerTempQuery implements Query {
@ApiModelProperty("客户sid")
private List<String> customerSidList;
@ApiModelProperty("创建开始日期")
private String createStartDate;
@ApiModelProperty("创建结束日期")
private String createEndDate;
@ApiModelProperty("销售专员")
private String staffName;
}

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

@ -135,4 +135,6 @@ public interface CrmCustomerTempMapper extends BaseMapper<CrmCustomerTemp> {
List<CrmCustomerTemp> selectLists(@Param(Constants.WRAPPER) QueryWrapper<CrmCustomerTemp> qw);
void updateIdBySid(@Param("idCard") String idCard,@Param("custSid") String custSid);
List<CrmCustomerTempExportVo> exportExcel(@Param(Constants.WRAPPER) QueryWrapper<CrmCustomerTemp> qw);
}

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

@ -5,6 +5,7 @@
<!-- ${ew.customSqlSegment} -->
<select id="selectPageVo" resultType="com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo">
SELECT cct.*,
st.name as staffName,
(SELECT COUNT(*)
FROM crm_vehicledemand cv
WHERE cct.sid = cv.customerSid
@ -14,6 +15,7 @@
WHERE cct.sid = cvi.customerSid) gjcounts
FROM crm_customer_temp cct
LEFT JOIN anrui_portal.sys_organization so ON cct.createOrgSid = so.sid
LEFT JOIN anrui_portal.sys_staffinfo st ON cct.staffSid = st.sid
<where>
${ew.sqlSegment}
</where>
@ -247,6 +249,23 @@
${ew.sqlSegment}
</where>
</select>
<select id="exportExcel" resultType="com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempExportVo">
SELECT cct.*,
st.name as staffName,
(SELECT COUNT(*)
FROM crm_vehicledemand cv
WHERE cct.sid = cv.customerSid
AND states = 1) yxcounts,
(SELECT COUNT(*)
FROM crm_visit cvi
WHERE cct.sid = cvi.customerSid) gjcounts
FROM crm_customer_temp cct
LEFT JOIN anrui_portal.sys_organization so ON cct.createOrgSid = so.sid
LEFT JOIN anrui_portal.sys_staffinfo st ON cct.staffSid = st.sid
<where>
${ew.sqlSegment}
</where>
</select>
<update id="updateIdBySid">
update crm_customer_temp

29
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempRest.java

@ -1,12 +1,17 @@
package com.yxt.anrui.crm.biz.crmcustomertemp;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.base.api.basevehicle.BaseVehicleExportVo;
import com.yxt.anrui.buscenter.api.busdeposit.BusDepositFeign;
import com.yxt.anrui.crm.api.crmcustomerfile.AppCrmCustomerTempArchivesDto;
import com.yxt.anrui.crm.api.crmcustomerfile.AppCrmCustomerTempArchivesVo;
import com.yxt.anrui.crm.api.crmcustomertemp.*;
import com.yxt.anrui.crm.biz.crmcustomerfile.CrmCustomerFileService;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.common.base.utils.ExportExcelUtils;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
@ -18,6 +23,11 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
@ -49,7 +59,8 @@ public class CrmCustomerTempRest implements CrmCustomerTempFeign {
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private HttpServletResponse response;
@Override
public ResultBean<PagerVo<CrmCustomerTempVo>> listPage(@RequestBody PagerQuery<CrmCustomerTempQuery> pq) {
ResultBean rb = ResultBean.fireFail();
@ -119,6 +130,22 @@ public class CrmCustomerTempRest implements CrmCustomerTempFeign {
return crmCustomerTempService.billApplicatSaveCust(dto);
}
@Override
public void exportExcel(CrmCustomerTempQuery crmCustomerTempQuery) {
//得到所有要导出的数据
List<CrmCustomerTempExportVo> CrmCustomerTempExportVoList = crmCustomerTempService.exportExcel(crmCustomerTempQuery);
//定义导出的excel名字
String excelName = "客户信息列表";
String fileNameURL = "";
try {
fileNameURL = URLEncoder.encode(excelName, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//导出车辆管理列表
ExportExcelUtils.export(fileNameURL, CrmCustomerTempExportVoList, CrmCustomerTempExportVo.class, response);
}
/**
* 潜在客户修改保存
*

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

@ -59,6 +59,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@ -215,11 +217,19 @@ public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMa
if (StringUtils.isNotBlank(query.getMobile())) {
qw.like("cct.mobile", query.getMobile());
}
if (StringUtils.isNotBlank(query.getStaffName())) {
qw.like("st.name", query.getStaffName());
}
String remindStartDay = query.getRemindStartDay();
String remindEndDay = query.getRemindEndDay();
qw.apply(StringUtils.isNotBlank(remindStartDay), "date_format (cct.remind_day,'%Y-%m-%d') >= date_format('" + remindStartDay + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(remindEndDay), "date_format (cct.remind_day,'%Y-%m-%d') <= date_format('" + remindEndDay + "','%Y-%m-%d')"
);
String createStartDate = query.getCreateStartDate();
String createEndDate = query.getCreateEndDate();
qw.apply(StringUtils.isNotBlank(createStartDate), "date_format (cct.createTime,'%Y-%m-%d') >= date_format('" + createStartDate + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(createEndDate), "date_format (cct.createTime,'%Y-%m-%d') <= date_format('" + createEndDate + "','%Y-%m-%d')"
);
IPage<CrmCustomerTemp> page = PagerUtil.queryToPage(pq);
IPage<CrmCustomerTempVo> pagging = baseMapper.selectPageVo(page, qw);
for (CrmCustomerTempVo record : pagging.getRecords()) {
@ -227,8 +237,8 @@ public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMa
String staffSid = record.getStaffSid();
String createOrgName = sysOrganizationFeign.fetchBySid(createOrgSid).getData().getName();
record.setCreateOrgName(createOrgName);
String staffName = sysStaffinfoFeign.fetchBySid(staffSid).getData().getName();
record.setStaffName(staffName);
// String staffName = sysStaffinfoFeign.fetchBySid(staffSid).getData().getName();
// record.setStaffName(staffName);
List<SysStaffOrgVo> sysStaffOrgVos = sysStaffOrgFeign.getSysStaffOrgListByStaffSid(staffSid).getData();
for (SysStaffOrgVo sysStaffOrgVo : sysStaffOrgVos) {
SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.fetchBySid(sysStaffOrgVo.getOrgSid()).getData();
@ -1223,6 +1233,87 @@ public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMa
}
public void updateIdBySid(String idCard, String custSid) {
baseMapper.updateIdBySid(idCard,custSid);
baseMapper.updateIdBySid(idCard, custSid);
}
public List<CrmCustomerTempExportVo> exportExcel(CrmCustomerTempQuery query) {
QueryWrapper<CrmCustomerTemp> qw = new QueryWrapper<>();
String userSid = query.getUserSid();
//根据用户的组织机构查询分公司
String orgSidPath = query.getOrgSidPath();
String orgSid = "";//分公司sid
if (StringUtils.isNotBlank(orgSidPath)) {
orgSid = sysStaffOrgFeign.getOrgSidByPath(orgSidPath).getData();
} else {
SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.getUseOrgByUserSid(userSid).getData();
if (sysOrganizationVo != null) {
orgSid = sysOrganizationVo.getSid();
}
}
SysOrganizationVo data = sysOrganizationFeign.selectByOrgSidPath(orgSidPath).getData();
String orgLevelKey = data.getOrgLevelKey();
if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, 73);
qw.like("so.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
qw.eq("cct.createOrgSid", orgSid);
}
if (StringUtils.isNotBlank(query.getCustomerTypeKey())) {
qw.eq("cct.customerTypeKey", query.getCustomerTypeKey());
}
if (StringUtils.isNotBlank(query.getName())) {
qw.like("cct.name", query.getName());
}
if (StringUtils.isNotBlank(query.getLevelKey())) {
qw.eq("cct.levelKey", query.getLevelKey());
}
if (StringUtils.isNotBlank(query.getMobile())) {
qw.like("cct.mobile", query.getMobile());
}
if (StringUtils.isNotBlank(query.getStaffName())) {
qw.like("st.name", query.getStaffName());
}
String remindStartDay = query.getRemindStartDay();
String remindEndDay = query.getRemindEndDay();
qw.apply(StringUtils.isNotBlank(remindStartDay), "date_format (cct.remind_day,'%Y-%m-%d') >= date_format('" + remindStartDay + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(remindEndDay), "date_format (cct.remind_day,'%Y-%m-%d') <= date_format('" + remindEndDay + "','%Y-%m-%d')"
);
String createStartDate = query.getCreateStartDate();
String createEndDate = query.getCreateEndDate();
qw.apply(StringUtils.isNotBlank(createStartDate), "date_format (cct.createTime,'%Y-%m-%d') >= date_format('" + createStartDate + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(createEndDate), "date_format (cct.createTime,'%Y-%m-%d') <= date_format('" + createEndDate + "','%Y-%m-%d')"
);
List<CrmCustomerTempExportVo> records = baseMapper.exportExcel(qw);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int id = 1;
if (!records.isEmpty()) {
for (CrmCustomerTempExportVo record : records) {
try {
Date date = sdf.parse(record.getCreateTime());
record.setCreateTime(sdf.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
String createOrgSid = record.getCreateOrgSid();
String staffSid = record.getStaffSid();
String createOrgName = sysOrganizationFeign.fetchBySid(createOrgSid).getData().getName();
record.setCreateOrgName(createOrgName);
List<SysStaffOrgVo> sysStaffOrgVos = sysStaffOrgFeign.getSysStaffOrgListByStaffSid(staffSid).getData();
for (SysStaffOrgVo sysStaffOrgVo : sysStaffOrgVos) {
SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.fetchBySid(sysStaffOrgVo.getOrgSid()).getData();
String psid = sysOrganizationVo.getPsid();
if (psid.equals(createOrgSid)) {
String orgName = sysStaffOrgVo.getOrgName();
record.setDeptName(orgName);
}
}
record.setRankNo(id);
id = id + 1;
}
}
return records;
}
}
Loading…
Cancel
Save