This commit is contained in:
zt
2025-02-25 17:13:38 +08:00
parent cffc1422b0
commit 293560e4a3
25 changed files with 482 additions and 44 deletions

View File

@ -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<BgtAttendanceCountVO> countVOS;
}

View File

@ -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;
}

View File

@ -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<BgtProjectRecruitApplyVO> applyList;
}

View File

@ -98,8 +98,8 @@ public class AppTaskDetailVO {
@ApiModelProperty("任务付款金额")
private BigDecimal taskPaymentAmount;
@ApiModelProperty("收款申请列表")
private List<BgtWageApplicationListVO> wageApplicationList;
@ApiModelProperty("最新一条收款申请")
private BgtWageApplicationListVO wageApplication;
//总体考勤情况

View File

@ -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;
}

View File

@ -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<FbsProjectTask> {
* 任务详情
*/
AppTaskDetailVO appQueryById(Long id);
/**
* 任务详情-考勤
*/
AppTaskDetailAttendanceVO attendance(Long id);
/**
* 任务详情-进度
*/
AppTaskDetailProgressVO progress(Long id);
/**
* 任务详情-结算
*/
AppTaskDetailWageVO wage(Long id);
/**
* 任务详情-务工人员
*/
AppTaskDetailRecruitVO recruit(Long id);
}

View File

@ -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<FbsProjectTaskMap
if(ProjectTaskStatus.PROGRESS.getCode().equals(byId.getStatus())
|| ProjectTaskStatus.COMPLETE.getCode().equals(byId.getStatus())){
//务工者数量列表
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()));
appTaskDetailVO.setApplyList(recruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO));
//任务进度
appTaskDetailVO.setProgress(progressService.getLastProgress(id));
@ -197,7 +187,7 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
BgtWageApplicationQueryDTO wageDTO = new BgtWageApplicationQueryDTO();
wageDTO.setTaskId(id);
List<BgtWageApplicationListVO> 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<FbsProjectTaskMap
//付款金额
BigDecimal payByTaskAndBgt = payCalculationService.getPayByTaskAndBgt(byId.getId(), byId.getUserId());
appTaskDetailVO.setTaskPaymentAmount(payByTaskAndBgt);
//考勤情况
LocalDate date = LocalDate.now();
LocalDate startOfMonth = date.withDayOfMonth(1);
List<BgtAttendanceCountVO> countVOS = attendanceService.countByTaskId(id, startOfMonth, date);
if(CollectionUtil.isNotEmpty(countVOS)){
BgtAttendanceCountVO vo = countVOS.get(0);
appTaskDetailVO.setCountVOS(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<BgtAttendanceCountVO> 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<BgtWageApplicationListVO> 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<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()));
appTaskDetailVO.setApplyList(recruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO));
return appTaskDetailVO;
}
}