考勤请假数据重构
This commit is contained in:
parent
a0df3e03f6
commit
64dcc34d46
|
|
@ -134,7 +134,7 @@ public interface AttSourceDataDao {
|
||||||
* 查询所有的请假数据
|
* 查询所有的请假数据
|
||||||
* @return list bean
|
* @return list bean
|
||||||
*/
|
*/
|
||||||
List<LeaveBean> getLeaveData();
|
List<LeaveBean> getLeaveData(String pushDate);
|
||||||
|
|
||||||
void updateHisData(String date);
|
void updateHisData(String date);
|
||||||
|
|
||||||
|
|
@ -225,4 +225,10 @@ public interface AttSourceDataDao {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<Holiday> selectHolidayByDay(String pushDate);
|
List<Holiday> selectHolidayByDay(String pushDate);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请假数据更新--修改考勤状态
|
||||||
|
* @param v
|
||||||
|
*/
|
||||||
|
void updateLeaveData(AttDataBean v);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -75,4 +75,11 @@ public class AttDataBean {
|
||||||
this.orgId = orgId;
|
this.orgId = orgId;
|
||||||
this.userId = userId;
|
this.userId = userId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AttDataBean(String attCurrentDay, String attStatus, String attType, Long userId) {
|
||||||
|
this.attCurrentDay = attCurrentDay;
|
||||||
|
this.attStatus = attStatus;
|
||||||
|
this.attType = attType;
|
||||||
|
this.userId = userId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,10 @@ public interface AttCalService {
|
||||||
void getAttendanceData(String pushDate, int pushType);
|
void getAttendanceData(String pushDate, int pushType);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 插入模板数据
|
* 人员考勤模版数据(默认是未打卡)
|
||||||
* @param pushDate
|
* 每天早上0点30执行一次
|
||||||
* @param pushType
|
* @param pushDate 时间
|
||||||
|
* @param pushType 1:自动推送(当天) 2:手动(历史)
|
||||||
*/
|
*/
|
||||||
void insertAttTempData(String pushDate, int pushType);
|
void insertAttTempData(String pushDate, int pushType);
|
||||||
|
|
||||||
|
|
@ -47,4 +48,10 @@ public interface AttCalService {
|
||||||
* @param pushDate 时间
|
* @param pushDate 时间
|
||||||
*/
|
*/
|
||||||
void updateLegalHolidayData(String pushDate);
|
void updateLegalHolidayData(String pushDate);
|
||||||
|
/**
|
||||||
|
* 请假数据应用(步骤二:请假数据更新)
|
||||||
|
* 法定节假日不会随时间变化,一天执行一次就可以了
|
||||||
|
* @param pushDate 时间
|
||||||
|
*/
|
||||||
|
void updateLeaveData(String pushDate);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -220,12 +220,28 @@ public class AttCalServiceImpl implements AttCalService {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 请假数据应用(步骤二:请假数据更新)
|
||||||
|
* 法定节假日不会随时间变化,一天执行一次就可以了
|
||||||
|
* @param pushDate 时间
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void updateLeaveData(String pushDate) {
|
||||||
|
/**
|
||||||
|
* 查出在考勤组人员的请假数据
|
||||||
|
*/
|
||||||
|
List<LeaveBean> leaveList = Optional.ofNullable(attSourceDataDao.getLeaveData(pushDate)).
|
||||||
|
orElseGet(ArrayList::new);
|
||||||
|
if (!leaveList.isEmpty()) {
|
||||||
|
leaveList.forEach(this::threadLeaveData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 插入模板数据
|
* 人员考勤模版数据(默认是未打卡)
|
||||||
*
|
* 每天早上0点30执行一次
|
||||||
* @param pushDate
|
* @param pushDate 时间
|
||||||
* @param pushType 1定时 2手动
|
* @param pushType 1:自动推送(当天) 2:手动(历史)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void insertAttTempData(String pushDate, int pushType) {
|
public void insertAttTempData(String pushDate, int pushType) {
|
||||||
|
|
@ -795,4 +811,46 @@ public class AttCalServiceImpl implements AttCalService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据请假数据去更新考勤数据
|
||||||
|
*/
|
||||||
|
private void threadLeaveData(LeaveBean c) {
|
||||||
|
//1.将请假区间变成日期集合
|
||||||
|
// if(c.getUserId() == 263){
|
||||||
|
// System.out.println("米娜");
|
||||||
|
// }
|
||||||
|
List<String> dateLists = AttTimeUtil.getStrDateListBetween(c.getLeaveStartDate(), c.getLeaveEndDate());
|
||||||
|
if (!dateLists.isEmpty()) {
|
||||||
|
// //根据开始时间、结束时间获取节假日的日期集合
|
||||||
|
dateLists.forEach(v -> {
|
||||||
|
boolean tf = false;
|
||||||
|
AttDataBean toWorkBean = new AttDataBean(v, c.getAttStatus(), "1",
|
||||||
|
c.getUserId());
|
||||||
|
AttDataBean offWorkBean = new AttDataBean(v, c.getAttStatus(), "2",
|
||||||
|
c.getUserId());
|
||||||
|
//开始和结束的那天是否只请了半天
|
||||||
|
if (c.getLeaveStartDate().equals(v)) {
|
||||||
|
if (c.getLeaveStartInterval().equals("2")) {
|
||||||
|
attSourceDataDao.updateLeaveData(offWorkBean);
|
||||||
|
} else {
|
||||||
|
tf = true;
|
||||||
|
}
|
||||||
|
} else if (c.getLeaveEndDate().equals(v)) {
|
||||||
|
if (c.getLeaveEndInterval().equals("1")) {
|
||||||
|
attSourceDataDao.updateLeaveData(toWorkBean);
|
||||||
|
} else {
|
||||||
|
tf = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
tf = true;
|
||||||
|
}
|
||||||
|
if (tf) {
|
||||||
|
attSourceDataDao.updateLeaveData(toWorkBean);
|
||||||
|
attSourceDataDao.updateLeaveData(offWorkBean);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -318,7 +318,7 @@ public class AttTasks {
|
||||||
/**
|
/**
|
||||||
* 查出在考勤组人员的请假数据
|
* 查出在考勤组人员的请假数据
|
||||||
*/
|
*/
|
||||||
List<LeaveBean> leaveList = Optional.ofNullable(attSourceDataDao.getLeaveData()).
|
List<LeaveBean> leaveList = Optional.ofNullable(attSourceDataDao.getLeaveData(pushDate)).
|
||||||
orElseGet(ArrayList::new);
|
orElseGet(ArrayList::new);
|
||||||
if (!leaveList.isEmpty()) {
|
if (!leaveList.isEmpty()) {
|
||||||
leaveList.forEach(leaveData -> threadLeaveData(leaveData, pushDate));
|
leaveList.forEach(leaveData -> threadLeaveData(leaveData, pushDate));
|
||||||
|
|
|
||||||
|
|
@ -118,8 +118,18 @@ public class NewAttTask {
|
||||||
* @param pushDate 时间
|
* @param pushDate 时间
|
||||||
*/
|
*/
|
||||||
private void updateLegalHolidayData(String pushDate) {
|
private void updateLegalHolidayData(String pushDate) {
|
||||||
//旷工状态更新
|
//法假数据更新
|
||||||
attCalService.updateLegalHolidayData(pushDate);
|
attCalService.updateLegalHolidayData(pushDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请假数据应用(步骤二:请假数据更新)
|
||||||
|
* 法定节假日不会随时间变化,一天执行一次就可以了
|
||||||
|
* @param pushDate 时间
|
||||||
|
*/
|
||||||
|
private void updateLeaveData(String pushDate) {
|
||||||
|
//请假数据更新
|
||||||
|
attCalService.updateLeaveData(pushDate);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -67,16 +67,16 @@
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
<insert id="insertAttDataList">
|
<insert id="insertAttDataList">
|
||||||
insert into att_data(user_id, att_current_day, att_status, att_type)
|
insert into att_data(user_id, org_id, att_current_day, att_status, att_type)
|
||||||
values
|
values
|
||||||
<foreach collection="list" item="item" separator=",">
|
<foreach collection="list" item="item" separator=",">
|
||||||
(#{item.userId}, #{item.attCurrentDay}, #{item.attStatus}, #{item.attType})
|
(#{item.userId}, #{item.orgId}, #{item.attCurrentDay}, #{item.attStatus}, #{item.attType})
|
||||||
</foreach>
|
</foreach>
|
||||||
;
|
;
|
||||||
insert into att_data_update(user_id, att_current_day, att_status, att_type)
|
insert into att_data_update(user_id, org_id, att_current_day, att_status, att_type)
|
||||||
values
|
values
|
||||||
<foreach collection="list" item="item" separator=",">
|
<foreach collection="list" item="item" separator=",">
|
||||||
(#{item.userId}, #{item.attCurrentDay}, #{item.attStatus}, #{item.attType})
|
(#{item.userId}, #{item.orgId}, #{item.attCurrentDay}, #{item.attStatus}, #{item.attType})
|
||||||
</foreach>
|
</foreach>
|
||||||
;
|
;
|
||||||
</insert>
|
</insert>
|
||||||
|
|
@ -150,6 +150,26 @@
|
||||||
</foreach>
|
</foreach>
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<update id="updateLeaveData">
|
||||||
|
update att_data
|
||||||
|
set att_status = CASE
|
||||||
|
WHEN att_status = '11' THEN att_status
|
||||||
|
ELSE #{v.attStatus}
|
||||||
|
END
|
||||||
|
where user_id = #{v.userId}
|
||||||
|
and att_current_day = #{v.attCurrentDay}
|
||||||
|
and att_type = #{v.attType};
|
||||||
|
update att_data_update
|
||||||
|
set att_status = CASE
|
||||||
|
WHEN att_status = '11' THEN att_status
|
||||||
|
ELSE #{v.attStatus}
|
||||||
|
END
|
||||||
|
where user_id = #{v.userId}
|
||||||
|
and att_current_day = #{v.attCurrentDay}
|
||||||
|
and att_type = #{v.attType}
|
||||||
|
and is_update = 0;
|
||||||
|
</update>
|
||||||
|
|
||||||
<delete id="updateHisData">
|
<delete id="updateHisData">
|
||||||
delete
|
delete
|
||||||
from att_source_data
|
from att_source_data
|
||||||
|
|
@ -391,23 +411,19 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getLeaveData" resultType="com.bonus.system.att.entity.LeaveBean">
|
<select id="getLeaveData" resultType="com.bonus.system.att.entity.LeaveBean">
|
||||||
SELECT agpr.org_id,
|
SELECT la.*,
|
||||||
ag.att_type,
|
|
||||||
la.*,
|
|
||||||
sdd.dict_value AS attStatus
|
sdd.dict_value AS attStatus
|
||||||
FROM leave_apply la
|
FROM leave_apply la
|
||||||
LEFT JOIN sys_dict_data sdd ON sdd.dict_label =
|
LEFT JOIN sys_dict_data sdd ON sdd.dict_label =
|
||||||
IF
|
IF
|
||||||
(la.leave_type IS NOT NULL, la.leave_type, la.type)
|
(la.leave_type IS NOT NULL, la.leave_type, la.type)
|
||||||
AND sdd.dict_type = 'att_status'
|
AND sdd.dict_type = 'att_status'
|
||||||
LEFT JOIN att_group_person_relation agpr ON la.user_id = agpr.user_id
|
|
||||||
LEFT JOIN att_group ag ON ag.id = agpr.group_id
|
|
||||||
AND ag.is_active = '1'
|
|
||||||
WHERE la.is_active = 1
|
WHERE la.is_active = 1
|
||||||
AND la.examine_status = 1
|
AND la.examine_status = 1
|
||||||
AND sdd.dict_value IS NOT NULL
|
AND sdd.dict_value IS NOT NULL
|
||||||
AND agpr.is_active = 1
|
AND leave_start_date BETWEEN #{pushDate} - INTERVAL 3 DAY
|
||||||
ORDER BY leave_start_date DESC
|
and #{pushDate}
|
||||||
|
ORDER BY
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getLeaveDataByUserId" resultType="java.lang.Integer">
|
<select id="getLeaveDataByUserId" resultType="java.lang.Integer">
|
||||||
|
|
@ -445,20 +461,22 @@
|
||||||
<select id="getAttPerson" resultType="com.bonus.system.att.entity.AttDataBean">
|
<select id="getAttPerson" resultType="com.bonus.system.att.entity.AttDataBean">
|
||||||
SELECT su.user_id,
|
SELECT su.user_id,
|
||||||
ash.group_id,
|
ash.group_id,
|
||||||
|
suo.org_id,
|
||||||
'1' AS attType,
|
'1' AS attType,
|
||||||
'0' AS attStatus
|
'0' AS attStatus
|
||||||
FROM att_setting_history ash
|
FROM att_setting_history ash
|
||||||
LEFT JOIN sys_user su ON ash.user_id = su.user_id
|
LEFT JOIN sys_user su ON ash.user_id = su.user_id
|
||||||
AND su.is_active = 1
|
left join sys_user_org suo ON su.user_id = suo.user_id
|
||||||
WHERE ash.current_day = #{pushDate}
|
WHERE ash.current_day = #{pushDate}
|
||||||
UNION
|
UNION
|
||||||
SELECT su.user_id,
|
SELECT su.user_id,
|
||||||
ash.group_id,
|
ash.group_id,
|
||||||
|
suo.org_id,
|
||||||
'2' AS attType,
|
'2' AS attType,
|
||||||
'0' AS attStatus
|
'0' AS attStatus
|
||||||
FROM att_setting_history ash
|
FROM att_setting_history ash
|
||||||
LEFT JOIN sys_user su ON ash.user_id = su.user_id
|
LEFT JOIN sys_user su ON ash.user_id = su.user_id
|
||||||
AND su.is_active = 1
|
left join sys_user_org suo ON su.user_id = suo.user_id
|
||||||
WHERE ash.current_day = #{pushDate}
|
WHERE ash.current_day = #{pushDate}
|
||||||
</select>
|
</select>
|
||||||
<select id="getAttDataPerson" resultType="java.lang.Long">
|
<select id="getAttDataPerson" resultType="java.lang.Long">
|
||||||
|
|
@ -486,19 +504,17 @@
|
||||||
WHERE
|
WHERE
|
||||||
att_current_day = #{pushDate}
|
att_current_day = #{pushDate}
|
||||||
AND att_status = 0
|
AND att_status = 0
|
||||||
And is_update = 0
|
And is_update = 0
|
||||||
<if test='attType != ""'>
|
<if test='attType != ""'>
|
||||||
AND att_type = #{attType}
|
AND att_type = #{attType}
|
||||||
</if>
|
</if>
|
||||||
</select>
|
</select>
|
||||||
<select id="selectHolidayByDay" resultType="com.bonus.system.att.entity.Holiday">
|
<select id="selectHolidayByDay" resultType="com.bonus.system.att.entity.Holiday">
|
||||||
SELECT
|
SELECT *
|
||||||
*
|
FROM sys_holiday
|
||||||
FROM
|
|
||||||
sys_holiday
|
|
||||||
WHERE
|
WHERE
|
||||||
date = #{pushDate}
|
date = #{pushDate}
|
||||||
AND type = '1'
|
AND type = '1'
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
Loading…
Reference in New Issue