Min 1 rok pred
rodič
commit
e0b3005248

+ 10 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -514,6 +514,12 @@ public class ReportController {
                 multiDegrId[i] = null;
             }
         }
+        if (reportTargetDeptId == null) {
+            reportTargetDeptId = new Integer[projectId.length];
+            for (int i=0;i<reportTargetDeptId.length; i++) {
+                reportTargetDeptId[i] = -1;
+            }
+        }
         if (company.getPackageProject() == 1) {
             //检查是否设置了预算的工时预警
             ProjectBasecostSetting alarmSetting = projectBasecostSettingMapper.selectOne(new QueryWrapper<ProjectBasecostSetting>()
@@ -2075,13 +2081,13 @@ public class ReportController {
     }
 
     @RequestMapping("/getUserDailyWorkTimeReminder")
-    public HttpRespMsg getUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate) throws Exception{
-        return reportService.getUserDailyWorkTimeReminder(request, startDate, endDate);
+    public HttpRespMsg getUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate,Integer deptId,@RequestParam(defaultValue = "1") Integer viewValue) throws Exception{
+        return reportService.getUserDailyWorkTimeReminder(request, startDate, endDate,deptId,viewValue);
     }
 
     @RequestMapping("/exportUserDailyWorkTimeReminder")
-    public HttpRespMsg exportUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate) throws Exception{
-        return reportService.exportUserDailyWorkTimeReminder(request, startDate, endDate);
+    public HttpRespMsg exportUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate,Integer deptId,@RequestParam(defaultValue = "1") Integer viewValue) throws Exception{
+        return reportService.exportUserDailyWorkTimeReminder(request, startDate, endDate,deptId,viewValue);
     }
 
     @RequestMapping("/getNoReportUserList")

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

