fix:修改补卡记录同步更新考勤统计信息表
This commit is contained in:
parent
29930f98ff
commit
d3943bad8c
@ -59,4 +59,10 @@ public interface RzAttendanceStatisticalMapper
|
||||
*/
|
||||
public List<RzAttendanceStatistical> queryStatisticalByMonth(Date month);
|
||||
|
||||
/**
|
||||
* 查询某个人考勤月的考勤统计信息 *
|
||||
* @return 考勤统计集合
|
||||
*/
|
||||
public List<RzAttendanceStatistical> queryStatisticalByMonthAndName(@Param("attendanceDate") Date attendanceDate,@Param("name") String name);
|
||||
|
||||
}
|
||||
|
||||
@ -52,4 +52,12 @@ public interface IRzAttendanceService
|
||||
* @return 考勤记录集合
|
||||
*/
|
||||
public List<RzAttendance> listAttendanceByParams(RzAttendance rzAttendance);
|
||||
|
||||
/**
|
||||
* 手动更改考勤记录时更新考勤统计信息
|
||||
*
|
||||
* @param rzAttendance 考勤记录
|
||||
* @return 考勤记录集合
|
||||
*/
|
||||
public AjaxResult upateStatisticalByRzAttendance(RzAttendance rzAttendance);
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.evo.attendance.service.impl;
|
||||
|
||||
import com.evo.attendance.domain.RzAttendanceStatistical;
|
||||
import com.evo.common.annotation.DataScope;
|
||||
import com.evo.common.core.domain.AjaxResult;
|
||||
import com.evo.common.core.domain.entity.SysDept;
|
||||
@ -10,11 +11,15 @@ import com.evo.attendance.mapper.RzAttendanceMapper;
|
||||
import com.evo.attendance.mapper.RzAttendanceStatisticalMapper;
|
||||
import com.evo.attendance.service.IRzAttendanceService;
|
||||
import com.evo.common.utils.StringUtils;
|
||||
import com.evo.personnelMatters.domain.RzOverTime;
|
||||
import com.evo.personnelMatters.mapper.RzOverTimeMapper;
|
||||
import com.evo.system.mapper.SysDeptMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@ -33,6 +38,8 @@ public class RzAttendanceServiceImpl implements IRzAttendanceService
|
||||
private SysDeptMapper deptMapper; //部门
|
||||
@Resource
|
||||
private RzAttendanceStatisticalMapper rzAttendanceStatisticalMapper; //考勤汇总
|
||||
@Resource
|
||||
private RzOverTimeMapper rzOverTimeMapper;
|
||||
|
||||
/**
|
||||
* 查询考勤记录
|
||||
@ -89,7 +96,12 @@ public class RzAttendanceServiceImpl implements IRzAttendanceService
|
||||
rzAttendance.setYcxFlag("0");
|
||||
rzAttendance.setUpdateBy(SecurityUtils.getUsername());
|
||||
rzAttendance.setUpdateTime(DateUtils.getNowDate());
|
||||
return rzAttendanceMapper.updateRzAttendance(rzAttendance);
|
||||
|
||||
int count = rzAttendanceMapper.updateRzAttendance(rzAttendance);
|
||||
if (count >0) {
|
||||
upateStatisticalByRzAttendance(rzAttendance);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -189,4 +201,50 @@ public class RzAttendanceServiceImpl implements IRzAttendanceService
|
||||
return rzAttendanceMapper.listAttendanceByParams(rzAttendance);
|
||||
}
|
||||
|
||||
public static int getMonthFromDate(Date date) {
|
||||
if (date == null) {
|
||||
return -1; // 或者抛出异常
|
||||
}
|
||||
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
||||
return localDate.getMonthValue(); // 返回 1-12
|
||||
}
|
||||
|
||||
/**
|
||||
* 手动更改考勤记录时更新考勤统计信息
|
||||
*
|
||||
* @param rzAttendance 考勤记录
|
||||
* @return 考勤记录集合
|
||||
*/
|
||||
public AjaxResult upateStatisticalByRzAttendance(RzAttendance rzAttendance) {
|
||||
|
||||
//查询条件月统计的数据
|
||||
List<RzAttendanceStatistical> ms_list = rzAttendanceStatisticalMapper.queryStatisticalByMonthAndName(rzAttendance.getAttendanceDate(),rzAttendance.getName());
|
||||
if (null != ms_list && ms_list.size() > 0) {
|
||||
//初始化打卡记录
|
||||
RzAttendanceStatistical attendanceStatistical = ms_list.get(0);
|
||||
attendanceStatistical.setEssentialAttendance(new BigDecimal("0.0"));
|
||||
attendanceStatistical.setWorkOvertimeNumber(new BigDecimal("0.0"));
|
||||
attendanceStatistical.setMiddleShiftNumber(0l);
|
||||
attendanceStatistical.setNightNumber(0l);
|
||||
//查询打卡记录
|
||||
// RzAttendance rzAttendance = new RzAttendance();
|
||||
rzAttendance.setAttendanceDate(rzAttendance.getAttendanceDate());
|
||||
rzAttendance.setStaffId(attendanceStatistical.getStaffId());
|
||||
List<RzAttendance> at_list = rzAttendanceMapper.listAttendanceByParams(rzAttendance);
|
||||
for (RzAttendance attendance : at_list) {
|
||||
attendanceStatistical.setEssentialAttendance(attendanceStatistical.getEssentialAttendance().add(attendance.getWorkSum()));
|
||||
attendanceStatistical.setMiddleShiftNumber(attendanceStatistical.getMiddleShiftNumber() + attendance.getMiddleShiftNumber());
|
||||
attendanceStatistical.setNightNumber(attendanceStatistical.getNightNumber() + attendance.getNightNumber());
|
||||
}
|
||||
//获取加班数据
|
||||
RzOverTime rzOverTime = rzOverTimeMapper.selectRzOverTimeByNameAndMonth(attendanceStatistical.getStaffId(), rzAttendance.getAttendanceDate());
|
||||
if (StringUtils.isNotNull(rzOverTime)) {
|
||||
attendanceStatistical.setWorkOvertimeNumber(rzOverTime.getOverHours());
|
||||
}
|
||||
attendanceStatistical.setRealAttendance(attendanceStatistical.getEssentialAttendance().add(attendanceStatistical.getWorkOvertimeNumber()));
|
||||
rzAttendanceStatisticalMapper.updateRzAttendanceStatistical(attendanceStatistical);
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -136,4 +136,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<include refid="selectRzAttendanceStatisticalVo"/>
|
||||
where DATE_FORMAT( month, '%Y%m' ) = DATE_FORMAT(#{month} , '%Y%m' ) AND del_flag = '0'
|
||||
</select>
|
||||
|
||||
<!-- 查询某个人考勤月所有的考勤统计 -->
|
||||
<select id="queryStatisticalByMonthAndName" resultMap="RzAttendanceStatisticalResult">
|
||||
<include refid="selectRzAttendanceStatisticalVo"/>
|
||||
where DATE_FORMAT( month, '%Y%m' ) = DATE_FORMAT(#{attendanceDate} , '%Y%m' ) and name = #{name} AND del_flag = '0'
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user