优化
This commit is contained in:
		| @ -8,6 +8,7 @@ import lombok.NoArgsConstructor; | ||||
| import lombok.experimental.Accessors; | ||||
| import org.springframework.format.annotation.DateTimeFormat; | ||||
|  | ||||
| import javax.validation.constraints.NotNull; | ||||
| import java.time.LocalDate; | ||||
|  | ||||
| @Data | ||||
| @ -20,6 +21,7 @@ public class BgtAttendanceDetailDTO { | ||||
| 	private Long userId; | ||||
|  | ||||
| 	@ApiModelProperty("任务Id") | ||||
| 	@NotNull(message = "任务Id不能为空") | ||||
| 	private Long taskId; | ||||
|  | ||||
| 	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") | ||||
|  | ||||
| @ -25,7 +25,6 @@ public class BgtLeaveUpdateDTO { | ||||
| 	@ApiModelProperty("审核状态(0待审核 1审核中 2已同意 3已拒绝 4=已取消)") | ||||
| 	private String auditorType; | ||||
|  | ||||
|  | ||||
| 	@ApiModelProperty("审核意见") | ||||
| 	private String auditorOpinion; | ||||
|  | ||||
|  | ||||
| @ -5,6 +5,8 @@ import io.swagger.annotations.ApiModel; | ||||
| import io.swagger.annotations.ApiModelProperty; | ||||
| import lombok.Data; | ||||
|  | ||||
| import javax.validation.constraints.NotNull; | ||||
| import javax.validation.constraints.Size; | ||||
| import java.time.LocalDate; | ||||
| import java.util.List; | ||||
|  | ||||
| @ -23,12 +25,15 @@ public class BgtProjectRecruitApplyConsentDTO{ | ||||
|     private Long id; | ||||
|  | ||||
| 	@ApiModelProperty("进场时间") | ||||
| 	@NotNull(message = "进场时间不能为空") | ||||
| 	private LocalDate entryTime; | ||||
|  | ||||
| 	@ApiModelProperty("入场材料") | ||||
| 	@Size(min = 1, message = "入场材料不能为空") | ||||
| 	List<AnnexDTO> entryMaterials; | ||||
|  | ||||
| 	@ApiModelProperty("保险") | ||||
| 	@Size(min = 1, message = "保险不能为空") | ||||
| 	List<AnnexDTO> insurances; | ||||
|  | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,28 @@ | ||||
| package com.ruoyi.bgt.domain.dto; | ||||
|  | ||||
| import io.swagger.annotations.ApiModel; | ||||
| import io.swagger.annotations.ApiModelProperty; | ||||
| import lombok.Data; | ||||
|  | ||||
| import javax.validation.constraints.NotNull; | ||||
|  | ||||
| @Data | ||||
| @ApiModel("包工头招工详情务工者申请列表查询对象") | ||||
| public class BgtProjectRecruitApplyUserDTO { | ||||
|  | ||||
| 	@ApiModelProperty("分页大小") | ||||
| 	private Integer pageSize; | ||||
| 	/** 当前页数 */ | ||||
| 	@ApiModelProperty("当前页数") | ||||
| 	private Integer pageNum; | ||||
|  | ||||
| 	@ApiModelProperty("招工任务Id") | ||||
| 	@NotNull(message = "招工任务Id不能为空") | ||||
| 	private Long recruitId; | ||||
|  | ||||
| 	@ApiModelProperty("选择状态(0选择 1未选择") | ||||
| 	private Integer status; | ||||
|  | ||||
| 	@ApiModelProperty("务工者名字") | ||||
| 	private String username; | ||||
| } | ||||
| @ -0,0 +1,28 @@ | ||||
| package com.ruoyi.bgt.domain.dto; | ||||
|  | ||||
| import io.swagger.annotations.ApiModel; | ||||
| import io.swagger.annotations.ApiModelProperty; | ||||
| import lombok.Data; | ||||
|  | ||||
| import javax.validation.constraints.NotNull; | ||||
|  | ||||
| @Data | ||||
| @ApiModel("包工头任务详情务工者申请列表查询对象") | ||||
| public class BgtProjectTaskUserDTO { | ||||
|  | ||||
| 	@ApiModelProperty("分页大小") | ||||
| 	private Integer pageSize; | ||||
| 	/** 当前页数 */ | ||||
| 	@ApiModelProperty("当前页数") | ||||
| 	private Integer pageNum; | ||||
|  | ||||
| 	@ApiModelProperty("任务Id") | ||||
| 	@NotNull(message = "任务Id不能为空") | ||||
| 	private Long taskId; | ||||
|  | ||||
| 	@ApiModelProperty("选择状态(3-未进场,5-进场,6-离场") | ||||
| 	private Integer status; | ||||
|  | ||||
| 	@ApiModelProperty("务工者名字") | ||||
| 	private String username; | ||||
| } | ||||
| @ -0,0 +1,36 @@ | ||||
| package com.ruoyi.bgt.domain.vo; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonFormat; | ||||
| import io.swagger.annotations.ApiModel; | ||||
| import io.swagger.annotations.ApiModelProperty; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
| import lombok.experimental.Accessors; | ||||
|  | ||||
| import java.time.LocalDate; | ||||
|  | ||||
| @Data | ||||
| @NoArgsConstructor | ||||
| @Accessors(chain = true) | ||||
| @ApiModel("App包工头总体考勤视图对象") | ||||
| public class BgtAttendancePersonBaseInfoVO { | ||||
|  | ||||
| 	@ApiModelProperty("务工者Id") | ||||
| 	@JsonFormat(shape = JsonFormat.Shape.STRING) | ||||
| 	private Long userId; | ||||
|  | ||||
| 	@ApiModelProperty("姓名") | ||||
| 	private String username; | ||||
|  | ||||
| 	@ApiModelProperty("头像") | ||||
| 	private String avatarName; | ||||
|  | ||||
| 	@ApiModelProperty("进场时间") | ||||
| 	private LocalDate entryTime; | ||||
|  | ||||
| 	@ApiModelProperty("离场时间") | ||||
| 	private LocalDate leaveTime; | ||||
|  | ||||
| 	@ApiModelProperty("选择状态(0未选择 1已选择)") | ||||
| 	private String status; | ||||
| } | ||||
| @ -1,36 +1,18 @@ | ||||
| package com.ruoyi.bgt.domain.vo; | ||||
| 
 | ||||
| import com.fasterxml.jackson.annotation.JsonFormat; | ||||
| import io.swagger.annotations.ApiModel; | ||||
| import io.swagger.annotations.ApiModelProperty; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
| import lombok.experimental.Accessors; | ||||
| 
 | ||||
| import java.time.LocalDate; | ||||
| import java.util.List; | ||||
| 
 | ||||
| @Data | ||||
| @NoArgsConstructor | ||||
| @Accessors(chain = true) | ||||
| @ApiModel("App包工头总体考勤视图对象") | ||||
| public class BgtAttendanceDetailVO { | ||||
| 
 | ||||
| 	@ApiModelProperty("务工者Id") | ||||
| 	@JsonFormat(shape = JsonFormat.Shape.STRING) | ||||
| 	private Long userId; | ||||
| 
 | ||||
| 	@ApiModelProperty("姓名") | ||||
| 	private String username; | ||||
| 
 | ||||
| 	@ApiModelProperty("头像") | ||||
| 	private String avatarName; | ||||
| 
 | ||||
| 	@ApiModelProperty("进场时间") | ||||
| 	private LocalDate entryTime; | ||||
| 
 | ||||
| 	@ApiModelProperty("选择状态(0未选择 1已选择)") | ||||
| 	private String status; | ||||
| public class BgtAttendancePersonCountVO { | ||||
| 
 | ||||
| 	@ApiModelProperty("出勤天数") | ||||
| 	private Double dayNum=0D; | ||||
| @ -6,9 +6,6 @@ import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
| import lombok.experimental.Accessors; | ||||
|  | ||||
| import java.io.Serializable; | ||||
| import java.util.List; | ||||
|  | ||||
| /** | ||||
|  * 包工头招工对象 bgt_project_recruit | ||||
|  * | ||||
| @ -18,17 +15,8 @@ import java.util.List; | ||||
| @Data | ||||
| @NoArgsConstructor | ||||
| @Accessors(chain = true) | ||||
| @ApiModel("App包工头招工详情-务工者申请列表对象") | ||||
| public class BgtProjectRecruitDetailWgzListVO implements Serializable { | ||||
|  | ||||
|     private static final long serialVersionUID=1L; | ||||
|  | ||||
|     /** 主键ID */ | ||||
|     @ApiModelProperty("主键ID") | ||||
|     private Long id; | ||||
|  | ||||
| 	@ApiModelProperty("申请者列表") | ||||
| 	List<BgtProjectRecruitApplyVO> applyList; | ||||
| @ApiModel("App包工头招工详情-务工者申请列表统计对象") | ||||
| public class BgtProjectRecruitDetailWgzListVO { | ||||
|  | ||||
| 	@ApiModelProperty("总人数") | ||||
| 	private Integer totalNum; | ||||
|  | ||||
| @ -0,0 +1,24 @@ | ||||
| package com.ruoyi.bgt.domain.vo; | ||||
|  | ||||
| import io.swagger.annotations.ApiModel; | ||||
| import io.swagger.annotations.ApiModelProperty; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
|  | ||||
| @Data | ||||
| @AllArgsConstructor | ||||
| @NoArgsConstructor | ||||
| @ApiModel("包工头任务详情务工者申请列表统计视图对象") | ||||
| public class BgtProjectTaskUseCountVO { | ||||
|  | ||||
| 	@ApiModelProperty("未进场") | ||||
| 	private Long wgzPassNum; | ||||
| 	/** 当前页数 */ | ||||
| 	@ApiModelProperty("进场") | ||||
| 	private Long workingNum; | ||||
|  | ||||
| 	@ApiModelProperty("离场") | ||||
| 	private Long outWorkNum; | ||||
|  | ||||
| } | ||||
| @ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
| import com.ruoyi.bgt.domain.BgtProjectRecruitApply; | ||||
| import com.ruoyi.bgt.domain.dto.BgtAttendanceDayDTO; | ||||
| import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; | ||||
| import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyUserDTO; | ||||
| import com.ruoyi.bgt.domain.dto.BgtProjectTaskUserDTO; | ||||
| import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; | ||||
| import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; | ||||
| import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; | ||||
| @ -30,8 +32,15 @@ public interface BgtProjectRecruitApplyMapper extends BaseMapperPlus<BgtProjectR | ||||
|  | ||||
| //	Page<BgtProjectRecruitApplyVO> dayAttendanceList(@Param("page")Page<BgtAttendanceDayDTO> queryDTOPage,@Param("dto") BgtAttendanceDayDTO dto); | ||||
|  | ||||
| 	// 总体考勤情况-人员出勤情况 | ||||
| 	Page<BgtProjectRecruitApplyVO> todayAttendanceList(@Param("page")Page<BgtAttendanceDayDTO> queryDTOPage,@Param("dto") BgtAttendanceDayDTO dto); | ||||
|  | ||||
| 	// 获取指定项目下的所有成员(分页) | ||||
| 	Page<WgzAppUnderwayRes> underwayPage (@Param("page") Page<WgzAppUnderwayReq> page,@Param("req") WgzAppUnderwayReq req); | ||||
|  | ||||
| 	// 我的招工任务详情-务工者申请列表分页 | ||||
| 	Page<BgtProjectRecruitApplyVO> recruitApplyList(@Param("page")Page<BgtProjectRecruitApplyUserDTO> queryDTOPage,@Param("dto") BgtProjectRecruitApplyUserDTO dto); | ||||
|  | ||||
| 	// 我的任务详情-务工者人员列表分页 | ||||
| 	Page<BgtProjectRecruitApplyVO> taskUserList(@Param("page")Page<BgtProjectTaskUserDTO> queryDTOPage, @Param("dto") BgtProjectTaskUserDTO dto); | ||||
| } | ||||
|  | ||||
| @ -2,10 +2,7 @@ package com.ruoyi.bgt.service; | ||||
|  | ||||
| import com.ruoyi.bgt.bo.BgtProjectRecruitApplyQueryBo; | ||||
| import com.ruoyi.bgt.domain.BgtProjectRecruitApply; | ||||
| import com.ruoyi.bgt.domain.dto.BgtAttendanceDayDTO; | ||||
| import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyConsentDTO; | ||||
| import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; | ||||
| import com.ruoyi.bgt.domain.dto.BgtScoreDTO; | ||||
| import com.ruoyi.bgt.domain.dto.*; | ||||
| import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; | ||||
| import com.ruoyi.common.core.mybatisplus.core.IServicePlus; | ||||
| import com.ruoyi.common.core.page.TableDataInfo; | ||||
| @ -68,10 +65,21 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus<BgtProjectR | ||||
| 	 */ | ||||
| 	TableDataInfo<BgtProjectRecruitApplyVO> appQueryPageList(BgtProjectRecruitApplyQueryDTO dto); | ||||
|  | ||||
|  | ||||
| 	/** | ||||
| 	 * 我的招工任务详情-务工者申请列表分页 | ||||
| 	 */ | ||||
| 	TableDataInfo<BgtProjectRecruitApplyVO> recruitApplyList(BgtProjectRecruitApplyUserDTO dto); | ||||
|  | ||||
| 	/** | ||||
| 	 * 我的任务详情-务工者人员列表分页 | ||||
| 	 */ | ||||
| 	TableDataInfo<BgtProjectRecruitApplyVO> taskUserList(BgtProjectTaskUserDTO dto); | ||||
|  | ||||
| 	/** | ||||
| 	 * 查询列表 | ||||
| 	 */ | ||||
| 	List<BgtProjectRecruitApplyVO> appQueryList(BgtProjectRecruitApplyQueryDTO dto); | ||||
| 	List<BgtProjectRecruitApplyVO> appAllList(BgtProjectRecruitApplyQueryDTO dto); | ||||
|  | ||||
| 	/** | ||||
| 	 * LC-APP相关 | ||||
| @ -96,9 +104,9 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus<BgtProjectR | ||||
| 	Boolean consent(BgtProjectRecruitApplyConsentDTO dto); | ||||
|  | ||||
| 	/** | ||||
| 	 * 指定日期打卡记录 | ||||
| 	 * 指定日期所有人员出勤情况 | ||||
| 	 */ | ||||
| 	TableDataInfo<BgtProjectRecruitApplyVO> dayAttendanceList(BgtAttendanceDayDTO dto); | ||||
| 	TableDataInfo<BgtProjectRecruitApplyVO> userList(BgtAttendanceDayDTO dto); | ||||
|  | ||||
| 	/** | ||||
| 	 * 退场 | ||||
| @ -130,6 +138,8 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus<BgtProjectR | ||||
| 	 */ | ||||
| 	Boolean userConfirmRegistration(@Validated WgzAppConfirmRegistrationReq req); | ||||
|  | ||||
|  | ||||
| 	BgtProjectRecruitApply getOne(Long recruitId,Long userId); | ||||
| 	/** | ||||
| 	 * 根据任务和务工者Id获该务工者的报名信息 | ||||
| 	 */ | ||||
| 	BgtProjectRecruitApply getOne(Long taskId,Long userId); | ||||
| } | ||||
|  | ||||
| @ -66,19 +66,24 @@ public interface IBgtProjectRecruitService extends IServicePlus<BgtProjectRecrui | ||||
|     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); | ||||
|  | ||||
| 	/** | ||||
| 	 * 查询列表 | ||||
| 	 * 查询分页列表 | ||||
| 	 */ | ||||
| 	TableDataInfo<BgtProjectRecruitVO> appQueryPageList(BgtProjectRecruitQueryDTO dto); | ||||
|  | ||||
| 	/** | ||||
| 	 * 查询我发布的所有招工 | ||||
| 	 */ | ||||
| 	List<BgtProjectRecruit> appQueryList(); | ||||
|  | ||||
| 	/** | ||||
| 	 * 查询单个 | ||||
| 	 */ | ||||
| 	BgtProjectRecruitDetailVO appQueryById(Long id); | ||||
|  | ||||
| 	/** | ||||
| 	 * 务工者统计 | ||||
| 	 * 务工者申请列表统计 | ||||
| 	 */ | ||||
| 	BgtProjectRecruitDetailWgzListVO wgzList(Long id); | ||||
| 	BgtProjectRecruitDetailWgzListVO wgzCount(Long id); | ||||
|  | ||||
| 	/** | ||||
| 	 * 获取任务下的所有招工Id | ||||
|  | ||||
| @ -11,10 +11,7 @@ import com.ruoyi.bgt.bo.BgtProjectRecruitApplyQueryBo; | ||||
| import com.ruoyi.bgt.domain.BgtMessage; | ||||
| import com.ruoyi.bgt.domain.BgtProjectRecruit; | ||||
| import com.ruoyi.bgt.domain.BgtProjectRecruitApply; | ||||
| import com.ruoyi.bgt.domain.dto.BgtAttendanceDayDTO; | ||||
| import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyConsentDTO; | ||||
| import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; | ||||
| import com.ruoyi.bgt.domain.dto.BgtScoreDTO; | ||||
| import com.ruoyi.bgt.domain.dto.*; | ||||
| import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; | ||||
| import com.ruoyi.bgt.mapper.BgtProjectRecruitApplyMapper; | ||||
| import com.ruoyi.bgt.service.IBgtMessageService; | ||||
| @ -159,7 +156,25 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl<BgtProjec | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public List<BgtProjectRecruitApplyVO> appQueryList(BgtProjectRecruitApplyQueryDTO dto) { | ||||
| 	public TableDataInfo<BgtProjectRecruitApplyVO> recruitApplyList(BgtProjectRecruitApplyUserDTO dto) { | ||||
| 		Page<BgtProjectRecruitApplyUserDTO> queryDTOPage = new Page<>(); | ||||
| 		queryDTOPage.setCurrent(dto.getPageNum()); | ||||
| 		queryDTOPage.setSize(dto.getPageSize()); | ||||
| 		Page<BgtProjectRecruitApplyVO> queryVOPage = baseMapper.recruitApplyList(queryDTOPage, dto); | ||||
| 		return PageUtils.buildDataInfo(queryVOPage); | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public TableDataInfo<BgtProjectRecruitApplyVO> taskUserList(BgtProjectTaskUserDTO dto) { | ||||
| 		Page<BgtProjectTaskUserDTO> queryDTOPage = new Page<>(); | ||||
| 		queryDTOPage.setCurrent(dto.getPageNum()); | ||||
| 		queryDTOPage.setSize(dto.getPageSize()); | ||||
| 		Page<BgtProjectRecruitApplyVO> queryVOPage = baseMapper.taskUserList(queryDTOPage, dto); | ||||
| 		return PageUtils.buildDataInfo(queryVOPage); | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public List<BgtProjectRecruitApplyVO> appAllList(BgtProjectRecruitApplyQueryDTO dto) { | ||||
| 		if (dto.getTaskId() != null) { | ||||
| 			List<Long> recruitIdsByTaskId = iBgtProjectRecruitService.getRecruitIdsByTaskId(dto.getTaskId()); | ||||
| 			if (dto.getRecruitIds() == null) { | ||||
| @ -168,6 +183,11 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl<BgtProjec | ||||
| 				dto.getRecruitIds().addAll(recruitIdsByTaskId); | ||||
| 			} | ||||
| 		} | ||||
| 		if(dto.getDate()!=null){ | ||||
| 			LocalDate date = dto.getDate(); | ||||
| 			dto.setBeginDate(date.with(TemporalAdjusters.firstDayOfMonth())); | ||||
| 			dto.setEndDate(date.with(TemporalAdjusters.lastDayOfMonth())); | ||||
| 		} | ||||
| 		return baseMapper.appQueryList(dto); | ||||
| 	} | ||||
|  | ||||
| @ -325,7 +345,8 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl<BgtProjec | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	public TableDataInfo<BgtProjectRecruitApplyVO> dayAttendanceList(BgtAttendanceDayDTO dto) { | ||||
| 	@Override | ||||
| 	public TableDataInfo<BgtProjectRecruitApplyVO> userList(BgtAttendanceDayDTO dto) { | ||||
| 		Page<BgtAttendanceDayDTO> queryDTOPage = new Page<>(); | ||||
| 		queryDTOPage.setCurrent(dto.getPageNum()); | ||||
| 		queryDTOPage.setSize(dto.getPageSize()); | ||||
| @ -368,7 +389,7 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl<BgtProjec | ||||
| 		BgtProjectRecruitApplyQueryDTO dto = new BgtProjectRecruitApplyQueryDTO(); | ||||
| 		dto.setTaskId(taskId); | ||||
| 		dto.setStatus(Collections.singletonList(RecruitApplyStatus.WORKING.getCode())); | ||||
| 		List<BgtProjectRecruitApplyVO> bgtProjectRecruitApplyVOS = appQueryList(dto); | ||||
| 		List<BgtProjectRecruitApplyVO> bgtProjectRecruitApplyVOS = appAllList(dto); | ||||
|  | ||||
| 		if (CollectionUtil.isNotEmpty(bgtProjectRecruitApplyVOS)) { | ||||
| 			//发消息 | ||||
| @ -560,9 +581,9 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl<BgtProjec | ||||
|  | ||||
|  | ||||
| 	@Override | ||||
| 	public BgtProjectRecruitApply getOne(Long recruitId, Long userId) { | ||||
| 		List<BgtProjectRecruitApply> list = baseMapper.selectList(Wrappers.<BgtProjectRecruitApply>lambdaQuery().eq(BgtProjectRecruitApply::getRecruitId, recruitId) | ||||
| 	public BgtProjectRecruitApply getOne(Long taskId, Long userId) { | ||||
| 		List<BgtProjectRecruitApply> list = baseMapper.selectList(Wrappers.<BgtProjectRecruitApply>lambdaQuery().eq(BgtProjectRecruitApply::getTaskId, taskId) | ||||
| 			.eq(BgtProjectRecruitApply::getUserId, userId)); | ||||
| 		return list.get(0); | ||||
| 		return CollectionUtil.isNotEmpty(list)?list.get(0):new BgtProjectRecruitApply(); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @ -7,7 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
| import com.ruoyi.bgt.bo.BgtProjectRecruitQueryBo; | ||||
| import com.ruoyi.bgt.domain.BgtProjectRecruit; | ||||
| import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; | ||||
| import com.ruoyi.bgt.domain.BgtProjectRecruitApply; | ||||
| import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyUserDTO; | ||||
| import com.ruoyi.bgt.domain.dto.BgtProjectRecruitQueryDTO; | ||||
| import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; | ||||
| import com.ruoyi.bgt.domain.vo.BgtProjectRecruitDetailVO; | ||||
| @ -139,14 +140,23 @@ public class BgtProjectRecruitServiceImpl extends ServicePlusImpl<BgtProjectRecr | ||||
| 		queryDTOPage.setSize(dto.getPageSize()); | ||||
| 		Page<BgtProjectRecruitVO> queryVOPage = baseMapper.appQueryPageList(queryDTOPage, dto); | ||||
| 		for(BgtProjectRecruitVO vo : queryVOPage.getRecords()) { | ||||
| 			BgtProjectRecruitApplyQueryDTO bgtProjectRecruitApplyQueryDTO = new BgtProjectRecruitApplyQueryDTO(); | ||||
| 			bgtProjectRecruitApplyQueryDTO.setRecruitIds(Collections.singletonList(vo.getId())); | ||||
| 			bgtProjectRecruitApplyQueryDTO.setStatus(applyStatus); | ||||
| 			vo.setApplyList(bgtProjectRecruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO)); | ||||
| 			BgtProjectRecruitApplyUserDTO userDTO = new BgtProjectRecruitApplyUserDTO(); | ||||
| 			userDTO.setPageNum(1); | ||||
| 			userDTO.setPageSize(3); | ||||
| 			userDTO.setRecruitId(vo.getId()); | ||||
|  | ||||
| 			TableDataInfo<BgtProjectRecruitApplyVO> page = bgtProjectRecruitApplyService.recruitApplyList(userDTO); | ||||
| 			vo.setApplyList(page.getRows()); | ||||
| 		} | ||||
| 		return PageUtils.buildDataInfo(queryVOPage); | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public List<BgtProjectRecruit> appQueryList() { | ||||
| 		return list(Wrappers.<BgtProjectRecruit>lambdaQuery() | ||||
| 			.eq(BgtProjectRecruit::getUserId, SecurityUtils.getAppUserId())); | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public BgtProjectRecruitDetailVO appQueryById(Long id) { | ||||
| 		BgtProjectRecruit recruit = getById(id); | ||||
| @ -157,19 +167,19 @@ public class BgtProjectRecruitServiceImpl extends ServicePlusImpl<BgtProjectRecr | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public BgtProjectRecruitDetailWgzListVO wgzList(Long id) { | ||||
| 	public BgtProjectRecruitDetailWgzListVO wgzCount(Long id) { | ||||
| 		BgtProjectRecruitDetailWgzListVO vo = new BgtProjectRecruitDetailWgzListVO(); | ||||
| 		vo.setId(id); | ||||
| 		BgtProjectRecruitApplyQueryDTO bgtProjectRecruitApplyQueryDTO = new BgtProjectRecruitApplyQueryDTO(); | ||||
| 		bgtProjectRecruitApplyQueryDTO.setRecruitIds(Collections.singletonList(id)); | ||||
| 		bgtProjectRecruitApplyQueryDTO.setStatus(applyStatus); | ||||
| 		List<BgtProjectRecruitApplyVO> bgtProjectRecruitApplyVOS = bgtProjectRecruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO); | ||||
| 		vo.setTotalNum(bgtProjectRecruitApplyVOS.size()); | ||||
|  | ||||
| 		int count = (int)bgtProjectRecruitApplyVOS.stream().filter(apply -> apply.getStatus().equals(RecruitApplyStatus.BGT_PASS.getCode())).count(); | ||||
| 		vo.setPassNum(count); | ||||
| 		vo.setNotSelectNum(vo.getTotalNum()-vo.getPassNum()); | ||||
| 		vo.setApplyList(bgtProjectRecruitApplyVOS.subList(0, Math.min(vo.getTotalNum(), 3))); | ||||
| 		LambdaQueryWrapper<BgtProjectRecruitApply> wrapper = new LambdaQueryWrapper<>(); | ||||
| 		wrapper.eq(BgtProjectRecruitApply::getRecruitId, id); | ||||
| 		wrapper.orderByDesc(BgtProjectRecruitApply::getCreateTime); | ||||
| 		List<BgtProjectRecruitApply> list = bgtProjectRecruitApplyService.list(wrapper); | ||||
| 		List<BgtProjectRecruitApplyVO> bgtProjectRecruitApplyVOS = BeanUtil.copyToList(list, BgtProjectRecruitApplyVO.class); | ||||
|  | ||||
| 		int count = (int)bgtProjectRecruitApplyVOS.stream().filter(apply -> apply.getStatus().equals(RecruitApplyStatus.SIGN_UP.getCode())).count(); | ||||
| 		vo.setTotalNum(bgtProjectRecruitApplyVOS.size()); | ||||
| 		vo.setNotSelectNum(count); | ||||
| 		vo.setPassNum(vo.getTotalNum()-count); | ||||
| 		return vo; | ||||
| 	} | ||||
|  | ||||
|  | ||||
| @ -1,6 +1,9 @@ | ||||
| package com.ruoyi.fbs.service; | ||||
|  | ||||
|  | ||||
| import com.ruoyi.bgt.domain.dto.BgtProjectTaskUserDTO; | ||||
| import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; | ||||
| import com.ruoyi.bgt.domain.vo.BgtProjectTaskUseCountVO; | ||||
| import com.ruoyi.common.core.mybatisplus.core.IServicePlus; | ||||
| import com.ruoyi.common.core.page.TableDataInfo; | ||||
| import com.ruoyi.fbs.bo.FbsProjectTaskQueryBo; | ||||
| @ -92,6 +95,16 @@ public interface IFbsProjectTaskService extends IServicePlus<FbsProjectTask> { | ||||
| 	 */ | ||||
| 	AppTaskDetailRecruitVO recruit(Long id); | ||||
|  | ||||
| 	/** | ||||
| 	 * 任务详情-务工人员分页 | ||||
| 	 */ | ||||
| 	TableDataInfo<BgtProjectRecruitApplyVO> taskUserList(BgtProjectTaskUserDTO dto); | ||||
|  | ||||
| 	/** | ||||
| 	 * 任务详情-务工人员统计 | ||||
| 	 */ | ||||
| 	BgtProjectTaskUseCountVO taskUserCount(Long id); | ||||
|  | ||||
| 	/** | ||||
| 	 * 查询所有在进行中的任务 | ||||
| 	 */ | ||||
|  | ||||
| @ -6,15 +6,14 @@ 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.bo.BgtProjectRecruitQueryBo; | ||||
| import com.ruoyi.bgt.domain.BgtProjectRecruit; | ||||
| import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; | ||||
| import com.ruoyi.bgt.domain.BgtProjectRecruitApply; | ||||
| import com.ruoyi.bgt.domain.dto.BgtProjectTaskUserDTO; | ||||
| import com.ruoyi.bgt.domain.dto.BgtWageApplicationQueryDTO; | ||||
| import com.ruoyi.bgt.domain.vo.BgtDayAttendanceCountVO; | ||||
| import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; | ||||
| import com.ruoyi.bgt.domain.vo.BgtProjectTaskUseCountVO; | ||||
| import com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO; | ||||
| import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; | ||||
| import com.ruoyi.bgt.service.IBgtProjectRecruitService; | ||||
| import com.ruoyi.bgt.service.IBgtProjectTaskProgressService; | ||||
| import com.ruoyi.bgt.service.IBgtWageApplicationService; | ||||
| import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; | ||||
| @ -43,10 +42,8 @@ import java.math.BigDecimal; | ||||
| import java.math.RoundingMode; | ||||
| import java.time.LocalDate; | ||||
| import java.util.Collection; | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.stream.Collectors; | ||||
|  | ||||
| /** | ||||
|  * 分包商项目任务Service业务层处理 | ||||
| @ -59,8 +56,7 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap | ||||
|  | ||||
| 	@Autowired | ||||
| 	private IZbfProjectService zbfProjectService; | ||||
| 	@Autowired | ||||
| 	private IBgtProjectRecruitService recruitService; | ||||
|  | ||||
| 	@Autowired | ||||
| 	private IBgtProjectRecruitApplyService recruitApplyService; | ||||
| 	@Autowired | ||||
| @ -261,20 +257,34 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap | ||||
| 	public AppTaskDetailRecruitVO recruit(Long id) { | ||||
| 		AppTaskDetailRecruitVO appTaskDetailVO = new AppTaskDetailRecruitVO(); | ||||
| 		appTaskDetailVO.setId(id); | ||||
| 		//务工者数量列表 | ||||
| 		BgtProjectRecruitQueryBo bgtProjectRecruitQueryBo = new BgtProjectRecruitQueryBo(); | ||||
| 		bgtProjectRecruitQueryBo.setTaskId(id); | ||||
| 		List<Long> recruitIds = recruitService.queryList(bgtProjectRecruitQueryBo).stream().map(BgtProjectRecruit::getId).collect(Collectors.toList()); | ||||
|  | ||||
| 		BgtProjectRecruitApplyQueryDTO bgtProjectRecruitApplyQueryDTO = new BgtProjectRecruitApplyQueryDTO(); | ||||
| 		bgtProjectRecruitApplyQueryDTO.setRecruitIds(recruitIds); | ||||
| 		bgtProjectRecruitApplyQueryDTO.setStatus(Collections.singletonList(RecruitApplyStatus.WORKING.getCode())); | ||||
| 		List<BgtProjectRecruitApplyVO> vos = recruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO); | ||||
| 		appTaskDetailVO.setTotal(vos.size()); | ||||
| 		appTaskDetailVO.setApplyList(vos.subList(0, Math.min(vos.size(), 3))); | ||||
| 		BgtProjectTaskUserDTO dto = new BgtProjectTaskUserDTO(); | ||||
| 		dto.setPageNum(1); | ||||
| 		dto.setPageSize(3); | ||||
| 		dto.setTaskId(id); | ||||
| 		TableDataInfo<BgtProjectRecruitApplyVO> page = recruitApplyService.taskUserList(dto); | ||||
| 		appTaskDetailVO.setTotal((int)page.getTotal()); | ||||
| 		appTaskDetailVO.setApplyList(page.getRows()); | ||||
| 		return appTaskDetailVO; | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public TableDataInfo<BgtProjectRecruitApplyVO> taskUserList(BgtProjectTaskUserDTO dto) { | ||||
| 		return recruitApplyService.taskUserList(dto); | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public BgtProjectTaskUseCountVO taskUserCount(Long id) { | ||||
|  | ||||
| 		LambdaQueryWrapper<BgtProjectRecruitApply> wrapper = new LambdaQueryWrapper<>(); | ||||
| 		wrapper.eq(BgtProjectRecruitApply::getTaskId, id); | ||||
| 		wrapper.in(BgtProjectRecruitApply::getStatus, RecruitApplyStatus.getTaskStatus()); | ||||
| 		List<BgtProjectRecruitApply> list = recruitApplyService.list(wrapper); | ||||
| 		long wgzPassNum = list.stream().filter(apply -> apply.getStatus().equals(RecruitApplyStatus.WGZ_PASS.getCode())).count(); | ||||
| 		long outWorkNum = list.stream().filter(apply -> apply.getStatus().equals(RecruitApplyStatus.OUT_WORK.getCode())).count(); | ||||
| 		long workingNum = list.stream().filter(apply -> apply.getStatus().equals(RecruitApplyStatus.WORKING.getCode())).count(); | ||||
| 		return new BgtProjectTaskUseCountVO(wgzPassNum,workingNum,outWorkNum); | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public List<FbsProjectTask> findOngoingTask() { | ||||
|  | ||||
| @ -96,7 +96,7 @@ public class BusinessTask | ||||
| 	{ | ||||
| 		Console.log("开始招工进场任务"); | ||||
| 		recruitApplyService.lambdaUpdate() | ||||
| 			.eq(BgtProjectRecruitApply::getEntryTime, LocalDate.now()) | ||||
| 			.le(BgtProjectRecruitApply::getEntryTime, LocalDate.now()) | ||||
| 			.eq(BgtProjectRecruitApply::getStatus,RecruitApplyStatus.WGZ_PASS.getCode()) | ||||
| 			.set(BgtProjectRecruitApply::getStatus,RecruitApplyStatus.BGT_REFUSE.getCode()) | ||||
| 			.update(); | ||||
|  | ||||
| @ -3,7 +3,7 @@ package com.ruoyi.wgz.service; | ||||
| import com.ruoyi.bgt.domain.dto.BgtAttendanceDTO; | ||||
| import com.ruoyi.bgt.domain.dto.BgtAttendanceDetailDTO; | ||||
| import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO; | ||||
| import com.ruoyi.bgt.domain.vo.BgtAttendanceDetailVO; | ||||
| import com.ruoyi.bgt.domain.vo.BgtAttendancePersonCountVO; | ||||
| import com.ruoyi.bgt.domain.vo.BgtAttendanceVO; | ||||
| import com.ruoyi.bgt.domain.vo.BgtDayAttendanceCountVO; | ||||
| import com.ruoyi.common.core.mybatisplus.core.IServicePlus; | ||||
| @ -121,9 +121,9 @@ public interface IWgzAttendanceService extends IServicePlus<WgzAttendance> { | ||||
| 	/** | ||||
| 	 * 总体考勤情况-统计 | ||||
| 	 */ | ||||
| 	BgtAttendanceVO attendanceDetail(BgtAttendanceDTO dto); | ||||
| 	BgtAttendanceVO allCount(BgtAttendanceDTO dto); | ||||
|  | ||||
| 	List<BgtDayAttendanceCountVO> attendanceList(BgtAttendanceDTO dto); | ||||
| 	List<BgtDayAttendanceCountVO> histogram(BgtAttendanceDTO dto); | ||||
|  | ||||
| 	/** | ||||
| 	 * 考勤详情,查询指定用户指定项目的指定天数考勤情况统计(如若用户输入20,但实际只有2天出勤); | ||||
| @ -132,9 +132,9 @@ public interface IWgzAttendanceService extends IServicePlus<WgzAttendance> { | ||||
| 	Integer attendanceDetail(Long userId,Long recruitId, Integer num); | ||||
|  | ||||
| 	/** | ||||
| 	 * 考勤统计详情 | ||||
| 	 * 务工者个人考勤统计 | ||||
| 	 */ | ||||
| 	BgtAttendanceDetailVO bgtAttendanceDetail(BgtAttendanceDetailDTO dto); | ||||
| 	BgtAttendancePersonCountVO personCount(BgtAttendanceDetailDTO dto); | ||||
|  | ||||
| 	/** | ||||
| 	 * 添加缺卡记录 | ||||
|  | ||||
| @ -31,7 +31,6 @@ 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.WgzUser; | ||||
| import com.ruoyi.wgz.mapper.WgzAttendanceMapper; | ||||
| import com.ruoyi.wgz.service.IWgzAttendanceService; | ||||
| import com.ruoyi.wgz.service.IWgzLeaveService; | ||||
| @ -416,9 +415,7 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl<WgzAttendanceMappe | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public BgtAttendanceVO attendanceDetail(BgtAttendanceDTO dto) { | ||||
|  | ||||
|  | ||||
| 	public BgtAttendanceVO allCount(BgtAttendanceDTO dto) { | ||||
|  | ||||
| 		BgtAttendanceVO bgtAttendanceVO = new BgtAttendanceVO(); | ||||
| 		FbsProjectTask task = taskService.getById(dto.getTaskId()); | ||||
| @ -467,7 +464,7 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl<WgzAttendanceMappe | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public List<BgtDayAttendanceCountVO> attendanceList(BgtAttendanceDTO dto) { | ||||
| 	public List<BgtDayAttendanceCountVO> histogram(BgtAttendanceDTO dto) { | ||||
| 		FbsProjectTask task = taskService.getById(dto.getTaskId()); | ||||
| 		validTaskTime(task, dto.getDate()); | ||||
|  | ||||
| @ -604,103 +601,100 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl<WgzAttendanceMappe | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public BgtAttendanceDetailVO bgtAttendanceDetail(BgtAttendanceDetailDTO dto) { | ||||
| 		BgtAttendanceDetailVO bgtAttendanceDetailVO = new BgtAttendanceDetailVO(); | ||||
|  | ||||
| 		WgzUser wgzUser = wgzUserService.findByUserId(dto.getUserId()); | ||||
| 		bgtAttendanceDetailVO.setUserId(wgzUser.getUserId()); | ||||
| 		bgtAttendanceDetailVO.setUsername(wgzUser.getUsername()); | ||||
| 		bgtAttendanceDetailVO.setAvatarName(wgzUser.getAvatarName()); | ||||
| 	public BgtAttendancePersonCountVO personCount(BgtAttendanceDetailDTO dto) { | ||||
| 		BgtAttendancePersonCountVO bgtAttendanceDetailVO = new BgtAttendancePersonCountVO(); | ||||
|  | ||||
| 		//获取任务下的所有招工 | ||||
| 		List<BgtProjectRecruit> bgtProjectRecruits = iBgtProjectRecruitService.getBaseMapper().selectList(Wrappers.<BgtProjectRecruit>lambdaQuery() | ||||
| 			.eq(BgtProjectRecruit::getTaskId, dto.getTaskId())); | ||||
| 		List<Long> recruitIds = bgtProjectRecruits.stream().map(BgtProjectRecruit::getId).collect(Collectors.toList()); | ||||
|  | ||||
| 		BgtProjectRecruitApply recruitApply = iBgtProjectRecruitApplyService.getOne(recruitIds.get(0),wgzUser.getUserId()); | ||||
| 		bgtAttendanceDetailVO.setEntryTime(recruitApply.getEntryTime()); | ||||
| 		bgtAttendanceDetailVO.setStatus(recruitApply.getStatus()); | ||||
|  | ||||
| 		//查询该务工者在这个项目里指定月份的所有考勤数据 | ||||
| 		LambdaQueryWrapper<WgzAttendance> wrapper = new LambdaQueryWrapper<>(); | ||||
| 		wrapper.eq(WgzAttendance::getUserId, dto.getUserId()); | ||||
|  | ||||
| 		wrapper.in(WgzAttendance::getRecruitId, recruitIds); | ||||
| 		LocalDate date = dto.getDate(); | ||||
| 		LocalDate startDate = date.with(TemporalAdjusters.firstDayOfMonth()); | ||||
| 		LocalDate endData = date.with(TemporalAdjusters.lastDayOfMonth()); | ||||
| 		wrapper.between(WgzAttendance::getDate, startDate, endData); | ||||
| 		List<WgzAttendance> wgzAttendances = baseMapper.selectList(wrapper); | ||||
| 		// 创建SimpleDateFormat对象,格式化日期为中文星期 | ||||
| 		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE", Locale.CHINA); | ||||
|  | ||||
| 		//获取招工打卡时间 | ||||
| 		List<BgtProjectRecruit> list = iBgtProjectRecruitService.list(Wrappers.<BgtProjectRecruit>lambdaQuery().in(BgtProjectRecruit::getId,recruitIds)); | ||||
| 		Map<Long, BgtProjectRecruit> recruitMap = list.stream().collect(Collectors.toMap(BgtProjectRecruit::getId, recruit -> recruit)); | ||||
|  | ||||
| 		// 创建SimpleDateFormat对象,格式化日期为中文星期 | ||||
| 		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE", Locale.CHINA); | ||||
|  | ||||
| 		//考勤数据分类 | ||||
| 		List<WgzAttendanceRecordVO> lateRecords = new ArrayList<>(); | ||||
| 		List<WgzAttendanceRecordVO> earlyLeaveRecords = new ArrayList<>(); | ||||
| 		List<WgzAttendanceRecordVO> missRecords = new ArrayList<>(); | ||||
| 		List<WgzAttendanceRecordVO> records = new ArrayList<>(); | ||||
|  | ||||
|  | ||||
| 		for (WgzAttendance wgzAttendance : wgzAttendances) { | ||||
|  | ||||
| 			//上下班时间 | ||||
| 			BgtProjectRecruit recruit = recruitMap.get(wgzAttendance.getRecruitId()); | ||||
| 			LocalTime beginWorkTime = recruit.getBeginWorkTime(); | ||||
| 			LocalTime endWorkTime = recruit.getEndWorkTime(); | ||||
| 			//上下班打卡时间 | ||||
| 			LocalDateTime clockInTime = wgzAttendance.getClockInTime(); | ||||
| 			LocalDateTime clockOutTime = wgzAttendance.getClockOutTime(); | ||||
|  | ||||
| 			WgzAttendanceRecordVO recordVO = new WgzAttendanceRecordVO(); | ||||
| 			recordVO.setDate(wgzAttendance.getDate()); | ||||
| 			recordVO.setWeek(wgzAttendance.getDate().format(formatter)); | ||||
| 			if (wgzAttendance.getMissedIn() == 0 && wgzAttendance.getMissedOut() == 0) { | ||||
| 			//统计出勤天数 | ||||
| 			if (clockInTime != null && clockOutTime != null) { | ||||
| 				recordVO.setDay(1D); | ||||
| 				records.add(recordVO); | ||||
| 			} else if (wgzAttendance.getMissedIn() == 1 && wgzAttendance.getMissedOut() == 1) { | ||||
| 			} else if (clockInTime == null && clockOutTime == null) { | ||||
| 				recordVO.setDay(0D); | ||||
| 			} else { | ||||
| 				recordVO.setDay(0.5D); | ||||
| 				records.add(recordVO); | ||||
| 			} | ||||
| 			BgtProjectRecruit recruit = recruitMap.get(wgzAttendance.getRecruitId()); | ||||
| 			LocalDateTime clockInTime = wgzAttendance.getClockInTime(); | ||||
| 			LocalDateTime clockOutTime = wgzAttendance.getClockOutTime(); | ||||
| 			LocalTime beginWorkTime = recruit.getBeginWorkTime(); | ||||
| 			LocalTime endWorkTime = recruit.getEndWorkTime(); | ||||
| 			//统计迟到天数 | ||||
| 			if (wgzAttendance.getLate() == 1) { | ||||
| 				WgzAttendanceRecordVO LateRecordVO = BeanUtil.copyProperties(recordVO, WgzAttendanceRecordVO.class); | ||||
| 				LateRecordVO.setTime(clockInTime.toLocalTime()); | ||||
| 				LateRecordVO.setMinutes(DataUtil.getMinutes(clockInTime, beginWorkTime)); | ||||
| 				lateRecords.add(LateRecordVO); | ||||
| 			} | ||||
| 			//统计早退天数 | ||||
| 			if (wgzAttendance.getEarlyLeave() == 1) { | ||||
| 				WgzAttendanceRecordVO earlyLeaveRecordVO = BeanUtil.copyProperties(recordVO, WgzAttendanceRecordVO.class); | ||||
| 				earlyLeaveRecordVO.setTime(clockOutTime.toLocalTime()); | ||||
| 				earlyLeaveRecordVO.setMinutes(DataUtil.getMinutes(clockOutTime, endWorkTime)); | ||||
| 				earlyLeaveRecords.add(earlyLeaveRecordVO); | ||||
| 			} | ||||
|  | ||||
| 			//统计缺卡天数 | ||||
| 			if (wgzAttendance.getMissedIn() == 1) { | ||||
| 				WgzAttendanceRecordVO missRecordVO = BeanUtil.copyProperties(recordVO, WgzAttendanceRecordVO.class); | ||||
| 				missRecordVO.setTime(beginWorkTime); | ||||
| 				missRecords.add(missRecordVO); | ||||
| 			} | ||||
|  | ||||
| 			if (wgzAttendance.getMissedOut() == 1) { | ||||
| 				WgzAttendanceRecordVO missRecordVO = BeanUtil.copyProperties(recordVO, WgzAttendanceRecordVO.class); | ||||
| 				missRecordVO.setTime(endWorkTime); | ||||
| 				missRecords.add(missRecordVO); | ||||
| 			} | ||||
| 		} | ||||
| 		//出勤数据 | ||||
| 		bgtAttendanceDetailVO.setDayNum(records.stream().mapToDouble(WgzAttendanceRecordVO::getDay).sum()); | ||||
|  | ||||
| 		//迟到数据 | ||||
| 		bgtAttendanceDetailVO.setLateNum(lateRecords.size()); | ||||
| 		bgtAttendanceDetailVO.setLateMinute(lateRecords.stream().mapToInt(WgzAttendanceRecordVO::getMinutes).sum()); | ||||
| 		bgtAttendanceDetailVO.setLateRecords(lateRecords); | ||||
|  | ||||
| 		//早退数据 | ||||
| 		bgtAttendanceDetailVO.setEarlyLeaveNum(earlyLeaveRecords.size()); | ||||
| 		bgtAttendanceDetailVO.setEarlyLeaveMinute(earlyLeaveRecords.stream().mapToInt(WgzAttendanceRecordVO::getMinutes).sum()); | ||||
| 		bgtAttendanceDetailVO.setEarlyLeaveRecords(earlyLeaveRecords); | ||||
|  | ||||
| 		//缺卡数据 | ||||
| 		bgtAttendanceDetailVO.setMissNum(missRecords.size()); | ||||
| 		bgtAttendanceDetailVO.setMissRecords(missRecords); | ||||
| 		return bgtAttendanceDetailVO; | ||||
|  | ||||
|  | ||||
| 	} | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -251,12 +251,18 @@ public class WgzReissueacardServiceImpl extends ServicePlusImpl<WgzReissueacardM | ||||
| 			attendance.setExceptionType(exceptionType); | ||||
| 			attendance.setLate(1); | ||||
| 			attendance.setMissedIn(1); | ||||
| 		} else { | ||||
| 			if(attendance.getClockInTime() == null){ | ||||
| 				attendance.setClockInTime(byId.getNowTime()); | ||||
| 			} | ||||
| 		} else { //下班补卡 | ||||
| 			exceptionType = exceptionType.replace("\\b2\\b", "6"); | ||||
| 			exceptionType = exceptionType.replace("\\b4\\b", "6"); | ||||
| 			attendance.setExceptionType(exceptionType); | ||||
| 			attendance.setEarlyLeave(1); | ||||
| 			attendance.setMissedOut(1); | ||||
| 			if(attendance.getClockOutTime() == null){ | ||||
| 				attendance.setClockOutTime(byId.getNowTime()); | ||||
| 			} | ||||
| 		} | ||||
| 		iWgzAttendanceService.updateById(attendance); | ||||
|  | ||||
|  | ||||
| @ -160,4 +160,78 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | ||||
|         </where> | ||||
|     </select> | ||||
|  | ||||
|  | ||||
|     <select id="recruitApplyList" resultType="com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO"> | ||||
|         select  bpra.id, | ||||
|         bpra.entry_time, | ||||
|         bpra.leave_time, | ||||
|         bpra.recruit_id, | ||||
|         wu.user_id, | ||||
|         wu.phone, | ||||
|         wu.score, | ||||
|         wu.avatar_name, | ||||
|         wu.username, | ||||
|         bpra.status, | ||||
|         wu.type_of_work, | ||||
|         bpr.recruit_name, | ||||
|         fpt.task_name, | ||||
|         bpr.task_id | ||||
|         from bgt_project_recruit_apply bpra | ||||
|         left join wgz_user wu on bpra.user_id = wu.user_id | ||||
|         left join bgt_project_recruit bpr on bpr.id = bpra.recruit_id | ||||
|         left join fbs_project_task fpt on fpt.id = bpr.task_id | ||||
|         <where> | ||||
|             <if test="dto.username !=null and dto.username !='' "> | ||||
|                 and wu.username like concat('%', #{dto.username}, '%') | ||||
|             </if> | ||||
|             <if test="dto.recruitId != null"> | ||||
|                 and bpra.recruit_id = #{dto.recruitId} | ||||
|             </if> | ||||
|             <if test="dto.status != null and dto.status == 0"> | ||||
|                 AND bpra.status = '0' | ||||
|             </if> | ||||
|             <if test="dto.status != null and dto.status == 1"> | ||||
|                 AND bpra.status != '0' | ||||
|             </if> | ||||
|         </where> | ||||
|         order by  bpra.create_time desc | ||||
|     </select> | ||||
|  | ||||
|  | ||||
|     <select id="taskUserList" resultType="com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO"> | ||||
|         select  bpra.id, | ||||
|         bpra.entry_time, | ||||
|         bpra.leave_time, | ||||
|         bpra.recruit_id, | ||||
|         wu.user_id, | ||||
|         wu.phone, | ||||
|         wu.score, | ||||
|         wu.avatar_name, | ||||
|         wu.username, | ||||
|         bpra.status, | ||||
|         wu.type_of_work, | ||||
|         bpr.recruit_name, | ||||
|         fpt.task_name, | ||||
|         bpr.task_id | ||||
|         from bgt_project_recruit_apply bpra | ||||
|         left join wgz_user wu on bpra.user_id = wu.user_id | ||||
|         left join bgt_project_recruit bpr on bpr.id = bpra.recruit_id | ||||
|         left join fbs_project_task fpt on fpt.id = bpr.task_id | ||||
|         <where> | ||||
|             <if test="dto.username !=null and dto.username !='' "> | ||||
|                 and wu.username like concat('%', #{dto.username}, '%') | ||||
|             </if> | ||||
|             <if test="dto.taskId != null"> | ||||
|                 and bpra.task_id = #{dto.taskId} | ||||
|             </if> | ||||
|             <if test="dto.status != null"> | ||||
|                 AND bpra.status = #{dto.status} | ||||
|             </if> | ||||
|             <if test="dto.status != null"> | ||||
|                 AND bpra.status in ('3','5','6') | ||||
|             </if> | ||||
|         </where> | ||||
|         order by  bpra.create_time desc | ||||
|     </select> | ||||
|  | ||||
| </mapper> | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 zt
					zt