From 6aa772715a80cf1266724c5245542e93c94f1838 Mon Sep 17 00:00:00 2001 From: andy <1042025947@qq.com> Date: Mon, 21 Jul 2025 08:54:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=AF=8F=E5=A4=A9=E8=80=83?= =?UTF-8?q?=E5=8B=A4=E7=9A=84=E6=97=B6=E9=97=B4=E7=BA=BF=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=20=E8=80=83=E5=8B=A4,=20=E8=A1=A5=E5=8D=A1=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/RzAttendanceController.java | 12 +- .../vo/RzAttendanceDetailTimeLineVO.java | 68 ++++++ .../service/RzAttendanceDetailService.java | 6 + .../impl/RzAttendanceDetailServiceImpl.java | 34 ++- .../service/impl/RzAttendanceServiceImpl.java | 5 +- .../impl/RzSpecialOverTimeServiceImpl.java | 2 + .../evo/common/controller/TestController.java | 216 +++++++++--------- .../attendance/RzSpecialOverTimeMapper.xml | 3 +- 8 files changed, 227 insertions(+), 119 deletions(-) create mode 100644 evo-admin/src/main/java/com/evo/attendance/domain/vo/RzAttendanceDetailTimeLineVO.java diff --git a/evo-admin/src/main/java/com/evo/attendance/controller/RzAttendanceController.java b/evo-admin/src/main/java/com/evo/attendance/controller/RzAttendanceController.java index 9ea6395..2ed910c 100644 --- a/evo-admin/src/main/java/com/evo/attendance/controller/RzAttendanceController.java +++ b/evo-admin/src/main/java/com/evo/attendance/controller/RzAttendanceController.java @@ -1,6 +1,8 @@ package com.evo.attendance.controller; +import com.evo.attendance.domain.RzAttendanceDetail; import com.evo.attendance.domain.vo.RzAttendanceDetailVO; +import com.evo.attendance.service.RzAttendanceDetailService; import com.evo.common.annotation.Log; import com.evo.common.core.controller.BaseController; import com.evo.common.core.domain.AjaxResult; @@ -30,7 +32,8 @@ public class RzAttendanceController extends BaseController { @Resource private IRzAttendanceService rzAttendanceService; - + @Resource + private RzAttendanceDetailService rzAttendanceDetailService; /** * 查询考勤记录列表 */ @@ -115,4 +118,11 @@ public class RzAttendanceController extends BaseController return rzAttendanceService.importAttendance(attendanceList); } + + + @GetMapping(value = "/detail/list/{id}") + public AjaxResult findDetailList(@PathVariable("id") Long id) + { + return success(rzAttendanceDetailService.selectListByAttendanceId(id)); + } } diff --git a/evo-admin/src/main/java/com/evo/attendance/domain/vo/RzAttendanceDetailTimeLineVO.java b/evo-admin/src/main/java/com/evo/attendance/domain/vo/RzAttendanceDetailTimeLineVO.java new file mode 100644 index 0000000..156acae --- /dev/null +++ b/evo-admin/src/main/java/com/evo/attendance/domain/vo/RzAttendanceDetailTimeLineVO.java @@ -0,0 +1,68 @@ +package com.evo.attendance.domain.vo; + +import com.evo.common.constant.Constants; +import lombok.Data; + +/** + * 打卡详情时间线 + * + * @ClassName:RzAttendanceDetailTimeLineVO + * @date: 2025年07月17日 10:35 + * @author: andy.shi + * @contact: 17330188597 + * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 + */ +@Data +public class RzAttendanceDetailTimeLineVO { + + String content; + + String timestamp; + + String type; + + String icon; + + String size = "large"; + + public RzAttendanceDetailTimeLineVO(String content, String timestamp, String delFlag) { + this.content = content; + this.timestamp = timestamp; + TimeLineEnum timeLine = TimeLineEnum.get(content, delFlag); + this.type = timeLine.type; + this.icon = timeLine.icon; + } + + enum TimeLineEnum{ + UP("上班", "primary","el-icon-caret-top"), + OVERTIME("加班", "success","el-icon-plus"), + DOWN("下班", "warning","el-icon-caret-bottom"), + REVOKE("撤销", "danger","el-icon-close"), + DEFAULT("", "",""), + + ; + + String typeWork; + String type; + String icon; + + TimeLineEnum(String typeWork, String type, String icon) { + this.typeWork = typeWork; + this.type = type; + this.icon = icon; + } + + public static TimeLineEnum get(String typeWork, String delFlag){ + if(Constants.DELETE_FLAG_1.equals(delFlag)){ + return REVOKE; + } + for (TimeLineEnum timeLine : TimeLineEnum.values()){ + if(typeWork.contains(timeLine.typeWork)){ + return timeLine; + } + } + return DEFAULT; + } + + } +} diff --git a/evo-admin/src/main/java/com/evo/attendance/service/RzAttendanceDetailService.java b/evo-admin/src/main/java/com/evo/attendance/service/RzAttendanceDetailService.java index 8b3d76d..246f8c2 100644 --- a/evo-admin/src/main/java/com/evo/attendance/service/RzAttendanceDetailService.java +++ b/evo-admin/src/main/java/com/evo/attendance/service/RzAttendanceDetailService.java @@ -3,9 +3,11 @@ package com.evo.attendance.service; import com.baomidou.mybatisplus.extension.service.IService; import com.evo.attendance.domain.RzAttendance; import com.evo.attendance.domain.RzAttendanceDetail; +import com.evo.attendance.domain.vo.RzAttendanceDetailTimeLineVO; import org.apache.ibatis.annotations.Param; import java.util.Date; +import java.util.List; /** * 接口 @@ -20,9 +22,13 @@ public interface RzAttendanceDetailService extends IService public RzAttendanceDetail addDetail(RzAttendance attendance, String rules, String sn, Date date, String remark); + public RzAttendanceDetail addOrUpdateDetail(String source, RzAttendance attendance, String rules, String sn, Date date, String remark); + public RzAttendanceDetail selectLastRzAttendanceDetail(Long staffId); public RzAttendanceDetail selectRzAttendanceDetailByStaffId(Long staffId); public RzAttendanceDetail selectLastWorkCardByStaffId(@Param("staffId") Long staffId); + + public List selectListByAttendanceId(Long attId); } diff --git a/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceDetailServiceImpl.java b/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceDetailServiceImpl.java index 2fe3f9b..eac5e0d 100644 --- a/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceDetailServiceImpl.java +++ b/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceDetailServiceImpl.java @@ -4,13 +4,17 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.evo.attendance.domain.RzAttendance; import com.evo.attendance.domain.RzAttendanceDetail; +import com.evo.attendance.domain.vo.RzAttendanceDetailTimeLineVO; import com.evo.attendance.mapper.RzAttendanceDetailMapper; import com.evo.attendance.service.RzAttendanceDetailService; import com.evo.common.constant.Constants; +import com.evo.common.utils.DateUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; /** * 类 @@ -26,8 +30,27 @@ public class RzAttendanceDetailServiceImpl extends ServiceImpl().eq(RzAttendanceDetail::getButtonType, rules).eq(RzAttendanceDetail::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendanceDetail::getStaffId, attendance.getStaffId()).apply( " DATE_FORMAT(date_time,'%Y%m%d') = DATE_FORMAT({0},'%Y%m%d')", date)); + return addOrUpdateDetail("clock_in", attendance,rules,sn,date,remark); + } + + @Override + public RzAttendanceDetail addOrUpdateDetail(String source, RzAttendance attendance, String rules, String sn, Date date, String remark) { + RzAttendanceDetail attendanceDetail = null; + //clock_in为考勤机打卡, 不需要查询 + if(!"clock_in".equals(source)){ + //获取员工的工作时长 + attendanceDetail = getOne(new LambdaQueryWrapper() + .eq(RzAttendanceDetail::getButtonType, rules) + .eq(RzAttendanceDetail::getDelFlag, Constants.DELETE_FLAG_0) + .eq(RzAttendanceDetail::getStaffId, attendance.getStaffId()) + .eq(RzAttendanceDetail::getAttendanceId, attendance.getId()) + //.apply( " DATE_FORMAT(date_time,'%Y%m%d') = DATE_FORMAT({0},'%Y%m%d')", date) + //以下为特殊规则, 只针对下班卡起作用 + .orderByAsc("下班卡".equals(rules), RzAttendanceDetail::getDateTime) + .last("下班卡".equals(rules)," limit 1 ") + ); + } + if(ObjectUtils.isEmpty(attendanceDetail)){ attendanceDetail = new RzAttendanceDetail(); attendanceDetail.setStaffId(attendance.getStaffId()); @@ -64,4 +87,11 @@ public class RzAttendanceDetailServiceImpl extends ServiceImpl selectListByAttendanceId(Long attId) { + return list(new LambdaQueryWrapper().eq(RzAttendanceDetail::getAttendanceId, attId)).stream().map(data ->{ + return new RzAttendanceDetailTimeLineVO(data.getButtonType(), DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",data.getDateTime()), data.getDelFlag()); + }).collect(Collectors.toList()); + } } diff --git a/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceServiceImpl.java b/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceServiceImpl.java index ae2d682..5964d7d 100644 --- a/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceServiceImpl.java +++ b/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceServiceImpl.java @@ -97,13 +97,14 @@ public class RzAttendanceServiceImpl extends ServiceImpl 0){ - rzAttendanceDetailService.addDetail(rzAttendance, rzAttendance.getRules(), sysUser.getTimeClock(), rzAttendance.getWorkStartTime(),rzAttendance.getRemark()); + rzAttendanceDetailService.addOrUpdateDetail("fill_in", rzAttendance, rzAttendance.getRules(), sysUser.getTimeClock(), rzAttendance.getWorkStartTime(),rzAttendance.getRemark()); } return 1; }else if(rzAttendance.getWorkStartTime() != null && rzAttendance.getWorkEndTime() != null){ + rzAttendanceDetailService.addOrUpdateDetail("fill_in",rzAttendance, rzAttendance.getRules(), sysUser.getTimeClock(), rzAttendance.getWorkStartTime(),rzAttendance.getRemark()); if(KqUtils.workOffDutyCard(rzAttendance.getWorkEndTime(), rzAttendance.getRules(), rzAttendance)){ //此处特殊, 使用rules 记录下班卡规则, 但是不持久化 - rzAttendanceDetailService.addDetail(rzAttendance, "下班卡", sysUser.getTimeClock(), rzAttendance.getWorkEndTime(),rzAttendance.getRemark()); + rzAttendanceDetailService.addOrUpdateDetail("fill_in",rzAttendance, "下班卡", sysUser.getTimeClock(), rzAttendance.getWorkEndTime(),rzAttendance.getRemark()); } return 1; } diff --git a/evo-admin/src/main/java/com/evo/attendance/service/impl/RzSpecialOverTimeServiceImpl.java b/evo-admin/src/main/java/com/evo/attendance/service/impl/RzSpecialOverTimeServiceImpl.java index e51235a..27b2673 100644 --- a/evo-admin/src/main/java/com/evo/attendance/service/impl/RzSpecialOverTimeServiceImpl.java +++ b/evo-admin/src/main/java/com/evo/attendance/service/impl/RzSpecialOverTimeServiceImpl.java @@ -5,6 +5,7 @@ import java.util.List; import com.evo.attendance.domain.RzSpecialOverTime; import com.evo.attendance.mapper.RzSpecialOverTimeMapper; import com.evo.attendance.service.IRzSpecialOverTimeService; +import com.evo.common.annotation.DataScope; import com.evo.common.utils.DateUtils; import com.evo.common.utils.SecurityUtils; import com.evo.system.mapper.SysDeptMapper; @@ -44,6 +45,7 @@ public class RzSpecialOverTimeServiceImpl implements IRzSpecialOverTimeService * @return 特殊加班管理 */ @Override + @DataScope(deptAlias = "r") public List selectRzSpecialOverTimeList(RzSpecialOverTime rzSpecialOverTime) { List reslut = rzSpecialOverTimeMapper.selectRzSpecialOverTimeList(rzSpecialOverTime); diff --git a/evo-admin/src/main/java/com/evo/common/controller/TestController.java b/evo-admin/src/main/java/com/evo/common/controller/TestController.java index 9940505..b00b269 100644 --- a/evo-admin/src/main/java/com/evo/common/controller/TestController.java +++ b/evo-admin/src/main/java/com/evo/common/controller/TestController.java @@ -1,25 +1,17 @@ package com.evo.common.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.evo.attendance.domain.RzAttendance; -import com.evo.attendance.domain.RzAttendanceDetail; -import com.evo.attendance.processor.KqUtils; import com.evo.attendance.service.IRzAttendanceService; import com.evo.attendance.service.IRzAttendanceStatisticalService; import com.evo.attendance.service.RzAttendanceDetailService; import com.evo.common.constant.Constants; import com.evo.common.core.domain.AjaxResult; import com.evo.common.utils.Collections; -import com.evo.common.utils.StringUtils; -import com.evo.personnelMatters.domain.RzOverTime; -import com.evo.personnelMatters.domain.RzOverTimeDetail; import com.evo.personnelMatters.mapper.RzOverTimeDetailMapper; import com.evo.personnelMatters.mapper.RzOverTimeMapper; import com.evo.restaurant.service.IRzRestaurantStatisticsService; import com.evo.system.domain.SysStaff; import com.evo.system.service.ISysStaffService; -import org.apache.commons.lang3.ObjectUtils; -import org.apache.commons.lang3.time.DateUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -29,12 +21,10 @@ import javax.annotation.Resource; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; -import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; -import java.util.Map; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -108,62 +98,62 @@ public class TestController { @PostMapping("/qxdk") public AjaxResult qxdk() throws ParseException { - Map snMap = sysStaffService.list(new LambdaQueryWrapper().eq(SysStaff::getDelFlag, Constants.DELETE_FLAG_0)).stream().filter(data->{ return (data.getUserId() != null && StringUtils.isNotEmpty(data.getTimeClock())); - }).collect(Collectors.toMap(SysStaff::getUserId, SysStaff::getTimeClock)); - - - Date d = new SimpleDateFormat("yyyy-MM-dd").parse("2025-07-08"); - Map timeMap = Collections.asMap("上班卡(倒班12时制)",12,"上班卡(单班制)",9,"上班卡(倒班8时制)",9); - List list = rzAttendanceService.list(new LambdaQueryWrapper() - .eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0) - .apply(" date_format(`attendance_date`,'%Y%m%d')=date_format({0},'%Y%m%d') ",d) - .apply(" work_start_time is not null ") - ).stream().map(data ->{ - data.setWorkEndTime(DateUtils.addHours(data.getWorkStartTime(), timeMap.get(data.getRules()))); - return data; - }).collect(Collectors.toList()); - - if(Collections.isNotEmpty(list)){ - //更新所有的卡时间 - rzAttendanceService.updateBatchById(list); - for (RzAttendance rzAttendance : list){ - List sbList = rzAttendanceDetailService.list(new LambdaQueryWrapper().eq(RzAttendanceDetail::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendanceDetail::getAttendanceId, rzAttendance.getId()).like(RzAttendanceDetail::getButtonType,"%上班%")); - if(Collections.isEmpty(sbList)){ - rzAttendanceDetailService.addDetail(rzAttendance, rzAttendance.getRules(), snMap.get(rzAttendance.getStaffId()), rzAttendance.getWorkStartTime(), "系统清洗"); - }else if(sbList.size() > 1){ - sbList.remove(0); - rzAttendanceDetailService.removeByIds(sbList); - } - List xbList = rzAttendanceDetailService.list(new LambdaQueryWrapper().eq(RzAttendanceDetail::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendanceDetail::getAttendanceId, rzAttendance.getId()).like(RzAttendanceDetail::getButtonType,"%下班%")); - if(ObjectUtils.isEmpty(xbList)){ - rzAttendanceDetailService.addDetail(rzAttendance, "下班卡", snMap.get(rzAttendance.getStaffId()), rzAttendance.getWorkEndTime(), "系统清洗"); - }else if(xbList.size() > 1){ - xbList.remove(0); - rzAttendanceDetailService.removeByIds(xbList); - } - } - } - - - - list = rzAttendanceService.list(new LambdaQueryWrapper() - .eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0) - .apply(" date_format(`attendance_date`,'%Y%m%d')=date_format({0},'%Y%m%d') ",new SimpleDateFormat("yyyy-MM-dd").parse("2025-07-09")) - .apply(" work_start_time is not null ") - ); - - if(Collections.isNotEmpty(list)){ - //更新所有的卡时间 - for (RzAttendance rzAttendance : list){ - List sbList = rzAttendanceDetailService.list(new LambdaQueryWrapper().eq(RzAttendanceDetail::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendanceDetail::getAttendanceId, rzAttendance.getId()).like(RzAttendanceDetail::getButtonType,"%上班%")); - if(Collections.isEmpty(sbList)){ - rzAttendanceDetailService.addDetail(rzAttendance, rzAttendance.getRules(), snMap.get(rzAttendance.getStaffId()), rzAttendance.getWorkStartTime(), "系统清洗"); - }else if(sbList.size() > 1){ - sbList.remove(0); - rzAttendanceDetailService.removeByIds(sbList); - } - } - } +// Map snMap = sysStaffService.list(new LambdaQueryWrapper().eq(SysStaff::getDelFlag, Constants.DELETE_FLAG_0)).stream().filter(data->{ return (data.getUserId() != null && StringUtils.isNotEmpty(data.getTimeClock())); +// }).collect(Collectors.toMap(SysStaff::getUserId, SysStaff::getTimeClock)); +// +// +// Date d = new SimpleDateFormat("yyyy-MM-dd").parse("2025-07-08"); +// Map timeMap = Collections.asMap("上班卡(倒班12时制)",12,"上班卡(单班制)",9,"上班卡(倒班8时制)",9); +// List list = rzAttendanceService.list(new LambdaQueryWrapper() +// .eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0) +// .apply(" date_format(`attendance_date`,'%Y%m%d')=date_format({0},'%Y%m%d') ",d) +// .apply(" work_start_time is not null ") +// ).stream().map(data ->{ +// data.setWorkEndTime(DateUtils.addHours(data.getWorkStartTime(), timeMap.get(data.getRules()))); +// return data; +// }).collect(Collectors.toList()); +// +// if(Collections.isNotEmpty(list)){ +// //更新所有的卡时间 +// rzAttendanceService.updateBatchById(list); +// for (RzAttendance rzAttendance : list){ +// List sbList = rzAttendanceDetailService.list(new LambdaQueryWrapper().eq(RzAttendanceDetail::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendanceDetail::getAttendanceId, rzAttendance.getId()).like(RzAttendanceDetail::getButtonType,"%上班%")); +// if(Collections.isEmpty(sbList)){ +// rzAttendanceDetailService.addOrUpdateDetail(rzAttendance, rzAttendance.getRules(), snMap.get(rzAttendance.getStaffId()), rzAttendance.getWorkStartTime(), "系统清洗"); +// }else if(sbList.size() > 1){ +// sbList.remove(0); +// rzAttendanceDetailService.removeByIds(sbList); +// } +// List xbList = rzAttendanceDetailService.list(new LambdaQueryWrapper().eq(RzAttendanceDetail::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendanceDetail::getAttendanceId, rzAttendance.getId()).like(RzAttendanceDetail::getButtonType,"%下班%")); +// if(ObjectUtils.isEmpty(xbList)){ +// rzAttendanceDetailService.addOrUpdateDetail(rzAttendance, "下班卡", snMap.get(rzAttendance.getStaffId()), rzAttendance.getWorkEndTime(), "系统清洗"); +// }else if(xbList.size() > 1){ +// xbList.remove(0); +// rzAttendanceDetailService.removeByIds(xbList); +// } +// } +// } +// +// +// +// list = rzAttendanceService.list(new LambdaQueryWrapper() +// .eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0) +// .apply(" date_format(`attendance_date`,'%Y%m%d')=date_format({0},'%Y%m%d') ",new SimpleDateFormat("yyyy-MM-dd").parse("2025-07-09")) +// .apply(" work_start_time is not null ") +// ); +// +// if(Collections.isNotEmpty(list)){ +// //更新所有的卡时间 +// for (RzAttendance rzAttendance : list){ +// List sbList = rzAttendanceDetailService.list(new LambdaQueryWrapper().eq(RzAttendanceDetail::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendanceDetail::getAttendanceId, rzAttendance.getId()).like(RzAttendanceDetail::getButtonType,"%上班%")); +// if(Collections.isEmpty(sbList)){ +// rzAttendanceDetailService.addOrUpdateDetail(rzAttendance, rzAttendance.getRules(), snMap.get(rzAttendance.getStaffId()), rzAttendance.getWorkStartTime(), "系统清洗"); +// }else if(sbList.size() > 1){ +// sbList.remove(0); +// rzAttendanceDetailService.removeByIds(sbList); +// } +// } +// } return AjaxResult.success(); } @@ -201,53 +191,53 @@ public class TestController { @PostMapping("/jb") public AjaxResult jb() throws Exception{ - BufferedReader reader = new BufferedReader(new FileReader(new File("D:\\andy\\文档\\考勤\\7月8号加班数据清洗.txt"))); - String line = reader.readLine(); - while (line != null) { - String[] info = line.split("-"); - RzAttendanceDetail detail = rzAttendanceDetailService.getOne(new LambdaQueryWrapper() - .eq(RzAttendanceDetail::getDelFlag, Constants.DELETE_FLAG_0) - .eq(RzAttendanceDetail::getName, info[0]) - .eq(RzAttendanceDetail::getButtonType,"下班卡") - .apply(" DATE_FORMAT(date_time,'%Y%m%d') = DATE_FORMAT({0},'%Y%m%d') ", "2025-07-08")); - - RzAttendance attendance= rzAttendanceService.getOne(new LambdaQueryWrapper() - .eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0) - .eq(RzAttendance::getName, info[0]) - .eq(RzAttendance::getAttendanceDate, "2025-07-08") - ); - System.out.println(info[0]); - SysStaff sysStaff = sysStaffService.getById(detail.getStaffId()); - RzOverTime rzOverTime = rzOverTimeMapper.selectRzOverTimeByNameAndMonth(sysStaff.getUserId(),detail.getDateTime()); - if(rzOverTime == null){ - rzOverTime = new RzOverTime(); - rzOverTime.setUserId(sysStaff.getUserId()); - rzOverTime.setOverHours(new BigDecimal("0.0")); - rzOverTime.setDeptId(sysStaff.getDeptId()); - rzOverTime.setName(sysStaff.getName()); - rzOverTime.setOverTimeMonth(detail.getDateTime()); - rzOverTimeMapper.insert(rzOverTime); - } - - detail = rzAttendanceDetailService.addDetail(attendance, "加班卡", detail.getEquipmentCode(), com.evo.common.utils.DateUtils.addSeconds(detail.getDateTime(), 10), "数据清洗"); - RzOverTimeDetail rzOverTimeDetail = new RzOverTimeDetail(); - rzOverTimeDetail.setOverTimeId(rzOverTime.getId()); - rzOverTimeDetail.setOverTimeStart(detail.getDateTime()); - rzOverTimeDetail.setName(sysStaff.getName()); - rzOverTimeDetail.setDelFlag(Constants.DELETE_FLAG_0); - rzOverTimeDetail.setCreateBy("admin"); - rzOverTimeDetail.setCreateTime(com.evo.common.utils.DateUtils.getNowDate()); - - detail = rzAttendanceDetailService.addDetail(attendance, "下班卡", detail.getEquipmentCode(), com.evo.common.utils.DateUtils.addMinutes(detail.getDateTime(), new BigDecimal(info[1]).multiply(new BigDecimal(60)).add(new BigDecimal(30)).intValue()), "数据清洗"); - rzOverTimeDetail.setOverTimeEnd(detail.getDateTime()); - rzOverTimeDetailMapper.insert(rzOverTimeDetail); - KqUtils.calculateOverTimeHours(rzOverTimeDetail, sysStaff.getUserId(), sysStaff.getTimeClock()); - rzOverTimeDetailMapper.updateRzOverTimeDetail(rzOverTimeDetail); - //加班修改统计 - rzOverTime.setOverHours(rzOverTime.getOverHours().add(rzOverTimeDetail.getOverTimeHours())); - rzOverTimeMapper.updateRzOverTime(rzOverTime); - line = reader.readLine(); - } +// BufferedReader reader = new BufferedReader(new FileReader(new File("D:\\andy\\文档\\考勤\\7月8号加班数据清洗.txt"))); +// String line = reader.readLine(); +// while (line != null) { +// String[] info = line.split("-"); +// RzAttendanceDetail detail = rzAttendanceDetailService.getOne(new LambdaQueryWrapper() +// .eq(RzAttendanceDetail::getDelFlag, Constants.DELETE_FLAG_0) +// .eq(RzAttendanceDetail::getName, info[0]) +// .eq(RzAttendanceDetail::getButtonType,"下班卡") +// .apply(" DATE_FORMAT(date_time,'%Y%m%d') = DATE_FORMAT({0},'%Y%m%d') ", "2025-07-08")); +// +// RzAttendance attendance= rzAttendanceService.getOne(new LambdaQueryWrapper() +// .eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0) +// .eq(RzAttendance::getName, info[0]) +// .eq(RzAttendance::getAttendanceDate, "2025-07-08") +// ); +// System.out.println(info[0]); +// SysStaff sysStaff = sysStaffService.getById(detail.getStaffId()); +// RzOverTime rzOverTime = rzOverTimeMapper.selectRzOverTimeByNameAndMonth(sysStaff.getUserId(),detail.getDateTime()); +// if(rzOverTime == null){ +// rzOverTime = new RzOverTime(); +// rzOverTime.setUserId(sysStaff.getUserId()); +// rzOverTime.setOverHours(new BigDecimal("0.0")); +// rzOverTime.setDeptId(sysStaff.getDeptId()); +// rzOverTime.setName(sysStaff.getName()); +// rzOverTime.setOverTimeMonth(detail.getDateTime()); +// rzOverTimeMapper.insert(rzOverTime); +// } +// +// detail = rzAttendanceDetailService.addOrUpdateDetail(attendance, "加班卡", detail.getEquipmentCode(), com.evo.common.utils.DateUtils.addSeconds(detail.getDateTime(), 10), "数据清洗"); +// RzOverTimeDetail rzOverTimeDetail = new RzOverTimeDetail(); +// rzOverTimeDetail.setOverTimeId(rzOverTime.getId()); +// rzOverTimeDetail.setOverTimeStart(detail.getDateTime()); +// rzOverTimeDetail.setName(sysStaff.getName()); +// rzOverTimeDetail.setDelFlag(Constants.DELETE_FLAG_0); +// rzOverTimeDetail.setCreateBy("admin"); +// rzOverTimeDetail.setCreateTime(com.evo.common.utils.DateUtils.getNowDate()); +// +// detail = rzAttendanceDetailService.addOrUpdateDetail(attendance, "下班卡", detail.getEquipmentCode(), com.evo.common.utils.DateUtils.addMinutes(detail.getDateTime(), new BigDecimal(info[1]).multiply(new BigDecimal(60)).add(new BigDecimal(30)).intValue()), "数据清洗"); +// rzOverTimeDetail.setOverTimeEnd(detail.getDateTime()); +// rzOverTimeDetailMapper.insert(rzOverTimeDetail); +// KqUtils.calculateOverTimeHours(rzOverTimeDetail, sysStaff.getUserId(), sysStaff.getTimeClock()); +// rzOverTimeDetailMapper.updateRzOverTimeDetail(rzOverTimeDetail); +// //加班修改统计 +// rzOverTime.setOverHours(rzOverTime.getOverHours().add(rzOverTimeDetail.getOverTimeHours())); +// rzOverTimeMapper.updateRzOverTime(rzOverTime); +// line = reader.readLine(); +// } diff --git a/evo-admin/src/main/resources/mapper/attendance/RzSpecialOverTimeMapper.xml b/evo-admin/src/main/resources/mapper/attendance/RzSpecialOverTimeMapper.xml index 9e3d086..d3ae0c9 100644 --- a/evo-admin/src/main/resources/mapper/attendance/RzSpecialOverTimeMapper.xml +++ b/evo-admin/src/main/resources/mapper/attendance/RzSpecialOverTimeMapper.xml @@ -19,7 +19,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, user_id, dept_id, name, over_date, sick_hours, del_flag, create_by, create_time, update_by, update_time from rz_special_over_time + select id, user_id, dept_id, name, over_date, sick_hours, del_flag, create_by, create_time, update_by, update_time from rz_special_over_time r