This commit is contained in:
zt
2025-04-18 14:45:08 +08:00
parent d6efd8c450
commit ddff49d08c
14 changed files with 278 additions and 19 deletions

View File

@ -9,6 +9,7 @@ import com.ruoyi.bgt.domain.vo.BgtWageApplicationVO;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.fbs.domain.dto.FbsWageAuditListDTO;
import com.ruoyi.zbf.domain.dto.ZbfGetBgtWageListDTO;
import java.util.Collection;
import java.util.List;
@ -87,4 +88,9 @@ public interface IBgtWageApplicationService extends IServicePlus<BgtWageApplicat
* 获取任务下先已审核通过的数据
*/
List<BgtWageApplication> getPassListByTaskIds(List<Long> taskIds);
/**
* 总包方查询任务详情-单个-工资结算审批列表
*/
TableDataInfo<BgtWageApplication> taskWageList(ZbfGetBgtWageListDTO dto);
}

View File

@ -29,6 +29,7 @@ import com.ruoyi.fbs.domain.dto.FbsWageAuditListDTO;
import com.ruoyi.fbs.service.IFbsMessageService;
import com.ruoyi.fbs.service.IFbsProjectTaskService;
import com.ruoyi.fbs.service.IFbsUserService;
import com.ruoyi.zbf.domain.dto.ZbfGetBgtWageListDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -102,14 +103,15 @@ public class BgtWageApplicationServiceImpl extends ServicePlusImpl<BgtWageApplic
@Transactional(rollbackFor = Exception.class)
public Boolean insert(BgtWageApplication bo) {
//判断申请金额
List<BgtWageApplication> list = list(Wrappers.<BgtWageApplication>lambdaQuery().eq(BgtWageApplication::getTaskId, bo.getTaskId())
List<BgtWageApplication> list = list(Wrappers.<BgtWageApplication>lambdaQuery()
.eq(BgtWageApplication::getTaskId, bo.getTaskId())
.eq(BgtWageApplication::getUserId, SecurityUtils.getAppUserId())
.in(BgtWageApplication::getAuditStatus, AuditStatus.getUse()));
boolean b = list.stream()
.anyMatch(app -> AuditStatus.AUDIT.getCode().equals(app.getAuditStatus()));
if(b){
throw new BaseException("您还有未审核的申请,待审核完之后在进行申请");
throw new BaseException("该任务存在未审核的工资申请,请等待审核完之后再提交");
}
//收款金额
int taskUseAmount = list.stream()
@ -259,4 +261,16 @@ public class BgtWageApplicationServiceImpl extends ServicePlusImpl<BgtWageApplic
.eq(BgtWageApplication::getAuditStatus, AuditStatus.PASS.getCode());
return list(wrapper);
}
@Override
public TableDataInfo<BgtWageApplication> taskWageList(ZbfGetBgtWageListDTO dto) {
LambdaQueryWrapper<BgtWageApplication> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(dto.getTaskId()!=null,BgtWageApplication::getTaskId, dto.getTaskId())
.eq(dto.getSubId()!=null,BgtWageApplication::getSubId, dto.getSubId())
.eq(BgtWageApplication::getUserId, dto.getBgtUserId())
.eq(BgtWageApplication::getAuditStatus, dto.getType())
.orderByDesc(BgtWageApplication::getId);
Page<BgtWageApplication> result = page(PageUtils.buildPage(), wrapper);
return PageUtils.buildDataInfo(result);
}
}

View File

