|
@@ -38,21 +38,31 @@ import java.util.stream.Stream;
|
|
|
*/
|
|
|
@Service
|
|
|
public class TBServiceRegionServiceImpl extends ServiceImpl<TBServiceRegionMapper, TBServiceRegion> implements TBServiceRegionService {
|
|
|
+
|
|
|
@Resource
|
|
|
private TBServiceService tbServiceService;
|
|
|
+
|
|
|
@Resource
|
|
|
private SysUserService sysUserService;
|
|
|
+
|
|
|
@Resource
|
|
|
private TBServiceRegionDetailService tbServiceRegionDetailService;
|
|
|
+
|
|
|
@Resource
|
|
|
private TBCrmService tbCrmService;
|
|
|
+
|
|
|
@Resource
|
|
|
private SysUserRoleService sysUserRoleService;
|
|
|
+
|
|
|
@Resource
|
|
|
private TBUserArchivesAllocationService tbUserArchivesAllocationService;
|
|
|
+
|
|
|
@Resource
|
|
|
private TBUserArchivesService tbUserArchivesService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private TBCrmDetailService tbCrmDetailService;
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<ServiceRegionResult> findServiceRegionPage(Long serviceUnitId, String regionName, Long leadId, String city, Integer pageNumber, Integer pageSize) {
|
|
|
if (regionName != null && regionName.length() > 0) {
|
|
@@ -64,7 +74,8 @@ public class TBServiceRegionServiceImpl extends ServiceImpl<TBServiceRegionMappe
|
|
|
SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
|
|
|
|
|
|
- IPage<ServiceRegionResult> page = this.baseMapper.findServiceRegionPage(new Page<>(pageNumber, pageSize), serviceUnitId, regionName, leadId, city, ServiceStatusEnum.CANCEL, dpr);
|
|
|
+ IPage<ServiceRegionResult> page = this.baseMapper.findServiceRegionPage(new Page<>(pageNumber, pageSize),
|
|
|
+ serviceUnitId, regionName, leadId, city, ServiceStatusEnum.CANCEL, dpr);
|
|
|
List<ServiceRegionResult> records = page.getRecords();
|
|
|
if (records.size() > 0) {
|
|
|
// 涉及的服务单元id集合
|
|
@@ -74,16 +85,15 @@ public class TBServiceRegionServiceImpl extends ServiceImpl<TBServiceRegionMappe
|
|
|
List<CrmServiceResult> crmServiceResultList = tbCrmService.findCrmOrderByServiceIdList(serviceUnitIdList);
|
|
|
// 规划位置
|
|
|
List<Long> serviceRegionIdList = records.stream().map(ServiceRegionResult::getServiceRegionId).distinct().collect(Collectors.toList());
|
|
|
- List<TBServiceRegionDetail> tbServiceRegionDetailList = tbServiceRegionDetailService.list(new QueryWrapper<TBServiceRegionDetail>().lambda().in(TBServiceRegionDetail::getServiceRegionId, serviceRegionIdList));
|
|
|
+ List<TBServiceRegionDetail> tbServiceRegionDetailList = tbServiceRegionDetailService.list(
|
|
|
+ new QueryWrapper<TBServiceRegionDetail>().lambda().in(TBServiceRegionDetail::getServiceRegionId, serviceRegionIdList));
|
|
|
|
|
|
for (ServiceRegionResult record : records) {
|
|
|
Long unitId = record.getServiceUnitId();
|
|
|
Long regionId = record.getServiceRegionId();
|
|
|
|
|
|
- List<TBServiceRegionDetail> detailList = tbServiceRegionDetailList
|
|
|
- .stream()
|
|
|
- .filter(e -> regionId.equals(e.getServiceRegionId()))
|
|
|
- .collect(Collectors.toList());
|
|
|
+ List<TBServiceRegionDetail> detailList = tbServiceRegionDetailList.stream()
|
|
|
+ .filter(e -> regionId.equals(e.getServiceRegionId())).collect(Collectors.toList());
|
|
|
if (CollectionUtils.isNotEmpty(detailList)) {
|
|
|
int orderCount = 0;
|
|
|
StringBuilder regionInfo = new StringBuilder();
|
|
@@ -93,8 +103,7 @@ public class TBServiceRegionServiceImpl extends ServiceImpl<TBServiceRegionMappe
|
|
|
String regionInfoCell = detailProvince + detailCity;
|
|
|
|
|
|
List<CrmServiceResult> crmList = crmServiceResultList.stream()
|
|
|
- .filter(e -> unitId.equals(e.getServiceUnitId())
|
|
|
- && detailProvince.equals(e.getProvince())
|
|
|
+ .filter(e -> unitId.equals(e.getServiceUnitId()) && detailProvince.equals(e.getProvince())
|
|
|
&& detailCity.equals(e.getCity()))
|
|
|
.collect(Collectors.toList());
|
|
|
int count = crmList.size();
|
|
@@ -144,10 +153,8 @@ public class TBServiceRegionServiceImpl extends ServiceImpl<TBServiceRegionMappe
|
|
|
throw ExceptionResultEnum.ERROR.exception("服务单元不存在");
|
|
|
}
|
|
|
|
|
|
- List<TBServiceRegion> regionUnCheckList = this.list(new QueryWrapper<TBServiceRegion>()
|
|
|
- .lambda()
|
|
|
- .eq(TBServiceRegion::getServiceId, serviceUnitId)
|
|
|
- .eq(TBServiceRegion::getRegionName, regionName));
|
|
|
+ List<TBServiceRegion> regionUnCheckList = this.list(
|
|
|
+ new QueryWrapper<TBServiceRegion>().lambda().eq(TBServiceRegion::getServiceId, serviceUnitId).eq(TBServiceRegion::getRegionName, regionName));
|
|
|
if (CollectionUtils.isNotEmpty(regionUnCheckList)) {
|
|
|
if (regionUnCheckList.size() > 1) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("大区规划信息异常: 同一个服务单元下存在相同的大区名称");
|
|
@@ -192,59 +199,38 @@ public class TBServiceRegionServiceImpl extends ServiceImpl<TBServiceRegionMappe
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// 编辑
|
|
|
- List<TBServiceRegionDetail> tbServiceRegionDetailList = tbServiceRegionDetailService
|
|
|
- .list(new QueryWrapper<TBServiceRegionDetail>()
|
|
|
- .lambda()
|
|
|
+ List<TBServiceRegionDetail> tbServiceRegionDetailList = tbServiceRegionDetailService.list(new QueryWrapper<TBServiceRegionDetail>().lambda()
|
|
|
.eq(TBServiceRegionDetail::getServiceRegionId, serviceRegionId));
|
|
|
|
|
|
// 将要删除的服务区域规划
|
|
|
List<Long> willDeleteRegionDetailIdList = tbServiceRegionDetailList.stream().filter(e -> {
|
|
|
- String key = e.getProvince() + sign + e.getCity();
|
|
|
- return !areaStrList.contains(key);
|
|
|
- }).map(TBServiceRegionDetail::getId)
|
|
|
- .distinct()
|
|
|
- .collect(Collectors.toList());
|
|
|
-
|
|
|
- // TODO: 2024/5/29 服务区域更换的操作
|
|
|
+ String key = e.getProvince() + sign + e.getCity();
|
|
|
+ return !areaStrList.contains(key);
|
|
|
+ }).map(TBServiceRegionDetail::getId).distinct().collect(Collectors.toList());
|
|
|
|
|
|
// 清空之前派单绑定的资源信息
|
|
|
if (CollectionUtils.isNotEmpty(willDeleteRegionDetailIdList)) {
|
|
|
- List<TBCrm> willDisposeCrmList = tbCrmService.list(new QueryWrapper<TBCrm>().lambda().in(TBCrm::getRegionDetailId, willDeleteRegionDetailIdList));
|
|
|
+ List<TBCrm> willDisposeCrmList = tbCrmService.list(
|
|
|
+ new QueryWrapper<TBCrm>().lambda().in(TBCrm::getRegionDetailId, willDeleteRegionDetailIdList));
|
|
|
|
|
|
for (TBCrm tbCrm : willDisposeCrmList) {
|
|
|
// 修改大区判断2 - 修改大区区域
|
|
|
if (!CrmStatusEnum.UN_PUBLISH.equals(tbCrm.getStatus())) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("该大区规划中存在已经发布或已完结的派单[" + tbCrm.getCrmNo() + "(" + tbCrm.getName() + ")" + "]不能修改区域");
|
|
|
- }
|
|
|
- // 之前派单有划定在服务单元 -> 解绑派单所有资源信息
|
|
|
- List<TBUserArchivesAllocation> dbAllocationList = tbUserArchivesAllocationService.list(new QueryWrapper<TBUserArchivesAllocation>().lambda()
|
|
|
- .eq(TBUserArchivesAllocation::getCrmNo, tbCrm.getCrmNo())
|
|
|
- .eq(TBUserArchivesAllocation::getServiceId, tbCrm.getServiceId()));
|
|
|
-
|
|
|
- if (CollectionUtils.isNotEmpty(dbAllocationList)) {
|
|
|
- // 释放工程师资源
|
|
|
- List<Long> archivesIdList = dbAllocationList.stream().map(TBUserArchivesAllocation::getArchivesId).distinct().collect(Collectors.toList());
|
|
|
- if (CollectionUtils.isNotEmpty(archivesIdList)) {
|
|
|
- UpdateWrapper<TBUserArchives> archivesUpdateWrapper = new UpdateWrapper<>();
|
|
|
- archivesUpdateWrapper.lambda()
|
|
|
- .in(TBUserArchives::getId, archivesIdList)
|
|
|
- .set(TBUserArchives::getStatus, UserArchivesStatusEnum.FREE);
|
|
|
- tbUserArchivesService.update(archivesUpdateWrapper);
|
|
|
- }
|
|
|
- // 删除之前的派单分配详情
|
|
|
- tbUserArchivesAllocationService.removeByIds(dbAllocationList.stream().map(TBUserArchivesAllocation::getId).distinct().collect(Collectors.toList()));
|
|
|
+ throw ExceptionResultEnum.ERROR.exception(
|
|
|
+ "该大区规划中存在已经发布或已完结的派单[" + tbCrm.getCrmNo() + "(" + tbCrm.getName() + ")" + "]不能修改区域");
|
|
|
}
|
|
|
+ // 删除旧的分配
|
|
|
+ tbUserArchivesAllocationService.remove(new QueryWrapper<TBUserArchivesAllocation>().lambda().eq(TBUserArchivesAllocation::getCrmNo, tbCrm.getCrmNo()));
|
|
|
+ // 删除派单详情
|
|
|
+ tbCrmDetailService.remove(
|
|
|
+ new QueryWrapper<TBCrmDetail>().lambda().eq(TBCrmDetail::getCrmNo, tbCrm.getCrmNo()));
|
|
|
}
|
|
|
|
|
|
UpdateWrapper<TBCrm> crmUpdateWrapper = new UpdateWrapper<>();
|
|
|
- crmUpdateWrapper.lambda()
|
|
|
- .in(TBCrm::getRegionDetailId, willDeleteRegionDetailIdList)
|
|
|
- .set(TBCrm::getRegionCoordinatorId, null)
|
|
|
- .set(TBCrm::getRegionId, null)
|
|
|
- .set(TBCrm::getRegionDetailId, null)
|
|
|
- .set(TBCrm::getLeadId, null);
|
|
|
+ crmUpdateWrapper.lambda().in(TBCrm::getRegionDetailId, willDeleteRegionDetailIdList)
|
|
|
+ .set(TBCrm::getServiceId, null).set(TBCrm::getRegionCoordinatorId, null)
|
|
|
+ .set(TBCrm::getRegionId, null).set(TBCrm::getRegionDetailId, null).set(TBCrm::getLeadId, null);
|
|
|
tbCrmService.update(crmUpdateWrapper);
|
|
|
}
|
|
|
tbServiceRegion.setId(serviceRegionId);
|
|
@@ -252,20 +238,17 @@ public class TBServiceRegionServiceImpl extends ServiceImpl<TBServiceRegionMappe
|
|
|
}
|
|
|
|
|
|
// 同一个服务单元
|
|
|
- List<Long> regionIdList = this.list(new QueryWrapper<TBServiceRegion>()
|
|
|
- .lambda()
|
|
|
- .eq(TBServiceRegion::getServiceId, serviceUnitId))
|
|
|
- .stream()
|
|
|
- .map(BaseEntity::getId)
|
|
|
- .collect(Collectors.toList());
|
|
|
+ List<Long> regionIdList = this.list(
|
|
|
+ new QueryWrapper<TBServiceRegion>().lambda().eq(TBServiceRegion::getServiceId, serviceUnitId)).stream()
|
|
|
+ .map(BaseEntity::getId).collect(Collectors.toList());
|
|
|
regionIdList.remove(serviceRegionId);
|
|
|
if (CollectionUtils.isNotEmpty(regionIdList)) {
|
|
|
- List<TBServiceRegionDetail> detailList = tbServiceRegionDetailService.list(new QueryWrapper<TBServiceRegionDetail>()
|
|
|
- .lambda()
|
|
|
- .in(TBServiceRegionDetail::getServiceRegionId, regionIdList));
|
|
|
+ List<TBServiceRegionDetail> detailList = tbServiceRegionDetailService.list(
|
|
|
+ new QueryWrapper<TBServiceRegionDetail>().lambda().in(TBServiceRegionDetail::getServiceRegionId, regionIdList));
|
|
|
for (AreaDto areaDto : areaDtoList) {
|
|
|
if (detailList.stream().anyMatch(e -> e.getCity().equals(areaDto.getCity()) && e.getProvince().equals(areaDto.getProvince()))) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception(String.format("服务单元[%s]已经存在[%s]省,[%s]市的区域规划", tbServiceUnit.getName(), areaDto.getProvince(), areaDto.getCity()));
|
|
|
+ throw ExceptionResultEnum.ERROR.exception(
|
|
|
+ String.format("服务单元[%s]已经存在[%s]省,[%s]市的区域规划", tbServiceUnit.getName(), areaDto.getProvince(), areaDto.getCity()));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -287,49 +270,43 @@ public class TBServiceRegionServiceImpl extends ServiceImpl<TBServiceRegionMappe
|
|
|
}
|
|
|
|
|
|
// 删除派单规划详情
|
|
|
- List<Long> willDeleteRegionDetailIdList = tbServiceRegionDetailService.list(new QueryWrapper<TBServiceRegionDetail>()
|
|
|
- .lambda()
|
|
|
- .eq(TBServiceRegionDetail::getServiceRegionId, tbServiceRegion.getId()))
|
|
|
- .stream()
|
|
|
- .map(TBServiceRegionDetail::getId)
|
|
|
- .distinct()
|
|
|
- .collect(Collectors.toList());
|
|
|
+ List<Long> willDeleteRegionDetailIdList = tbServiceRegionDetailService.list(
|
|
|
+ new QueryWrapper<TBServiceRegionDetail>().lambda().eq(TBServiceRegionDetail::getServiceRegionId, tbServiceRegion.getId())).stream()
|
|
|
+ .map(TBServiceRegionDetail::getId).distinct().collect(Collectors.toList());
|
|
|
|
|
|
// 清空之前派单绑定的资源信息
|
|
|
if (CollectionUtils.isNotEmpty(willDeleteRegionDetailIdList)) {
|
|
|
- List<TBCrm> willDisposeCrmList = tbCrmService.list(new QueryWrapper<TBCrm>().lambda().in(TBCrm::getRegionDetailId, willDeleteRegionDetailIdList));
|
|
|
+ List<TBCrm> willDisposeCrmList = tbCrmService.list(
|
|
|
+ new QueryWrapper<TBCrm>().lambda().in(TBCrm::getRegionDetailId, willDeleteRegionDetailIdList));
|
|
|
|
|
|
for (TBCrm tbCrm : willDisposeCrmList) {
|
|
|
if (!CrmStatusEnum.UN_PUBLISH.equals(tbCrm.getStatus())) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("该大区规划中存在已经发布的派单[" + tbCrm.getCrmNo() + "(" + tbCrm.getName() + ")" + "]不能修改区域");
|
|
|
+ throw ExceptionResultEnum.ERROR.exception(
|
|
|
+ "该大区规划中存在已经发布的派单[" + tbCrm.getCrmNo() + "(" + tbCrm.getName() + ")" + "]不能修改区域");
|
|
|
}
|
|
|
// 之前派单有划定在服务单元 -> 解绑派单所有资源信息
|
|
|
List<TBUserArchivesAllocation> dbAllocationList = tbUserArchivesAllocationService.list(new QueryWrapper<TBUserArchivesAllocation>().lambda()
|
|
|
- .eq(TBUserArchivesAllocation::getCrmNo, tbCrm.getCrmNo())
|
|
|
- .eq(TBUserArchivesAllocation::getServiceId, tbCrm.getServiceId()));
|
|
|
+ .eq(TBUserArchivesAllocation::getCrmNo, tbCrm.getCrmNo()).eq(TBUserArchivesAllocation::getServiceId, tbCrm.getServiceId()));
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(dbAllocationList)) {
|
|
|
// 释放工程师资源
|
|
|
List<Long> archivesIdList = dbAllocationList.stream().map(TBUserArchivesAllocation::getArchivesId).distinct().collect(Collectors.toList());
|
|
|
if (CollectionUtils.isNotEmpty(archivesIdList)) {
|
|
|
UpdateWrapper<TBUserArchives> archivesUpdateWrapper = new UpdateWrapper<>();
|
|
|
- archivesUpdateWrapper.lambda()
|
|
|
- .in(TBUserArchives::getId, archivesIdList)
|
|
|
+ archivesUpdateWrapper.lambda().in(TBUserArchives::getId, archivesIdList)
|
|
|
.set(TBUserArchives::getStatus, UserArchivesStatusEnum.FREE);
|
|
|
tbUserArchivesService.update(archivesUpdateWrapper);
|
|
|
}
|
|
|
// 删除之前的派单分配详情
|
|
|
- tbUserArchivesAllocationService.removeByIds(dbAllocationList.stream().map(TBUserArchivesAllocation::getId).distinct().collect(Collectors.toList()));
|
|
|
+ tbUserArchivesAllocationService.removeByIds(
|
|
|
+ dbAllocationList.stream().map(TBUserArchivesAllocation::getId).distinct().collect(Collectors.toList()));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
UpdateWrapper<TBCrm> crmUpdateWrapper = new UpdateWrapper<>();
|
|
|
- crmUpdateWrapper.lambda()
|
|
|
- .in(TBCrm::getRegionDetailId, willDeleteRegionDetailIdList)
|
|
|
- .set(TBCrm::getRegionCoordinatorId, null)
|
|
|
- .set(TBCrm::getRegionId, null)
|
|
|
- .set(TBCrm::getRegionDetailId, null)
|
|
|
- .set(TBCrm::getLeadId, null);
|
|
|
+ crmUpdateWrapper.lambda().in(TBCrm::getRegionDetailId, willDeleteRegionDetailIdList)
|
|
|
+ .set(TBCrm::getRegionCoordinatorId, null).set(TBCrm::getRegionId, null)
|
|
|
+ .set(TBCrm::getRegionDetailId, null).set(TBCrm::getLeadId, null);
|
|
|
tbCrmService.update(crmUpdateWrapper);
|
|
|
}
|
|
|
|
|
@@ -342,13 +319,8 @@ public class TBServiceRegionServiceImpl extends ServiceImpl<TBServiceRegionMappe
|
|
|
@Override
|
|
|
public List<SysUserBriefResult> findCanChooseLeader(Long serviceUnitId) {
|
|
|
List<SysUserBriefResult> regionLeaderList = sysUserService.findUserListByRoleType(RoleTypeEnum.REGION_MANAGER);
|
|
|
- List<Long> cantChooseLeader = this.list(new QueryWrapper<TBServiceRegion>()
|
|
|
- .lambda()
|
|
|
- .eq(TBServiceRegion::getServiceId, serviceUnitId)
|
|
|
- .eq(TBServiceRegion::getEnable, true))
|
|
|
- .stream()
|
|
|
- .map(TBServiceRegion::getLeadId)
|
|
|
- .distinct()
|
|
|
+ List<Long> cantChooseLeader = this.list(
|
|
|
+ new QueryWrapper<TBServiceRegion>().lambda().eq(TBServiceRegion::getServiceId, serviceUnitId).eq(TBServiceRegion::getEnable, true)).stream().map(TBServiceRegion::getLeadId).distinct()
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
return regionLeaderList.stream().filter(e -> !cantChooseLeader.contains(e.getId())).collect(Collectors.toList());
|