diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/CustomerController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/CustomerController.java index 6bec033f..a88152d9 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/CustomerController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/CustomerController.java @@ -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> getList(@RequestBody CustomerQuery query){ + public ApiResult> getList(@RequestBody CustomerQuery query){ Page result = baseCustomerService.getList(new Page<>(query.getPage(),query.getPageSize()), query); - - return ApiResult.success(result.getRecords(),query,result.getTotal()); + List resultData=Convert.toList(TBaseCustomerListVO.class, result.getRecords()); + resultData.forEach(u->{ + if(StrUtil.isNotBlank(u.getAreaCode())){ + List 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 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()); diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/CustomerAreaDTO.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/CustomerAreaDTO.java new file mode 100644 index 00000000..7ec16e10 --- /dev/null +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/CustomerAreaDTO.java @@ -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; +} diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/CustomerDTO.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/CustomerDTO.java index ba76f539..27244fbf 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/CustomerDTO.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/CustomerDTO.java @@ -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 areaList; } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/ComstomerImportTemplate.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/ComstomerImportTemplate.java index 40038eae..8a6470b2 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/ComstomerImportTemplate.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/ComstomerImportTemplate.java @@ -28,13 +28,13 @@ public class ComstomerImportTemplate { /** * 区域编码 */ - @ExcelColumn("区域编码") + @ExcelColumn("区域编码,多个以逗号隔开") private String areaCode; /** * 区域 */ - @ExcelColumn("区域名称") + @ExcelColumn("区域名称,多个以逗号隔开") private String areaName; /** diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/CustomerExcelVO.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/CustomerExcelVO.java index d859ef3d..7ff924d6 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/CustomerExcelVO.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/CustomerExcelVO.java @@ -37,13 +37,13 @@ public class CustomerExcelVO implements Serializable { /** * 区域编码 */ - @ExcelColumn("区域编码") + @ExcelColumn("区域编码,多个以逗号隔开") private String areaCode; /** * 区域 */ - @ExcelColumn("区域名称") + @ExcelColumn("区域名称,多个以逗号隔开") private String areaName; /** diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/TBaseCustomerListVO.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/TBaseCustomerListVO.java new file mode 100644 index 00000000..f428a3cd --- /dev/null +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/TBaseCustomerListVO.java @@ -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 areaList; +} diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminCustomerService.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminCustomerService.java index a35be9f2..2a1d2893 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminCustomerService.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminCustomerService.java @@ -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 existCompanyNames = existCompany.stream().map(u -> u.getAgencyCompanyName()).collect(Collectors.toSet()); VUtils.trueThrow(true).throwMessage(STATE.ParamErr,StrUtil.join(",",existCompanyNames)+" 已存在数据库中"); } + //检查区域编码在库中是否已存在 + List areaCodes = data.stream().filter(u->StrUtil.isNotBlank(u.getAreaCode())).map(u -> u.getAreaCode()).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(areaCodes)){ + Set areaCodeSet=new HashSet<>(); + areaCodes.forEach(u->{ + areaCodeSet.addAll(StrUtil.split(u,",")); + }); + List existAreaList = areaService.lambdaQuery().in(TBaseArea::getAreaCode, areaCodeSet).list(); + Set existAreaCodeSet = existAreaList.stream().map(u -> u.getAreaCode()).collect(Collectors.toSet()); + + Set difference = Sets.difference(areaCodeSet, existAreaCodeSet); + VUtils.trueThrow(CollUtil.isNotEmpty(difference)).throwMessage(STATE.ParamErr,StrUtil.join(",", difference)+"在区域列表中不存在"); + + } List 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) ); });