|
@@ -207,9 +207,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
map.put("cost", total);
|
|
|
map.put("state", state);
|
|
|
}
|
|
|
-
|
|
|
- //部门经理需要看本部门的所有人员的日报
|
|
|
- if (user.getManageDeptId() != null && user.getManageDeptId() > 0) {
|
|
|
+ boolean hasDeptWorktimePriv = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看本部门工时").size() > 0;
|
|
|
+ //需要看本部门的所有人员的日报
|
|
|
+ if (hasDeptWorktimePriv || (user.getManageDeptId() != null && user.getManageDeptId() > 0)) {
|
|
|
//找到该部门的所有子部门
|
|
|
List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
|
|
|
//查找当前部门经理负责的部门
|
|
@@ -218,7 +218,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
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());
|
|
|
+ dp -> user.getId().equals(dp.getManagerId()) || (hasDeptWorktimePriv && dp.getDepartmentId().equals(user.getDepartmentId()))).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
if (queryDeptList.size() > 0) {
|
|
@@ -231,7 +231,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
|
|
|
List ids = deptList.stream().map(Department::getDepartmentId).collect(Collectors.toList());
|
|
|
nameList = reportMapper.getReportNameByDateAndDept(date,
|
|
|
- ids, null, null);
|
|
|
+ ids, targetUid, null);
|
|
|
|
|
|
if (nameList.size() > 0) {
|
|
|
List<String> userIds = new ArrayList<>();
|
|
@@ -1012,7 +1012,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
} else {
|
|
|
Report report = reportMapper.selectById(ids.get(0));
|
|
|
//部门待审核,部门审核通过
|
|
|
- if (report.getDepartmentAuditState() == 0) {
|
|
|
+ if (report.getDepartmentAuditState() == 0){
|
|
|
report = new Report();
|
|
|
report.setDepartmentAuditState(1);
|
|
|
reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
|
|
@@ -1154,7 +1154,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
|
+ List<Integer> collect = reportList.stream().map(rl -> rl.getProjectId()).distinct().collect(Collectors.toList());
|
|
|
+ List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", collect));
|
|
|
+ String pNames = projectList.stream().map(Project::getProjectName).collect(Collectors.joining(", ", "[", "]"));
|
|
|
//对导入审核,添加记录
|
|
|
int channel = oldState == -1?0:1; //0-导入审核, 项目报告审核
|
|
|
ReportAuditLog log = new ReportAuditLog();
|
|
@@ -1163,6 +1166,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
log.setResult("通过");
|
|
|
log.setUserId(user.getId());
|
|
|
log.setUserName(user.getName());
|
|
|
+ log.setProjectName(pNames);
|
|
|
reportAuditLogMapper.insert(log);
|
|
|
//员工的日期
|
|
|
ReportAlogMembdate membdate = new ReportAlogMembdate();
|
|
@@ -1370,7 +1374,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
|
|
|
informationMapper.insert(new Information().setType(0).setContent(date).setUserId(fillUserId).setMsg(str));
|
|
|
-
|
|
|
//对导入审核,添加记录
|
|
|
int channel = oldState == -1?0:1; //0-导入审核, 项目报告审核
|
|
|
ReportAuditLog log = new ReportAuditLog();
|
|
@@ -1379,6 +1382,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
log.setResult("驳回"+(StringUtils.isEmpty(reason)?"":"("+reason+")"));
|
|
|
log.setUserId(user.getId());
|
|
|
log.setUserName(user.getName());
|
|
|
+ log.setProjectName(pNames);
|
|
|
reportAuditLogMapper.insert(log);
|
|
|
//员工的日期
|
|
|
ReportAlogMembdate membdate = new ReportAlogMembdate();
|
|
@@ -1475,6 +1479,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
HttpRespMsg departmentList = departmentService.getDepartmentList(request);
|
|
|
List<DepartmentVO> list = (List<DepartmentVO>) departmentList.data;
|
|
|
List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(curUser.getRoleId(), "查看全公司工时");
|
|
|
+ boolean hasDeptWorktimePriv = sysFunctionMapper.getRoleFunctions(curUser.getRoleId(), "查看本部门工时").size() > 0;
|
|
|
if (functionList.size() > 0) {
|
|
|
//查看全部的
|
|
|
//加上未分配的部门
|
|
@@ -1482,9 +1487,20 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
unAssignedDept.setId(0);
|
|
|
unAssignedDept.setLabel("未分配");
|
|
|
list.add(unAssignedDept);
|
|
|
- } else if (manageDeptId != null && manageDeptId > 0) {
|
|
|
+ } else if (hasDeptWorktimePriv || (manageDeptId != null && manageDeptId > 0)) {
|
|
|
//指定查看某个部门下的,一个人可能负责多个部门
|
|
|
List<Department> allMDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", token));
|
|
|
+ if (hasDeptWorktimePriv && curUser.getDepartmentId() != null) {
|
|
|
+ Department ownerDept = departmentMapper.selectById(curUser.getDepartmentId());
|
|
|
+ //要加上自己的部门,如果没有的话
|
|
|
+ if (!allMDeptList.stream().anyMatch(d->d.getDepartmentId().equals(ownerDept.getDepartmentId()))) {
|
|
|
+ allMDeptList.add(ownerDept);
|
|
|
+ }
|
|
|
+ if (manageDeptId == null || manageDeptId == 0) {
|
|
|
+ manageDeptId = curUser.getDepartmentId();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (allMDeptList.size() == 1) {
|
|
|
list = getSpecifiedDept(list, manageDeptId);
|
|
|
} else {
|
|
@@ -1510,6 +1526,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
|
|
|
if (first.isPresent()) {
|
|
|
user.put("state", first.get().get("state"));
|
|
|
+ user.put("workingTime", first.get().get("workingTime"));
|
|
|
}
|
|
|
userMapList.add(user);
|
|
|
}
|
|
@@ -1659,9 +1676,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
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);
|
|
|
+ for (int m=0;m<deptSettings.size(); m++) {
|
|
|
+ if (deptSettings.get(m).getIsDeptAudit()== 0) {//找到项目审核的那个节点
|
|
|
+ AuditWorkflowTimeSetting nextNode = deptSettings.get(m + 1);
|
|
|
curReport.setIsDeptAudit(nextNode.getIsDeptAudit());
|
|
|
if (curReport.getIsDeptAudit() == 1) {
|
|
|
curReport.setAuditDeptid(nextNode.getAuditDeptId());
|
|
@@ -1669,7 +1686,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
.filter(ad->ad.getDepartmentId().equals(nextNode.getAuditDeptId())).findFirst().get().getManagerId());
|
|
|
}
|
|
|
curReport.setIsFinalAudit(nextNode.getIsFinal());
|
|
|
- System.out.println("设置下个流程节点:部门审核=" + nextNode.getIsDeptAudit());
|
|
|
upR = curReport;
|
|
|
break;
|
|
|
}
|
|
@@ -1705,7 +1721,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
reportService.updateBatchById(updateReportList);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ List<Integer> collect = allReports.stream().map(ar -> ar.getProjectId()).distinct().collect(Collectors.toList());
|
|
|
+ List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", collect));
|
|
|
+ List<String> stringList = projectList.stream().map(pl -> pl.getProjectName()).distinct().collect(Collectors.toList());
|
|
|
+ String s = org.apache.commons.lang3.StringUtils.join(stringList, ",");
|
|
|
int channel = oldState == -1?0:1; //0-导入审核, 项目报告审核
|
|
|
//需要进行审核记录保存
|
|
|
ReportAuditLog log = new ReportAuditLog();
|
|
@@ -1714,6 +1733,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
log.setResult("批量通过");
|
|
|
log.setUserId(user.getId());
|
|
|
log.setUserName(user.getName());
|
|
|
+ log.setProjectName(s);
|
|
|
reportAuditLogMapper.insert(log);
|
|
|
//当前所有员工的日期
|
|
|
List<ReportAlogMembdate> membList = new ArrayList<>();
|
|
@@ -1783,7 +1803,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
item.setAuditState(2);
|
|
|
reportProfessionProgressService.update(item, new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).in("profession_id", collect));
|
|
|
}
|
|
|
-
|
|
|
} else {
|
|
|
Report report = reportMapper.selectById(ids.get(0));
|
|
|
//部门待审核,部门审核驳回
|
|
@@ -1799,12 +1818,18 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
int oldState = oneReport.getState();
|
|
|
int channel = oldState == -1?0:1; //0-导入审核, 项目报告审核
|
|
|
//需要进行审核记录保存
|
|
|
+ List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
|
+ List<Integer> collect = reportList.stream().map(rl -> rl.getProjectId()).distinct().collect(Collectors.toList());
|
|
|
+ List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", collect));
|
|
|
+ List<String> stringList = projectList.stream().map(pl -> pl.getProjectName()).distinct().collect(Collectors.toList());
|
|
|
+ String s = org.apache.commons.lang3.StringUtils.join(stringList, ",");
|
|
|
ReportAuditLog log = new ReportAuditLog();
|
|
|
log.setAuditChannel(channel);//导入审核
|
|
|
log.setCompanyId(company.getId());
|
|
|
log.setResult("批量驳回");
|
|
|
log.setUserId(user.getId());
|
|
|
log.setUserName(user.getName());
|
|
|
+ log.setProjectName(s);
|
|
|
reportAuditLogMapper.insert(log);
|
|
|
List<Report> allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
|
List<User> allUsers = userMapper.selectList(new QueryWrapper<User>().eq("company_id", company.getId()));
|
|
@@ -2073,10 +2098,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
//分角色权限:管理员看全部的,部门负责人看自己部门的,个人只能看自己的。
|
|
|
List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全公司工时");
|
|
|
if (functionList.size() == 0) {
|
|
|
+ boolean hasDeptWorktimePriv = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看本部门工时").size() > 0;
|
|
|
//检查是不是部门负责人
|
|
|
- if (user.getManageDeptId() != null && user.getManageDeptId() != 0) {
|
|
|
+ if (hasDeptWorktimePriv || (user.getManageDeptId() != null && user.getManageDeptId() != 0)) {
|
|
|
List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
|
|
|
- List<Department> myDeptList = allDepts.stream().filter(d->user.getId().equals(d.getManagerId())).collect(Collectors.toList());
|
|
|
+ List<Department> myDeptList = allDepts.stream().filter(d->user.getId().equals(d.getManagerId()) || (hasDeptWorktimePriv && d.getDepartmentId().equals(user.getDepartmentId()))).collect(Collectors.toList());
|
|
|
List<Department> subDepts = new ArrayList<>();
|
|
|
for (Department dp : myDeptList) {
|
|
|
subDepts.addAll(getSubDepts(dp, allDepts));
|
|
@@ -2585,7 +2611,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
|
|
|
//导出报告
|
|
|
@Override
|
|
|
- public HttpRespMsg exportReport(@RequestParam String startDate, @RequestParam String endDate, Integer projectId,Integer stateKey, HttpServletRequest request) {
|
|
|
+ public HttpRespMsg exportReport(@RequestParam String startDate, @RequestParam String endDate, Integer projectId,Integer stateKey,Integer departmentId, HttpServletRequest request) {
|
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
try {
|
|
|
String userId = request.getHeader("Token");
|
|
@@ -2626,6 +2652,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
if (timeType.getCustomTextActive() == 1) {
|
|
|
titles.add(timeType.getCustomTextName());
|
|
|
}
|
|
|
+ //项目管理专业版,需要显示任务分组和投入阶段
|
|
|
+ if (company.getPackageProject() == 1) {
|
|
|
+ titles.add("任务分组");
|
|
|
+ titles.add("投入阶段");
|
|
|
+ }
|
|
|
if (timeType.getShowFillauditTime() == 1) {
|
|
|
titles.add("填写时间");
|
|
|
titles.add("审核人");
|
|
@@ -2682,28 +2713,30 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
int rowNum = 1;
|
|
|
List<HashMap<String, Object>> allReportByDate = null;
|
|
|
List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全公司工时");
|
|
|
+ boolean hasDeptWorktimePriv = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看本部门工时").size() > 0;
|
|
|
+
|
|
|
if (functionList.size() == 0) {
|
|
|
//检查是否是部门负责人
|
|
|
- if (user.getManageDeptId() > 0) {
|
|
|
+ if (hasDeptWorktimePriv || (user.getManageDeptId() != null && user.getManageDeptId() > 0)) {
|
|
|
List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
|
|
|
- List<Department> deptList = allDeptList.stream().filter(dept->user.getId().equals(dept.getManagerId())).collect(Collectors.toList());
|
|
|
+ List<Department> deptList = allDeptList.stream().filter(dept->user.getId().equals(dept.getManagerId())|| (hasDeptWorktimePriv && dept.getDepartmentId().equals(user.getDepartmentId()))).collect(Collectors.toList());
|
|
|
List<Department> allSubDepts = new ArrayList<>();
|
|
|
allSubDepts.addAll(deptList);
|
|
|
for (Department dept: deptList) {
|
|
|
allSubDepts.addAll(getSubDepts(dept, allDeptList));
|
|
|
}
|
|
|
List<Integer> collect = allSubDepts.stream().map(Department::getDepartmentId).collect(Collectors.toList());
|
|
|
- allReportByDate = reportMapper.getDeptMembReportByDate(startDate, null, collect, endDate, projectId,stateKey);
|
|
|
+ allReportByDate = reportMapper.getDeptMembReportByDate(startDate, null, collect, endDate, projectId,stateKey,departmentId);
|
|
|
}
|
|
|
|
|
|
List<HashMap<String, Object>> reportsFromProjects = null;
|
|
|
//检查是否是项目负责人
|
|
|
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);
|
|
|
+ reportsFromProjects = reportMapper.getProjectMembReportByDate(startDate, null, user.getId(), endDate, projectId,stateKey,departmentId);
|
|
|
} else {
|
|
|
//普通员工只能看自己的
|
|
|
- reportsFromProjects = reportMapper.getAllReportByDate(startDate, null, user.getId(), endDate, projectId,stateKey);
|
|
|
+ reportsFromProjects = reportMapper.getAllReportByDate(startDate, null, user.getId(), endDate, projectId,stateKey,departmentId);
|
|
|
}
|
|
|
if (allReportByDate == null) {
|
|
|
allReportByDate = reportsFromProjects;
|
|
@@ -2723,7 +2756,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
// }
|
|
|
else {
|
|
|
//看公司所有人的
|
|
|
- allReportByDate = reportMapper.getAllReportByDate(startDate, user.getCompanyId(), null, endDate, projectId,stateKey);
|
|
|
+ allReportByDate = reportMapper.getAllReportByDate(startDate, user.getCompanyId(), null, endDate, projectId,stateKey,departmentId);
|
|
|
}
|
|
|
if (timeType.getMultiWorktime() == 1) {
|
|
|
java.text.DecimalFormat df = new java.text.DecimalFormat("#0.00");
|
|
@@ -2821,6 +2854,13 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
row.createCell(index).setCellValue(map.get("customText") != null?map.get("customText").toString():"");
|
|
|
index++;
|
|
|
}
|
|
|
+ //项目管理专业版,需要显示任务分组和投入阶段
|
|
|
+ if (company.getPackageProject() == 1) {
|
|
|
+ row.createCell(index).setCellValue(map.get("groupName") != null? map.get("groupName").toString():"");
|
|
|
+ index++;
|
|
|
+ row.createCell(index).setCellValue(map.get("stage") != null?map.get("stage").toString():"");
|
|
|
+ index++;
|
|
|
+ }
|
|
|
if (timeType.getShowFillauditTime() == 1) {
|
|
|
row.createCell(index).setCellValue(sdf.format((Date)map.get("time")));
|
|
|
index++;
|
|
@@ -2833,9 +2873,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
|
|
|
index++;
|
|
|
-// titles.add("填写时间");
|
|
|
-// titles.add("审核人");
|
|
|
-// titles.add("审核时间");
|
|
|
}
|
|
|
row.createCell(index).setCellValue((String) map.get("content"));
|
|
|
index++;
|
|
@@ -3040,11 +3077,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
List<Map<String, Object>> list = null;
|
|
|
//分角色权限:管理员看全部的,部门负责人看自己部门的,个人只能看自己的。
|
|
|
List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全公司工时");
|
|
|
+ boolean hasDeptWorktimePriv = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看本部门工时").size() > 0;
|
|
|
if (functionList.size() == 0) {
|
|
|
//检查是不是部门负责人
|
|
|
- if (user.getManageDeptId() != null && user.getManageDeptId() != 0) {
|
|
|
+ if (hasDeptWorktimePriv || (user.getManageDeptId() != null && user.getManageDeptId() != 0)) {
|
|
|
List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
|
|
|
- List<Department> myDeptList = allDepts.stream().filter(d->user.getId().equals(d.getManagerId())).collect(Collectors.toList());
|
|
|
+ List<Department> myDeptList = allDepts.stream().filter(d->user.getId().equals(d.getManagerId())|| (hasDeptWorktimePriv && d.getDepartmentId().equals(user.getDepartmentId()))).collect(Collectors.toList());
|
|
|
List<Department> subDepts = new ArrayList<>();
|
|
|
for (Department dp : myDeptList) {
|
|
|
subDepts.addAll(getSubDepts(dp, allDepts));
|