|
@@ -19,6 +19,7 @@ import com.qmth.sop.common.contant.SystemConstant;
|
|
|
import com.qmth.sop.common.enums.ExceptionResultEnum;
|
|
|
import com.qmth.sop.common.enums.RoleTypeEnum;
|
|
|
import com.qmth.sop.common.enums.ServiceStatusEnum;
|
|
|
+import com.qmth.sop.common.enums.UserArchivesStatusEnum;
|
|
|
import com.qmth.sop.common.util.ServletUtil;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -50,6 +51,10 @@ public class TBServiceRegionServiceImpl extends ServiceImpl<TBServiceRegionMappe
|
|
|
private TBCrmService tbCrmService;
|
|
|
@Resource
|
|
|
private SysUserRoleService sysUserRoleService;
|
|
|
+ @Resource
|
|
|
+ private TBUserArchivesAllocationService tbUserArchivesAllocationService;
|
|
|
+ @Resource
|
|
|
+ private TBUserArchivesService tbUserArchivesService;
|
|
|
|
|
|
@Override
|
|
|
public IPage<ServiceRegionResult> findServiceRegionPage(Long serviceUnitId, String regionName, Long leadId, String city, Integer pageNumber, Integer pageSize) {
|
|
@@ -125,12 +130,17 @@ public class TBServiceRegionServiceImpl extends ServiceImpl<TBServiceRegionMappe
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public Long editServiceRegion(ServiceRegionParam serviceRegionParam) {
|
|
|
- // TODO: 2023/11/16 范围更改的时候删除调配数据
|
|
|
+ final String sign = "-";
|
|
|
+
|
|
|
Long serviceRegionId = serviceRegionParam.getServiceRegionId();
|
|
|
Long serviceUnitId = serviceRegionParam.getServiceUnitId();
|
|
|
String regionName = serviceRegionParam.getRegionName();
|
|
|
Long leadId = serviceRegionParam.getLeadId();
|
|
|
List<AreaDto> areaDtoList = serviceRegionParam.getAreaDtoList();
|
|
|
+ List<String> areaStrList = areaDtoList.stream().flatMap(e -> {
|
|
|
+ String areaStr = e.getProvince() + sign + e.getCity();
|
|
|
+ return Stream.of(areaStr);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
|
|
TBService tbServiceUnit = tbServiceService.getById(serviceUnitId);
|
|
|
if (Objects.isNull(tbServiceUnit)) {
|
|
@@ -173,25 +183,55 @@ public class TBServiceRegionServiceImpl extends ServiceImpl<TBServiceRegionMappe
|
|
|
serviceRegionId = tbServiceRegion.getId();
|
|
|
} else {
|
|
|
// 编辑
|
|
|
- TBServiceRegion db = this.getById(serviceRegionId);
|
|
|
List<TBServiceRegionDetail> tbServiceRegionDetailList = tbServiceRegionDetailService
|
|
|
.list(new QueryWrapper<TBServiceRegionDetail>()
|
|
|
.lambda()
|
|
|
- .eq(TBServiceRegionDetail::getServiceRegionId,serviceRegionId));
|
|
|
+ .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());
|
|
|
|
|
|
|
|
|
- Long dbLeadId = db.getLeadId();
|
|
|
- Long dbServiceUnitId = db.getServiceId();
|
|
|
- tbServiceRegion.setId(serviceRegionId);
|
|
|
+ // 清空之前派单绑定的资源信息
|
|
|
+ if (CollectionUtils.isNotEmpty(willDeleteRegionDetailIdList)) {
|
|
|
+ List<TBCrm> willDisposeCrmList = tbCrmService.list(new QueryWrapper<TBCrm>().lambda().in(TBCrm::getRegionDetailId, willDeleteRegionDetailIdList));
|
|
|
|
|
|
- // 清空之前派单绑定的大区经理
|
|
|
- UpdateWrapper<TBCrm> crmUpdateWrapper = new UpdateWrapper<>();
|
|
|
- crmUpdateWrapper.lambda()
|
|
|
- .eq(TBCrm::getServiceId, dbServiceUnitId)
|
|
|
- .eq(TBCrm::getLeadId, dbLeadId)
|
|
|
- .set(TBCrm::getLeadId, null);
|
|
|
- tbCrmService.update(crmUpdateWrapper);
|
|
|
+ for (TBCrm tbCrm : willDisposeCrmList) {
|
|
|
+ // 之前派单有划定在服务单元 -> 解绑派单所有资源信息
|
|
|
+ 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()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ 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);
|
|
|
+ tbCrmService.update(crmUpdateWrapper);
|
|
|
+ }
|
|
|
+ tbServiceRegion.setId(serviceRegionId);
|
|
|
this.updateById(tbServiceRegion);
|
|
|
}
|
|
|
|
|
@@ -232,7 +272,7 @@ public class TBServiceRegionServiceImpl extends ServiceImpl<TBServiceRegionMappe
|
|
|
// 同时清除派单和大区经理的关系
|
|
|
Long serviceId = tbServiceRegion.getServiceId();
|
|
|
TBService tbService = tbServiceService.getById(serviceId);
|
|
|
- if (ServiceStatusEnum.FINISH.equals(tbService.getStatus())){
|
|
|
+ if (ServiceStatusEnum.FINISH.equals(tbService.getStatus())) {
|
|
|
throw ExceptionResultEnum.ERROR.exception(ServiceStatusEnum.FINISH.getTitle() + "的服务单元不能作废");
|
|
|
}
|
|
|
|