3.17优化

This commit is contained in:
2025-03-17 11:45:27 +08:00
parent c0fc2dc99f
commit 69c3106e2d
7 changed files with 48 additions and 23 deletions

View File

@ -304,8 +304,8 @@
@ApiOperation("【考勤打卡】【打卡日历】 打卡日历记录") @ApiOperation("【考勤打卡】【打卡日历】 打卡日历记录")
//@PreAuthorize("@ss.hasPermi('wgzApp:user:userPunchTheCalendarRecord')") //@PreAuthorize("@ss.hasPermi('wgzApp:user:userPunchTheCalendarRecord')")
@GetMapping("/WgzAppUserPunchTheCalendarRecord") @GetMapping("/WgzAppUserPunchTheCalendarRecord")
public AjaxResult<WgzAppPunchTheCalendarRecordRes> userPunchTheCalendarRecord() { public AjaxResult<WgzAppPunchTheCalendarRecordRes> userPunchTheCalendarRecord(@Validated WgzAppUserPunchTheCalendarRecordReq req) {
return AjaxResult.success(iWgzAttendanceService.userPunchTheCalendarRecord()); return AjaxResult.success(iWgzAttendanceService.userPunchTheCalendarRecord(req));
} }
/** /**

View File

@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate; import java.time.LocalDate;
@ -21,5 +22,6 @@ public class WgzAppDailyRecordReq extends PageReq {
private String types; private String types;
@ApiModelProperty(value = "日期(格式:年-月-日)") @ApiModelProperty(value = "日期(格式:年-月-日)")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate rq; private LocalDate rq;
} }

View File

@ -0,0 +1,20 @@
package com.ruoyi.wgz.bo.req;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("务工者APP-打卡日历请求对象")
public class WgzAppUserPunchTheCalendarRecordReq implements Serializable {
@ApiModelProperty("年月日期2025-02")
@NotBlank(message = "年月不能为空")
private String yearMonth;
}

View File

@ -10,6 +10,7 @@ import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.wgz.bo.WgzAttendanceQueryBo; import com.ruoyi.wgz.bo.WgzAttendanceQueryBo;
import com.ruoyi.wgz.bo.req.WgzAppSubmitTheClockReq; import com.ruoyi.wgz.bo.req.WgzAppSubmitTheClockReq;
import com.ruoyi.wgz.bo.req.WgzAppUserPunchTheCalendarRecordReq;
import com.ruoyi.wgz.bo.res.WgzAppCardReplacementApplicationRes; import com.ruoyi.wgz.bo.res.WgzAppCardReplacementApplicationRes;
import com.ruoyi.wgz.bo.res.WgzAppPunchTheCalendarRecordRes; import com.ruoyi.wgz.bo.res.WgzAppPunchTheCalendarRecordRes;
import com.ruoyi.wgz.bo.res.WgzAppUserClockingConditionRes; import com.ruoyi.wgz.bo.res.WgzAppUserClockingConditionRes;
@ -86,7 +87,7 @@ public interface IWgzAttendanceService extends IServicePlus<WgzAttendance> {
/** /**
* 打卡日历记录 * 打卡日历记录
*/ */
WgzAppPunchTheCalendarRecordRes userPunchTheCalendarRecord(); WgzAppPunchTheCalendarRecordRes userPunchTheCalendarRecord(@Validated WgzAppUserPunchTheCalendarRecordReq req);
/** /**
* 根据id查询具体的打卡详情 * 根据id查询具体的打卡详情

View File

@ -25,6 +25,7 @@ import com.ruoyi.fbs.domain.FbsProjectTask;
import com.ruoyi.fbs.service.IFbsProjectTaskService; import com.ruoyi.fbs.service.IFbsProjectTaskService;
import com.ruoyi.wgz.bo.WgzAttendanceQueryBo; import com.ruoyi.wgz.bo.WgzAttendanceQueryBo;
import com.ruoyi.wgz.bo.req.WgzAppSubmitTheClockReq; import com.ruoyi.wgz.bo.req.WgzAppSubmitTheClockReq;
import com.ruoyi.wgz.bo.req.WgzAppUserPunchTheCalendarRecordReq;
import com.ruoyi.wgz.bo.res.WgzAppCardReplacementApplicationRes; import com.ruoyi.wgz.bo.res.WgzAppCardReplacementApplicationRes;
import com.ruoyi.wgz.bo.res.WgzAppPunchTheCalendarRecordRes; import com.ruoyi.wgz.bo.res.WgzAppPunchTheCalendarRecordRes;
import com.ruoyi.wgz.bo.res.WgzAppUserClockingConditionRes; import com.ruoyi.wgz.bo.res.WgzAppUserClockingConditionRes;
@ -40,12 +41,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.time.Duration; import java.time.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters; import java.time.temporal.TemporalAdjusters;
import java.util.*; import java.util.*;
@ -295,11 +294,13 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl<WgzAttendanceMappe
} }
@Override @Override
public WgzAppPunchTheCalendarRecordRes userPunchTheCalendarRecord() { public WgzAppPunchTheCalendarRecordRes userPunchTheCalendarRecord(WgzAppUserPunchTheCalendarRecordReq req) {
Long appUserId = SecurityUtils.getAppUserId(); Long appUserId = SecurityUtils.getAppUserId();
BgtProjectRecruitApply by = iBgtProjectRecruitApplyService.selectByUserIdProjectRecruitApplyId(appUserId); BgtProjectRecruitApply by = iBgtProjectRecruitApplyService.selectByUserIdProjectRecruitApplyId(appUserId);
//1、获取当月的所有日期 //1、获取当月的所有日期
LocalDate currentDate = LocalDate.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
YearMonth yearMonth = YearMonth.parse(req.getYearMonth(), formatter);
LocalDate currentDate = yearMonth.atDay(1);
LocalDate firstDayOfMonth = currentDate.with(TemporalAdjusters.firstDayOfMonth()); LocalDate firstDayOfMonth = currentDate.with(TemporalAdjusters.firstDayOfMonth());
LocalDate lastDayOfMonth = currentDate.with(TemporalAdjusters.lastDayOfMonth()); LocalDate lastDayOfMonth = currentDate.with(TemporalAdjusters.lastDayOfMonth());
List<LocalDate> dates = new ArrayList<>(); List<LocalDate> dates = new ArrayList<>();
@ -308,35 +309,35 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl<WgzAttendanceMappe
dates.add(tempDate); dates.add(tempDate);
tempDate = tempDate.plusDays(1); tempDate = tempDate.plusDays(1);
} }
String format = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"));
//2、获取当前人、当前工地、当前月的所有考勤记录 //2、获取当前人、当前工地、当前月的所有考勤记录
LambdaQueryWrapper<WgzAttendance> apply = new LambdaQueryWrapper<WgzAttendance>(). LambdaQueryWrapper<WgzAttendance> apply = new LambdaQueryWrapper<WgzAttendance>().
eq(WgzAttendance::getUserId, appUserId). eq(WgzAttendance::getUserId, appUserId).
eq(WgzAttendance::getRecruitId, by.getRecruitId()). eq(WgzAttendance::getRecruitId, by.getRecruitId()).
apply("DATE_FORMAT(date, '%Y-%m') = {0}", format); apply("DATE_FORMAT(date, '%Y-%m') = {0}", req.getYearMonth());
List<WgzAttendance> wgzAttendances = baseMapper.selectList(apply); List<WgzAttendance> wgzAttendances = baseMapper.selectList(apply);
//3、组装返回数据 //3、组装返回数据
Map<LocalDate, WgzAppPunchTheCalendarRecordTwo> mp = new HashMap<>(); Map<LocalDate, WgzAppPunchTheCalendarRecordTwo> mp = new LinkedHashMap <>();
for (LocalDate date : dates) { for (LocalDate date : dates) {
for (WgzAttendance wa : wgzAttendances) { for (WgzAttendance wa : wgzAttendances) {
WgzAppPunchTheCalendarRecordTwo two = new WgzAppPunchTheCalendarRecordTwo().setId(wa.getId()); WgzAppPunchTheCalendarRecordTwo two = new WgzAppPunchTheCalendarRecordTwo().setId(wa.getId());
LocalDate clockDate = wa.getDate(); LocalDate clockDate = wa.getDate();
if (clockDate.equals(date)) { if (clockDate.equals(date)) {
//上班 //上班
if (wa.getClockInTime() != null || wa.getMissedIn()== 1) { if (wa.getClockInTime() != null || wa.getMissedIn() == 1 || wa.getLeaveMarkId() != 0) {
two.setNum(1); two.setNum(1);
two.setSb(sbOrXb(wa, 1)); two.setSb(sbOrXb(wa, 1));
} }
//下班 //下班
if (wa.getClockOutTime() != null || wa.getMissedOut()== 1) { if (wa.getClockOutTime() != null || wa.getMissedOut()== 1 || wa.getLeaveMarkId() != 0) {
two.setNum(2); two.setNum(2);
if (wa.getClockInTime() != null && wa.getClockOutTime() != null ) { if (wa.getClockInTime() != null && wa.getClockOutTime() != null ) {
two.setManHour(calculateWorkingHours(wa.getClockInTime(), wa.getClockOutTime())); two.setManHour(calculateWorkingHours(wa.getClockInTime(), wa.getClockOutTime()));
} }
two.setXb(sbOrXb(wa, 2)); two.setXb(sbOrXb(wa, 2));
} }
}
mp.put(date, two); mp.put(date, two);
break;
}
} }
} }
return new WgzAppPunchTheCalendarRecordRes().setMp(mp); return new WgzAppPunchTheCalendarRecordRes().setMp(mp);

View File

@ -170,7 +170,6 @@ public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMappe
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
YearMonth yearMonth = YearMonth.parse(req.getYearMonth(), formatter); YearMonth yearMonth = YearMonth.parse(req.getYearMonth(), formatter);
LocalDate currentDate = yearMonth.atDay(1); LocalDate currentDate = yearMonth.atDay(1);
LocalDate firstDayOfMonth = currentDate.with(TemporalAdjusters.firstDayOfMonth()); LocalDate firstDayOfMonth = currentDate.with(TemporalAdjusters.firstDayOfMonth());
LocalDate lastDayOfMonth = currentDate.with(TemporalAdjusters.lastDayOfMonth()); LocalDate lastDayOfMonth = currentDate.with(TemporalAdjusters.lastDayOfMonth());
List<LocalDate> dates = new ArrayList<>(); List<LocalDate> dates = new ArrayList<>();
@ -186,9 +185,9 @@ public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMappe
//3、查看当前人、当前项目、当前月是否有请假 //3、查看当前人、当前项目、当前月是否有请假
Map<LocalDate, LocalDate> ll = iWgzLeaveService.selectByUserCancelLeave(req.getYearMonth()); Map<LocalDate, LocalDate> ll = iWgzLeaveService.selectByUserCancelLeave(req.getYearMonth());
//4、将获取的年月与数据库中的日期进行比对然后填充数据 //4、将获取的年月与数据库中的日期进行比对然后填充数据
Map<String, WgzAppAttachmentAcquisitionTwo> fh = new HashMap<>(); Map<String, WgzAppAttachmentAcquisitionTwo> fh = new LinkedHashMap<>();
dates.forEach(date -> { dates.forEach(date -> {
wgzDailyClocks.forEach(wgzDailyClock -> { for (WgzDailyClock wgzDailyClock : wgzDailyClocks) {
LocalDate clockDate = wgzDailyClock.getDilyTime().toLocalDate(); LocalDate clockDate = wgzDailyClock.getDilyTime().toLocalDate();
//两个时间一致就填充数据;如若有请假的日期需要将状态改为请假 //两个时间一致就填充数据;如若有请假的日期需要将状态改为请假
if (clockDate.equals(date)) { if (clockDate.equals(date)) {
@ -200,10 +199,10 @@ public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMappe
if (ll.get(date) !=null && ll.get(date).equals(clockDate)) { if (ll.get(date) !=null && ll.get(date).equals(clockDate)) {
wgzAppAttachmentAcquisitionTwo.setStatus("2"); //全天请假 wgzAppAttachmentAcquisitionTwo.setStatus("2"); //全天请假
} }
fh.put(date.toString(),wgzAppAttachmentAcquisitionTwo); fh.put(date.toString(),wgzAppAttachmentAcquisitionTwo);
break;
}
} }
});
}); });
//4、获取当前务工者的招工信息的主题及招工创建人的基本信息 //4、获取当前务工者的招工信息的主题及招工创建人的基本信息
BgtProjectRecruitApply by = iBgtProjectRecruitApplyService.selectByUserIdProjectRecruitApplyId(SecurityUtils.getAppUserId()); BgtProjectRecruitApply by = iBgtProjectRecruitApplyService.selectByUserIdProjectRecruitApplyId(SecurityUtils.getAppUserId());

View File

@ -44,9 +44,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LEFT JOIN wgz_user b ON (a.user_id = b.user_id and b.del_flag = 0) LEFT JOIN wgz_user b ON (a.user_id = b.user_id and b.del_flag = 0)
WHERE WHERE
a.user_id = #{req.userId} and a.user_id = #{req.userId} and
DATE_FORMAT(dily_time, '%Y-%m-%d') = #{req.rq} and <if test="req.rq!=null">
DATE_FORMAT(a.dily_time, '%Y-%m-%d') = #{req.rq} and
</if>
<if test="req.types != 2"> <if test="req.types != 2">
status = #{req.types} and a.status = #{req.types} and
</if> </if>
a.del_flag = 0 a.del_flag = 0
ORDER BY ORDER BY