提交 f0ca44ad authored 作者: wangmenglong's avatar wangmenglong

增加统计

上级 2b6b69dd
...@@ -97,4 +97,22 @@ public class Person extends NameObj { ...@@ -97,4 +97,22 @@ public class Person extends NameObj {
**/ **/
@TableField("header_url") @TableField("header_url")
private String headerUrl; private String headerUrl;
/**
* 省
**/
@TableField("province")
private String province;
/**
* 城市
**/
@TableField("city")
private String city;
/**
* 区
**/
@TableField("region")
private String region;
} }
package com.jxjy.system.controller;
import base.controller.BaseController;
import base.result.BaseResult;
import com.jxjy.system.service.BiService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* @author wangmenglong
* @description: 统计管理
* @date 2023/12/11 11:35
*/
@RestController
@RequestMapping("/bi")
public class BiController extends BaseController {
@Resource
BiService biService;
/**
* @description: 左上角行政区员工统计
**/
@GetMapping("/biCity")
public BaseResult biCity(){
return BaseResult.success(biService.biCity());
}
/**
* @description: 中间地图的人员籍贯统计
**/
@GetMapping("/biPersonProvince")
public BaseResult biPersonProvince(){
return BaseResult.success(biService.biPersonProvince());
}
/**
* @description: 中间地图的企业籍贯统计
**/
@GetMapping("/biOrgProvince")
public BaseResult biOrgProvince(){
return BaseResult.success(biService.biOrgProvince());
}
/**
* @description: 右边的达成率
**/
@GetMapping("/biRecruit")
public BaseResult biRecruit(){
return BaseResult.success(biService.biRecruit());
}
/**
* @description: 入职统计
**/
@GetMapping("/biRecruitEntry")
public BaseResult biRecruitEntry(){
return BaseResult.success(biService.biRecruitEntry());
}
/**
* @description: 报名统计
**/
@GetMapping("/biRecruitReport")
public BaseResult biRecruitReport(){
return BaseResult.success(biService.biRecruitReport());
}
/**
* @description: 报名统计按照当前月份
**/
@GetMapping("/biRecruitLineByMonth")
public BaseResult biRecruitLineByMonth(){
return BaseResult.success(biService.biRecruitLineByMonth());
}
/**
* @description: 报名统计按照当前年份
**/
@GetMapping("/biRecruitLineByYear")
public BaseResult biRecruitLineByYear(){
return BaseResult.success(biService.biRecruitLineByYear());
}
}
...@@ -3,10 +3,20 @@ package com.jxjy.system.mapper; ...@@ -3,10 +3,20 @@ package com.jxjy.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import data.system.Org; import data.system.Org;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
/** /**
* @Author: wml * @Author: wml
* @Date 2025/5/9 10:21 * @Date 2025/5/9 10:21
*/ */
public interface OrgMapper extends BaseMapper<Org> { public interface OrgMapper extends BaseMapper<Org> {
@Select("<script>" +
"SELECT count(1) AS amount,r.province as province FROM tb_org AS r WHERE r.del = 0 GROUP BY r.province " +
"</script>")
List<Map<String, Object>> biOrgAmount();
} }
...@@ -3,10 +3,20 @@ package com.jxjy.system.mapper; ...@@ -3,10 +3,20 @@ package com.jxjy.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import data.system.Person; import data.system.Person;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
/** /**
* @Author: wml * @Author: wml
* @Date 2025/5/9 10:21 * @Date 2025/5/9 10:21
*/ */
public interface PersonMapper extends BaseMapper<Person> { public interface PersonMapper extends BaseMapper<Person> {
@Select("<script>" +
"SELECT count( 1 ) AS amount,r.province as province FROM tb_person AS r WHERE r.del = 0 GROUP BY r.province " +
"</script>")
List<Map<String, Object>> biPersonAmount();
} }
...@@ -3,10 +3,80 @@ package com.jxjy.system.mapper; ...@@ -3,10 +3,80 @@ package com.jxjy.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import data.system.SignRecord; import data.system.SignRecord;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
/** /**
* @Author: wml * @Author: wml
* @Date 2025/5/9 10:21 * @Date 2025/5/9 10:21
*/ */
public interface SignRecordMapper extends BaseMapper<SignRecord> { public interface SignRecordMapper extends BaseMapper<SignRecord> {
@Select("<script>" +
"SELECT count( 1 ) AS amount,r.city as city " +
"FROM tb_recruit AS r " +
"WHERE r.del = 0 " +
"AND r.id IN ( SELECT sr.recruit_id FROM tb_sign_record AS sr WHERE sr.del = 0 AND sr.state = \"ON_BOARDING\" ) " +
"GROUP BY r.city"+
"</script>")
List<Map<String, Object>> biCity();
@Select("<script>" +
"SELECT r.NAME as recruitName , r.times as amount" +
",(select COUNT(1) FROM tb_sign_record as sr WHERE sr.recruit_id = r.id AND sr.del = 0 AND sr.state = \"ON_BOARDING\") as entryAmount " +
//",(select COUNT(1) FROM tb_sign_record as sr WHERE sr.recruit_id = r.id AND sr.del = 0 AND sr.state != \"ON_BOARDING\") as reportAmount " +
"FROM tb_recruit AS r WHERE r.del = 0 AND `status` = \"up\" " +
"</script>")
List<Map<String, Object>> biRecruit();
@Select("<script>" +
"SELECT r.name AS recruit_name, " +
"DATE_FORMAT(STR_TO_DATE(sr.update_time, '%Y-%m-%d %H:%i:%s'), '%Y-%m-%d') AS entry_date, COUNT(*) AS entry_count " +
"FROM tb_sign_record sr INNER JOIN tb_recruit r ON sr.recruit_id = r.id WHERE sr.state = 'ON_BOARDING' " +
"GROUP BY recruit_name, entry_date ORDER BY entry_date ASC, recruit_name ASC;" +
"</script>")
List<Map<String, Object>> biRecruitEntry();
@Select("<script>" +
"SELECT r.name AS recruit_name, " +
"DATE_FORMAT(STR_TO_DATE(sr.create_time, '%Y-%m-%d %H:%i:%s'), '%Y-%m-%d') AS report_date, COUNT(*) AS report_count " +
"FROM tb_sign_record sr INNER JOIN tb_recruit r ON sr.recruit_id = r.id WHERE sr.state != 'ON_BOARDING' " +
"GROUP BY recruit_name, report_date ORDER BY report_date ASC, recruit_name ASC;" +
"</script>")
List<Map<String, Object>> biRecruitReport();
@Select("<script>" +
"SELECT LEFT(sr.update_time, 10) AS day, COUNT(*) AS amount " +
"FROM tb_sign_record sr WHERE sr.state = 'ON_BOARDING' AND sr.update_time IS NOT NULL " +
"AND sr.update_time LIKE CONCAT(DATE_FORMAT(NOW(), '%Y-%m'), '%') " +
"GROUP BY day ORDER BY day ASC;" +
"</script>")
List<Map<String, Object>> biEntryByMonth();
@Select("<script>" +
"SELECT LEFT(sr.create_time, 10) AS day, COUNT(*) AS amount " +
"FROM tb_sign_record sr WHERE sr.create_time IS NOT NULL " +
"AND sr.create_time LIKE CONCAT(DATE_FORMAT(NOW(), '%Y-%m'), '%') " +
"GROUP BY day ORDER BY day ASC;" +
"</script>")
List<Map<String, Object>> biReportByMonth();
@Select("<script>" +
"SELECT LEFT(sr.update_time, 7) AS day, COUNT(*) AS amount " +
"FROM tb_sign_record sr WHERE sr.state = 'ON_BOARDING' AND sr.update_time IS NOT NULL " +
"AND sr.update_time LIKE CONCAT(DATE_FORMAT(NOW(), '%Y'), '%') " +
"GROUP BY day ORDER BY day ASC;" +
"</script>")
List<Map<String, Object>> biEntryByYear();
@Select("<script>" +
"SELECT LEFT(sr.create_time, 7) AS day, COUNT(*) AS amount " +
"FROM tb_sign_record sr WHERE sr.create_time IS NOT NULL " +
"AND sr.create_time LIKE CONCAT(DATE_FORMAT(NOW(), '%Y'), '%') " +
"GROUP BY day ORDER BY day ASC;" +
"</script>")
List<Map<String, Object>> biReportByYear();
} }
package com.jxjy.system.service;
import java.util.List;
import java.util.Map;
/**
*
* @return: 企业管理
* @Author: wml
* @Date 2025/5/9 10:20
*/
public interface BiService {
List<Map<String, Object>> biCity();
List<Map<String, Object>> biPersonProvince();
List<Map<String, Object>> biOrgProvince();
List<Map<String, Object>> biRecruit();
List<Map<String, Object>> biRecruitEntry();
List<Map<String, Object>> biRecruitReport();
List<Map<String, Object>> biRecruitLineByMonth();
List<Map<String, Object>> biRecruitLineByYear();
}
...@@ -16,6 +16,8 @@ public interface OrgService { ...@@ -16,6 +16,8 @@ public interface OrgService {
List<Org> list(int pageNum, int pageSize, Org org); List<Org> list(int pageNum, int pageSize, Org org);
List<Org> listAllByProvince(String province);
boolean create(Org org); boolean create(Org org);
boolean update(Org org); boolean update(Org org);
......
package com.jxjy.system.service.impl;
import com.jxjy.system.mapper.OrgMapper;
import com.jxjy.system.mapper.PersonMapper;
import com.jxjy.system.mapper.SignRecordMapper;
import com.jxjy.system.service.BiService;
import com.jxjy.system.service.OrgService;
import data.system.Org;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
* @return: 统计管理管理
* @Author: wml
* @Date 2025/5/9 10:22
*/
@Service
@Transactional
public class BiServiceImpl implements BiService {
@Resource
SignRecordMapper signRecordMapper;
@Resource
PersonMapper personMapper;
@Resource
OrgMapper orgMapper;
@Resource
OrgService orgService;
@Override
public List<Map<String, Object>> biCity() {
return signRecordMapper.biCity();
}
@Override
public List<Map<String, Object>> biPersonProvince() {
return personMapper.biPersonAmount();
}
@Override
public List<Map<String, Object>> biOrgProvince() {
List<Map<String, Object>> list =orgMapper.biOrgAmount();
for (Map<String, Object> map : list) {
String province = map.get("province").toString();
List<Org> orgList = orgService.listAllByProvince(province);
map.put("orgList", orgList.stream().map(Org::getName).collect(Collectors.toList()));
}
return list;
}
@Override
public List<Map<String, Object>> biRecruit() {
return signRecordMapper.biRecruit();
}
@Override
public List<Map<String, Object>> biRecruitEntry() {
return signRecordMapper.biRecruitEntry();
}
@Override
public List<Map<String, Object>> biRecruitReport() {
return signRecordMapper.biRecruitReport();
}
@Override
public List<Map<String, Object>> biRecruitLineByMonth() {
List<Map<String, Object>> biReportByMonthList = signRecordMapper.biReportByMonth();
List<Map<String, Object>> biEntryByMonthList = signRecordMapper.biEntryByMonth();
int daysInCurrentMonth = LocalDate.now().lengthOfMonth();
//循环一下月份,输出一个列表
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 1; i <= daysInCurrentMonth; i++) {
Map<String, Object> map = new HashMap<>();
map.put("reportAmount", "0");
map.put("entryAmount", "0");
//获取当前年月字符串,按照yyyy-MM表示
String currentYear = LocalDate.now().getYear()+"";
String currentMonth = LocalDate.now().getMonthValue()+"";
if(currentMonth.length()==1){
currentMonth = "0"+currentMonth;
}
if(i<=9){
map.put("day", currentYear+"-"+currentMonth+"-0"+i);
}else {
map.put("day", currentYear+"-"+currentMonth+"-"+i);
}
//循环biReportByMonthList
for (Map<String, Object> biReportByMonth : biReportByMonthList) {
if (biReportByMonth.get("day").toString().equals(map.get("day"))) {
map.put("reportAmount", biReportByMonth.get("amount"));
}
}
//循环biReportByMonthList
for (Map<String, Object> biEntryByMonth : biEntryByMonthList) {
if (biEntryByMonth.get("day").toString().equals(map.get("day"))) {
map.put("entryAmount", biEntryByMonth.get("amount"));
}
}
list.add(map);
}
return list;
}
@Override
public List<Map<String, Object>> biRecruitLineByYear() {
int currentYear = LocalDate.now().getYear();
List<Map<String, Object>> biReportByMonthList = signRecordMapper.biReportByYear();
List<Map<String, Object>> biEntryByMonthList = signRecordMapper.biEntryByYear();
//循环一下当年的月份,输出一个列表
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 1; i <= 12; i++) {
Map<String, Object> map = new HashMap<>();
map.put("reportAmount", "0");
map.put("entryAmount", "0");
if(i<=9){
map.put("day", currentYear+"-0"+i);
}else {
map.put("day", currentYear+"-"+i);
}
//循环biReportByMonthList
for (Map<String, Object> biReportByMonth : biReportByMonthList) {
if (biReportByMonth.get("day").toString().equals(map.get("day"))) {
map.put("reportAmount", biReportByMonth.get("amount"));
}
}
//循环biReportByMonthList
for (Map<String, Object> biEntryByMonth : biEntryByMonthList) {
if (biEntryByMonth.get("day").toString().equals(map.get("day"))) {
map.put("entryAmount", biEntryByMonth.get("amount"));
}
}
list.add(map);
}
return list;
}
}
...@@ -57,6 +57,25 @@ public class OrgServiceImpl extends ServiceImpl<OrgMapper, Org> implements OrgSe ...@@ -57,6 +57,25 @@ public class OrgServiceImpl extends ServiceImpl<OrgMapper, Org> implements OrgSe
return orgList; return orgList;
} }
/**
* @description: 根据省获取企业
* @author: wangmenglong
* @date; 2023/12/11 16:46
* @param: [pageNum, pageSize]
* @return: java.util.List<data.org.Org>
**/
@Override
public List<Org> listAllByProvince(String province) {
//创建查询条件
LambdaQueryWrapper<Org> qw = new LambdaQueryWrapper<>();
qw.like(StringUtils.isNotBlank(province),Org::getProvince,province)
.eq(Org::getDel,false)
.orderByDesc(Org::getCreateTime);
List<Org> orgList = super.list(qw);
//返回查询结果
return orgList;
}
/** /**
* @description: 新增企业 * @description: 新增企业
......
...@@ -94,7 +94,8 @@ public class SignRecordServiceImpl extends ServiceImpl<SignRecordMapper, SignRec ...@@ -94,7 +94,8 @@ public class SignRecordServiceImpl extends ServiceImpl<SignRecordMapper, SignRec
LambdaUpdateWrapper<SignRecord> qw = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<SignRecord> qw = new LambdaUpdateWrapper<>();
qw.eq(SignRecord::getDel,false) qw.eq(SignRecord::getDel,false)
.eq(SignRecord::getId, recordId) .eq(SignRecord::getId, recordId)
.set(SignRecord::getState, state); .set(SignRecord::getState, state)
.set(SignRecord::getUpdateTime, DateUtil.now());
return super.update(qw); return super.update(qw);
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论