Преглед на файлове

明夷的考勤日报时长修正

seyason преди 1 година
родител
ревизия
5d10b96894

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

@@ -441,6 +441,40 @@ public class ReportController {
         List<Integer> integers = Arrays.asList(projectId);
         List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", integers));
         TimeType comTimeType = timeTypeMapper.selectById(user.getCompanyId());
+        //HARDCODE: 成都明夷电子,需要根据考勤重新计算每日工作时长;
+//        if (company.getCompanyName().equals("成都明夷电子科技有限公司")) {
+//            if (createDate.length > 0) {
+//                workingTime = new Double[projectId.length];
+//                String createDateOne = createDate[0];
+//                if (createDateOne.contains("@")) {
+//                    //批量填报;代填
+//                    String[] dateArray = createDateOne.split("@");
+//                    List<LocalDate> workDaysListInRange = WorkDayCalculateUtils.getWorkDaysListInRange(dateArray[0], dateArray[dateArray.length - 1], comTimeType.getIncludeWeekends());
+//                    for (int i=0;i<workDaysListInRange.size(); i++) {
+//                        LocalDate date = workDaysListInRange.get(i);
+//                        //获取当天考勤
+//                        UserFvTime fvTime = userFvTimeService.getOne(new QueryWrapper<UserFvTime>().eq("work_date", date).eq("company_id", user.getCompanyId()).eq("user_id", user.getId()));
+//                        if (fvTime == null) {
+//                            //无考勤按八小时填报
+//                            workingTime[i] = 8.0 * progress[i]/100;
+//                        } else {
+//                            workingTime[i] = fvTime.getWorkHours().doubleValue() * progress[i]/100;
+//                        }
+//                    }
+//                } else{
+//                    UserFvTime fvTime = userFvTimeService.getOne(new QueryWrapper<UserFvTime>().eq("work_date", createDateOne).eq("company_id", user.getCompanyId()).eq("user_id", user.getId()));
+//                    for (int i=0;i<workingTime.length; i++) {
+//                        if (fvTime == null) {
+//                            //无考勤按八小时填报
+//                            workingTime[i] = 8.0 * progress[i]/100;
+//                        } else {
+//                            workingTime[i] = fvTime.getWorkHours().doubleValue() * progress[i]/100;
+//                        }
+//                    }
+//                }
+//
+//            }
+//        }
 
 
         List<ReportAuditorSetting> auditorSettingList = null;
@@ -1291,6 +1325,20 @@ public class ReportController {
                 }
             }
         }
