|
@@ -160,7 +160,7 @@ public class UserReportServiceImpl implements UserReportService {
|
|
|
SysUser level2=null;
|
|
SysUser level2=null;
|
|
|
SysUser level3=null;
|
|
SysUser level3=null;
|
|
|
if(level1!=null){
|
|
if(level1!=null){
|
|
|
- level2 = getBottomByUserId(sysUser.getId());
|
|
|
|
|
|
|
+ level2 = getBottomByUserId(sysUser.getId());
|
|
|
}
|
|
}
|
|
|
if(level2!=null){
|
|
if(level2!=null){
|
|
|
level3 = getBottomByUserId(sysUser.getId());
|
|
level3 = getBottomByUserId(sysUser.getId());
|
|
@@ -250,40 +250,33 @@ public class UserReportServiceImpl implements UserReportService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void agentPerson(List<QxFrontlineAgentDto> sysUserList,QxFrontlineAgentVo qxFrontlineAgentVo) {
|
|
private void agentPerson(List<QxFrontlineAgentDto> sysUserList,QxFrontlineAgentVo qxFrontlineAgentVo) {
|
|
|
- HashMap<String, Integer> humanResources = new HashMap<>();
|
|
|
|
|
- HashMap<String, List<String>> humanResourcesIdList = new HashMap<>();
|
|
|
|
|
-// 关系表
|
|
|
|
|
- List<EsmUserReferrerDTO> employeeIncreaseReportDtos = esmUserReferrerMapper.getbyUserNextLevel(null);
|
|
|
|
|
- Map<String, EsmUserReferrerDTO> collect = employeeIncreaseReportDtos.stream().collect(Collectors.toMap(EsmUserReferrerDTO::getId, Function.identity()));
|
|
|
|
|
- Set<String> visited = new HashSet<>();
|
|
|
|
|
- for (EsmUserReferrerDTO item : employeeIncreaseReportDtos) {
|
|
|
|
|
- Integer count = this.nextLevelUser(item.getId(), collect, visited);
|
|
|
|
|
- humanResources.put(item.getId(), count);
|
|
|
|
|
- List<String> ids = new ArrayList<>();
|
|
|
|
|
- humanResourcesIdList.put(item.getId(), this.nextLevelUserList(item.getId(), collect, visited, ids));
|
|
|
|
|
- }
|
|
|
|
|
for (QxFrontlineAgentDto userItem : sysUserList) {
|
|
for (QxFrontlineAgentDto userItem : sysUserList) {
|
|
|
String userId = userItem.getUserId();
|
|
String userId = userItem.getUserId();
|
|
|
-// 总人力
|
|
|
|
|
- if (humanResources.containsKey(userId)) {
|
|
|
|
|
- if (ObjectUtils.isNotEmpty(humanResources.get(userId))) {
|
|
|
|
|
- userItem.setTotalManpower(humanResources.get(userId).toString());
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- List<String> ids = new ArrayList<>();
|
|
|
|
|
- //出单人力 + 总保费 +单均保费
|
|
|
|
|
- if (humanResourcesIdList.containsKey(userId)) {
|
|
|
|
|
- //出单人力
|
|
|
|
|
- ids = humanResourcesIdList.get(userId);
|
|
|
|
|
|
|
+ List<SysUserTeamDto> users = esmUserReferrerMapper.getUserIdsByUserId(userId);
|
|
|
|
|
+ //总人力
|
|
|
|
|
+ long authenticationStatusCount=0;
|
|
|
|
|
+ long authenticationStatusNoCount=0;
|
|
|
|
|
+ List<String> userIds =new ArrayList<String>();
|
|
|
|
|
+ //已认证 1
|
|
|
|
|
+ //未认证 2
|
|
|
|
|
+ if(users!=null && users.size()>0){
|
|
|
|
|
+ userIds = users.stream().map(SysUserTeamDto::getId).collect(Collectors.toList());
|
|
|
|
|
+ // authenticationStatusCount = users.stream().filter(user -> user.getStatus() ==1).count();
|
|
|
|
|
+ // authenticationStatusNoCount = users.stream().filter(user -> user.getStatus() ==2).count();
|
|
|
}
|
|
}
|
|
|
- ids.add(userId);
|
|
|
|
|
|
|
+ userIds.add(userId);
|
|
|
|
|
+ userItem.setIds(userIds);
|
|
|
|
|
+ //出单人力
|
|
|
QxFrontlineAgentDto qxFrontlineAgentDto = new QxFrontlineAgentDto();
|
|
QxFrontlineAgentDto qxFrontlineAgentDto = new QxFrontlineAgentDto();
|
|
|
- qxFrontlineAgentDto.setIds(ids);
|
|
|
|
|
|
|
+ qxFrontlineAgentDto.setIds(userIds);
|
|
|
qxFrontlineAgentDto.setCreatetimeStart(qxFrontlineAgentVo.getCreatetimeStart());
|
|
qxFrontlineAgentDto.setCreatetimeStart(qxFrontlineAgentVo.getCreatetimeStart());
|
|
|
qxFrontlineAgentDto.setCreatetimeEnd(qxFrontlineAgentVo.getCreatetimeEnd());
|
|
qxFrontlineAgentDto.setCreatetimeEnd(qxFrontlineAgentVo.getCreatetimeEnd());
|
|
|
QxFrontlineAgentDto orderManpower = insAreaCompanyService.getOrderManpowerNew(qxFrontlineAgentDto);
|
|
QxFrontlineAgentDto orderManpower = insAreaCompanyService.getOrderManpowerNew(qxFrontlineAgentDto);
|
|
|
|
|
+ //出单人力
|
|
|
userItem.setOrderManpower(orderManpower.getOrderManpower());
|
|
userItem.setOrderManpower(orderManpower.getOrderManpower());
|
|
|
|
|
+ //总保费
|
|
|
userItem.setTotalPremium(orderManpower.getTotalPremium());
|
|
userItem.setTotalPremium(orderManpower.getTotalPremium());
|
|
|
|
|
+ //单均保费
|
|
|
userItem.setAveragePremium(orderManpower.getAveragePremium());
|
|
userItem.setAveragePremium(orderManpower.getAveragePremium());
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -327,7 +320,7 @@ public class UserReportServiceImpl implements UserReportService {
|
|
|
@Override
|
|
@Override
|
|
|
public List<QxFrontlineAgentDto> queryQxFrontlineAgentRanking(QxFrontlineAgentVo qxFrontlineAgentVo) {
|
|
public List<QxFrontlineAgentDto> queryQxFrontlineAgentRanking(QxFrontlineAgentVo qxFrontlineAgentVo) {
|
|
|
if(StringUtils.isNotEmpty(qxFrontlineAgentVo.getProvinceId())){
|
|
if(StringUtils.isNotEmpty(qxFrontlineAgentVo.getProvinceId())){
|
|
|
- String provinceId = this.removeTrailingZeros(qxFrontlineAgentVo.getProvinceId());
|
|
|
|
|
|
|
+ String provinceId = this.removeTrailingZeros(qxFrontlineAgentVo.getProvinceId());
|
|
|
qxFrontlineAgentVo.setProvinceId(provinceId);
|
|
qxFrontlineAgentVo.setProvinceId(provinceId);
|
|
|
|
|
|
|
|
}
|
|
}
|
|
@@ -339,63 +332,73 @@ public class UserReportServiceImpl implements UserReportService {
|
|
|
String countyId = this.removeTrailingZeros(qxFrontlineAgentVo.getCountyId());
|
|
String countyId = this.removeTrailingZeros(qxFrontlineAgentVo.getCountyId());
|
|
|
qxFrontlineAgentVo.setCountyId(countyId);
|
|
qxFrontlineAgentVo.setCountyId(countyId);
|
|
|
}
|
|
}
|
|
|
|
|
+ //按照条件重新查询数据
|
|
|
|
|
+ List<QxFrontlineAgentDto> list = sysUserMapper.queryQxFrontlineAgentList(qxFrontlineAgentVo);
|
|
|
|
|
+ List<QxFrontlineAgentDto> listNew =new ArrayList<>();
|
|
|
|
|
+ String orderSort = qxFrontlineAgentVo.getOrderSort();
|
|
|
|
|
+ int limit =10;
|
|
|
|
|
+ //暂时先取数据的前10条数据
|
|
|
|
|
+ if(list!=null && list.size()>0){
|
|
|
|
|
+ if("1".equals(orderSort)){
|
|
|
|
|
+ List<QxFrontlineAgentDto> listNews =new ArrayList<>();
|
|
|
|
|
+ for(QxFrontlineAgentDto dto : list){
|
|
|
|
|
+ //查询总人力
|
|
|
|
|
+ List<SysUserTeamDto> users = esmUserReferrerMapper.getUserIdsByUserId(dto.getUserId());
|
|
|
|
|
+ List<String> userIds =new ArrayList<String>();
|
|
|
|
|
+ if(users!=null && users.size()>0){
|
|
|
|
|
+ userIds = users.stream().map(SysUserTeamDto::getId).collect(Collectors.toList());
|
|
|
|
|
+ }
|
|
|
|
|
+ userIds.add(dto.getUserId());
|
|
|
|
|
+ dto.setIds(userIds);
|
|
|
|
|
+ dto.setTotalManpower(userIds.size()+"");
|
|
|
|
|
+ dto.setTotalManpowerNum(userIds.size());
|
|
|
|
|
+ listNews.add(dto);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- if(StringUtils.isNotEmpty(qxFrontlineAgentVo.getHouseId())){
|
|
|
|
|
- String houseId = this.removeTrailingZeros(qxFrontlineAgentVo.getHouseId());
|
|
|
|
|
- qxFrontlineAgentVo.setHouseId(houseId);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- PageVo<SettlementDocumentaryFeesSumEntity> pageVo = new PageVo<>();
|
|
|
|
|
- Page page = new Page(1, 50);
|
|
|
|
|
-
|
|
|
|
|
- pageVo.setPageNum(1);
|
|
|
|
|
- pageVo.setPageSize(50);
|
|
|
|
|
-
|
|
|
|
|
- IPage<QxFrontlineAgentDto> sysUserListPage = sysUserMapper.queryQxFrontlineAgent(page, qxFrontlineAgentVo);
|
|
|
|
|
- List<QxFrontlineAgentDto> sysUserList = sysUserListPage.getRecords();
|
|
|
|
|
-
|
|
|
|
|
- HashMap<String, Integer> humanResources = new HashMap<>();
|
|
|
|
|
- HashMap<String, List<String>> humanResourcesIdList = new HashMap<>();
|
|
|
|
|
-
|
|
|
|
|
-// 关系表
|
|
|
|
|
- List<EsmUserReferrerDTO> employeeIncreaseReportDtos = esmUserReferrerMapper.getbyUserNextLevel(null);
|
|
|
|
|
- Map<String, EsmUserReferrerDTO> collect = employeeIncreaseReportDtos.stream().collect(Collectors.toMap(EsmUserReferrerDTO::getId, Function.identity()));
|
|
|
|
|
- Set<String> visited = new HashSet<>();
|
|
|
|
|
- for (EsmUserReferrerDTO item : employeeIncreaseReportDtos) {
|
|
|
|
|
- Integer count = this.nextLevelUser(item.getId(), collect, visited);
|
|
|
|
|
- humanResources.put(item.getId(), count);
|
|
|
|
|
- List<String> ids = new ArrayList<>();
|
|
|
|
|
- humanResourcesIdList.put(item.getId(), this.nextLevelUserList(item.getId(), collect, visited, ids));
|
|
|
|
|
-
|
|
|
|
|
- }
|
|
|
|
|
- for (QxFrontlineAgentDto userItem : sysUserList) {
|
|
|
|
|
- String userId = userItem.getUserId();
|
|
|
|
|
-// 总人力
|
|
|
|
|
- if (humanResources.containsKey(userId)) {
|
|
|
|
|
- if (ObjectUtils.isNotEmpty(humanResources.get(userId))) {
|
|
|
|
|
- userItem.setTotalManpower(humanResources.get(userId).toString());
|
|
|
|
|
|
|
+ if(listNews.size()<limit){
|
|
|
|
|
+ limit = listNews.size();
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
- //出单人力 + 总保费 +单均保费
|
|
|
|
|
- if (humanResourcesIdList.containsKey(userId)) {
|
|
|
|
|
- if (!CollectionUtils.isEmpty(humanResourcesIdList.get(userId))) {
|
|
|
|
|
- //出单人力
|
|
|
|
|
- List<String> ids = humanResourcesIdList.get(userId);
|
|
|
|
|
- QxFrontlineAgentDto orderManpower = insAreaCompanyService.getOrderManpower(ids);
|
|
|
|
|
- userItem.setOrderManpower(orderManpower.getOrderManpower());
|
|
|
|
|
- userItem.setTotalPremium(orderManpower.getTotalPremium());
|
|
|
|
|
- userItem.setAveragePremium(orderManpower.getAveragePremium());
|
|
|
|
|
|
|
+ List<QxFrontlineAgentDto> limitList = listNews.stream()
|
|
|
|
|
+ .sorted(Comparator.comparing(QxFrontlineAgentDto::getTotalManpowerNum).reversed())
|
|
|
|
|
+ .limit(limit)
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+ if(limitList!=null && limitList.size()>0){
|
|
|
|
|
+ for(QxFrontlineAgentDto dto : limitList){
|
|
|
|
|
+ //查询出单人力
|
|
|
|
|
+ Double sumAmount = insAreaCompanyService.getOrderPremiumByUserIds(dto.getIds());
|
|
|
|
|
+ dto.setTotalPremium(sumAmount.toString());
|
|
|
|
|
+ listNew.add(dto);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }else{
|
|
|
|
|
+ List<QxFrontlineAgentDto> listNews =new ArrayList<>();
|
|
|
|
|
+ for(QxFrontlineAgentDto dto : list){
|
|
|
|
|
+ //查询出单人力
|
|
|
|
|
+ List<SysUserTeamDto> users = esmUserReferrerMapper.getUserIdsByUserId(dto.getUserId());
|
|
|
|
|
+ List<String> userIds =new ArrayList<String>();
|
|
|
|
|
+ if(users!=null && users.size()>0){
|
|
|
|
|
+ userIds = users.stream().map(SysUserTeamDto::getId).collect(Collectors.toList());
|
|
|
|
|
+ }
|
|
|
|
|
+ userIds.add(dto.getUserId());
|
|
|
|
|
+ dto.setIds(userIds);
|
|
|
|
|
+ dto.setTotalManpower(userIds.size()+"");
|
|
|
|
|
+ Double sumAmount = insAreaCompanyService.getOrderPremiumByUserIds(dto.getIds());
|
|
|
|
|
+ dto.setTotalPremium(sumAmount.toString());
|
|
|
|
|
+ dto.setTotalPremiumNum(sumAmount);
|
|
|
|
|
+ listNews.add(dto);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(listNews.size()<limit){
|
|
|
|
|
+ limit = listNews.size();
|
|
|
}
|
|
}
|
|
|
|
|
+ listNew = listNews.stream()
|
|
|
|
|
+ .sorted(Comparator.comparing(QxFrontlineAgentDto::getTotalPremiumNum).reversed())
|
|
|
|
|
+ .limit(limit)
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
- //排序
|
|
|
|
|
- if(StringUtils.isNotEmpty(qxFrontlineAgentVo.getOrderSort())){
|
|
|
|
|
-// 人员
|
|
|
|
|
- this.sortBy(qxFrontlineAgentVo.getOrderSort(),sysUserList);
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return sysUserList;
|
|
|
|
|
|
|
+ return listNew;
|
|
|
}
|
|
}
|
|
|
private String removeTrailingZeros(String value) {
|
|
private String removeTrailingZeros(String value) {
|
|
|
int len = value.length();
|
|
int len = value.length();
|
|
@@ -417,48 +420,48 @@ public class UserReportServiceImpl implements UserReportService {
|
|
|
|
|
|
|
|
|
|
|
|
|
private void sortBy(String orderSort,List<QxFrontlineAgentDto> sysUserList) {
|
|
private void sortBy(String orderSort,List<QxFrontlineAgentDto> sysUserList) {
|
|
|
- Collections.sort(sysUserList, new Comparator<QxFrontlineAgentDto>() {
|
|
|
|
|
- @Override
|
|
|
|
|
- public int compare(QxFrontlineAgentDto o1, QxFrontlineAgentDto o2) {
|
|
|
|
|
- // 假设name是String类型,直接使用String的compareTo方法
|
|
|
|
|
-
|
|
|
|
|
- if("1".equals(orderSort)) { // 人员
|
|
|
|
|
- String manpower1 = o1.getTotalManpower();
|
|
|
|
|
- String manpower2 = o2.getTotalManpower();
|
|
|
|
|
-
|
|
|
|
|
- // 如果两个值都为null,则认为它们相等
|
|
|
|
|
- if (manpower1 == null && manpower2 == null) {
|
|
|
|
|
- return 0;
|
|
|
|
|
- }
|
|
|
|
|
- // 如果第一个值为null,则排在第二个值之后
|
|
|
|
|
- if (manpower1 == null) {
|
|
|
|
|
- return 1;
|
|
|
|
|
- }
|
|
|
|
|
- // 如果第二个值为null,则排在第一个值之前
|
|
|
|
|
- if (manpower2 == null) {
|
|
|
|
|
- return -1;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ Collections.sort(sysUserList, new Comparator<QxFrontlineAgentDto>() {
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public int compare(QxFrontlineAgentDto o1, QxFrontlineAgentDto o2) {
|
|
|
|
|
+ // 假设name是String类型,直接使用String的compareTo方法
|
|
|
|
|
+
|
|
|
|
|
+ if("1".equals(orderSort)) { // 人员
|
|
|
|
|
+ String manpower1 = o1.getTotalManpower();
|
|
|
|
|
+ String manpower2 = o2.getTotalManpower();
|
|
|
|
|
+
|
|
|
|
|
+ // 如果两个值都为null,则认为它们相等
|
|
|
|
|
+ if (manpower1 == null && manpower2 == null) {
|
|
|
|
|
+ return 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 如果第一个值为null,则排在第二个值之后
|
|
|
|
|
+ if (manpower1 == null) {
|
|
|
|
|
+ return 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 如果第二个值为null,则排在第一个值之前
|
|
|
|
|
+ if (manpower2 == null) {
|
|
|
|
|
+ return -1;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- return o1.getTotalManpower().compareTo(o2.getTotalManpower());
|
|
|
|
|
- }else {
|
|
|
|
|
|
|
+ return o1.getTotalManpower().compareTo(o2.getTotalManpower());
|
|
|
|
|
+ }else {
|
|
|
|
|
|
|
|
- String premium1 = o1.getTotalPremium();
|
|
|
|
|
- String premium2 = o2.getTotalPremium();
|
|
|
|
|
|
|
+ String premium1 = o1.getTotalPremium();
|
|
|
|
|
+ String premium2 = o2.getTotalPremium();
|
|
|
|
|
|
|
|
- // 同样的逻辑来处理null值
|
|
|
|
|
- if (premium1 == null && premium2 == null) {
|
|
|
|
|
- return 0;
|
|
|
|
|
- }
|
|
|
|
|
- if (premium1 == null) {
|
|
|
|
|
- return 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (premium2 == null) {
|
|
|
|
|
- return -1;
|
|
|
|
|
- }
|
|
|
|
|
- return o1.getTotalPremium().compareTo(o2.getTotalPremium());
|
|
|
|
|
|
|
+ // 同样的逻辑来处理null值
|
|
|
|
|
+ if (premium1 == null && premium2 == null) {
|
|
|
|
|
+ return 0;
|
|
|
}
|
|
}
|
|
|
|
|
+ if (premium1 == null) {
|
|
|
|
|
+ return 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (premium2 == null) {
|
|
|
|
|
+ return -1;
|
|
|
|
|
+ }
|
|
|
|
|
+ return o1.getTotalPremium().compareTo(o2.getTotalPremium());
|
|
|
}
|
|
}
|
|
|
- });
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -687,7 +690,7 @@ public class UserReportServiceImpl implements UserReportService {
|
|
|
}
|
|
}
|
|
|
if(!CollectionUtils.isEmpty(strings)){
|
|
if(!CollectionUtils.isEmpty(strings)){
|
|
|
qxFrontlineAgentVo.setIds(strings);
|
|
qxFrontlineAgentVo.setIds(strings);
|
|
|
- userResultPage = sysUserMapper.getByIdsList(page, qxFrontlineAgentVo);
|
|
|
|
|
|
|
+ userResultPage = sysUserMapper.getByIdsList(page, qxFrontlineAgentVo);
|
|
|
List<QxFrontlineAgentDto> records = userResultPage.getRecords();
|
|
List<QxFrontlineAgentDto> records = userResultPage.getRecords();
|
|
|
for (QxFrontlineAgentDto userItem : records) {
|
|
for (QxFrontlineAgentDto userItem : records) {
|
|
|
TaskStatisticsDto taskStatisticsDto = insAreaCompanyMapper.NumberQuotations(userItem.getUserId());
|
|
TaskStatisticsDto taskStatisticsDto = insAreaCompanyMapper.NumberQuotations(userItem.getUserId());
|