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