/**
* @Author: mahongfei
* @description: 求职人婚姻状况比例(饼状图)
*/
@Override
public Result statisticsMarriage() {
List operations = new ArrayList<>();
operations.add(Aggregation.group(“marriage”).count().as(“count”));
Aggregation aggregationCount = Aggregation.newAggregation(operations);
AggregationResults results = mongoTemplate.aggregate(aggregationCount, “cv”, Map.class);
Map<String, Object> totalMap = new HashMap<>();
List<Map<String, Object>> list = results.getMappedResults();
List<Map<String, Object>> sexlist = new ArrayList<>();
List nameList = new ArrayList<>();
Integer other = 0;
for (Map<String, Object> map : list) {
if (map.get("_id").equals(1)) {
Map<String, Object> sexMap = new HashMap<>();
sexMap.put(“name”, “已婚”);
nameList.add(“已婚”);
sexMap.put(“value”, map.get(“count”));
sexlist.add(sexMap);
} else {
other = other + (Integer) map.get(“count”);
}
}
if (other > 0) {
Map<String, Object> sexMap = new HashMap<>();
sexMap.put("name", "未婚");
nameList.add("未婚");
sexMap.put("value", other);
sexlist.add(sexMap);
}
totalMap.put("name", nameList);
totalMap.put("value", sexlist);
return Result.newSuccess().withData(totalMap);
}
/**
* @Author: mahongfei
* @description: 当前薪资范围比例 (需要先指定薪资范围档次,饼状图)
*/
@Override
public Result statisticsSalary() {
// 分区间统计薪资
Long total0 = mongoTemplate.count(new Query(Criteria.where("currentSalary").is(0)), CV.class);
Long total6 = mongoTemplate.count(new Query(Criteria.where("currentSalary").gt(Constants.SALARY_RATE * 5)), CV.class);
//薪资名称添加到list
List<Map<String, Object>> list = new ArrayList<>();
List<String> nameList = new ArrayList<>();
nameList.add("未知");
//薪资添加到map
for (int i = 0; i < 5; i++) {
Map<String, Object> totalMap = new HashMap<>(2);
Long total = mongoTemplate.count(new Query(Criteria.where("currentSalary").gt(Constants.SALARY_RATE * i).lte(Constants.SALARY_RATE * (i + 1))), CV.class);
totalMap.put("name", Constants.SALARY_RATE * i + "-" + Constants.SALARY_RATE * (i + 1) + "万");
totalMap.put("value", total == null ? 0 : total);
nameList.add(Constants.SALARY_RATE * i + "-" + Constants.SALARY_RATE * (i + 1) + "万");
list.add(totalMap);
}
nameList.add(Constants.SALARY_RATE * 5 + "万以上");
Map<String, Object> totalMap0 = new HashMap<>(2);
Map<String, Object> totalMap6 = new HashMap<>(2);
totalMap0.put("name", "未知");
totalMap0.put("value", total0 == null ? 0 : total0);
list.add(totalMap0);
totalMap6.put("name", Constants.SALARY_RATE * 5 + "万以上");
totalMap6.put("value", total6 == null ? 0 : total6);
list.add(totalMap6);
// 名称与薪资区间添加到map
Map<String, Object> map = new HashMap<>();
map.put("name", nameList);
map.put("value", list);
return Result.newSuccess().withData(map);
}
* /**
* @Author: mahongfei
* @description: 描述: 最近一个月每天新增数量
*/
@Override
public Result cvAdd() {
Map map = new HashMap();
List<String> listTime = new ArrayList<>();
List<Long> value = new ArrayList<>();
for (int i = 30; i > -1; i--) {
Date now = new Date();
Calendar cal1 = Calendar.getInstance();
cal1.setTime(now);
cal1.set(Calendar.HOUR_OF_DAY, 0);
cal1.set(Calendar.MINUTE, 0);
cal1.set(Calendar.SECOND, 0);
cal1.set(Calendar.MILLISECOND, 0);
now = cal1.getTime();
Date startDate = DateUtils.addDays(now, -i);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String time = sdf.format(startDate);
listTime.add(time);
int num;
if (i != 0) {
num = -(i - 1);
} else {
num = +(i + 1);
}
Long val = mongoTemplate.count(new Query(
new Criteria()
.andOperator(
Criteria.where("createTime").gt(startDate),
Criteria.where("createTime").lt(DateUtils.addDays(now, num))
)), CV.class);
value.add(val);
}
for (int i = 0; i < listTime.size(); i++) {
listTime.set(i, listTime.get(i).substring(5));
}
map.put("name", listTime);
map.put("value", value);
return Result.newSuccess().withData(map);
}