考勤统计与工种
This commit is contained in:
@ -132,6 +132,9 @@ public class BgtProjectRecruit implements Serializable {
|
||||
@ApiModelProperty("下班时间")
|
||||
private LocalTime endWorkTime;
|
||||
|
||||
@ApiModelProperty("工种")
|
||||
private String typeOfWork;
|
||||
|
||||
@ApiModelProperty("创建者ID")
|
||||
private Long userId;
|
||||
|
||||
|
@ -9,6 +9,7 @@ import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
@ -45,10 +46,10 @@ public class BgtProjectRecruitApply implements Serializable {
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty("进场时间")
|
||||
private String entryTime;
|
||||
private LocalDate entryTime;
|
||||
|
||||
@ApiModelProperty("离场时间")
|
||||
private String leaveTime;
|
||||
private LocalDate leaveTime;
|
||||
|
||||
/** 删除标志(0代表存在 2代表删除) */
|
||||
@Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除")
|
||||
|
@ -0,0 +1,23 @@
|
||||
package com.ruoyi.bgt.domain.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
@ApiModel("App包工头总体考勤查询对象")
|
||||
public class BgtAttendanceDTO {
|
||||
|
||||
@ApiModelProperty("任务ID")
|
||||
private Long taskId;
|
||||
|
||||
@ApiModelProperty("日期")
|
||||
private String date;
|
||||
|
||||
@ApiModelProperty("日期类型(1日 2月)")
|
||||
private String dateType;
|
||||
}
|
@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -25,7 +26,7 @@ public class BgtProjectRecruitApplyConsentDTO implements Serializable {
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("进场时间")
|
||||
private String entryTime;
|
||||
private LocalDate entryTime;
|
||||
|
||||
@ApiModelProperty("入场材料")
|
||||
List<AnnexDTO> entryMaterials;
|
||||
|
@ -0,0 +1,36 @@
|
||||
package com.ruoyi.bgt.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 考勤打卡对象 wgz_attendance
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
@ApiModel("包工头考勤打卡统计对象")
|
||||
public class BgtAttendanceCountVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
@ApiModelProperty("到岗人数")
|
||||
private Integer reportToDutyNum;
|
||||
|
||||
@ApiModelProperty("总人数")
|
||||
private Integer totalNum;
|
||||
|
||||
@ApiModelProperty("日期")
|
||||
private LocalDate date;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
package com.ruoyi.bgt.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
@ApiModel("App包工头总体考勤视图对象")
|
||||
public class BgtAttendanceVO {
|
||||
|
||||
@ApiModelProperty("任务ID")
|
||||
private Long taskId;
|
||||
|
||||
@ApiModelProperty("任务名")
|
||||
private String taskName;
|
||||
|
||||
@ApiModelProperty("到岗人数")
|
||||
private Integer reportToDutyNum;
|
||||
|
||||
@ApiModelProperty("总人数")
|
||||
private Integer totalNum;
|
||||
|
||||
@ApiModelProperty("缺勤人数")
|
||||
private Integer absenceDutyNum;
|
||||
|
||||
@ApiModelProperty("请假人数")
|
||||
private Integer leaveNum;
|
||||
|
||||
@ApiModelProperty("迟到人数")
|
||||
private Integer lateNum;
|
||||
|
||||
@ApiModelProperty("考勤列表")
|
||||
List<BgtAttendanceCountVO> countVOS;
|
||||
|
||||
//务工者列表
|
||||
@ApiModelProperty("申请者列表")
|
||||
List<BgtProjectRecruitApplyVO> applyList;
|
||||
|
||||
}
|
@ -75,6 +75,9 @@ public class BgtProjectRecruitDetailVO implements Serializable {
|
||||
@ApiModelProperty("招工要求")
|
||||
private String recruitRequirement;
|
||||
|
||||
@ApiModelProperty("工种")
|
||||
private String typeOfWork;
|
||||
|
||||
@ApiModelProperty("创建者ID")
|
||||
private Long userId;
|
||||
|
||||
|
@ -51,6 +51,9 @@ public class BgtProjectRecruitVO implements Serializable {
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@ApiModelProperty("工种")
|
||||
private String typeOfWork;
|
||||
|
||||
@ApiModelProperty("申请者列表")
|
||||
List<BgtProjectRecruitApplyVO> applylist;
|
||||
|
||||
|
@ -3,6 +3,7 @@ package com.ruoyi.fbs.domain.vo;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO;
|
||||
import com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO;
|
||||
import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@ -83,6 +84,22 @@ public class AppTaskDetailVO {
|
||||
@ApiModelProperty("收款申请列表")
|
||||
private List<BgtWageApplicationListVO> wageApplicationList;
|
||||
|
||||
|
||||
//总体考勤情况
|
||||
|
||||
@ApiModelProperty("总人数")
|
||||
private Integer totalNum = 0;
|
||||
|
||||
@ApiModelProperty("今日到岗人数")
|
||||
private Integer reportToDutyNum= 0;
|
||||
|
||||
@ApiModelProperty("今日到岗率")
|
||||
private Integer reportToDutyRate= 0;
|
||||
|
||||
@ApiModelProperty("考勤列表")
|
||||
List<BgtAttendanceCountVO> countVOS;
|
||||
|
||||
|
||||
//务工者数量列表
|
||||
@ApiModelProperty("申请者列表")
|
||||
List<BgtProjectRecruitApplyVO> applyList;
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.ruoyi.fbs.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
@ -29,12 +30,15 @@ import com.ruoyi.fbs.domain.vo.AppTaskVO;
|
||||
import com.ruoyi.fbs.mapper.FbsProjectTaskMapper;
|
||||
import com.ruoyi.fbs.service.IFbsProjectTaskApplyService;
|
||||
import com.ruoyi.fbs.service.IFbsProjectTaskService;
|
||||
import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO;
|
||||
import com.ruoyi.wgz.service.IWgzAttendanceService;
|
||||
import com.ruoyi.zbf.domain.ZbfProject;
|
||||
import com.ruoyi.zbf.service.IZbfProjectService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -62,6 +66,8 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
|
||||
private IBgtProjectTaskProgressService progressService;
|
||||
@Autowired
|
||||
private IBgtWageApplicationService wageApplicationService;
|
||||
@Autowired
|
||||
private IWgzAttendanceService attendanceService;
|
||||
|
||||
@Override
|
||||
public FbsProjectTask queryById(Long id){
|
||||
@ -175,9 +181,17 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
|
||||
appTaskDetailVO.setTaskReceiveAmount(taskReceiveAmount);
|
||||
//付款金额
|
||||
|
||||
|
||||
//考勤情况
|
||||
|
||||
LocalDate date = LocalDate.now();
|
||||
LocalDate startOfMonth = date.withDayOfMonth(1);
|
||||
List<BgtAttendanceCountVO> countVOS = attendanceService.countByTaskId(id, startOfMonth, date);
|
||||
if(CollectionUtil.isNotEmpty(countVOS)){
|
||||
BgtAttendanceCountVO vo = countVOS.get(0);
|
||||
appTaskDetailVO.setCountVOS(countVOS);
|
||||
appTaskDetailVO.setTotalNum(vo.getTotalNum());
|
||||
appTaskDetailVO.setReportToDutyNum(vo.getReportToDutyNum());
|
||||
appTaskDetailVO.setReportToDutyRate(vo.getReportToDutyNum()/vo.getTotalNum()*100);
|
||||
}
|
||||
|
||||
return appTaskDetailVO;
|
||||
}
|
||||
|
@ -3,7 +3,12 @@ package com.ruoyi.wgz.mapper;
|
||||
import com.ruoyi.wgz.domain.WgzAttendance;
|
||||
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
|
||||
import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache;
|
||||
import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO;
|
||||
import org.apache.ibatis.annotations.CacheNamespace;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 考勤打卡Mapper接口
|
||||
@ -15,4 +20,7 @@ import org.apache.ibatis.annotations.CacheNamespace;
|
||||
@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class)
|
||||
public interface WgzAttendanceMapper extends BaseMapperPlus<WgzAttendance> {
|
||||
|
||||
|
||||
List<BgtAttendanceCountVO> countByTaskId(@Param("taskId") Long taskId, @Param("beginDate")LocalDate beginDate
|
||||
, @Param("endDate")LocalDate endDate);
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
package com.ruoyi.wgz.service;
|
||||
|
||||
import com.ruoyi.bgt.domain.dto.BgtAttendanceDTO;
|
||||
import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO;
|
||||
import com.ruoyi.bgt.domain.vo.BgtAttendanceVO;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.wgz.bo.req.WgzAppSubmitTheClockReq;
|
||||
import com.ruoyi.wgz.bo.res.WgzAppCardReplacementApplicationRes;
|
||||
@ -9,9 +12,13 @@ import com.ruoyi.wgz.domain.WgzAttendance;
|
||||
import com.ruoyi.wgz.bo.WgzAttendanceQueryBo;
|
||||
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.domain.WgzAttendance;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@ -91,4 +98,21 @@ public interface IWgzAttendanceService extends IServicePlus<WgzAttendance> {
|
||||
* 补卡申请列表
|
||||
*/
|
||||
WgzAppCardReplacementApplicationRes userCardReplacementApplication();
|
||||
// /**
|
||||
// * 查看当前人、当前工地、当前日期的打卡记录
|
||||
// */
|
||||
// WgzAttendance findByUserIdWait(Long appUserId, Long recruitId, String date);
|
||||
|
||||
/**
|
||||
* 统计任务打卡情况
|
||||
*/
|
||||
List<BgtAttendanceCountVO> countByTaskId(Long taskId, LocalDate beginDate, LocalDate endDate);
|
||||
|
||||
|
||||
/**
|
||||
* 总体考勤情况
|
||||
*/
|
||||
BgtAttendanceVO attendanceDetail(BgtAttendanceDTO dto);
|
||||
|
||||
|
||||
}
|
||||
|
@ -2,16 +2,20 @@ package com.ruoyi.wgz.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.bgt.domain.BgtProjectRecruit;
|
||||
import com.ruoyi.bgt.domain.BgtProjectRecruitApply;
|
||||
import com.ruoyi.bgt.domain.dto.BgtAttendanceDTO;
|
||||
import com.ruoyi.bgt.domain.vo.BgtAttendanceVO;
|
||||
import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService;
|
||||
import com.ruoyi.bgt.service.IBgtProjectRecruitService;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.utils.PageUtils;
|
||||
import com.ruoyi.common.core.page.PagePlus;
|
||||
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.utils.PageUtils;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.wgz.bo.WgzAttendanceQueryBo;
|
||||
import com.ruoyi.wgz.bo.req.WgzAppSubmitTheClockReq;
|
||||
import com.ruoyi.wgz.bo.res.WgzAppCardReplacementApplicationRes;
|
||||
import com.ruoyi.wgz.bo.res.WgzAppPunchTheCalendarRecordRes;
|
||||
@ -19,26 +23,25 @@ import com.ruoyi.wgz.bo.res.WgzAppUserClockingConditionRes;
|
||||
import com.ruoyi.wgz.bo.rests.WgzAppCardReplacementApplicationTwo;
|
||||
import com.ruoyi.wgz.bo.rests.WgzAppPunchTheCalendarRecordThree;
|
||||
import com.ruoyi.wgz.bo.rests.WgzAppPunchTheCalendarRecordTwo;
|
||||
import com.ruoyi.wgz.domain.WgzAttendance;
|
||||
import com.ruoyi.wgz.domain.WgzLeave;
|
||||
import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO;
|
||||
import com.ruoyi.wgz.mapper.WgzAttendanceMapper;
|
||||
import com.ruoyi.wgz.service.IWgzAttendanceService;
|
||||
import com.ruoyi.wgz.service.IWgzLeaveService;
|
||||
import org.aspectj.weaver.ast.Var;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.ruoyi.wgz.bo.WgzAttendanceQueryBo;
|
||||
import com.ruoyi.wgz.domain.WgzAttendance;
|
||||
import com.ruoyi.wgz.mapper.WgzAttendanceMapper;
|
||||
import com.ruoyi.wgz.service.IWgzAttendanceService;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.transaction.reactive.TransactionalOperator;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.*;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.util.*;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 考勤打卡Service业务层处理
|
||||
@ -306,6 +309,27 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl<WgzAttendanceMappe
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BgtAttendanceCountVO> countByTaskId(Long taskId, LocalDate beginDate, LocalDate endDate) {
|
||||
return baseMapper.countByTaskId(taskId, beginDate, endDate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BgtAttendanceVO attendanceDetail(BgtAttendanceDTO dto) {
|
||||
|
||||
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public WgzAttendance findByUserIdWait(Long appUserId, Long recruitId, String date) {
|
||||
// LambdaQueryWrapper<WgzAttendance> qw = new LambdaQueryWrapper<>();
|
||||
// qw.eq(WgzAttendance::getRecruitId,recruitId);
|
||||
// qw.eq(WgzAttendance::getUserId,appUserId);
|
||||
// return null;
|
||||
// }
|
||||
|
||||
/**
|
||||
* 获取指定人、指定工地、指定日期的打卡记录
|
||||
|
Reference in New Issue
Block a user