diff --git a/src/main/java/org/springblade/modules/business/entity/Appeal.java b/src/main/java/org/springblade/modules/business/entity/Appeal.java index b668126..f59e304 100644 --- a/src/main/java/org/springblade/modules/business/entity/Appeal.java +++ b/src/main/java/org/springblade/modules/business/entity/Appeal.java @@ -85,4 +85,16 @@ public class Appeal extends BaseEntity { @TableField(exist = false) private String street; + /** + * 来访人姓名 + */ + @TableField(exist = false) + private String username; + + /** + * 用户名称 + */ + @TableField(exist = false) + private String name; + } diff --git a/src/main/java/org/springblade/modules/business/entity/AppealVisitor.java b/src/main/java/org/springblade/modules/business/entity/AppealVisitor.java index ed92b99..f54dfb5 100644 --- a/src/main/java/org/springblade/modules/business/entity/AppealVisitor.java +++ b/src/main/java/org/springblade/modules/business/entity/AppealVisitor.java @@ -71,4 +71,9 @@ public class AppealVisitor extends BaseEntity { */ private String phone; + /** + * 排序 + */ + private Integer sort; + } diff --git a/src/main/java/org/springblade/modules/business/service/ILargeScreenService.java b/src/main/java/org/springblade/modules/business/service/ILargeScreenService.java index 6982391..775e391 100644 --- a/src/main/java/org/springblade/modules/business/service/ILargeScreenService.java +++ b/src/main/java/org/springblade/modules/business/service/ILargeScreenService.java @@ -48,9 +48,7 @@ public interface ILargeScreenService { Map getImmediateCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException; -// IPage getImmediateList(String streetId, IPage page); - - Map getAppealHot(); + Map> getAppealHot(); IPage getImmediateList(String streetId, IPage page); } diff --git a/src/main/java/org/springblade/modules/business/service/impl/LargeScreenServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/LargeScreenServiceImpl.java index b3b9289..a60fd93 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/LargeScreenServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/LargeScreenServiceImpl.java @@ -18,14 +18,17 @@ package org.springblade.modules.business.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import io.swagger.models.auth.In; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import lombok.AllArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springblade.common.cache.DictBizCache; import org.springblade.modules.business.entity.Appeal; +import org.springblade.modules.business.entity.AppealVisitor; import org.springblade.modules.business.service.IAppealService; +import org.springblade.modules.business.service.IAppealVisitorService; import org.springblade.modules.business.service.ILargeScreenService; import org.springblade.modules.business.utils.LocalDateTimeUtils; +import org.springblade.modules.system.service.IUserService; import org.springframework.stereotype.Service; import java.text.DecimalFormat; @@ -49,6 +52,10 @@ public class LargeScreenServiceImpl implements ILargeScreenService { private final IAppealService appealService; + private final IAppealVisitorService appealVisitorService; + + private final IUserService userService; + @Override public Map getMediateFinish() { Map map = new HashMap<>(); @@ -310,12 +317,60 @@ public class LargeScreenServiceImpl implements ILargeScreenService { wrapper.eq(Appeal::getSkipGrant, 1); IPage iPage = appealService.page(page, wrapper); + // 给每条数据赋值来访人姓名 + List records = iPage.getRecords(); + if (CollectionUtils.isNotEmpty(records)) { + for (Appeal record : records) { + // 获取sort=1的来访人 + AppealVisitor visitor = appealVisitorService.getOne(new LambdaQueryWrapper().eq(AppealVisitor::getAppealId, record.getId()).eq(AppealVisitor::getSort, 1)); + if (visitor != null) { + record.setUsername(visitor.getUsername()); + } + } + iPage.setRecords(records); + } return iPage; } @Override - public Map getAppealHot() { - return null; + public Map> getAppealHot() { + Map> map = new HashMap(); + // 化解成功状态数组 + List state = new ArrayList<>(); + state.add(2); + state.add(3); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(Appeal::getStatus, state); + List appeals = appealService.list(wrapper); + appeals.forEach(appeal -> { + appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue()); + appeal.setName(userService.getById(appeal.getHandleDept()).getName()); + }); + + // 根据街道分组 + Map> street = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet)); + Set names = street.keySet(); + + // 街道对应的数量 + Map streetMap = new HashMap<>(); + for (String name : names) { + streetMap.put(name, street.get(name).size()); + } + map.put("street", streetMap); + + // 根据部门分组 + Map> town = appeals.stream().collect(Collectors.groupingBy(Appeal::getName)); + Set depts = town.keySet(); + + // 部门对应的数量 + Map townMap = new HashMap<>(); + for (String name : depts) { + townMap.put(name, town.get(name).size()); + } + map.put("town", townMap); + + return map; } private Map> getStartAndEndTime(Map> map, List state, Integer month) {