ソースを参照

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

Lijy 1 年間 前
コミット
a4c2466f94

+ 12 - 9
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -245,6 +245,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     private CompanyDingdingMapper companyDingdingMapper;
     private CompanyDingdingMapper companyDingdingMapper;
     @Resource
     @Resource
     private CompanyDingdingService companyDingdingService;
     private CompanyDingdingService companyDingdingService;
+    @Resource
+    private TaskExecutorService taskExecutorService;
 
 
     @Value(value = "${upload.path}")
     @Value(value = "${upload.path}")
     private String path;
     private String path;
@@ -13794,18 +13796,19 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             resultList=projectMapper.projectExpendProcessList(startDate,endDate,projectId,categoryId,userId,companyId,null,start,size);
             resultList=projectMapper.projectExpendProcessList(startDate,endDate,projectId,categoryId,userId,companyId,null,start,size);
             total=projectMapper.projectExpendProcessListCount(startDate,endDate,projectId,categoryId,userId,companyId,null);
             total=projectMapper.projectExpendProcessListCount(startDate,endDate,projectId,categoryId,userId,companyId,null);
         }
         }
+        List<Integer> projectList = resultList.stream().map(i -> (Integer) i.get("projectId")).distinct().collect(Collectors.toList());
+        List<TaskExecutor> taskExecutorList = taskExecutorService.list(new LambdaQueryWrapper<TaskExecutor>().in(TaskExecutor::getProjectId, projectList));
+        List<String> executorIds = taskExecutorList.stream().map(TaskExecutor::getExecutorId).distinct().collect(Collectors.toList());
+        List<Report> reportList = reportMapper.selectList(new LambdaQueryWrapper<Report>().eq(Report::getCompanyId,companyId).eq(Report::getState,1).in(Report::getProjectId, projectList).in(Report::getCreatorId, executorIds).between(Report::getCreateDate, startDate, endDate));
         for (Map<String, Object> map : resultList) {
         for (Map<String, Object> map : resultList) {
-            if(StringUtils.isEmpty(String.valueOf(map.get("executorString")))){
-                continue;
-            }
-            String executorString = String.valueOf(map.get("executorString"));
-            List<String> list = ListUtil.convertLongIdsArrayToList(executorString);
             List<Map<String,Object>> itemList=new ArrayList<>();
             List<Map<String,Object>> itemList=new ArrayList<>();
-            for (String str : list) {
-                String[] split = str.split("\\|");
+            List<TaskExecutor> executors = taskExecutorList.stream().filter(t -> t.getProjectId().equals((Integer) map.get("projectId"))).collect(Collectors.toList());
+            for (TaskExecutor taskExecutor : executors) {
+                List<Report> reports = reportList.stream().filter(r -> r.getCreatorId().equals(taskExecutor.getExecutorId())&&r.getProjectId().equals((Integer)map.get("projectId"))).collect(Collectors.toList());
+                double sum = reports.stream().mapToDouble(Report::getWorkingTime).sum();
                 Map<String,Object> item=new HashMap<>();
                 Map<String,Object> item=new HashMap<>();
-                item.put("userName",split[0]);
-                item.put("progress",split[1]);
+                item.put("userName",taskExecutor.getExecutorName());
+                item.put("progress",sum);
                 itemList.add(item);
                 itemList.add(item);
             }
             }
             Map<String, List<Map<String, Object>>> listMapGroup = itemList.stream().collect(Collectors.groupingBy(i -> String.valueOf(i.get("userName"))));
             Map<String, List<Map<String, Object>>> listMapGroup = itemList.stream().collect(Collectors.groupingBy(i -> String.valueOf(i.get("userName"))));

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -5582,11 +5582,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 if(needCorpWxTranslate){
                 if(needCorpWxTranslate){
                     item.add("$userName="+(map.get("corpwxUserId")==null?"":map.get("corpwxUserId"))+"$");
                     item.add("$userName="+(map.get("corpwxUserId")==null?"":map.get("corpwxUserId"))+"$");
                     item.add(departmentService.exportWxDepartment(dept,departments));
                     item.add(departmentService.exportWxDepartment(dept,departments));
-                    item.add(manager.isPresent()?manager.get().getName():"");
+                    item.add(manager.isPresent()?("$userName="+manager.get().getName()+"$"):"");
                 }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
                 }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
                     item.add("$userName="+(map.get("name")==null?"":map.get("name"))+"$");
                     item.add("$userName="+(map.get("name")==null?"":map.get("name"))+"$");
                     item.add(departmentService.exportDdDepartment(dept,departments));
                     item.add(departmentService.exportDdDepartment(dept,departments));
-                    item.add(manager.isPresent()?manager.get().getName():"");
+                    item.add(manager.isPresent()?("$userName="+manager.get().getName()+"$"):"");
                 }else  {
                 }else  {
                     item.add((String) map.get("name"));
                     item.add((String) map.get("name"));
                     item.add(departmentService.getSupDepartment(dept,departments));
                     item.add(departmentService.getSupDepartment(dept,departments));

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

@@ -1918,8 +1918,7 @@
     <select id="projectExpendProcessList" resultType="java.util.Map">
     <select id="projectExpendProcessList" resultType="java.util.Map">
         select p.id AS projectId,p.project_name as projectName,DATE_FORMAT(p.`plan_start_date`,'%Y-%m-%d') AS planStartDate,DATE_FORMAT(p.`plan_end_date`,'%Y-%m-%d') AS planEndDate,pc.name as categoryName,p.project_code as projectCode,IFNULL(SUM(te.plan_hours),0) as planHour,
         select p.id AS projectId,p.project_name as projectName,DATE_FORMAT(p.`plan_start_date`,'%Y-%m-%d') AS planStartDate,DATE_FORMAT(p.`plan_end_date`,'%Y-%m-%d') AS planEndDate,pc.name as categoryName,p.project_code as projectCode,IFNULL(SUM(te.plan_hours),0) as planHour,
         IFNULL((select SUM(working_time) from report where project_id=p.id and create_date BETWEEN #{startDate} AND #{endDate} and state=1),0) as realHour, IFNULL((select SUM(cost) from report where project_id=p.id and create_date BETWEEN #{startDate} AND #{endDate} and state=1),0) as realCost,
         IFNULL((select SUM(working_time) from report where project_id=p.id and create_date BETWEEN #{startDate} AND #{endDate} and state=1),0) as realHour, IFNULL((select SUM(cost) from report where project_id=p.id and create_date BETWEEN #{startDate} AND #{endDate} and state=1),0) as realCost,
-        IFNULL(IFNULL(SUM(te.plan_hours),0)-IFNULL((select SUM(working_time) from report where project_id=p.id and create_date BETWEEN #{startDate} AND #{endDate} and state=1),0),0) as residueHour,
-        GROUP_CONCAT(CONCAT_WS('|',te.executor_name,IFNULL((select SUM(working_time) from report where creator_id=te.executor_id and project_id=p.id and create_date BETWEEN #{startDate} AND #{endDate} and state=1),0))) as executorString
+        IFNULL(IFNULL(SUM(te.plan_hours),0)-IFNULL((select SUM(working_time) from report where project_id=p.id and create_date BETWEEN #{startDate} AND #{endDate} and state=1),0),0) as residueHour
         from task_executor te
         from task_executor te
         left join  user u on u.id=te.executor_id
         left join  user u on u.id=te.executor_id
         left join department d on u.department_id=d.department_id
         left join department d on u.department_id=d.department_id