|
@@ -1711,13 +1711,13 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
List<Report> updateReportList = new ArrayList<>();
|
|
|
//人员所属部门负责人审核或者直属领导审核
|
|
|
boolean hasAuditAllPri = sysFunctionService.hasPriviledge(user.getRoleId(), "审核全员日报");
|
|
|
- List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, creator_id, create_date, project_id,audit_dept_managerid,department_audit_state, project_auditor_id").in("id", ids));
|
|
|
+ List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, creator_id, create_date, project_id,audit_dept_managerid,department_audit_state, project_auditor_id, is_dept_audit").in("id", ids));
|
|
|
for (Report r : reportList) {
|
|
|
//直属领导审核或者部门负责人审核
|
|
|
Report newReport = new Report();
|
|
|
newReport.setId(r.getId());
|
|
|
- if(hasAuditAllPri || ((r.getProjectAuditorId() != null && user.getId().equals(r.getProjectAuditorId()))
|
|
|
- || (r.getProjectAuditorId() == null && user.getId().equals(r.getAuditDeptManagerid())))){
|
|
|
+ if(hasAuditAllPri || ((r.getIsDeptAudit() == 0 && user.getId().equals(r.getProjectAuditorId()))
|
|
|
+ || (r.getIsDeptAudit() == 1 && user.getId().equals(r.getAuditDeptManagerid())))){
|
|
|
newReport.setState(1);
|
|
|
newReport.setDepartmentAuditState(1);
|
|
|
newReport.setProjectAuditState(1);
|
|
@@ -2781,14 +2781,14 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
List<Report> updateReportList = new ArrayList<>();
|
|
|
//人员所属部门负责人审核或者直属领导审核
|
|
|
boolean hasAuditAllPri = sysFunctionService.hasPriviledge(user.getRoleId(), "审核全员日报");
|
|
|
- List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, creator_id, create_date, project_id,audit_dept_managerid,department_audit_state, project_auditor_id").in("id", ids));
|
|
|
+ List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, creator_id, create_date, project_id,audit_dept_managerid,department_audit_state, project_auditor_id, is_dept_audit").in("id", ids));
|
|
|
allReports = reportList;
|
|
|
for (Report r : reportList) {
|
|
|
//直属领导审核或者部门负责人审核
|
|
|
Report newReport = new Report();
|
|
|
newReport.setId(r.getId());
|
|
|
- if(hasAuditAllPri || ((r.getProjectAuditorId() != null && user.getId().equals(r.getProjectAuditorId()))
|
|
|
- || (r.getProjectAuditorId() == null && user.getId().equals(r.getAuditDeptManagerid())))){
|
|
|
+ if(hasAuditAllPri || ((r.getIsDeptAudit() == 0 && user.getId().equals(r.getProjectAuditorId()))
|
|
|
+ || (r.getIsDeptAudit() == 1 && user.getId().equals(r.getAuditDeptManagerid())))){
|
|
|
r.setState(1);
|
|
|
r.setDepartmentAuditState(1);
|
|
|
r.setProjectAuditState(1);
|
|
@@ -4159,10 +4159,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
// titles.add("项目分类");
|
|
|
titles.add(MessageUtils.message("entry.serialNo"));
|
|
|
titles.add(MessageUtils.message("entry.No"));
|
|
|
- titles.add(MessageUtils.message("excel.staff"));
|
|
|
for (int i = 0; i < userCustomList.size(); i++) {
|
|
|
titles.add(userCustomList.get(i).getName());
|
|
|
}
|
|
|
+ titles.add(MessageUtils.message("excel.staff"));
|
|
|
titles.add(MessageUtils.message("entry.department"));
|
|
|
titles.add(MessageUtils.message("entry.projectId"));
|
|
|
titles.add(MessageUtils.message("entry.projectName"));
|
|
@@ -4209,7 +4209,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
titles.add(MessageUtils.message("excel.inputStage"));
|
|
|
}
|
|
|
//每个日报的审批流程记录
|
|
|
- List<ReportLogDetail> logDetails = new ArrayList<>();
|
|
|
+// List<ReportLogDetail> logDetails = new ArrayList<>();
|
|
|
if (timeType.getShowFillauditTime() == 1) {
|
|
|
// titles.add("填写时间");
|
|
|
// titles.add("项目审核人");
|
|
@@ -4219,7 +4219,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
titles.add(MessageUtils.message("excel.proReviewer"));
|
|
|
titles.add(MessageUtils.message("excel.auditTime"));
|
|
|
titles.add(MessageUtils.message("excel.auditProcess"));
|
|
|
- logDetails = reportLogDetailMapper.selectList(new QueryWrapper<ReportLogDetail>().eq("company_id", company.getId()).between("work_date", startDate, endDate));
|
|
|
+// logDetails = reportLogDetailMapper.selectList(new QueryWrapper<ReportLogDetail>().select("report_id, msg, operator_id, operate_date").eq("company_id", company.getId()).between("work_date", startDate, endDate));
|
|
|
}
|
|
|
|
|
|
//titles.add("工作事项");
|
|
@@ -4238,6 +4238,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
//新增数据行 并且装填数据
|
|
|
int rowNum = 1;
|
|
|
List<HashMap<String, Object>> allReportByDate = null;
|
|
|
+
|
|
|
+ System.out.println("开始查询"+LocalDateTime.now().toString());
|
|
|
List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全公司工时");
|
|
|
//获取部门的所有子部门
|
|
|
List<Department> departments = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",companyId));
|
|
@@ -4256,10 +4258,20 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
//检查是否是项目负责人
|
|
|
int cnt = projectMapper.selectCount(new QueryWrapper<Project>().eq("incharger_id", user.getId()));
|
|
|
if (cnt > 0) {
|
|
|
- reportsFromProjects = reportMapper.getProjectMembReportByDate(startDate, null, user.getId(), endDate, projectId,stateKey,branchDepartment);
|
|
|
+ if (timeType.getShowFillauditTime() == 1) {
|
|
|
+ reportsFromProjects = reportMapper.getProjectMembReportByDateWithReportLog(startDate, null, user.getId(), endDate, projectId,stateKey,branchDepartment);
|
|
|
+ } else{
|
|
|
+ reportsFromProjects = reportMapper.getProjectMembReportByDate(startDate, null, user.getId(), endDate, projectId,stateKey,branchDepartment);
|
|
|
+ }
|
|
|
+
|
|
|
} else {
|
|
|
//普通员工只能看自己的
|
|
|
- reportsFromProjects = reportMapper.getAllReportByDate(startDate, null, user.getId(), endDate, projectId,stateKey,branchDepartment);
|
|
|
+ if (timeType.getShowFillauditTime() == 1) {
|
|
|
+ reportsFromProjects = reportMapper.getAllReportByDateWithReportLog(startDate, null, user.getId(), endDate, projectId,stateKey,branchDepartment);
|
|
|
+ } else {
|
|
|
+ reportsFromProjects = reportMapper.getAllReportByDate(startDate, null, user.getId(), endDate, projectId,stateKey,branchDepartment);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
if (allReportByDate == null) {
|
|
|
allReportByDate = reportsFromProjects;
|
|
@@ -4279,10 +4291,20 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
// }
|
|
|
else {
|
|
|
//看公司所有人的
|
|
|
- allReportByDate = reportMapper.getAllReportByDate(startDate, user.getCompanyId(), null, endDate, projectId,stateKey,branchDepartment);
|
|
|
+ allReportByDate = null;
|
|
|
+ if (timeType.getShowFillauditTime() == 1) {
|
|
|
+ allReportByDate = reportMapper.getAllReportByDateWithReportLog(startDate, user.getCompanyId(), null, endDate, projectId,stateKey,branchDepartment);
|
|
|
+ } else {
|
|
|
+ allReportByDate = reportMapper.getAllReportByDate(startDate, user.getCompanyId(), null, endDate, projectId,stateKey,branchDepartment);
|
|
|
+ }
|
|
|
}
|
|
|
+ System.out.println("进度1"+LocalDateTime.now().toString());
|
|
|
//获取企业微信考勤数据
|
|
|
- List<UserCorpwxTime> userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", user.getCompanyId()).between("create_date", startDate, endDate));
|
|
|
+ List<UserCorpwxTime> userCorpwxTimeList = new ArrayList<>();
|
|
|
+ if(timeType.getSyncCorpwxTime()==1) {
|
|
|
+ userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", user.getCompanyId()).between("create_date", startDate, endDate));
|
|
|
+ }
|
|
|
+ System.out.println("进度2"+LocalDateTime.now().toString());
|
|
|
if (timeType.getMultiWorktime() == 1) {
|
|
|
java.text.DecimalFormat df = new java.text.DecimalFormat("#0.00");
|
|
|
//重新处理一下数据,把工作时间和工作事项移出来
|
|
@@ -4325,14 +4347,14 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
allReportByDate = dealDataList;
|
|
|
}
|
|
|
- //HSSFRow条数范围限制0..65535
|
|
|
- if (allReportByDate.size() > 60000) {
|
|
|
+ //07Excel HSSFRow条数范围限制0..1048576
|
|
|
+ if (allReportByDate.size() > 1048576) {
|
|
|
HttpRespMsg msg = new HttpRespMsg();
|
|
|
//msg.setError("数据量过大,请分时间段导出");
|
|
|
msg.setError(MessageUtils.message("data.OversizeError"));
|
|
|
return msg;
|
|
|
}
|
|
|
- DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
|
|
|
+ DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
DecimalFormat df = new DecimalFormat("#0.0");
|
|
|
int offsetSeconds = 0;
|
|
|
if (company.getIsInternational() == 1) {
|
|
@@ -4358,6 +4380,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
}
|
|
|
List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
|
|
|
+ System.out.println("进度3"+LocalDateTime.now().toString());
|
|
|
+ long t1 = System.currentTimeMillis();
|
|
|
+ DateTimeFormatter dft = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
for (Map<String, Object> map : allReportByDate) {
|
|
|
List<String> item=new ArrayList<>();
|
|
|
item.add(String.valueOf(rowNum));
|
|
@@ -4392,6 +4417,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
item.add((String) map.get("name"));
|
|
|
item.add(departmentService.getSupDepartment(dept,departments));
|
|
|
}
|
|
|
+
|
|
|
item.add((String) map.get("projectCode"));
|
|
|
item.add((String) map.get("project"));
|
|
|
item.add((String) map.get("categoryName"));
|
|
@@ -4449,13 +4475,22 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
} else {
|
|
|
item.add(sdf.format((Date)map.get("projectAuditTime")));
|
|
|
}
|
|
|
- //审核流程显示
|
|
|
- List<ReportLogDetail> detailList = logDetails.stream().filter(log -> log.getReportId().equals((Integer) map.get("id"))).collect(Collectors.toList());
|
|
|
- if (detailList.size() > 0) {
|
|
|
- StringBuilder sb = new StringBuilder();
|
|
|
- boolean isFirst = true;
|
|
|
- for (ReportLogDetail audit:detailList) {
|
|
|
- LocalDateTime operateDate = audit.getOperateDate();
|
|
|
+
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ boolean isFirst = true;
|
|
|
+ String logMsg = (String)map.get("logMsg");
|
|
|
+ if (logMsg != null) {
|
|
|
+ String[] logMsgs = logMsg.split("❤");
|
|
|
+ for (String msgItem : logMsgs) {
|
|
|
+ String[] splitItems = msgItem.split("@");
|
|
|
+ //operator_id@operate_date@msg
|
|
|
+ String operateDateStr = splitItems[1];
|
|
|
+ LocalDateTime operateDate = LocalDateTime.parse(operateDateStr, dtf);
|
|
|
+ ReportLogDetail audit = new ReportLogDetail();
|
|
|
+ audit.setOperatorId(splitItems[0]);
|
|
|
+ audit.setOperateDate(operateDate);
|
|
|
+ audit.setMsg(splitItems[2]);
|
|
|
+
|
|
|
if (company.getIsInternational() == 1) {
|
|
|
operateDate = operateDate.plusSeconds(offsetSeconds);
|
|
|
}
|
|
@@ -4488,10 +4523,90 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
sb.append(msg);
|
|
|
}
|
|
|
- item.add(sb.toString());
|
|
|
- } else {
|
|
|
- item.add("");
|
|
|
}
|
|
|
+ //审核流程显示;//stream性能较差,换成for循环
|
|
|
+// for (int m=0; m <logDetails.size(); m++) {
|
|
|
+// ReportLogDetail audit = logDetails.get(m);
|
|
|
+// //仅处理当前日报的审核流程
|
|
|
+// if (audit.getReportId().intValue() == ((Integer)map.get("id")).intValue()) {
|
|
|
+// LocalDateTime operateDate = audit.getOperateDate();
|
|
|
+// if (company.getIsInternational() == 1) {
|
|
|
+// operateDate = operateDate.plusSeconds(offsetSeconds);
|
|
|
+// }
|
|
|
+// String time = dtf.format(operateDate);
|
|
|
+// String msg= "";
|
|
|
+// if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
|
|
|
+// Optional<User> first = userList.stream().filter(ul -> ul.getId().equals(audit.getOperatorId())).findFirst();
|
|
|
+// if(first.isPresent()){
|
|
|
+// if(audit.getMsg().contains("提交了")){
|
|
|
+// int i = audit.getMsg().indexOf("提");
|
|
|
+// String substring = audit.getMsg().substring(0, i);
|
|
|
+// msg = time+" " + audit.getMsg().replaceAll(substring,"\\$userName="+first.get().getCorpwxUserid()+"\\$");
|
|
|
+// }else if(audit.getMsg().contains("审核通过了")){
|
|
|
+// int i = audit.getMsg().indexOf("审");
|
|
|
+// String substring = audit.getMsg().substring(0, i);
|
|
|
+// msg = time+" " + audit.getMsg().replaceAll(substring,"\\$userName="+first.get().getCorpwxUserid()+"\\$");
|
|
|
+// }else if(audit.getMsg().contains("驳回了")) {
|
|
|
+// int i = audit.getMsg().indexOf("驳");
|
|
|
+// String substring = audit.getMsg().substring(0, i);
|
|
|
+// msg = time+" " + audit.getMsg().replaceAll(substring,"\\$userName="+first.get().getCorpwxUserid()+"\\$");
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }else {
|
|
|
+// msg = time+" " + audit.getMsg();
|
|
|
+// }
|
|
|
+// if (!isFirst) {
|
|
|
+// sb.append("->");
|
|
|
+// } else {
|
|
|
+// isFirst = false;
|
|
|
+// }
|
|
|
+// sb.append(msg);
|
|
|
+// //去掉这条记录,减少下次循环的次数
|
|
|
+// logDetails.remove(m);
|
|
|
+// m--;//因为删除了一条记录,所以要减少一次循环
|
|
|
+// }
|
|
|
+// }
|
|
|
+ item.add(sb.toString());
|
|
|
+// List<ReportLogDetail> detailList = logDetails.parallelStream().filter(log -> log.getReportId().equals((Integer) map.get("id"))).collect(Collectors.toList());
|
|
|
+// if (detailList.size() > 0) {
|
|
|
+// for (ReportLogDetail audit:detailList) {
|
|
|
+// LocalDateTime operateDate = audit.getOperateDate();
|
|
|
+// if (company.getIsInternational() == 1) {
|
|
|
+// operateDate = operateDate.plusSeconds(offsetSeconds);
|
|
|
+// }
|
|
|
+// String time = dtf.format(operateDate);
|
|
|
+// String msg= "";
|
|
|
+// if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
|
|
|
+// Optional<User> first = userList.stream().filter(ul -> ul.getId().equals(audit.getOperatorId())).findFirst();
|
|
|
+// if(first.isPresent()){
|
|
|
+// if(audit.getMsg().contains("提交了")){
|
|
|
+// int i = audit.getMsg().indexOf("提");
|
|
|
+// String substring = audit.getMsg().substring(0, i);
|
|
|
+// msg = time+" " + audit.getMsg().replaceAll(substring,"\\$userName="+first.get().getCorpwxUserid()+"\\$");
|
|
|
+// }else if(audit.getMsg().contains("审核通过了")){
|
|
|
+// int i = audit.getMsg().indexOf("审");
|
|
|
+// String substring = audit.getMsg().substring(0, i);
|
|
|
+// msg = time+" " + audit.getMsg().replaceAll(substring,"\\$userName="+first.get().getCorpwxUserid()+"\\$");
|
|
|
+// }else if(audit.getMsg().contains("驳回了")) {
|
|
|
+// int i = audit.getMsg().indexOf("驳");
|
|
|
+// String substring = audit.getMsg().substring(0, i);
|
|
|
+// msg = time+" " + audit.getMsg().replaceAll(substring,"\\$userName="+first.get().getCorpwxUserid()+"\\$");
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }else {
|
|
|
+// msg = time+" " + audit.getMsg();
|
|
|
+// }
|
|
|
+// if (!isFirst) {
|
|
|
+// sb.append("->");
|
|
|
+// } else {
|
|
|
+// isFirst = false;
|
|
|
+// }
|
|
|
+// sb.append(msg);
|
|
|
+// }
|
|
|
+// item.add(sb.toString());
|
|
|
+// } else {
|
|
|
+// item.add("");
|
|
|
+// }
|
|
|
}
|
|
|
item.add((String) map.get("content"));
|
|
|
if(stateKey==1){
|
|
@@ -4580,10 +4695,14 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
dataList.add(item);
|
|
|
rowNum++;
|
|
|
}
|
|
|
+ System.out.println("进度4"+LocalDateTime.now().toString());
|
|
|
+ long t2 = System.currentTimeMillis();
|
|
|
+ System.out.println("计算耗时:"+(t2-t1)+", 共"+rowNum+"条数据");
|
|
|
//生成Excel文件
|
|
|
//String fileUrlSuffix = (startDate==null?"":(startDate+"至"+endDate))+"工作日报" + System.currentTimeMillis() + ".xls";
|
|
|
- String fileUrlSuffix = (startDate==null?"":(startDate+MessageUtils.message("leave.to")+endDate))+MessageUtils.message("excel.workReport") + System.currentTimeMillis() + ".xls";
|
|
|
+ String fileUrlSuffix = (startDate==null?"":(startDate+MessageUtils.message("leave.to")+endDate))+MessageUtils.message("excel.workReport") + System.currentTimeMillis();
|
|
|
httpRespMsg = excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,fileUrlSuffix,dataList,path);
|
|
|
+ System.out.println("进度5, 导出结束"+LocalDateTime.now().toString());
|
|
|
} catch (NullPointerException e) {
|
|
|
//httpRespMsg.setError("验证失败或缺少数据");
|
|
|
httpRespMsg.setError(MessageUtils.message("access.verErrorOrDataLack"));
|
|
@@ -5874,7 +5993,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public HttpRespMsg getAIReport(String date, HttpServletRequest request) {
|
|
|
+ public HttpRespMsg getAIReport(HttpServletRequest request) {
|
|
|
HttpRespMsg msg = new HttpRespMsg();
|
|
|
String userId = request.getHeader("token");
|
|
|
Integer companyId = userMapper.selectById(userId).getCompanyId();
|
|
@@ -5883,134 +6002,170 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
QueryWrapper<Report> queryWrapper = new QueryWrapper<>();
|
|
|
queryWrapper.eq("creator_id",userId).orderByDesc("id").last("limit 1");
|
|
|
Report report = reportMapper.selectOne(queryWrapper);
|
|
|
+ List<Project> allProjectList = projectMapper.selectList(new QueryWrapper<Project>()
|
|
|
+ .eq("company_id", companyId).eq("status", 1));
|
|
|
+ List<Report> reports = new ArrayList<>();
|
|
|
if (report != null) {
|
|
|
queryWrapper = new QueryWrapper<>();
|
|
|
queryWrapper.eq("creator_id", userId).eq("create_date", report.getCreateDate());
|
|
|
//获取最近填写的那一天的全部日报
|
|
|
- List<Report> reports = reportMapper.selectList(queryWrapper);
|
|
|
- List<Project> allProjectList = projectMapper.selectList(new QueryWrapper<Project>()
|
|
|
- .eq("company_id", companyId).eq("status", 1));
|
|
|
+ reports = reportMapper.selectList(queryWrapper);
|
|
|
//仅保留进行中的项目的日报
|
|
|
reports = reports.stream().filter(r->allProjectList.stream().anyMatch(p->p.getId().equals(r.getProjectId()))).collect(Collectors.toList());
|
|
|
- try {
|
|
|
- List<Integer> integerList = reports.stream().map(Report::getProjectId).collect(Collectors.toList());
|
|
|
- //开启状态的子项目
|
|
|
- List<SubProject> subProjects = subProjectMapper.selectList(new QueryWrapper<SubProject>().in("project_id", integerList).eq("status", 1));
|
|
|
- List<SubProject> subProjectList = integerList.size() > 0?subProjects:new ArrayList<>();
|
|
|
- List<ProjectAuditor> auditorList = integerList.size() > 0?projectAuditorMapper.selectList(new QueryWrapper<ProjectAuditor>().in("project_id", integerList)): new ArrayList<>();
|
|
|
- List<Profession> professions = professionMapper.selectList(new QueryWrapper<Profession>().eq("company_id", companyId));
|
|
|
- List<ReportExtraDegree> degreeList = reportExtraDegreeMapper.selectList(new QueryWrapper<ReportExtraDegree>().eq("company_id", companyId));
|
|
|
- List<TaskGroup> taskGroups = integerList.size() > 0?taskGroupMapper.selectList(new QueryWrapper<TaskGroup>().in("project_id", integerList)):new ArrayList<>();
|
|
|
- List<Stages> stagesList = integerList.size() > 0?stagesMapper.selectList(new QueryWrapper<Stages>().in("project_id", integerList)) : new ArrayList<>();
|
|
|
- //获取当前项目的子项目列表,任务分组,任务列表,项目相关维度列表
|
|
|
- reports.forEach(r->{
|
|
|
- r.setContent(null);
|
|
|
- r.setSubProjectList(subProjectList.stream().filter(s->s.getProjectId().equals(r.getProjectId())).collect(Collectors.toList()));
|
|
|
- r.setTaskList(taskMapper.recentSimpleList(r.getProjectId(), userId));
|
|
|
- //获取当前项目的工程专业进度
|
|
|
- List<ReportProfessionProgress> progressList = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().eq("report_id", r.getId()));
|
|
|
- //去掉当前项目上已经不存在的专业
|
|
|
- List<ProjectProfession> projectProfessions = projectProfessionMapper.selectList(new QueryWrapper<ProjectProfession>().eq("project_id", r.getProjectId()));
|
|
|
- progressList = progressList.stream().filter(p->projectProfessions.stream().anyMatch(pp->pp.getProfessionId().equals(p.getProfessionId()))).collect(Collectors.toList());
|
|
|
- progressList.stream().forEach(p->{
|
|
|
- p.setProfessionName(professions.stream().filter(m->m.getId().equals(p.getProfessionId())).findFirst().get().getName());
|
|
|
- });
|
|
|
- r.setProfessionProgressList(progressList);
|
|
|
- //获取任务阶段列表
|
|
|
- if (company.getPackageProject() == 1 && r.getGroupId() != null && r.getGroupId() != 0) {
|
|
|
- r.setStages(stagesList.stream().filter(s->s.getGroupId() !=null && s.getGroupId().equals(r.getGroupId())).collect(Collectors.toList()));
|
|
|
+ } else {
|
|
|
+ //没有填写过日报,获取该员工参与的项目
|
|
|
+ List<Participation> participationList = participationMapper.selectList(new QueryWrapper<Participation>().eq("user_id", userId));
|
|
|
+ List<Integer> projectIds = participationList.stream().map(Participation::getProjectId).collect(Collectors.toList());
|
|
|
+ projectIds = projectIds.stream().filter(pid->allProjectList.stream().anyMatch(p->p.getId().equals(pid))).collect(Collectors.toList());
|
|
|
+ //仅保留进行中的项目的日报
|
|
|
+ if (projectIds.size() == 0) {
|
|
|
+ //无参与的项目的话,则查找公共项目
|
|
|
+ List<Project> pubProjectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId).eq("is_public", 1).eq("status", 1));
|
|
|
+ projectIds = pubProjectList.stream().map(Project::getId).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ if (projectIds.size() > 0) {
|
|
|
+ Report recentFillReport = reportMapper.selectOne(new QueryWrapper<Report>().in("project_id", projectIds).orderByDesc("id").last("limit 1"));
|
|
|
+ Float allday = timeTypeMapper.selectById(companyId).getAllday();
|
|
|
+ if (recentFillReport != null) {
|
|
|
+ recentFillReport.setContent(null);
|
|
|
+ recentFillReport.setWorkingTime(allday.doubleValue());
|
|
|
+ reports.add(recentFillReport);
|
|
|
+ } else {
|
|
|
+ recentFillReport = new Report();
|
|
|
+ recentFillReport.setWorkingTime(allday.doubleValue());
|
|
|
+ Project recentProject = projectMapper.selectOne(new QueryWrapper<Project>().in("id", projectIds).orderByDesc("id").last("limit 1"));
|
|
|
+ if (recentProject != null) {
|
|
|
+ recentFillReport.setProjectId(recentProject.getId());
|
|
|
}
|
|
|
+ reports.add(recentFillReport);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ msg.setError("请先设置参与的项目");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ List<Integer> integerList = reports.stream().map(Report::getProjectId).collect(Collectors.toList());
|
|
|
+ //开启状态的子项目
|
|
|
+ List<SubProject> subProjects = subProjectMapper.selectList(new QueryWrapper<SubProject>().in("project_id", integerList).eq("status", 1));
|
|
|
+ List<SubProject> subProjectList = integerList.size() > 0?subProjects:new ArrayList<>();
|
|
|
+ List<ProjectAuditor> auditorList = integerList.size() > 0?projectAuditorMapper.selectList(new QueryWrapper<ProjectAuditor>().in("project_id", integerList)): new ArrayList<>();
|
|
|
+ List<Profession> professions = professionMapper.selectList(new QueryWrapper<Profession>().eq("company_id", companyId));
|
|
|
+ List<ReportExtraDegree> degreeList = reportExtraDegreeMapper.selectList(new QueryWrapper<ReportExtraDegree>().eq("company_id", companyId));
|
|
|
+ List<TaskGroup> taskGroups = integerList.size() > 0?taskGroupMapper.selectList(new QueryWrapper<TaskGroup>().in("project_id", integerList)):new ArrayList<>();
|
|
|
+ List<Stages> stagesList = integerList.size() > 0?stagesMapper.selectList(new QueryWrapper<Stages>().in("project_id", integerList)) : new ArrayList<>();
|
|
|
+ //获取当前项目的子项目列表,任务分组,任务列表,项目相关维度列表
|
|
|
+ reports.forEach(r->{
|
|
|
+ r.setContent(null);
|
|
|
+ r.setSubProjectList(subProjectList.stream().filter(s->s.getProjectId().equals(r.getProjectId())).collect(Collectors.toList()));
|
|
|
+ r.setTaskList(taskMapper.recentSimpleList(r.getProjectId(), userId));
|
|
|
+ //获取当前项目的工程专业进度
|
|
|
+ List<ReportProfessionProgress> progressList = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().eq("report_id", r.getId()));
|
|
|
+ //去掉当前项目上已经不存在的专业
|
|
|
+ List<ProjectProfession> projectProfessions = projectProfessionMapper.selectList(new QueryWrapper<ProjectProfession>().eq("project_id", r.getProjectId()));
|
|
|
+ progressList = progressList.stream().filter(p->projectProfessions.stream().anyMatch(pp->pp.getProfessionId().equals(p.getProfessionId()))).collect(Collectors.toList());
|
|
|
+ progressList.stream().forEach(p->{
|
|
|
+ p.setProfessionName(professions.stream().filter(m->m.getId().equals(p.getProfessionId())).findFirst().get().getName());
|
|
|
+ });
|
|
|
+ r.setProfessionProgressList(progressList);
|
|
|
+ //获取任务阶段列表
|
|
|
+ if (company.getPackageProject() == 1 && r.getGroupId() != null && r.getGroupId() != 0) {
|
|
|
+ r.setStages(stagesList.stream().filter(s->s.getGroupId() !=null && s.getGroupId().equals(r.getGroupId())).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
|
|
|
- //处理维度列表数据
|
|
|
- if (timeTypeMapper.selectById(companyId).getCustomDegreeActive() == 1) {
|
|
|
- Project project = allProjectList.stream().filter(p -> p.getId().equals(r.getProjectId())).findFirst().get();
|
|
|
- String associateDegrees = project.getAssociateDegrees();
|
|
|
- List<HashMap> degreeMapList = new ArrayList<>();
|
|
|
- if (associateDegrees != null) {
|
|
|
- String[] split = associateDegrees.split("\\,");
|
|
|
- for (int i=0;i<split.length; i++) {
|
|
|
- HashMap map = new HashMap();
|
|
|
- if (!StringUtils.isEmpty(split[i])) {
|
|
|
- Integer id = Integer.parseInt(split[i]);
|
|
|
- map.put("id", id);
|
|
|
- map.put("name", degreeList.stream().filter(d->d.getId().equals(id)).findFirst().get().getName());
|
|
|
- degreeMapList.add(map);
|
|
|
- }
|
|
|
+ //处理维度列表数据
|
|
|
+ if (timeTypeMapper.selectById(companyId).getCustomDegreeActive() == 1) {
|
|
|
+ Project project = allProjectList.stream().filter(p -> p.getId().equals(r.getProjectId())).findFirst().get();
|
|
|
+ String associateDegrees = project.getAssociateDegrees();
|
|
|
+ List<HashMap> degreeMapList = new ArrayList<>();
|
|
|
+ if (associateDegrees != null) {
|
|
|
+ String[] split = associateDegrees.split("\\,");
|
|
|
+ for (int i=0;i<split.length; i++) {
|
|
|
+ HashMap map = new HashMap();
|
|
|
+ if (!StringUtils.isEmpty(split[i])) {
|
|
|
+ Integer id = Integer.parseInt(split[i]);
|
|
|
+ map.put("id", id);
|
|
|
+ map.put("name", degreeList.stream().filter(d->d.getId().equals(id)).findFirst().get().getName());
|
|
|
+ degreeMapList.add(map);
|
|
|
}
|
|
|
}
|
|
|
- r.setDegreeList(degreeMapList);
|
|
|
}
|
|
|
- int reportAuditType = timeTypeMapper.selectById(companyId).getReportAuditType();
|
|
|
- //分组
|
|
|
- if (company.getPackageProject() == 1) {
|
|
|
- if (reportAuditType == 0) {
|
|
|
- r.setTaskGroups(taskGroups.stream().filter(tg->tg.getProjectId().equals(r.getProjectId())).collect(Collectors.toList()));
|
|
|
+ r.setDegreeList(degreeMapList);
|
|
|
+ }
|
|
|
+ int reportAuditType = timeTypeMapper.selectById(companyId).getReportAuditType();
|
|
|
+ //分组
|
|
|
+ if (company.getPackageProject() == 1) {
|
|
|
+ //分组负责人审核的情况,按人员所在分组来加载
|
|
|
+ if (reportAuditType == 1 || reportAuditType == 2){
|
|
|
+ List<GroupParticipator> groupParticipatorList = groupParticipatorMapper.selectList(new QueryWrapper<GroupParticipator>());
|
|
|
+ if (groupParticipatorList.size() > 0) {
|
|
|
+ List<Integer> groupIds = groupParticipatorList.stream().map(GroupParticipator::getGroupId).collect(Collectors.toList());
|
|
|
+ List<TaskGroup> findGroups = taskGroups.stream().filter(tg->groupIds.contains(tg.getId()) || userId.equals(tg.getInchargerId())).collect(Collectors.toList());
|
|
|
+ r.setTaskGroups(findGroups);
|
|
|
if (r.getGroupId() != null && r.getGroupId() != 0) {
|
|
|
Optional<TaskGroup> optinal = taskGroups.stream().filter(tg->tg.getId().equals(r.getGroupId())).findFirst();
|
|
|
if (optinal.isPresent()) {
|
|
|
r.setGroupName(optinal.get().getName());
|
|
|
}
|
|
|
}
|
|
|
- } else if (reportAuditType == 1 || reportAuditType == 2){
|
|
|
- List<GroupParticipator> groupParticipatorList = groupParticipatorMapper.selectList(new QueryWrapper<GroupParticipator>());
|
|
|
- if (groupParticipatorList.size() > 0) {
|
|
|
- List<Integer> groupIds = groupParticipatorList.stream().map(GroupParticipator::getGroupId).collect(Collectors.toList());
|
|
|
- List<TaskGroup> findGroups = taskGroups.stream().filter(tg->groupIds.contains(tg.getId()) || userId.equals(tg.getInchargerId())).collect(Collectors.toList());
|
|
|
- r.setTaskGroups(findGroups);
|
|
|
- if (r.getGroupId() != null && r.getGroupId() != 0) {
|
|
|
- Optional<TaskGroup> optinal = taskGroups.stream().filter(tg->tg.getId().equals(r.getGroupId())).findFirst();
|
|
|
- if (optinal.isPresent()) {
|
|
|
- r.setGroupName(optinal.get().getName());
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //其他情况加载全部任务分组
|
|
|
+ r.setTaskGroups(taskGroups.stream().filter(tg->tg.getProjectId().equals(r.getProjectId())).collect(Collectors.toList()));
|
|
|
+ if (r.getGroupId() != null && r.getGroupId() != 0) {
|
|
|
+ Optional<TaskGroup> optinal = taskGroups.stream().filter(tg->tg.getId().equals(r.getGroupId())).findFirst();
|
|
|
+ if (optinal.isPresent()) {
|
|
|
+ r.setGroupName(optinal.get().getName());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- //项目的审核人
|
|
|
- if (reportAuditType == 0) {
|
|
|
- r.setAuditUserList(auditorList.stream().filter(au->au.getProjectId().equals(r.getProjectId())).collect(Collectors.toList()));
|
|
|
- if (r.getProjectAuditorId() != null) {
|
|
|
- Optional<ProjectAuditor> auItem = auditorList.stream().filter(au->au.getAuditorId().equals(r.getProjectAuditorId())).findFirst();
|
|
|
- if (auItem.isPresent()) {
|
|
|
- r.setProjectAuditorName(auItem.get().getAuditorName());
|
|
|
- }
|
|
|
+ }
|
|
|
+ //项目的审核人
|
|
|
+ if (reportAuditType == 0) {
|
|
|
+ r.setAuditUserList(auditorList.stream().filter(au->au.getProjectId().equals(r.getProjectId())).collect(Collectors.toList()));
|
|
|
+ if (r.getProjectAuditorId() != null) {
|
|
|
+ Optional<ProjectAuditor> auItem = auditorList.stream().filter(au->au.getAuditorId().equals(r.getProjectAuditorId())).findFirst();
|
|
|
+ if (auItem.isPresent()) {
|
|
|
+ r.setProjectAuditorName(auItem.get().getAuditorName());
|
|
|
}
|
|
|
- } else if (reportAuditType == 1 || reportAuditType == 2) {
|
|
|
- if (r.getGroupId() != null && r.getGroupId() != 0) {
|
|
|
- //直接获取分组的负责人作为审核人
|
|
|
- Optional<TaskGroup> tgoup = taskGroups.stream().filter(tg->tg.getId().equals(r.getGroupId())).findFirst();
|
|
|
- if (tgoup.isPresent()) {
|
|
|
- TaskGroup curGroup = tgoup.get();
|
|
|
- if (curGroup.getInchargerId() != null) {
|
|
|
- User user = userMapper.selectById(curGroup.getInchargerId());
|
|
|
- HashMap map = new HashMap();
|
|
|
- map.put("auditorId", user.getId());
|
|
|
- map.put("auditorName", user.getName());
|
|
|
- List list = new ArrayList();
|
|
|
- list.add(map);
|
|
|
- r.setAuditUserList(list);
|
|
|
- if (r.getProjectAuditorId() != null) {
|
|
|
- r.setProjectAuditorName(user.selectById(r.getProjectAuditorId()).getName());
|
|
|
- }
|
|
|
+ }
|
|
|
+ } else if (reportAuditType == 1 || reportAuditType == 2) {
|
|
|
+ if (r.getGroupId() != null && r.getGroupId() != 0) {
|
|
|
+ //直接获取分组的负责人作为审核人
|
|
|
+ Optional<TaskGroup> tgoup = taskGroups.stream().filter(tg->tg.getId().equals(r.getGroupId())).findFirst();
|
|
|
+ if (tgoup.isPresent()) {
|
|
|
+ TaskGroup curGroup = tgoup.get();
|
|
|
+ if (curGroup.getInchargerId() != null) {
|
|
|
+ User user = userMapper.selectById(curGroup.getInchargerId());
|
|
|
+ HashMap map = new HashMap();
|
|
|
+ map.put("auditorId", user.getId());
|
|
|
+ map.put("auditorName", user.getName());
|
|
|
+ List list = new ArrayList();
|
|
|
+ list.add(map);
|
|
|
+ r.setAuditUserList(list);
|
|
|
+ if (r.getProjectAuditorId() != null) {
|
|
|
+ r.setProjectAuditorName(user.selectById(r.getProjectAuditorId()).getName());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- } else if (reportAuditType == 3) {
|
|
|
- //获取日报对应已经设置好的审核人和抄送人
|
|
|
- r.setAuditorSetting(reportAuditorSettingMapper.selectById(r.getId()));
|
|
|
}
|
|
|
- });
|
|
|
- msg.data = reports;
|
|
|
- } catch (NullPointerException e) {
|
|
|
- e.printStackTrace();
|
|
|
- //httpRespMsg.setError("验证失败");
|
|
|
- msg.setError(MessageUtils.message("Company.validationError"));
|
|
|
- return msg;
|
|
|
- } catch (DateTimeParseException e) {
|
|
|
- //httpRespMsg.setError("日期格式有误");
|
|
|
- msg.setError(MessageUtils.message("date.formatError"));
|
|
|
- return msg;
|
|
|
- }
|
|
|
+ } else if (reportAuditType == 3) {
|
|
|
+ //获取日报对应已经设置好的审核人和抄送人
|
|
|
+ r.setAuditorSetting(reportAuditorSettingMapper.selectById(r.getId()));
|
|
|
+ } else {
|
|
|
+ //4和5是所属BU负责人审核和部门负责人审核,不需要前端页面显示审核人
|
|
|
+ }
|
|
|
+ });
|
|
|
+ msg.data = reports;
|
|
|
+ } catch (NullPointerException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ //httpRespMsg.setError("验证失败");
|
|
|
+ msg.setError(MessageUtils.message("Company.validationError"));
|
|
|
+ return msg;
|
|
|
+ } catch (DateTimeParseException e) {
|
|
|
+ //httpRespMsg.setError("日期格式有误");
|
|
|
+ msg.setError(MessageUtils.message("date.formatError"));
|
|
|
+ return msg;
|
|
|
}
|
|
|
|
|
|
return msg;
|