From 293560e4a390fb80c12bf90d435df8fd768e6643 Mon Sep 17 00:00:00 2001 From: zt Date: Tue, 25 Feb 2025 17:13:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bgt/AppBgtPayCalculationController.java | 15 ++++ .../AppBgtProjectRecruitApplyController.java | 11 ++- .../fbs/AppFbsProjectTaskController.java | 33 ++++++- .../dto/BgtPayCalculationDetailBaseVO.java | 46 ++++++++++ .../dto/BgtPayCalculationDetailListVO.java | 38 ++++++++ .../dto/BgtProjectRecruitApplyQueryDTO.java | 7 ++ .../domain/vo/BgtProjectRecruitApplyVO.java | 1 + .../domain/vo/BgtProjectRecruitDetailVO.java | 10 +++ .../mapper/BgtProjectRecruitApplyMapper.java | 3 + .../IBgtProjectRecruitApplyService.java | 6 ++ .../BgtProjectRecruitApplyServiceImpl.java | 14 ++- .../constants/WgzAndBgtMessageConstant.java | 40 +++++++-- .../domain/vo/AppTaskDetailAttendanceVO.java | 36 ++++++++ .../domain/vo/AppTaskDetailProgressVO.java | 19 ++++ .../fbs/domain/vo/AppTaskDetailRecruitVO.java | 24 +++++ .../ruoyi/fbs/domain/vo/AppTaskDetailVO.java | 4 +- .../fbs/domain/vo/AppTaskDetailWageVO.java | 29 ++++++ .../fbs/service/IFbsProjectTaskService.java | 23 ++++- .../impl/FbsProjectTaskServiceImpl.java | 88 ++++++++++++++----- .../WgzAppPersonalBasicInformationReq.java | 4 +- .../service/IWgzPayCalculationService.java | 12 +++ .../impl/WgzPayCalculationServiceImpl.java | 59 +++++++++++++ .../bgt/BgtProjectRecruitApplyMapper.xml | 2 +- .../mapper/bgt/BgtProjectRecruitMapper.xml | 1 + .../mapper/bgt/BgtWageApplicationMapper.xml | 1 + 25 files changed, 482 insertions(+), 44 deletions(-) create mode 100644 ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationDetailBaseVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationDetailListVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailAttendanceVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailProgressVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailRecruitVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailWageVO.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtPayCalculationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtPayCalculationController.java index d381283..2b68d7b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtPayCalculationController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtPayCalculationController.java @@ -1,5 +1,7 @@ package com.ruoyi.web.controller.bgt; +import com.ruoyi.bgt.domain.dto.BgtPayCalculationDetailBaseVO; +import com.ruoyi.bgt.domain.dto.BgtPayCalculationDetailListVO; import com.ruoyi.bgt.domain.dto.BgtPayCalculationListDTO; import com.ruoyi.bgt.domain.dto.BgtPayCalculationUpdateDTO; import com.ruoyi.common.annotation.Log; @@ -18,6 +20,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotNull; +import java.util.List; /** * 工资结算Controller @@ -64,4 +67,16 @@ public class AppBgtPayCalculationController extends BaseController { } + @ApiOperation("总体考勤情况-工资结算-基础信息") + @GetMapping("/baseInfo") + public AjaxResult baseInfo(Long id, Long recruitId) { + return AjaxResult.success(iWgzPayCalculationService.baseInfo(id,recruitId)); + } + + @ApiOperation("总体考勤情况-工资结算-结算记录") + @GetMapping("/{id}") + public AjaxResult> getInfo(Long id, Long recruitId) { + return AjaxResult.success(iWgzPayCalculationService.record(id,recruitId)); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java index a8f77b5..0ce3686 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java @@ -11,6 +11,7 @@ import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; 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.req.WgzAppPersonalBasicInformationReq; import com.ruoyi.wgz.bo.res.WgzAppPersonalBasicInformationRes; @@ -41,8 +42,14 @@ public class AppBgtProjectRecruitApplyController extends BaseController { private final IWgzUserService wgzUserService; - @ApiOperation("App务工者列表") + @ApiOperation("App务工者列表(分页)") @GetMapping("/list") + public TableDataInfo listPage(@Validated BgtProjectRecruitApplyQueryDTO dto) { + return iBgtProjectRecruitApplyService.appQueryPageList(dto); + } + + @ApiOperation("App务工者列表") + @GetMapping("/listAll") public AjaxResult> list(@Validated BgtProjectRecruitApplyQueryDTO dto) { return AjaxResult.success(iBgtProjectRecruitApplyService.appQueryList(dto)); } @@ -70,7 +77,7 @@ public class AppBgtProjectRecruitApplyController extends BaseController { } - @ApiOperation("指定日期打卡记录") + @ApiOperation("人员出勤情况") @GetMapping("/todayAttendanceList") public AjaxResult> todayAttendanceList(@Validated BgtAttendanceDayDTO req) { return AjaxResult.success(iBgtProjectRecruitApplyService.todayAttendanceList(req)); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectTaskController.java index 647b031..412c8df 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectTaskController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectTaskController.java @@ -4,8 +4,7 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.fbs.domain.dto.AppTaskDTO; -import com.ruoyi.fbs.domain.vo.AppTaskDetailVO; -import com.ruoyi.fbs.domain.vo.AppTaskVO; +import com.ruoyi.fbs.domain.vo.*; import com.ruoyi.fbs.service.IFbsProjectTaskService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -57,4 +56,34 @@ public class AppFbsProjectTaskController extends BaseController { return AjaxResult.success(iFbsProjectTaskService.appQueryById(id)); } + @ApiOperation("项目任务详细信息-考勤") + @GetMapping("/attendance/{id}") + public AjaxResult getInfoAttendance(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iFbsProjectTaskService.attendance(id)); + } + + @ApiOperation("项目任务详细信息-进度") + @GetMapping("/progress/{id}") + public AjaxResult getInfoProgress(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iFbsProjectTaskService.progress(id)); + } + + @ApiOperation("项目任务详细信息-结算") + @GetMapping("/wage/{id}") + public AjaxResult getInfoWage(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iFbsProjectTaskService.wage(id)); + } + + @ApiOperation("项目任务详细信息-务工人员") + @GetMapping("/recruit/{id}") + public AjaxResult getInfoRecruit(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iFbsProjectTaskService.recruit(id)); + } + + + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationDetailBaseVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationDetailBaseVO.java new file mode 100644 index 0000000..78685a4 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationDetailBaseVO.java @@ -0,0 +1,46 @@ +package com.ruoyi.bgt.domain.dto; + +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.math.BigDecimal; +import java.time.LocalDate; + +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("总体考勤情况-工资结算-基础信息") +public class BgtPayCalculationDetailBaseVO { + + @ApiModelProperty("姓名") + private String username; + + @ApiModelProperty("评分") + private Double score; + + @ApiModelProperty("头像") + private String avatarName; + + @ApiModelProperty("招工主题") + private String recruitName; + + @ApiModelProperty("任务名") + private String taskName; + + @ApiModelProperty("进场时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate entryTime; + + @ApiModelProperty("总工资") + private BigDecimal allAmount; + + @ApiModelProperty("已付工资") + private BigDecimal payAmount; + + @ApiModelProperty("剩余工资") + private BigDecimal residueAmount; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationDetailListVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationDetailListVO.java new file mode 100644 index 0000000..200e033 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationDetailListVO.java @@ -0,0 +1,38 @@ +package com.ruoyi.bgt.domain.dto; + +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.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("总体考勤情况-工资结算-结算记录") +public class BgtPayCalculationDetailListVO { + + @ApiModelProperty("主键自增ID") + private Long id; + + @ApiModelProperty("工资金额") + private BigDecimal recruitAmount; + + @ApiModelProperty("出勤天数") + private Long num; + + @ApiModelProperty("创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + @ApiModelProperty("同意|拒绝时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime auditorTime; + + @ApiModelProperty("审核状态(0未读 1待审核 2已同意 3已拒绝)") + private String auditorType; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyQueryDTO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyQueryDTO.java index 8d81942..9bd591b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyQueryDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyQueryDTO.java @@ -14,6 +14,13 @@ import java.util.List; @ApiModel("包工头招工申请列表查询对象") public class BgtProjectRecruitApplyQueryDTO extends BaseEntity { + + @ApiModelProperty("分页大小") + private Integer pageSize; + /** 当前页数 */ + @ApiModelProperty("当前页数") + private Integer pageNum; + @ApiModelProperty("招工ID列表") @NotEmpty(message = "招工ID列表不能为空") private List recruitIds; diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitApplyVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitApplyVO.java index 872d42d..c91fca9 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitApplyVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitApplyVO.java @@ -32,6 +32,7 @@ public class BgtProjectRecruitApplyVO implements Serializable { private LocalDate entryTime; @ApiModelProperty("务工者用户ID") + @JsonFormat(shape = JsonFormat.Shape.STRING) private Long userId; @ApiModelProperty("姓名") diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitDetailVO.java index 47a425a..2a6f1a3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitDetailVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitDetailVO.java @@ -6,10 +6,12 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.LocalTime; import java.util.List; /** @@ -96,6 +98,14 @@ public class BgtProjectRecruitDetailVO implements Serializable { @ApiModelProperty("备注") private String remark; + @ApiModelProperty("上班时间") + @DateTimeFormat(pattern = "HH:mm:ss") + private LocalTime beginWorkTime; + + @ApiModelProperty("下班时间") + @DateTimeFormat(pattern = "HH:mm:ss") + private LocalTime endWorkTime; + @ApiModelProperty("申请者列表") List applylist; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java index 4de516f..b2c0aaa 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java @@ -4,6 +4,7 @@ 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.BgtProjectTaskProgressQueryDTO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; @@ -24,6 +25,8 @@ import java.util.List; @CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class) public interface BgtProjectRecruitApplyMapper extends BaseMapperPlus { + Page appQueryList(@Param("page")Page queryDTOPage,@Param("dto") BgtProjectRecruitApplyQueryDTO dto); + List appQueryList(@Param("dto") BgtProjectRecruitApplyQueryDTO dto); List todayAttendanceList(@Param("dto") BgtAttendanceDayDTO dto); diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java index 15e805e..ffb3044 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java @@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestBody; import com.ruoyi.wgz.bo.req.WgzAppUnderwayReq; import com.ruoyi.wgz.bo.res.WgzAppUnderwayRes; import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; import java.util.Collection; import java.util.List; @@ -64,6 +65,11 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus ids, Boolean isValid); + /** + * 查询列表 + */ + TableDataInfo appQueryPageList(BgtProjectRecruitApplyQueryDTO dto); + /** * 查询列表 */ 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 c4bbf29..1787837 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 @@ -10,10 +10,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; @@ -125,6 +122,15 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl appQueryPageList(BgtProjectRecruitApplyQueryDTO dto) { + Page queryDTOPage = new Page<>(); + queryDTOPage.setCurrent(dto.getPageNum()); + queryDTOPage.setSize(dto.getPageSize()); + Page queryVOPage = baseMapper.appQueryList(queryDTOPage, dto); + return PageUtils.buildDataInfo(queryVOPage); + } + @Override public List appQueryList(BgtProjectRecruitApplyQueryDTO dto) { return baseMapper.appQueryList(dto); diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/constants/WgzAndBgtMessageConstant.java b/ruoyi-system/src/main/java/com/ruoyi/common/constants/WgzAndBgtMessageConstant.java index 02577fa..ba24ea2 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/common/constants/WgzAndBgtMessageConstant.java +++ b/ruoyi-system/src/main/java/com/ruoyi/common/constants/WgzAndBgtMessageConstant.java @@ -1,5 +1,6 @@ package com.ruoyi.common.constants; +import java.util.HashMap; import java.util.Map; public class WgzAndBgtMessageConstant { @@ -50,19 +51,46 @@ public class WgzAndBgtMessageConstant { * =====================================================包工头===================================================== */ - public static final String BGT_HEADLINE_APPLY = "您申请的【%s】项目,已得到回复!"; - public static final String BGT_SUBHEADING_APPLY = "您申请的【%s】项目,已经过审核人【%s】同意!"; + //模板 + public static final String BGT_SIGN_UP_APPLY_HEADLINE = "您申请的【%s】项目,已得到回复!"; + public static final String BGT_SIGN_UP_APPLY_SUBHEADING = "您申请的【%s】项目,审核人【%s】已%s!"; + public static final String BGT_PAY_APPLY_HEADLINE = "【%s】项目工资已审批!"; + public static final String BGT_PAY_APPLY_SUBHEADING = "您申请的【%s】项目工资,审核人【%s】已%s!"; + public static final String BGT_LEAVE_APPLY_HEADLINE = "您【%s】项目的请假申请,审核人【%s】已%s!"; + public static final String BGT_LEAVE_APPLY_SUBHEADING = "您【%s】项目的请假申请,审核人【%s】已%s!"; + + //主副标志 + public static final String HEADLINE = "headline"; //主标题 + public static final String SUBHEADING = "subheading"; //副标题 + + //消息类型 + public static final String BGT_TYPE_SIGN_UP = "1"; //务工者报名 + public static final String BGT_TYPE_PAY = "2"; //付款 + public static final String BGT_TYPE_LEAVE = "3"; //请假 + public static final String BGT_TYPE_MAKE_UP = "4"; //补卡 + public static final String BGT_TYPE_EXIT = "5"; //退场 //包工头消息返回 - public static String bgtMessage(Map mp, String type) { + public static Map bgtMessage(Map mp, String type,Boolean isPass) { + Map map = new HashMap<>(); + String pass = isPass ? "通过" : "拒绝"; switch (type){ case "1": - return String.format(BGT_HEADLINE_APPLY, mp.get("projectName")); + map.put(HEADLINE, String.format(BGT_SIGN_UP_APPLY_HEADLINE, mp.get("projectName"))); + map.put(SUBHEADING, String.format(BGT_SIGN_UP_APPLY_SUBHEADING, mp.get("projectName"),mp.get("auditor"),pass)); + break; case "2": - return String.format(BGT_SUBHEADING_APPLY, mp.get("projectName"),mp.get("auditor")); + map.put(HEADLINE, String.format(BGT_PAY_APPLY_HEADLINE, mp.get("projectName"))); + map.put(SUBHEADING, String.format(BGT_PAY_APPLY_SUBHEADING, mp.get("projectName"),mp.get("auditor"),pass)); + break; +// case "3": +// return String.format(BGT_PAY_APPLY, mp.get("projectName"),mp.get("auditor")); +// case "4": +// return String.format(BGT_LEAVE_APPLY, mp.get("projectName"),mp.get("auditor")); default: - return "未知类型"; + break; } + return map; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailAttendanceVO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailAttendanceVO.java new file mode 100644 index 0000000..6c0aee2 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailAttendanceVO.java @@ -0,0 +1,36 @@ +package com.ruoyi.fbs.domain.vo; + +import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +@Data +@ApiModel("包工头项目任务详情-考勤") +public class AppTaskDetailAttendanceVO { + + @ApiModelProperty("主键ID") + private Long id; + + //总体考勤情况 + + @ApiModelProperty("总人数") + private Integer totalNum = 0; + + @ApiModelProperty("今日到岗人数") + private Integer reportToDutyNum= 0; + + @ApiModelProperty("今日到岗率") + private Integer reportToDutyRate= 0; + + @ApiModelProperty("考勤列表") + List countVOS; + + + + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailProgressVO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailProgressVO.java new file mode 100644 index 0000000..a1fa6c8 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailProgressVO.java @@ -0,0 +1,19 @@ +package com.ruoyi.fbs.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +@ApiModel("包工头项目任务详情-进度") +public class AppTaskDetailProgressVO { + + @ApiModelProperty("主键ID") + private Long id; + + //任务进度 + @ApiModelProperty("任务进度") + private Integer progress; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailRecruitVO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailRecruitVO.java new file mode 100644 index 0000000..2327af2 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailRecruitVO.java @@ -0,0 +1,24 @@ +package com.ruoyi.fbs.domain.vo; + +import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +@Data +@ApiModel("包工头项目任务详情-务工者") +public class AppTaskDetailRecruitVO { + + @ApiModelProperty("主键ID") + private Long id; + //务工者数量列表 + @ApiModelProperty("申请者列表") + List applyList; + + + + +} 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 21880fe..a308599 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 @@ -98,8 +98,8 @@ public class AppTaskDetailVO { @ApiModelProperty("任务付款金额") private BigDecimal taskPaymentAmount; - @ApiModelProperty("收款申请列表") - private List wageApplicationList; + @ApiModelProperty("最新一条收款申请") + private BgtWageApplicationListVO wageApplication; //总体考勤情况 diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailWageVO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailWageVO.java new file mode 100644 index 0000000..56e19f1 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailWageVO.java @@ -0,0 +1,29 @@ +package com.ruoyi.fbs.domain.vo; + +import com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +@Data +@ApiModel("包工头项目任务详情-结算情况") +public class AppTaskDetailWageVO { + + @ApiModelProperty("主键ID") + private Long id; + + //结算情况 + @ApiModelProperty("任务收款金额") + private Integer taskReceiveAmount; + + @ApiModelProperty("任务付款金额") + private BigDecimal taskPaymentAmount; + + @ApiModelProperty("最新一条收款申请") + private BgtWageApplicationListVO wageApplication; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsProjectTaskService.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsProjectTaskService.java index a3b80d4..6764362 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsProjectTaskService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsProjectTaskService.java @@ -6,8 +6,7 @@ import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.fbs.bo.FbsProjectTaskQueryBo; import com.ruoyi.fbs.domain.FbsProjectTask; import com.ruoyi.fbs.domain.dto.AppTaskDTO; -import com.ruoyi.fbs.domain.vo.AppTaskDetailVO; -import com.ruoyi.fbs.domain.vo.AppTaskVO; +import com.ruoyi.fbs.domain.vo.*; import java.util.Collection; import java.util.List; @@ -69,4 +68,24 @@ public interface IFbsProjectTaskService extends IServicePlus { * 任务详情 */ AppTaskDetailVO appQueryById(Long id); + + /** + * 任务详情-考勤 + */ + AppTaskDetailAttendanceVO attendance(Long id); + + /** + * 任务详情-进度 + */ + AppTaskDetailProgressVO progress(Long id); + + /** + * 任务详情-结算 + */ + AppTaskDetailWageVO wage(Long id); + + /** + * 任务详情-务工人员 + */ + AppTaskDetailRecruitVO recruit(Long id); } 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 3297def..59c1bf1 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 @@ -27,8 +27,7 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.fbs.bo.FbsProjectTaskQueryBo; import com.ruoyi.fbs.domain.FbsProjectTask; import com.ruoyi.fbs.domain.dto.AppTaskDTO; -import com.ruoyi.fbs.domain.vo.AppTaskDetailVO; -import com.ruoyi.fbs.domain.vo.AppTaskVO; +import com.ruoyi.fbs.domain.vo.*; import com.ruoyi.fbs.mapper.FbsProjectTaskMapper; import com.ruoyi.fbs.service.IFbsProjectTaskApplyService; import com.ruoyi.fbs.service.IFbsProjectTaskService; @@ -180,15 +179,6 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl 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())); - appTaskDetailVO.setApplyList(recruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO)); //任务进度 appTaskDetailVO.setProgress(progressService.getLastProgress(id)); @@ -197,7 +187,7 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl wageList = wageApplicationService.appQueryList(wageDTO); - appTaskDetailVO.setWageApplicationList(wageList); + appTaskDetailVO.setWageApplication(CollectionUtil.isEmpty(wageList)?null:wageList.get(0)); //收款金额 Integer taskReceiveAmount = wageList.stream().filter(wage -> AuditStatus.PASS.getCode().equals(wage.getAuditStatus())) .mapToInt(BgtWageApplicationListVO::getApplicantAmount) @@ -206,20 +196,72 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl countVOS = attendanceService.countByTaskId(id, startOfMonth, date); - if(CollectionUtil.isNotEmpty(countVOS)){ - BgtAttendanceCountVO vo = countVOS.get(0); - appTaskDetailVO.setCountVOS(DataUtil.fillMissingDates(countVOS, startOfMonth, date)); - appTaskDetailVO.setTotalNum(vo.getTotalNum()); - appTaskDetailVO.setReportToDutyNum(vo.getReportToDutyNum()); - appTaskDetailVO.setReportToDutyRate(vo.getReportToDutyNum()/vo.getTotalNum()*100); - } + } return appTaskDetailVO; } + @Override + public AppTaskDetailAttendanceVO attendance(Long id) { + //考勤情况 + AppTaskDetailAttendanceVO appTaskDetailVO = new AppTaskDetailAttendanceVO(); + appTaskDetailVO.setId(id); + LocalDate date = LocalDate.now(); + LocalDate startOfMonth = date.withDayOfMonth(1); + List countVOS = attendanceService.countByTaskId(id, startOfMonth, date); + if(CollectionUtil.isNotEmpty(countVOS)){ + BgtAttendanceCountVO vo = countVOS.get(0); + appTaskDetailVO.setCountVOS(DataUtil.fillMissingDates(countVOS, startOfMonth, date)); + appTaskDetailVO.setTotalNum(vo.getTotalNum()); + appTaskDetailVO.setReportToDutyNum(vo.getReportToDutyNum()); + appTaskDetailVO.setReportToDutyRate(vo.getReportToDutyNum()/vo.getTotalNum()*100); + } + return appTaskDetailVO; + } + @Override + public AppTaskDetailProgressVO progress(Long id) { + AppTaskDetailProgressVO appTaskDetailVO = new AppTaskDetailProgressVO(); + appTaskDetailVO.setId(id); + //任务进度 + appTaskDetailVO.setProgress(progressService.getLastProgress(id)); + return appTaskDetailVO; + } + + @Override + public AppTaskDetailWageVO wage(Long id) { + AppTaskDetailWageVO appTaskDetailVO = new AppTaskDetailWageVO(); + appTaskDetailVO.setId(id); + //结算情况 + //收款申请列表 + BgtWageApplicationQueryDTO wageDTO = new BgtWageApplicationQueryDTO(); + wageDTO.setTaskId(id); + List wageList = wageApplicationService.appQueryList(wageDTO); + appTaskDetailVO.setWageApplication(CollectionUtil.isEmpty(wageList)?null:wageList.get(0)); + //收款金额 + Integer taskReceiveAmount = wageList.stream().filter(wage -> AuditStatus.PASS.getCode().equals(wage.getAuditStatus())) + .mapToInt(BgtWageApplicationListVO::getApplicantAmount) + .sum(); + appTaskDetailVO.setTaskReceiveAmount(taskReceiveAmount); + //付款金额 + BigDecimal payByTaskAndBgt = payCalculationService.getPayByTaskAndBgt(id, SecurityUtils.getAppUserId()); + appTaskDetailVO.setTaskPaymentAmount(payByTaskAndBgt); + return appTaskDetailVO; + } + + @Override + public AppTaskDetailRecruitVO recruit(Long id) { + AppTaskDetailRecruitVO appTaskDetailVO = new AppTaskDetailRecruitVO(); + appTaskDetailVO.setId(id); + //务工者数量列表 + BgtProjectRecruitQueryBo bgtProjectRecruitQueryBo = new BgtProjectRecruitQueryBo(); + bgtProjectRecruitQueryBo.setTaskId(id); + List 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())); + appTaskDetailVO.setApplyList(recruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO)); + return appTaskDetailVO; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppPersonalBasicInformationReq.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppPersonalBasicInformationReq.java index c690845..2fa0c5a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppPersonalBasicInformationReq.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppPersonalBasicInformationReq.java @@ -6,7 +6,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; -import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.io.Serializable; @Data @@ -15,6 +15,6 @@ import java.io.Serializable; @ApiModel("务工者APP-查询个人基本信息对象") public class WgzAppPersonalBasicInformationReq implements Serializable { @ApiModelProperty("唯一标识") - @NotBlank(message = "唯一标识不能为空") + @NotNull(message = "唯一标识不能为空") private Long userId; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzPayCalculationService.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzPayCalculationService.java index 74c68de..1bba5cf 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzPayCalculationService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzPayCalculationService.java @@ -1,5 +1,7 @@ package com.ruoyi.wgz.service; +import com.ruoyi.bgt.domain.dto.BgtPayCalculationDetailBaseVO; +import com.ruoyi.bgt.domain.dto.BgtPayCalculationDetailListVO; import com.ruoyi.bgt.domain.dto.BgtPayCalculationListDTO; import com.ruoyi.bgt.domain.dto.BgtPayCalculationUpdateDTO; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; @@ -103,4 +105,14 @@ public interface IWgzPayCalculationService extends IServicePlus record(Long userId, Long recruitId); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzPayCalculationServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzPayCalculationServiceImpl.java index e6a7564..94bbd0d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzPayCalculationServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzPayCalculationServiceImpl.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.bgt.domain.BgtProjectRecruit; import com.ruoyi.bgt.domain.BgtProjectRecruitApply; +import com.ruoyi.bgt.domain.dto.BgtPayCalculationDetailBaseVO; +import com.ruoyi.bgt.domain.dto.BgtPayCalculationDetailListVO; import com.ruoyi.bgt.domain.dto.BgtPayCalculationListDTO; import com.ruoyi.bgt.domain.dto.BgtPayCalculationUpdateDTO; import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; @@ -16,15 +18,20 @@ import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.fbs.domain.FbsProjectTask; +import com.ruoyi.fbs.service.IFbsProjectTaskService; import com.ruoyi.wgz.bo.WgzPayCalculationQueryBo; import com.ruoyi.wgz.bo.req.WgzAppApplyForPayrollSettlementListReq; import com.ruoyi.wgz.bo.req.WgzApplyForPayrollSettlementAddReq; import com.ruoyi.wgz.bo.res.WgzAppApplyForPayrollSettlementListRes; import com.ruoyi.wgz.domain.WgzPayCalculation; import com.ruoyi.wgz.domain.WgzPayCalculationFiles; +import com.ruoyi.wgz.domain.WgzUser; import com.ruoyi.wgz.mapper.WgzPayCalculationMapper; +import com.ruoyi.wgz.service.IWgzAttendanceService; import com.ruoyi.wgz.service.IWgzPayCalculationFilesService; import com.ruoyi.wgz.service.IWgzPayCalculationService; +import com.ruoyi.wgz.service.IWgzUserService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -54,6 +61,14 @@ public class WgzPayCalculationServiceImpl extends ServicePlusImpllambdaQuery() + .eq(BgtProjectRecruitApply::getRecruitId, recruitId).eq(BgtProjectRecruitApply::getUserId, userId) + .last("limit 1")); + vo.setEntryTime(apply.getEntryTime()); + + Integer i = attendanceService.attendanceDetail(userId, apply.getId(), null); + BigDecimal totalAmount = recruit.getRecruitAmount().multiply(BigDecimal.valueOf(i)); + vo.setAllAmount(totalAmount); + + List gzs = findByUserIdRecruitIdNewestData(userId, apply.getId()); + BigDecimal addSum = new BigDecimal(0); + for (WgzPayCalculation gz : gzs) { + //金额*天数=实际工资 + BigDecimal multiply = gz.getRecruitAmount().multiply(BigDecimal.valueOf(gz.getNum())); + addSum = addSum.add(multiply); + } + vo.setPayAmount(totalAmount); + + vo.setResidueAmount(vo.getAllAmount().subtract(vo.getPayAmount())); + return vo; + } + + @Override + public List record(Long userId, Long recruitId) { + List wgzPayCalculations = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(WgzPayCalculation::getUserId, userId) + .eq(WgzPayCalculation::getRecruitId, recruitId)); + return BeanUtil.copyToList(wgzPayCalculations, BgtPayCalculationDetailListVO.class); + } } diff --git a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml index 94d541b..4709a57 100644 --- a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml @@ -66,7 +66,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left join bgt_project_recruit_apply bpra on wa.recruit_id = bpra.recruit_id and bpra.user_id = wa.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 wa.date = #{dto.date}' + where wa.date = #{dto.date} and (wa.missed_in =0 or missed_out = 0 ) diff --git a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitMapper.xml b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitMapper.xml index 753d9c7..abe0dac 100644 --- a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitMapper.xml @@ -39,6 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and bpr.recruit_name like concat('%', #{dto.recruitName}, '%') + order by bpr.create_time desc