Commit 79e952f9 authored by 廖旭伟's avatar 廖旭伟

Merge remote-tracking branch 'origin/master'

parents a12241fe f42c091d
......@@ -12,6 +12,7 @@ import com.mortals.xhx.module.attendance.model.*;
import com.mortals.xhx.module.attendance.service.AttendanceGroupFixedworkService;
import com.mortals.xhx.module.attendance.service.AttendanceGroupStaffService;
import com.mortals.xhx.module.attendance.service.AttendanceRecordHikService;
import com.mortals.xhx.module.attendance.service.AttendanceRecordService;
import com.mortals.xhx.module.holiday.model.HolidayEntity;
import com.mortals.xhx.module.holiday.model.HolidayQuery;
import com.mortals.xhx.module.holiday.service.HolidayService;
......@@ -35,28 +36,31 @@ public class CalculateDayAttendTaskImpl implements ITaskExcuteService {
@Autowired
private AttendanceRecordHikService recordHikService;
@Autowired
private StaffService staffService;
@Autowired
private AttendanceGroupStaffService attendanceGroupStaffService;
@Autowired
private AttendanceGroupFixedworkService groupFixedworkService;
@Autowired
private HolidayService holidayService;
private AttendanceRecordService attendanceRecordService;
@Override
public void excuteTask(ITask task) throws AppException {
//查询当日考勤记录,查询未考勤人员,构造一条假记录方便计算
AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery();
recordHikQuery.setAttendanceDateStart(DateUtil.today());
recordHikQuery.setAttendanceDateEnd(DateUtil.today());
try {
AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery();
recordHikQuery.setAttendanceDateStart(DateUtil.today());
recordHikQuery.setAttendanceDateEnd(DateUtil.today());
recordHikQuery.setAttendanceDateStart(DateUtil.today());
recordHikQuery.setAttendanceDateEnd(DateUtil.today());
// recordHikService.buildCustomHikRecord(recordHikQuery, null);
recordHikService.buildAllCustomHikRecord(recordHikQuery, null);
} catch (Exception e) {
recordHikQuery.setAttendanceDateStart(DateUtil.today());
recordHikQuery.setAttendanceDateEnd(DateUtil.today());
// recordHikService.buildCustomHikRecord(recordHikQuery, null);
}
recordHikService.buildAllCustomHikRecord(recordHikQuery,null);
int delCount = attendanceRecordService.getDao().deleteDuplicateRecord();
log.info("删除重复记录条数:{}", delCount);
//初始化添加考勤记录到每个人
......
......@@ -18,4 +18,8 @@ public interface AttendanceRecordDao extends ICRUDDao<AttendanceRecordEntity,Lo
* 获取打卡记录id
* */
AttendanceRecordEntity getRecordId(Long id);
int deleteDuplicateRecord();
}
......@@ -5,18 +5,24 @@ import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.module.attendance.dao.AttendanceRecordDao;
import com.mortals.xhx.module.attendance.model.AttendanceRecordEntity;
import org.springframework.stereotype.Repository;
/**
* 考勤打卡记录信息DaoImpl DAO接口
*
* @author zxfei
* @date 2023-04-07
*/
* 考勤打卡记录信息DaoImpl DAO接口
*
* @author zxfei
* @date 2023-04-07
*/
@Repository("attendanceRecordDao")
public class AttendanceRecordDaoImpl extends BaseCRUDDaoMybatis<AttendanceRecordEntity,Long> implements AttendanceRecordDao {
public class AttendanceRecordDaoImpl extends BaseCRUDDaoMybatis<AttendanceRecordEntity, Long> implements AttendanceRecordDao {
@Override
public AttendanceRecordEntity getRecordId(Long id) {
return getSqlSession().selectOne(getSqlId("getRecordId"),id);
return getSqlSession().selectOne(getSqlId("getRecordId"), id);
}
@Override
public int deleteDuplicateRecord() {
return getSqlSession().delete(getSqlId("delete-duplicate-record"));
}
}
......@@ -3,6 +3,8 @@ package com.mortals.xhx.module.attendance.service;
import com.mortals.framework.common.Rest;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.attendance.dao.AttendanceRecordDao;
import com.mortals.xhx.module.attendance.dao.AttendanceRecordHikDao;
import com.mortals.xhx.module.attendance.model.AttendanceRecordEntity;
import com.mortals.xhx.module.attendance.model.vo.AttendStatInfo;
......@@ -16,6 +18,7 @@ import com.mortals.xhx.module.attendance.model.vo.AttendStatInfo;
*/
public interface AttendanceRecordService extends ICRUDService<AttendanceRecordEntity, Long> {
AttendanceRecordDao getDao();
Rest<AttendStatInfo> statByDay(Context context);
......
......@@ -39,28 +39,27 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda
@Override
protected void findAfter(AttendanceRecordEntity params, PageInfo pageInfo, Context context, List<AttendanceRecordEntity> list) throws AppException {
list.stream().map(item -> {
List<AttendanceRecordDetailEntity> attendanceRecordDetailEntities = attendanceRecordDetailService.find(new AttendanceRecordDetailQuery().recordId(item.getId()));
item.setAttendanceRecordDetailList(attendanceRecordDetailEntities);
return item;
}).collect(Collectors.toList());
protected void findAfter(AttendanceRecordEntity params,PageInfo pageInfo, Context context, List<AttendanceRecordEntity> list) throws AppException {
fillSubData(list);
super.findAfter(params,pageInfo, context, list);
}
@Override
protected void findAfter(AttendanceRecordEntity entity, Context context, List<AttendanceRecordEntity> list) throws AppException {
//Map<Long, List<AttendanceRecordDetailEntity>> collect = attendanceRecordDetailService.find(new AttendanceRecordDetailQuery()).parallelStream().collect(Collectors.groupingBy(x -> x.getRecordId()));
list.stream().map(item -> {
List<AttendanceRecordDetailEntity> attendanceRecordDetailEntities = attendanceRecordDetailService.find(new AttendanceRecordDetailQuery().recordId(item.getId()));
if(CollectionUtils.isNotEmpty(attendanceRecordDetailEntities)) {
attendanceRecordDetailEntities.forEach(i -> {
i.setStaffId(item.getStaffId());
});
}
//List<AttendanceRecordDetailEntity> attendanceRecordDetailEntities = attendanceRecordDetailService.find(new AttendanceRecordDetailQuery().recordId(item.getId()));
protected void findAfter(AttendanceRecordEntity params, Context context, List<AttendanceRecordEntity> list) throws AppException {
fillSubData(list);
super.findAfter(params, context, list);
}
private void fillSubData(List<AttendanceRecordEntity> list) {
List<Long> idList = list.stream().map(i -> i.getId()).collect(Collectors.toList());
if(ObjectUtils.isEmpty(idList)) return;
AttendanceRecordDetailQuery attendanceRecordDetailQuery = new AttendanceRecordDetailQuery();
attendanceRecordDetailQuery.setRecordIdList(idList);
Map<Long, List<AttendanceRecordDetailEntity>> attendanceRecordDetailListMap = attendanceRecordDetailService.find(attendanceRecordDetailQuery).stream().collect(Collectors.groupingBy(AttendanceRecordDetailEntity::getRecordId));
list.forEach(item ->{
List<AttendanceRecordDetailEntity> attendanceRecordDetailEntities = attendanceRecordDetailListMap.get(item.getId());
attendanceRecordDetailEntities.forEach(i -> i.setStaffId(item.getStaffId()));
item.setAttendanceRecordDetailList(attendanceRecordDetailEntities);
return item;
}).collect(Collectors.toList());
} );
}
@Override
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.module.attendance.dao.ibatis.AttendanceRecordDaoImpl">
<delete id="delete-duplicate-record">
DELETE
FROM
mortals_xhx_attendance_record
WHERE
id IN (
SELECT a.id FROM (SELECT
id
FROM
mortals_xhx_attendance_record
GROUP BY
staffId,
DATE_FORMAT( attendanceDate, '%y-%m-%d' )
HAVING
count( staffId ) > 1
ORDER BY
attendanceDate) AS a )
</delete>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment