调整考勤
This commit is contained in:
parent
41313ef7d3
commit
9f3c939abd
@ -1,7 +1,6 @@
|
|||||||
package com.evo.attendance.mapper;
|
package com.evo.attendance.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.evo.attendance.domain.RzAttendance;
|
|
||||||
import com.evo.attendance.domain.RzAttendanceDetail;
|
import com.evo.attendance.domain.RzAttendanceDetail;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
@ -66,4 +65,12 @@ public interface RzAttendanceDetailMapper extends BaseMapper<RzAttendanceDetail>
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Long checkOverTimeCard(@Param("userId") Long userId, @Param("date") Date date);
|
Long checkOverTimeCard(@Param("userId") Long userId, @Param("date") Date date);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询员工最后一次上班卡. 只要上班卡, 其他地方可不使用
|
||||||
|
*
|
||||||
|
* @param staffId
|
||||||
|
* @return 考勤明细集合
|
||||||
|
*/
|
||||||
|
public RzAttendanceDetail selectLastRzAttendanceDetailByBk(@Param("staffId") Long staffId, @Param("buttonType") String buttonType, @Param("startDateTime") Date startDateTime, @Param("endDateTime") Date endDateTime);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -148,12 +148,9 @@ public class TSDeviceExchangeProcessor implements PunchTheClockStrategyExchangeP
|
|||||||
Integer minHour = ruleJson.getInteger("minHour");
|
Integer minHour = ruleJson.getInteger("minHour");
|
||||||
//根据公司规定, 如果加班卡打卡时间早于19点,则按照19点计算
|
//根据公司规定, 如果加班卡打卡时间早于19点,则按照19点计算
|
||||||
Date endMealDate = DateUtils.dateTime("yyyy-MM-dd HH:mm", sdfd.format(date)+" "+endMealTime);
|
Date endMealDate = DateUtils.dateTime("yyyy-MM-dd HH:mm", sdfd.format(date)+" "+endMealTime);
|
||||||
if(rzSpecialAttendance.getWorkStartTime().compareTo(endMealDate) > 0){
|
Long overMinutes = DateUtils.getBetweenMinutes(rzSpecialAttendance.getWorkStartTime(), rzSpecialAttendance.getWorkEndTime());
|
||||||
endMealDate = rzSpecialAttendance.getWorkStartTime();
|
|
||||||
}
|
|
||||||
Long overMinutes = DateUtils.getBetweenMinutes(endMealDate, rzSpecialAttendance.getWorkEndTime());
|
|
||||||
//核查当前人员, 当天是否吃完饭 //如果吃晚饭, 扣减30分钟
|
//核查当前人员, 当天是否吃完饭 //如果吃晚饭, 扣减30分钟
|
||||||
if(rzRestaurantDetailMapper.checkDinnerByStaffIdAndDateAndSign(sysStaff.getUserId(), date, "晚餐").compareTo(0l) > 0){
|
if((rzSpecialAttendance.getWorkStartTime().compareTo(endMealDate) <= 0) && (rzRestaurantDetailMapper.checkDinnerByStaffIdAndDateAndSign(sysStaff.getUserId(), date, "晚餐").compareTo(0l) > 0)){
|
||||||
overMinutes = new BigDecimal(overMinutes).subtract(new BigDecimal(ParamUtils.getShortBreakDeductionMinutes())).longValue();
|
overMinutes = new BigDecimal(overMinutes).subtract(new BigDecimal(ParamUtils.getShortBreakDeductionMinutes())).longValue();
|
||||||
}
|
}
|
||||||
BigDecimal workHours = new BigDecimal(0);
|
BigDecimal workHours = new BigDecimal(0);
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
package com.evo.personnelMatters.service.impl;
|
package com.evo.personnelMatters.service.impl;
|
||||||
|
|
||||||
import com.evo.attendance.domain.RzAttendanceStatistical;
|
import com.evo.attendance.domain.RzAttendance;
|
||||||
|
import com.evo.attendance.domain.RzAttendanceDetail;
|
||||||
|
import com.evo.attendance.mapper.RzAttendanceDetailMapper;
|
||||||
|
import com.evo.attendance.mapper.RzAttendanceMapper;
|
||||||
import com.evo.attendance.mapper.RzAttendanceStatisticalMapper;
|
import com.evo.attendance.mapper.RzAttendanceStatisticalMapper;
|
||||||
import com.evo.common.constant.Constants;
|
import com.evo.common.constant.Constants;
|
||||||
import com.evo.common.core.domain.AjaxResult;
|
import com.evo.common.core.domain.AjaxResult;
|
||||||
@ -11,10 +14,15 @@ import com.evo.personnelMatters.domain.RzOverTimeDetail;
|
|||||||
import com.evo.personnelMatters.mapper.RzOverTimeDetailMapper;
|
import com.evo.personnelMatters.mapper.RzOverTimeDetailMapper;
|
||||||
import com.evo.personnelMatters.mapper.RzOverTimeMapper;
|
import com.evo.personnelMatters.mapper.RzOverTimeMapper;
|
||||||
import com.evo.personnelMatters.service.IRzOverTimeDetailService;
|
import com.evo.personnelMatters.service.IRzOverTimeDetailService;
|
||||||
|
import com.evo.system.domain.SysStaff;
|
||||||
|
import com.evo.system.mapper.SysStaffMapper;
|
||||||
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -32,6 +40,12 @@ public class RzOverTimeDetailServiceImpl implements IRzOverTimeDetailService
|
|||||||
private RzOverTimeMapper rzOverTimeMapper;
|
private RzOverTimeMapper rzOverTimeMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private RzAttendanceStatisticalMapper rzAttendanceStatisticalMapper; //打卡统计
|
private RzAttendanceStatisticalMapper rzAttendanceStatisticalMapper; //打卡统计
|
||||||
|
@Resource
|
||||||
|
private RzAttendanceDetailMapper rzAttendanceDetailMapper;
|
||||||
|
@Resource
|
||||||
|
private RzAttendanceMapper rzAttendanceMapper;
|
||||||
|
@Resource
|
||||||
|
private SysStaffMapper sysStaffMapper;
|
||||||
/**
|
/**
|
||||||
* 查询加班详情
|
* 查询加班详情
|
||||||
*
|
*
|
||||||
@ -44,6 +58,52 @@ public class RzOverTimeDetailServiceImpl implements IRzOverTimeDetailService
|
|||||||
return rzOverTimeDetailMapper.selectRzOverTimeDetailById(id);
|
return rzOverTimeDetailMapper.selectRzOverTimeDetailById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void createAttendanceDetail(RzOverTime rzOverTime, RzOverTimeDetail rzOverTimeDetail){
|
||||||
|
//加班卡
|
||||||
|
RzAttendanceDetail jbk = rzAttendanceDetailMapper.selectLastRzAttendanceDetailByBk(rzOverTime.getUserId(), "加班卡", rzOverTimeDetail.getOverTimeStart(), null);
|
||||||
|
SysStaff sysStaff = sysStaffMapper.selectSysStaffByUserId(rzOverTime.getUserId());
|
||||||
|
RzAttendance attendance = null;
|
||||||
|
if(ObjectUtils.isEmpty(jbk)){
|
||||||
|
attendance = rzAttendanceMapper.queryNowDayAttendanceByStatisticalIdAndDate(sysStaff.getUserId(), rzOverTimeDetail.getOverTimeStart());
|
||||||
|
//获取员工的工作时长
|
||||||
|
jbk = new RzAttendanceDetail();
|
||||||
|
//打卡明细表中插入数据
|
||||||
|
jbk.setButtonType("加班卡");
|
||||||
|
jbk.setName(rzOverTimeDetail.getName());
|
||||||
|
jbk.setAttendanceId(attendance.getId());
|
||||||
|
jbk.setDateTime(rzOverTimeDetail.getOverTimeStart());
|
||||||
|
jbk.setDelFlag(Constants.DELETE_FLAG_0);
|
||||||
|
jbk.setStaffId(rzOverTime.getUserId());
|
||||||
|
jbk.setEquipmentCode(sysStaff.getTimeClock());
|
||||||
|
jbk.setCreateTime(new Date());
|
||||||
|
jbk.setRemark("加班补卡生成");
|
||||||
|
rzAttendanceDetailMapper.insert(jbk);
|
||||||
|
}
|
||||||
|
//下班卡
|
||||||
|
RzAttendanceDetail xbk = rzAttendanceDetailMapper.selectLastRzAttendanceDetailByBk(rzOverTime.getUserId(), "下班卡", rzOverTimeDetail.getOverTimeStart(),rzOverTimeDetail.getOverTimeEnd());
|
||||||
|
if(ObjectUtils.isEmpty(xbk)){
|
||||||
|
if(ObjectUtils.isEmpty(attendance)){
|
||||||
|
attendance = rzAttendanceMapper.queryNowDayAttendanceByStatisticalIdAndDate(sysStaff.getUserId(), rzOverTimeDetail.getOverTimeStart());
|
||||||
|
}
|
||||||
|
//获取员工的工作时长
|
||||||
|
jbk = new RzAttendanceDetail();
|
||||||
|
//打卡明细表中插入数据
|
||||||
|
jbk.setButtonType("下班卡");
|
||||||
|
jbk.setName(rzOverTimeDetail.getName());
|
||||||
|
jbk.setAttendanceId(attendance.getId());
|
||||||
|
jbk.setDateTime(rzOverTimeDetail.getOverTimeEnd());
|
||||||
|
jbk.setDelFlag(Constants.DELETE_FLAG_0);
|
||||||
|
jbk.setStaffId(rzOverTime.getUserId());
|
||||||
|
jbk.setEquipmentCode(sysStaff.getTimeClock());
|
||||||
|
jbk.setCreateTime(new Date());
|
||||||
|
jbk.setRemark("加班补卡生成");
|
||||||
|
rzAttendanceDetailMapper.insert(jbk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询加班详情列表
|
* 查询加班详情列表
|
||||||
*
|
*
|
||||||
@ -86,13 +146,15 @@ public class RzOverTimeDetailServiceImpl implements IRzOverTimeDetailService
|
|||||||
if(i < 1){
|
if(i < 1){
|
||||||
return AjaxResult.error();
|
return AjaxResult.error();
|
||||||
}
|
}
|
||||||
//反写考勤汇总
|
|
||||||
RzAttendanceStatistical rzAttendanceStatistical = rzAttendanceStatisticalMapper.getRzAttendanceStatisticalByDateAndName(rzOverTime.getUserId(),rzOverTime.getOverTimeMonth());
|
createAttendanceDetail(rzOverTime, rzOverTimeDetail);
|
||||||
rzAttendanceStatistical.setWorkOvertimeNumber(rzOverTime.getOverHours());
|
// //反写考勤汇总
|
||||||
i = rzAttendanceStatisticalMapper.updateRzAttendanceStatistical(rzAttendanceStatistical);
|
// RzAttendanceStatistical rzAttendanceStatistical = rzAttendanceStatisticalMapper.getRzAttendanceStatisticalByDateAndName(rzOverTime.getUserId(),rzOverTime.getOverTimeMonth());
|
||||||
if(i < 1){
|
// rzAttendanceStatistical.setWorkOvertimeNumber(rzOverTime.getOverHours());
|
||||||
return AjaxResult.error();
|
// i = rzAttendanceStatisticalMapper.updateRzAttendanceStatistical(rzAttendanceStatistical);
|
||||||
}
|
// if(i < 1){
|
||||||
|
// return AjaxResult.error();
|
||||||
|
// }
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,16 +185,20 @@ public class RzOverTimeDetailServiceImpl implements IRzOverTimeDetailService
|
|||||||
if(i < 1){
|
if(i < 1){
|
||||||
return AjaxResult.error();
|
return AjaxResult.error();
|
||||||
}
|
}
|
||||||
|
createAttendanceDetail(rzOverTime, rzOverTimeDetail);
|
||||||
//反写考勤汇总
|
//反写考勤汇总
|
||||||
RzAttendanceStatistical rzAttendanceStatistical = rzAttendanceStatisticalMapper.getRzAttendanceStatisticalByDateAndName(rzOverTime.getUserId(),rzOverTime.getOverTimeMonth());
|
// RzAttendanceStatistical rzAttendanceStatistical = rzAttendanceStatisticalMapper.getRzAttendanceStatisticalByDateAndName(rzOverTime.getUserId(),rzOverTime.getOverTimeMonth());
|
||||||
rzAttendanceStatistical.setWorkOvertimeNumber(rzOverTime.getOverHours());
|
// rzAttendanceStatistical.setWorkOvertimeNumber(rzOverTime.getOverHours());
|
||||||
i = rzAttendanceStatisticalMapper.updateRzAttendanceStatistical(rzAttendanceStatistical);
|
// i = rzAttendanceStatisticalMapper.updateRzAttendanceStatistical(rzAttendanceStatistical);
|
||||||
if(i < 1){
|
// if(i < 1){
|
||||||
return AjaxResult.error();
|
// return AjaxResult.error();
|
||||||
}
|
// }
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除加班详情信息
|
* 删除加班详情信息
|
||||||
*
|
*
|
||||||
@ -156,13 +222,13 @@ public class RzOverTimeDetailServiceImpl implements IRzOverTimeDetailService
|
|||||||
if(i < 1){
|
if(i < 1){
|
||||||
return AjaxResult.error();
|
return AjaxResult.error();
|
||||||
}
|
}
|
||||||
//反写考勤汇总
|
// //反写考勤汇总
|
||||||
RzAttendanceStatistical rzAttendanceStatistical = rzAttendanceStatisticalMapper.getRzAttendanceStatisticalByDateAndName(rzOverTime.getUserId(),rzOverTime.getOverTimeMonth());
|
// RzAttendanceStatistical rzAttendanceStatistical = rzAttendanceStatisticalMapper.getRzAttendanceStatisticalByDateAndName(rzOverTime.getUserId(),rzOverTime.getOverTimeMonth());
|
||||||
rzAttendanceStatistical.setWorkOvertimeNumber(rzOverTime.getOverHours());
|
// rzAttendanceStatistical.setWorkOvertimeNumber(rzOverTime.getOverHours());
|
||||||
i = rzAttendanceStatisticalMapper.updateRzAttendanceStatistical(rzAttendanceStatistical);
|
// i = rzAttendanceStatisticalMapper.updateRzAttendanceStatistical(rzAttendanceStatistical);
|
||||||
if(i < 1){
|
// if(i < 1){
|
||||||
return AjaxResult.error();
|
// return AjaxResult.error();
|
||||||
}
|
// }
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,6 +21,13 @@ public interface RzUploadService
|
|||||||
*/
|
*/
|
||||||
public RzUpload selectById(Long id);
|
public RzUpload selectById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询文件信息
|
||||||
|
*
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public RzUpload selectByBusinessId(Long businessId, String type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增文件信息
|
* 新增文件信息
|
||||||
*
|
*
|
||||||
@ -43,4 +50,6 @@ public interface RzUploadService
|
|||||||
*/
|
*/
|
||||||
public List<RzUpload> selectListByBusinessIdAndyType(List<Long> businessIds, String type);
|
public List<RzUpload> selectListByBusinessIdAndyType(List<Long> businessIds, String type);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,6 +41,11 @@ public class RzUploadServiceImpl extends ServiceImpl<RzUploadMapper, RzUpload> i
|
|||||||
return getById(id);
|
return getById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RzUpload selectByBusinessId(Long businessId, String type) {
|
||||||
|
return getBaseMapper().selectOne(new LambdaQueryWrapper<RzUpload>().eq(RzUpload::getBusinessId, businessId).eq(RzUpload::getType,type).eq(RzUpload::getValid,"valid"));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增保存上传信息
|
* 新增保存上传信息
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,12 +1,10 @@
|
|||||||
package com.evo.system.service.impl;
|
package com.evo.system.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.evo.attendance.service.IRzAttendanceStatisticalService;
|
|
||||||
import com.evo.attendance.domain.vo.RzSalaryVo;
|
import com.evo.attendance.domain.vo.RzSalaryVo;
|
||||||
|
import com.evo.attendance.service.IRzAttendanceStatisticalService;
|
||||||
import com.evo.common.annotation.DataScope;
|
import com.evo.common.annotation.DataScope;
|
||||||
import com.evo.common.annotation.Excel;
|
|
||||||
import com.evo.common.constant.Constants;
|
import com.evo.common.constant.Constants;
|
||||||
import com.evo.common.core.domain.AjaxResult;
|
import com.evo.common.core.domain.AjaxResult;
|
||||||
import com.evo.common.core.domain.entity.RzUpload;
|
import com.evo.common.core.domain.entity.RzUpload;
|
||||||
@ -15,8 +13,6 @@ import com.evo.common.core.domain.entity.SysDictData;
|
|||||||
import com.evo.common.utils.*;
|
import com.evo.common.utils.*;
|
||||||
import com.evo.common.utils.bean.BeanUtils;
|
import com.evo.common.utils.bean.BeanUtils;
|
||||||
import com.evo.equipment.service.IEqSnDetailService;
|
import com.evo.equipment.service.IEqSnDetailService;
|
||||||
import com.evo.restaurant.domain.RzRestaurantStatistics;
|
|
||||||
import com.evo.restaurant.mapper.RzRestaurantStatisticsMapper;
|
|
||||||
import com.evo.restaurant.service.IRzRestaurantStatisticsService;
|
import com.evo.restaurant.service.IRzRestaurantStatisticsService;
|
||||||
import com.evo.system.domain.SysStaff;
|
import com.evo.system.domain.SysStaff;
|
||||||
import com.evo.system.domain.SysStaffDetail;
|
import com.evo.system.domain.SysStaffDetail;
|
||||||
@ -39,7 +35,9 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.io.*;
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -164,8 +162,8 @@ public class SysStaffServiceImpl extends ServiceImpl<SysStaffMapper, SysStaff> i
|
|||||||
|
|
||||||
private void initCheckDevice(SysStaff sysStaff){
|
private void initCheckDevice(SysStaff sysStaff){
|
||||||
//如果文件Id不为空, 则需要更新打卡设备信息, 完成后, 同步更新图片的业务Id数据
|
//如果文件Id不为空, 则需要更新打卡设备信息, 完成后, 同步更新图片的业务Id数据
|
||||||
if(ObjectUtils.isNotEmpty(sysStaff.getFileId())){
|
|
||||||
RzUpload upload = null;
|
RzUpload upload = null;
|
||||||
|
if(ObjectUtils.isNotEmpty(sysStaff.getFileId())){
|
||||||
try {
|
try {
|
||||||
upload = rzUploadService.selectById(sysStaff.getFileId());
|
upload = rzUploadService.selectById(sysStaff.getFileId());
|
||||||
upload.setBusinessId(sysStaff.getUserId());
|
upload.setBusinessId(sysStaff.getUserId());
|
||||||
@ -173,6 +171,13 @@ public class SysStaffServiceImpl extends ServiceImpl<SysStaffMapper, SysStaff> i
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("处理上传照片信息出现错误", e);
|
log.error("处理上传照片信息出现错误", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if(upload == null){
|
||||||
|
upload = rzUploadService.selectByBusinessId(sysStaff.getUserId(), "avatar");
|
||||||
|
}
|
||||||
|
//不为空, 准备下发
|
||||||
|
if(upload != null){
|
||||||
List<String> dkj_list = new ArrayList<String>();
|
List<String> dkj_list = new ArrayList<String>();
|
||||||
dkj_list.add(com.evo.equipment.constant.Constants.EQ_DEVICE_CODE); //食堂
|
dkj_list.add(com.evo.equipment.constant.Constants.EQ_DEVICE_CODE); //食堂
|
||||||
dkj_list.add(com.evo.equipment.constant.Constants.EQ_DEVICE_PUBLIC_CODE); //公共
|
dkj_list.add(com.evo.equipment.constant.Constants.EQ_DEVICE_PUBLIC_CODE); //公共
|
||||||
|
|||||||
@ -97,6 +97,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
where del_flag = '0' and DATE_FORMAT( date_time, '%Y%m%d' ) = DATE_FORMAT(#{date} , '%Y%m%d' ) and staff_id = #{userId} and button_type = '加班卡'
|
where del_flag = '0' and DATE_FORMAT( date_time, '%Y%m%d' ) = DATE_FORMAT(#{date} , '%Y%m%d' ) and staff_id = #{userId} and button_type = '加班卡'
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectLastRzAttendanceDetailByBk" resultMap="RzAttendanceDetailResult">
|
||||||
|
<include refid="selectRzAttendanceDetailVo"/>
|
||||||
|
where del_flag = '0' and staff_id = #{staffId} and button_type = #{buttonType}
|
||||||
|
|
||||||
|
<if test="buttonType == '加班卡'"> and DATE_FORMAT( date_time, '%Y%m%d' ) = DATE_FORMAT(#{startDateTime} , '%Y%m%d' ) </if>
|
||||||
|
<if test="buttonType == '下班卡'"> and (
|
||||||
|
(DATE_FORMAT( date_time, '%Y%m%d' ) = DATE_FORMAT(#{startDateTime} , '%Y%m%d' ) and date_time > #{startDateTime})
|
||||||
|
or (DATE_FORMAT( date_time, '%Y%m%d %H:%i' ) = DATE_FORMAT(#{endDateTime} , '%Y%m%d %H:%i' ))
|
||||||
|
)</if>
|
||||||
|
order by date_time desc limit 1
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user