分包商

This commit is contained in:
zt
2025-03-27 16:20:41 +08:00
parent 823d935d2d
commit e35e17df3e
35 changed files with 615 additions and 107 deletions

View File

@ -1,4 +1,4 @@
package com.ruoyi.fbs.domain.dto;
package com.ruoyi.bgt.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -6,7 +6,7 @@ import lombok.Data;
@Data
@ApiModel("app申请/取消项目任务")
public class TaskApplyDTO {
public class BgtTaskApplyDTO {
@ApiModelProperty("任务ID")
private Long taskId;

View File

@ -1,4 +1,4 @@
package com.ruoyi.fbs.domain.dto;
package com.ruoyi.bgt.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -8,7 +8,7 @@ import java.util.List;
@Data
@ApiModel("app项目任务列表查询条件")
public class AppTaskDTO {
public class BgtTaskDTO {
@ApiModelProperty("分页大小")
private Integer pageSize;
/** 当前页数 */

View File

@ -22,7 +22,7 @@ import java.util.List;
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("包工头实名认证对象")
public class UserRealNameAuthenticationDTO {
public class BgtUserRealNameAuthenticationDTO {
@ApiModelProperty("主键")
@NotNull(message = "主键不能为空")

View File

@ -1,6 +1,5 @@
package com.ruoyi.fbs.domain.vo;
package com.ruoyi.bgt.domain.vo;
import com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -10,14 +9,14 @@ import java.math.BigDecimal;
@Data
@ApiModel("包工头项目任务详情-结算情况")
public class AppTaskDetailWageVO {
public class BgtTaskDetailWageVO {
@ApiModelProperty("主键ID")
private Long id;
//结算情况
@ApiModelProperty("任务收款金额")
private Integer taskReceiveAmount;
private BigDecimal taskReceiveAmount;
@ApiModelProperty("任务付款金额")
private BigDecimal taskPaymentAmount;

View File

@ -1,7 +1,7 @@
package com.ruoyi.bgt.service;
import com.ruoyi.bgt.bo.BgtUserQueryBo;
import com.ruoyi.bgt.domain.dto.UserRealNameAuthenticationDTO;
import com.ruoyi.bgt.domain.dto.BgtUserRealNameAuthenticationDTO;
import com.ruoyi.common.core.domain.entity.BgtUser;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo;
@ -65,7 +65,7 @@ public interface IBgtUserService extends IServicePlus<BgtUser> {
/**
* 实名认证
*/
Boolean realNameAuthentication(@Validated @RequestBody UserRealNameAuthenticationDTO dto);
Boolean realNameAuthentication(@Validated @RequestBody BgtUserRealNameAuthenticationDTO dto);
/**

View File

@ -7,7 +7,7 @@ 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.bo.BgtUserQueryBo;
import com.ruoyi.bgt.domain.dto.UserRealNameAuthenticationDTO;
import com.ruoyi.bgt.domain.dto.BgtUserRealNameAuthenticationDTO;
import com.ruoyi.bgt.mapper.BgtUserMapper;
import com.ruoyi.bgt.service.IBgtUserService;
import com.ruoyi.common.constant.Constants;
@ -126,7 +126,7 @@ public class BgtUserServiceImpl extends ServicePlusImpl<BgtUserMapper, BgtUser>
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean realNameAuthentication(UserRealNameAuthenticationDTO dto) {
public Boolean realNameAuthentication(BgtUserRealNameAuthenticationDTO dto) {
BgtUser bgtUser = baseMapper.selectOne(new LambdaQueryWrapper<BgtUser>().eq(BgtUser::getUserId, dto.getUserId()));
if(bgtUser == null){
throw new BaseException("用户不存在");

View File

@ -48,6 +48,9 @@ public class FbsProjectTask implements Serializable {
@ApiModelProperty("分包ID")
private Long subId;
@ApiModelProperty("分包主题")
private String subName;
/** 任务名称 */
@Excel(name = "任务名称")
@ApiModelProperty("任务名称")

View File

@ -41,6 +41,9 @@ public class FbsProjectTaskApply implements Serializable {
@ApiModelProperty("包工头用户ID")
private Long userId;
@ApiModelProperty("申请状态0=申请中,1=已同意,2=已拒绝,3=已取消)")
private String applyStatus;
/** 删除标志0代表存在 2代表删除 */
@Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除")
@ApiModelProperty("删除标志0代表存在 2代表删除")

View File

@ -0,0 +1,56 @@
package com.ruoyi.fbs.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.Pattern;
/**
* 分包商项目任务对象 fbs_project_task
*
* @author ruoyi
* @date 2025-02-17
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("分包商项目任务视图对象")
public class FbsProjectTaskUpdateDTO {
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("用工数量")
private Integer taskStaffNum;
@ApiModelProperty("任务开始时间")
private String taskBeginTime;
@ApiModelProperty("任务结束时间")
private String taskEndTime;
@ApiModelProperty("联系人")
private String taskContactPerson;
@ApiModelProperty("联系电话")
@Pattern(regexp = "^[0-9]+$",message = "联系电话只能是数字")
private String taskContactPhone;
@ApiModelProperty("任务描述")
private String taskDescribe;
@ApiModelProperty("任务图片")
private String taskImg;
@ApiModelProperty("任务附件")
private String taskAnnex;
@ApiModelProperty("资质要求")
private String qualification;
}

View File

@ -0,0 +1,24 @@
package com.ruoyi.fbs.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
@ApiModel("分包商任务申请列表查询条件")
public class FbsTaskApplyListDTO {
@ApiModelProperty("分页大小")
private Integer pageSize;
/** 当前页数 */
@ApiModelProperty("当前页数")
private Integer pageNum;
@ApiModelProperty("任务id")
@NotNull(message = "任务id不能为空")
private Long taskId;
}

View File

@ -0,0 +1,19 @@
package com.ruoyi.fbs.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("分包商任务列表查询条件")
public class FbsTaskListDTO {
@ApiModelProperty("分页大小")
private Integer pageSize;
/** 当前页数 */
@ApiModelProperty("当前页数")
private Integer pageNum;
@ApiModelProperty("任务类型0已发布 1已完成")
private Integer type;
}

View File

@ -1,10 +1,9 @@
package com.ruoyi.fbs.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO;
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;
@ -21,18 +20,12 @@ 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;

View File

@ -0,0 +1,46 @@
package com.ruoyi.fbs.domain.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 分包商项目任务申请对象 fbs_project_task_apply
*
* @author ruoyi
* @date 2025-02-17
*/
@Data
@ApiModel("分包商任务申请列表视图对象")
public class FbsProjectTaskApplyListVO {
/** 主键ID */
@ApiModelProperty("主键ID")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty("任务ID")
private Long taskId;
@ApiModelProperty("包工头用户ID")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long userId;
@ApiModelProperty("姓名")
private String username;
@ApiModelProperty("联系电话")
private String phone;
@ApiModelProperty("头像")
private String avatarName;
@ApiModelProperty("申请状态0=申请中,1=已同意,2=已拒绝,3=已取消)")
private String applyStatus;
}

View File

@ -0,0 +1,94 @@
package com.ruoyi.fbs.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
* 分包商项目任务对象 fbs_project_task
*
* @author ruoyi
* @date 2025-02-17
*/
@Data
@NoArgsConstructor
@ApiModel("分包商任务列表视图对象")
public class FbsProjectTaskListVO {
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("项目ID")
private Long projectId;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("标段ID")
private Long sectionId;
@ApiModelProperty("分包ID")
private Long subId;
@ApiModelProperty("分包主题")
private String subName;
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("任务地址")
private String taskAddress;
@ApiModelProperty("任务金额")
private BigDecimal taskAmount;
@ApiModelProperty("用工数量")
private Integer taskStaffNum;
@ApiModelProperty("任务开始时间")
private String taskBeginTime;
@ApiModelProperty("任务结束时间")
private String taskEndTime;
@ApiModelProperty("联系人")
private String taskContactPerson;
@ApiModelProperty("联系电话")
private String taskContactPhone;
@ApiModelProperty("任务描述")
private String taskDescribe;
@ApiModelProperty("任务图片")
private String taskImg;
@ApiModelProperty("任务附件")
private String taskAnnex;
@ApiModelProperty("资质要求")
private String qualification;
@ApiModelProperty("包工头用户ID")
private Long userId;
@ApiModelProperty("任务状态0未开始 1进行中 2已完成")
private String status;
@ApiModelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime createTime;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("申请列表")
private List<FbsProjectTaskApplyListVO> applyList;
}

View File

@ -0,0 +1,32 @@
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 FbsTaskDetailWageVO {
@ApiModelProperty("主键ID")
private Long id;
//结算情况
@ApiModelProperty("任务结算金额")
private BigDecimal taskAuditAmount;
@ApiModelProperty("任务申请金额")
private BigDecimal taskApplyAmount;
@ApiModelProperty("最新一条收款申请")
private BgtWageApplicationListVO wageApplication;
@ApiModelProperty("任务金额")
private BigDecimal taskAmount;
}

View File

@ -1,9 +1,13 @@
package com.ruoyi.fbs.mapper;
import com.ruoyi.fbs.domain.FbsProjectTaskApply;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import com.ruoyi.fbs.domain.FbsProjectTaskApply;
import com.ruoyi.fbs.domain.dto.FbsTaskApplyListDTO;
import com.ruoyi.fbs.domain.vo.FbsProjectTaskApplyListVO;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
/**
* 分包商项目任务申请Mapper接口
@ -15,4 +19,5 @@ import org.apache.ibatis.annotations.CacheNamespace;
@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class)
public interface FbsProjectTaskApplyMapper extends BaseMapperPlus<FbsProjectTaskApply> {
Page<FbsProjectTaskApplyListVO> queryPageListByTaskId(@Param("page") Page<FbsTaskApplyListDTO> page, @Param("dto") FbsTaskApplyListDTO dto);
}

View File

@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import com.ruoyi.fbs.domain.FbsProjectTask;
import com.ruoyi.fbs.domain.dto.AppTaskDTO;
import com.ruoyi.bgt.domain.dto.BgtTaskDTO;
import com.ruoyi.fbs.domain.vo.AppTaskVO;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
@ -19,6 +19,6 @@ import org.apache.ibatis.annotations.Param;
@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class)
public interface FbsProjectTaskMapper extends BaseMapperPlus<FbsProjectTask> {
Page<AppTaskVO> appQueryPageList(@Param("page") Page<AppTaskDTO> page, @Param("dto") AppTaskDTO dto);
Page<AppTaskVO> appQueryPageList(@Param("page") Page<BgtTaskDTO> page, @Param("dto") BgtTaskDTO dto);
}

View File

@ -1,10 +1,12 @@
package com.ruoyi.fbs.service;
import com.ruoyi.bgt.domain.dto.BgtTaskApplyDTO;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.fbs.bo.FbsProjectTaskApplyQueryBo;
import com.ruoyi.fbs.domain.FbsProjectTaskApply;
import com.ruoyi.fbs.domain.dto.TaskApplyDTO;
import com.ruoyi.fbs.domain.dto.FbsTaskApplyListDTO;
import com.ruoyi.fbs.domain.vo.FbsProjectTaskApplyListVO;
import java.util.Collection;
import java.util.List;
@ -57,7 +59,7 @@ public interface IFbsProjectTaskApplyService extends IServicePlus<FbsProjectTask
/**
* 申请承接
*/
Boolean appTaskApply(TaskApplyDTO dto);
Boolean appTaskApply(BgtTaskApplyDTO dto);
/**
* 获取包工头申请的所有任务ID
@ -67,5 +69,10 @@ public interface IFbsProjectTaskApplyService extends IServicePlus<FbsProjectTask
/**
* 取消申请
*/
Boolean cancelApply(TaskApplyDTO dto);
Boolean cancelApply(BgtTaskApplyDTO dto);
/**
* 查询任务下的包工头申请列表
*/
TableDataInfo<FbsProjectTaskApplyListVO> queryPageListByTaskId(FbsTaskApplyListDTO dto);
}

View File

@ -2,13 +2,15 @@ package com.ruoyi.fbs.service;
import com.ruoyi.bgt.domain.dto.BgtProjectTaskUserDTO;
import com.ruoyi.bgt.domain.dto.BgtTaskDTO;
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO;
import com.ruoyi.bgt.domain.vo.BgtProjectTaskUseCountVO;
import com.ruoyi.bgt.domain.vo.BgtTaskDetailWageVO;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
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.dto.FbsTaskListDTO;
import com.ruoyi.fbs.domain.vo.*;
import java.util.Collection;
@ -63,7 +65,7 @@ public interface IFbsProjectTaskService extends IServicePlus<FbsProjectTask> {
/**
* 包工头查询列表
*/
TableDataInfo<AppTaskVO> appQueryPageList(AppTaskDTO dto);
TableDataInfo<AppTaskVO> appQueryPageList(BgtTaskDTO dto);
/**
* App包工头任务列表不分页
@ -88,7 +90,7 @@ public interface IFbsProjectTaskService extends IServicePlus<FbsProjectTask> {
/**
* 任务详情-结算
*/
AppTaskDetailWageVO wage(Long id);
BgtTaskDetailWageVO wage(Long id);
/**
* 任务详情-务工人员
@ -105,8 +107,16 @@ public interface IFbsProjectTaskService extends IServicePlus<FbsProjectTask> {
*/
BgtProjectTaskUseCountVO taskUserCount(Long id);
/**
* 查询所有在进行中的任务
*/
List<FbsProjectTask> findOngoingTask();
/**
* 分包商查询任务列表
*/
TableDataInfo<FbsProjectTaskListVO> fbsPageList(FbsTaskListDTO dto);
/**
* 任务详情-结算
*/
FbsTaskDetailWageVO fbsWage(Long id);
}

View File

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.ruoyi.bgt.domain.BgtMessage;
import com.ruoyi.bgt.domain.dto.BgtTaskApplyDTO;
import com.ruoyi.bgt.service.IBgtMessageService;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.TableDataInfo;
@ -16,7 +17,8 @@ import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.fbs.bo.FbsProjectTaskApplyQueryBo;
import com.ruoyi.fbs.domain.FbsProjectTask;
import com.ruoyi.fbs.domain.FbsProjectTaskApply;
import com.ruoyi.fbs.domain.dto.TaskApplyDTO;
import com.ruoyi.fbs.domain.dto.FbsTaskApplyListDTO;
import com.ruoyi.fbs.domain.vo.FbsProjectTaskApplyListVO;
import com.ruoyi.fbs.mapper.FbsProjectTaskApplyMapper;
import com.ruoyi.fbs.service.IFbsProjectTaskApplyService;
import com.ruoyi.fbs.service.IFbsProjectTaskService;
@ -111,7 +113,7 @@ public class FbsProjectTaskApplyServiceImpl extends ServicePlusImpl<FbsProjectTa
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean appTaskApply(TaskApplyDTO dto) {
public Boolean appTaskApply(BgtTaskApplyDTO dto) {
FbsProjectTaskApply fbsProjectTaskApply = BeanUtil.copyProperties(dto, FbsProjectTaskApply.class);
validEntityBeforeSave(fbsProjectTaskApply);
@ -141,7 +143,7 @@ public class FbsProjectTaskApplyServiceImpl extends ServicePlusImpl<FbsProjectTa
}
@Override
public Boolean cancelApply(TaskApplyDTO dto) {
public Boolean cancelApply(BgtTaskApplyDTO dto) {
int delete = baseMapper.delete(Wrappers.<FbsProjectTaskApply>lambdaQuery().eq(FbsProjectTaskApply::getTaskId, dto.getTaskId())
.eq(FbsProjectTaskApply::getUserId, dto.getUserId()));
//发消息
@ -162,4 +164,13 @@ public class FbsProjectTaskApplyServiceImpl extends ServicePlusImpl<FbsProjectTa
bgtMessageService.sendAMessage(bgtMessage);
return delete>0;
}
@Override
public TableDataInfo<FbsProjectTaskApplyListVO> queryPageListByTaskId(FbsTaskApplyListDTO dto) {
Page<FbsTaskApplyListDTO> page = new Page<>();
page.setCurrent(dto.getPageNum());
page.setSize(dto.getPageSize());
Page<FbsProjectTaskApplyListVO> voPage = baseMapper.queryPageListByTaskId(page, dto);
return PageUtils.buildDataInfo(voPage);
}
}

View File

@ -7,12 +7,11 @@ 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.BgtProjectRecruitApply;
import com.ruoyi.bgt.domain.BgtWageApplication;
import com.ruoyi.bgt.domain.dto.BgtProjectTaskUserDTO;
import com.ruoyi.bgt.domain.dto.BgtTaskDTO;
import com.ruoyi.bgt.domain.dto.BgtWageApplicationQueryDTO;
import com.ruoyi.bgt.domain.vo.BgtDayAttendanceCountVO;
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO;
import com.ruoyi.bgt.domain.vo.BgtProjectTaskUseCountVO;
import com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO;
import com.ruoyi.bgt.domain.vo.*;
import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService;
import com.ruoyi.bgt.service.IBgtProjectTaskProgressService;
import com.ruoyi.bgt.service.IBgtWageApplicationService;
@ -27,9 +26,11 @@ 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;
import com.ruoyi.fbs.domain.dto.FbsTaskApplyListDTO;
import com.ruoyi.fbs.domain.dto.FbsTaskListDTO;
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.wgz.service.IWgzAttendanceService;
import com.ruoyi.wgz.service.IWgzPayCalculationService;
@ -41,6 +42,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@ -56,7 +58,6 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
@Autowired
private IZbfProjectService zbfProjectService;
@Autowired
private IBgtProjectRecruitApplyService recruitApplyService;
@Autowired
@ -67,6 +68,8 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
private IWgzAttendanceService attendanceService;
@Autowired
private IWgzPayCalculationService payCalculationService;
@Autowired
private IFbsProjectTaskApplyService fbsProjectTaskApplyService;
@Override
public FbsProjectTask queryById(Long id){
@ -136,8 +139,8 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
}
@Override
public TableDataInfo<AppTaskVO> appQueryPageList(AppTaskDTO dto) {
Page<AppTaskDTO> appTaskDTOPage = new Page<>();
public TableDataInfo<AppTaskVO> appQueryPageList(BgtTaskDTO dto) {
Page<BgtTaskDTO> appTaskDTOPage = new Page<>();
appTaskDTOPage.setCurrent(dto.getPageNum());
appTaskDTOPage.setSize(dto.getPageSize());
dto.setUserId(SecurityUtils.getAppUserId());
@ -151,6 +154,7 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
System.out.println(SecurityUtils.getAppUserId());
wrapper.eq(FbsProjectTask::getUserId,SecurityUtils.getAppUserId());
wrapper.eq(FbsProjectTask::getStatus,ProjectTaskStatus.PROGRESS.getCode());
wrapper.orderByDesc(FbsProjectTask::getId);
List<FbsProjectTask> fbsProjectTasks = baseMapper.selectList(wrapper);
return BeanUtil.copyToList(fbsProjectTasks,AppTaskVO.class);
}
@ -170,20 +174,20 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
appTaskDetailVO.setProgress(lastProgress);
BigDecimal bd = new BigDecimal(lastProgress).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
appTaskDetailVO.setProgressDouble(bd.doubleValue());
//结算情况
//收款申请列表
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()))
.map(BgtWageApplicationListVO::getApplicantAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add).intValue();
appTaskDetailVO.setTaskReceiveAmount(taskReceiveAmount);
//付款金额
BigDecimal payByTaskAndBgt = payCalculationService.getPayByTaskAndBgt(byId.getId(), byId.getUserId());
appTaskDetailVO.setTaskPaymentAmount(payByTaskAndBgt);
// //结算情况
// //收款申请列表
// 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()))
// .map(BgtWageApplicationListVO::getApplicantAmount)
// .reduce(BigDecimal.ZERO, BigDecimal::add).intValue();
// appTaskDetailVO.setTaskReceiveAmount(taskReceiveAmount);
// //付款金额
// BigDecimal payByTaskAndBgt = payCalculationService.getPayByTaskAndBgt(byId.getId(), byId.getUserId());
// appTaskDetailVO.setTaskPaymentAmount(payByTaskAndBgt);
}
return appTaskDetailVO;
@ -234,9 +238,9 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
}
@Override
public AppTaskDetailWageVO wage(Long id) {
public BgtTaskDetailWageVO wage(Long id) {
FbsProjectTask task = getById(id);
AppTaskDetailWageVO appTaskDetailVO = new AppTaskDetailWageVO();
BgtTaskDetailWageVO appTaskDetailVO = new BgtTaskDetailWageVO();
appTaskDetailVO.setId(id);
appTaskDetailVO.setTaskAmount(task.getTaskAmount());
//结算情况
@ -246,10 +250,10 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
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()))
int taskReceiveAmount = wageList.stream().filter(wage -> AuditStatus.PASS.getCode().equals(wage.getAuditStatus()))
.map(BgtWageApplicationListVO::getApplicantAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add).intValue();
appTaskDetailVO.setTaskReceiveAmount(taskReceiveAmount);
appTaskDetailVO.setTaskReceiveAmount(new BigDecimal(taskReceiveAmount));
//付款金额
BigDecimal payByTaskAndBgt = payCalculationService.getPayByTaskAndBgt(id, SecurityUtils.getAppUserId());
appTaskDetailVO.setTaskPaymentAmount(payByTaskAndBgt);
@ -298,4 +302,58 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
LambdaQueryWrapper<FbsProjectTask> wra = new LambdaQueryWrapper<FbsProjectTask>().eq(FbsProjectTask::getStatus, "1");
return baseMapper.selectList(wra);
}
@Override
public TableDataInfo<FbsProjectTaskListVO> fbsPageList(FbsTaskListDTO dto) {
LambdaQueryWrapper<FbsProjectTask> wrapper = new LambdaQueryWrapper<>();
wrapper.in(dto.getType()==0,FbsProjectTask::getStatus,ProjectTaskStatus.getRelease());
wrapper.eq(dto.getType()==1,FbsProjectTask::getStatus,ProjectTaskStatus.COMPLETE.getCode());
wrapper.orderByDesc(FbsProjectTask::getId);
Page<FbsProjectTask> page = page(PageUtils.buildPage(), wrapper);
List<FbsProjectTaskListVO> fbsProjectTaskListVOS = new ArrayList<>();
for (FbsProjectTask task : page.getRecords()){
FbsProjectTaskListVO fbsProjectTaskListVO = BeanUtil.copyProperties(task, FbsProjectTaskListVO.class);
//查询项目名称
ZbfProject project = zbfProjectService.getById(task.getProjectId());
fbsProjectTaskListVO.setProjectName(project.getProjectName());
//申请列表
FbsTaskApplyListDTO fbsTaskApplyListDTO = new FbsTaskApplyListDTO();
fbsTaskApplyListDTO.setPageNum(1);
fbsTaskApplyListDTO.setPageSize(3);
fbsTaskApplyListDTO.setTaskId(task.getId());
TableDataInfo<FbsProjectTaskApplyListVO> applyList = fbsProjectTaskApplyService.queryPageListByTaskId(fbsTaskApplyListDTO);
fbsProjectTaskListVO.setApplyList(applyList.getRows());
fbsProjectTaskListVOS.add(fbsProjectTaskListVO);
}
Page<FbsProjectTaskListVO> fbsProjectTaskListVOPage = new Page<>();
fbsProjectTaskListVOPage.setTotal(page.getTotal());
fbsProjectTaskListVOPage.setRecords(fbsProjectTaskListVOS);
return PageUtils.buildDataInfo(fbsProjectTaskListVOPage);
}
@Override
public FbsTaskDetailWageVO fbsWage(Long id) {
FbsTaskDetailWageVO fbsTaskDetailWageVO = new FbsTaskDetailWageVO();
List<BgtWageApplication> wageList = wageApplicationService.list(Wrappers.<BgtWageApplication>lambdaQuery()
.eq(BgtWageApplication::getTaskId, id).orderByDesc(BgtWageApplication::getId));
BigDecimal taskAuditAmount = BigDecimal.ZERO;
BigDecimal taskApplyAmount= BigDecimal.ZERO;
for (BgtWageApplication wage : wageList) {
taskApplyAmount = taskApplyAmount.add(wage.getApplicantAmount());
if(AuditStatus.PASS.getCode().equals(wage.getAuditStatus())){
taskAuditAmount = taskAuditAmount.add(wage.getApplicantAmount());
}
if(AuditStatus.AUDIT.getCode().equals(wage.getAuditStatus()) && fbsTaskDetailWageVO.getWageApplication() == null){
BgtWageApplicationListVO bgtWageApplicationListVO = BeanUtil.copyProperties(wage, BgtWageApplicationListVO.class);
fbsTaskDetailWageVO.setWageApplication(bgtWageApplicationListVO);
}
}
fbsTaskDetailWageVO.setTaskAuditAmount(taskAuditAmount);
fbsTaskDetailWageVO.setTaskApplyAmount(taskApplyAmount);
return fbsTaskDetailWageVO;
}
}

View File

@ -1,108 +0,0 @@
package com.ruoyi.zbf.controller;
import java.util.List;
import java.util.Arrays;
import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply;
import lombok.RequiredArgsConstructor;
import javax.validation.constraints.*;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.zbf.bo.ZbfProjectSubcontractingApplyQueryBo;
import com.ruoyi.zbf.service.IZbfProjectSubcontractingApplyService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* 总包方项目分包申请Controller
*
* @author ruoyi
* @date 2025-03-26
*/
@Api(value = "总包方项目分包申请控制器", tags = {"总包方项目分包申请管理"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/zbf/apply")
public class ZbfProjectSubcontractingApplyController extends BaseController {
private final IZbfProjectSubcontractingApplyService iZbfProjectSubcontractingApplyService;
/**
* 查询总包方项目分包申请列表
*/
@ApiOperation("查询总包方项目分包申请列表")
@PreAuthorize("@ss.hasPermi('zbf:apply:list')")
@GetMapping("/list")
public TableDataInfo<ZbfProjectSubcontractingApply> list(@Validated ZbfProjectSubcontractingApplyQueryBo bo) {
return iZbfProjectSubcontractingApplyService.queryPageList(bo);
}
/**
* 导出总包方项目分包申请列表
*/
@ApiOperation("导出总包方项目分包申请列表")
@PreAuthorize("@ss.hasPermi('zbf:apply:export')")
@Log(title = "总包方项目分包申请", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult<ZbfProjectSubcontractingApply> export(@Validated ZbfProjectSubcontractingApplyQueryBo bo) {
List<ZbfProjectSubcontractingApply> list = iZbfProjectSubcontractingApplyService.queryList(bo);
ExcelUtil<ZbfProjectSubcontractingApply> util = new ExcelUtil<ZbfProjectSubcontractingApply>(ZbfProjectSubcontractingApply.class);
return util.exportExcel(list, "总包方项目分包申请");
}
/**
* 获取总包方项目分包申请详细信息
*/
@ApiOperation("获取总包方项目分包申请详细信息")
@PreAuthorize("@ss.hasPermi('zbf:apply:query')")
@GetMapping("/{id}")
public AjaxResult<ZbfProjectSubcontractingApply> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return AjaxResult.success(iZbfProjectSubcontractingApplyService.queryById(id));
}
/**
* 新增总包方项目分包申请
*/
@ApiOperation("新增总包方项目分包申请")
@PreAuthorize("@ss.hasPermi('zbf:apply:add')")
@Log(title = "总包方项目分包申请", businessType = BusinessType.INSERT)
@RepeatSubmit
@PostMapping()
public AjaxResult<Void> add(@Validated @RequestBody ZbfProjectSubcontractingApply bo) {
return toAjax(iZbfProjectSubcontractingApplyService.insert(bo) ? 1 : 0);
}
/**
* 修改总包方项目分包申请
*/
@ApiOperation("修改总包方项目分包申请")
@PreAuthorize("@ss.hasPermi('zbf:apply:edit')")
@Log(title = "总包方项目分包申请", businessType = BusinessType.UPDATE)
@RepeatSubmit
@PutMapping()
public AjaxResult<Void> edit(@Validated @RequestBody ZbfProjectSubcontractingApply bo) {
return toAjax(iZbfProjectSubcontractingApplyService.update(bo) ? 1 : 0);
}
/**
* 删除总包方项目分包申请
*/
@ApiOperation("删除总包方项目分包申请")
@PreAuthorize("@ss.hasPermi('zbf:apply:remove')")
@Log(title = "总包方项目分包申请" , businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iZbfProjectSubcontractingApplyService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
}
}

View File

@ -55,8 +55,8 @@ public class ZbfProjectSubcontractingApply implements Serializable {
private Long fbsUserId;
/** 申请状态0申请中 1已同意 2已拒绝 */
@Excel(name = "申请状态" , readConverterExp = "0=申请中,1=已同意,2=已拒绝")
@ApiModelProperty("申请状态0申请中 1已同意 2已拒绝")
@Excel(name = "申请状态" , readConverterExp = "0=申请中,1=已同意,2=已拒绝,3=已取消")
@ApiModelProperty("申请状态0=申请中,1=已同意,2=已拒绝,3=已取消")
private String applyStatus;
/** 删除标志0代表存在 2代表删除 */