fix:修改补卡记录同步更新考勤统计信息表
This commit is contained in:
parent
29930f98ff
commit
d3943bad8c
@ -59,4 +59,10 @@ public interface RzAttendanceStatisticalMapper
|
|||||||
*/
|
*/
|
||||||
public List<RzAttendanceStatistical> queryStatisticalByMonth(Date month);
|
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 考勤记录集合
|
* @return 考勤记录集合
|
||||||
*/
|
*/
|
||||||
public List<RzAttendance> listAttendanceByParams(RzAttendance rzAttendance);
|
public List<RzAttendance> listAttendanceByParams(RzAttendance rzAttendance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手动更改考勤记录时更新考勤统计信息
|
||||||
|
*
|
||||||
|
* @param rzAttendance 考勤记录
|
||||||
|
* @return 考勤记录集合
|
||||||
|
*/
|
||||||
|
public AjaxResult upateStatisticalByRzAttendance(RzAttendance rzAttendance);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.evo.attendance.service.impl;
|
package com.evo.attendance.service.impl;
|
||||||
|
|
||||||
|
import com.evo.attendance.domain.RzAttendanceStatistical;
|
||||||
import com.evo.common.annotation.DataScope;
|
import com.evo.common.annotation.DataScope;
|
||||||
import com.evo.common.core.domain.AjaxResult;
|
import com.evo.common.core.domain.AjaxResult;
|
||||||
import com.evo.common.core.domain.entity.SysDept;
|
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.mapper.RzAttendanceStatisticalMapper;
|
||||||
import com.evo.attendance.service.IRzAttendanceService;
|
import com.evo.attendance.service.IRzAttendanceService;
|
||||||
import com.evo.common.utils.StringUtils;
|
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 com.evo.system.mapper.SysDeptMapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.ZoneId;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -33,6 +38,8 @@ public class RzAttendanceServiceImpl implements IRzAttendanceService
|
|||||||
private SysDeptMapper deptMapper; //部门
|
private SysDeptMapper deptMapper; //部门
|
||||||
@Resource
|
@Resource
|
||||||
private RzAttendanceStatisticalMapper rzAttendanceStatisticalMapper; //考勤汇总
|
private RzAttendanceStatisticalMapper rzAttendanceStatisticalMapper; //考勤汇总
|
||||||
|
@Resource
|
||||||
|
private RzOverTimeMapper rzOverTimeMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询考勤记录
|
* 查询考勤记录
|
||||||
@ -89,7 +96,12 @@ public class RzAttendanceServiceImpl implements IRzAttendanceService
|
|||||||
rzAttendance.setYcxFlag("0");
|
rzAttendance.setYcxFlag("0");
|
||||||
rzAttendance.setUpdateBy(SecurityUtils.getUsername());
|
rzAttendance.setUpdateBy(SecurityUtils.getUsername());
|
||||||
rzAttendance.setUpdateTime(DateUtils.getNowDate());
|
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);
|
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"/>
|
<include refid="selectRzAttendanceStatisticalVo"/>
|
||||||
where DATE_FORMAT( month, '%Y%m' ) = DATE_FORMAT(#{month} , '%Y%m' ) AND del_flag = '0'
|
where DATE_FORMAT( month, '%Y%m' ) = DATE_FORMAT(#{month} , '%Y%m' ) AND del_flag = '0'
|
||||||
</select>
|
</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>
|
</mapper>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user