|
@@ -183,15 +183,26 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
|
|
|
//部门经理需要看本部门的所有人员的日报
|
|
|
if (user.getManageDeptId() != null && user.getManageDeptId() > 0) {
|
|
|
- int manageDeptId = user.getManageDeptId();
|
|
|
//找到该部门的所有子部门
|
|
|
List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
|
|
|
- Optional<Department> first = allDepts.stream().filter(d -> d.getDepartmentId().equals(manageDeptId)).findFirst();
|
|
|
- if (first.isPresent()) {
|
|
|
- Department department = first.get();
|
|
|
+ //查找当前部门经理负责的部门
|
|
|
+ List<Department> queryDeptList = null;
|
|
|
+ if (deptId != null) {
|
|
|
+ queryDeptList = allDepts.stream().filter(dp->dp.getDepartmentId().equals(deptId)).collect(Collectors.toList());
|
|
|
+ } else {
|
|
|
+ queryDeptList = allDepts.stream().filter(
|
|
|
+ dp -> user.getId().equals(dp.getManagerId())).collect(Collectors.toList());
|
|
|
+ System.out.println("查询到的部门id列表=="+queryDeptList.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (queryDeptList.size() > 0) {
|
|
|
//递归获取全部子部门
|
|
|
- List<Department> deptList = getSubDepts(department, allDepts);
|
|
|
- deptList.add(department);
|
|
|
+ List<Department> deptList = new ArrayList<>();
|
|
|
+ for (Department dept : queryDeptList) {
|
|
|
+ deptList.add(dept);
|
|
|
+ deptList.addAll(getSubDepts(dept, allDepts));
|
|
|
+ }
|
|
|
+
|
|
|
List ids = deptList.stream().map(Department::getDepartmentId).collect(Collectors.toList());
|
|
|
nameList = reportMapper.getReportNameByDateAndDept(date,
|
|
|
ids, null, null);
|
|
@@ -532,7 +543,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
//只操作没有审核通过的
|
|
|
if (reportMapper.selectById(report.getId()).getState() != 1) {
|
|
|
//检查是否存在计算加班工资的情况
|
|
|
- if (!timeType.getPayOvertime()) {
|
|
|
+ if (!timeType.getPayOvertime()) {
|
|
|
//不能超过最多时间,超过的话,等比例核算
|
|
|
if (totalWorkTime > timeType.getAllday()) {
|
|
|
BigDecimal cost;
|
|
@@ -737,6 +748,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
map2.put("reportTime", df.format(reportTime));
|
|
|
map2.put("cost", total);
|
|
|
map2.put("state", list2.get(0).get("state"));
|
|
|
+ map2.put("auditDeptName", list2.get(0).get("auditDeptName"));
|
|
|
+ map2.put("isDeptAudit", list2.get(0).get("isDeptAudit"));
|
|
|
}
|
|
|
|
|
|
//设置照片显示
|
|
@@ -851,20 +864,92 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
} else {
|
|
|
String creatorId = reportMapper.selectById(ids.get(0)).getCreatorId();
|
|
|
User auditTargetUser = userMapper.selectById(creatorId);
|
|
|
- List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(new QueryWrapper<AuditWorkflowTimeSetting>().eq("dept_id", auditTargetUser.getDepartmentId()));
|
|
|
+ List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
|
|
|
+ new QueryWrapper<AuditWorkflowTimeSetting>().eq("dept_id", auditTargetUser.getDepartmentId())
|
|
|
+ .orderByAsc("seq"));
|
|
|
+ System.out.println("======setting count==" + settings.size());
|
|
|
if (settings.size() == 0) {
|
|
|
//直接进行项目经理审核
|
|
|
- reportMapper.update(new Report().setState(1),
|
|
|
+ reportMapper.update(new Report().setState(1).setProjectAuditState(1),
|
|
|
new QueryWrapper<Report>().in("id", ids));
|
|
|
} else {
|
|
|
//按流程走
|
|
|
-
|
|
|
+ List<Report> allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
|
+ List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", company.getId()));
|
|
|
+ Report item = allReports.get(0);
|
|
|
+ if (item.getIsFinalAudit() == 1) {
|
|
|
+ //最终审核了,审核通过
|
|
|
+ if (item.getIsDeptAudit() == 1) {
|
|
|
+ //如果最终是部门审核,直接通过
|
|
|
+ //如果最终是项目审核
|
|
|
+ reportMapper.update(new Report().setState(1),
|
|
|
+ new QueryWrapper<Report>().in("id", ids));
|
|
|
+ } else {
|
|
|
+ //如果最终是项目审核,流程中的项目审核字段也要更新: state为最终审核状态,projectAuditState为阶段性的项目审核状态
|
|
|
+ reportMapper.update(new Report().setState(1).setProjectAuditState(1),
|
|
|
+ new QueryWrapper<Report>().in("id", ids));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (item.getIsDeptAudit() == 1) {
|
|
|
+ //当前是部门审核,获取审核部门id
|
|
|
+ Report upR = new Report();
|
|
|
+ Integer auditDeptid = item.getAuditDeptid();
|
|
|
+ for (int m=0;m<settings.size(); m++) {
|
|
|
+ if (auditDeptid.equals(settings.get(m).getAuditDeptId()) && m < settings.size() -1) {
|
|
|
+ AuditWorkflowTimeSetting nextNode = settings.get(m + 1);
|
|
|
+ upR.setIsDeptAudit(nextNode.getIsDeptAudit());
|
|
|
+ if (upR.getIsDeptAudit() == 1) {
|
|
|
+ upR.setAuditDeptid(nextNode.getAuditDeptId());
|
|
|
+ upR.setAuditDeptManagerid(allDepts.stream()
|
|
|
+ .filter(ad->ad.getDepartmentId().equals(nextNode.getAuditDeptId())).findFirst().get().getManagerId());
|
|
|
+ }
|
|
|
+ upR.setIsFinalAudit(nextNode.getIsFinal());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ reportMapper.update(upR,
|
|
|
+ new QueryWrapper<Report>().in("id", ids));
|
|
|
+ } else {
|
|
|
+ //当前的先审核通过
|
|
|
+ System.out.println("===========更新项目审核状态======"+ids.size());
|
|
|
+ reportMapper.update(new Report().setProjectAuditState(1),
|
|
|
+ new QueryWrapper<Report>().in("id", ids));
|
|
|
+ //项目审核的情况下,需要判断是否该员工当天所有项目是否都是项目经理审核通过了
|
|
|
+ List<Report> sameUserSameDayOtherReports = reportMapper.selectList(new QueryWrapper<Report>()
|
|
|
+ .eq("create_date", item.getCreateDate())
|
|
|
+ .eq("creator_id", item.getCreatorId())
|
|
|
+ .notIn("id", ids));
|
|
|
+ long pendingNum = sameUserSameDayOtherReports.stream().filter(s->s.getProjectAuditState() == 0).count();
|
|
|
+ if (pendingNum == 0) {
|
|
|
+ //没有其他待审核的项目了,流程往下走
|
|
|
+ Report upR = new Report();
|
|
|
+ for (int m=0;m<settings.size(); m++) {
|
|
|
+ if (settings.get(m).getIsDeptAudit()== 0) {//找到项目审核的那个节点
|
|
|
+ AuditWorkflowTimeSetting nextNode = settings.get(m + 1);
|
|
|
+ upR.setIsDeptAudit(nextNode.getIsDeptAudit());
|
|
|
+ if (upR.getIsDeptAudit() == 1) {
|
|
|
+ upR.setAuditDeptid(nextNode.getAuditDeptId());
|
|
|
+ upR.setAuditDeptManagerid(allDepts.stream()
|
|
|
+ .filter(ad->ad.getDepartmentId().equals(nextNode.getAuditDeptId())).findFirst().get().getManagerId());
|
|
|
+ }
|
|
|
+ upR.setIsFinalAudit(nextNode.getIsFinal());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //全部更新到下一个审核阶段
|
|
|
+ List<Integer> allRids = sameUserSameDayOtherReports.stream().map(Report::getId).collect(Collectors.toList());
|
|
|
+ allRids.addAll(ids);
|
|
|
+ reportMapper.update(upR,
|
|
|
+ new QueryWrapper<Report>().in("id", allRids));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
} catch (NullPointerException e) {
|
|
|
httpRespMsg.setError("验证失败");
|
|
|
+ e.printStackTrace();
|
|
|
return httpRespMsg;
|
|
|
}
|
|
|
return httpRespMsg;
|
|
@@ -1194,7 +1279,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
User user = userMapper.selectById(request.getHeader("Token"));
|
|
|
Company company = companyMapper.selectById(user.getCompanyId());
|
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
- final List<Long> ids = ListUtil.convertIdsArrayToList(reportIds);
|
|
|
+ final List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(reportIds);
|
|
|
if (company.getPackageEngineering() == 1) {
|
|
|
//检查是否有专业进度待审核
|
|
|
List<ReportProfessionProgress> list = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).eq("audit_state", 0));
|
|
@@ -1253,9 +1338,126 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
- //直接进行项目经理审核
|
|
|
- reportMapper.update(new Report().setState(1),
|
|
|
- new QueryWrapper<Report>().in("id", ids));
|
|
|
+ List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
|
|
|
+ new QueryWrapper<AuditWorkflowTimeSetting>().eq("company_id", company.getId())
|
|
|
+ .orderByAsc("seq"));
|
|
|
+
|
|
|
+ if (settings.size() == 0) {
|
|
|
+ //公司没有自定义流程,直接进行项目经理审核
|
|
|
+ reportMapper.update(new Report().setState(1),
|
|
|
+ new QueryWrapper<Report>().in("id", ids));
|
|
|
+ } else {
|
|
|
+ List<User> allUsers = userMapper.selectList(new QueryWrapper<User>().eq("company_id", company.getId()));
|
|
|
+ List<Report> allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
|
+ List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", company.getId()));
|
|
|
+ //ids是来自不同人不同日期的报告id
|
|
|
+ List<Report> updateReportList = new ArrayList<Report>();
|
|
|
+ for (Integer rid : ids) {
|
|
|
+ String creatorId = allReports.stream().filter(a->a.getId().equals(rid)).findFirst().get().getCreatorId();
|
|
|
+ User auditTargetUser = allUsers.stream().filter(a->a.getId().equals(creatorId)).findFirst().get();
|
|
|
+ System.out.println("======setting count==" + settings.size());
|
|
|
+ List<AuditWorkflowTimeSetting> deptSettings = settings.stream().filter(s->s.getDeptId().equals(auditTargetUser.getDepartmentId())).collect(Collectors.toList());
|
|
|
+ Report curReport = new Report().setId(rid);
|
|
|
+ if (deptSettings.size() == 0) {
|
|
|
+ //直接进行项目经理审核
|
|
|
+ curReport.setState(1);
|
|
|
+ } else {
|
|
|
+ //按流程走, 取到当前报告的数据
|
|
|
+ Report item = allReports.stream().filter(a->a.getId().equals(rid)).findFirst().get();
|
|
|
+ if (item.getIsFinalAudit() == 1) {
|
|
|
+ //最终审核了,审核通过
|
|
|
+ if (item.getIsDeptAudit() == 1) {
|
|
|
+ //如果最终是部门审核,直接通过
|
|
|
+ //如果最终是项目审核
|
|
|
+ curReport.setState(1);
|
|
|
+ } else {
|
|
|
+ //如果最终是项目审核,流程中的项目审核字段也要更新: state为最终审核状态,projectAuditState为阶段性的项目审核状态
|
|
|
+ curReport.setState(1).setProjectAuditState(1);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (item.getIsDeptAudit() == 1) {
|
|
|
+ //当前是部门审核,获取审核部门id
|
|
|
+ Integer auditDeptid = item.getAuditDeptid();
|
|
|
+ for (int m=0;m<deptSettings.size(); m++) {
|
|
|
+ if (auditDeptid.equals(deptSettings.get(m).getAuditDeptId()) && m < deptSettings.size() -1) {
|
|
|
+ AuditWorkflowTimeSetting nextNode = deptSettings.get(m + 1);
|
|
|
+ curReport.setIsDeptAudit(nextNode.getIsDeptAudit());
|
|
|
+ if (curReport.getIsDeptAudit() == 1) {
|
|
|
+ curReport.setAuditDeptid(nextNode.getAuditDeptId());
|
|
|
+ curReport.setAuditDeptManagerid(allDepts.stream()
|
|
|
+ .filter(ad->ad.getDepartmentId().equals(nextNode.getAuditDeptId())).findFirst().get().getManagerId());
|
|
|
+ }
|
|
|
+ curReport.setIsFinalAudit(nextNode.getIsFinal());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //当前的先审核通过
|
|
|
+ curReport.setProjectAuditState(1);
|
|
|
+// reportMapper.update(new Report().setProjectAuditState(1),
|
|
|
+// new QueryWrapper<Report>().in("id", ids));
|
|
|
+ //项目审核的情况下,需要判断是否该员工的所有项目都审核通过了
|
|
|
+ //只看同一天的
|
|
|
+ Report reportItem = allReports.stream().filter(a->a.getId().equals(rid)).findFirst().get();
|
|
|
+ List<Report> sameUserSameDayOtherReports = reportMapper.selectList(new QueryWrapper<Report>()
|
|
|
+ .eq("create_date", reportItem.getCreateDate())
|
|
|
+ .eq("creator_id", reportItem.getCreatorId())
|
|
|
+ .notIn("id", ids));
|
|
|
+ long pendingNum = sameUserSameDayOtherReports.stream().filter(s->s.getProjectAuditState() == 0).count();
|
|
|
+ if (pendingNum == 0) {
|
|
|
+ System.out.println("没有其他等待的项目了,继续更新到下个流程");
|
|
|
+ //没有其他待审核的项目了,流程往下走
|
|
|
+ Report upR = new Report();
|
|
|
+ for (int m=0;m<settings.size(); m++) {
|
|
|
+ if (settings.get(m).getIsDeptAudit()== 0) {//找到项目审核的那个节点
|
|
|
+ AuditWorkflowTimeSetting nextNode = settings.get(m + 1);
|
|
|
+ curReport.setIsDeptAudit(nextNode.getIsDeptAudit());
|
|
|
+ if (curReport.getIsDeptAudit() == 1) {
|
|
|
+ curReport.setAuditDeptid(nextNode.getAuditDeptId());
|
|
|
+ curReport.setAuditDeptManagerid(allDepts.stream()
|
|
|
+ .filter(ad->ad.getDepartmentId().equals(nextNode.getAuditDeptId())).findFirst().get().getManagerId());
|
|
|
+ }
|
|
|
+ curReport.setIsFinalAudit(nextNode.getIsFinal());
|
|
|
+ System.out.println("设置下个流程节点:部门审核=" + nextNode.getIsDeptAudit());
|
|
|
+ upR = curReport;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //可能存在当天的其他已经通过项目负责人审核的数据,也一起更新到下个流程节点
|
|
|
+ for (Report r : sameUserSameDayOtherReports) {
|
|
|
+ Integer oid = r.getId();
|
|
|
+ //检查是否已经添加过了
|
|
|
+ boolean hasAdded = false;
|
|
|
+ for (int m = 0; m<updateReportList.size(); m++) {
|
|
|
+ if (updateReportList.get(m).getId().equals(oid)) {
|
|
|
+ hasAdded = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!hasAdded) {
|
|
|
+ Report addReport = new Report();
|
|
|
+ addReport.setId(oid);
|
|
|
+ addReport.setIsDeptAudit(upR.getIsDeptAudit());
|
|
|
+ addReport.setAuditDeptid(upR.getAuditDeptid());
|
|
|
+ addReport.setAuditDeptManagerid(upR.getAuditDeptManagerid());
|
|
|
+ addReport.setIsFinalAudit(upR.getIsFinalAudit());
|
|
|
+ updateReportList.add(addReport);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ updateReportList.add(curReport);
|
|
|
+ }
|
|
|
+ if (updateReportList.size() > 0) {
|
|
|
+ reportService.updateBatchById(updateReportList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+// //直接进行项目经理审核
|
|
|
+// reportMapper.update(new Report().setState(1),
|
|
|
+// new QueryWrapper<Report>().in("id", ids));
|
|
|
}
|
|
|
return httpRespMsg;
|
|
|
}
|
|
@@ -1580,9 +1782,13 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
//检查是不是部门负责人
|
|
|
if (user.getManageDeptId() != null && user.getManageDeptId() != 0) {
|
|
|
List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
|
|
|
- Department dp = allDepts.stream().filter(d->d.getDepartmentId().equals(user.getManageDeptId())).findFirst().get();
|
|
|
- List<Department> subDepts = getSubDepts(dp, allDepts);
|
|
|
- subDepts.add(dp);
|
|
|
+ List<Department> myDeptList = allDepts.stream().filter(d->user.getId().equals(d.getManagerId())).collect(Collectors.toList());
|
|
|
+ List<Department> subDepts = new ArrayList<>();
|
|
|
+ for (Department dp : myDeptList) {
|
|
|
+ subDepts.addAll(getSubDepts(dp, allDepts));
|
|
|
+ subDepts.add(dp);
|
|
|
+ }
|
|
|
+ System.out.println("部门=="+subDepts.size());
|
|
|
List<Integer> collect = subDepts.stream().map(Department::getDepartmentId).collect(Collectors.toList());
|
|
|
list = reportMapper.getUserDailyWorkTime(companyId, startDate, endDate, collect, null);
|
|
|
} else {
|
|
@@ -1865,6 +2071,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
//准备导出
|
|
|
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
|
HSSFSheet sheet = workbook.createSheet("工作日报");
|
|
|
+ sheet.createFreezePane(0,1);
|
|
|
List<String> titles = new ArrayList<String>();
|
|
|
titles.addAll(Arrays.asList(new String[]{
|
|
|
"序号","上传者","项目名称","子项目名称"
|