diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtMessageController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtMessageController.java index 881ea3c..c239c40 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtMessageController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtMessageController.java @@ -67,6 +67,15 @@ public class AppBgtMessageController extends BaseController { return AjaxResult.success(iBgtMessageService.updateById(bgtMessage)); } + @ApiOperation("已操作") + @PutMapping("/operation/{id}") + public AjaxResult operation(@PathVariable(value = "id") Long id) { + BgtMessage bgtMessage = new BgtMessage(); + bgtMessage.setId(id); + bgtMessage.setIsOperation("2"); + return AjaxResult.success(iBgtMessageService.updateById(bgtMessage)); + } + @ApiOperation("App务工者消息个人详情") @GetMapping("/userInfo") public AjaxResult wgzMessageInformation(Long userId, Long recruitApplyId) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtReissueacardController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtReissueacardController.java index aaccee1..c1fea6c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtReissueacardController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtReissueacardController.java @@ -1,7 +1,8 @@ package com.ruoyi.web.controller.bgt; -import com.ruoyi.bgt.domain.dto.BgtReissueacardListDTO; +import com.ruoyi.bgt.domain.dto.BgtAuditListDTO; import com.ruoyi.bgt.domain.dto.BgtReissueacardUpdateDTO; +import com.ruoyi.bgt.domain.vo.BgtAuditResultVO; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; @@ -9,7 +10,7 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.wgz.bo.res.WgzAppUserReplacementCardRecordDetailsRes; -import com.ruoyi.wgz.bo.res.WgzReplacementCardRecordRes; +import com.ruoyi.wgz.service.IWgzLeaveService; import com.ruoyi.wgz.service.IWgzReissueacardService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,13 +37,21 @@ public class AppBgtReissueacardController extends BaseController { private final IWgzReissueacardService iWgzReissueacardService; + private final IWgzLeaveService iWgzLeaveService; + /** * 查询补卡申请列表 */ - @ApiOperation("查询补卡申请列表") + @ApiOperation("查询审批申请列表") @GetMapping("/list") - public TableDataInfo list(@Validated BgtReissueacardListDTO dto) { - return iWgzReissueacardService.appQueryPageList(dto); + public TableDataInfo list(@Validated BgtAuditListDTO dto) { + TableDataInfo result = new TableDataInfo<>(); + if(dto.getDataType().equals("1")){ + result = iWgzReissueacardService.appQueryPageList(dto); + } else if (dto.getDataType().equals("2")) { + result = iWgzLeaveService.bgtLeaveAudit(dto); + } + return result; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/TemplateDownloadController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/TemplateDownloadController.java new file mode 100644 index 0000000..b61ab9b --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/TemplateDownloadController.java @@ -0,0 +1,192 @@ +package com.ruoyi.web.controller.common; + +import com.ruoyi.bgt.domain.BgtProjectRecruit; +import com.ruoyi.bgt.domain.dto.BgtUploadDTO; +import com.ruoyi.bgt.service.IBgtProjectRecruitService; +import com.ruoyi.wgz.domain.WgzUser; +import com.ruoyi.wgz.service.IWgzUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.FileSystemResource; +import org.springframework.core.io.Resource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +/** + * 登录验证 + * + * @author ruoyi + */ +@Api(value = "网页模板下载", tags = {"网页模板下载"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RestController +public class TemplateDownloadController { + + @Autowired + private IWgzUserService wgzUserService; + + @Autowired + private IBgtProjectRecruitService recruitService; + + private static final String TEMP_DIR = "ruoyi/uploadPath/temporary"; + + @ApiOperation("下载模板") + @PostMapping("/download-folders") + public ResponseEntity downloadFolders(@RequestBody BgtUploadDTO dto) { + + BgtProjectRecruit recruit = recruitService.queryById(dto.getRecruitId()); + String firstLevelFolderName = recruit.getId() + "_" + recruit.getRecruitName(); + File baseDir = new File(TEMP_DIR); + File folderToZip = new File(baseDir, firstLevelFolderName); + File zipFile = new File(baseDir, folderToZip.getName() + ".zip"); + + // 在生成文件夹和压缩文件之前,检查并删除已存在的文件夹和压缩文件 + if (folderToZip.exists()) { + deleteFolder(folderToZip); + } + if (zipFile.exists()) { + if (!zipFile.delete()) { + System.err.println("无法删除已存在的压缩文件: " + zipFile.getAbsolutePath()); + } + } + generateFolders(dto); + try { + zipFolder(folderToZip, zipFile); + System.out.println("文件夹已压缩为: " + zipFile.getName()); + + Resource resource = new FileSystemResource(zipFile); + HttpHeaders headers = new HttpHeaders(); + headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + zipFile.getName()); + + ResponseEntity response = ResponseEntity.ok() + .headers(headers) + .contentLength(zipFile.length()) + .contentType(MediaType.APPLICATION_OCTET_STREAM) + .body(resource); + + return response; + } catch (IOException e) { + e.printStackTrace(); + return ResponseEntity.status(500).body(null); + } + } + + public void generateFolders(BgtUploadDTO dto) { + List userIds = dto.getUserIds(); + + // 获取招工名 + BgtProjectRecruit recruit = recruitService.queryById(dto.getRecruitId()); + // 第一层文件夹名 + String firstLevelFolderName = recruit.getId() + "_" + recruit.getRecruitName(); + File baseDir = new File(TEMP_DIR); + if (!baseDir.exists()) { + if (!baseDir.mkdirs()) { + System.err.println("无法创建基础目录: " + TEMP_DIR); + return; + } + } + File firstLevelFolder = new File(baseDir, firstLevelFolderName); + if (!firstLevelFolder.exists()) { + if (firstLevelFolder.mkdirs()) { + System.out.println("创建第一层文件夹: " + firstLevelFolderName); + } else { + System.err.println("无法创建第一层文件夹: " + firstLevelFolderName); + return; + } + } + + // 遍历每个用户 ID + for (Long userId : userIds) { + // 获取用户信息 + WgzUser wgzUser = wgzUserService.findByUserId(userId); + String userName = wgzUser.getUsername(); + String idCard = wgzUser.getIdentityCard(); + // 第二层文件夹名 + String secondLevelFolderName = userName + "_" + idCard; + File secondLevelFolder = new File(firstLevelFolder, secondLevelFolderName); + if (!secondLevelFolder.exists()) { + if (secondLevelFolder.mkdirs()) { + System.out.println("创建第二层文件夹: " + secondLevelFolderName); + } else { + System.err.println("无法创建第二层文件夹: " + secondLevelFolderName); + continue; + } + } + + // 创建第三层的两个固定文件夹 + String[] thirdLevelFolderNames = {"劳务合同", "保险"}; + for (String thirdLevelFolderName : thirdLevelFolderNames) { + File thirdLevelFolder = new File(secondLevelFolder, thirdLevelFolderName); + if (!thirdLevelFolder.exists()) { + if (thirdLevelFolder.mkdirs()) { + System.out.println("创建第三层文件夹: " + thirdLevelFolderName); + } else { + System.err.println("无法创建第三层文件夹: " + thirdLevelFolderName); + } + } + } + } + } + + public static void zipFolder(File folder, File zipFile) throws IOException { + try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile))) { + // 添加根文件夹 + zipOut.putNextEntry(new ZipEntry(folder.getName() + "/")); + zipOut.closeEntry(); + zipFilesInFolder(folder, folder.getName(), zipOut); + } + } + + private static void zipFilesInFolder(File folder, String parentPath, ZipOutputStream zipOut) throws IOException { + File[] files = folder.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isDirectory()) { + // 添加文件夹条目 + zipOut.putNextEntry(new ZipEntry(parentPath + "/" + file.getName() + "/")); + zipOut.closeEntry(); + zipFilesInFolder(file, parentPath + "/" + file.getName(), zipOut); + } else { + ZipEntry zipEntry = new ZipEntry(parentPath + "/" + file.getName()); + zipOut.putNextEntry(zipEntry); + try (FileInputStream fis = new FileInputStream(file)) { + byte[] bytes = new byte[1024]; + int length; + while ((length = fis.read(bytes)) >= 0) { + zipOut.write(bytes, 0, length); + } + } + zipOut.closeEntry(); + } + } + } + } + + private static void deleteFolder(File folder) { + if (folder.isDirectory()) { + File[] files = folder.listFiles(); + if (files != null) { + for (File file : files) { + deleteFolder(file); + } + } + } + if (!folder.delete()) { + System.err.println("无法删除文件夹: " + folder.getAbsolutePath()); + } + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtAttendanceDayDTO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtAttendanceDayDTO.java index ee33e73..a6c1158 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtAttendanceDayDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtAttendanceDayDTO.java @@ -10,6 +10,7 @@ import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotNull; import java.time.LocalDate; +import java.time.LocalTime; @Data @NoArgsConstructor @@ -34,4 +35,7 @@ public class BgtAttendanceDayDTO { @ApiModelProperty("任务ID") @NotNull(message = "任务ID不能为空") private Long taskId; + + @ApiModelProperty(value = "当前时间",hidden = true) + private LocalTime currentTime; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtReissueacardListDTO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtAuditListDTO.java similarity index 84% rename from ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtReissueacardListDTO.java rename to ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtAuditListDTO.java index ba70f8e..586bf78 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtReissueacardListDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtAuditListDTO.java @@ -14,8 +14,8 @@ import java.time.LocalDate; @Data @NoArgsConstructor @Accessors(chain = true) -@ApiModel("App包工头补卡记录查询对象") -public class BgtReissueacardListDTO { +@ApiModel("App包工头审批记录查询对象") +public class BgtAuditListDTO { /** 分页大小 */ @ApiModelProperty("分页大小") @@ -33,7 +33,10 @@ public class BgtReissueacardListDTO { @ApiModelProperty("时间") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd") - private LocalDate nowTime; + private LocalDate date; + + @ApiModelProperty("类型 1- 补卡 2- 请假") + private String dataType; @ApiModelProperty(value = "审核人Id",hidden = true) private Long auditorUserId; diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyConsentDTO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyConsentDTO.java index 55041aa..2d99294 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyConsentDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyConsentDTO.java @@ -6,7 +6,6 @@ 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; @@ -30,11 +29,9 @@ public class BgtProjectRecruitApplyConsentDTO{ private LocalDate entryTime; @ApiModelProperty("入场材料") - @Size(min = 1, message = "入场材料不能为空") List entryMaterials; @ApiModelProperty("保险") - @Size(min = 1, message = "保险不能为空") List insurances; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtUploadDTO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtUploadDTO.java new file mode 100644 index 0000000..e144ef1 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtUploadDTO.java @@ -0,0 +1,22 @@ +package com.ruoyi.bgt.domain.dto; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +@Data +@ApiModel("App包工头资料上传对象") +public class BgtUploadDTO { + + @ApiModelProperty("招工ID") + @NotNull(message = "招工ID不能为空") + private Long recruitId ; + + @ApiModelProperty("务工者Id") + @NotNull(message = "务工者Id不能为空") + private List userIds; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAttendancePersonCountVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAttendancePersonCountVO.java index 45b13f2..dd60429 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAttendancePersonCountVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAttendancePersonCountVO.java @@ -32,6 +32,9 @@ public class BgtAttendancePersonCountVO { @ApiModelProperty("早退分钟") private Integer earlyLeaveMinute = 0; + @ApiModelProperty("请假次数") + private Integer leaveNum = 0; + @ApiModelProperty("早退记录") private List earlyLeaveRecords; @@ -44,4 +47,7 @@ public class BgtAttendancePersonCountVO { @ApiModelProperty("考勤记录") private List records; + @ApiModelProperty("请假记录") + private List leaveRecords; + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAuditResultVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAuditResultVO.java new file mode 100644 index 0000000..c2642ad --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAuditResultVO.java @@ -0,0 +1,46 @@ +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.LocalDateTime; + + +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("包工头审批记录返回对象") +public class BgtAuditResultVO { + + @ApiModelProperty("主键ID") + private Long id; + + @ApiModelProperty("类型") + private String dataType; + + @ApiModelProperty("开始时间/补卡时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") + private LocalDateTime startTime; + + @ApiModelProperty("结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") + private LocalDateTime endTime; + + @ApiModelProperty("申请人姓名") + private String username; + + @ApiModelProperty("创建时间|申请时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") + private LocalDateTime createTime; + + @ApiModelProperty("补卡理由") + private String reason; + + @ApiModelProperty("审核状态(0待审核 1审核中 2已同意 3已拒绝)") + private String auditorType; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtMessageDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtMessageDetailVO.java index 96743a5..d85e79d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtMessageDetailVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtMessageDetailVO.java @@ -82,7 +82,9 @@ public class BgtMessageDetailVO implements Serializable { @ApiModelProperty("任务名称") private String taskName; - // @ApiModelProperty("今日完成工作") private String finishToday; + + @ApiModelProperty("是否需要操作(0不需要 1需要 2已操作)") + private String isOperation ; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/WgzAttendanceRecordVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/WgzAttendanceRecordVO.java index d22a30d..1ccbccd 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/WgzAttendanceRecordVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/WgzAttendanceRecordVO.java @@ -42,4 +42,5 @@ public class WgzAttendanceRecordVO implements Serializable { @ApiModelProperty("分钟") private Integer minutes; + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitApplyServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitApplyServiceImpl.java index 6137373..412b600 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitApplyServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitApplyServiceImpl.java @@ -17,11 +17,9 @@ import com.ruoyi.bgt.mapper.BgtProjectRecruitApplyMapper; import com.ruoyi.bgt.service.IBgtMessageService; import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; import com.ruoyi.bgt.service.IBgtProjectRecruitService; -import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.common.domain.dto.AnnexDTO; import com.ruoyi.common.enums.RecruitApplyStatus; import com.ruoyi.common.enums.RecruitStatus; import com.ruoyi.common.exception.BaseException; @@ -47,6 +45,7 @@ import org.springframework.transaction.annotation.Transactional; import java.text.DecimalFormat; import java.time.LocalDate; +import java.time.LocalTime; import java.time.temporal.TemporalAdjusters; import java.util.*; @@ -255,13 +254,13 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl mp = new HashMap<>(); mp.put("projectName", iBgtProjectRecruitService.getById(recruitApply.getRecruitId()).getRecruitName()); @@ -401,6 +400,11 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl queryDTOPage = new Page<>(); queryDTOPage.setCurrent(dto.getPageNum()); queryDTOPage.setSize(dto.getPageSize()); + + if(dto.getDate().equals(LocalDate.now())){ + dto.setCurrentTime(LocalTime.now()); + } + Page queryVOPage = baseMapper.todayAttendanceList(queryDTOPage, dto); return PageUtils.buildDataInfo(queryVOPage); } @@ -452,8 +456,6 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl mp = new HashMap<>(); mp.put("projectName", recruit.getRecruitName()); diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/FbsProjectTask.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/FbsProjectTask.java index 1561f34..6d56261 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/FbsProjectTask.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/FbsProjectTask.java @@ -95,6 +95,9 @@ public class FbsProjectTask implements Serializable { @ApiModelProperty("任务图片") private String taskImg; + @ApiModelProperty("任务附件") + private String taskAnnex; + /** 资质要求 */ @Excel(name = "资质要求") @ApiModelProperty("资质要求") diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailVO.java index 65be363..85c84f7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailVO.java @@ -72,6 +72,9 @@ public class AppTaskDetailVO { @ApiModelProperty("任务图片") private String taskImg; + @ApiModelProperty("任务附件") + private String taskAnnex; + /** 资质要求 */ @ApiModelProperty("资质要求") private String qualification; diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskServiceImpl.java index 4e3f1f9..3a5a640 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskServiceImpl.java @@ -214,8 +214,10 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl applyList = recruitApplyService.list(Wrappers.lambdaQuery() .in(BgtProjectRecruitApply::getRecruitId, recruitIds)); //筛选已离场的 + List outList = applyList.stream().filter(apply -> apply.getStatus().equals(RecruitApplyStatus.OUT_WORK.getCode())).collect(Collectors.toList()); + List addList = new ArrayList<>(); + for (BgtProjectRecruitApply bgtProjectRecruitApply : outList) { + WgzScoreRecord byUserIdAndRecruitApplyId = wgzScoreRecordService.getByUserIdAndRecruitApplyId(bgtProjectRecruitApply.getUserId(), bgtProjectRecruitApply.getId()); + if (byUserIdAndRecruitApplyId == null) { + WgzScoreRecord wgzScoreRecord = new WgzScoreRecord(); + wgzScoreRecord.setRecruitId(bgtProjectRecruitApply.getRecruitId()); + wgzScoreRecord.setRecruitApplyId(bgtProjectRecruitApply.getId()); + wgzScoreRecord.setScore(5D); + wgzScoreRecord.setContent("默认评分"); + wgzScoreRecord.setCreateBy("系统"); + wgzScoreRecord.setUpdateBy("系统"); + + addList.add(wgzScoreRecord); + } + + } + if(CollectionUtil.isNotEmpty(addList)){ + wgzScoreRecordService.saveBatch(addList); + } } - - -// -// iFbsProjectTaskService.lambdaUpdate().in(FbsProjectTask::getId,collect) -// .set(FbsProjectTask::getStatus, "3") -// .update(); -// iWgzMessageService.saveBatch(WgzAndBgtMessageConstant.getScoreMessage(collect)); } - - - recruitApplyService.lambdaUpdate() - .le(BgtProjectRecruitApply::getEntryTime, LocalDate.now()) - .eq(BgtProjectRecruitApply::getStatus,RecruitApplyStatus.WGZ_PASS.getCode()) - .set(BgtProjectRecruitApply::getStatus,RecruitApplyStatus.BGT_REFUSE.getCode()) - .update(); - Console.log("招工进场任务结束!"); + Console.log("务工评价任务结束!"); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzLeaveMapper.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzLeaveMapper.java index 06c56ff..89e9b83 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzLeaveMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzLeaveMapper.java @@ -1,13 +1,14 @@ package com.ruoyi.wgz.mapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.bgt.domain.dto.BgtAuditListDTO; +import com.ruoyi.bgt.domain.vo.BgtAuditResultVO; +import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; +import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; import com.ruoyi.wgz.bo.req.WgzAppLeaveHistoryListPageReq; import com.ruoyi.wgz.bo.res.WgzAppLeaveHistoryListPageRes; import com.ruoyi.wgz.bo.res.WgzAppUserLeaveDetailsRes; import com.ruoyi.wgz.domain.WgzLeave; -import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; -import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; import org.apache.ibatis.annotations.CacheNamespace; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -47,4 +48,5 @@ public interface WgzLeaveMapper extends BaseMapperPlus { " a.id DESC") WgzAppUserLeaveDetailsRes userLeaveDetails(@Param("id") Long id); + Page bgtLeaveAudit(@Param("page") Page page, @Param("dto") BgtAuditListDTO dto); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzReissueacardMapper.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzReissueacardMapper.java index b07e9c4..600c365 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzReissueacardMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzReissueacardMapper.java @@ -1,13 +1,14 @@ package com.ruoyi.wgz.mapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.ruoyi.bgt.domain.dto.BgtReissueacardListDTO; +import com.ruoyi.bgt.domain.dto.BgtAuditListDTO; +import com.ruoyi.bgt.domain.vo.BgtAuditResultVO; +import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; +import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; import com.ruoyi.wgz.bo.req.WgzAppReplacementCardRecordReq; import com.ruoyi.wgz.bo.res.WgzAppUserReplacementCardRecordDetailsRes; import com.ruoyi.wgz.bo.res.WgzReplacementCardRecordRes; import com.ruoyi.wgz.domain.WgzReissueacard; -import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; -import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; import org.apache.ibatis.annotations.CacheNamespace; import org.apache.ibatis.annotations.Param; @@ -27,7 +28,7 @@ public interface WgzReissueacardMapper extends BaseMapperPlus { */ Page userReplacementCardRecordListPage(@Param("page") Page page,@Param("userId") Long userId); - Page appQueryPageList(@Param("page") Page page,@Param("dto") BgtReissueacardListDTO dto); + Page appQueryPageList(@Param("page") Page page, @Param("dto") BgtAuditListDTO dto); WgzAppUserReplacementCardRecordDetailsRes userReplacementCardRecordDetails(@Param("id") Long id); diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzLeaveService.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzLeaveService.java index 788c7b6..35f9a73 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzLeaveService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzLeaveService.java @@ -1,6 +1,8 @@ package com.ruoyi.wgz.service; +import com.ruoyi.bgt.domain.dto.BgtAuditListDTO; import com.ruoyi.bgt.domain.dto.BgtLeaveUpdateDTO; +import com.ruoyi.bgt.domain.vo.BgtAuditResultVO; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.wgz.bo.WgzLeaveQueryBo; @@ -113,4 +115,8 @@ public interface IWgzLeaveService extends IServicePlus { */ void refuseBatch(Long recruitId,Long userId); + /** + * 包工头审核列表 + */ + TableDataInfo bgtLeaveAudit(BgtAuditListDTO dto); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzReissueacardService.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzReissueacardService.java index 4d313fd..8794c8d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzReissueacardService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzReissueacardService.java @@ -1,7 +1,8 @@ package com.ruoyi.wgz.service; -import com.ruoyi.bgt.domain.dto.BgtReissueacardListDTO; +import com.ruoyi.bgt.domain.dto.BgtAuditListDTO; import com.ruoyi.bgt.domain.dto.BgtReissueacardUpdateDTO; +import com.ruoyi.bgt.domain.vo.BgtAuditResultVO; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.wgz.bo.WgzReissueacardQueryBo; @@ -81,7 +82,7 @@ public interface IWgzReissueacardService extends IServicePlus { /** * 补卡记录审核(分页) */ - TableDataInfo appQueryPageList(BgtReissueacardListDTO dto); + TableDataInfo appQueryPageList(BgtAuditListDTO dto); /** * 审核 diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzScoreRecordService.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzScoreRecordService.java index 3c6c5ba..359cda1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzScoreRecordService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzScoreRecordService.java @@ -15,41 +15,49 @@ import java.util.List; * @date 2025-02-21 */ public interface IWgzScoreRecordService extends IServicePlus { - /** - * 查询单个 - * @return - */ - WgzScoreRecord queryById(Long id); + /** + * 查询单个 + * + * @return + */ + WgzScoreRecord queryById(Long id); - /** - * 查询列表 - */ - TableDataInfo queryPageList(WgzScoreRecordQueryBo bo); + /** + * 查询列表 + */ + TableDataInfo queryPageList(WgzScoreRecordQueryBo bo); - /** - * 查询列表 - */ - List queryList(WgzScoreRecordQueryBo bo); + /** + * 查询列表 + */ + List queryList(WgzScoreRecordQueryBo bo); - /** - * 根据新增业务对象插入务工者评分记录 - * @param bo 务工者评分记录新增业务对象 - * @return - */ - Boolean insert(WgzScoreRecord bo); + /** + * 根据新增业务对象插入务工者评分记录 + * + * @param bo 务工者评分记录新增业务对象 + * @return + */ + Boolean insert(WgzScoreRecord bo); - /** - * 根据编辑业务对象修改务工者评分记录 - * @param bo 务工者评分记录编辑业务对象 - * @return - */ - Boolean update(WgzScoreRecord bo); + /** + * 根据编辑业务对象修改务工者评分记录 + * + * @param bo 务工者评分记录编辑业务对象 + * @return + */ + Boolean update(WgzScoreRecord bo); + + /** + * 校验并删除数据 + * + * @param ids 主键集合 + * @param isValid 是否校验,true-删除前校验,false-不校验 + * @return + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + + WgzScoreRecord getByUserIdAndRecruitApplyId(Long userId, Long recruitApplyId); - /** - * 校验并删除数据 - * @param ids 主键集合 - * @param isValid 是否校验,true-删除前校验,false-不校验 - * @return - */ - Boolean deleteWithValidByIds(Collection ids, Boolean isValid); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzAttendanceServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzAttendanceServiceImpl.java index e1de8b6..eb5f18d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzAttendanceServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzAttendanceServiceImpl.java @@ -41,7 +41,6 @@ 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.*; @@ -717,6 +716,7 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl earlyLeaveRecords = new ArrayList<>(); List missRecords = new ArrayList<>(); List records = new ArrayList<>(); + List leaveRecords = new ArrayList<>(); for (WgzAttendance wgzAttendance : wgzAttendances) { @@ -766,6 +766,12 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl bgtLeaveAudit(BgtAuditListDTO dto) { + dto.setAuditorUserId(SecurityUtils.getAppUserId()); + Page queryDTOPage = new Page<>(); + queryDTOPage.setCurrent(dto.getPageNum()); + queryDTOPage.setSize(dto.getPageSize()); + return PageUtils.buildDataInfo(baseMapper.bgtLeaveAudit(queryDTOPage, dto)); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzReissueacardServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzReissueacardServiceImpl.java index bc65ed8..251d573 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzReissueacardServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzReissueacardServiceImpl.java @@ -9,8 +9,9 @@ import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; import com.ruoyi.bgt.domain.BgtMessage; import com.ruoyi.bgt.domain.BgtProjectRecruit; import com.ruoyi.bgt.domain.BgtProjectRecruitApply; -import com.ruoyi.bgt.domain.dto.BgtReissueacardListDTO; +import com.ruoyi.bgt.domain.dto.BgtAuditListDTO; import com.ruoyi.bgt.domain.dto.BgtReissueacardUpdateDTO; +import com.ruoyi.bgt.domain.vo.BgtAuditResultVO; import com.ruoyi.bgt.service.IBgtMessageService; import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; import com.ruoyi.bgt.service.IBgtProjectRecruitService; @@ -230,9 +231,9 @@ public class WgzReissueacardServiceImpl extends ServicePlusImpl appQueryPageList(BgtReissueacardListDTO dto) { + public TableDataInfo appQueryPageList(BgtAuditListDTO dto) { dto.setAuditorUserId(SecurityUtils.getAppUserId()); - Page queryDTOPage = new Page<>(); + Page queryDTOPage = new Page<>(); queryDTOPage.setCurrent(dto.getPageNum()); queryDTOPage.setSize(dto.getPageSize()); return PageUtils.buildDataInfo(baseMapper.appQueryPageList(queryDTOPage, dto)); diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzScoreRecordServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzScoreRecordServiceImpl.java index 785330f..4da313d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzScoreRecordServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzScoreRecordServiceImpl.java @@ -2,22 +2,21 @@ package com.ruoyi.wgz.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.ruoyi.common.utils.PageUtils; -import com.ruoyi.common.core.page.PagePlus; -import com.ruoyi.common.core.page.TableDataInfo; -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.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.utils.PageUtils; import com.ruoyi.wgz.bo.WgzScoreRecordQueryBo; import com.ruoyi.wgz.domain.WgzScoreRecord; import com.ruoyi.wgz.mapper.WgzScoreRecordMapper; import com.ruoyi.wgz.service.IWgzScoreRecordService; +import org.springframework.stereotype.Service; +import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Collection; /** * 务工者评分记录Service业务层处理 @@ -85,4 +84,11 @@ public class WgzScoreRecordServiceImpl extends ServicePlusImpllambdaQuery() + .eq(WgzScoreRecord::getUserId,userId) + .eq(WgzScoreRecord::getRecruitApplyId,recruitApplyId).last("limit 1")); + } } diff --git a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml index 8a69b64..57e1e5a 100644 --- a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml @@ -115,9 +115,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bpra.task_id, bpra.recruit_id, CASE - WHEN wa.leave_mark_id = 1 THEN '请假' + WHEN wa.leave_mark_id IS NOT NULL THEN '请假' WHEN wa.late = 0 and wa.early_leave = 0 and wa.missed_in = 0 and wa.missed_out = 0 THEN '正常' - WHEN wa.late = 1 or wa.early_leave = 1 or wa.clock_in_time is null or wa.clock_out_time is null THEN '异常' + WHEN wa.late = 1 OR wa.missed_in = 1 OR wa.early_leave = 1 OR wa.missed_out = 1 THEN '异常' ELSE '异常' END AS attendance_status FROM bgt_project_recruit_apply bpra @@ -131,10 +131,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and (wa.late = 0 and wa.early_leave = 0 and wa.missed_in = 0 and wa.missed_out = 0) and leave_mark_id is null - and (wa.late = 1 or wa.early_leave = 1 or wa.clock_in_time is null or wa.clock_out_time is null) and leave_mark_id is null + AND ((wa.late = 1 OR wa.missed_in = 1 OR wa.early_leave = 1 OR wa.missed_out = 1) + AND leave_mark_id IS NULL) - and wa.leave_mark_id = 1 + and wa.leave_mark_id IS NOT NULL diff --git a/ruoyi-system/src/main/resources/mapper/wgz/WgzDailyClockMapper.xml b/ruoyi-system/src/main/resources/mapper/wgz/WgzDailyClockMapper.xml index a1f752b..9c260ca 100644 --- a/ruoyi-system/src/main/resources/mapper/wgz/WgzDailyClockMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wgz/WgzDailyClockMapper.xml @@ -62,8 +62,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" wdc.dily_time, wu.avatar_name, wu.username, - wu.status, - wu.create_time + wdc.status, + wdc.create_time from wgz_daily_clock wdc left join wgz_user wu on wdc.user_id = wu.user_id where wdc.auditor_user_id = #{dto.auditorUserId} diff --git a/ruoyi-system/src/main/resources/mapper/wgz/WgzLeaveMapper.xml b/ruoyi-system/src/main/resources/mapper/wgz/WgzLeaveMapper.xml index d7826ed..77066d3 100644 --- a/ruoyi-system/src/main/resources/mapper/wgz/WgzLeaveMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wgz/WgzLeaveMapper.xml @@ -40,5 +40,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.id DESC + + diff --git a/ruoyi-system/src/main/resources/mapper/wgz/WgzReissueacardMapper.xml b/ruoyi-system/src/main/resources/mapper/wgz/WgzReissueacardMapper.xml index a6f938b..a5405a3 100644 --- a/ruoyi-system/src/main/resources/mapper/wgz/WgzReissueacardMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wgz/WgzReissueacardMapper.xml @@ -61,15 +61,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - SELECT - a.*, - b.username as auditorname, - b.avatar_name as auditorHead, - c.username as userName + a.id, + '1' as dataType, + a.now_time as startTime, + a.create_time, + a.reason, + a.auditor_type, + c.username FROM wgz_reissueacard a - LEFT JOIN bgt_user b ON (a.auditor_user_id = b.user_id and b.del_flag = 0) LEFT JOIN wgz_user c ON (a.user_id = c.user_id and c.del_flag = 0) WHERE a.auditor_user_id = #{dto.auditorUserId} @@ -77,8 +79,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and a.auditor_type = #{dto.auditorType} - - and date(a.create_time) = #{dto.nowTime} + + and date(a.create_time) = #{dto.date} ORDER BY a.id DESC