|
@@ -12,7 +12,6 @@ import com.hz.employmentsite.vo.statistics.jobUser.RegionJobUserCount;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.time.LocalDate;
|
|
|
import java.util.*;
|
|
|
|
|
|
@Service("StatisticsService")
|
|
@@ -90,13 +89,20 @@ public class StatisticsServiceImpl implements StatisticsService {
|
|
|
*/
|
|
|
@Override
|
|
|
public Map<String, List<RegionSystemDataCount>> findMonthSystemDataCount(String dateStr, String regionCode, String institutionID, String siteID) {
|
|
|
+ String[] dateStrSplit = dateStr.split("-");
|
|
|
+
|
|
|
// 各区县的驿站工作人员统计数量
|
|
|
List<RegionSystemDataCount> regionSiteUserCount = statisticsCQuery.findRegionSiteUserCount(regionCode, institutionID, siteID);
|
|
|
+ // 指定年份的企业统计数量
|
|
|
+ List<RegionSystemDataCount> monthCompanyCount = statisticsCQuery.findMonthCompanyCount(dateStrSplit[0], dateStrSplit[1], regionCode, institutionID, siteID);
|
|
|
+ // 指定年份的岗位统计数量
|
|
|
+ List<RegionSystemDataCount> monthPostCount = statisticsCQuery.findMonthPostCount(dateStrSplit[0], dateStrSplit[1], regionCode, institutionID, siteID);
|
|
|
+ // 指定年份的求职人员统计数量
|
|
|
+ List<RegionSystemDataCount> monthJobUserCount = statisticsCQuery.findMonthJobUserCount(dateStrSplit[0], dateStrSplit[1], regionCode, institutionID, siteID);
|
|
|
|
|
|
- // 解析日期,获取每周的开始结束时间
|
|
|
- List<Map<String, LocalDate>> weekDate = dateUtils.getWeekDateByMonth(dateStr);
|
|
|
+ // 获取当年的1-1日距离当前dateStr的月份过去了几周
|
|
|
+ Integer weeksPassed = dateUtils.getWeeksPassed(dateStr);
|
|
|
|
|
|
- Map<String, List<RegionSystemDataCount>> result = new LinkedHashMap<>();
|
|
|
// 汇总数据
|
|
|
List<RegionSystemDataCount> sumData = new ArrayList<>();
|
|
|
// 创建一个 map 来存储 regionCode 和 siteUserCount 的对应关系
|
|
@@ -107,45 +113,61 @@ public class StatisticsServiceImpl implements StatisticsService {
|
|
|
RegionSystemDataCount summaryData = new RegionSystemDataCount(item.getRegionCode(), item.getRegionName(), item.getSiteUserCount(), 0, 0, 0);
|
|
|
sumData.add(summaryData);
|
|
|
}
|
|
|
- // 按每周的日期进行系统使用数据查询
|
|
|
- for (int i = 0; i < weekDate.size(); i++) {
|
|
|
- // 获取当前周的开始日期和结束日期
|
|
|
- LocalDate startDate = weekDate.get(i).get("startDate");
|
|
|
- LocalDate endDate = weekDate.get(i).get("endDate");
|
|
|
|
|
|
- // 查询当前周的系统使用数据
|
|
|
- List<RegionSystemDataCount> contData = statisticsCQuery.findWeekSystemDataCount(startDate, endDate, regionCode, institutionID, siteID);
|
|
|
+ // 最终数据
|
|
|
+ Map<String, List<RegionSystemDataCount>> result = new LinkedHashMap<>();
|
|
|
|
|
|
+ for (int i = 1; i <= 5; i++) {
|
|
|
+ // 初始化第i周的数据集合
|
|
|
+ List<RegionSystemDataCount> iWeekList = new ArrayList<>();
|
|
|
// 创建合计数据
|
|
|
RegionSystemDataCount summaryData = new RegionSystemDataCount("100", "合计", 0, 0, 0, 0);
|
|
|
+ // 计算周数应该是几
|
|
|
+ int week = weeksPassed + i;
|
|
|
|
|
|
- // 填充驿站工作人员统计数量
|
|
|
- for (RegionSystemDataCount dataCount : contData) {
|
|
|
- String dataRegionCode = dataCount.getRegionCode();
|
|
|
- if (siteUserCountMap.containsKey(dataRegionCode)) {
|
|
|
- dataCount.setSiteUserCount(siteUserCountMap.get(dataRegionCode));
|
|
|
+ // 开始循环
|
|
|
+ for (RegionSystemDataCount sd : sumData) {
|
|
|
+ if (stringUtils.IsNullOrEmpty(sd.getRegionCode())){
|
|
|
+ continue;
|
|
|
}
|
|
|
- // 合计数据累加
|
|
|
- summaryData.setSiteUserCount(summaryData.getSiteUserCount() + dataCount.getSiteUserCount());
|
|
|
- summaryData.setCompanyCount(summaryData.getCompanyCount() + dataCount.getCompanyCount());
|
|
|
- summaryData.setPostCount(summaryData.getPostCount() + dataCount.getPostCount());
|
|
|
- summaryData.setJobUserCount(summaryData.getJobUserCount() + dataCount.getJobUserCount());
|
|
|
-
|
|
|
+ // 获取到企业,岗位,求职人员的统计数据
|
|
|
+ int companyCount = monthCompanyCount.stream()
|
|
|
+ .filter(item -> (!stringUtils.IsNullOrEmpty(item.getRegionCode()) && item.getRegionCode().equals(sd.getRegionCode()) && item.getWeek() != null && item.getWeek() == week))
|
|
|
+ .findFirst()
|
|
|
+ .orElse(new RegionSystemDataCount())
|
|
|
+ .getCompanyCount();
|
|
|
+ int postCount = monthPostCount.stream()
|
|
|
+ .filter(item -> (!stringUtils.IsNullOrEmpty(item.getRegionCode()) && item.getRegionCode().equals(sd.getRegionCode()) && item.getWeek() != null && item.getWeek() == week))
|
|
|
+ .findFirst()
|
|
|
+ .orElse(new RegionSystemDataCount())
|
|
|
+ .getPostCount();
|
|
|
+ int jobUserCount = monthJobUserCount.stream()
|
|
|
+ .filter(item -> (!stringUtils.IsNullOrEmpty(item.getRegionCode()) && item.getRegionCode().equals(sd.getRegionCode()) && item.getWeek() != null && item.getWeek() == week))
|
|
|
+ .findFirst()
|
|
|
+ .orElse(new RegionSystemDataCount())
|
|
|
+ .getJobUserCount();
|
|
|
+ // 当周合计数据计算
|
|
|
+ summaryData.setSiteUserCount(summaryData.getSiteUserCount() + sd.getSiteUserCount());
|
|
|
+ summaryData.setCompanyCount(summaryData.getCompanyCount() + companyCount);
|
|
|
+ summaryData.setPostCount(summaryData.getPostCount() + postCount);
|
|
|
+ summaryData.setJobUserCount(summaryData.getJobUserCount() + jobUserCount);
|
|
|
// 将各个区县的数据累加到汇总
|
|
|
for (RegionSystemDataCount sumDatum : sumData) {
|
|
|
- if (sumDatum.getRegionCode().equals(dataCount.getRegionCode())) {
|
|
|
- sumDatum.setSiteUserCount(dataCount.getSiteUserCount());
|
|
|
- sumDatum.setCompanyCount(sumDatum.getCompanyCount() + dataCount.getCompanyCount());
|
|
|
- sumDatum.setPostCount(sumDatum.getPostCount() + dataCount.getPostCount());
|
|
|
- sumDatum.setJobUserCount(sumDatum.getJobUserCount() + dataCount.getJobUserCount());
|
|
|
+ if (sumDatum.getRegionCode().equals(sd.getRegionCode())) {
|
|
|
+ sumDatum.setSiteUserCount(sd.getSiteUserCount());
|
|
|
+ sumDatum.setCompanyCount(sumDatum.getCompanyCount() + companyCount);
|
|
|
+ sumDatum.setPostCount(sumDatum.getPostCount() + postCount);
|
|
|
+ sumDatum.setJobUserCount(sumDatum.getJobUserCount() + jobUserCount);
|
|
|
}
|
|
|
}
|
|
|
+ // 添加区县的数据
|
|
|
+ iWeekList.add(new RegionSystemDataCount(sd.getRegionCode(), sd.getRegionName(), sd.getSiteUserCount(), companyCount, postCount, jobUserCount));
|
|
|
}
|
|
|
- // 将汇总对象添加到结果中
|
|
|
- contData.add(summaryData);
|
|
|
+ // 添加合计数据
|
|
|
+ iWeekList.add(summaryData);
|
|
|
|
|
|
- // 保存结果
|
|
|
- result.put("第" + (i + 1) + "周", contData);
|
|
|
+ // 将数据添加的结果中
|
|
|
+ result.put("第" + i + "周", iWeekList);
|
|
|
}
|
|
|
// 计算汇总的合计
|
|
|
RegionSystemDataCount summaryData = new RegionSystemDataCount("100", "合计", 0, 0, 0, 0);
|
|
@@ -209,17 +231,17 @@ public class StatisticsServiceImpl implements StatisticsService {
|
|
|
if (!stringUtils.IsNullOrEmpty(monthData.getRegionCode())){
|
|
|
// 获取到企业,岗位,求职人员的统计数据
|
|
|
int companyCount = yearCompanyCount.stream()
|
|
|
- .filter(item -> (item.getRegionCode().equals(monthData.getRegionCode()) && item.getMonth() == finalI))
|
|
|
+ .filter(item -> (!stringUtils.IsNullOrEmpty(item.getRegionCode()) && item.getRegionCode().equals(monthData.getRegionCode()) && item.getMonth() != null && item.getMonth() == finalI))
|
|
|
.findFirst()
|
|
|
.orElse(new RegionSystemDataCount())
|
|
|
.getCompanyCount();
|
|
|
int postCount = yearPostCount.stream()
|
|
|
- .filter(item -> (item.getRegionCode().equals(monthData.getRegionCode()) && item.getMonth() == finalI))
|
|
|
+ .filter(item -> (!stringUtils.IsNullOrEmpty(item.getRegionCode()) && item.getRegionCode().equals(monthData.getRegionCode()) && item.getMonth() != null && item.getMonth() == finalI))
|
|
|
.findFirst()
|
|
|
.orElse(new RegionSystemDataCount())
|
|
|
.getPostCount();
|
|
|
int jobUserCount = yearJobUserCount.stream()
|
|
|
- .filter(item -> (item.getRegionCode().equals(monthData.getRegionCode()) && item.getMonth() == finalI))
|
|
|
+ .filter(item -> (!stringUtils.IsNullOrEmpty(item.getRegionCode()) && item.getRegionCode().equals(monthData.getRegionCode()) && item.getMonth() != null && item.getMonth() == finalI))
|
|
|
.findFirst()
|
|
|
.orElse(new RegionSystemDataCount())
|
|
|
.getJobUserCount();
|
|
@@ -240,8 +262,7 @@ public class StatisticsServiceImpl implements StatisticsService {
|
|
|
}
|
|
|
}
|
|
|
// 添加区县的数据
|
|
|
- iMonthList.add(new RegionSystemDataCount(monthData.getRegionCode(), monthData.getRegionName(), monthData.getSiteUserCount(), monthData.getSiteUserCount(), companyCount, postCount, jobUserCount));
|
|
|
-
|
|
|
+ iMonthList.add(new RegionSystemDataCount(monthData.getRegionCode(), monthData.getRegionName(), monthData.getSiteUserCount(), companyCount, postCount, jobUserCount));
|
|
|
}
|
|
|
});
|
|
|
// 添加合计数据
|