|
@@ -130,6 +130,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
@Resource
|
|
|
WxCorpInfoMapper wxCorpInfoMapper;
|
|
|
@Resource
|
|
|
+ SysFunctionService sysFunctionService;
|
|
|
+ @Resource
|
|
|
private InformationServiceImpl informationService;
|
|
|
@Resource
|
|
|
private ProjectNotifyUserMapper projectNotifyUserMapper;
|
|
@@ -1336,6 +1338,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
httpRespMsg.data = nameList;
|
|
|
} catch (NullPointerException e) {
|
|
|
//httpRespMsg.setError("验证失败");
|
|
|
+ e.printStackTrace();
|
|
|
httpRespMsg.setError(MessageUtils.message("access.verificationError"));
|
|
|
return httpRespMsg;
|
|
|
}
|
|
@@ -1706,18 +1709,24 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
}else if(timeType.getReportAuditType() == 5){
|
|
|
List<Report> updateReportList = new ArrayList<>();
|
|
|
- //项目所属BU审核
|
|
|
- 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").in("id", ids));
|
|
|
+ //人员所属部门负责人审核或者直属领导审核
|
|
|
+ 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));
|
|
|
for (Report r : reportList) {
|
|
|
- //部门负责人审核
|
|
|
- if(user.getId().equals(r.getAuditDeptManagerid())){
|
|
|
- r.setState(1);
|
|
|
- r.setDepartmentAuditState(1);
|
|
|
+ //直属领导审核或者部门负责人审核
|
|
|
+ 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())))){
|
|
|
+ newReport.setState(1);
|
|
|
+ newReport.setDepartmentAuditState(1);
|
|
|
+ newReport.setProjectAuditState(1);
|
|
|
+ newReport.setProjectAuditTime(LocalDateTime.now());
|
|
|
}else {
|
|
|
- httpRespMsg.setError("非当前日报所属人员所在部门主要负责人");
|
|
|
+ httpRespMsg.setError("您无权审核该日报");
|
|
|
return httpRespMsg;
|
|
|
}
|
|
|
- updateReportList.add(r);
|
|
|
+ updateReportList.add(newReport);
|
|
|
}
|
|
|
if (updateReportList.size() > 0) {
|
|
|
updateBatchById(updateReportList);
|
|
@@ -2118,8 +2127,17 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
Report oneReport = reportMapper.selectById(ids.get(0));
|
|
|
if(timeType.getReportAuditType()==5){
|
|
|
- if(!user.getId().equals(oneReport.getAuditDeptManagerid())){
|
|
|
- httpRespMsg.setError("非当前日报所属人员所在部门主要负责人");
|
|
|
+ //日报审核类型为5时,只有日报所属人员所在部门主要负责人或者有审核全公司日报的权限才能审核,或者填报人的直属审核人
|
|
|
+ Integer roleId = user.getRoleId();
|
|
|
+ boolean canAuditAllReport = sysFunctionService.hasPriviledge(roleId, "审核全员日报");
|
|
|
+ boolean isDirectAudit = false;
|
|
|
+ String reporterSuperiorId = userMapper.selectById(oneReport.getCreatorId()).getSuperiorId();
|
|
|
+ if(reporterSuperiorId!=null && reporterSuperiorId.equals(user.getId().toString())){
|
|
|
+ isDirectAudit = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!(isDirectAudit || (reporterSuperiorId == null && user.getId().equals(oneReport.getAuditDeptManagerid())) || canAuditAllReport)){
|
|
|
+ httpRespMsg.setError("您无权操作权限");
|
|
|
return httpRespMsg;
|
|
|
}
|
|
|
}
|
|
@@ -2758,6 +2776,36 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
if (updateReportList.size() > 0) {
|
|
|
updateBatchById(updateReportList);
|
|
|
}
|
|
|
+ } else if(timeType.getReportAuditType() == 5){
|
|
|
+ allUsers = userMapper.selectList(new QueryWrapper<User>().select("id, name, department_id").eq("company_id", company.getId()));
|
|
|
+ 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));
|
|
|
+ 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())))){
|
|
|
+ r.setState(1);
|
|
|
+ r.setDepartmentAuditState(1);
|
|
|
+ r.setProjectAuditState(1);
|
|
|
+ r.setProjectAuditTime(LocalDateTime.now());
|
|
|
+ newReport.setState(1);
|
|
|
+ newReport.setDepartmentAuditState(1);
|
|
|
+ newReport.setProjectAuditState(1);
|
|
|
+ newReport.setProjectAuditTime(LocalDateTime.now());
|
|
|
+ } else {
|
|
|
+ httpRespMsg.setError("您无权审核该日报");
|
|
|
+ return httpRespMsg;
|
|
|
+ }
|
|
|
+ updateReportList.add(newReport);
|
|
|
+ }
|
|
|
+ if (updateReportList.size() > 0) {
|
|
|
+ updateBatchById(updateReportList);
|
|
|
+ }
|
|
|
} else {
|
|
|
List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
|
|
|
new QueryWrapper<AuditWorkflowTimeSetting>().eq("company_id", company.getId())
|
|
@@ -5682,6 +5730,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
if (user.getIsActive() == 0 && i.isAfter(user.getInactiveDate())){
|
|
|
continue;
|
|
|
}
|
|
|
+ //跳过入职日期以前的日期
|
|
|
+ if (user.getIsActive() == 1 && user.getInductionDate() != null && i.isBefore(user.getInductionDate())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
Boolean workDay = timeTypeService.isWorkDay(user.getCompanyId(), i);
|
|
|
if (workDay){
|
|
|
Double workTime = 0.0;
|
|
@@ -5699,6 +5751,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
Double fillHour = monthVO.getAllday() - workTime;
|
|
|
//将fillHour平均分配到每个项目
|
|
|
Double fillHourPerProject = fillHour / projectIds.size();
|
|
|
+ //保留小数点后1位
|
|
|
+ fillHourPerProject = new BigDecimal(fillHourPerProject).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
//遍历项目
|
|
|
double sumHours = 0;
|
|
|
for (int pIndex = 0; pIndex<projectIds.size(); pIndex++) {
|