فهرست منبع

美莱德FTE报表修改

seyason 9 ماه پیش
والد
کامیت
e43d5e528b

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -1317,6 +1317,7 @@ public class ReportController {
             }).get();
             //该逻辑生效日期
             LocalDate effectiveDate = LocalDate.of(2024, 8, 14);
+//            System.out.println(reportOwner.getId()+", maxDate:"+maxDate);
             if (maxDate.isAfter(effectiveDate)) {
                 //取最近五个工作日
                 int cnt = 0;

+ 20 - 17
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -11975,9 +11975,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         titleList.add("工时(H)");
         titleList.add("FTE(工时/当月工时基数)");
         if(user.getCompanyId()==876){
-            titleList.add("FTE(工时/固定工时基数(163.125))");
+            titleList.add("非项目工时(H)");
+        } else {
+            titleList.add("非项目工时(H)(当月工时基数-项目工时合计工时数)");
         }
-        titleList.add("非项目工时(H)(当月工时基数-项目工时合计工时数)");
+
         dataList.add(titleList);
         subtitle.add("");
         subtitle.add("");
@@ -11987,13 +11989,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         subtitle.add("");
         subtitle.add("");
         subtitle.add("");
-        if(user.getCompanyId()==876){
-            subtitle.add("");
-        }
         subtitle.add("当月工时:" + monthTime);
         dataList.add(subtitle);
         Map<String, List<Map<String, Object>>> listMap = resultList.stream().collect(Collectors.groupingBy(i -> String.valueOf(i.get("area"))));
         List<String> areaList = resultList.stream().map(i -> String.valueOf(i.get("area"))).distinct().collect(Collectors.toList());
+        BigDecimal nonTotal = new BigDecimal(0.0);
         for (String areaName : areaList) {
             List<Map<String, Object>> mapList = listMap.get(areaName);
             Map<String, List<Map<String, Object>>> listMap1 = mapList.stream().collect(Collectors.groupingBy(m -> String.valueOf(m.get("id"))));
@@ -12004,7 +12004,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 if(maps==null){
                     continue;
                 }
-                //计算当前人员的合计
+                //计算当前人员的每个项目
                 for (int i = 0; i < maps.size(); i++) {
                     Map<String, Object> map = maps.get(i);
                     List<String> item=new ArrayList<>();
@@ -12031,10 +12031,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     item.add(workTime + "");
                     Float FTE = Float.valueOf(map.get("workTime").toString()) / monthTime;
                     item.add(new BigDecimal(FTE).setScale(2, RoundingMode.HALF_UP) + "");
-                    if(user.getCompanyId()==876){
-                        Float FTERegular = Float.valueOf(map.get("workTime").toString()) / (Float.valueOf(String.valueOf("163.125"))*(period.getMonths()+1));
-                        item.add(new BigDecimal(FTERegular).setScale(2, RoundingMode.HALF_UP) + "");
-                    }
                     item.add("");
                     dataList.add(item);
                 }
@@ -12061,12 +12057,14 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }).sum();
                 item.add(new BigDecimal(FTESum).setScale(2,RoundingMode.HALF_UP)+"");
                 if(user.getCompanyId()==876){
-                    double FTERegularSum = maps.stream().mapToDouble(m -> {
-                        return Float.valueOf(m.get("workTime").toString()) / (Float.valueOf(String.valueOf("163.125"))*(period.getMonths()+1));
-                    }).sum();
-                    item.add(new BigDecimal(FTERegularSum).setScale(2,RoundingMode.HALF_UP)+"");
+                    double nonProjectSum = (double)maps.get(0).get("nonProjectWorkingTime");
+                    BigDecimal nonBd = new BigDecimal(nonProjectSum).setScale(2,RoundingMode.HALF_UP);
+                    item.add(nonBd+"");
+                    nonTotal = nonTotal.add(nonBd);
+                } else {
+                    item.add(new BigDecimal(monthTime-workTimeSum).setScale(2,RoundingMode.HALF_UP)+"");
                 }
-                item.add(new BigDecimal(monthTime-workTimeSum).setScale(2,RoundingMode.HALF_UP)+"");
+
                 dataList.add(item);
             }
             //增加自定义维度合计行
@@ -12080,8 +12078,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             double workTimeSum = mapList.stream().mapToDouble(m -> Double.valueOf(String.valueOf(m.get("workTime")))).sum();
             item.add(new BigDecimal(workTimeSum).setScale(2,RoundingMode.HALF_UP)+"");
             item.add("");
-            item.add("");
-            item.add(new BigDecimal((monthTime-workTimeSum)).setScale(2,RoundingMode.HALF_UP)+"");
+            if(user.getCompanyId()==876){
+                //直接抽取非项目工时
+                item.add(nonTotal.setScale(2,RoundingMode.HALF_UP)+"");
+            } else {
+                item.add(new BigDecimal((monthTime-workTimeSum)).setScale(2,RoundingMode.HALF_UP)+"");
+            }
+
             dataList.add(item);
         }
         String fileName = "FTE报表"+System.currentTimeMillis();

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