@@ -10,6 +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;
@@ -64,6 +65,8 @@ public class UserWithBeisenController {
     private TimeTypeMapper timeTypeMapper;
     @Resource
     private UserService userService;
+    @Resource
+    private HolidaySettingService holidaySettingService;
 
     @RequestMapping("/getByTimeWindow")
     public HttpRespMsg getByTimeWindow(String startTime,String stopTime){
@@ -155,6 +158,8 @@ public class UserWithBeisenController {
         List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, companyId));
         List<UserWithBeisen> userWithBeisenList = userWithBeisenService.list(new LambdaQueryWrapper<UserWithBeisen>().eq(UserWithBeisen::getCompanyId, companyId));
         BeisenConfig beisenConfig = beisenConfigMapper.selectById(companyId);
+        //获取特殊节假日设置
+        List<HolidaySetting> holidaySettings = holidaySettingService.list(new LambdaQueryWrapper<HolidaySetting>().eq(HolidaySetting::getCompanyId, companyId));
         if(beisenConfig==null){
             msg.setError("北森基础数据配置未完成,请联系服务商完成配置");
             return msg;
@@ -193,18 +198,24 @@ public class UserWithBeisenController {
                 List<LocalTime> maxLocalTimeList = timeStream1.filter(t -> t.getIntValue("Type") == 9).map(i -> LocalDateTime.parse(i.getString("ActualTime"),df1).toLocalTime()).collect(Collectors.toList());
                 Optional<LocalTime> max = maxLocalTimeList.stream().max(LocalTime::compareTo);
                 if(first.isPresent()){
-                    boolean workDay = WorkDayCalculateUtils.isWorkDay(localDate);
+                    boolean workDay = WorkDayCalculateUtils.isWorkDay(localDate)&&!holidaySettings.stream().anyMatch(h->h.getHolidayDate().isEqual(localDate));
                     //todo:针对景昱 工作日默认以8小时工作制度加上加班时长 非工作日以加班时长为准
                     Duration between = Duration.between(min.get(), max.get());
                     Double workTime;
-                    if(between.toHours()>8){
-                        workTime=8.0;
-                    }else if(between.toHours()<0){
-                        workTime=0.0;
+                    if(timeType.getCompanyId()==5978){
+                        if(workDay){
+                            workTime=8.0;
+                        }else {
+                            workTime=0.0;
+                        }
                     }else {
-                        BigDecimal decimal = new BigDecimal(between.toMinutes());
-                        decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
-                        workTime=decimal.doubleValue();
+                        if(between.toHours()<0){
+                            workTime=0.0;
+                        }else {
+                            BigDecimal decimal = new BigDecimal(between.toMinutes());
+                            decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
+                            workTime=decimal.doubleValue();
+                        }
                     }
                     Stream<JSONObject> overTimeStream = allOverTimeList.stream().map(elment -> (JSONObject) elment);
                     Stream<JSONObject> vacationStream = allVacationList.stream().map(elment -> (JSONObject) elment);
@@ -216,11 +227,7 @@ public class UserWithBeisenController {
                                 &&LocalDateTime.parse(a.getString("StartDate"),df1).toLocalDate().isEqual(localDate)).collect(Collectors.toList());
                         if(overTimeList.size()>0){
                             double actualOverTimeDuration = overTimeList.stream().mapToDouble(i -> i.getDouble("OverTimeDuration")).sum();
-                            if(workDay){
-                                workTime= workTime+actualOverTimeDuration;
-                            }else {
-                                workTime= actualOverTimeDuration;
-                            }
+                            workTime= workTime+actualOverTimeDuration;
                         }
                         //处理修改
                         List<JSONObject> vacationList = vacationStream.filter(a ->{

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

@@ -215,4 +215,6 @@ public interface ReportMapper extends BaseMapper<Report> {
 
     @Update("update report set state=2,reject_reason='提醒工时变更' where create_date=#{createDate} and creator_id=#{userId}")
     void denyReportWithUserAndCreateDate(String userId, String createDate);
+
+    List<Map<String, Object>> getUserDailyWorkTimeReminder(Integer companyId,String startDate, String endDate,@Param("list") List<Integer> deptIds,Integer deptId,String leaderId);
 }

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

@@ -154,7 +154,7 @@ public interface ReportService extends IService<Report> {
 
     HttpRespMsg changeReminder(HttpServletRequest request,String createDate,String userId,String startDate,String endDate) throws Exception;
 
-    HttpRespMsg getUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate) throws Exception;
+    HttpRespMsg getUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate,Integer deptId,Integer viewValue) throws Exception;
 
-    HttpRespMsg exportUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate) throws Exception;
+    HttpRespMsg exportUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate,Integer deptId,Integer viewValue) throws Exception;
 }

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

@@ -22,6 +22,7 @@ import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
 import org.apache.commons.io.FileUtils;
+import org.apache.logging.log4j.util.PropertySource;
 import org.apache.poi.EncryptedDocumentException;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.*;
@@ -4231,9 +4232,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         Company company = companyMapper.selectById(companyId);
         //准备部门数据
         List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
-        List<UserFvTime> userFvTimeList = userFvTimeMapper.selectList(new LambdaQueryWrapper<UserFvTime>().between(UserFvTime::getWorkDate, startDate, endDate));
-        List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, company.getId()));
-        //处理特殊节假日设置
         //特殊节假日配置
         List<HolidaySetting> holidaySettingList = holidaySettingService.list(new LambdaQueryWrapper<HolidaySetting>().eq(HolidaySetting::getCompanyId, companyId));
         //针对全员生效的日期
@@ -4258,7 +4256,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             String[] userSplit = userIdStr.split(",");
             targetUserIds = Arrays.asList(userSplit);
         }
-        List<UserCustom> userCustomList = userCustomMapper.selectList(new LambdaQueryWrapper<UserCustom>().eq(UserCustom::getCompanyId, companyId));
         DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
         //String[] weekDayCHN = {"周一","周二","周三","周四","周五","周六","周日"};
         String[] weekDayCHN = {MessageUtils.message("week.Monday"),MessageUtils.message("week.Tuesday"),MessageUtils.message("week.Wednesday"),MessageUtils.message("week.Thursday"),MessageUtils.message("week.Friday"),MessageUtils.message("week.Saturday"),MessageUtils.message("week.Sunday")};
