考勤请假数据重构
This commit is contained in:
parent
a0df3e03f6
commit
64dcc34d46
|
|
@ -134,7 +134,7 @@ public interface AttSourceDataDao {
|
|||
* 查询所有的请假数据
|
||||
* @return list bean
|
||||
*/
|
||||
List<LeaveBean> getLeaveData();
|
||||
List<LeaveBean> getLeaveData(String pushDate);
|
||||
|
||||
void updateHisData(String date);
|
||||
|
||||
|
|
@ -225,4 +225,10 @@ public interface AttSourceDataDao {
|
|||
* @return
|
||||
*/
|
||||
List<Holiday> selectHolidayByDay(String pushDate);
|
||||
|
||||
/**
|
||||
* 请假数据更新--修改考勤状态
|
||||
* @param v
|
||||
*/
|
||||
void updateLeaveData(AttDataBean v);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,4 +75,11 @@ public class AttDataBean {
|
|||
this.orgId = orgId;
|
||||
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);
|
||||
|
||||
/**
|
||||
* 插入模板数据
|
||||
* @param pushDate
|
||||
* @param pushType
|
||||
* 人员考勤模版数据(默认是未打卡)
|
||||
* 每天早上0点30执行一次
|
||||
* @param pushDate 时间
|
||||
* @param pushType 1:自动推送(当天) 2:手动(历史)
|
||||
*/
|
||||
void insertAttTempData(String pushDate, int pushType);
|
||||
|
||||
|
|
@ -47,4 +48,10 @@ public interface AttCalService {
|
|||
* @param 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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 插入模板数据
|
||||
*
|
||||
* @param pushDate
|
||||
* @param pushType 1定时 2手动
|
||||
* 人员考勤模版数据(默认是未打卡)
|
||||
* 每天早上0点30执行一次
|
||||
* @param pushDate 时间
|
||||
* @param pushType 1:自动推送(当天) 2:手动(历史)
|
||||
*/
|
||||
@Override
|
||||
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);
|
||||
if (!leaveList.isEmpty()) {
|
||||
leaveList.forEach(leaveData -> threadLeaveData(leaveData, pushDate));
|
||||
|
|
|
|||
|
|
@ -118,8 +118,18 @@ public class NewAttTask {
|
|||
* @param pushDate 时间
|
||||
*/
|
||||
private void updateLegalHolidayData(String pushDate) {
|
||||
//旷工状态更新
|
||||
//法假数据更新
|
||||
attCalService.updateLegalHolidayData(pushDate);
|
||||
}
|
||||
|
||||
/**
|
||||
* 请假数据应用(步骤二:请假数据更新)
|
||||
* 法定节假日不会随时间变化,一天执行一次就可以了
|
||||
* @param pushDate 时间
|
||||
*/
|
||||
private void updateLeaveData(String pushDate) {
|
||||
//请假数据更新
|
||||
attCalService.updateLeaveData(pushDate);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -67,16 +67,16 @@
|
|||
</insert>
|
||||
|
||||
<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
|
||||
<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>
|
||||
;
|
||||
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
|
||||
<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>
|
||||
;
|
||||
</insert>
|
||||
|
|
@ -150,6 +150,26 @@
|
|||
</foreach>
|
||||
</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
|
||||
from att_source_data
|
||||
|
|
@ -391,23 +411,19 @@
|
|||
</select>
|
||||
|
||||
<select id="getLeaveData" resultType="com.bonus.system.att.entity.LeaveBean">
|
||||
SELECT agpr.org_id,
|
||||
ag.att_type,
|
||||
la.*,
|
||||
SELECT la.*,
|
||||
sdd.dict_value AS attStatus
|
||||
FROM leave_apply la
|
||||
LEFT JOIN sys_dict_data sdd ON sdd.dict_label =
|
||||
IF
|
||||
(la.leave_type IS NOT NULL, la.leave_type, la.type)
|
||||
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
|
||||
AND la.examine_status = 1
|
||||
AND sdd.dict_value IS NOT NULL
|
||||
AND agpr.is_active = 1
|
||||
ORDER BY leave_start_date DESC
|
||||
AND leave_start_date BETWEEN #{pushDate} - INTERVAL 3 DAY
|
||||
and #{pushDate}
|
||||
ORDER BY
|
||||
</select>
|
||||
|
||||
<select id="getLeaveDataByUserId" resultType="java.lang.Integer">
|
||||
|
|
@ -445,20 +461,22 @@
|
|||
<select id="getAttPerson" resultType="com.bonus.system.att.entity.AttDataBean">
|
||||
SELECT su.user_id,
|
||||
ash.group_id,
|
||||
suo.org_id,
|
||||
'1' AS attType,
|
||||
'0' AS attStatus
|
||||
FROM att_setting_history ash
|
||||
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}
|
||||
UNION
|
||||
SELECT su.user_id,
|
||||
ash.group_id,
|
||||
suo.org_id,
|
||||
'2' AS attType,
|
||||
'0' AS attStatus
|
||||
FROM att_setting_history ash
|
||||
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}
|
||||
</select>
|
||||
<select id="getAttDataPerson" resultType="java.lang.Long">
|
||||
|
|
@ -486,19 +504,17 @@
|
|||
WHERE
|
||||
att_current_day = #{pushDate}
|
||||
AND att_status = 0
|
||||
And is_update = 0
|
||||
And is_update = 0
|
||||
<if test='attType != ""'>
|
||||
AND att_type = #{attType}
|
||||
</if>
|
||||
</select>
|
||||
<select id="selectHolidayByDay" resultType="com.bonus.system.att.entity.Holiday">
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
sys_holiday
|
||||
SELECT *
|
||||
FROM sys_holiday
|
||||
WHERE
|
||||
date = #{pushDate}
|
||||
AND type = '1'
|
||||
date = #{pushDate}
|
||||
AND type = '1'
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue