Browse Source

有效工时率编写,待威派格提供人员名单,代码修改1

yusm 1 year ago
parent
commit
aa69658a56

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/UserMapper.java

@@ -48,4 +48,6 @@ public interface UserMapper extends BaseMapper<User> {
     int getIsActiveCount(ArrayList<Integer> deptIds, String startDate, String endDate);
 
     List<User> getInActiveList(ArrayList<Integer> deptIds, String startDate, String endDate);
+
+    List<User> getInActiveBewttenStartAndEndList(ArrayList<Integer> deptIds, String startDate, String endDate);
 }

+ 15 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -11304,17 +11304,28 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 String inactiveDate = user.getInactiveDate().format(formatter);
                 inActiveDays+=WorkDayCalculateUtils.getWorkDaysCountInRange(startDate,inactiveDate,0);
             }
+
             //-- 查询 有多少个  入职时间早于起始时间 并且是在职的员工
             int isActiveCount=userMapper.getIsActiveCount(deptIds,startDate,endDate);
 
+            //-- 查询 有多少个  入职时间晚于起始时间 并且在这段时间离职的员工
+            List<User> inActiveBewttenStartAndEndList=userMapper.getInActiveBewttenStartAndEndList(deptIds,startDate,endDate);
+            //获取入职时间晚于起始时间 并且在这段时间离职的员工在此期间工作多少天
+            for (User user : inActiveBewttenStartAndEndList) {
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                String inactiveDate = user.getInactiveDate().format(formatter);
+                String inductionDate = user.getInductionDate().format(formatter);
+                inActiveDays+=WorkDayCalculateUtils.getWorkDaysCountInRange(inductionDate,inactiveDate,0);
+            }
+
             laborHourRateVo.setWorking_time(timeSum);
             laborHourRateVo.setDate_count(dayCount);
             laborHourRateVo.setCount(isActiveCount);
-            laborHourRateVo.setTotal_time((long) (inActiveList.size()*8*inActiveDays+isActiveCount*8*dayCount));//应报工时还少了在职的加上可能辞职的
-//            System.out.println("============="+inActiveDays);
-//            System.out.println("============="+isActiveCount);
+            laborHourRateVo.setTotal_time((long) (8*inActiveDays+isActiveCount*8*dayCount));//应报工时还少了在职的加上可能辞职的
+            System.out.println("============="+inActiveDays);
+            System.out.println("============="+isActiveCount);
             laborHourRateVo.setDay_time(8);
-            laborHourRateVo.setRate(timeSum/(inActiveList.size()*8*inActiveDays+isActiveCount*8*dayCount)*100);
+            laborHourRateVo.setRate(timeSum/(8*inActiveDays+isActiveCount*8*dayCount)*100);
             laborHourRateVos.add(laborHourRateVo);
         }
 

+ 17 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserMapper.xml

@@ -193,7 +193,8 @@
             #{id}
         </foreach>
         AND r.create_date BETWEEN #{startDate} AND #{endDate})
-        AND is_active=1 AND (inactive_date >= #{endDate} OR inactive_date is null) AND induction_date &lt;= #{startDate}
+--         AND is_active=1 AND (inactive_date >= #{endDate} OR inactive_date is null) AND induction_date &lt;= #{startDate}
+        AND is_active=1 AND induction_date &lt;= #{startDate}
     </select>
 
     <select id="getInActiveList" resultType="com.management.platform.entity.User">
@@ -210,4 +211,19 @@
         AND r.create_date BETWEEN #{startDate} AND #{endDate})
         AND inactive_date BETWEEN #{startDate} AND #{endDate} and induction_date &lt;= #{startDate}
     </select>
+
+    <select id="getInActiveBewttenStartAndEndList" resultType="com.management.platform.entity.User">
+        SELECT user.* FROM user
+        WHERE id in
+              (SELECT DISTINCT r.creator_id  FROM report r
+               LEFT JOIN project p
+               ON r.project_id=p.id
+               WHERE p.company_id=936 AND p.category IN(168,169,171,172)
+               AND r.dept_id IN
+                <foreach collection="deptIds" item="id" open="(" close=")" separator=",">
+                    #{id}
+                </foreach>
+               AND r.create_date BETWEEN #{startDate} AND #{endDate})
+          AND induction_date BETWEEN #{startDate} AND #{endDate} AND inactive_date BETWEEN #{startDate} AND #{endDate}
+    </select>
 </mapper>