@@ -4317,36 +4314,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             String date = new SimpleDateFormat("yyyy-MM-dd").format((Date)data.get("createDate"));
             map.put("workingTime", data.get("workingTime"));
             map.put("createDate", date);
-            //针对景昱 5978 校验填报工时是否超过考勤
-            if(user.getCompanyId().equals(5978)){
-                map.put("exceedCardTime",0);
-                Optional<UserFvTime> first = userFvTimeList.stream().filter(u -> u.getWorkDate().isEqual(LocalDate.parse(date, df)) && u.getUserId().equals(id)).findFirst();
-                if(first.isPresent()){
-                    if(first.get().getWorkHours()!=null){
-                        map.put("cardTime",first.get().getWorkHours());
-                        Optional<User> optional = userList.stream().filter(u -> u.getId().equals(id)).findFirst();
-                        User targetUser = optional.get();
-                        List<String> customList = userCustomList.stream().map(UserCustom::getName).collect(Collectors.toList());
-                        if(customList.size()>0&&customList.contains("是否有加班费")){
-                            int index = customList.indexOf("是否有加班费");
-                            targetUser.getPlate1();
-                            String getter="getPlate"+(index+1);
-                            Class<User> aClass = User.class;
-                            Method method = aClass.getMethod(getter);
-                            String invoke = (String) method.invoke(targetUser);
-                            if(invoke==null||invoke.equals("有加班费")){
-                                if(!(Double.valueOf(String.valueOf(data.get("workingTime"))).equals(Double.valueOf(first.get().getWorkHours())))){
-                                    map.put("exceedCardTime",1);
-                                }
-                            }else{
-                                if((Double.valueOf(String.valueOf(data.get("workingTime")))<first.get().getWorkHours())){
-                                    map.put("exceedCardTime",1);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
             if (id.equals(lastUserId)) {
                 //同一个用户的数据
                 lastUserData.worktimeList.add(map);
@@ -9089,51 +9056,110 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     }
 
     @Override
-    public HttpRespMsg getUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate) throws Exception {
+    public HttpRespMsg getUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate,Integer deptId,Integer viewValue) throws Exception {
         HttpRespMsg msg=new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("token"));
         DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        HttpRespMsg userDailyWorkTime = getUserDailyWorkTime(request, startDate, endDate);
         List<UserFvTime> userFvTimeList = userFvTimeMapper.selectList(new LambdaQueryWrapper<UserFvTime>().between(UserFvTime::getWorkDate, startDate, endDate));
-        Map<String, Object> objectMap = (Map<String, Object>) userDailyWorkTime.getData();
-        List<UserMonthWork > mapList = (List<UserMonthWork >) objectMap.get("list");
+        List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, user.getCompanyId()));
+        List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, user.getCompanyId()));
+        List<UserCustom> userCustomList = userCustomMapper.selectList(new LambdaQueryWrapper<UserCustom>().eq(UserCustom::getCompanyId, user.getCompanyId()));
+        List<User> allRangeUserList = new ArrayList<>();
+        List<Map<String, Object>> list = null;
+        //分角色权限:管理员看全部的,部门负责人看自己部门的,个人只能看自己的。
+        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全公司工时");
+        if (functionList.size() == 0) {
+            List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
+            //检查是不是部门负责人(含主要负责人和其他负责人)
+            List<Integer> allDeptIds = getAllVisibleDeptIdList(user, allDeptList);
+            if (allDeptIds.size() > 0) {
+                list = reportMapper.getUserDailyWorkTimeReminder(user.getCompanyId(), startDate, endDate, allDeptIds, deptId,null);
+                //部门负责人看自己部门相关的
+                allRangeUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allDeptIds).eq(deptId!=null,"department_id",deptId).orderByDesc("department_id"));
+            } else {
+                //看自己的所负责的项目相关人员的
+                list = reportMapper.getUserDailyWorkTimeReminder(user.getCompanyId(), startDate, endDate, null,deptId, user.getId());
+                //项目相关的人员列表
+                List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("incharger_id", user.getId()));
+                List<Project> collect = projectList.stream().collect(Collectors.toList());
+                if (collect.size() > 0) {
+                    List<Participation> participationList = participationMapper.selectList(new QueryWrapper<Participation>().in("project_id", collect));
+                    List<String> collect1 = participationList.stream().map(Participation::getUserId).collect(Collectors.toList());
+                    if (collect1.size() > 0) {
+                        allRangeUserList = userMapper.selectList(new QueryWrapper<User>().in("id", collect1).eq(deptId!=null,"department_id",deptId).orderByDesc("department_id"));
+                    }
+                }
+            }
+        } else {
+            list = reportMapper.getUserDailyWorkTimeReminder(user.getCompanyId(), startDate, endDate, null,deptId, null);
+            //管理员看全公司所有人
+            allRangeUserList = userMapper.selectList(new QueryWrapper<User>().eq(deptId!=null,"department_id",deptId).eq("company_id", user.getCompanyId()).orderByDesc("department_id"));
+        }
+        List<User> needRangeUserList=new ArrayList<>();
+        for (User u : allRangeUserList) {
+            if(u.getInactiveDate()==null||(u.getInactiveDate()!=null&&u.getInactiveDate().isAfter(LocalDate.parse(startDate))||u.getIsActive()==1)){
+                needRangeUserList.add(u);
+            }
+        }
         List<LocalDate> days = getDays(LocalDate.parse(startDate, df), LocalDate.parse(endDate, df));
