瀏覽代碼

mld 报表问题
景昱同步休假 以及同步的bug问题

Min 1 年之前
父節點
當前提交
8840b6eb04

+ 62 - 13
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserWithBeisenController.java

@@ -10,10 +10,7 @@ import com.management.platform.mapper.BeisenConfigMapper;
 import com.management.platform.mapper.TimeTypeMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.mapper.UserWithBeisenMapper;
-import com.management.platform.service.HolidaySettingService;
-import com.management.platform.service.UserFvTimeService;
-import com.management.platform.service.UserService;
-import com.management.platform.service.UserWithBeisenService;
+import com.management.platform.service.*;
 import com.management.platform.util.BeiSenUtils;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.WorkDayCalculateUtils;
@@ -67,6 +64,8 @@ public class UserWithBeisenController {
     private UserService userService;
     @Resource
     private HolidaySettingService holidaySettingService;
+    @Resource
+    private LeaveSheetService leaveSheetService;
 
     @RequestMapping("/getByTimeWindow")
     public HttpRespMsg getByTimeWindow(String startTime,String stopTime){
@@ -170,6 +169,7 @@ public class UserWithBeisenController {
         List<LocalDate> workDaysListInRange = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 1);
         JSONArray allOverTimeList=new JSONArray();
         JSONArray allVacationList=new JSONArray();
+        List<LeaveSheet> leaveSheetList=new ArrayList<>();
         List<UserFvTime> userFvTimeList=new ArrayList<>();
         for (LocalDate localDate : workDaysListInRange) {
             JSONArray statisticList = BeiSenUtils.getAttendanceStatistics(df.format(localDate), df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(), 1, 100);
@@ -249,15 +249,12 @@ public class UserWithBeisenController {
                             double vacationDuration = vacationList.stream().mapToDouble(i -> i.getDouble("VacationDuration")).sum();
                             BigDecimal decimal = new BigDecimal(vacationDuration);
                             decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
-                            //考勤打卡区间大于8小时 但是存在休假数据
-//                            if(between.toHours()>8){
-//                                if(decimal.doubleValue()>8){
-//                                    workTime= workTime-8;
-//                                }else {
-//                                    workTime= workTime-decimal.doubleValue();
-//                                }
-//                            }
-                            workTime= workTime-decimal.doubleValue();
+//                            //可能存在休假多天 只减去一天
+                            if(decimal.doubleValue()>=8){
+                                workTime= workTime-8;
+                            }else {
+                                workTime= workTime-decimal.doubleValue();
+                            }
                         }
                     }
                     UserFvTime userFvTime=new UserFvTime();
@@ -280,6 +277,58 @@ public class UserWithBeisenController {
                 msg.setError("同步验证失败");
             }
         }
+        //同步休假数据到工时管家
+        for (int i = 0; i < allVacationList.size(); i++) {
+            JSONObject jsonObject = allVacationList.getJSONObject(i);
+            Optional<UserWithBeisen> beisen = userWithBeisenList.stream().filter(b -> b.getUserId().equals(jsonObject.getString("StaffId"))).findFirst();
+            if(beisen.isPresent()){
+                Optional<User> first = userList.stream().filter(u -> u.getJobNumber().equals(beisen.get().getJobNumber())).findFirst();
+                if(first.isPresent()){
+                    LeaveSheet leaveSheet=new LeaveSheet();
+                    leaveSheet.setCompanyId(beisenConfig.getCompanyId());
+                    leaveSheet.setStatus(0);
+                    leaveSheet.setOwnerId(first.get().getId());
+                    leaveSheet.setOwnerName(first.get().getName());
+                    leaveSheet.setStartDate(LocalDateTime.parse(String.valueOf(jsonObject.get("VacationStartDateTime")),df3).toLocalDate());
+                    leaveSheet.setEndDate(LocalDateTime.parse(String.valueOf(jsonObject.get("VacationStopDateTime")),df3).toLocalDate());
+                    leaveSheet.setTimeType(1);
+                    leaveSheet.setTimeDays(jsonObject.getFloatValue("DayValueOfDuration"));
+                    leaveSheet.setTimeHours(jsonObject.getFloatValue("VacationDuration")/60);
+                    Integer leaveType;
+                    switch (jsonObject.getString("VacationType")){
+                        case "事假":leaveType=0;
+                            break;
+                        case "病假":leaveType=1;
+                            break;
+                        case "年假":leaveType=2;
+                            break;
+                        case "产假":leaveType=3;
+                            break;
+                        case "婚假":leaveType=4;
+                            break;
+                        case "丧假":leaveType=5;
+                            break;
+                        case "调休":leaveType=6;
+                            break;
+                        case "陪产假":leaveType=7;
+                            break;
+                        default:leaveType=8;
+                    }
+                    leaveSheet.setLeaveType(leaveType);
+                    leaveSheet.setRemark(jsonObject.getString("Reason"));
+                    leaveSheet.setStatus(jsonObject.getString("ApproveStatus").equals("通过")?0:jsonObject.getString("Reason").equals("审批中")?1:2);
+                    leaveSheet.setProcinstId(jsonObject.getString("VacationId"));
+                    LeaveSheet one = leaveSheetService.getOne(new LambdaQueryWrapper<LeaveSheet>().eq(LeaveSheet::getProcinstId,leaveSheet.getProcinstId()).eq(LeaveSheet::getOwnerId, first.get().getId()).eq(LeaveSheet::getStartDate, leaveSheet.getStartDate()).eq(LeaveSheet::getEndDate, endDate));
+                    if(one!=null){
+                        leaveSheet.setId(one.getId());
+                    }
+                    leaveSheetList.add(leaveSheet);
+                }
+            }
+        }
+        if(leaveSheetList.size()>0){
+            leaveSheetService.saveOrUpdateBatch(leaveSheetList);
+        }
         return msg;
     }
 

