icc的劳务人员,考勤最后是出场就删除在场记录,考勤最后是入场就更新在场时间

This commit is contained in:
guoshengxiong 2025-07-23 18:06:33 +08:00
parent f6880f49df
commit 8ff888f270
3 changed files with 37 additions and 19 deletions

View File

@ -52,4 +52,10 @@ public interface WorkerAttendancePresenceMapper extends BaseMapper<WorkerAttenda
* @return
*/
List<NumberTimeTableVo> queryPresentTrend(Map<String, Object> map);
/**
* 插入如果记录存在则更新时间不存在则插入
* @param workerAttendancePresence
*/
void insertOrUpdate(WorkerAttendancePresence workerAttendancePresence);
}

View File

@ -108,4 +108,11 @@
) t1
GROUP BY t1.daytime
</select>
<insert id="insertOrUpdate">
INSERT INTO worker_attendance_presence (id, person_sn, create_time, project_sn)
VALUES (#{id}, #{personSn}, #{createTime}, #{projectSn})
ON DUPLICATE KEY UPDATE
create_time = VALUES(create_time)
</insert>
</mapper>

View File

@ -11,15 +11,13 @@ import com.zhgd.xmgl.modules.worker.entity.WorkerAttendance;
import com.zhgd.xmgl.modules.worker.entity.WorkerAttendancePresence;
import com.zhgd.xmgl.modules.worker.mapper.WorkerAttendancePresenceMapper;
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendancePresenceService;
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceService;
import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* @Description: 考勤当前在场的人
@ -36,24 +34,32 @@ public class WorkerAttendancePresenceServiceImpl extends ServiceImpl<WorkerAtten
private ProjectMapper projectMapper;
@Autowired
private IWorkerAttendancePresenceService workerAttendancePresenceService;
@Autowired
@Lazy
private IWorkerAttendanceService workerAttendanceService;
@Override
public void addWorkerAttendancePresence(WorkerAttendance workerAttendance) {
SimpleDateFormat sft = new SimpleDateFormat("yyyy-MM-dd");
String nowDay = sft.format(new Date());
//非今天考勤不计算在场
if (workerAttendance.getCreateTime().startsWith(nowDay)) {
WorkerAttendance newestRecord = workerAttendanceService.getOne(new LambdaQueryWrapper<WorkerAttendance>()
.eq(WorkerAttendance::getPersonSn, workerAttendance.getPersonSn())
.orderByDesc(WorkerAttendance::getCreateTime)
.last("limit 1")
);
if (newestRecord == null || DateUtil.compare(DateUtil.parseDateTime(newestRecord.getCreateTime()), DateUtil.parseDateTime(workerAttendance.getCreateTime())) < 0) {
newestRecord = workerAttendance;
}
//考勤最后是出场就删除在场记录
//考勤最后是入场就更新在场时间
if (Objects.equals(newestRecord.getPassType(), 2)) {
QueryWrapper<WorkerAttendancePresence> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(WorkerAttendancePresence::getPersonSn, workerAttendance.getPersonSn())
.eq(WorkerAttendancePresence::getProjectSn, workerAttendance.getProjectSn());
queryWrapper.lambda().eq(WorkerAttendancePresence::getPersonSn, workerAttendance.getPersonSn());
workerAttendancePresenceMapper.delete(queryWrapper);
if (workerAttendance.getPassType() == 1) {
} else {
WorkerAttendancePresence workerAttendancePresence = new WorkerAttendancePresence();
workerAttendancePresence.setProjectSn(workerAttendance.getProjectSn());
workerAttendancePresence.setPersonSn(workerAttendance.getPersonSn());
workerAttendancePresence.setCreateTime(workerAttendance.getCreateTime());
workerAttendancePresenceMapper.insert(workerAttendancePresence);
}
workerAttendancePresence.setCreateTime(newestRecord.getCreateTime());
workerAttendancePresenceMapper.insertOrUpdate(workerAttendancePresence);
}
}
@ -89,7 +95,6 @@ public class WorkerAttendancePresenceServiceImpl extends ServiceImpl<WorkerAtten
}
@Override
public List<Map<String, Object>> getPresentWorkerIdListByRegion(Long regionId, String projectSn) {
return workerAttendancePresenceMapper.getPresentWorkerIdListByRegion(regionId, projectSn);