|
@@ -1703,39 +1703,23 @@ public class TaskController {
|
|
|
List<Integer> projectIds = taskList.stream().map(Task::getProjectId).distinct().collect(Collectors.toList());
|
|
|
projectIds.add(-1);
|
|
|
List<Project> projectList = projectService.list(new LambdaQueryWrapper<Project>().in(Project::getId, projectIds));
|
|
|
- List<String> inchargeIdList = projectList.stream().filter(p -> p.getInchargerId() != null).distinct().map(Project::getInchargerId).collect(Collectors.toList());
|
|
|
- inchargeIdList.add("-1");
|
|
|
- List<User> userList = userMapper.selectList(new QueryWrapper<User>().in("id", inchargeIdList));
|
|
|
- List<Integer> taskGroupIdList = taskList.stream().filter(t -> t.getGroupId() != null).distinct().map(Task::getGroupId).collect(Collectors.toList());
|
|
|
- taskGroupIdList.add(-1);
|
|
|
- List<TaskGroup> taskGroupList = taskGroupService.list(new QueryWrapper<TaskGroup>().in("id", taskGroupIdList));
|
|
|
- if (org.apache.commons.lang3.StringUtils.isEmpty(startDate)||org.apache.commons.lang3.StringUtils.isEmpty(endDate)) {
|
|
|
- LocalDate now = LocalDate.now();
|
|
|
- // 本月第一天
|
|
|
- LocalDate firstDayOfMonth = now.withDayOfMonth(1);
|
|
|
- startDate=firstDayOfMonth.format(df);
|
|
|
-
|
|
|
- // 本月最后一天
|
|
|
- LocalDate lastDayOfMonth = now.with(TemporalAdjusters.lastDayOfMonth());
|
|
|
- endDate=lastDayOfMonth.format(df);
|
|
|
- }
|
|
|
- int days = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 0).size();
|
|
|
- TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", companyId));
|
|
|
- Float monthTime = days * allDay.getAllday();
|
|
|
List<List<String>> dataList=new ArrayList<>();
|
|
|
List<String> titleList=new ArrayList<>();
|
|
|
titleList.add("序号");
|
|
|
- titleList.add("项目分类");
|
|
|
- titleList.add("项目经理");
|
|
|
- titleList.add("研究中心");
|
|
|
- titleList.add("任务分组");
|
|
|
- titleList.add("投入阶段");
|
|
|
- titleList.add("工作内容");
|
|
|
+ titleList.add("项目名称");
|
|
|
+ titleList.add("任务阶段");
|
|
|
+ titleList.add("优先级");
|
|
|
+ titleList.add("计划名称");
|
|
|
+ titleList.add("执行人");
|
|
|
titleList.add("一级审核人");
|
|
|
titleList.add("二级审核人");
|
|
|
- titleList.add("计划工时(H)");
|
|
|
- titleList.add("FTE(计划工时/当月计划工时基数)");
|
|
|
titleList.add("审核状态");
|
|
|
+ titleList.add("开始时间");
|
|
|
+ titleList.add("截止时间");
|
|
|
+ boolean anyMatch = projectList.stream().anyMatch(p -> p.getDeptId() != null && !StringUtils.isEmpty(p.getDeptId()));
|
|
|
+ if(anyMatch){
|
|
|
+ titleList.add("所属部门");
|
|
|
+ }
|
|
|
dataList.add(titleList);
|
|
|
int no=0;
|
|
|
for (TaskWithAuditor task : taskList) {
|
|
@@ -1744,50 +1728,33 @@ public class TaskController {
|
|
|
item.add(no+"");
|
|
|
Optional<Project> first = projectList.stream().filter(p -> p.getId().equals(task.getProjectId())).findFirst();
|
|
|
if(first.isPresent()){
|
|
|
- Project project = first.get();
|
|
|
- item.add(org.apache.commons.lang3.StringUtils.isEmpty(project.getCategoryName())?"":first.get().getCategoryName());
|
|
|
- if (org.apache.commons.lang3.StringUtils.isNotEmpty(project.getInchargerId())){
|
|
|
- Optional<User> userOptional = userList.stream().filter(u -> u.getId().equals(project.getInchargerId())).findFirst();
|
|
|
- if(userOptional.isPresent()){
|
|
|
- item.add(userOptional.get().getName());
|
|
|
- }else {
|
|
|
- item.add("");
|
|
|
- }
|
|
|
- }else {
|
|
|
- item.add("");
|
|
|
- }
|
|
|
- item.add(org.apache.commons.lang3.StringUtils.isEmpty(project.getAssociateDegreeNames())?"":first.get().getAssociateDegreeNames());
|
|
|
- }else {
|
|
|
- item.add("");
|
|
|
- item.add("");
|
|
|
- item.add("");
|
|
|
- }
|
|
|
-
|
|
|
- Optional<TaskGroup> groupOptional = taskGroupList.stream().filter(g -> task.getGroupId() != null && g.getId().equals(task.getGroupId())).findFirst();
|
|
|
- if (groupOptional.isPresent()){
|
|
|
- TaskGroup group = groupOptional.get();
|
|
|
- item.add(group.getName());
|
|
|
+ item.add(first.get().getProjectName());
|
|
|
}else {
|
|
|
item.add("");
|
|
|
}
|
|
|
-
|
|
|
item.add(task.getStagesName());
|
|
|
+ switch (task.getTaskLevel()){
|
|
|
+ case 0:item.add("一般");
|
|
|
+ break;
|
|
|
+ case 1:item.add("重要");
|
|
|
+ break;
|
|
|
+ case 2:item.add("紧急");
|
|
|
+ break;
|
|
|
+ }
|
|
|
item.add(task.getName());
|
|
|
- item.add(task.getFirstAuditorName());
|
|
|
- item.add(task.getSecondAuditorName());
|
|
|
- item.add(task.getPlanHours()==null?"": String.valueOf(new BigDecimal(task.getPlanHours().toString()).setScale(2,BigDecimal.ROUND_HALF_UP))==null?"": String.valueOf(new BigDecimal(task.getPlanHours().toString()).setScale(2,BigDecimal.ROUND_HALF_UP)));
|
|
|
- item.add(
|
|
|
- task.getPlanHours() == null ? "" :
|
|
|
- new BigDecimal(task.getPlanHours().toString())
|
|
|
- .divide(
|
|
|
- BigDecimal.valueOf(monthTime),
|
|
|
- 2, // 保留2位小数
|
|
|
- RoundingMode.HALF_UP // 四舍五入
|
|
|
- )
|
|
|
- .toString()
|
|
|
- );
|
|
|
-
|
|
|
-
|
|
|
+ List<TaskExecutor> executorList = task.getExecutorList();
|
|
|
+ String executorString = executorList.stream().map(t->{
|
|
|
+ if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
|
|
|
+ return "$userName="+t.getExecutorName()+"$";
|
|
|
+ }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
|
|
|
+ return "$userName="+t.getExecutorName()+"$";
|
|
|
+ }else {
|
|
|
+ return t.getExecutorName();
|
|
|
+ }
|
|
|
+ }).collect(Collectors.joining(","));
|
|
|
+ item.add(executorString);
|
|
|
+ item.add(StringUtils.isEmpty(task.getFirstAuditorName())?"":task.getFirstAuditorName());
|
|
|
+ item.add(StringUtils.isEmpty(task.getSecondAuditorName())?"":task.getSecondAuditorName());
|
|
|
Integer taskStatus = task.getTaskStatus();
|
|
|
if (taskStatus == null) {
|
|
|
item.add("");
|
|
@@ -1816,6 +1783,27 @@ public class TaskController {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+ item.add(task.getStartDate()==null?"":df.format(task.getStartDate()));
|
|
|
+ item.add(task.getEndDate()==null?"":df.format(task.getEndDate()));
|
|
|
+ if(anyMatch){
|
|
|
+ if(first.isPresent()){
|
|
|
+ Project project = first.get();
|
|
|
+ Optional<Department> department = departmentList.stream().filter(d -> d.getDepartmentId().equals(project.getDeptId())).findFirst();
|
|
|
+ if(department.isPresent()){
|
|
|
+ if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
|
|
|
+ item.add("$departmentName="+department.get().getCorpwxDeptid()+"$");
|
|
|
+ }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
|
|
|
+ item.add("$departmentName="+department.get().getDdDeptid()+"$");
|
|
|
+ } else {
|
|
|
+ item.add(department.get().getDepartmentName());
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ item.add("");
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ item.add("");
|
|
|
+ }
|
|
|
+ }
|
|
|
dataList.add(item);
|
|
|
}
|
|
|
String fileName = "工作计划导出_"+System.currentTimeMillis();
|