分包
This commit is contained in:
@ -4,9 +4,7 @@ package com.ruoyi.zbf.service;
|
||||
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.fbs.domain.dto.FbsProjectListDTO;
|
||||
import com.ruoyi.fbs.domain.vo.FbsProjectDetailVO;
|
||||
import com.ruoyi.fbs.domain.vo.FbsProjectListCountVO;
|
||||
import com.ruoyi.fbs.domain.vo.FbsProjectListVO;
|
||||
import com.ruoyi.fbs.domain.vo.*;
|
||||
import com.ruoyi.zbf.bo.ZbfProjectQueryBo;
|
||||
import com.ruoyi.zbf.domain.ZbfProject;
|
||||
import com.ruoyi.zbf.domain.dto.ZbfProjectAddDTO;
|
||||
@ -97,6 +95,11 @@ public interface IZbfProjectService extends IServicePlus<ZbfProject> {
|
||||
*/
|
||||
FbsProjectDetailVO signUpDetail(Long projectId);
|
||||
|
||||
/**
|
||||
* 分包商查看所有申请项目详情
|
||||
*/
|
||||
FbsProjectDetailVO applyAllDetail(Long projectId);
|
||||
|
||||
/**
|
||||
* 分包商查看已申请项目详情
|
||||
*/
|
||||
@ -107,6 +110,18 @@ public interface IZbfProjectService extends IServicePlus<ZbfProject> {
|
||||
*/
|
||||
FbsProjectDetailVO joinOrCompleteDetail(Long projectId);
|
||||
|
||||
/**
|
||||
* 分包商查询项目详情-用工进度
|
||||
*/
|
||||
FbsProjectTaskDetailProgressVO fbsProgress(Long projectId);
|
||||
|
||||
/**
|
||||
* 分包商查询项目详情-结算情况
|
||||
*/
|
||||
FbsProjectTaskDetailWageVO fbsWage(Long projectId);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 总包方新增项目
|
||||
*/
|
||||
@ -121,4 +136,7 @@ public interface IZbfProjectService extends IServicePlus<ZbfProject> {
|
||||
* 总包方查询自建项目统计
|
||||
*/
|
||||
ZbfProjectCountVO projectCount();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -6,14 +6,22 @@ import cn.hutool.core.util.StrUtil;
|
||||
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.bgt.domain.BgtProjectTaskProgress;
|
||||
import com.ruoyi.bgt.domain.BgtWageApplication;
|
||||
import com.ruoyi.bgt.service.IBgtProjectTaskProgressService;
|
||||
import com.ruoyi.bgt.service.IBgtWageApplicationService;
|
||||
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.enums.ProjectStatus;
|
||||
import com.ruoyi.common.enums.SubcontractingApplyStatus;
|
||||
import com.ruoyi.common.utils.PageUtils;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.fbs.domain.FbsProjectTask;
|
||||
import com.ruoyi.fbs.domain.FbsWageApplication;
|
||||
import com.ruoyi.fbs.domain.dto.FbsProjectListDTO;
|
||||
import com.ruoyi.fbs.domain.vo.*;
|
||||
import com.ruoyi.fbs.service.IFbsProjectTaskService;
|
||||
import com.ruoyi.fbs.service.IFbsWageApplicationService;
|
||||
import com.ruoyi.zbf.bo.ZbfProjectQueryBo;
|
||||
import com.ruoyi.zbf.domain.ZbfProject;
|
||||
import com.ruoyi.zbf.domain.ZbfProjectSection;
|
||||
@ -36,6 +44,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -54,6 +63,14 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf
|
||||
private IZbfProjectSubcontractingService zbfProjectSubcontractingService;
|
||||
@Autowired
|
||||
private IZbfProjectSubcontractingApplyService zbfProjectSubcontractingApplyService;
|
||||
@Autowired
|
||||
private IFbsProjectTaskService fbsProjectTaskService;
|
||||
@Autowired
|
||||
private IBgtProjectTaskProgressService bgtProjectTaskProgressService;
|
||||
@Autowired
|
||||
private IFbsWageApplicationService fbsWageApplicationService;
|
||||
@Autowired
|
||||
private IBgtWageApplicationService bgtWageApplicationService;
|
||||
|
||||
@Override
|
||||
public ZbfProject queryById(Long id) {
|
||||
@ -332,6 +349,58 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf
|
||||
return fbsProjectDetailVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FbsProjectDetailVO applyAllDetail(Long projectId) {
|
||||
ZbfProject byId = getById(projectId);
|
||||
FbsProjectDetailVO fbsProjectDetailVO = BeanUtil.copyProperties(byId, FbsProjectDetailVO.class);
|
||||
//查询项目下的所有申请中的申请和已拒绝的申请
|
||||
List<ZbfProjectSubcontractingApply> applyList = zbfProjectSubcontractingApplyService.list(Wrappers.<ZbfProjectSubcontractingApply>lambdaQuery()
|
||||
.eq(ZbfProjectSubcontractingApply::getProjectId, projectId)
|
||||
.eq(ZbfProjectSubcontractingApply::getFbsUserId, SecurityUtils.getAppUserId())
|
||||
.in(ZbfProjectSubcontractingApply::getApplyStatus, SubcontractingApplyStatus.getApplyAllStatus()));
|
||||
HashMap<Long, String> map = applyList.stream()
|
||||
.collect(Collectors.toMap(
|
||||
ZbfProjectSubcontractingApply::getSubId,
|
||||
ZbfProjectSubcontractingApply::getApplyStatus,
|
||||
(existing, replacement) -> replacement,
|
||||
HashMap::new
|
||||
));
|
||||
//标段处理
|
||||
List<FbsProjectSectionListVO> sectionListVO = new ArrayList<>();
|
||||
//查询项目下的所有标段
|
||||
List<ZbfProjectSection> sectionList = zbfProjectSectionService.list(Wrappers.<ZbfProjectSection>lambdaQuery()
|
||||
.eq(ZbfProjectSection::getProjectId, projectId));
|
||||
for (ZbfProjectSection zbfProjectSection : sectionList) {
|
||||
//分包处理
|
||||
List<FbsProjectSubcontractingListVO> subListVO = new ArrayList<>();
|
||||
//查询标段下的所有的分包
|
||||
List<ZbfProjectSubcontracting> subList = zbfProjectSubcontractingService.list(Wrappers.<ZbfProjectSubcontracting>lambdaQuery()
|
||||
.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId()));
|
||||
//排除掉未申请、已拒绝、已取消的分包
|
||||
for (ZbfProjectSubcontracting sub : subList) {
|
||||
String status = map.get(sub.getId());
|
||||
if (StrUtil.isBlank(status)) {
|
||||
continue;
|
||||
}
|
||||
FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO();
|
||||
BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO);
|
||||
fbsProjectSubcontractingListVO.setApplyStatus(status);
|
||||
subListVO.add(fbsProjectSubcontractingListVO);
|
||||
}
|
||||
if (CollectionUtil.isEmpty(subListVO)) {
|
||||
continue;
|
||||
}
|
||||
FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO();
|
||||
BeanUtil.copyProperties(zbfProjectSection, fbsProjectSectionListVO);
|
||||
fbsProjectSectionListVO.setSubList(subListVO);
|
||||
|
||||
sectionListVO.add(fbsProjectSectionListVO);
|
||||
}
|
||||
fbsProjectDetailVO.setSectionList(sectionListVO);
|
||||
return fbsProjectDetailVO;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public FbsProjectDetailVO applyDetail(Long projectId) {
|
||||
ZbfProject byId = getById(projectId);
|
||||
@ -419,6 +488,63 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf
|
||||
return sectionListVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FbsProjectTaskDetailProgressVO fbsProgress(Long projectId) {
|
||||
//查询所有创建的任务
|
||||
List<FbsProjectTask> taskList = fbsProjectTaskService.list(Wrappers.<FbsProjectTask>lambdaQuery()
|
||||
.eq(FbsProjectTask::getCreateId, SecurityUtils.getAppUserId())
|
||||
.eq(FbsProjectTask::getProjectId, projectId)
|
||||
);
|
||||
FbsProjectTaskDetailProgressVO vo = new FbsProjectTaskDetailProgressVO();
|
||||
List<Long> taskIds = taskList.stream().map(FbsProjectTask::getId).collect(Collectors.toList());
|
||||
if(CollectionUtil.isNotEmpty(taskIds)){
|
||||
List<BgtProjectTaskProgress> progressByTaskIds = bgtProjectTaskProgressService.getProgressByTaskIds(taskIds);
|
||||
|
||||
vo.setProgress(progressByTaskIds.stream().mapToInt(BgtProjectTaskProgress::getProgress).sum());
|
||||
vo.setTotalProgress(taskList.size() * 100);
|
||||
}
|
||||
return vo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FbsProjectTaskDetailWageVO fbsWage(Long projectId) {
|
||||
FbsProjectTaskDetailWageVO vo = new FbsProjectTaskDetailWageVO();
|
||||
List<ZbfProjectSubcontracting> subList = zbfProjectSubcontractingService.list(Wrappers.<ZbfProjectSubcontracting>lambdaQuery()
|
||||
.eq(ZbfProjectSubcontracting::getProjectId, projectId)
|
||||
.eq(ZbfProjectSubcontracting::getUserId, SecurityUtils.getAppUserId())
|
||||
);
|
||||
List<Long> subIds = subList.stream().map(ZbfProjectSubcontracting::getId).collect(Collectors.toList());
|
||||
|
||||
//总金额
|
||||
BigDecimal totalAmount = subList.stream().map(ZbfProjectSubcontracting::getSubAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
vo.setTotalAmount(totalAmount);
|
||||
|
||||
//接收金额
|
||||
vo.setReceiveAmount(BigDecimal.ZERO);
|
||||
if(CollectionUtil.isNotEmpty(subIds)){
|
||||
List<FbsWageApplication> passList= fbsWageApplicationService.getPassListBySubIds(subIds);
|
||||
BigDecimal receiveAmount = passList.stream().map(FbsWageApplication::getApplicantAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
vo.setReceiveAmount(receiveAmount);
|
||||
|
||||
List<FbsProjectTask> taskList = fbsProjectTaskService.list(Wrappers.<FbsProjectTask>lambdaQuery()
|
||||
.in(FbsProjectTask::getSubId, subIds)
|
||||
.eq(FbsProjectTask::getCreateId, SecurityUtils.getAppUserId())
|
||||
);
|
||||
//支付总金额
|
||||
BigDecimal payTotalAmount = taskList.stream().map(FbsProjectTask::getTaskAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
vo.setPayTotalAmount(payTotalAmount);
|
||||
|
||||
//已支付金额
|
||||
vo.setPayAmount(BigDecimal.ZERO);
|
||||
if(CollectionUtil.isNotEmpty(subIds)){
|
||||
List<BgtWageApplication> payList = bgtWageApplicationService.getPassListByTaskIds(subIds);
|
||||
BigDecimal payAmount = payList.stream().map(BgtWageApplication::getApplicantAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
vo.setPayAmount(payAmount);
|
||||
}
|
||||
}
|
||||
return vo;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean add(ZbfProjectAddDTO dto) {
|
||||
|
Reference in New Issue
Block a user