From 6a6adcf8b274dacdde7a0c973766647af4e3f5d7 Mon Sep 17 00:00:00 2001 From: zt Date: Thu, 3 Apr 2025 09:56:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bgt/AppBgtProjectTaskController.java | 12 +- .../fbs/AppFbsProjectController.java | 65 ++++++--- ...sProjectSubcontractingApplyController.java | 2 +- .../fbs/AppFbsProjectTaskApplyController.java | 2 +- .../fbs/AppFbsProjectTaskController.java | 50 +++++++ .../enums/SubcontractingApplyStatus.java | 6 +- .../mapper/BgtProjectTaskProgressMapper.java | 4 + .../IBgtProjectTaskProgressService.java | 7 + .../service/IBgtWageApplicationService.java | 5 + .../BgtProjectTaskProgressServiceImpl.java | 11 +- .../impl/BgtWageApplicationServiceImpl.java | 8 ++ .../ruoyi/fbs/domain/vo/AppTaskDetailVO.java | 3 + .../fbs/domain/vo/FbsGetWgzUserInfoVO.java | 104 +++++++++++++++ .../vo/FbsProjectTaskDetailProgressVO.java | 27 ++++ .../domain/vo/FbsProjectTaskDetailWageVO.java | 36 +++++ .../service/IFbsProjectTaskApplyService.java | 5 + .../service/IFbsWageApplicationService.java | 5 + .../impl/FbsProjectTaskApplyServiceImpl.java | 21 ++- .../impl/FbsProjectTaskServiceImpl.java | 3 + .../impl/FbsWageApplicationServiceImpl.java | 13 +- .../ruoyi/zbf/service/IZbfProjectService.java | 24 +++- .../service/impl/ZbfProjectServiceImpl.java | 126 ++++++++++++++++++ .../bgt/BgtProjectTaskProgressMapper.xml | 14 ++ .../mapper/fbs/FbsProjectTaskApplyMapper.xml | 2 +- .../mapper/fbs/FbsProjectTaskMapper.xml | 2 + .../resources/mapper/zbf/ZbfProjectMapper.xml | 2 +- 26 files changed, 521 insertions(+), 38 deletions(-) create mode 100644 ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsGetWgzUserInfoVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectTaskDetailProgressVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectTaskDetailWageVO.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskController.java index 304cb0b..b139bce 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskController.java @@ -16,7 +16,9 @@ import com.ruoyi.common.exception.BaseException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.fbs.domain.FbsProjectTask; import com.ruoyi.bgt.domain.dto.BgtTaskDTO; +import com.ruoyi.fbs.domain.FbsProjectTaskApply; import com.ruoyi.fbs.domain.vo.*; +import com.ruoyi.fbs.service.IFbsProjectTaskApplyService; import com.ruoyi.fbs.service.IFbsProjectTaskService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -42,6 +44,8 @@ public class AppBgtProjectTaskController extends BaseController { private final IFbsProjectTaskService iFbsProjectTaskService; + private final IFbsProjectTaskApplyService iFbsProjectTaskApplyService; + private final IBgtUserService bgtUserService; /** @@ -68,7 +72,13 @@ public class AppBgtProjectTaskController extends BaseController { @GetMapping("/{id}") public AjaxResult getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) { - return AjaxResult.success(iFbsProjectTaskService.appQueryById(id)); + AppTaskDetailVO appTaskDetailVO = iFbsProjectTaskService.appQueryById(id); + //申请状态 + FbsProjectTaskApply applyByTaskId = iFbsProjectTaskApplyService.getApplyByTaskId(id); + if (applyByTaskId != null) { + appTaskDetailVO.setApplyStatus(applyByTaskId.getApplyStatus()); + } + return AjaxResult.success(appTaskDetailVO); } @ApiOperation("项目任务详细信息-考勤") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectController.java index cf95bbc..73315d1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectController.java @@ -4,13 +4,12 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; 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.service.IZbfProjectService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -56,26 +55,40 @@ public class AppFbsProjectController extends BaseController { return AjaxResult.success(zbfProjectService.myListCount()); } - @ApiOperation("分包商查看可报名项目详情") - @GetMapping("/signUp/{id}") - public AjaxResult signUpDetail(@NotNull(message = "主键不能为空") - @PathVariable("id") Long id) { - return AjaxResult.success(zbfProjectService.signUpDetail(id)); - } - @ApiOperation("分包商查看已申请项目详情") - @GetMapping("/apply/{id}") - public AjaxResult applyDetail(@NotNull(message = "主键不能为空") - @PathVariable("id") Long id) { - return AjaxResult.success(zbfProjectService.applyDetail(id)); + @ApiOperation("分包商查看可报名项目详情") + @GetMapping("/detail/{id}") + public AjaxResult detail(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id, @Param("type") Integer type) { + //0-可报名项目 //1-已申请项目 //2-已加入或已竣工项目 + if(type == 0){ + return AjaxResult.success(zbfProjectService.signUpDetail(id)); + }else { + return AjaxResult.success(zbfProjectService.applyAllDetail(id)); + } } - @ApiOperation("分包商查看已加入或已竣工项目详情") - @GetMapping("/joinOrComplete/{id}") - public AjaxResult joinOrCompleteDetail(@NotNull(message = "主键不能为空") - @PathVariable("id") Long id) { - return AjaxResult.success(zbfProjectService.joinOrCompleteDetail(id)); - } + +// @ApiOperation("分包商查看可报名项目详情") +// @GetMapping("/signUp/{id}") +// public AjaxResult signUpDetail(@NotNull(message = "主键不能为空") +// @PathVariable("id") Long id) { +// return AjaxResult.success(zbfProjectService.signUpDetail(id)); +// } +// +// @ApiOperation("分包商查看已申请项目详情") +// @GetMapping("/apply/{id}") +// public AjaxResult applyDetail(@NotNull(message = "主键不能为空") +// @PathVariable("id") Long id) { +// return AjaxResult.success(zbfProjectService.applyDetail(id)); +// } +// +// @ApiOperation("分包商查看已加入或已竣工项目详情") +// @GetMapping("/joinOrComplete/{id}") +// public AjaxResult joinOrCompleteDetail(@NotNull(message = "主键不能为空") +// @PathVariable("id") Long id) { +// return AjaxResult.success(zbfProjectService.joinOrCompleteDetail(id)); +// } @ApiOperation("分包商查询我的项目列表-项目切换") @GetMapping("/switchList") @@ -83,6 +96,18 @@ public class AppFbsProjectController extends BaseController { return zbfProjectService.switchList(dto); } + @ApiOperation("分包商查询项目详情-用工进度") + @GetMapping("/progress") + public AjaxResult fbsProgress(Long projectId) { + return AjaxResult.success(zbfProjectService.fbsProgress(projectId)); + } + + @ApiOperation("分包商查询项目详情-结算情况") + @GetMapping("/wage") + public AjaxResult fbsWage(Long projectId) { + return AjaxResult.success(zbfProjectService.fbsWage(projectId)); + } + // // /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectSubcontractingApplyController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectSubcontractingApplyController.java index 4e1cb31..873a160 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectSubcontractingApplyController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectSubcontractingApplyController.java @@ -29,7 +29,7 @@ import javax.validation.constraints.NotNull; @Api(value = "App分包商项目分包申请控制器", tags = {"App分包商"}) @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController -@RequestMapping("/app/fbs/apply") +@RequestMapping("/app/fbs/subApply") public class AppFbsProjectSubcontractingApplyController extends BaseController { private final IZbfProjectSubcontractingApplyService iZbfProjectSubcontractingApplyService; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectTaskApplyController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectTaskApplyController.java index 98fdf65..673940d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectTaskApplyController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectTaskApplyController.java @@ -23,7 +23,7 @@ import javax.validation.constraints.NotNull; @Api(value = "App分包商项目任务申请控制器", tags = {"App分包商"}) @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController -@RequestMapping("/app/fbs/apply") +@RequestMapping("/app/fbs/taskApply") public class AppFbsProjectTaskApplyController extends BaseController { private final IFbsProjectTaskApplyService iFbsProjectTaskApplyService; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectTaskController.java index baccff5..91cd15e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectTaskController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectTaskController.java @@ -1,6 +1,7 @@ package com.ruoyi.web.controller.fbs; import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.bgt.domain.BgtProjectRecruitApply; import com.ruoyi.bgt.domain.dto.BgtProjectTaskUserDTO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; @@ -10,8 +11,11 @@ import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.BgtUser; +import com.ruoyi.common.core.domain.entity.FbsUser; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.service.ICompanyService; +import com.ruoyi.common.util.DataUtil; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.fbs.domain.FbsProjectTask; import com.ruoyi.fbs.domain.dto.FbsProjectTaskUpdateDTO; @@ -21,6 +25,15 @@ import com.ruoyi.fbs.domain.dto.FbsTaskSwitchListDTO; import com.ruoyi.fbs.domain.vo.*; import com.ruoyi.fbs.service.IFbsProjectTaskApplyService; import com.ruoyi.fbs.service.IFbsProjectTaskService; +import com.ruoyi.fbs.service.IFbsUserService; +import com.ruoyi.wgz.domain.WgzUser; +import com.ruoyi.wgz.service.IWgzUserService; +import com.ruoyi.zbf.domain.ZbfProject; +import com.ruoyi.zbf.domain.ZbfProjectSection; +import com.ruoyi.zbf.domain.ZbfProjectSubcontracting; +import com.ruoyi.zbf.service.IZbfProjectSectionService; +import com.ruoyi.zbf.service.IZbfProjectService; +import com.ruoyi.zbf.service.IZbfProjectSubcontractingService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -46,6 +59,12 @@ public class AppFbsProjectTaskController extends BaseController { private final IFbsProjectTaskApplyService iFbsProjectTaskApplyService; private final IBgtUserService iBgtUserService; private final IBgtProjectRecruitApplyService iBgtProjectRecruitApplyService; + private final IWgzUserService iWgzUserService; + private final IZbfProjectService iZbfProjectService; + private final IZbfProjectSectionService iZbfProjectSectionService; + private final IZbfProjectSubcontractingService iZbfProjectSubcontractingService; + private final IFbsUserService iFbsUserService; + private final ICompanyService iCompanyService; @ApiOperation("分包商发布任务") @Log(title = "分包商发布任务", businessType = BusinessType.INSERT) @@ -129,4 +148,35 @@ public class AppFbsProjectTaskController extends BaseController { return iFbsProjectTaskService.switchList(dto); } + @ApiOperation("分包商查询包工头信息(点头像)") + @GetMapping("/bgt/{userId}") + public AjaxResult bgt(@NotNull(message = "主键不能为空") + @PathVariable("userId") Long userId) { + BgtUser bgtUser = iBgtUserService.selectUserByUserId(userId); + bgtUser.setAge(DataUtil.calculateAge(bgtUser.getBirthdate())); + return AjaxResult.success(bgtUser); + } + + @ApiOperation("分包商查询务工者信息") + @GetMapping("/wgzInfo") + public AjaxResult getWgzUserInfo(Long userId, Long recruitApplyId) { + WgzUser byUserId = iWgzUserService.findByUserId(userId); + FbsGetWgzUserInfoVO vo = BeanUtil.copyProperties(byUserId, FbsGetWgzUserInfoVO.class); + BgtProjectRecruitApply apply = iBgtProjectRecruitApplyService.getById(recruitApplyId); + vo.setWorkStatus(apply.getStatus()); + vo.setEntryTime(apply.getEntryTime()); + FbsProjectTask task = iFbsProjectTaskService.getById(apply.getTaskId()); + ZbfProject project = iZbfProjectService.getById(task.getProjectId()); + vo.setProjectName(project.getProjectName()); + ZbfProjectSection projectSection = iZbfProjectSectionService.getById(task.getSectionId()); + vo.setSectionName(projectSection.getSectionName()); + ZbfProjectSubcontracting subcontracting = iZbfProjectSubcontractingService.getById(task.getSubId()); + vo.setSubName(subcontracting.getSubName()); + FbsUser fbsUser = iFbsUserService.selectUserByUserId(subcontracting.getUserId()); + String companyName = iCompanyService.getCompanyNameById(fbsUser.getCompanyId()); + vo.setCompanyName(companyName); + vo.setWorkerType("正式员工"); + return AjaxResult.success(vo); + } + } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/SubcontractingApplyStatus.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/SubcontractingApplyStatus.java index d73f30b..5a139fb 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/SubcontractingApplyStatus.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/SubcontractingApplyStatus.java @@ -38,7 +38,11 @@ public enum SubcontractingApplyStatus //项目申请中的状态 public static List getApplyStatus(){ - return Arrays.asList(APPLY.getCode(),REFUSE.getCode()); + return Arrays.asList(APPLY.getCode()); + } + + public static List getApplyAllStatus(){ + return Arrays.asList(APPLY.getCode(),PASS.getCode()); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectTaskProgressMapper.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectTaskProgressMapper.java index cb675a2..3665561 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectTaskProgressMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectTaskProgressMapper.java @@ -9,6 +9,8 @@ import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; import org.apache.ibatis.annotations.CacheNamespace; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 包工头项目任务进度Mapper接口 * @@ -20,4 +22,6 @@ import org.apache.ibatis.annotations.Param; public interface BgtProjectTaskProgressMapper extends BaseMapperPlus { Page appQueryPageList(@Param("page") Page page, @Param("dto") BgtProjectTaskProgressQueryDTO dto); + + List getProgressByTaskIds(@Param("taskIds") List taskIds); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectTaskProgressService.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectTaskProgressService.java index 00ac3c4..1faf6a5 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectTaskProgressService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectTaskProgressService.java @@ -74,4 +74,11 @@ public interface IBgtProjectTaskProgressService extends IServicePlus getProgressByTaskIds(List taskIds); + + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtWageApplicationService.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtWageApplicationService.java index 74c6d78..684beeb 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtWageApplicationService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtWageApplicationService.java @@ -82,4 +82,9 @@ public interface IBgtWageApplicationService extends IServicePlus getPassListByTaskIds(List taskIds); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectTaskProgressServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectTaskProgressServiceImpl.java index d1952e9..e45dae4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectTaskProgressServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectTaskProgressServiceImpl.java @@ -29,10 +29,7 @@ import com.ruoyi.fbs.service.IFbsProjectTaskService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import static com.ruoyi.common.constants.BgtMessageConstant.*; import static com.ruoyi.common.constants.FbsMessageConstant.*; @@ -173,6 +170,7 @@ public class BgtProjectTaskProgressServiceImpl extends ServicePlusImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(BgtProjectTaskProgress::getTaskId, taskId); + wrapper.eq(BgtProjectTaskProgress::getAuditStatus, AuditStatus.PASS.getCode()); wrapper.orderByDesc(BgtProjectTaskProgress::getProgress); List list = baseMapper.selectList(wrapper); return CollectionUtil.isEmpty(list)?0:list.get(0).getProgress(); @@ -207,4 +205,9 @@ public class BgtProjectTaskProgressServiceImpl extends ServicePlusImpl getProgressByTaskIds(List taskIds) { + return baseMapper.getProgressByTaskIds(taskIds); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtWageApplicationServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtWageApplicationServiceImpl.java index 74e65ca..681f782 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtWageApplicationServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtWageApplicationServiceImpl.java @@ -235,4 +235,12 @@ public class BgtWageApplicationServiceImpl extends ServicePlusImpl getPassListByTaskIds(List taskIds) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(BgtWageApplication::getTaskId, taskIds) + .eq(BgtWageApplication::getAuditStatus, AuditStatus.PASS.getCode()); + return list(wrapper); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailVO.java index 8503864..ab0b191 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskDetailVO.java @@ -91,6 +91,9 @@ public class AppTaskDetailVO { @ApiModelProperty("备注") private String remark; + @ApiModelProperty("申请状态(0申请中 1已同意 2已拒绝 3已取消)") + private String applyStatus; + @ApiModelProperty("发布时间") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDateTime createTime; diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsGetWgzUserInfoVO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsGetWgzUserInfoVO.java new file mode 100644 index 0000000..ea475cc --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsGetWgzUserInfoVO.java @@ -0,0 +1,104 @@ +package com.ruoyi.fbs.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDate; + +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("分包商查看务工者个人基本信息返回对象") +public class FbsGetWgzUserInfoVO implements Serializable { + @ApiModelProperty("主键ID") + private String id; + + @ApiModelProperty("唯一标识") + private Long userId; + + @ApiModelProperty("姓名") + private String username; + + @ApiModelProperty("性别字典sys_user_sex") + private String gender; + + @ApiModelProperty("民族") + private String nation; + + @ApiModelProperty("出生日期") + private LocalDate birthdate; + + @ApiModelProperty("年龄") + private Integer age; + + @ApiModelProperty("身份证号码") + private String identityCard; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("地址") + private String site; + + @ApiModelProperty("联系电话") + private String phone; + + @ApiModelProperty("银行") + private String bank; + + @ApiModelProperty("银行卡号") + private String cardNo; + + @ApiModelProperty("头像地址") + private String avatarName; + + @ApiModelProperty("身份证正面图路径") + private String frontPath; + + @ApiModelProperty("身份证反面图路径") + private String reverseSidePath; + + @ApiModelProperty("银行卡图路径") + private String bankCardPath; + + @ApiModelProperty("评分") + private Double score; + + @ApiModelProperty("工种,多个逗号分隔") + private String typeOfWork; + + @ApiModelProperty("工种名") + private String typeOfWorkName; + + @ApiModelProperty("是否被选择") + private Boolean isChoose; + + @ApiModelProperty("工作状态") + private String workStatus; + + @ApiModelProperty("是否工资结清") + private Boolean isPay; + + @ApiModelProperty("项目名称") + private String projectName; + + @ApiModelProperty("标段名称") + private String sectionName; + + @ApiModelProperty("分包主题") + private String subName; + + @ApiModelProperty("进场时间") + private LocalDate entryTime; + + @ApiModelProperty("劳务单位") + private String companyName; + + @ApiModelProperty("员工类型") + private String workerType; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectTaskDetailProgressVO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectTaskDetailProgressVO.java new file mode 100644 index 0000000..64ecf70 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectTaskDetailProgressVO.java @@ -0,0 +1,27 @@ +package com.ruoyi.fbs.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * 包工头项目任务进度对象 bgt_project_task_progress + * + * @author ruoyi + * @date 2025-02-18 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("App包工头项目详情-任务进度视图对象") +public class FbsProjectTaskDetailProgressVO{ + + @ApiModelProperty("总进度") + private Integer totalProgress = 0; + + @ApiModelProperty("进度") + private Integer progress = 0; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectTaskDetailWageVO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectTaskDetailWageVO.java new file mode 100644 index 0000000..5b446ad --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectTaskDetailWageVO.java @@ -0,0 +1,36 @@ +package com.ruoyi.fbs.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +/** + * 包工头项目任务进度对象 bgt_project_task_progress + * + * @author ruoyi + * @date 2025-02-18 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("App包工头项目详情-结算情况视图对象") +public class FbsProjectTaskDetailWageVO { + + @ApiModelProperty("总金额") + private BigDecimal totalAmount; + + @ApiModelProperty("接收金额") + private BigDecimal receiveAmount; + + @ApiModelProperty("支付金额") + private BigDecimal payAmount; + + @ApiModelProperty("支付总金额") + private BigDecimal payTotalAmount; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsProjectTaskApplyService.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsProjectTaskApplyService.java index 34e5701..9f4359f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsProjectTaskApplyService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsProjectTaskApplyService.java @@ -80,4 +80,9 @@ public interface IFbsProjectTaskApplyService extends IServicePlus record(FbsWageApplicationListDTO dto); + + /** + * 获取分包下先已审核通过的数据 + */ + List getPassListBySubIds(List subIds); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskApplyServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskApplyServiceImpl.java index fe9fb9f..04fe7f6 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskApplyServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskApplyServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.fbs.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -223,9 +224,17 @@ public class FbsProjectTaskApplyServiceImpl extends ServicePlusImpl wrapper = new LambdaQueryWrapper<>(); @@ -267,4 +276,14 @@ public class FbsProjectTaskApplyServiceImpl extends ServicePlusImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(FbsProjectTaskApply::getTaskId, taskId); + wrapper.eq(FbsProjectTaskApply::getUserId, SecurityUtils.getAppUserId()); + wrapper.orderByDesc(FbsProjectTaskApply::getId); + List list = list(wrapper); + return CollectionUtil.isEmpty(list)?null:list.get(0); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskServiceImpl.java index bea5c31..95dbdc0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskServiceImpl.java @@ -354,6 +354,9 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl wageList = wageApplicationService.list(Wrappers.lambdaQuery() .eq(BgtWageApplication::getTaskId, id).orderByDesc(BgtWageApplication::getId)); diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsWageApplicationServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsWageApplicationServiceImpl.java index 1d7dbf7..18b1ecc 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsWageApplicationServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsWageApplicationServiceImpl.java @@ -24,10 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import static com.ruoyi.common.constants.BgtMessageConstant.HEADLINE; import static com.ruoyi.common.constants.BgtMessageConstant.SUBHEADING; @@ -153,4 +150,12 @@ public class FbsWageApplicationServiceImpl extends ServicePlusImpl result = page(PageUtils.buildPage(), wrapper); return PageUtils.buildDataInfo(result); } + + @Override + public List getPassListBySubIds(List subIds) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(FbsWageApplication::getSubId, subIds) + .eq(FbsWageApplication::getAuditStatus, AuditStatus.PASS.getCode()); + return list(wrapper); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfProjectService.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfProjectService.java index 569e42e..8c78862 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfProjectService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfProjectService.java @@ -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 { */ FbsProjectDetailVO signUpDetail(Long projectId); + /** + * 分包商查看所有申请项目详情 + */ + FbsProjectDetailVO applyAllDetail(Long projectId); + /** * 分包商查看已申请项目详情 */ @@ -107,6 +110,18 @@ public interface IZbfProjectService extends IServicePlus { */ FbsProjectDetailVO joinOrCompleteDetail(Long projectId); + /** + * 分包商查询项目详情-用工进度 + */ + FbsProjectTaskDetailProgressVO fbsProgress(Long projectId); + + /** + * 分包商查询项目详情-结算情况 + */ + FbsProjectTaskDetailWageVO fbsWage(Long projectId); + + + /** * 总包方新增项目 */ @@ -121,4 +136,7 @@ public interface IZbfProjectService extends IServicePlus { * 总包方查询自建项目统计 */ ZbfProjectCountVO projectCount(); + + + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfProjectServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfProjectServiceImpl.java index 7299b75..67efae7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfProjectServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfProjectServiceImpl.java @@ -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 applyList = zbfProjectSubcontractingApplyService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSubcontractingApply::getProjectId, projectId) + .eq(ZbfProjectSubcontractingApply::getFbsUserId, SecurityUtils.getAppUserId()) + .in(ZbfProjectSubcontractingApply::getApplyStatus, SubcontractingApplyStatus.getApplyAllStatus())); + HashMap map = applyList.stream() + .collect(Collectors.toMap( + ZbfProjectSubcontractingApply::getSubId, + ZbfProjectSubcontractingApply::getApplyStatus, + (existing, replacement) -> replacement, + HashMap::new + )); + //标段处理 + List sectionListVO = new ArrayList<>(); + //查询项目下的所有标段 + List sectionList = zbfProjectSectionService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSection::getProjectId, projectId)); + for (ZbfProjectSection zbfProjectSection : sectionList) { + //分包处理 + List subListVO = new ArrayList<>(); + //查询标段下的所有的分包 + List subList = zbfProjectSubcontractingService.list(Wrappers.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 taskList = fbsProjectTaskService.list(Wrappers.lambdaQuery() + .eq(FbsProjectTask::getCreateId, SecurityUtils.getAppUserId()) + .eq(FbsProjectTask::getProjectId, projectId) + ); + FbsProjectTaskDetailProgressVO vo = new FbsProjectTaskDetailProgressVO(); + List taskIds = taskList.stream().map(FbsProjectTask::getId).collect(Collectors.toList()); + if(CollectionUtil.isNotEmpty(taskIds)){ + List 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 subList = zbfProjectSubcontractingService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSubcontracting::getProjectId, projectId) + .eq(ZbfProjectSubcontracting::getUserId, SecurityUtils.getAppUserId()) + ); + List 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 passList= fbsWageApplicationService.getPassListBySubIds(subIds); + BigDecimal receiveAmount = passList.stream().map(FbsWageApplication::getApplicantAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + vo.setReceiveAmount(receiveAmount); + + List taskList = fbsProjectTaskService.list(Wrappers.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 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) { diff --git a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectTaskProgressMapper.xml b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectTaskProgressMapper.xml index f5e1f87..2552abf 100644 --- a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectTaskProgressMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectTaskProgressMapper.xml @@ -54,4 +54,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + diff --git a/ruoyi-system/src/main/resources/mapper/fbs/FbsProjectTaskApplyMapper.xml b/ruoyi-system/src/main/resources/mapper/fbs/FbsProjectTaskApplyMapper.xml index 3f891b3..bbbede8 100644 --- a/ruoyi-system/src/main/resources/mapper/fbs/FbsProjectTaskApplyMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/fbs/FbsProjectTaskApplyMapper.xml @@ -27,7 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bu.avatar_name from fbs_project_task_apply fpta left join bgt_user bu on fpta.user_id = bu.user_id - where fpta.task_id = #{dto.taskId} + where fpta.task_id = #{dto.taskId} and fpta.apply_status != '3' and fpta.apply_status = #{dto.applyStatus} diff --git a/ruoyi-system/src/main/resources/mapper/fbs/FbsProjectTaskMapper.xml b/ruoyi-system/src/main/resources/mapper/fbs/FbsProjectTaskMapper.xml index 7c03bd4..4f4963e 100644 --- a/ruoyi-system/src/main/resources/mapper/fbs/FbsProjectTaskMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/fbs/FbsProjectTaskMapper.xml @@ -66,6 +66,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" FROM fbs_project_task_apply WHERE task_id = fpt.id AND user_id = #{dto.userId} + AND apply_status in ('0','1','2') ) @@ -74,6 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" FROM fbs_project_task_apply WHERE task_id = fpt.id AND user_id = #{dto.userId} + AND apply_status in ('0','1') ) diff --git a/ruoyi-system/src/main/resources/mapper/zbf/ZbfProjectMapper.xml b/ruoyi-system/src/main/resources/mapper/zbf/ZbfProjectMapper.xml index ad008cc..0d6e0f4 100644 --- a/ruoyi-system/src/main/resources/mapper/zbf/ZbfProjectMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/zbf/ZbfProjectMapper.xml @@ -91,7 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" project_img, project_status FROM zbf_project zp - zp.id in (select zpsa.project_id from zbf_project_subcontracting_apply zpsa where zpsa.fbs_user_id = #{dto.fbsUserId}) + where zp.id in (select zpsa.project_id from zbf_project_subcontracting_apply zpsa where zpsa.fbs_user_id = #{dto.fbsUserId}) order by zp.id desc