+ 59 - 9
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -2119,6 +2119,7 @@ public class TimingTask {
         JSONArray attendanceStatistics=new JSONArray();
         JSONArray allVacationList=new JSONArray();
         List<UserFvTime> userFvTimeList=new ArrayList<>();
+        List<LeaveSheet> leaveSheetList=new ArrayList<>();
         for (LocalDate localDate : workDaysListInRange) {
             JSONArray overTimeList = BeiSenUtils.getOverTimeList(df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(), 1, 100);
             //todo 获取到指定日期的考勤数据
@@ -2197,15 +2198,12 @@ public class TimingTask {
                             double vacationDuration = vacationList.stream().mapToDouble(i -> i.getDouble("VacationDuration")).sum();
                             BigDecimal decimal = new BigDecimal(vacationDuration);
                             decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
-//                            //考勤打卡区间大于8小时 但是存在休假数据
-//                            if(between.toHours()>8){
-//                                if(decimal.doubleValue()>8){
-//                                    workTime= workTime-8;
-//                                }else {
-//                                    workTime= workTime-decimal.doubleValue();
-//                                }
-//                            }
-                            workTime= workTime-decimal.doubleValue();
+//                            //可能存在休假多天 只减去一天
+                            if(decimal.doubleValue()>=8){
+                                workTime= workTime-8;
+                            }else {
+                                workTime= workTime-decimal.doubleValue();
+                            }
                         }
                     }
                     UserFvTime userFvTime=new UserFvTime();
@@ -2226,6 +2224,58 @@ public class TimingTask {
         if(userFvTimeList.size()>0){
             userFvTimeService.saveOrUpdateBatch(userFvTimeList);
         }
+        //同步休假数据到工时管家
+        for (int i = 0; i < allVacationList.size(); i++) {
+            JSONObject jsonObject = allVacationList.getJSONObject(i);
+            Optional<UserWithBeisen> beisen = userWithBeisenList.stream().filter(b -> b.getUserId().equals(jsonObject.getString("StaffId"))).findFirst();
+            if(beisen.isPresent()){
+                Optional<User> first = userList.stream().filter(u -> u.getJobNumber().equals(beisen.get().getJobNumber())).findFirst();
+                if(first.isPresent()){
+                    LeaveSheet leaveSheet=new LeaveSheet();
+                    leaveSheet.setCompanyId(beisenConfig.getCompanyId());
+                    leaveSheet.setStatus(0);
+                    leaveSheet.setOwnerId(first.get().getId());
+                    leaveSheet.setOwnerName(first.get().getName());
+                    leaveSheet.setStartDate(LocalDateTime.parse(String.valueOf(jsonObject.get("VacationStartDateTime")),df3).toLocalDate());
+                    leaveSheet.setEndDate(LocalDateTime.parse(String.valueOf(jsonObject.get("VacationStopDateTime")),df3).toLocalDate());
+                    leaveSheet.setTimeType(1);
+                    leaveSheet.setTimeDays(jsonObject.getFloatValue("DayValueOfDuration"));
+                    leaveSheet.setTimeHours(jsonObject.getFloatValue("VacationDuration")/60);
+                    Integer leaveType;
+                    switch (jsonObject.getString("VacationType")){
+                        case "事假":leaveType=0;
+                            break;
+                        case "病假":leaveType=1;
+                            break;
+                        case "年假":leaveType=2;
+                            break;
+                        case "产假":leaveType=3;
+                            break;
+                        case "婚假":leaveType=4;
+                            break;
+                        case "丧假":leaveType=5;
+                            break;
+                        case "调休":leaveType=6;
+                            break;
+                        case "陪产假":leaveType=7;
+                            break;
+                        default:leaveType=8;
+                    }
+                    leaveSheet.setLeaveType(leaveType);
+                    leaveSheet.setRemark(jsonObject.getString("Reason"));
+                    leaveSheet.setStatus(jsonObject.getString("ApproveStatus").equals("通过")?0:jsonObject.getString("Reason").equals("审批中")?1:2);
+                    leaveSheet.setProcinstId(jsonObject.getString("VacationId"));
+                    LeaveSheet one = leaveSheetService.getOne(new LambdaQueryWrapper<LeaveSheet>().eq(LeaveSheet::getOwnerId, first.get().getId()).eq(LeaveSheet::getStartDate, leaveSheet.getStartDate()).eq(LeaveSheet::getProcinstId,leaveSheet.getProcinstId()).eq(LeaveSheet::getEndDate, endDate));
+                    if(one!=null){
+                        leaveSheet.setId(one.getId());
+                    }
+                    leaveSheetList.add(leaveSheet);
+                }
+            }
+        }
+        if(leaveSheetList.size()>0){
+            leaveSheetService.saveOrUpdateBatch(leaveSheetList);
+        }
     }
 
 

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

@@ -1734,7 +1734,7 @@
         ,report.create_date BETWEEN user.induction_date AND #{endDate}
         ,report.create_date BETWEEN #{startDate} AND #{endDate} )
         and
-        IF(user.inactive_date AND user.`is_active`=0 is not null AND user.inactive_date &lt; #{endDate}
+        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} )
         )

+ 1 - 2
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/component/planComponent.vue

@@ -49,8 +49,7 @@
                     {{ jisuanDate(item.startDate)>30 ? '隐藏' : ''}}
                   </span>
                   <span class="text" @click="stopPlan(item.id,item.hideState)">
-                    <!-- {{ item.progress==null||item.progress==0 ? '中止计划' : ''}} -->
-                    {{'中止计划'}}
+                    {{ item.progress==null||item.progress==0 ? '中止计划' : ''}}
                   </span>
                   <van-button type="info" size="small" @click="toDistribution(item)">派工单</van-button>
                   <van-button v-if="item.hasAllocation==0" type="info" size="small" @click="allocationUser(item)">下发</van-button>