|
@@ -48,6 +48,8 @@ public class ReportController {
|
|
|
@Autowired
|
|
|
private ReportService reportService;
|
|
|
@Resource
|
|
|
+ private ProjectBasecostSettingMapper projectBasecostSettingMapper;
|
|
|
+ @Resource
|
|
|
private HttpServletRequest request;
|
|
|
@Resource
|
|
|
private AuditWorkflowTimeSettingMapper auditWorkflowTimeSettingMapper;
|
|
@@ -56,10 +58,14 @@ public class ReportController {
|
|
|
@Resource
|
|
|
private DepartmentMapper departmentMapper;
|
|
|
@Resource
|
|
|
+ private ProjectCurrentcostMapper projectCurrentcostMapper;
|
|
|
+ @Resource
|
|
|
private UserSalaryService userSalaryService;
|
|
|
@Resource
|
|
|
private TimeTypeMapper timeTypeMapper;
|
|
|
@Resource
|
|
|
+ private ReportMapper reportMapper;
|
|
|
+ @Resource
|
|
|
private ProjectMapper projectMapper;
|
|
|
@Resource
|
|
|
private SysFunctionMapper sysFunctionMapper;
|
|
@@ -151,7 +157,8 @@ public class ReportController {
|
|
|
Integer[] groupId,//任务分组id
|
|
|
Double[] customData,//自定义的数值
|
|
|
String[] projectAuditorId,
|
|
|
- Double[] overtimeHours //加班时长
|
|
|
+ Double[] overtimeHours, //加班时长
|
|
|
+ String[] customText
|
|
|
) {
|
|
|
List<Report> reportList = new ArrayList<>();
|
|
|
String token = request.getHeader("Token");
|
|
@@ -219,6 +226,12 @@ public class ReportController {
|
|
|
taskFinish[i] = 0;
|
|
|
}
|
|
|
}
|
|
|
+ if (customText == null) {
|
|
|
+ customText = new String[projectId.length];
|
|
|
+ for(int i=0;i<customText.length; i++) {
|
|
|
+ customText[i] = "-";
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
//检查项目是否截止
|
|
|
List<Integer> integers = Arrays.asList(projectId);
|
|
@@ -404,7 +417,6 @@ public class ReportController {
|
|
|
for (int i = 0; i < id.length; i++) {
|
|
|
if (createDate[i].contains("@")) {
|
|
|
DateTimeFormatter mdFormatter = DateTimeFormatter.ofPattern("MM-dd");
|
|
|
- System.out.println("============这是批量填报=");
|
|
|
//这是批量填报的情况,日期有范围
|
|
|
String[] dateArray = createDate[i].split("@");
|
|
|
String startDate = dateArray[0];
|
|
@@ -455,6 +467,7 @@ public class ReportController {
|
|
|
report.setProjectAuditState(0);
|
|
|
report.setProjectAuditorId(projectAuditorId[i]);
|
|
|
report.setTaskFinish(taskFinish[i]);
|
|
|
+ report.setCustomText(customText[i]);
|
|
|
|
|
|
if (auditWorkflowList.size() == 0) {
|
|
|
//没有自定义审核流,默认的直接是项目负责人审核
|
|
@@ -512,6 +525,7 @@ public class ReportController {
|
|
|
.setProjectAuditorId(projectAuditorId[i]);
|
|
|
report.setProjectAuditState(0);
|
|
|
report.setTaskFinish(taskFinish[i]);
|
|
|
+ report.setCustomText(customText[i]);
|
|
|
if (auditWorkflowList.size() == 0) {
|
|
|
//没有自定义审核流,默认的直接是项目负责人审核
|
|
|
report.setIsDeptAudit(0);
|
|
@@ -568,6 +582,7 @@ public class ReportController {
|
|
|
report.setProjectAuditState(0);
|
|
|
report.setProjectAuditorId(projectAuditorId[i]);
|
|
|
report.setTaskFinish(taskFinish[i]);
|
|
|
+ report.setCustomText(customText[i]);
|
|
|
if (auditWorkflowList.size() == 0) {
|
|
|
//没有自定义审核流,默认的直接是项目负责人审核
|
|
|
report.setIsDeptAudit(0);
|
|
@@ -629,6 +644,7 @@ public class ReportController {
|
|
|
.setFillUserid(token);
|
|
|
report.setProjectAuditState(1);
|
|
|
report.setTaskFinish(taskFinish[i]);
|
|
|
+ report.setCustomText(customText[i]);
|
|
|
if (auditWorkflowList.size() == 0) {
|
|
|
//没有自定义审核流,直接代填的,就算审核通过
|
|
|
report.setIsDeptAudit(0);
|
|
@@ -715,6 +731,46 @@ public class ReportController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //检查成本是否超过预算
|
|
|
+ List<ProjectBasecostSetting> projectBasecostSettings = projectBasecostSettingMapper.selectList(new QueryWrapper<ProjectBasecostSetting>().eq("company_id", user.getCompanyId()).eq("alarm_type", 1));
|
|
|
+ if (projectBasecostSettings.size() > 0) {
|
|
|
+ List<Integer> collect = projectBasecostSettings.stream().map(ProjectBasecostSetting::getId).collect(Collectors.toList());
|
|
|
+ List<Integer> projectIds = reportList.stream().map(Report::getProjectId).distinct().collect(Collectors.toList());
|
|
|
+ //获取当前项目的成本基线值
|
|
|
+ List<ProjectCurrentcost> projectCurrentcosts = projectCurrentcostMapper.selectList(new QueryWrapper<ProjectCurrentcost>().in("base_id", collect).in("project_id", projectIds));
|
|
|
+ Map<Integer, List<ProjectCurrentcost>> listMap = projectCurrentcosts.stream().collect(Collectors.groupingBy(ProjectCurrentcost::getProjectId));
|
|
|
+ List<Map<String, Object>> costList = reportMapper.getProjectCost(user.getCompanyId(), projectIds);
|
|
|
+ for (Integer pId : projectIds) {
|
|
|
+ List<ProjectCurrentcost> projectCurrentcosts1 = listMap.get(pId);
|
|
|
+ if (projectCurrentcosts1 != null) {
|
|
|
+ //预算总上限
|
|
|
+ double total = projectCurrentcosts1.stream().mapToDouble(ProjectCurrentcost::getBaseAmount).sum();
|
|
|
+ double fillCost = 0;
|
|
|
+ for (int i=0;i<costList.size(); i++) {
|
|
|
+ Map<String, Object> mapItem = costList.get(i);
|
|
|
+ if (((Integer)mapItem.get("projectId")).intValue() == pId) {
|
|
|
+ fillCost = (double)mapItem.get("cost");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ double leftCost = total - fillCost;
|
|
|
+ BigDecimal bigDecimal = new BigDecimal(0);
|
|
|
+ for (Report report : reportList) {
|
|
|
+ if (report.getProjectId().equals(pId)) {
|
|
|
+ bigDecimal = bigDecimal.add(report.getCost());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ double curFillCost = bigDecimal.doubleValue();
|
|
|
+ if (curFillCost > leftCost) {
|
|
|
+ String name = projectList.stream().filter(p->p.getId().equals(pId)).findFirst().get().getProjectName();
|
|
|
+ HttpRespMsg msg = new HttpRespMsg();
|
|
|
+ msg.setError("项目["+name+"]工时相关预算不足,请联系管理人员下拨预算");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return reportService.editReport(reportList, createDate.length > 0 ? createDate[0] : null, targetUserList, hourCost, user.getCompanyId());
|
|
|
}
|
|
|
|