考勤统计与工种
This commit is contained in:
@ -0,0 +1,32 @@
|
|||||||
|
package com.ruoyi.web.controller.bgt;
|
||||||
|
|
||||||
|
|
||||||
|
import com.ruoyi.bgt.domain.dto.BgtAttendanceDTO;
|
||||||
|
import com.ruoyi.bgt.domain.vo.BgtAttendanceVO;
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.wgz.service.IWgzAttendanceService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
@Api(value = "App包工头考勤控制器", tags = {"App包工头考勤管理"})
|
||||||
|
@RequiredArgsConstructor(onConstructor_ = @Autowired)
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/app/bgt/attendance")
|
||||||
|
public class AppBgtAttendanceController {
|
||||||
|
|
||||||
|
private final IWgzAttendanceService attendanceService;
|
||||||
|
|
||||||
|
@ApiOperation("App包工头总体考勤情况")
|
||||||
|
@GetMapping()
|
||||||
|
public AjaxResult<BgtAttendanceVO> attendanceDetail(@Validated BgtAttendanceDTO dto) {
|
||||||
|
return AjaxResult.success(attendanceService.attendanceDetail(dto));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,10 +1,11 @@
|
|||||||
package com.ruoyi.common.utils;
|
package com.ruoyi.common.utils;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.time.DateFormatUtils;
|
||||||
|
|
||||||
import java.lang.management.ManagementFactory;
|
import java.lang.management.ManagementFactory;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import org.apache.commons.lang3.time.DateFormatUtils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 时间工具类
|
* 时间工具类
|
||||||
|
@ -132,6 +132,9 @@ public class BgtProjectRecruit implements Serializable {
|
|||||||
@ApiModelProperty("下班时间")
|
@ApiModelProperty("下班时间")
|
||||||
private LocalTime endWorkTime;
|
private LocalTime endWorkTime;
|
||||||
|
|
||||||
|
@ApiModelProperty("工种")
|
||||||
|
private String typeOfWork;
|
||||||
|
|
||||||
@ApiModelProperty("创建者ID")
|
@ApiModelProperty("创建者ID")
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ import lombok.NoArgsConstructor;
|
|||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,10 +46,10 @@ public class BgtProjectRecruitApply implements Serializable {
|
|||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
@ApiModelProperty("进场时间")
|
@ApiModelProperty("进场时间")
|
||||||
private String entryTime;
|
private LocalDate entryTime;
|
||||||
|
|
||||||
@ApiModelProperty("离场时间")
|
@ApiModelProperty("离场时间")
|
||||||
private String leaveTime;
|
private LocalDate leaveTime;
|
||||||
|
|
||||||
/** 删除标志(0代表存在 2代表删除) */
|
/** 删除标志(0代表存在 2代表删除) */
|
||||||
@Excel(name = "删除标志" , readConverterExp = "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 lombok.Data;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -25,7 +26,7 @@ public class BgtProjectRecruitApplyConsentDTO implements Serializable {
|
|||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
@ApiModelProperty("进场时间")
|
@ApiModelProperty("进场时间")
|
||||||
private String entryTime;
|
private LocalDate entryTime;
|
||||||
|
|
||||||
@ApiModelProperty("入场材料")
|
@ApiModelProperty("入场材料")
|
||||||
List<AnnexDTO> entryMaterials;
|
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("招工要求")
|
@ApiModelProperty("招工要求")
|
||||||
private String recruitRequirement;
|
private String recruitRequirement;
|
||||||
|
|
||||||
|
@ApiModelProperty("工种")
|
||||||
|
private String typeOfWork;
|
||||||
|
|
||||||
@ApiModelProperty("创建者ID")
|
@ApiModelProperty("创建者ID")
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
|
@ -51,6 +51,9 @@ public class BgtProjectRecruitVO implements Serializable {
|
|||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
@ApiModelProperty("工种")
|
||||||
|
private String typeOfWork;
|
||||||
|
|
||||||
@ApiModelProperty("申请者列表")
|
@ApiModelProperty("申请者列表")
|
||||||
List<BgtProjectRecruitApplyVO> applylist;
|
List<BgtProjectRecruitApplyVO> applylist;
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package com.ruoyi.fbs.domain.vo;
|
|||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO;
|
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO;
|
||||||
import com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO;
|
import com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO;
|
||||||
|
import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -83,6 +84,22 @@ public class AppTaskDetailVO {
|
|||||||
@ApiModelProperty("收款申请列表")
|
@ApiModelProperty("收款申请列表")
|
||||||
private List<BgtWageApplicationListVO> wageApplicationList;
|
private List<BgtWageApplicationListVO> wageApplicationList;
|
||||||
|
|
||||||
|
|
||||||
|
//总体考勤情况
|
||||||
|
|
||||||
|
@ApiModelProperty("总人数")
|
||||||
|
private Integer totalNum = 0;
|
||||||
|
|
||||||
|
@ApiModelProperty("今日到岗人数")
|
||||||
|
private Integer reportToDutyNum= 0;
|
||||||
|
|
||||||
|
@ApiModelProperty("今日到岗率")
|
||||||
|
private Integer reportToDutyRate= 0;
|
||||||
|
|
||||||
|
@ApiModelProperty("考勤列表")
|
||||||
|
List<BgtAttendanceCountVO> countVOS;
|
||||||
|
|
||||||
|
|
||||||
//务工者数量列表
|
//务工者数量列表
|
||||||
@ApiModelProperty("申请者列表")
|
@ApiModelProperty("申请者列表")
|
||||||
List<BgtProjectRecruitApplyVO> applyList;
|
List<BgtProjectRecruitApplyVO> applyList;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.ruoyi.fbs.service.impl;
|
package com.ruoyi.fbs.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.mapper.FbsProjectTaskMapper;
|
||||||
import com.ruoyi.fbs.service.IFbsProjectTaskApplyService;
|
import com.ruoyi.fbs.service.IFbsProjectTaskApplyService;
|
||||||
import com.ruoyi.fbs.service.IFbsProjectTaskService;
|
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.domain.ZbfProject;
|
||||||
import com.ruoyi.zbf.service.IZbfProjectService;
|
import com.ruoyi.zbf.service.IZbfProjectService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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 java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -62,6 +66,8 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
|
|||||||
private IBgtProjectTaskProgressService progressService;
|
private IBgtProjectTaskProgressService progressService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBgtWageApplicationService wageApplicationService;
|
private IBgtWageApplicationService wageApplicationService;
|
||||||
|
@Autowired
|
||||||
|
private IWgzAttendanceService attendanceService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FbsProjectTask queryById(Long id){
|
public FbsProjectTask queryById(Long id){
|
||||||
@ -175,9 +181,17 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
|
|||||||
appTaskDetailVO.setTaskReceiveAmount(taskReceiveAmount);
|
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;
|
return appTaskDetailVO;
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,12 @@ package com.ruoyi.wgz.mapper;
|
|||||||
import com.ruoyi.wgz.domain.WgzAttendance;
|
import com.ruoyi.wgz.domain.WgzAttendance;
|
||||||
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
|
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
|
||||||
import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache;
|
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.CacheNamespace;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 考勤打卡Mapper接口
|
* 考勤打卡Mapper接口
|
||||||
@ -15,4 +20,7 @@ import org.apache.ibatis.annotations.CacheNamespace;
|
|||||||
@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class)
|
@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class)
|
||||||
public interface WgzAttendanceMapper extends BaseMapperPlus<WgzAttendance> {
|
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;
|
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.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.wgz.bo.req.WgzAppSubmitTheClockReq;
|
import com.ruoyi.wgz.bo.req.WgzAppSubmitTheClockReq;
|
||||||
import com.ruoyi.wgz.bo.res.WgzAppCardReplacementApplicationRes;
|
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.wgz.bo.WgzAttendanceQueryBo;
|
||||||
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
|
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.req.WgzAppSubmitTheClockReq;
|
||||||
|
import com.ruoyi.wgz.domain.WgzAttendance;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -91,4 +98,21 @@ public interface IWgzAttendanceService extends IServicePlus<WgzAttendance> {
|
|||||||
* 补卡申请列表
|
* 补卡申请列表
|
||||||
*/
|
*/
|
||||||
WgzAppCardReplacementApplicationRes userCardReplacementApplication();
|
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.bean.BeanUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
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.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.ruoyi.bgt.domain.BgtProjectRecruit;
|
import com.ruoyi.bgt.domain.BgtProjectRecruit;
|
||||||
import com.ruoyi.bgt.domain.BgtProjectRecruitApply;
|
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.IBgtProjectRecruitApplyService;
|
||||||
import com.ruoyi.bgt.service.IBgtProjectRecruitService;
|
import com.ruoyi.bgt.service.IBgtProjectRecruitService;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
|
||||||
import com.ruoyi.common.utils.PageUtils;
|
|
||||||
import com.ruoyi.common.core.page.PagePlus;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
|
import com.ruoyi.common.utils.PageUtils;
|
||||||
import com.ruoyi.common.utils.SecurityUtils;
|
import com.ruoyi.common.utils.SecurityUtils;
|
||||||
|
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.res.WgzAppCardReplacementApplicationRes;
|
import com.ruoyi.wgz.bo.res.WgzAppCardReplacementApplicationRes;
|
||||||
import com.ruoyi.wgz.bo.res.WgzAppPunchTheCalendarRecordRes;
|
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.WgzAppCardReplacementApplicationTwo;
|
||||||
import com.ruoyi.wgz.bo.rests.WgzAppPunchTheCalendarRecordThree;
|
import com.ruoyi.wgz.bo.rests.WgzAppPunchTheCalendarRecordThree;
|
||||||
import com.ruoyi.wgz.bo.rests.WgzAppPunchTheCalendarRecordTwo;
|
import com.ruoyi.wgz.bo.rests.WgzAppPunchTheCalendarRecordTwo;
|
||||||
|
import com.ruoyi.wgz.domain.WgzAttendance;
|
||||||
import com.ruoyi.wgz.domain.WgzLeave;
|
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 com.ruoyi.wgz.service.IWgzLeaveService;
|
||||||
import org.aspectj.weaver.ast.Var;
|
import org.aspectj.weaver.ast.Var;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
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.annotation.Transactional;
|
||||||
import org.springframework.transaction.reactive.TransactionalOperator;
|
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.time.*;
|
import java.time.*;
|
||||||
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.*;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 考勤打卡Service业务层处理
|
* 考勤打卡Service业务层处理
|
||||||
@ -306,6 +309,27 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl<WgzAttendanceMappe
|
|||||||
return null;
|
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;
|
||||||
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取指定人、指定工地、指定日期的打卡记录
|
* 获取指定人、指定工地、指定日期的打卡记录
|
||||||
|
@ -28,7 +28,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<select id="appQueryPageList" resultType="com.ruoyi.bgt.domain.vo.BgtProjectRecruitVO">
|
<select id="appQueryPageList" resultType="com.ruoyi.bgt.domain.vo.BgtProjectRecruitVO">
|
||||||
select bpr.id,bpr.recruit_name,bpr.recruit_address,bpr.recruit_amount,bpr.recruit_staff_num,bpr.recruit_requirement,bpr.create_time,fpt.task_name
|
select bpr.id,bpr.recruit_name,bpr.recruit_address,bpr.recruit_amount,bpr.recruit_staff_num,
|
||||||
|
bpr.recruit_requirement,bpr.create_time,fpt.task_name,bpr.type_of_work
|
||||||
from bgt_project_recruit bpr left join fbs_project_task fpt on bpr.task_id = fpt.id
|
from bgt_project_recruit bpr left join fbs_project_task fpt on bpr.task_id = fpt.id
|
||||||
<where>
|
<where>
|
||||||
<if test="dto.userId != null ">
|
<if test="dto.userId != null ">
|
||||||
|
@ -30,4 +30,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="countByTaskId" resultType="com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO">
|
||||||
|
select count(1) as reportToDutyNum,
|
||||||
|
date,
|
||||||
|
(select count(1) from bgt_project_recruit_apply where entry_time <= date
|
||||||
|
and recruit_id in (select id from bgt_project_recruit where task_id = #{taskId} )) as totalNum
|
||||||
|
from wgz_attendance
|
||||||
|
where date between #{beginDate} and #{endDate}
|
||||||
|
and (missed_in = 0 or missed_out = 0)
|
||||||
|
and recruit_id in (select id from bgt_project_recruit where task_id = #{taskId} ))
|
||||||
|
group by date
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
Reference in New Issue
Block a user