cs %!s(int64=2) %!d(string=hai) anos
pai
achega
149a3368a5

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

@@ -63,6 +63,7 @@ import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 
 /**
@@ -10032,7 +10033,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         int days = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 0).size();
         TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", targetUser.getCompanyId()));
         Float monthTime = days * allDay.getAllday();
-
         if(pageIndex!=null&&pageSize!=null){
             Integer size=pageSize;
             Integer start=(pageIndex-1)*size;
@@ -10042,7 +10042,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             resultList=projectMapper.getFTEData(targetUser.getCompanyId(),startDate,endDate,null,null,area,branchDepartment,deptIds);
         }
         for (Map<String, Object> map : resultList) {
-            map.put("FTE",Float.parseFloat(map.get("workTime").toString())/monthTime);
+            map.put("FTE",Float.parseFloat(map.get("workTime") == null?"0":map.get("workTime").toString())/monthTime);
         }
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", targetUser.getCompanyId()));
         if (wxCorpInfo != null && wxCorpInfo.getSaasSyncContact().equals(1)){
@@ -10100,6 +10100,15 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         Float aTimeSum = 0.0F;
         Float aFteSum = 0.0F;
         for (int i = 0; i < resultList.size(); i++) {
+            if(resultList.get(i).get("workTime") == null){
+                resultList.get(i).put("workTime",0);
+            }
+            if(resultList.get(i).get("projectName") == null){
+                resultList.get(i).put("projectName","");
+            }
+            if(resultList.get(i).get("projectCode") == null){
+                resultList.get(i).put("projectCode","");
+            }
             if (!resultList.get(i).containsKey("area")){
                 resultList.get(i).put("area","无");
             }else if(org.apache.commons.lang3.StringUtils.isBlank(resultList.get(i).get("area").toString())){

+ 16 - 10
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -1612,16 +1612,23 @@
     </select>
 
     <select id="getFTEData" resultType="java.util.Map">
-        SELECT u.id,u.name userName,u.corpwx_userid wxUserId,u.plate1 area,SUM(r.working_time) workTime,p.project_name projectName,p.project_code projectCode
+        SELECT u.id,u.name userName,u.corpwx_userid wxUserId,u.plate1 area,r.projectName,r.projectCode,r.workTime
         FROM `user` u
-        LEFT JOIN report r
+        LEFT JOIN (
+            SELECT p.project_name projectName,p.project_code projectCode,report.working_time,report.creator_id,SUM(working_time) workTime
+            FROM report
+            LEFT JOIN project p
+            ON report.project_id = p.id
+            LEFT JOIN `user`
+            ON user.id = report.creator_id
+            WHERE report.state = 1
+            AND p.is_public = 0
+            AND report.company_id=#{companyId}
+            AND report.create_date BETWEEN #{startDate} AND #{endDate}
+            GROUP BY user.id,p.id,user.plate1,p.project_name,p.project_code
+        ) r
         ON u.id = r.creator_id
-        LEFT JOIN project p
-        ON r.project_id = p.id
-        WHERE r.state = 1
-        AND p.is_public = 0
-        AND u.company_id=#{companyId}
-        AND r.create_date BETWEEN #{startDate} AND #{endDate}
+        WHERE u.company_id=#{companyId}
         <if test="area!=null and area != '' ">
             and u.plate1 = #{area}
         </if>
@@ -1637,8 +1644,7 @@
                 #{item}
             </foreach>
         </if>
-        GROUP BY u.id,p.id,u.plate1,p.project_name,u.name,u.corpwx_userid,p.project_code
-        order by area,id
+        order by area,workTime,id
         <if test="start!=null and size!=null">
             limit #{start},#{size}
         </if>