From ee0411263fbf349ce67d4e0a25a03dd57b0408b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E6=88=90?= <2847920761@qq.com> Date: Thu, 13 Mar 2025 17:03:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wgz/controller/WgzAppController.java | 4 +- .../ruoyi/wgz/bo/req/WgzAppDailyClockReq.java | 3 + .../bo/res/WgzAppCheckDailyNewspaperRes.java | 9 + .../wgz/bo/res/WgzAppUserDailyRecordRes.java | 5 +- .../com/ruoyi/wgz/domain/WgzAttendance.java | 5 + .../com/ruoyi/wgz/domain/WgzDailyClock.java | 5 + .../impl/WgzAttendanceServiceImpl.java | 57 +++++- .../impl/WgzDailyClockServiceImpl.java | 5 +- .../impl/WgzPayCalculationServiceImpl.java | 163 +++++++++++------- .../impl/WgzReissueacardServiceImpl.java | 2 +- 10 files changed, 184 insertions(+), 74 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzAppController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzAppController.java index 74ca215..c73f78e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzAppController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzAppController.java @@ -237,9 +237,9 @@ } /** - * 【日报】日报打卡 + * 【日报】日报打卡|补卡 */ - @ApiOperation("【日报】日报打卡") + @ApiOperation("【日报】日报打卡|补卡") //@PreAuthorize("@ss.hasPermi('wgzApp:user:userDailyClock')") @RepeatSubmit @PostMapping("/WgzUserDailyClock") diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppDailyClockReq.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppDailyClockReq.java index 37507e6..fe85a77 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppDailyClockReq.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppDailyClockReq.java @@ -23,6 +23,9 @@ public class WgzAppDailyClockReq implements Serializable { @ApiModelProperty("日报状态(0正常 1补卡)") private String status; + @ApiModelProperty("补卡理由(status为1传递)") + private String reason; + @ApiModelProperty("status为1时,补卡日期") private LocalDateTime rqData; diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppCheckDailyNewspaperRes.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppCheckDailyNewspaperRes.java index 7ebed1f..5934f93 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppCheckDailyNewspaperRes.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppCheckDailyNewspaperRes.java @@ -88,4 +88,13 @@ public class WgzAppCheckDailyNewspaperRes implements Serializable { @ApiModelProperty("头像地址") private String avatarName; + @ApiModelProperty("日报状态(0正常 1补卡)") + private String status; + + @ApiModelProperty("补卡理由") + private String reason; + + @ApiModelProperty("招工主题") + private String recruitName; + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppUserDailyRecordRes.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppUserDailyRecordRes.java index 6b9038b..eb77544 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppUserDailyRecordRes.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppUserDailyRecordRes.java @@ -37,7 +37,10 @@ public class WgzAppUserDailyRecordRes implements Serializable { @ApiModelProperty("今日完成工作") private String finishToday; - @ApiModelProperty("审核状态(0未读 1未审核 2已审核)") + @ApiModelProperty("审核状态(0未读 1待审核 2已审核)") private String auditorType; + @ApiModelProperty("日报状态(0正常 1补卡)") + private String status; + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzAttendance.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzAttendance.java index 0a0cfe2..97e8a9b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzAttendance.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzAttendance.java @@ -117,6 +117,11 @@ public class WgzAttendance implements Serializable { @ApiModelProperty("类型(0正常 1迟到 2早退 3上班缺卡 4下班缺卡 5补卡 6请假)") private String exceptionType; + /** 结算标识 */ + @Excel(name = "结算标识" ) + @ApiModelProperty("结算标识") + private Integer settlement; + /** 删除标志(0代表存在 2代表删除) */ @Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除") @ApiModelProperty("删除标志(0代表存在 2代表删除)") diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzDailyClock.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzDailyClock.java index f68fe8b..bd491fa 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzDailyClock.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzDailyClock.java @@ -111,6 +111,11 @@ public class WgzDailyClock implements Serializable { @ApiModelProperty("日报状态(0正常 1补卡)") private String status; + /** 补卡理由 */ + @Excel(name = "补卡理由") + @ApiModelProperty("补卡理由") + private String reason; + /** 删除标志(0代表存在 2代表删除) */ @Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除") @ApiModelProperty("删除标志(0代表存在 2代表删除)") diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzAttendanceServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzAttendanceServiceImpl.java index 94720ad..45de4f8 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzAttendanceServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzAttendanceServiceImpl.java @@ -185,10 +185,13 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl apply = new LambdaQueryWrapper(). eq(WgzAttendance::getUserId, userId). - eq(WgzAttendance::getRecruitId, recruitId).and(wrapper -> wrapper + eq(WgzAttendance::getSettlement, 0). //为0就表示当天工资还未结算 + eq(WgzAttendance::getRecruitId, recruitId).and(wrapper -> wrapper .isNotNull(WgzAttendance::getClockInTime) .or() .isNotNull(WgzAttendance::getClockOutTime) @@ -393,6 +408,22 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl apply = new LambdaQueryWrapper(). +// eq(WgzAttendance::getUserId, userId). +// eq(WgzAttendance::getRecruitId, recruitId).and(wrapper -> wrapper +// .isNotNull(WgzAttendance::getClockInTime) +// .or() +// .isNotNull(WgzAttendance::getClockOutTime) +// ); +// apply.orderByAsc(WgzAttendance::getDate); +// if (num != null && num > 0) { //表示查询指定天数的打卡记录,否则查询所有 +// apply.last("LIMIT " + num); +// } +// return baseMapper.selectCount(apply); +// } + @Override public List countByTaskId(Long taskId, LocalDate beginDate, LocalDate endDate) { @@ -566,6 +597,10 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpllambdaQuery(). - eq(WgzPayCalculation::getUserId, user.getUserId()). - eq(WgzPayCalculation::getRecruitId, recruitApply.getId()). - orderByDesc(WgzPayCalculation::getCreateTime). - last("LIMIT 1") + //2、查看当前申请结算的天数是否大于剩余天数 + LambdaQueryWrapper attWra = new LambdaQueryWrapper(). + eq(WgzAttendance::getUserId, user.getUserId()). + eq(WgzAttendance::getSettlement, 0). //为0就表示当天工资还未结算 + eq(WgzAttendance::getRecruitId, recruitApply.getRecruitId()).and(wrapper -> wrapper + .isNotNull(WgzAttendance::getClockInTime) + .or() + .isNotNull(WgzAttendance::getClockOutTime) + ); + List attList = iWgzAttendanceService.list( + attWra.orderByAsc(WgzAttendance::getDate) + .last("LIMIT " + req.getNum()) ); - if (wgzts != null) {//得到最后一次的结算截止时间和剩余未结算天数 - byNumGetDate = wgzts.getCutOffTime(); - num = iWgzAttendanceService.findByDateGetDateList(user.getUserId(), recruitApply.getRecruitId(), byNumGetDate).size(); + if (attList.size() < req.getNum()) { //判断剩余天数是否满足当前结算天数 + throw new RuntimeException("您剩余可结算天数为:"+attList.size()+"天,您当前想要结算的天数为:"+req.getNum()+"天,剩余天数不足!"); + } + //3、把需要结算的数据标记为已结算 + List objects = new ArrayList<>(); + for (WgzAttendance data : attList) { + objects.add(new WgzAttendance() + .setId(data.getId()) + .setSettlement(1) + ); + } + //4、将结算的数据 + - }else{//得到即将结算截止的日期和剩余未结算天数 - byNumGetDate = iWgzAttendanceService.findByNumGetDate(user.getUserId(), recruitApply.getRecruitId(), req.getNum()); - num = iWgzAttendanceService.attendanceDetail(user.getUserId(), recruitApply.getRecruitId(), null); - } - if (num < req.getNum()) { //判断剩余天数是否满足当前结算天数 - throw new RuntimeException("您剩余可结算天数为:"+num+"天,您当前想要结算的天数为:"+req.getNum()+"天,剩余天数不足!"); - } //4、组装数据 WgzPayCalculation wgzPayCalculation = new WgzPayCalculation(); BeanUtils.copyProperties(req,wgzPayCalculation); wgzPayCalculation. setUserId(user.getUserId()). setUserName(user.getUserName()). - setAuditorUserId(recruit.getUserId()). - setCutOffTime(byNumGetDate); + setAuditorUserId(recruit.getUserId()); //5、获取附件信息并插入 iWgzPayCalculationFilesService.saveBatch(req.getPayCalculation()); //6、插入工资结算信息 - boolean save = save(wgzPayCalculation); - if (save) { - WgzUser byId = wgzUserService.findByUserId(user.getUserId()); - Map mp = new HashMap<>(); - mp.put("projectName", recruit.getRecruitName()); - mp.put("userName", byId.getUsername()); - mp.put("num", String.valueOf(wgzPayCalculation.getNum())); - mp.put("money", String.valueOf(new BigDecimal(wgzPayCalculation.getNum()).multiply(wgzPayCalculation.getRecruitAmount()))); - WgzMessage wgzMessage = new WgzMessage(). - setSenderType(USERTYPE_SYSTEM). - setRecipientType(USERTYPE_WGZ). - setRecipientId(user.getUserId()). - setHeadline(WgzAndBgtMessageConstant.wgzMessage(mp,"111")). - setSubheading(WgzAndBgtMessageConstant.wgzMessage(mp,"112")). - setTableId(wgzPayCalculation.getId()). - setTableName(SqlHelper.table(WgzPayCalculation.class).getTableName()). - setMessageLargeType(LARGE_SALARY); - if (!iWgzMessageService.sendAMessage(wgzMessage)){ - throw new RuntimeException("系统工资结算消息发送失败!"); - } - BgtMessage bgtMessage = new BgtMessage(). - setSenderType(USERTYPE_WGZ). - setSenderId(user.getUserId()). - setRecipientType(USERTYPE_BGT). - setRecipientId(recruit.getUserId()). - setHeadline(WgzAndBgtMessageConstant.wgzMessage(mp,"209")). - setSubheading(WgzAndBgtMessageConstant.wgzMessage(mp,"210")). - setTableId(wgzPayCalculation.getId()). - setTableName(SqlHelper.table(WgzPayCalculation.class).getTableName()). - setMessageLargeType(BGT_LARGE_OTHER). - setMessageSmallType(BGT_SMALL_PAY); - if (!iBgtMessageService.sendAMessage(bgtMessage)){ - throw new RuntimeException("发送补卡消息失败!"); - } - return true; - } return save(wgzPayCalculation); } +// @Override +// @Transactional +// public Boolean userApplyForPayrollSettlementAdd(WgzApplyForPayrollSettlementAddReq req) { +// //1、获取当前人 +// SysUser user = SecurityUtils.getLoginUser().getUser(); +// BgtProjectRecruitApply recruitApply = iBgtProjectRecruitApplyService.selectByUserIdProjectRecruitApplyId(user.getUserId()); +// BgtProjectRecruit recruit = iBgtProjectRecruitService.getAppById(recruitApply.getId()); +// //2、结算数据之前,需要先获取以往结算的数据(如果没有就说明第一次结算),然后得到剩余结算天数,再从剩余天数重新进行数据结算 +// Integer num = 0; +// LocalDate byNumGetDate = null; +// WgzPayCalculation wgzts = baseMapper.selectOne(Wrappers.lambdaQuery(). +// eq(WgzPayCalculation::getUserId, user.getUserId()). +// eq(WgzPayCalculation::getRecruitId, recruitApply.getId()). +// orderByDesc(WgzPayCalculation::getCreateTime). +// last("LIMIT 1") +// ); +// if (wgzts != null) {//得到最后一次的结算截止时间和剩余未结算天数 +// byNumGetDate = wgzts.getCutOffTime(); +// num = iWgzAttendanceService.findByDateGetDateList(user.getUserId(), recruitApply.getRecruitId(), byNumGetDate).size(); +// }else{//得到即将结算截止的日期和剩余未结算天数 +// byNumGetDate = iWgzAttendanceService.findByNumGetDate(user.getUserId(), recruitApply.getRecruitId(), req.getNum()); +// num = iWgzAttendanceService.attendanceDetail(user.getUserId(), recruitApply.getRecruitId(), null); +// } +// if (num < req.getNum()) { //判断剩余天数是否满足当前结算天数 +// throw new RuntimeException("您剩余可结算天数为:"+num+"天,您当前想要结算的天数为:"+req.getNum()+"天,剩余天数不足!"); +// } +// //4、组装数据 +// WgzPayCalculation wgzPayCalculation = new WgzPayCalculation(); +// BeanUtils.copyProperties(req,wgzPayCalculation); +// wgzPayCalculation. +// setUserId(user.getUserId()). +// setUserName(user.getUserName()). +// setAuditorUserId(recruit.getUserId()). +// setCutOffTime(byNumGetDate); +// //5、获取附件信息并插入 +// iWgzPayCalculationFilesService.saveBatch(req.getPayCalculation()); +// //6、插入工资结算信息 +// boolean save = save(wgzPayCalculation); +// if (save) { +// WgzUser byId = wgzUserService.findByUserId(user.getUserId()); +// Map mp = new HashMap<>(); +// mp.put("projectName", recruit.getRecruitName()); +// mp.put("userName", byId.getUsername()); +// mp.put("num", String.valueOf(wgzPayCalculation.getNum())); +// mp.put("money", String.valueOf(new BigDecimal(wgzPayCalculation.getNum()).multiply(wgzPayCalculation.getRecruitAmount()))); +// WgzMessage wgzMessage = new WgzMessage(). +// setSenderType(USERTYPE_SYSTEM). +// setRecipientType(USERTYPE_WGZ). +// setRecipientId(user.getUserId()). +// setHeadline(WgzAndBgtMessageConstant.wgzMessage(mp,"111")). +// setSubheading(WgzAndBgtMessageConstant.wgzMessage(mp,"112")). +// setTableId(wgzPayCalculation.getId()). +// setTableName(SqlHelper.table(WgzPayCalculation.class).getTableName()). +// setMessageLargeType(LARGE_SALARY); +// if (!iWgzMessageService.sendAMessage(wgzMessage)){ +// throw new RuntimeException("系统工资结算消息发送失败!"); +// } +// BgtMessage bgtMessage = new BgtMessage(). +// setSenderType(USERTYPE_WGZ). +// setSenderId(user.getUserId()). +// setRecipientType(USERTYPE_BGT). +// setRecipientId(recruit.getUserId()). +// setHeadline(WgzAndBgtMessageConstant.wgzMessage(mp,"209")). +// setSubheading(WgzAndBgtMessageConstant.wgzMessage(mp,"210")). +// setTableId(wgzPayCalculation.getId()). +// setTableName(SqlHelper.table(WgzPayCalculation.class).getTableName()). +// setMessageLargeType(BGT_LARGE_OTHER). +// setMessageSmallType(BGT_SMALL_PAY); +// if (!iBgtMessageService.sendAMessage(bgtMessage)){ +// throw new RuntimeException("发送补卡消息失败!"); +// } +// return true; +// } +// return save(wgzPayCalculation); +// } + @Override public TableDataInfo userApplyForPayrollSettlementList(WgzAppApplyForPayrollSettlementListReq req) { Page pe = new Page<>(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzReissueacardServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzReissueacardServiceImpl.java index 2af0e31..4bce424 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzReissueacardServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzReissueacardServiceImpl.java @@ -206,7 +206,7 @@ public class WgzReissueacardServiceImpl extends ServicePlusImpl