@@ -2173,7 +2173,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     if (timeType.getReportAuditType() == 5) {
                         if(hasAuditAllPri || ((r.getIsDeptAudit() == 0 &&  user.getId().equals(r.getProjectAuditorId()))
                                 || (r.getIsDeptAudit() == 1 && user.getId().equals(r.getAuditDeptManagerid())))){
-                            if (thirdAuditor != null && secondAuditor != null) {
+                            if (!StringUtils.isEmpty(thirdAuditor) && !StringUtils.isEmpty(secondAuditor)) {
                                 if (user.getId().equals(thirdAuditor)) {
                                     //当前为第三审核人在审核,直接通过
                                     newReport.setState(1);
@@ -3482,7 +3482,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     if (timeType.getReportAuditType() == 5) {
                         if(hasAuditAllPri || ((r.getIsDeptAudit() == 0 &&  user.getId().equals(r.getProjectAuditorId()))
                                 || (r.getIsDeptAudit() == 1 && user.getId().equals(r.getAuditDeptManagerid())))){
-                            if (thirdAuditor != null && secondAuditor != null) {
+                            if (!StringUtils.isEmpty(thirdAuditor) && !StringUtils.isEmpty(secondAuditor)) {
                                 if (user.getId().equals(thirdAuditor)) {
                                     //当前为第三审核人在审核,直接通过
                                     r.setState(1);

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

@@ -1720,7 +1720,8 @@
     </select>
 
     <select id="getFTEData" resultType="java.util.Map">
-        SELECT u.id,u.name userName,d.department_name as departmentName,d.corpwx_deptid as wxdeptId,u.corpwx_userid as wxUserId,IF(u.plate1 IS NULL OR u.plate1='' ,'无',u.plate1) as area,IFNULL(r.projectName,'') as projectName,IFNULL(r.projectCode,'') as projectCode,IFNULL(r.workTime,0) as workTime
+        SELECT u.id,u.name userName,d.department_name as departmentName,d.corpwx_deptid as wxdeptId,u.corpwx_userid as wxUserId,IF(u.plate1 IS NULL OR u.plate1='' ,'无',u.plate1) as area,IFNULL(r.projectName,'') as projectName,
+               IFNULL(r.projectCode,'') as projectCode,IFNULL(r.workTime,0) as workTime,IFNULL(t.nonProjectWorkingTime,0) as nonProjectWorkingTime
         FROM `user` u
         LEFT JOIN department d on u.department_id=d.department_id
         LEFT JOIN (
@@ -1750,6 +1751,33 @@
         GROUP BY user.id,p.id,user.plate1,p.project_name,p.project_code
         ) r
         ON u.id = r.creator_id
+        LEFT JOIN (
+        SELECT report.creator_id,SUM(working_time) nonProjectWorkingTime
+        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 = 1
+        AND report.company_id=#{companyId}
+        AND
+        (
+        IF(user.induction_date is not null AND user.induction_date &gt; #{startDate} and user.inactive_date is not null AND user.`is_active`=0 AND user.inactive_date &lt; #{endDate}
+        ,report.create_date BETWEEN user.induction_date AND user.inactive_date
+        ,report.create_date BETWEEN #{startDate} AND #{endDate} )
+        and
+        IF(user.induction_date is not null AND user.induction_date &gt; #{startDate}
+        ,report.create_date BETWEEN user.induction_date AND #{endDate}
+        ,report.create_date BETWEEN #{startDate} AND #{endDate} )
+        and
+        IF(user.inactive_date is not null AND user.`is_active`=0 AND user.inactive_date &lt; #{endDate}
+        ,report.create_date BETWEEN #{startDate} AND user.inactive_date
+        ,report.create_date BETWEEN #{startDate} AND #{endDate} )
+        )
+        GROUP BY user.id
+        ) t
+        ON u.id = t.creator_id
         WHERE u.company_id=#{companyId}
         AND (workTime>0 OR u.`is_active`=1)
         <if test="area!=null and area != '' ">

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -1000,7 +1000,7 @@
             <!-- FTE报表 -->
             <el-table v-if="ins == 19"  key="19" border :data="fTEDataList" highlight-current-row v-loading="listLoading" :height="+tableHeight - 1" style="width: 100%;" @sort-change="tableSort">
                 <el-table-column align="center" prop="area" :label="customName" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="projectCode" :label="user.companyId == '7030' ? '项目令号' : $t('Itemno')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="projectCode" :label="user.companyId == '7030' ? '项目令号' : $t('Itemno')" min-width="250"></el-table-column>
                 <el-table-column align="center" prop="projectName" :label="$t('headerTop.projectName')" min-width="250"></el-table-column>
                 <el-table-column align="center" prop="userName" :label="$t('renMing')" min-width="150" sortable="custom">
                   <template slot-scope="scope">
@@ -1016,7 +1016,7 @@
                 </el-table-column>
                 <el-table-column align="center" prop="workTime" :label="$t('time.workingHours')" min-width="150"></el-table-column>
                 <el-table-column align="center" prop="FTE" :label="$t('fteGongShiDangYueGongShiJiShu')" min-width="250"></el-table-column>
-                <el-table-column v-if="user.companyId==876" align="center" prop="FTERegular" :label="$t('fteGongShiGuDingGongShiJiShu_163125')" min-width="300"></el-table-column>
+                <!-- <el-table-column v-if="user.companyId==876" align="center" prop="FTERegular" :label="$t('fteGongShiGuDingGongShiJiShu_163125')" min-width="300"></el-table-column> -->
             </el-table>
 
             <!-- 有效工时率表 -->