3.17优化
This commit is contained in:
@ -304,8 +304,8 @@
|
||||
@ApiOperation("【考勤打卡】【打卡日历】 打卡日历记录")
|
||||
//@PreAuthorize("@ss.hasPermi('wgzApp:user:userPunchTheCalendarRecord')")
|
||||
@GetMapping("/WgzAppUserPunchTheCalendarRecord")
|
||||
public AjaxResult<WgzAppPunchTheCalendarRecordRes> userPunchTheCalendarRecord() {
|
||||
return AjaxResult.success(iWgzAttendanceService.userPunchTheCalendarRecord());
|
||||
public AjaxResult<WgzAppPunchTheCalendarRecordRes> userPunchTheCalendarRecord(@Validated WgzAppUserPunchTheCalendarRecordReq req) {
|
||||
return AjaxResult.success(iWgzAttendanceService.userPunchTheCalendarRecord(req));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
@ -21,5 +22,6 @@ public class WgzAppDailyRecordReq extends PageReq {
|
||||
private String types;
|
||||
|
||||
@ApiModelProperty(value = "日期(格式:年-月-日)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate rq;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
@ -10,6 +10,7 @@ import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.wgz.bo.WgzAttendanceQueryBo;
|
||||
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.WgzAppPunchTheCalendarRecordRes;
|
||||
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查询具体的打卡详情
|
||||
|
@ -25,6 +25,7 @@ import com.ruoyi.fbs.domain.FbsProjectTask;
|
||||
import com.ruoyi.fbs.service.IFbsProjectTaskService;
|
||||
import com.ruoyi.wgz.bo.WgzAttendanceQueryBo;
|
||||
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.WgzAppPunchTheCalendarRecordRes;
|
||||
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.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.*;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.util.*;
|
||||
@ -295,11 +294,13 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl<WgzAttendanceMappe
|
||||
}
|
||||
|
||||
@Override
|
||||
public WgzAppPunchTheCalendarRecordRes userPunchTheCalendarRecord() {
|
||||
public WgzAppPunchTheCalendarRecordRes userPunchTheCalendarRecord(WgzAppUserPunchTheCalendarRecordReq req) {
|
||||
Long appUserId = SecurityUtils.getAppUserId();
|
||||
BgtProjectRecruitApply by = iBgtProjectRecruitApplyService.selectByUserIdProjectRecruitApplyId(appUserId);
|
||||
//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 lastDayOfMonth = currentDate.with(TemporalAdjusters.lastDayOfMonth());
|
||||
List<LocalDate> dates = new ArrayList<>();
|
||||
@ -308,35 +309,35 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl<WgzAttendanceMappe
|
||||
dates.add(tempDate);
|
||||
tempDate = tempDate.plusDays(1);
|
||||
}
|
||||
String format = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"));
|
||||
//2、获取当前人、当前工地、当前月的所有考勤记录
|
||||
LambdaQueryWrapper<WgzAttendance> apply = new LambdaQueryWrapper<WgzAttendance>().
|
||||
eq(WgzAttendance::getUserId, appUserId).
|
||||
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);
|
||||
//3、组装返回数据
|
||||
Map<LocalDate, WgzAppPunchTheCalendarRecordTwo> mp = new HashMap<>();
|
||||
Map<LocalDate, WgzAppPunchTheCalendarRecordTwo> mp = new LinkedHashMap <>();
|
||||
for (LocalDate date : dates) {
|
||||
for (WgzAttendance wa : wgzAttendances) {
|
||||
WgzAppPunchTheCalendarRecordTwo two = new WgzAppPunchTheCalendarRecordTwo().setId(wa.getId());
|
||||
LocalDate clockDate = wa.getDate();
|
||||
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.setSb(sbOrXb(wa, 1));
|
||||
}
|
||||
//下班
|
||||
if (wa.getClockOutTime() != null || wa.getMissedOut()== 1) {
|
||||
if (wa.getClockOutTime() != null || wa.getMissedOut()== 1 || wa.getLeaveMarkId() != 0) {
|
||||
two.setNum(2);
|
||||
if (wa.getClockInTime() != null && wa.getClockOutTime() != null ) {
|
||||
two.setManHour(calculateWorkingHours(wa.getClockInTime(), wa.getClockOutTime()));
|
||||
}
|
||||
two.setXb(sbOrXb(wa, 2));
|
||||
}
|
||||
mp.put(date, two);
|
||||
break;
|
||||
}
|
||||
mp.put(date, two);
|
||||
}
|
||||
}
|
||||
return new WgzAppPunchTheCalendarRecordRes().setMp(mp);
|
||||
|
@ -170,7 +170,6 @@ public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMappe
|
||||
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 lastDayOfMonth = currentDate.with(TemporalAdjusters.lastDayOfMonth());
|
||||
List<LocalDate> dates = new ArrayList<>();
|
||||
@ -186,24 +185,24 @@ public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMappe
|
||||
//3、查看当前人、当前项目、当前月是否有请假
|
||||
Map<LocalDate, LocalDate> ll = iWgzLeaveService.selectByUserCancelLeave(req.getYearMonth());
|
||||
//4、将获取的年月与数据库中的日期进行比对,然后填充数据
|
||||
Map<String, WgzAppAttachmentAcquisitionTwo> fh = new HashMap<>();
|
||||
Map<String, WgzAppAttachmentAcquisitionTwo> fh = new LinkedHashMap<>();
|
||||
dates.forEach(date -> {
|
||||
wgzDailyClocks.forEach(wgzDailyClock -> {
|
||||
for (WgzDailyClock wgzDailyClock : wgzDailyClocks) {
|
||||
LocalDate clockDate = wgzDailyClock.getDilyTime().toLocalDate();
|
||||
//两个时间一致就填充数据;如若有请假的日期需要将状态改为请假
|
||||
if (clockDate.equals(date)) {
|
||||
WgzAppAttachmentAcquisitionTwo wgzAppAttachmentAcquisitionTwo = new WgzAppAttachmentAcquisitionTwo().
|
||||
setStatus("0").//正常上传日志
|
||||
setId(wgzDailyClock.getId()).
|
||||
setId(wgzDailyClock.getId()).
|
||||
setDilyTime(wgzDailyClock.getDilyTime()).
|
||||
setPnchOsition(wgzDailyClock.getPnchOsition());
|
||||
if (ll.get(date) !=null && ll.get(date).equals(clockDate)) {
|
||||
wgzAppAttachmentAcquisitionTwo.setStatus("2"); //全天请假
|
||||
}
|
||||
|
||||
fh.put(date.toString(),wgzAppAttachmentAcquisitionTwo);
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
//4、获取当前务工者的招工信息的主题及招工创建人的基本信息
|
||||
BgtProjectRecruitApply by = iBgtProjectRecruitApplyService.selectByUserIdProjectRecruitApplyId(SecurityUtils.getAppUserId());
|
||||
|
@ -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)
|
||||
WHERE
|
||||
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">
|
||||
status = #{req.types} and
|
||||
a.status = #{req.types} and
|
||||
</if>
|
||||
a.del_flag = 0
|
||||
ORDER BY
|
||||
|
Reference in New Issue
Block a user