This commit is contained in:
zt
2025-02-24 19:13:17 +08:00
parent bb0d3d0146
commit fd6aa9a945
25 changed files with 316 additions and 106 deletions

View File

@ -71,6 +71,9 @@ public class FbsProjectTask implements Serializable {
@ApiModelProperty("任务开始时间")
private String taskBeginTime;
@ApiModelProperty("任务结束时间")
private String taskEndTime;
/** 联系人 */
@Excel(name = "联系人")
@ApiModelProperty("联系人")

View File

@ -18,7 +18,7 @@ public class AppTaskDTO {
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("承接人")
@ApiModelProperty(value = "承接人",hidden = true)
private Long userId;
@ApiModelProperty("任务状态0申请中 1进行中 2已完成")

View File

@ -4,21 +4,38 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO;
import com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO;
import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel("包工头项目任务列表")
@ApiModel("包工头项目任务详情")
public class AppTaskDetailVO {
@ApiModelProperty("主键ID")
private Long id;
/** 项目ID */
@Excel(name = "项目ID")
@ApiModelProperty("项目ID")
private Long projectId;
/** 标段ID */
@Excel(name = "标段ID")
@ApiModelProperty("标段ID")
private Long sectionId;
/** 分包ID */
@Excel(name = "分包ID")
@ApiModelProperty("分包ID")
private Long subId;
/** 任务名称 */
@ApiModelProperty("任务名称")
private String taskName;
@ -79,7 +96,7 @@ public class AppTaskDetailVO {
private Integer taskReceiveAmount;
@ApiModelProperty("任务付款金额")
private Integer taskPaymentAmount;
private BigDecimal taskPaymentAmount;
@ApiModelProperty("收款申请列表")
private List<BgtWageApplicationListVO> wageApplicationList;

View File

@ -1,6 +1,7 @@
package com.ruoyi.fbs.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -15,6 +16,21 @@ public class AppTaskVO {
@ApiModelProperty("主键ID")
private Long id;
/** 项目ID */
@Excel(name = "项目ID")
@ApiModelProperty("项目ID")
private Long projectId;
/** 标段ID */
@Excel(name = "标段ID")
@ApiModelProperty("标段ID")
private Long sectionId;
/** 分包ID */
@Excel(name = "分包ID")
@ApiModelProperty("分包ID")
private Long subId;
@ApiModelProperty("任务名称")
private String taskName;
/** 任务地址 */
@ -30,8 +46,14 @@ public class AppTaskVO {
@ApiModelProperty("项目名")
private String projectName;
@ApiModelProperty("任务开始时间")
private String taskBeginTime;
@ApiModelProperty("任务结束时间")
private String taskEndTime;
@ApiModelProperty("发布时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime createTime;
@ApiModelProperty("申请数量")

View File

@ -63,6 +63,8 @@ public interface IFbsProjectTaskService extends IServicePlus<FbsProjectTask> {
*/
TableDataInfo<AppTaskVO> appQueryPageList(AppTaskDTO dto);
List<AppTaskVO> appQueryList();
/**
* 任务详情
*/

View File

@ -2,7 +2,6 @@ package com.ruoyi.fbs.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -24,6 +23,7 @@ import com.ruoyi.common.enums.ProjectTaskStatus;
import com.ruoyi.common.enums.RecruitApplyStatus;
import com.ruoyi.common.util.DataUtil;
import com.ruoyi.common.utils.PageUtils;
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;
@ -33,12 +33,13 @@ import com.ruoyi.fbs.mapper.FbsProjectTaskMapper;
import com.ruoyi.fbs.service.IFbsProjectTaskApplyService;
import com.ruoyi.fbs.service.IFbsProjectTaskService;
import com.ruoyi.wgz.service.IWgzAttendanceService;
import com.ruoyi.wgz.service.IWgzPayCalculationService;
import com.ruoyi.zbf.domain.ZbfProject;
import com.ruoyi.zbf.service.IZbfProjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
@ -57,7 +58,6 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
@Autowired
private IFbsProjectTaskApplyService taskApplyService;
@Autowired
@Lazy
private IBgtProjectRecruitService recruitService;
@Autowired
private IBgtProjectRecruitApplyService recruitApplyService;
@ -67,6 +67,8 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
private IBgtWageApplicationService wageApplicationService;
@Autowired
private IWgzAttendanceService attendanceService;
@Autowired
private IWgzPayCalculationService payCalculationService;
@Override
public FbsProjectTask queryById(Long id){
@ -140,14 +142,34 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
Page<AppTaskDTO> appTaskDTOPage = new Page<>();
appTaskDTOPage.setCurrent(dto.getPageNum());
appTaskDTOPage.setSize(dto.getPageSize());
if(dto.getMyTask() && ObjectUtil.equals(ProjectTaskStatus.APPLY.getCode(),dto.getStatus())){
List<Long> taskIds = taskApplyService.getTaskIdsByUserId(dto.getUserId());
List<Long> taskIds = new ArrayList<>();
if(ProjectTaskStatus.APPLY.getCode().equals(dto.getStatus())){
taskIds = taskApplyService.getTaskIdsByUserId(SecurityUtils.getAppUserId());
dto.setTaskIds(taskIds);
}
if(dto.getMyTask() && !ProjectTaskStatus.APPLY.getCode().equals(dto.getStatus())){
dto.setUserId(SecurityUtils.getAppUserId());
}
Page<AppTaskVO> appTaskVOPage = baseMapper.appQueryPageList(appTaskDTOPage, dto);
if(dto.getMyTask() && ProjectTaskStatus.APPLY.getCode().equals(dto.getStatus())
&&CollectionUtil.isEmpty(taskIds)){
appTaskVOPage.setRecords(new ArrayList<AppTaskVO>());
appTaskVOPage.setTotal(0);
}
return PageUtils.buildDataInfo(appTaskVOPage);
}
@Override
public List<AppTaskVO> appQueryList() {
LambdaQueryWrapper<FbsProjectTask> wrapper = new LambdaQueryWrapper<>();
System.out.println(SecurityUtils.getAppUserId());
wrapper.eq(FbsProjectTask::getUserId,SecurityUtils.getAppUserId());
wrapper.eq(FbsProjectTask::getStatus,ProjectTaskStatus.PROGRESS.getCode());
List<FbsProjectTask> fbsProjectTasks = baseMapper.selectList(wrapper);
return BeanUtil.copyToList(fbsProjectTasks,AppTaskVO.class);
}
@Override
public AppTaskDetailVO appQueryById(Long id) {
FbsProjectTask byId = getById(id);
@ -155,43 +177,47 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
//项目信息
ZbfProject project = zbfProjectService.getById(byId.getProjectId());
appTaskDetailVO.setProjectName(project.getProjectName());
//务工者数量列表
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));
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());
//结算情况
//收款申请列表
BgtWageApplicationQueryDTO wageDTO = new BgtWageApplicationQueryDTO();
wageDTO.setTaskId(id);
List<BgtWageApplicationListVO> wageList = wageApplicationService.appQueryList(wageDTO);
appTaskDetailVO.setWageApplicationList(wageList);
//收款金额
Integer taskReceiveAmount = wageList.stream().filter(wage -> AuditStatus.PASS.getCode().equals(wage.getAuditStatus()))
.mapToInt(BgtWageApplicationListVO::getApplicantAmount)
.sum();
appTaskDetailVO.setTaskReceiveAmount(taskReceiveAmount);
//付款金额
BgtProjectRecruitApplyQueryDTO bgtProjectRecruitApplyQueryDTO = new BgtProjectRecruitApplyQueryDTO();
bgtProjectRecruitApplyQueryDTO.setRecruitIds(recruitIds);
bgtProjectRecruitApplyQueryDTO.setStatus(Collections.singletonList(RecruitApplyStatus.WORKING.getCode()));
appTaskDetailVO.setApplyList(recruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO));
//任务进度
appTaskDetailVO.setProgress(progressService.getLastProgress(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);
//结算情况
//收款申请列表
BgtWageApplicationQueryDTO wageDTO = new BgtWageApplicationQueryDTO();
wageDTO.setTaskId(id);
List<BgtWageApplicationListVO> wageList = wageApplicationService.appQueryList(wageDTO);
appTaskDetailVO.setWageApplicationList(wageList);
//收款金额
Integer taskReceiveAmount = wageList.stream().filter(wage -> AuditStatus.PASS.getCode().equals(wage.getAuditStatus()))
.mapToInt(BgtWageApplicationListVO::getApplicantAmount)
.sum();
appTaskDetailVO.setTaskReceiveAmount(taskReceiveAmount);
//付款金额
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;
}