-        List<Map<String, Object>> result=new ArrayList<>();
-        mapList.forEach(m->{
-            List<Map<String, Object>> worktimeList = (List<Map<String, Object>>) m.worktimeList;
-            for (LocalDate date : days) {
-                boolean match = worktimeList.stream().anyMatch(www -> String.valueOf(www.get("createDate")).equals(date.format(df)));
+        for (User item : needRangeUserList) {
+            for (LocalDate day : days) {
+                boolean match = list.stream().anyMatch(l -> l.get("createDate").equals(df.format(day)) && l.get("userId").equals(item.getId()));
                 if(!match){
-                    Map<String,Object> ww=new HashMap<>();
-                    ww.put("createDate",date.format(df));
-                    ww.put("exceedCardTime",0);
-                    ww.put("workingTime",0);
-                    worktimeList.add(ww);
-                }
-            }
-            if(worktimeList.size()>0){
-                worktimeList.forEach(w->{
-                    Optional<UserFvTime> first = userFvTimeList.stream().filter(u -> u.getWorkDate().isEqual(LocalDate.parse(String.valueOf(w.get("createDate")),df)) && u.getUserId().equals(m.userId)).findFirst();
-                    if(first.isPresent()){
-                        w.put("cardTime",first.get().getWorkHours());
-                    }
-                    w.put("name",m.name);
-                    w.put("corpwxDeptId",m.corpwxDeptId);
-                    w.put("corpwxUserId",m.corpwxUserId);
-                    w.put("departmentName",m.departmentName);
-                    w.put("userId",m.userId);
-                });
+                    Map<String,Object> map=new HashMap<>();
+                    map.put("userId",item.getId());
+                    map.put("corpwxUserId",item.getCorpwxUserid());
+                    map.put("createDate",day.format(df));
+                    Optional<Department> first = departmentList.stream().filter(d -> d.getDepartmentId().equals(item.getDepartmentId())).findFirst();
+                    map.put("departmentName",first.get().getDepartmentName());
+                    Optional<UserFvTime> time = userFvTimeList.stream().filter(u -> u.getWorkDate().isEqual(day) && u.getUserId().equals(item.getId())).findFirst();
+                    if(time.isPresent()){
+                        map.put("cardTime",time.get().getWorkHours());
+                    }else {
+                        map.put("cardTime",0);
+                    }
+                    map.put("corpwxDeptId",first.get().getCorpwxDeptid());
+                    map.put("workingTime",0);
+                    map.put("name",item.getName());
+                    list.add(map);
+                }
             }
-            result.addAll(worktimeList);
-        });
+        }
+        for (Map<String, Object> map : list) {
+            //针对景昱 5978 校验填报工时是否超过考勤
+            if(user.getCompanyId().equals(5978)){
+                map.put("exceedCardTime",0);
+                Optional<User> optional = userList.stream().filter(u -> u.getId().equals(String.valueOf(map.get("userId")))).findFirst();
+                User targetUser = optional.get();
+                List<String> customList = userCustomList.stream().map(UserCustom::getName).collect(Collectors.toList());
+                if(customList.size()>0&&customList.contains("是否有加班费")){
+                    int index = customList.indexOf("是否有加班费");
+                    targetUser.getPlate1();
+                    String getter="getPlate"+(index+1);
+                    Class<User> aClass = User.class;
+                    Method method = aClass.getMethod(getter);
+                    String invoke = (String) method.invoke(targetUser);
+                    if(invoke==null||invoke.equals("有加班费")){
+                        if(!(Double.valueOf(String.valueOf(map.get("workingTime"))).equals(Double.valueOf(String.valueOf(map.get("cardTime")))))){
+                            map.put("exceedCardTime",1);
+                        }
+                    }else{
+                        if((Double.valueOf(String.valueOf(map.get("workingTime")))<Double.valueOf(String.valueOf(map.get("cardTime"))))){
+                            map.put("exceedCardTime",1);
+                        }
+                    }
+                }
+            }
+        }
         Map<String,Object> map=new HashMap<>();
-        map.put("list",result);
+        map.put("list",list);
         msg.setData(map);
         return msg;
     }
 
     @Override
-    public HttpRespMsg exportUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate) throws Exception {
-        HttpRespMsg timeReminder = getUserDailyWorkTimeReminder(request, startDate, endDate);
+    public HttpRespMsg exportUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate,Integer deptId,Integer viewValue) throws Exception {
+        HttpRespMsg timeReminder = getUserDailyWorkTimeReminder(request, startDate, endDate,deptId,viewValue);
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, companyId));
         CompanyDingding dingding = companyDingdingService.getOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));

+ 19 - 14
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -178,6 +178,8 @@ public class TimingTask {
     private UserWithBeisenService userWithBeisenService;
     @Resource
     private BeisenConfigMapper beisenConfigMapper;
+    @Resource
+    private HolidaySettingService holidaySettingService;
 
 
     private static final List<Integer> VALID_TOKEN_CHARS = new ArrayList<>();
@@ -2106,10 +2108,11 @@ public class TimingTask {
         List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, 5978));
         List<UserWithBeisen> userWithBeisenList = userWithBeisenService.list(new LambdaQueryWrapper<UserWithBeisen>().eq(UserWithBeisen::getCompanyId, 5978));
         BeisenConfig beisenConfig = beisenConfigMapper.selectById(5978);
+        //获取特殊节假日设置
+        List<HolidaySetting> holidaySettings = holidaySettingService.list(new LambdaQueryWrapper<HolidaySetting>().eq(HolidaySetting::getCompanyId, 5978));
         if(beisenConfig==null){
             return;
         }
-
         //todo 获取到指定日期的加班数据
         List<LocalDate> workDaysListInRange = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 1);
         JSONArray allOverTimeList=new JSONArray();
