fix:修改客户管理模块添加客户编码及联系人字段。

main
HuangHuiKang 5 days ago
parent ca8ff9dbf7
commit 291ad8fcf5

@ -17,6 +17,7 @@ public interface ErrorCodeConstants {
ErrorCode CUSTOMER_CREATE_NAME_NOT_NULL = new ErrorCode(5_0906, "客户名称不能为空");
ErrorCode CUSTOMER_NAME_EXISTS = new ErrorCode(5_0907, "已存在名为【{}】的客户");
ErrorCode CUSTOMER_UPDATE_DEAL_STATUS_FAIL = new ErrorCode(5_0908, "更新客户的成交状态失败,原因:已经是该状态,无需更新");
ErrorCode CUSTOMER_CODE_EXISTS = new ErrorCode(5_0909, "客户编码已存在");
ErrorCode MOLD_REPAIR_ID_NULL = new ErrorCode(5_0090, "维修单ID不能为空");

@ -219,10 +219,10 @@ public class CrmCustomerController {
public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo
List<CrmCustomerImportExcelVO> list = Arrays.asList(
CrmCustomerImportExcelVO.builder().name("芋道").industryId(1).level(1).source(1)
CrmCustomerImportExcelVO.builder().customerCode("CUST0001").name("芋道").contactName("张三").industryId(1).level(1).source(1)
.mobile("15601691300").telephone("").qq("").wechat("").email("yunai@iocoder.cn")
.areaId(null).detailAddress("").remark("").build(),
CrmCustomerImportExcelVO.builder().name("源码").industryId(1).level(1).source(1)
CrmCustomerImportExcelVO.builder().customerCode("CUST0002").name("源码").contactName("李四").industryId(1).level(1).source(1)
.mobile("15601691300").telephone("").qq("").wechat("").email("yunai@iocoder.cn")
.areaId(null).detailAddress("").remark("").build()
);

@ -27,6 +27,12 @@ public class CrmCustomerImportExcelVO {
@ExcelProperty("客户名称")
private String name;
@ExcelProperty("客户编码")
private String customerCode;
@ExcelProperty("联系人")
private String contactName;
@ExcelProperty("手机")
private String mobile;

@ -30,6 +30,12 @@ public class CrmCustomerPageReqVO extends PageParam {
@Schema(description = "客户名称", example = "赵六")
private String name;
@Schema(description = "客户编码", example = "CUST0001")
private String customerCode;
@Schema(description = "联系人", example = "张三")
private String contactName;
@Schema(description = "手机", example = "18000000000")
private String mobile;

@ -19,10 +19,18 @@ public class CrmCustomerRespVO {
@ExcelProperty("编号")
private Long id;
@Schema(description = "客户编码", example = "CUST0001")
@ExcelProperty("客户编码")
private String customerCode;
@Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "13563")
@ExcelProperty("客户名称")
private String name;
@Schema(description = "联系人", example = "张三")
@ExcelProperty("联系人")
private String contactName;
@Schema(description = "跟进状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "13563")
@ExcelProperty(value = "跟进状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.BOOLEAN_STRING)

@ -30,11 +30,20 @@ public class CrmCustomerSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13563")
private Long id;
@Schema(description = "客户编码", example = "CUST0001")
@DiffLogField(name = "客户编码")
private String customerCode;
@Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@DiffLogField(name = "客户名称")
@NotEmpty(message = "客户名称不能为空")
private String name;
@Schema(description = "联系人", example = "张三")
@DiffLogField(name = "联系人")
@Size(max = 64, message = "联系人长度不能超过 64 个字符")
private String contactName;
@Schema(description = "下次联系时间")
@DiffLogField(name = "下次联系时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)

@ -29,11 +29,20 @@ public class CrmCustomerDO extends BaseDO {
*/
@TableId
private Long id;
/**
*
*/
private String customerCode;
/**
*
*/
private String name;
/**
*
*/
private String contactName;
/**
*
*/

@ -22,6 +22,10 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> {
return selectOne(CrmCustomerDO::getName, name);
}
default CrmCustomerDO selectByCustomerCode(String customerCode) {
return selectOne(CrmCustomerDO::getCustomerCode, customerCode);
}
default List<CrmCustomerDO> selectListByIds(Collection<Long> ids) {
return selectList(CrmCustomerDO::getId, ids);
}
@ -72,6 +76,8 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> {
static LambdaQueryWrapperX<CrmCustomerDO> buildQuery(CrmCustomerPageReqVO pageReqVO) {
LambdaQueryWrapperX<CrmCustomerDO> query = new LambdaQueryWrapperX<CrmCustomerDO>()
.likeIfPresent(CrmCustomerDO::getName, pageReqVO.getName())
.likeIfPresent(CrmCustomerDO::getCustomerCode, pageReqVO.getCustomerCode())
.likeIfPresent(CrmCustomerDO::getContactName, pageReqVO.getContactName())
.eqIfPresent(CrmCustomerDO::getMobile, pageReqVO.getMobile())
.eqIfPresent(CrmCustomerDO::getIndustryId, pageReqVO.getIndustryId())
.eqIfPresent(CrmCustomerDO::getLevel, pageReqVO.getLevel())
@ -101,4 +107,4 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> {
}
return query;
}
}
}

@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.erp.controller.admin.autocode.util.AutoCodeUtil;
import cn.iocoder.yudao.module.mes.controller.admin.customer.vo.customer.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.customer.CrmCustomerDO;
import cn.iocoder.yudao.module.mes.dal.mysql.customer.CrmCustomerMapper;
@ -30,10 +31,14 @@ public class CrmCustomerServiceImpl implements CrmCustomerService {
@Resource
private CrmCustomerMapper customerMapper;
@Resource
private AutoCodeUtil autoCodeUtil;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createCustomer(CrmCustomerSaveReqVO createReqVO, Long userId) {
createReqVO.setId(null);
handleCustomerCodeForCreate(createReqVO);
validateCustomerForCreate(createReqVO.getName());
CrmCustomerDO customer = initCustomer(createReqVO, userId);
customerMapper.insert(customer);
@ -45,6 +50,7 @@ public class CrmCustomerServiceImpl implements CrmCustomerService {
public void updateCustomer(CrmCustomerSaveReqVO updateReqVO) {
validateCustomerExists(updateReqVO.getId());
validateCustomerNameUnique(updateReqVO.getName(), updateReqVO.getId());
validateCustomerCodeUnique(updateReqVO.getCustomerCode(), updateReqVO.getId());
CrmCustomerDO updateObj = BeanUtils.toBean(updateReqVO, CrmCustomerDO.class);
if (updateObj.getOwnerUserId() != null) {
updateObj.setOwnerTime(LocalDateTime.now());
@ -141,6 +147,7 @@ public class CrmCustomerServiceImpl implements CrmCustomerService {
@Override
@Transactional(rollbackFor = Exception.class)
public Long createCustomer(CrmCustomerCreateReqBO createReqBO, Long userId) {
handleCustomerCodeForCreate(createReqBO);
validateCustomerForCreate(createReqBO.getName());
CrmCustomerDO customer = initCustomer(createReqBO, userId);
customerMapper.insert(customer);
@ -161,6 +168,7 @@ public class CrmCustomerServiceImpl implements CrmCustomerService {
.build();
for (CrmCustomerImportExcelVO importCustomer : importCustomers) {
try {
handleCustomerCodeForCreate(importCustomer);
validateCustomerForCreate(importCustomer.getName());
} catch (ServiceException ex) {
CrmCustomerDO existCustomer = customerMapper.selectByCustomerName(importCustomer.getName());
@ -225,6 +233,30 @@ public class CrmCustomerServiceImpl implements CrmCustomerService {
return customer;
}
private void handleCustomerCodeForCreate(CrmCustomerSaveReqVO reqVO) {
if (StrUtil.isBlank(reqVO.getCustomerCode())) {
reqVO.setCustomerCode(autoCodeUtil.genSerialCode("CUSTOMER_CODE", null));
return;
}
validateCustomerCodeUnique(reqVO.getCustomerCode(), null);
}
private void handleCustomerCodeForCreate(CrmCustomerCreateReqBO reqBO) {
if (StrUtil.isBlank(reqBO.getCustomerCode())) {
reqBO.setCustomerCode(autoCodeUtil.genSerialCode("CUSTOMER_CODE", null));
return;
}
validateCustomerCodeUnique(reqBO.getCustomerCode(), null);
}
private void handleCustomerCodeForCreate(CrmCustomerImportExcelVO importVO) {
if (StrUtil.isBlank(importVO.getCustomerCode())) {
importVO.setCustomerCode(autoCodeUtil.genSerialCode("CUSTOMER_CODE", null));
return;
}
validateCustomerCodeUnique(importVO.getCustomerCode(), null);
}
private CrmCustomerDO validateCustomerExists(Long id) {
CrmCustomerDO customer = customerMapper.selectById(id);
if (customer == null) {
@ -246,4 +278,14 @@ public class CrmCustomerServiceImpl implements CrmCustomerService {
throw exception(CUSTOMER_NAME_EXISTS, name);
}
}
}
private void validateCustomerCodeUnique(String customerCode, Long id) {
if (StrUtil.isBlank(customerCode)) {
return;
}
CrmCustomerDO customer = customerMapper.selectByCustomerCode(customerCode);
if (customer != null && !Objects.equals(customer.getId(), id)) {
throw exception(CUSTOMER_CODE_EXISTS);
}
}
}

@ -23,6 +23,14 @@ public class CrmCustomerCreateReqBO {
*/
@NotEmpty(message = "客户名称不能为空")
private String name;
/**
*
*/
private String customerCode;
/**
*
*/
private String contactName;
/**
*
*/

Loading…
Cancel
Save