|
|
@@ -3815,24 +3815,24 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
LocalDate date = entry1.getKey();
|
|
|
List<Report> dateReport = entry1.getValue();
|
|
|
|
|
|
- //获取项目名称,填写工作内容是否有项目名称
|
|
|
- boolean findProjectName = false;
|
|
|
+ //获取项目编号,填写工作内容是否有项目编号
|
|
|
+ boolean findProjectCode = false;
|
|
|
for (Report report : dateReport) {
|
|
|
String content = report.getContent();
|
|
|
Project project = projectList.stream().filter(pro->pro.getId().equals(report.getProjectId())).findFirst().get();
|
|
|
- String projectName = project.getProjectName();
|
|
|
- if (projectName.length() > 3) {
|
|
|
+ String projectCode = project.getProjectCode();
|
|
|
+ if (projectCode.length() > 3) {
|
|
|
//只要前三个字
|
|
|
- projectName = projectName.substring(0, 3);
|
|
|
+ projectCode = projectCode.substring(0, 3);
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(content)) {
|
|
|
- if (content.contains(projectName)) {
|
|
|
- findProjectName = true;
|
|
|
+ if (content.contains(projectCode)) {
|
|
|
+ findProjectCode = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if (!findProjectName) {
|
|
|
+ if (!findProjectCode) {
|
|
|
boolean timeMisMatch = false;
|
|
|
//获取合计上班工时数
|
|
|
double sum = dateReport.stream().mapToDouble(Report::getWorkingTime).sum();
|
|
|
@@ -15954,6 +15954,93 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
return msg;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public HttpRespMsg getTop10ProjectReport(Integer companyId, String ymonth) {
|
|
|
+ HttpRespMsg msg = new HttpRespMsg();
|
|
|
+ List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id, project_code, project_name").eq("company_id", companyId));
|
|
|
+ List<Report> list = reportMapper.selectList(new QueryWrapper<Report>().select("sum(working_time) as working_time, sum(overtime_hours) as overtime_hours, project_id").eq("state", 1).eq("company_id", companyId).eq("date_format(create_date, '%Y-%m')", ymonth).groupBy("project_id").orderByDesc("sum(working_time)").last("limit 10"));
|
|
|
+ list.forEach(report->{
|
|
|
+ Project proj = projectList.stream().filter(p->p.getId().equals(report.getProjectId())).findFirst().get();
|
|
|
+ report.setProjectName(proj.getProjectName());
|
|
|
+ report.setContent(proj.getProjectCode());
|
|
|
+ });
|
|
|
+ List<HashMap> resultList = new ArrayList<>();
|
|
|
+ list.forEach(report->{
|
|
|
+ HashMap<String, Object> map = new HashMap<>();
|
|
|
+ map.put("projectCode", report.getContent());
|
|
|
+ map.put("projectName", report.getProjectName());
|
|
|
+ map.put("workingTime", report.getWorkingTime());
|
|
|
+ map.put("overtimeHours", report.getOvertimeHours());
|
|
|
+ resultList.add(map);
|
|
|
+ });
|
|
|
+ msg.data = resultList;
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpRespMsg getTop3ProjectReportGroupByDept(Integer companyId, String ymonth) {
|
|
|
+ HttpRespMsg msg = new HttpRespMsg();
|
|
|
+ List<Report> list = reportMapper.selectList(new QueryWrapper<Report>().select("project_id").eq("company_id", companyId).eq("state", 1).eq("date_format(create_date, '%Y-%m')", ymonth).groupBy("project_id").orderByDesc("sum(working_time)").last("limit 3"));
|
|
|
+ List<Integer> pids = list.stream().map(Report::getProjectId).collect(Collectors.toList());
|
|
|
+ if (!pids.isEmpty()) {
|
|
|
+ List<Report> deptReportList = reportMapper.selectList(new QueryWrapper<Report>().select("dept_id, sum(working_time) as working_time, sum(overtime_hours) as overtime_hours").eq("company_id", companyId).eq("state", 1).eq("date_format(create_date, '%Y-%m')", ymonth).groupBy("dept_id").in("project_id", pids));
|
|
|
+ List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().select("department_id, department_name").eq("company_id", companyId));
|
|
|
+ List<HashMap> resultList = new ArrayList<>();
|
|
|
+ deptReportList.forEach(report->{
|
|
|
+ HashMap<String, Object> map = new HashMap<>();
|
|
|
+ Department curDept = departmentList.stream().filter(dept->dept.getDepartmentId().equals(report.getDeptId())).findFirst().get();
|
|
|
+ map.put("departmentName", curDept.getDepartmentName());
|
|
|
+ map.put("workingTime", report.getWorkingTime());
|
|
|
+ map.put("overtimeHours", report.getOvertimeHours());
|
|
|
+ resultList.add(map);
|
|
|
+ });
|
|
|
+ msg.data = resultList;
|
|
|
+ }
|
|
|
+
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpRespMsg getProjectReportGroupByDept(Integer companyId, String ymonth) {
|
|
|
+ HttpRespMsg msg = new HttpRespMsg();
|
|
|
+ List<Report> deptReportList = reportMapper.selectList(new QueryWrapper<Report>().select("dept_id, sum(working_time) as working_time,count(distinct creator_id) as project_id, sum(overtime_hours) as overtime_hours").eq("company_id", companyId).eq("state", 1).eq("date_format(create_date, '%Y-%m')", ymonth).groupBy("dept_id"));
|
|
|
+ List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().select("department_id, department_name").eq("company_id", companyId));
|
|
|
+ List<HashMap> resultList = new ArrayList<>();
|
|
|
+ deptReportList.forEach(report->{
|
|
|
+ HashMap<String, Object> map = new HashMap<>();
|
|
|
+ Department curDept = departmentList.stream().filter(dept->dept.getDepartmentId().equals(report.getDeptId())).findFirst().get();
|
|
|
+ map.put("departmentName", curDept.getDepartmentName());
|
|
|
+ map.put("workingTime", report.getWorkingTime());
|
|
|
+ map.put("overtimeHours", report.getOvertimeHours());
|
|
|
+ int membCount = report.getProjectId();
|
|
|
+ //计算人均工时和加班工时
|
|
|
+ double avgWorkingTime = report.getWorkingTime() / membCount;
|
|
|
+ double avgOvertimeHours = report.getOvertimeHours() / membCount;
|
|
|
+ map.put("avgWorkingTime", avgWorkingTime);
|
|
|
+ map.put("avgOvertimeHours", avgOvertimeHours);
|
|
|
+ resultList.add(map);
|
|
|
+ });
|
|
|
+ msg.data = resultList;
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpRespMsg getDeptProjectCount(Integer companyId, String ymonth) {
|
|
|
+ HttpRespMsg msg = new HttpRespMsg();
|
|
|
+ List<Report> deptReportList = reportMapper.selectList(new QueryWrapper<Report>().select("dept_id, count(distinct project_id) as project_id").eq("company_id", companyId).eq("state", 1).eq("date_format(create_date, '%Y-%m')", ymonth).groupBy("dept_id"));
|
|
|
+ List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().select("department_id, department_name").eq("company_id", companyId));
|
|
|
+ List<HashMap> resultList = new ArrayList<>();
|
|
|
+ deptReportList.forEach(report->{
|
|
|
+ HashMap<String, Object> map = new HashMap<>();
|
|
|
+ Department curDept = departmentList.stream().filter(dept->dept.getDepartmentId().equals(report.getDeptId())).findFirst().get();
|
|
|
+ map.put("departmentName", curDept.getDepartmentName());
|
|
|
+ map.put("projectCount", report.getProjectId());
|
|
|
+ resultList.add(map);
|
|
|
+ });
|
|
|
+ msg.data = resultList;
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
public String getWeek(DayOfWeek dayOfWeek){
|
|
|
//获取中文形式的星期几
|
|
|
String dayOfWeekChinese = "";
|