@@ -2145,18 +2148,24 @@ public class TimingTask {
                 Optional<LocalTime> max = maxLocalTimeList.stream().max(LocalTime::compareTo);
                 //获取最晚下班时间
                 if(first.isPresent()){
-                    boolean workDay = WorkDayCalculateUtils.isWorkDay(localDate);
+                    boolean workDay = WorkDayCalculateUtils.isWorkDay(localDate)&&!holidaySettings.stream().anyMatch(h->h.getHolidayDate().isEqual(localDate));
                     //todo:针对景昱 工作日默认以8小时工作制度加上加班时长 非工作日以加班时长为准
                     Duration between = Duration.between(min.get(), max.get());
                     Double workTime;
-                    if(between.toHours()>8){
-                        workTime=8.0;
-                    }else if(between.toHours()<0){
-                        workTime=0.0;
+                    if(beisenConfig.getCompanyId()==5978){
+                        if(workDay){
+                            workTime=8.0;
+                        }else {
+                            workTime=0.0;
+                        }
                     }else {
-                        BigDecimal decimal = new BigDecimal(between.toMinutes());
-                        decimal=decimal.divide(new BigDecimal(60),1, RoundingMode.HALF_UP);
-                        workTime=decimal.doubleValue();
+                        if(between.toHours()<0){
+                            workTime=0.0;
+                        }else {
+                            BigDecimal decimal = new BigDecimal(between.toMinutes());
+                            decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
+                            workTime=decimal.doubleValue();
+                        }
                     }
                     Stream<JSONObject> overTimeStream = allOverTimeList.stream().map(elment -> (JSONObject) elment);
                     Stream<JSONObject> vacationStream = allVacationList.stream().map(elment -> (JSONObject) elment);
@@ -2167,11 +2176,7 @@ public class TimingTask {
                                 &&LocalDateTime.parse(a.getString("StartDate"),df1).toLocalDate().isEqual(localDate)).collect(Collectors.toList());
                         if(overTimeList.size()>0){
                             double actualOverTimeDuration = overTimeList.stream().mapToDouble(i -> i.getDouble("OverTimeDuration")).sum();
-                            if(workDay){
-                                workTime= workTime+actualOverTimeDuration;
-                            }else {
-                                workTime= actualOverTimeDuration;
-                            }
+                            workTime= workTime+actualOverTimeDuration;
                         }
                         List<JSONObject> vacationList = vacationStream.filter(a ->{
                             LocalDate vacationStartDate = LocalDateTime.parse(a.getString("VacationStartDateTime"), df3).toLocalDate();

+ 27 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -1245,4 +1245,31 @@
         </if>
         group by p.id
     </select>
+
+    <select id="getUserDailyWorkTimeReminder" resultType="java.util.Map">
+        SELECT date_format(r.create_date,'%Y-%m-%d') AS createDate,u.name AS name,u.id as userId,u.corpwx_userid as corpwxUserId,d.corpwx_deptid as corpwxDeptId,d.department_name AS departmentName,
+        IFNULL(SUM(r.working_time),0) AS  workingTime,IFNULL(ufv.work_hours,0) AS cardTime
+        FROM report  r
+        LEFT JOIN user u ON r.creator_id=u.id
+        LEFT JOIN department d ON d.department_id=u.department_id
+        LEFT JOIN user_fv_time ufv ON ufv.user_id=u.id AND ufv.work_date=r.create_date
+        WHERE r.company_id=#{companyId}
+        <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
+            AND r.create_date BETWEEN #{startDate} AND #{endDate}
+        </if>
+        <if test="deptId!=null">
+            AND d.department_id=#{deptId}
+        </if>
+        <if test="list != null and list.size()>0">
+            AND d.department_id in
+           <foreach collection="list" open="(" close=")" separator="," item="item">
+               #{item}
+           </foreach>
+        </if>
+        <if test="leaderId != null">
+            AND user.id in (select user_id from participation where project_id in (select id from project where incharger_id = #{leaderId}))
+        </if>
+        GROUP BY r.create_date,r.creator_id
+        order by u.id,r.create_date
+    </select>
 </mapper>

+ 6 - 5
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -8369,12 +8369,13 @@
             //景昱变更提醒
             changeReminder(item){
                 console.log("============",item)
-                let parameter={}
+                let parameter={
+                    startDate: this.WorktimeDatepickValue[0],
+                    endDate: this.WorktimeDatepickValue[1],
+                }
                 if(item){
-                    parameter={
-                        createDate:item.createDate,
-                        userId:item.userId,
-                    }
+                    parameter.createDate=item.createDate,
+                    parameter.userId=item.userId
                 }
                 this.http.post('/report/changeReminder',parameter,res => {
                     if(res.code == 'ok'){