+
+        //成都明夷电子,按比例分配的情况,需要重新计算每日的工作时长和分配的时长
+        if (company.getCompanyName().equals("成都明夷电子科技有限公司") && comTimeType.getType() == 3) {
+            for (Report r : reportList) {
+                UserFvTime fvTime = userFvTimeService.getOne(new QueryWrapper<UserFvTime>().eq("work_date", r.getCreateDate()).eq("company_id", user.getCompanyId()).eq("user_id", r.getCreatorId()));
+                if (fvTime == null) {
+                    //无考勤按八小时填报
+                    r.setWorkingTime(8.0 * r.getProgress()/100);
+                } else {
+                    r.setWorkingTime(fvTime.getWorkHours().doubleValue() * r.getProgress()/100);
+                }
+            }
+        }
+
         if (createDate[0].contains("@") && targetUserList == null) {
             //个人批量填报,判断是否需要考勤校验
             if (comTimeType.getSyncCorpwxTime() == 1) {

+ 25 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserFvTimeController.java

@@ -388,9 +388,18 @@ public class UserFvTimeController {
         }
         User user = userMapper.selectById(request.getHeader("token"));
         TimeType timeType = timeTypeMapper.selectById(user.getCompanyId());
-        List<UserFvTime> timeList = userFvTimeService.list(new QueryWrapper<UserFvTime>().between("work_date", startDate, endDate).eq("company_id", user.getCompanyId()).eq("user_id", user.getId()));
-        double sum = timeList.stream().mapToDouble(UserFvTime::getWorkHours).sum();
-        int workDayCount = WorkDayCalculateUtils.getWorkDaysCountInRange(startDate, endDate, timeType.getIncludeWeekends());
+        //根据配置决定是否过滤掉周末
+        List<LocalDate> workDaysListInRange = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, timeType.getIncludeWeekends());
+        List<UserFvTime> timeList = userFvTimeService.list(new QueryWrapper<UserFvTime>().in("work_date", workDaysListInRange).eq("company_id", user.getCompanyId()).eq("user_id", user.getId()));
+        double sum = 0;
+        for (LocalDate workDay : workDaysListInRange) {
+            if (timeList.stream().filter(tl -> tl.getWorkDate().equals(workDay)).count() == 0) {
+                sum += 8.0;
+            } else {
+                sum += timeList.stream().filter(tl -> tl.getWorkDate().equals(workDay)).findFirst().get().getWorkHours();
+            }
+        }
+        int workDayCount = workDaysListInRange.size();
         HashMap map = new HashMap();
         map.put("workHours", df.format(sum));
         map.put("workDayCount", workDayCount);
@@ -409,10 +418,19 @@ public class UserFvTimeController {
         DecimalFormat df = new DecimalFormat("#0.0");
         User user = userMapper.selectById(request.getHeader("token"));
         TimeType timeType = timeTypeMapper.selectById(user.getCompanyId());
-        List<UserFvTime> userFvTimeList = userFvTimeService.list(new QueryWrapper<UserFvTime>().between("work_date", startDate, endDate).eq("company_id", user.getCompanyId()).eq("user_id", user.getId()));
-        double sum=0;
-        sum = userFvTimeList.stream().mapToDouble(UserFvTime::getWorkHours).sum();
-        int workDayCount = WorkDayCalculateUtils.getWorkDaysCountInRange(startDate, endDate, timeType.getIncludeWeekends());
+        //根据配置决定是否过滤掉周末
+        List<LocalDate> workDaysListInRange = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, timeType.getIncludeWeekends());
+        List<UserFvTime> userFvTimeList = userFvTimeService.list(new QueryWrapper<UserFvTime>().in("work_date", workDaysListInRange).eq("company_id", user.getCompanyId()).eq("user_id", user.getId()));
+
+        double sum = 0;
+        for (LocalDate workDay : workDaysListInRange) {
+            if (userFvTimeList.stream().filter(tl -> tl.getWorkDate().equals(workDay)).count() == 0) {
+                sum += 8.0;
+            } else {
+                sum += userFvTimeList.stream().filter(tl -> tl.getWorkDate().equals(workDay)).findFirst().get().getWorkHours();
+            }
+        }
+        int workDayCount = workDaysListInRange.size();
         HashMap map = new HashMap();
         map.put("workHours", df.format(sum));
         map.put("workDayCount", workDayCount);

+ 8 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -783,7 +783,7 @@
             <span slot="footer" class="dialog-footer">
                 <el-button @click="cancel(workForm.domains,true)" v-if="canCancelInDialog" style="float:left;">{{$t('btn.withdraw')}}</el-button>
 
-                <span style="margin-right:20px">合计工时:{{totalReportHours}}小时</span>
+                <span style="margin-right:20px" v-if="!(user.company.companyName == mingyiName && isSubstitude)">合计工时:{{totalReportHours}}小时</span>
 
                 <el-button @click="deleteReport"  v-if="workForm.domains[0].id != null && canEdit && reportCanDelete">{{$t('btn.delete')}}</el-button>
                 <el-button @click="dialogVisible = false">{{$t('btn.cancel')}}</el-button>
@@ -3073,7 +3073,7 @@
                 this.jsTime = quanbu
                 this.totalReportHours = quanbu
                 let worktime = this.jsTime
-
+                
                 // 自动计算加班时长
                 if(this.isBatch != 0){
                     worktime = this.jsTime / this.jsDay
@@ -3971,6 +3971,12 @@
                     domain.projectAuditorName = null;
                     domain.auditUserList = null;
                 }
+                console.log('this.reportTimeType.type==='+this.reportTimeType.type);
+                if (this.reportTimeType.type == 3) {
+                    //新增项目时,自动计算
+                    console.log('===time====='+this.reportTimeType.allday * domain.progress/100);
+                    domain.workingTime = (this.reportTimeType.allday * domain.progress/100);
+                }
             },
 
             //获取项目审核人