@ -22,7 +22,7 @@ public class FbsWageApplicationListDTO {
@ApiModelProperty("当前页数")
private Integer pageNum;
@ApiModelProperty("类型:0-申请中 1-已结算")
@ApiModelProperty("类型:1-待审核 2-同意 3-拒绝")
private Integer type;
@ApiModelProperty("项目Id")

View File

@ -20,12 +20,14 @@ import com.ruoyi.bgt.service.IBgtMessageService;
import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService;
import com.ruoyi.bgt.service.IBgtProjectTaskProgressService;
import com.ruoyi.bgt.service.IBgtWageApplicationService;
import com.ruoyi.common.core.domain.entity.FbsUser;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.AuditStatus;
import com.ruoyi.common.enums.ProjectTaskStatus;
import com.ruoyi.common.enums.RecruitApplyStatus;
import com.ruoyi.common.enums.TaskApplyStatus;
import com.ruoyi.common.exception.BaseException;
import com.ruoyi.common.util.DataUtil;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.PageUtils;
@ -39,6 +41,7 @@ import com.ruoyi.fbs.domain.vo.*;
import com.ruoyi.fbs.mapper.FbsProjectTaskMapper;
import com.ruoyi.fbs.service.IFbsProjectTaskApplyService;
import com.ruoyi.fbs.service.IFbsProjectTaskService;
import com.ruoyi.fbs.service.IFbsUserService;
import com.ruoyi.wgz.service.IWgzAttendanceService;
import com.ruoyi.wgz.service.IWgzPayCalculationService;
import com.ruoyi.zbf.domain.ZbfProject;
@ -93,6 +96,8 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
private IFbsProjectTaskService fbsProjectTaskService;
@Autowired
private IBgtMessageService bgtMessageService;
@Autowired
private IFbsUserService fbsUserService;
@Override
public FbsProjectTask queryById(Long id){
@ -158,7 +163,11 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
* @param entity 实体类数据
*/
private void validEntityBeforeSave(FbsProjectTask entity){
//TODO 做一些数据校验,如唯一约束
Long appUserId = SecurityUtils.getAppUserId();
FbsUser fbsUser = fbsUserService.selectUserByUserId(appUserId);
if( fbsUser.getCompanyId()==null){
throw new BaseException("尚未企业认证");
}
}
@Override

View File

@ -1,7 +1,6 @@
package com.ruoyi.fbs.service.impl;
import cn.hutool.core.bean.BeanUtil;
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;
@ -165,8 +164,7 @@ public class FbsWageApplicationServiceImpl extends ServicePlusImpl<FbsWageApplic
LambdaQueryWrapper<FbsWageApplication> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(FbsWageApplication::getUserId, SecurityUtils.getAppUserId())
.eq(dto.getProjectId()!=null,FbsWageApplication::getProjectId, dto.getProjectId())
.eq(ObjectUtil.equal(dto.getType(),0), FbsWageApplication::getAuditStatus, AuditStatus.AUDIT.getCode())
.in(ObjectUtil.equal(dto.getType(),1), FbsWageApplication::getAuditStatus, AuditStatus.getAudit())
.eq(dto.getType()!=null, FbsWageApplication::getAuditStatus, dto.getType())
.orderByDesc(FbsWageApplication::getId)
;
Page<FbsWageApplication> result = page(PageUtils.buildPage(), wrapper);
@ -185,10 +183,10 @@ public class FbsWageApplicationServiceImpl extends ServicePlusImpl<FbsWageApplic
public TableDataInfo<FbsWageApplication> zbfWageList(ZbfWageApplicationListDTO dto) {
LambdaQueryWrapper<FbsWageApplication> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(FbsWageApplication::getReviewerId, SecurityUtils.getAppUserId())
.eq(ObjectUtil.equal(dto.getType(),0), FbsWageApplication::getAuditStatus, AuditStatus.AUDIT.getCode())
.in(ObjectUtil.equal(dto.getType(),1), FbsWageApplication::getAuditStatus, AuditStatus.getAudit())
.eq(dto.getType()!=null, FbsWageApplication::getAuditStatus, dto.getType())
.eq(dto.getProjectId()!=null,FbsWageApplication::getProjectId, dto.getProjectId())
.eq(dto.getSubId()!=null,FbsWageApplication::getSubId, dto.getSubId())
.orderByDesc(FbsWageApplication::getId)
;
Page<FbsWageApplication> result = page(PageUtils.buildPage(), wrapper);
return PageUtils.buildDataInfo(result);
@ -230,6 +228,13 @@ public class FbsWageApplicationServiceImpl extends ServicePlusImpl<FbsWageApplic
.eq(FbsWageApplication::getSubId, bo.getSubId())
.eq(FbsWageApplication::getUserId, SecurityUtils.getAppUserId())
.in(FbsWageApplication::getAuditStatus, AuditStatus.getUse()));
boolean b = list.stream()
.anyMatch(item -> AuditStatus.AUDIT.getCode().equals(item.getAuditStatus()));
if(b){
throw new BaseException("该分包存在未审核的工资申请,请等待审核完成之后再提交");
}
//收款金额
int taskUseAmount = list.stream()
.map(FbsWageApplication::getApplicantAmount)
@ -247,6 +252,9 @@ public class FbsWageApplicationServiceImpl extends ServicePlusImpl<FbsWageApplic
ZbfProject project = iZbfProjectService.getById(bo.getProjectId());
ZbfUser zbfUser = iZbfUserService.selectUserByUserId(project.getUserId());
if (zbfUser == null) {
throw new BaseException("获取不到总包方信息");
}
add.setReviewerName(zbfUser.getUsername());
add.setReviewerId(zbfUser.getUserId());
add.setProjectName(project.getProjectName());

View File

@ -0,0 +1,41 @@
package com.ruoyi.zbf.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 包工头工资申请分页查询对象 bgt_wage_application
*
* @author ruoyi
* @date 2025-02-20
*/
@Data
@ApiModel("App总包方查看包工头工资申请分页查询对象")
public class ZbfGetBgtWageListDTO {
/** 分页大小 */
@ApiModelProperty("分页大小")
private Integer pageSize;
/** 当前页数 */
@ApiModelProperty("当前页数")
private Integer pageNum;
@ApiModelProperty("任务ID(单个)")
private Long taskId;
@ApiModelProperty("分包ID(总和)")
private Long subId;
@ApiModelProperty("包工头用户ID")
@NotNull(message = "包工头用户ID不能为空")
private Long bgtUserId;
@ApiModelProperty("筛选1申请中 2已结算 3未通过")
private Integer type;
}

View File

@ -22,7 +22,7 @@ public class ZbfWageApplicationListDTO {
@ApiModelProperty("当前页数")
private Integer pageNum;
@ApiModelProperty("类型:0-申请中 1-已结算")
@ApiModelProperty("类型:1-待审核 2-同意 3-拒绝")
private Integer type;
@ApiModelProperty("项目Id")

View File

@ -0,0 +1,33 @@
package com.ruoyi.zbf.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
/**
* 总包方项目标段对象 zbf_project_section
*
* @author ruoyi
* @date 2025-02-17
*/
@Data
@Accessors(chain = true)
@ApiModel("总包方项目标段修改视图对象")
public class ZbfProjectSectionUpdateVO {
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("标段名称")
private String sectionName;
@ApiModelProperty("标段描述")
private String sectionDescribe;
@ApiModelProperty("分包列表")
private List<ZbfProjectSubcontractingUpdateVO> subList;
}

View File

@ -0,0 +1,39 @@
package com.ruoyi.zbf.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
/**
* 总包方项目分包对象 zbf_project_subcontracting
*
* @author ruoyi
* @date 2025-02-17
*/
@Data
@Accessors(chain = true)
@ApiModel("总包方项目分包编辑视图对象")
public class ZbfProjectSubcontractingUpdateVO {
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("分包主题")
private String subName;
@ApiModelProperty("分包描述")
private String subDescribe;
@ApiModelProperty("分包金额")
private BigDecimal subAmount;
@ApiModelProperty("资质要求")
private String qualification;
@ApiModelProperty("备注")
private String remark;
}

View File

@ -0,0 +1,51 @@
package com.ruoyi.zbf.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
/**
* 总包方项目对象 zbf_project
*
* @author ruoyi
* @date 2025-02-17
*/
@Data
@Accessors(chain = true)
@ApiModel("总包方项目编辑视图")
public class ZbfProjectUpdateVO {
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("单位名称")
private String unitName;
@ApiModelProperty("统一社会信用代码")
private String creditCode;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("项目图片")
private String projectImg;
@ApiModelProperty("项目地址")
private String projectAddress;
@ApiModelProperty("联系人")
private String contactPerson;
@ApiModelProperty("联系电话")
private String contactPhone;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("标段列表")
private List<ZbfProjectSectionUpdateVO> sectionList;
}

View File

@ -134,11 +134,14 @@ public interface IZbfProjectService extends IServicePlus<ZbfProject> {
*/
Boolean add(ZbfProjectAddDTO dto);
/**
* 总包方编辑项目
*/
Boolean edit(ZbfProjectAddDTO dto);
/**
* 总包方获取编辑所需项目信息
*/
ZbfProjectUpdateVO zbfEditInfo(Long projectId);
/**
* 总包方查询我的项目列表
*/

View File

@ -12,6 +12,7 @@ import com.ruoyi.bgt.domain.BgtWageApplication;
import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService;
import com.ruoyi.bgt.service.IBgtProjectTaskProgressService;
import com.ruoyi.bgt.service.IBgtWageApplicationService;
import com.ruoyi.common.core.domain.entity.ZbfUser;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.ProjectStatus;
@ -39,10 +40,7 @@ import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply;
import com.ruoyi.zbf.domain.dto.*;
import com.ruoyi.zbf.domain.vo.*;
import com.ruoyi.zbf.mapper.ZbfProjectMapper;
import com.ruoyi.zbf.service.IZbfProjectSectionService;
import com.ruoyi.zbf.service.IZbfProjectService;
import com.ruoyi.zbf.service.IZbfProjectSubcontractingApplyService;
import com.ruoyi.zbf.service.IZbfProjectSubcontractingService;
import com.ruoyi.zbf.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -82,7 +80,8 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf
private IWgzAttendanceService wgzAttendanceService;
@Autowired
private IWgzPayCalculationService wgzPayCalculationService;
@Autowired
private IZbfUserService zbfUserService;
@Override
public ZbfProject queryById(Long id) {
@ -585,6 +584,14 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean add(ZbfProjectAddDTO dto) {
//校验
Long appUserId = SecurityUtils.getAppUserId();
ZbfUser zbfUser = zbfUserService.selectUserByUserId(appUserId);
if( zbfUser.getCompanyId()==null){
throw new BaseException("尚未企业认证");
}
ZbfProject project = BeanUtil.copyProperties(dto, ZbfProject.class, "id");
project.setUserId(SecurityUtils.getAppUserId());
boolean save = save(project);
@ -684,11 +691,38 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf
return update;
}
@Override
public ZbfProjectUpdateVO zbfEditInfo(Long projectId) {
ZbfProject byId = getById(projectId);
ZbfProjectUpdateVO zbfProjectUpdateVO = BeanUtil.copyProperties(byId, ZbfProjectUpdateVO.class);
//标段处理
List<ZbfProjectSectionUpdateVO> sectionListVO = new ArrayList<>();
//查询项目下的所有标段
List<ZbfProjectSection> sectionList = zbfProjectSectionService.list(Wrappers.<ZbfProjectSection>lambdaQuery()
.eq(ZbfProjectSection::getProjectId, zbfProjectUpdateVO.getId()));
for (ZbfProjectSection zbfProjectSection : sectionList) {
//分包处理
//查询标段下的所有的分包
List<ZbfProjectSubcontracting> subList = zbfProjectSubcontractingService.list(Wrappers.<ZbfProjectSubcontracting>lambdaQuery()
.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId()));
List<ZbfProjectSubcontractingUpdateVO> zbfProjectSubcontractingListVOS = BeanUtil.copyToList(subList, ZbfProjectSubcontractingUpdateVO.class);
ZbfProjectSectionUpdateVO zbfProjectSectionUpdateVO = new ZbfProjectSectionUpdateVO();
BeanUtil.copyProperties(zbfProjectSection, zbfProjectSectionUpdateVO);
zbfProjectSectionUpdateVO.setSubList(zbfProjectSubcontractingListVOS);
sectionListVO.add(zbfProjectSectionUpdateVO);
}
zbfProjectUpdateVO.setSectionList(sectionListVO);
return zbfProjectUpdateVO;
}
@Override
public TableDataInfo<ZbfProjectListVO> queryZbfList(ZbfProjectListDTO dto) {
LambdaQueryWrapper<ZbfProject> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ZbfProject::getUserId, SecurityUtils.getAppUserId());
wrapper.like(StrUtil.isNotBlank(dto.getProjectName()), ZbfProject::getProjectName, dto.getProjectName());
wrapper.orderByDesc(ZbfProject::getId);
Page<ZbfProject> result = page(PageUtils.buildPage(), wrapper);
List<ZbfProjectListVO> zbfProjectListVOS = BeanUtil.copyToList(result.getRecords(), ZbfProjectListVO.class);
@ -742,6 +776,7 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf
wrapper.eq(ZbfProject::getUserId, SecurityUtils.getAppUserId());
wrapper.like(StrUtil.isNotBlank(dto.getProjectName()), ZbfProject::getProjectName, dto.getProjectName());
wrapper.eq(StrUtil.isNotBlank(dto.getProjectStatus()), ZbfProject::getProjectStatus, dto.getProjectStatus());
wrapper.orderByDesc(ZbfProject::getId);
Page<ZbfProject> result = page(PageUtils.buildPage(), wrapper);
return PageUtils.buildDataInfo(result);
}