客户管理-支持多区域
This commit is contained in:
parent
e99b00fa89
commit
e843fde8c9
|
|
@ -8,11 +8,13 @@ import cn.hutool.core.util.StrUtil;
|
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.nflg.mobilebroken.admin.annotation.ApiMark;
|
||||
import com.nflg.mobilebroken.admin.constant.Constant;
|
||||
import com.nflg.mobilebroken.admin.pojo.dto.CustomerAreaDTO;
|
||||
import com.nflg.mobilebroken.admin.pojo.dto.CustomerDTO;
|
||||
import com.nflg.mobilebroken.admin.pojo.dto.SyncFromCrmDTO;
|
||||
import com.nflg.mobilebroken.admin.pojo.query.CustomerQuery;
|
||||
import com.nflg.mobilebroken.admin.pojo.vo.ComstomerImportTemplate;
|
||||
import com.nflg.mobilebroken.admin.pojo.vo.CustomerExcelVO;
|
||||
import com.nflg.mobilebroken.admin.pojo.vo.TBaseCustomerListVO;
|
||||
import com.nflg.mobilebroken.admin.service.AdminCustomerService;
|
||||
import com.nflg.mobilebroken.common.constant.STATE;
|
||||
import com.nflg.mobilebroken.common.exception.NflgException;
|
||||
|
|
@ -23,8 +25,10 @@ import com.nflg.mobilebroken.common.util.EecExcelUtil;
|
|||
import com.nflg.mobilebroken.common.util.UniqueSequenceGenerator;
|
||||
import com.nflg.mobilebroken.common.util.VUtils;
|
||||
import com.nflg.mobilebroken.repository.entity.AppUser;
|
||||
import com.nflg.mobilebroken.repository.entity.TBaseArea;
|
||||
import com.nflg.mobilebroken.repository.entity.TBaseCustomer;
|
||||
import com.nflg.mobilebroken.repository.service.IAppUserService;
|
||||
import com.nflg.mobilebroken.repository.service.ITBaseAreaService;
|
||||
import com.nflg.mobilebroken.repository.service.ITBaseCustomerService;
|
||||
import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
|
@ -57,13 +61,22 @@ public class CustomerController extends ControllerBase {
|
|||
@Resource
|
||||
IAppUserService appUserService;
|
||||
|
||||
@Resource
|
||||
ITBaseAreaService areaService;
|
||||
|
||||
|
||||
@PostMapping("getList")
|
||||
@ApiMark(moduleName = "客户管理", apiName = "获取客户列表")
|
||||
public ApiResult<PageData<TBaseCustomer>> getList(@RequestBody CustomerQuery query){
|
||||
public ApiResult<PageData<TBaseCustomerListVO>> getList(@RequestBody CustomerQuery query){
|
||||
Page<TBaseCustomer> result = baseCustomerService.getList(new Page<>(query.getPage(),query.getPageSize()), query);
|
||||
|
||||
return ApiResult.success(result.getRecords(),query,result.getTotal());
|
||||
List<TBaseCustomerListVO> resultData=Convert.toList(TBaseCustomerListVO.class, result.getRecords());
|
||||
resultData.forEach(u->{
|
||||
if(StrUtil.isNotBlank(u.getAreaCode())){
|
||||
List<TBaseArea> areaList = areaService.lambdaQuery().in(TBaseArea::getAreaCode, StrUtil.split(u.getAreaCode(), ",")).list();
|
||||
u.setAreaList(Convert.toList(CustomerAreaDTO.class, areaList));
|
||||
}
|
||||
});
|
||||
return ApiResult.success(resultData,query,result.getTotal());
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -79,15 +92,18 @@ public class CustomerController extends ControllerBase {
|
|||
//检查公司名称是否已存在
|
||||
List<TBaseCustomer> existCompany = baseCustomerService.lambdaQuery().eq(TBaseCustomer::getAgencyCompanyName, customerDTO.getAgencyCompanyName()).list();
|
||||
VUtils.trueThrow(CollUtil.isNotEmpty(existCompany)).throwMessage(STATE.PageError,customerDTO.getAgencyCompanyName()+"公司名称已存在");
|
||||
VUtils.trueThrow(CollUtil.isEmpty(customerDTO.getAreaList())).throwMessage(STATE.ParamErr,"公司区域不能为空");
|
||||
TBaseCustomer ent = Convert.convert(TBaseCustomer.class, customerDTO);
|
||||
ent.setId(null);
|
||||
ent.setAgencyCompanyCode(UniqueSequenceGenerator.generateCode(Constant.CustomerCodePrefix));
|
||||
ent.setAreaCode(StrUtil.join(",", customerDTO.getAreaList().stream().map(u->u.getAreaCode()).collect(Collectors.toList())));
|
||||
ent.setAreaName(StrUtil.join(",", customerDTO.getAreaList().stream().map(u->u.getAreaName()).collect(Collectors.toList())));
|
||||
ent.setDataCreateUserNo(AdminUserUtil.getUserNo());
|
||||
ent.setDataCreateUserName(AdminUserUtil.getUserName());
|
||||
ent.setDataCreateTime(LocalDateTime.now());
|
||||
ent.setDataModifyUserNo(AdminUserUtil.getUserNo());
|
||||
ent.setDataModifyUserName(AdminUserUtil.getUserName());
|
||||
ent.setDataModifyTime(LocalDateTime.now());
|
||||
// ent.setDataModifyUserNo(AdminUserUtil.getUserNo());
|
||||
// ent.setDataModifyUserName(AdminUserUtil.getUserName());
|
||||
// ent.setDataModifyTime(LocalDateTime.now());
|
||||
baseCustomerService.save(ent);
|
||||
return ApiResult.success(true);
|
||||
|
||||
|
|
@ -105,7 +121,11 @@ public class CustomerController extends ControllerBase {
|
|||
//检查公司名称是否已存在
|
||||
TBaseCustomer oldEnt = baseCustomerService.getById(customerDTO.getId());
|
||||
VUtils.trueThrow(Objects.isNull(oldEnt)).throwMessage(STATE.PageError,customerDTO.getAgencyCompanyName()+"公司不存在");
|
||||
|
||||
VUtils.trueThrow(CollUtil.isEmpty(customerDTO.getAreaList())).throwMessage(STATE.ParamErr,"公司区域不能为空");
|
||||
BeanUtil.copyProperties(customerDTO,oldEnt);
|
||||
oldEnt.setAreaCode(StrUtil.join(",", customerDTO.getAreaList().stream().map(u->u.getAreaCode()).collect(Collectors.toList())));
|
||||
oldEnt.setAreaName(StrUtil.join(",", customerDTO.getAreaList().stream().map(u->u.getAreaName()).collect(Collectors.toList())));
|
||||
oldEnt.setDataModifyUserNo(AdminUserUtil.getUserNo());
|
||||
oldEnt.setDataModifyUserName(AdminUserUtil.getUserName());
|
||||
oldEnt.setDataModifyTime(LocalDateTime.now());
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
package com.nflg.mobilebroken.admin.pojo.dto;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class CustomerAreaDTO {
|
||||
|
||||
/**
|
||||
* 区域ID
|
||||
*/
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 区域编码
|
||||
*/
|
||||
private String areaCode;
|
||||
|
||||
/**
|
||||
* 区域名称
|
||||
*/
|
||||
|
||||
private String areaName;
|
||||
}
|
||||
|
|
@ -1,9 +1,11 @@
|
|||
package com.nflg.mobilebroken.admin.pojo.dto;
|
||||
|
||||
import com.nflg.mobilebroken.repository.entity.TBaseArea;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 客户管理-参数
|
||||
|
|
@ -42,17 +44,7 @@ public class CustomerDTO {
|
|||
@NotBlank(message = "销售授权信息不能为空")
|
||||
private String salesAuthorizationInfo;
|
||||
|
||||
/**
|
||||
* 区域编码
|
||||
*/
|
||||
@NotBlank(message = "区域编码不能为空")
|
||||
private String areaCode;
|
||||
|
||||
/**
|
||||
* 区域
|
||||
*/
|
||||
@NotBlank(message = "区域名称不能为空")
|
||||
private String areaName;
|
||||
|
||||
/**
|
||||
* 服务主管
|
||||
|
|
@ -86,4 +78,10 @@ public class CustomerDTO {
|
|||
* 销售主管ID
|
||||
*/
|
||||
private String salesSupervisorCode;
|
||||
|
||||
|
||||
/**
|
||||
* 区域列表
|
||||
*/
|
||||
private List<CustomerAreaDTO> areaList;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,13 +28,13 @@ public class ComstomerImportTemplate {
|
|||
/**
|
||||
* 区域编码
|
||||
*/
|
||||
@ExcelColumn("区域编码")
|
||||
@ExcelColumn("区域编码,多个以逗号隔开")
|
||||
private String areaCode;
|
||||
|
||||
/**
|
||||
* 区域
|
||||
*/
|
||||
@ExcelColumn("区域名称")
|
||||
@ExcelColumn("区域名称,多个以逗号隔开")
|
||||
private String areaName;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -37,13 +37,13 @@ public class CustomerExcelVO implements Serializable {
|
|||
/**
|
||||
* 区域编码
|
||||
*/
|
||||
@ExcelColumn("区域编码")
|
||||
@ExcelColumn("区域编码,多个以逗号隔开")
|
||||
private String areaCode;
|
||||
|
||||
/**
|
||||
* 区域
|
||||
*/
|
||||
@ExcelColumn("区域名称")
|
||||
@ExcelColumn("区域名称,多个以逗号隔开")
|
||||
private String areaName;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
package com.nflg.mobilebroken.admin.pojo.vo;
|
||||
|
||||
import com.nflg.mobilebroken.admin.pojo.dto.CustomerAreaDTO;
|
||||
import com.nflg.mobilebroken.repository.entity.TBaseCustomer;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class TBaseCustomerListVO extends TBaseCustomer {
|
||||
|
||||
|
||||
/**
|
||||
* 区域列表
|
||||
*/
|
||||
private List<CustomerAreaDTO> areaList;
|
||||
}
|
||||
|
|
@ -6,6 +6,7 @@ import cn.hutool.core.convert.Convert;
|
|||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.nflg.mobilebroken.admin.constant.Constant;
|
||||
import com.nflg.mobilebroken.admin.pojo.vo.AgentManagerVO;
|
||||
import com.nflg.mobilebroken.admin.pojo.vo.CmrAgentResultVO;
|
||||
|
|
@ -15,7 +16,9 @@ import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
|||
import com.nflg.mobilebroken.common.util.UniqueSequenceGenerator;
|
||||
import com.nflg.mobilebroken.common.util.VUtils;
|
||||
import com.nflg.mobilebroken.repository.entity.Device;
|
||||
import com.nflg.mobilebroken.repository.entity.TBaseArea;
|
||||
import com.nflg.mobilebroken.repository.entity.TBaseCustomer;
|
||||
import com.nflg.mobilebroken.repository.service.ITBaseAreaService;
|
||||
import com.nflg.mobilebroken.repository.service.ITBaseCustomerService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
@ -37,6 +40,9 @@ public class AdminCustomerService {
|
|||
@Resource
|
||||
CrmService crmService;
|
||||
|
||||
@Resource
|
||||
ITBaseAreaService areaService;
|
||||
|
||||
/**
|
||||
* 导入
|
||||
* @param data
|
||||
|
|
@ -62,14 +68,28 @@ public class AdminCustomerService {
|
|||
Set<String> existCompanyNames = existCompany.stream().map(u -> u.getAgencyCompanyName()).collect(Collectors.toSet());
|
||||
VUtils.trueThrow(true).throwMessage(STATE.ParamErr,StrUtil.join(",",existCompanyNames)+" 已存在数据库中");
|
||||
}
|
||||
//检查区域编码在库中是否已存在
|
||||
List<String> areaCodes = data.stream().filter(u->StrUtil.isNotBlank(u.getAreaCode())).map(u -> u.getAreaCode()).collect(Collectors.toList());
|
||||
if(CollUtil.isNotEmpty(areaCodes)){
|
||||
Set<String> areaCodeSet=new HashSet<>();
|
||||
areaCodes.forEach(u->{
|
||||
areaCodeSet.addAll(StrUtil.split(u,","));
|
||||
});
|
||||
List<TBaseArea> existAreaList = areaService.lambdaQuery().in(TBaseArea::getAreaCode, areaCodeSet).list();
|
||||
Set<String> existAreaCodeSet = existAreaList.stream().map(u -> u.getAreaCode()).collect(Collectors.toSet());
|
||||
|
||||
Set<String> difference = Sets.difference(areaCodeSet, existAreaCodeSet);
|
||||
VUtils.trueThrow(CollUtil.isNotEmpty(difference)).throwMessage(STATE.ParamErr,StrUtil.join(",", difference)+"在区域列表中不存在");
|
||||
|
||||
}
|
||||
List<TBaseCustomer> result = Convert.toList(TBaseCustomer.class, data);
|
||||
result.forEach(k->{
|
||||
k.setDataCreateUserNo(AdminUserUtil.getUserNo());
|
||||
k.setDataCreateUserName(AdminUserUtil.getUserName());
|
||||
k.setDataCreateTime(LocalDateTime.now());
|
||||
k.setDataModifyUserNo(AdminUserUtil.getUserNo());
|
||||
k.setDataModifyUserName(AdminUserUtil.getUserName());
|
||||
k.setDataModifyTime(LocalDateTime.now());
|
||||
// k.setDataModifyUserNo(AdminUserUtil.getUserNo());
|
||||
// k.setDataModifyUserName(AdminUserUtil.getUserName());
|
||||
// k.setDataModifyTime(LocalDateTime.now());
|
||||
k.setAgencyCompanyCode(UniqueSequenceGenerator.generateCode(Constant.CustomerCodePrefix) );
|
||||
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue