yusm 2 napja
szülő
commit
c73b5a8054

+ 95 - 0
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -44,6 +44,7 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.apache.poi.xssf.usermodel.*;
 import org.assertj.core.util.Lists;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -264,10 +265,15 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     @Resource
     private ProjectLeaderService projectLeaderService;
 
+    @Resource
+    private TaskTypeService taskTypeService;
+
     @Value(value = "${upload.path}")
     private String path;
     @Value("${configEnv.isDev}")
     public boolean isDev;
+    @Autowired
+    private TaskDailyAllocateMapper taskDailyAllocateMapper;
 
     @Override
     public HttpRespMsg getProjectListByPage(Integer pageIndex, Integer pageSize, String infoString, Integer id, Integer forReport, HttpServletRequest request) {
@@ -1271,6 +1277,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     projectIds.add(projectId);
                 }
             }
+            List<Project> managerList = projectMapper.selectList(new QueryWrapper<Project>().eq("incharger_id", user.getId()));
+            if (!managerList.isEmpty()){
+                List<Integer> list = managerList.stream().distinct().map(Project::getId).collect(Collectors.toList());
+                projectIds.addAll(list);
+            }
             eq.in("id", projectIds);
         }
 
@@ -5240,6 +5251,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         }
 
         msg.data = itemList;
+        if (type==1){
+            for (GanttDataItem dataItem : itemList) {
+                if (dataItem.getProjectId()==null){
+                    dataItem.setTime(0.0);
+                }
+            }
+        }
         if (type==0){
             for (GanttDataItem dataItem : itemList) {
                 if (!dataItem.getId().contains("任务_")){
@@ -13694,6 +13712,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<Department> userDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()).eq("company_id",user.getCompanyId()));
         List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
         List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", user.getCompanyId()));
+        List<TaskType> taskTypeList = taskTypeService.list(new QueryWrapper<TaskType>().eq("company_id", user.getCompanyId()));
+
         //判断查看权限
         if(functionAllList.size()==0){
             deptIds=new ArrayList<>();
@@ -13724,10 +13744,21 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", user.getCompanyId()));
         Float monthTime = days * allDay.getAllday();
         List<Map<String, Object>> list = projectMapper.getFTETaskPlanData(user.getCompanyId(), startDate, endDate, null, null, area, userId, null, null, null, deptIds, departmentId);
+        List<TaskDailyAllocate> dailyAllocateArrayList = new ArrayList<>();
+        List<Integer> taskIdList = list.stream().map(t -> (Integer)t.get("id")).distinct().collect(Collectors.toList());
+        dailyAllocateArrayList=taskDailyAllocateMapper.selectList(new QueryWrapper<TaskDailyAllocate>().in("task_id",taskIdList));
         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("研究中心");
@@ -13741,9 +13772,73 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         titleList.add("审核状态");
         dataList.add(titleList);
 
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
+
         for (int i = 0; i < list.size(); i++) {
             List<String> item=new ArrayList<>();
             item.add((i+1)+"");
+            Map<String, Object> map = list.get(i);
+            Integer taskId= (Integer) map.get("id");
+            String userIdStr= (String) map.get("userId");
+            Integer departmentIdStr= Math.toIntExact((Long) map.get("departmentId"));
+            Optional<Department> deptFirst = allDepartmentList.stream().filter(f -> f.getDepartmentId().equals(departmentIdStr)).findFirst();
+
+            List<TaskDailyAllocate> sortedList = dailyAllocateArrayList.stream()
+                    .filter(t -> t.getTaskId().equals(taskId)&&t.getUserId().equals(userIdStr))
+                    .sorted(Comparator.comparing(TaskDailyAllocate::getAllocateDate)) // 按 AllocateDate 递增排序
+                    .collect(Collectors.toList());
+            String dateStr="";
+            if (!sortedList.isEmpty()){
+                if (sortedList.size()==1) {
+                    TaskDailyAllocate t1 = sortedList.get(0);
+                    dateStr=t1.getAllocateDate().format(formatter)+"-"+t1.getAllocateDate().format(formatter);
+                }else {
+                    LocalDate d1 = sortedList.get(0).getAllocateDate();
+                    LocalDate d2 = sortedList.get(sortedList.size()-1).getAllocateDate();
+                    dateStr=d1.format(formatter)+"-"+d2.format(formatter);
+                }
+
+            }
+
+            item.add(dateStr);//起止时间
+            item.add(sortedList.size()+"天");//天数
+
+            //所属部门
+            if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                if(!deptFirst.isPresent()){
+                    item.add("未分配");
+                }else {
+                    item.add(departmentService.exportWxDepartment(deptFirst.get(),allDepartmentList));
+                }
+            }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
+                if(!deptFirst.isPresent()){
+                    item.add("未分配");
+                }else {
+                    item.add(departmentService.exportDdDepartment(deptFirst.get(),allDepartmentList));
+                }
+            }else {
+                item.add(departmentService.getSupDepartment(deptFirst.get(),allDepartmentList));
+            }
+
+            //岗位
+            item.add(list.get(i).get("roleName")==null?"":list.get(i).get("roleName").toString());
+            //姓名
+            if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                item.add((String)("$userName="+map.get("corpwxUserId")+"$"));
+
+            }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
+                item.add((String)("$userName="+map.get("userName")+"$"));
+
+            }else {
+                item.add((String)map.get("userName"));
+            }
+
+            Integer taskPlanType= (Integer) map.get("taskPlanType");
+            Optional<TaskType> typeOptional = taskTypeList.stream().filter(t -> t.getId().equals(taskPlanType)).findFirst();
+            item.add(typeOptional.isPresent()?typeOptional.get().getName():""); //工作计划类型
+            item.add(list.get(i).get("projectCode")==null?"":list.get(i).get("projectCode").toString());//项目编号
+            item.add(list.get(i).get("projectName")==null?"":list.get(i).get("projectName").toString());//项目名称
+
             item.add(list.get(i).get("categoryName")==null?"":list.get(i).get("categoryName").toString());
             String inchargerId = list.get(i).get("inchargerId") != null ? list.get(i).get("inchargerId").toString() : "";
             if (!StringUtils.isEmpty(inchargerId)){

+ 3 - 1
fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/mapper/ProjectMapper.xml

@@ -2901,15 +2901,17 @@
         ORDER BY project.id, task.start_date
     </select>
     <select id="getFTETaskPlanData" resultType="java.util.Map">
-        select t.id,  u.plate1 area, p.project_code projectCode,p.project_name projectName,u.name userName, t.plan_hours planHours
+        select t.id,  u.plate1 area, p.project_code projectCode,p.project_name projectName,u.name userName, te.plan_hours planHours
         ,p.category_name categoryName,p.incharger_id inchargerId,p.associate_degree_names associateDegreeNames,tg.name groupName,
         stages.stages_name stagesName,t.name taskName,te.first_auditor_id firstAuditorId, te.second_auditor_id secondAuditorId,t.task_status auditStatus
+        ,u.department_id departmentId,u.role_name roleName,t.task_plan_type taskPlanType,u.id userId,u.corpwx_userid as corpwxUserId,department.corpwx_deptid as corpwxDeptId,department.dd_deptid as corpDdDeptId
         from task t
           left join stages on stages.id = t.stages_id
           left join task_group tg on tg.id=t.group_id
           left join project p on t.project_id=p.id
           LEFT JOIN task_executor te on t.id=te.task_id
           INNER JOIN user u on u.id=te.executor_id
+          left join department on department.department_id = u.department_id
         WHERE u.company_id=#{companyId} and ( t.task_status = 3 OR t.task_status = 4 )
         <if test="area!=null and area != '' ">
             and u.plate1 = #{area}