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.*; ...@@ -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.AttendanceGroupFixedworkService;
import com.mortals.xhx.module.attendance.service.AttendanceGroupStaffService; import com.mortals.xhx.module.attendance.service.AttendanceGroupStaffService;
import com.mortals.xhx.module.attendance.service.AttendanceRecordHikService; 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.HolidayEntity;
import com.mortals.xhx.module.holiday.model.HolidayQuery; import com.mortals.xhx.module.holiday.model.HolidayQuery;
import com.mortals.xhx.module.holiday.service.HolidayService; import com.mortals.xhx.module.holiday.service.HolidayService;
...@@ -35,28 +36,31 @@ public class CalculateDayAttendTaskImpl implements ITaskExcuteService { ...@@ -35,28 +36,31 @@ public class CalculateDayAttendTaskImpl implements ITaskExcuteService {
@Autowired @Autowired
private AttendanceRecordHikService recordHikService; private AttendanceRecordHikService recordHikService;
@Autowired @Autowired
private StaffService staffService; private AttendanceRecordService attendanceRecordService;
@Autowired
private AttendanceGroupStaffService attendanceGroupStaffService;
@Autowired
private AttendanceGroupFixedworkService groupFixedworkService;
@Autowired
private HolidayService holidayService;
@Override @Override
public void excuteTask(ITask task) throws AppException { public void excuteTask(ITask task) throws AppException {
//查询当日考勤记录,查询未考勤人员,构造一条假记录方便计算 //查询当日考勤记录,查询未考勤人员,构造一条假记录方便计算
AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery(); try {
recordHikQuery.setAttendanceDateStart(DateUtil.today());
recordHikQuery.setAttendanceDateEnd(DateUtil.today());
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 ...@@ -18,4 +18,8 @@ public interface AttendanceRecordDao extends ICRUDDao<AttendanceRecordEntity,Lo
* 获取打卡记录id * 获取打卡记录id
* */ * */
AttendanceRecordEntity getRecordId(Long id); AttendanceRecordEntity getRecordId(Long id);
int deleteDuplicateRecord();
} }
...@@ -5,18 +5,24 @@ import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; ...@@ -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.dao.AttendanceRecordDao;
import com.mortals.xhx.module.attendance.model.AttendanceRecordEntity; import com.mortals.xhx.module.attendance.model.AttendanceRecordEntity;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
/** /**
* 考勤打卡记录信息DaoImpl DAO接口 * 考勤打卡记录信息DaoImpl DAO接口
* *
* @author zxfei * @author zxfei
* @date 2023-04-07 * @date 2023-04-07
*/ */
@Repository("attendanceRecordDao") @Repository("attendanceRecordDao")
public class AttendanceRecordDaoImpl extends BaseCRUDDaoMybatis<AttendanceRecordEntity,Long> implements AttendanceRecordDao { public class AttendanceRecordDaoImpl extends BaseCRUDDaoMybatis<AttendanceRecordEntity, Long> implements AttendanceRecordDao {
@Override @Override
public AttendanceRecordEntity getRecordId(Long id) { 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; ...@@ -3,6 +3,8 @@ package com.mortals.xhx.module.attendance.service;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService; 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.AttendanceRecordEntity;
import com.mortals.xhx.module.attendance.model.vo.AttendStatInfo; import com.mortals.xhx.module.attendance.model.vo.AttendStatInfo;
...@@ -16,6 +18,7 @@ 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> { public interface AttendanceRecordService extends ICRUDService<AttendanceRecordEntity, Long> {
AttendanceRecordDao getDao();
Rest<AttendStatInfo> statByDay(Context context); Rest<AttendStatInfo> statByDay(Context context);
......
...@@ -39,28 +39,27 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda ...@@ -39,28 +39,27 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda
@Override @Override
protected void findAfter(AttendanceRecordEntity params, PageInfo pageInfo, Context context, List<AttendanceRecordEntity> list) throws AppException { protected void findAfter(AttendanceRecordEntity params,PageInfo pageInfo, Context context, List<AttendanceRecordEntity> list) throws AppException {
list.stream().map(item -> { fillSubData(list);
List<AttendanceRecordDetailEntity> attendanceRecordDetailEntities = attendanceRecordDetailService.find(new AttendanceRecordDetailQuery().recordId(item.getId())); super.findAfter(params,pageInfo, context, list);
item.setAttendanceRecordDetailList(attendanceRecordDetailEntities);
return item;
}).collect(Collectors.toList());
} }
@Override @Override
protected void findAfter(AttendanceRecordEntity entity, Context context, List<AttendanceRecordEntity> list) throws AppException { protected void findAfter(AttendanceRecordEntity params, Context context, List<AttendanceRecordEntity> list) throws AppException {
//Map<Long, List<AttendanceRecordDetailEntity>> collect = attendanceRecordDetailService.find(new AttendanceRecordDetailQuery()).parallelStream().collect(Collectors.groupingBy(x -> x.getRecordId())); fillSubData(list);
list.stream().map(item -> { super.findAfter(params, context, list);
List<AttendanceRecordDetailEntity> attendanceRecordDetailEntities = attendanceRecordDetailService.find(new AttendanceRecordDetailQuery().recordId(item.getId())); }
if(CollectionUtils.isNotEmpty(attendanceRecordDetailEntities)) {
attendanceRecordDetailEntities.forEach(i -> { private void fillSubData(List<AttendanceRecordEntity> list) {
i.setStaffId(item.getStaffId()); List<Long> idList = list.stream().map(i -> i.getId()).collect(Collectors.toList());
}); if(ObjectUtils.isEmpty(idList)) return;
} AttendanceRecordDetailQuery attendanceRecordDetailQuery = new AttendanceRecordDetailQuery();
//List<AttendanceRecordDetailEntity> attendanceRecordDetailEntities = attendanceRecordDetailService.find(new AttendanceRecordDetailQuery().recordId(item.getId())); 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); item.setAttendanceRecordDetailList(attendanceRecordDetailEntities);
return item; } );
}).collect(Collectors.toList());
} }
@Override @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