From f1814f781c06fccd0a90f5fb0d25ea66cb8fcb45 Mon Sep 17 00:00:00 2001 From: zt Date: Thu, 10 Apr 2025 09:31:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=80=BB=E5=8C=85=E6=96=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bgt/AppBgtProjectTaskController.java | 12 ++ .../controller/fbs/AppFbsUserController.java | 11 +- .../fbs/AppFbsWageApplicationController.java | 32 ++-- .../zbf/AppZbfProjectController.java | 47 +++--- ...fProjectSubcontractingApplyController.java | 2 +- ...AppZbfProjectSubcontractingController.java | 63 +++++++- .../zbf/AppZbfProjectTaskController.java | 149 ++++++++++++++++++ .../controller/zbf/AppZbfUserController.java | 11 +- .../zbf/AppZbfWageApplicationController.java | 53 +++++++ .../service/AppUserDetailsServiceImpl.java | 4 +- .../impl/BgtWageApplicationServiceImpl.java | 3 +- .../common/constants/BgtMessageConstant.java | 2 +- .../common/constants/FbsMessageConstant.java | 2 +- .../ruoyi/common/service/ICompanyService.java | 5 + .../service/impl/CompanyServiceImpl.java | 5 + .../java/com/ruoyi/common/util/ValidUtil.java | 38 +++++ .../ruoyi/fbs/domain/FbsWageApplication.java | 10 ++ .../fbs/domain/dto/FbsMessageDetailDTO.java | 4 +- .../fbs/domain/dto/FbsUserInfoUpdateDTO.java | 16 ++ .../domain/dto/FbsWageApplicationListDTO.java | 3 + .../ruoyi/fbs/domain/vo/AppTaskDetailVO.java | 1 + .../fbs/domain/vo/FbsMessageDetailVO.java | 4 +- .../com/ruoyi/fbs/domain/vo/FbsMessageVO.java | 4 +- .../ruoyi/fbs/service/IFbsUserService.java | 18 ++- .../service/IFbsWageApplicationService.java | 20 ++- .../fbs/service/impl/FbsUserServiceImpl.java | 48 ++++++ .../impl/FbsWageApplicationServiceImpl.java | 126 ++++++++++++++- .../java/com/ruoyi/task/BusinessTask.java | 6 - .../service/IWgzPayCalculationService.java | 5 + .../wgz/service/impl/WgzLeaveServiceImpl.java | 23 +-- .../impl/WgzPayCalculationServiceImpl.java | 8 + .../zbf/domain/dto/ZbfProgressListDTO.java | 7 +- .../zbf/domain/dto/ZbfSubBgtListDTO.java | 21 +++ .../zbf/domain/dto/ZbfSubSwitchListDTO.java | 2 +- .../domain/dto/ZbfWageApplicationListDTO.java | 35 ++++ .../ruoyi/zbf/domain/dto/ZbfWageAuditDTO.java | 28 ++++ .../zbf/domain/dto/ZfbUserInfoUpdateDTO.java | 16 ++ .../zbf/domain/vo/ZbfProgressListVO.java | 2 +- ...tailProgressVO.java => ZbfProgressVO.java} | 2 +- .../ruoyi/zbf/domain/vo/ZbfSubBgtListVO.java | 29 ++++ .../zbf/domain/vo/ZbfSubPersonCountVO.java | 23 +++ .../ZbfProjectSubcontractingMapper.java | 6 +- .../ruoyi/zbf/service/IZbfMessageService.java | 12 ++ .../ruoyi/zbf/service/IZbfProjectService.java | 6 +- .../IZbfProjectSubcontractingService.java | 28 ++++ .../ruoyi/zbf/service/IZbfUserService.java | 15 ++ .../service/impl/ZbfMessageServiceImpl.java | 28 ++++ .../service/impl/ZbfProjectServiceImpl.java | 32 +++- .../ZbfProjectSubcontractingServiceImpl.java | 131 ++++++++++++++- .../zbf/service/impl/ZbfUserServiceImpl.java | 48 ++++++ .../bgt/BgtProjectTaskProgressMapper.xml | 1 + .../zbf/ZbfProjectSubcontractingMapper.xml | 10 ++ 52 files changed, 1119 insertions(+), 98 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectTaskController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfWageApplicationController.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsUserInfoUpdateDTO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfSubBgtListDTO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfWageApplicationListDTO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfWageAuditDTO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZfbUserInfoUpdateDTO.java rename ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/{ZbfProjectDetailProgressVO.java => ZbfProgressVO.java} (93%) create mode 100644 ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfSubBgtListVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfSubPersonCountVO.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 b139bce..238170c 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 @@ -81,6 +81,18 @@ public class AppBgtProjectTaskController extends BaseController { return AjaxResult.success(appTaskDetailVO); } + @ApiOperation("项目任务通过申请获取基本信息") + @GetMapping("/apply/{applyId}") + public AjaxResult getInfoByApplyId(@NotNull(message = "主键不能为空") + @PathVariable("applyId") Long applyId) { + FbsProjectTaskApply taskApply = iFbsProjectTaskApplyService.getById(applyId); + AppTaskDetailVO appTaskDetailVO = iFbsProjectTaskService.appQueryById(taskApply.getTaskId()); + //申请状态 + appTaskDetailVO.setApplyStatus(taskApply.getApplyStatus()); + + return AjaxResult.success(appTaskDetailVO); + } + @ApiOperation("项目任务详细信息-考勤") @GetMapping("/attendance/{id}") public AjaxResult getInfoAttendance(@NotNull(message = "主键不能为空") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsUserController.java index 38dc884..532822c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsUserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsUserController.java @@ -6,6 +6,7 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.domain.dto.CompanyAuthenticateDTO; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.fbs.domain.dto.FbsUserInfoUpdateDTO; import com.ruoyi.fbs.service.IFbsUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +37,16 @@ public class AppFbsUserController extends BaseController { @Log(title = "分包商企业认证", businessType = BusinessType.UPDATE) @RepeatSubmit @PutMapping() - public AjaxResult edit(@Validated @RequestBody CompanyAuthenticateDTO dto) { + public AjaxResult authenticate(@Validated @RequestBody CompanyAuthenticateDTO dto) { return AjaxResult.success(iFbsUserService.authenticate(dto)); } + @ApiOperation("分包商更改头像") + @Log(title = "分包商更改头像", businessType = BusinessType.UPDATE) + @RepeatSubmit + @PutMapping("/avatar") + public AjaxResult editAvatar(@Validated @RequestBody FbsUserInfoUpdateDTO dto) { + return AjaxResult.success(iFbsUserService.editAvatar(dto.getAvatarName())); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsWageApplicationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsWageApplicationController.java index 0e249c8..0defa5c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsWageApplicationController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsWageApplicationController.java @@ -9,17 +9,19 @@ import com.ruoyi.common.annotation.Log; 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.ZbfUser; +import com.ruoyi.common.core.domain.entity.FbsUser; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.domain.Company; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.exception.BaseException; +import com.ruoyi.common.service.ICompanyService; +import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.fbs.domain.FbsWageApplication; import com.ruoyi.fbs.domain.dto.FbsWageApplicationListDTO; import com.ruoyi.fbs.domain.dto.FbsWageAuditDTO; import com.ruoyi.fbs.domain.dto.FbsWageAuditListDTO; +import com.ruoyi.fbs.service.IFbsUserService; import com.ruoyi.fbs.service.IFbsWageApplicationService; -import com.ruoyi.zbf.domain.ZbfProject; -import com.ruoyi.zbf.service.IZbfProjectService; -import com.ruoyi.zbf.service.IZbfUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -43,8 +45,8 @@ public class AppFbsWageApplicationController extends BaseController { private final IFbsWageApplicationService iFbsWageApplicationService; private final IBgtWageApplicationService iBgtWageApplicationService; - private final IZbfUserService iZbfUserService; - private final IZbfProjectService iZbfProjectService; + private final IFbsUserService iFbsUserService; + private final ICompanyService iCompanyService; @ApiOperation("分包商查询自己的工资申请列表") @GetMapping("/list") @@ -59,16 +61,24 @@ public class AppFbsWageApplicationController extends BaseController { return AjaxResult.success(iFbsWageApplicationService.queryById(id)); } + @ApiOperation("分包商获取自己的公司信息") + @GetMapping("/companyInfo") + public AjaxResult getCompanyInfo() { + FbsUser fbsUser = iFbsUserService.selectUserByUserId(SecurityUtils.getAppUserId()); + Long id = fbsUser.getCompanyId(); + if (id == null) { + throw new BaseException("未绑定公司"); + } + return AjaxResult.success(iCompanyService.getById(id)); + } + + @ApiOperation("分包商提交自己的工资申请") @Log(title = "分包商工资申请", businessType = BusinessType.INSERT) @RepeatSubmit @PostMapping() public AjaxResult add(@Validated @RequestBody FbsWageApplication bo) { - ZbfProject project = iZbfProjectService.getById(bo.getProjectId()); - ZbfUser zbfUser = iZbfUserService.selectUserByUserId(project.getUserId()); - bo.setReviewerName(zbfUser.getUsername()); - bo.setReviewerId(zbfUser.getUserId()); - return AjaxResult.success(iFbsWageApplicationService.insert(bo)); + return AjaxResult.success(iFbsWageApplicationService.insertApply(bo)); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectController.java index c6da22d..2c97b9e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectController.java @@ -6,11 +6,10 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.fbs.domain.FbsWageApplication; +import com.ruoyi.fbs.service.IFbsWageApplicationService; import com.ruoyi.zbf.domain.ZbfProject; -import com.ruoyi.zbf.domain.dto.ZbfProgressListDTO; -import com.ruoyi.zbf.domain.dto.ZbfProjectAddDTO; -import com.ruoyi.zbf.domain.dto.ZbfProjectListDTO; -import com.ruoyi.zbf.domain.dto.ZbfProjectSwitchListDTO; +import com.ruoyi.zbf.domain.dto.*; import com.ruoyi.zbf.domain.vo.*; import com.ruoyi.zbf.service.IZbfProjectService; import io.swagger.annotations.Api; @@ -35,6 +34,7 @@ import javax.validation.constraints.NotNull; public class AppZbfProjectController extends BaseController { private final IZbfProjectService iZbfProjectService; + private final IFbsWageApplicationService iFbsWageApplicationService; @ApiOperation("总包方新增项目") @@ -65,36 +65,37 @@ public class AppZbfProjectController extends BaseController { @ApiOperation("总包方项目详情-项目信息") - @GetMapping("/{id}") + @GetMapping("/{projectId}") public AjaxResult zbfInfo(@NotNull(message = "主键不能为空") - @PathVariable("id") Long id) { - return AjaxResult.success(iZbfProjectService.zbfInfo(id)); + @PathVariable("projectId") Long projectId) { + return AjaxResult.success(iZbfProjectService.zbfInfo(projectId)); } @ApiOperation("总包方项目详情-项目标段信息") - @GetMapping("/sectionInfo/{id}") + @GetMapping("/sectionInfo/{projectId}") public AjaxResult sectionInfo(@NotNull(message = "主键不能为空") - @PathVariable("id") Long id) { - return AjaxResult.success(iZbfProjectService.sectionInfo(id)); + @PathVariable("projectId") Long projectId) { + return AjaxResult.success(iZbfProjectService.sectionInfo(projectId)); } @ApiOperation("总包方项目详情-用工数量") - @GetMapping("/personCount/{id}") + @GetMapping("/personCount/{projectId}") public AjaxResult personCount(@NotNull(message = "主键不能为空") - @PathVariable("id") Long id) { - return AjaxResult.success(iZbfProjectService.personCount(id)); + @PathVariable("projectId") Long projectId) { + return AjaxResult.success(iZbfProjectService.personCount(projectId)); } @ApiOperation("总包方项目详情-考勤情况") - @GetMapping("/attendanceCount/{id}") + @GetMapping("/attendanceCount/{projectId}") public AjaxResult attendanceCount(@NotNull(message = "主键不能为空") - @PathVariable("id") Long id) { - return AjaxResult.success(iZbfProjectService.attendanceCount(id)); + @PathVariable("projectId") Long projectId) { + return AjaxResult.success(iZbfProjectService.attendanceCount(projectId)); } @ApiOperation("总包方项目详情-用工进度") - @GetMapping("/progress") - public AjaxResult zbfProgress(Long projectId) { + @GetMapping("/progress/{projectId}") + public AjaxResult zbfProgress(@NotNull(message = "主键不能为空") + @PathVariable("projectId") Long projectId) { return AjaxResult.success(iZbfProjectService.zbfProgress(projectId)); } @@ -106,18 +107,18 @@ public class AppZbfProjectController extends BaseController { @ApiOperation("总包方项目详情-付款情况") - @GetMapping("/wage") - public AjaxResult zbfWage(Long projectId) { + @GetMapping("/wage/{projectId}") + public AjaxResult zbfWage(@NotNull(message = "主键不能为空") + @PathVariable("projectId")Long projectId) { return AjaxResult.success(iZbfProjectService.zbfWage(projectId)); } @ApiOperation("总包方项目详情-付款情况查看更多") @GetMapping("/wageList") - public TableDataInfo zbfWageList(Long projectId) { - return iZbfProjectService.zbfWageList(projectId); + public TableDataInfo zbfWageList(ZbfWageApplicationListDTO dto) { + return iFbsWageApplicationService.zbfWageList(dto); } - @ApiOperation("总包方项目详情-项目切换") @GetMapping("/switchList") public TableDataInfo zbfSwitchList(ZbfProjectSwitchListDTO dto) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectSubcontractingApplyController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectSubcontractingApplyController.java index 236fe58..289fceb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectSubcontractingApplyController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectSubcontractingApplyController.java @@ -41,7 +41,7 @@ public class AppZbfProjectSubcontractingApplyController extends BaseController { return toAjax(iZbfProjectSubcontractingApplyService.choose(id)); } - @ApiOperation("总包方项目分包详情-申请列表") + @ApiOperation("总包方项目分包详情-分包商申请列表") @GetMapping("/fbsList/{subId}") public TableDataInfo getFbsList(ZbfProjectSubApplyListDTO dto) { return iZbfProjectSubcontractingApplyService.getFbsList(dto); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectSubcontractingController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectSubcontractingController.java index e70ba33..e65cb15 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectSubcontractingController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectSubcontractingController.java @@ -3,14 +3,23 @@ package com.ruoyi.web.controller.zbf; import cn.hutool.core.bean.BeanUtil; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.entity.FbsUser; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.fbs.domain.FbsWageApplication; +import com.ruoyi.fbs.service.IFbsUserService; +import com.ruoyi.fbs.service.IFbsWageApplicationService; import com.ruoyi.zbf.domain.ZbfProjectSubcontracting; -import com.ruoyi.zbf.domain.vo.ZbfProjectSubcontractingDetailVO; +import com.ruoyi.zbf.domain.dto.ZbfProgressListDTO; +import com.ruoyi.zbf.domain.dto.ZbfSubBgtListDTO; +import com.ruoyi.zbf.domain.dto.ZbfWageApplicationListDTO; +import com.ruoyi.zbf.domain.vo.*; import com.ruoyi.zbf.service.IZbfProjectSectionService; import com.ruoyi.zbf.service.IZbfProjectSubcontractingService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @@ -32,9 +41,11 @@ public class AppZbfProjectSubcontractingController extends BaseController { private final IZbfProjectSubcontractingService iZbfProjectSubcontractingService; private final IZbfProjectSectionService iZbfProjectSectionService; + private final IFbsUserService iFbsUserService; + private final IFbsWageApplicationService iFbsWageApplicationService; @ApiOperation("总包方项目分包详情-分包信息") - @GetMapping("/info/{id}") + @GetMapping("/{id}") public AjaxResult getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) { ZbfProjectSubcontracting zbfProjectSubcontracting = iZbfProjectSubcontractingService.queryById(id); @@ -44,5 +55,53 @@ public class AppZbfProjectSubcontractingController extends BaseController { } + @ApiOperation("总包方项目分包详情-分包商信息") + @GetMapping("/fbsUser") + public AjaxResult fbsUser(Long fbsUserId) { + return AjaxResult.success(iFbsUserService.selectUserByUserId(fbsUserId)); + } + + @ApiOperation("总包方项目分包详情-分包商人员总数") + @GetMapping("/subPersonCount/{subId}") + public AjaxResult subPersonCount(@NotNull(message = "主键不能为空") + @PathVariable("subId") Long subId) { + return AjaxResult.success(iZbfProjectSubcontractingService.subPersonCount(subId)); + } + + @ApiOperation("总包方项目分包详情-班组长列表") + @GetMapping("/bgtList") + public TableDataInfo bgtList(@Validated ZbfSubBgtListDTO dto) { + return iZbfProjectSubcontractingService.bgtList(dto); + } + + @ApiOperation("总包方项目分包详情-用工进度") + @GetMapping("/progress/{subId}") + public AjaxResult zbfSubProgress(@NotNull(message = "主键不能为空") + @PathVariable("subId") Long subId) { + return AjaxResult.success(iZbfProjectSubcontractingService.zbfSubProgress(subId)); + } + + @ApiOperation("总包方项目分包详情-用工进度列表") + @GetMapping("/progressList") + public TableDataInfo zbfSubProgressList(@Validated ZbfProgressListDTO dto) { + return iZbfProjectSubcontractingService.zbfSubProgressList(dto); + } + + @ApiOperation("总包方项目分包详情-付款情况") + @GetMapping("/wage/{subId}") + public AjaxResult zbfSubWage(@NotNull(message = "主键不能为空") + @PathVariable("subId")Long subId) { + return AjaxResult.success(iZbfProjectSubcontractingService.zbfSubWage(subId)); + } + + @ApiOperation("总包方项目分包详情-付款情况查看更多") + @GetMapping("/wageList") + public TableDataInfo zbfSubWageList(ZbfWageApplicationListDTO dto) { + return iFbsWageApplicationService.zbfWageList(dto); + } + + + + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectTaskController.java new file mode 100644 index 0000000..f33e0d3 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfProjectTaskController.java @@ -0,0 +1,149 @@ +package com.ruoyi.web.controller.zbf; + +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; +import com.ruoyi.bgt.service.IBgtUserService; +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.service.ICompanyService; +import com.ruoyi.common.util.DataUtil; +import com.ruoyi.fbs.domain.FbsProjectTask; +import com.ruoyi.fbs.domain.dto.FbsTaskApplyListDTO; +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; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.constraints.NotNull; + +/** + * 分包商项目任务Controller + * + * @author ruoyi + * @date 2025-02-17 + */ +@Api(value = "App总包方项目任务控制器", tags = {"App总包方"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RestController +@RequestMapping("/app/zbf/task") +public class AppZbfProjectTaskController extends BaseController { + + private final IFbsProjectTaskService iFbsProjectTaskService; + 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("分包商查询任务详情-基础信息") + @GetMapping("/base/{id}") + public AjaxResult base(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iFbsProjectTaskService.appQueryById(id)); + } + + @ApiOperation("分包商查询任务详情-申请列表") + @GetMapping("/taskApplyList") + public TableDataInfo taskApplyList(@Validated FbsTaskApplyListDTO dto) { + return iFbsProjectTaskApplyService.queryPageListByTaskId(dto); + } + + @ApiOperation("分包商查询任务详情-包工头信息") + @GetMapping("/bgtInfo/{id}") + public AjaxResult bgtInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + FbsProjectTask task = iFbsProjectTaskService.getById(id); + if(task!=null&&task.getUserId()!=null){ + BgtUser bgtUser = iBgtUserService.selectUserByUserId(task.getUserId()); + return AjaxResult.success(bgtUser); + } + return AjaxResult.success(new BgtUser()); + } + + @ApiOperation("分包商查询任务详情-任务进度") + @GetMapping("/progress/{id}") + public AjaxResult progress(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iFbsProjectTaskService.progress(id)); + } + + + @ApiOperation("分包商查询任务详情-工资结算审批") + @GetMapping("/wage/{id}") + public AjaxResult fbsWage(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iFbsProjectTaskService.fbsWage(id)); + } + + @ApiOperation("分包商查询任务详情-务工人员数量") + @GetMapping("/wgzList") + public TableDataInfo fbsWgzList(@Validated BgtProjectTaskUserDTO dto) { + return iBgtProjectRecruitApplyService.fbsTaskUserList(dto); + } + + @ApiOperation("分包商查询任务详情-任务切换列表") + @GetMapping("/switchList") + public TableDataInfo switchList(FbsTaskSwitchListDTO dto) { + 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-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfUserController.java index 651be92..7467d8d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfUserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfUserController.java @@ -6,6 +6,7 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.domain.dto.CompanyAuthenticateDTO; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.zbf.domain.dto.ZfbUserInfoUpdateDTO; import com.ruoyi.zbf.service.IZbfUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -35,7 +36,15 @@ public class AppZbfUserController extends BaseController { @Log(title = "总包方企业认证", businessType = BusinessType.UPDATE) @RepeatSubmit @PutMapping() - public AjaxResult edit(@Validated @RequestBody CompanyAuthenticateDTO dto) { + public AjaxResult authenticate(@Validated @RequestBody CompanyAuthenticateDTO dto) { return AjaxResult.success(iZbfUserService.authenticate(dto)); } + + @ApiOperation("总包方更改头像") + @Log(title = "总包方更改头像", businessType = BusinessType.UPDATE) + @RepeatSubmit + @PutMapping("/avatar") + public AjaxResult editAvatar(@Validated @RequestBody ZfbUserInfoUpdateDTO dto) { + return AjaxResult.success(iZbfUserService.editAvatar(dto.getAvatarName())); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfWageApplicationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfWageApplicationController.java new file mode 100644 index 0000000..0b6e24a --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfWageApplicationController.java @@ -0,0 +1,53 @@ +package com.ruoyi.web.controller.zbf; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.fbs.domain.FbsWageApplication; +import com.ruoyi.fbs.domain.dto.FbsWageAuditDTO; +import com.ruoyi.fbs.service.IFbsWageApplicationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotNull; + +/** + * 分包商工资申请Controller + * + * @author ruoyi + * @date 2025-03-26 + */ +@Api(value = "App总包方工资审核控制器", tags = {"App总包方"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RestController +@RequestMapping("/app/zbf/application") +public class AppZbfWageApplicationController extends BaseController { + + private final IFbsWageApplicationService iFbsWageApplicationService; + + @ApiOperation("总包方查询审核工资申请详细信息") + @GetMapping("/audit/{id}") + public AjaxResult getAuditInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iFbsWageApplicationService.getById(id)); + } + + @ApiOperation("总包方审核分包商工资申请") + @Log(title = "总包方审核分包商工资申请", businessType = BusinessType.UPDATE) + @RepeatSubmit + @PutMapping("/audit") + public AjaxResult audit(@Validated @RequestBody FbsWageAuditDTO dto) { + FbsWageApplication bo = iFbsWageApplicationService.getById(dto.getId()); + BeanUtil.copyProperties(dto, bo); + return AjaxResult.success(iFbsWageApplicationService.zbfAudit(bo)); + } + + +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AppUserDetailsServiceImpl.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AppUserDetailsServiceImpl.java index 08db440..df8338b 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AppUserDetailsServiceImpl.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AppUserDetailsServiceImpl.java @@ -62,11 +62,11 @@ public class AppUserDetailsServiceImpl implements UserDetailsService check(wgzUser,phone); userDetailsl = createLoginUser(wgzUser,Constants.WGZ); }else if (phone.contains(Constants.FBS)) { - FbsUser fbsUser = fbsUserService.selectUserByPhone(phone.replace(Constants.FBS, "")); + FbsUser fbsUser = fbsUserService.loginSelect(phone.replace(Constants.FBS, "")); check(fbsUser,phone); userDetailsl = createLoginUser(fbsUser,Constants.FBS); }else if (phone.contains(Constants.ZBF)) { - ZbfUser zbfUser = zbfUserService.selectUserByPhone(phone.replace(Constants.ZBF, "")); + ZbfUser zbfUser = zbfUserService.loginSelect(phone.replace(Constants.ZBF, "")); check(zbfUser,phone); userDetailsl = createLoginUser(zbfUser,Constants.ZBF); } 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 681f782..abbe1f9 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 @@ -100,7 +100,7 @@ public class BgtWageApplicationServiceImpl extends ServicePlusImpl list = list(Wrappers.lambdaQuery().eq(BgtWageApplication::getTaskId, bo.getTaskId()) .eq(BgtWageApplication::getUserId, SecurityUtils.getAppUserId()) - .eq(BgtWageApplication::getAuditStatus, AuditStatus.getUse())); + .in(BgtWageApplication::getAuditStatus, AuditStatus.getUse())); //收款金额 int taskUseAmount = list.stream() .map(BgtWageApplication::getApplicantAmount) @@ -138,6 +138,7 @@ public class BgtWageApplicationServiceImpl extends ServicePlusImpl fmp = new HashMap<>(); fmp.put("projectName", task.getTaskName()); fmp.put("auditor", SecurityUtils.getUsername()); + fmp.put("amount", bo.getApplicantAmount().toString()); Map fmap = bgtMessage(fmp, BGT_TYPE_SETTLEMENT_TO_FBS, true); FbsMessage fbsMessage = new FbsMessage() .setSenderType(USERTYPE_BGT) diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/constants/BgtMessageConstant.java b/ruoyi-system/src/main/java/com/ruoyi/common/constants/BgtMessageConstant.java index de24e86..3eb3c4a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/common/constants/BgtMessageConstant.java +++ b/ruoyi-system/src/main/java/com/ruoyi/common/constants/BgtMessageConstant.java @@ -17,7 +17,7 @@ public class BgtMessageConstant { public static final String BGT_SMALL_LEAVE = "3"; //小类型-请假 public static final String BGT_SMALL_MAKE_UP = "4"; //小类型-补卡 public static final String BGT_SMALL_REPORT_MAKE_UP = "5"; //小类型-日报补卡 - public static final String BGT_SMALL_PROGRESS = "5"; //小类型-任务进度 + public static final String BGT_SMALL_PROGRESS = "6"; //小类型-任务进度 public static final List AUDIT_TYPE = Arrays.asList("2", "3", "4", "5"); /** diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/constants/FbsMessageConstant.java b/ruoyi-system/src/main/java/com/ruoyi/common/constants/FbsMessageConstant.java index 1cfd456..2126839 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/common/constants/FbsMessageConstant.java +++ b/ruoyi-system/src/main/java/com/ruoyi/common/constants/FbsMessageConstant.java @@ -11,7 +11,7 @@ import static com.ruoyi.common.constants.BgtMessageConstant.SUBHEADING; public class FbsMessageConstant { // 公共常量 - public static final String FBS_LARGE_TASK = "1"; //大类型-任务 + public static final String FBS_LARGE_TASK = "1"; //大类型-项目 public static final String FBS_LARGE_SETTLEMENT = "2"; //大类型-结算 public static final String FBS_LARGE_OTHER = "3"; //大类型-其它 diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/service/ICompanyService.java b/ruoyi-system/src/main/java/com/ruoyi/common/service/ICompanyService.java index 9a2db74..d2fc52b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/common/service/ICompanyService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/common/service/ICompanyService.java @@ -57,4 +57,9 @@ public interface ICompanyService extends IServicePlus { * 获取公司的名称 */ String getCompanyNameById(Long id); + + /** + * 根据信用码获取公司 + */ + Company getCompanyByCreditCode(String creditCode); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/CompanyServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/CompanyServiceImpl.java index 6decdfe..5c3e69f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/CompanyServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/CompanyServiceImpl.java @@ -98,4 +98,9 @@ public class CompanyServiceImpl extends ServicePlusImpl { Long authenticate(CompanyAuthenticateDTO dto); /** - * 企业认证 + * 根据用户id查询用户 */ FbsUser selectUserByUserId(Long userId); + + /** + * 根据信用代码查询用户 + */ + FbsUser selectUserByCreditCode(String creditCode); + + /** + * 登录查询 + */ + FbsUser loginSelect(String key); + + /** + * 修改头像 + */ + Boolean editAvatar(String avatarName); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsWageApplicationService.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsWageApplicationService.java index 39f54ef..20e103f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsWageApplicationService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsWageApplicationService.java @@ -1,10 +1,11 @@ package com.ruoyi.fbs.service; -import com.ruoyi.fbs.domain.FbsWageApplication; -import com.ruoyi.fbs.bo.FbsWageApplicationQueryBo; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.fbs.bo.FbsWageApplicationQueryBo; +import com.ruoyi.fbs.domain.FbsWageApplication; import com.ruoyi.fbs.domain.dto.FbsWageApplicationListDTO; +import com.ruoyi.zbf.domain.dto.ZbfWageApplicationListDTO; import java.util.Collection; import java.util.List; @@ -54,6 +55,11 @@ public interface IFbsWageApplicationService extends IServicePlus ids, Boolean isValid); + /** + * 分包商提交自己的工资申请 + */ + Boolean insertApply(FbsWageApplication bo); + /** * 查询列表 */ @@ -63,4 +69,14 @@ public interface IFbsWageApplicationService extends IServicePlus getPassListBySubIds(List subIds); + + /** + * 总包方查询列表 + */ + TableDataInfo zbfWageList(ZbfWageApplicationListDTO dto); + + /** + * 总包方审核 + */ + Boolean zbfAudit(FbsWageApplication bo); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsUserServiceImpl.java index 3980bd3..31477c6 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsUserServiceImpl.java @@ -10,7 +10,9 @@ import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.domain.Company; import com.ruoyi.common.domain.dto.CompanyAuthenticateDTO; +import com.ruoyi.common.exception.BaseException; import com.ruoyi.common.service.ICompanyService; +import com.ruoyi.common.util.ValidUtil; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.fbs.bo.FbsUserQueryBo; @@ -116,6 +118,26 @@ public class FbsUserServiceImpl extends ServicePlusImpl @Override @Transactional(rollbackFor = Exception.class) public Long authenticate(CompanyAuthenticateDTO dto) { + + // 校验银行卡号 + if (!ValidUtil.isValidBankCard(dto.getCardNo())) { + throw new BaseException("银行卡号格式不正确"); + } + + //校验电话 + if (!ValidUtil.isValidChineseMobile(dto.getContactPhone())) { + throw new BaseException("手机号格式不正确"); + } + + boolean b = ValidUtil.verifyCreditCode(dto.getCreditCode()); + if (!b) { + throw new BaseException("统一社会信用代码格式不正确"); + } + + Company companyByCreditCode = companyService.getCompanyByCreditCode(dto.getCreditCode()); + if (companyByCreditCode != null) { + throw new RuntimeException("该企业已认证"); + } Company company = BeanUtil.copyProperties(dto, Company.class); companyService.save(company); FbsUser fbsUser = selectUserByUserId(SecurityUtils.getAppUserId()); @@ -128,4 +150,30 @@ public class FbsUserServiceImpl extends ServicePlusImpl public FbsUser selectUserByUserId(Long userId) { return baseMapper.selectOne(new LambdaQueryWrapper().eq(FbsUser::getUserId, userId)); } + + @Override + public FbsUser selectUserByCreditCode(String creditCode) { + Company company = companyService.getCompanyByCreditCode(creditCode); + if (company != null) { + return baseMapper.selectOne(new LambdaQueryWrapper().eq(FbsUser::getCompanyId, company.getId())); + } + return null; + } + + @Override + public FbsUser loginSelect(String key) { + FbsUser fbsUser = selectUserByPhone(key); + if(fbsUser != null){ + return fbsUser; + } + fbsUser = selectUserByCreditCode(key); + return fbsUser; + } + + @Override + public Boolean editAvatar(String avatarName) { + FbsUser fbsUser = selectUserByUserId(SecurityUtils.getAppUserId()); + fbsUser.setAvatarName(avatarName); + return updateById(fbsUser); + } } 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 18b1ecc..35bdb8b 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 @@ -1,37 +1,50 @@ 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; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; +import com.ruoyi.bgt.domain.BgtProjectTaskProgress; +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.AuditStatus; +import com.ruoyi.common.exception.BaseException; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.fbs.bo.FbsWageApplicationQueryBo; +import com.ruoyi.fbs.domain.FbsMessage; import com.ruoyi.fbs.domain.FbsWageApplication; import com.ruoyi.fbs.domain.dto.FbsWageApplicationListDTO; import com.ruoyi.fbs.mapper.FbsWageApplicationMapper; +import com.ruoyi.fbs.service.IFbsMessageService; import com.ruoyi.fbs.service.IFbsWageApplicationService; import com.ruoyi.zbf.domain.ZbfMessage; +import com.ruoyi.zbf.domain.ZbfProject; +import com.ruoyi.zbf.domain.ZbfProjectSubcontracting; +import com.ruoyi.zbf.domain.dto.ZbfWageApplicationListDTO; import com.ruoyi.zbf.service.IZbfMessageService; import com.ruoyi.zbf.service.IZbfProjectService; import com.ruoyi.zbf.service.IZbfProjectSubcontractingService; +import com.ruoyi.zbf.service.IZbfUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.*; +import java.math.BigDecimal; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import static com.ruoyi.common.constants.BgtMessageConstant.HEADLINE; import static com.ruoyi.common.constants.BgtMessageConstant.SUBHEADING; -import static com.ruoyi.common.constants.FbsMessageConstant.FBS_TYPE_SETTLEMENT_TO_ZBF; -import static com.ruoyi.common.constants.FbsMessageConstant.fbsMessage; +import static com.ruoyi.common.constants.FbsMessageConstant.*; import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.*; -import static com.ruoyi.common.constants.ZbfMessageConstant.ZBF_LARGE_SETTLEMENT; +import static com.ruoyi.common.constants.ZbfMessageConstant.*; /** * 分包商工资申请Service业务层处理 @@ -48,6 +61,12 @@ public class FbsWageApplicationServiceImpl extends ServicePlusImpl record(FbsWageApplicationListDTO dto) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(FbsWageApplication::getUserId, SecurityUtils.getAppUserId()) - .eq(dto.getType() == 0, FbsWageApplication::getAuditStatus, AuditStatus.AUDIT.getCode()) - .in(dto.getType() == 1, FbsWageApplication::getAuditStatus, AuditStatus.getAudit()); + .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()) + .orderByDesc(FbsWageApplication::getId) + ; Page result = page(PageUtils.buildPage(), wrapper); return PageUtils.buildDataInfo(result); } @@ -158,4 +180,96 @@ public class FbsWageApplicationServiceImpl extends ServicePlusImpl zbfWageList(ZbfWageApplicationListDTO dto) { + LambdaQueryWrapper 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.getProjectId()!=null,FbsWageApplication::getProjectId, dto.getProjectId()) + .eq(dto.getSubId()!=null,FbsWageApplication::getSubId, dto.getSubId()) + ; + Page result = page(PageUtils.buildPage(), wrapper); + return PageUtils.buildDataInfo(result); + } + + @Override + public Boolean zbfAudit(FbsWageApplication bo) { + boolean b = updateById(bo); + ZbfProject project = projectService.getById(bo.getProjectId()); + ZbfProjectSubcontracting subcontracting = projectSubcontractingService.getById(bo.getSubId()); + //总包方发消息到分包商 + HashMap mp = new HashMap<>(); + mp.put("projectName", project.getProjectName()); + mp.put("subName", subcontracting.getSubName()); + mp.put("auditor", SecurityUtils.getUsername()); + Map map = zbfMessage(mp, ZBF_TYPE_PAY,AuditStatus.PASS.getCode().equals(bo.getAuditStatus())); + FbsMessage fbsMessage = new FbsMessage() + .setSenderType(USERTYPE_ZBF) + .setSenderId(SecurityUtils.getAppUserId()) + .setRecipientType(USERTYPE_FBS) + .setRecipientId(bo.getUserId()) + .setHeadline(map.get(HEADLINE)) + .setSubheading(map.get(SUBHEADING)) + .setTableId(bo.getId()) + .setTableName(SqlHelper.table(FbsWageApplication.class).getTableName()) + .setMessageLargeType(FBS_LARGE_SETTLEMENT) + .setIsOperation(OPERATION_NO); + fbsMessageService.sendAMessage(fbsMessage); + zbfMessageService.operation(USERTYPE_BGT, bo.getUserId(), USERTYPE_FBS, SecurityUtils.getAppUserId(), bo.getId(), SqlHelper.table(BgtProjectTaskProgress.class).getTableName()); + return b; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insertApply(FbsWageApplication bo) { + FbsWageApplication add = BeanUtil.toBean(bo, FbsWageApplication.class); + //判断申请金额 + List list = list(Wrappers.lambdaQuery() + .eq(FbsWageApplication::getSubId, bo.getSubId()) + .eq(FbsWageApplication::getUserId, SecurityUtils.getAppUserId()) + .in(FbsWageApplication::getAuditStatus, AuditStatus.getUse())); + //收款金额 + int taskUseAmount = list.stream() + .map(FbsWageApplication::getApplicantAmount) + .reduce(BigDecimal.ZERO, BigDecimal::add).intValue(); + + //任务金额单位是万元,工资申请金额单位是元 + ZbfProjectSubcontracting subcontracting = projectSubcontractingService.getById(bo.getSubId()); + BigDecimal subAmount = subcontracting.getSubAmount(); + subAmount = subAmount.multiply(new BigDecimal(10000)); + + BigDecimal subtract = subAmount.subtract(new BigDecimal(String.valueOf(taskUseAmount))); + if(subtract.compareTo(bo.getApplicantAmount()) < 0){ + throw new BaseException("申请金额已超出,剩余申请金额:"+subtract+"元"); + } + + ZbfProject project = iZbfProjectService.getById(bo.getProjectId()); + ZbfUser zbfUser = iZbfUserService.selectUserByUserId(project.getUserId()); + add.setReviewerName(zbfUser.getUsername()); + add.setReviewerId(zbfUser.getUserId()); + add.setProjectName(project.getProjectName()); + add.setProjectAddress(project.getProjectAddress()); + boolean save = save(add); + + //分包商发消息到总包方 + HashMap fmp = new HashMap<>(); + fmp.put("auditor", SecurityUtils.getUsername()); + fmp.put("amount", bo.getApplicantAmount().toString()); + Map fmap = fbsMessage(fmp, FBS_TYPE_SETTLEMENT_TO_ZBF, true); + ZbfMessage zbfMessage = new ZbfMessage() + .setSenderType(USERTYPE_FBS) + .setSenderId(SecurityUtils.getAppUserId()) + .setRecipientType(USERTYPE_ZBF) + .setRecipientId(add.getReviewerId()) + .setHeadline(fmap.get(HEADLINE)) + .setSubheading(fmap.get(SUBHEADING)) + .setTableId(add.getId()) + .setTableName(SqlHelper.table(FbsWageApplication.class).getTableName()) + .setMessageLargeType(ZBF_LARGE_SETTLEMENT) + .setIsOperation(OPERATION_NEED); + zbfMessageService.sendAMessage(zbfMessage); + return save; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/task/BusinessTask.java b/ruoyi-system/src/main/java/com/ruoyi/task/BusinessTask.java index beaaa07..f17b433 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/task/BusinessTask.java +++ b/ruoyi-system/src/main/java/com/ruoyi/task/BusinessTask.java @@ -13,7 +13,6 @@ import com.ruoyi.bgt.service.IBgtProjectRecruitService; import com.ruoyi.common.constants.WgzAndBgtMessageConstant; import com.ruoyi.common.enums.RecruitApplyStatus; import com.ruoyi.common.enums.RecruitStatus; -import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.fbs.domain.FbsProjectTask; import com.ruoyi.fbs.service.IFbsProjectTaskService; import com.ruoyi.wgz.domain.WgzAttendance; @@ -28,7 +27,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import org.springframework.transaction.reactive.TransactionalOperator; import java.math.BigDecimal; import java.time.LocalDate; @@ -319,10 +317,6 @@ public class BusinessTask */ @Transactional public void leave(){ - System.out.println("????????????????"); - System.out.println("????????????????"); - System.out.println("????????????????"); - System.out.println("????????????????"); List updataList = new ArrayList<>(); List attendanceList = new ArrayList<>(); List messagesList = new ArrayList<>(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzPayCalculationService.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzPayCalculationService.java index 8d187fd..db86efd 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzPayCalculationService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzPayCalculationService.java @@ -143,4 +143,9 @@ public interface IWgzPayCalculationService extends IServicePlus getPassListByTaskIds(List taskIds); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzLeaveServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzLeaveServiceImpl.java index 955e48d..9f1abb9 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzLeaveServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzLeaveServiceImpl.java @@ -336,8 +336,8 @@ public class WgzLeaveServiceImpl extends ServicePlusImpl list = attendanceService.list(Wrappers.lambdaQuery() // .eq(WgzAttendance::getRecruitId, recruit.getId()) // .eq(WgzAttendance::getUserId, wgzLeave.getUserId()) @@ -348,16 +348,17 @@ public class WgzLeaveServiceImpl extends ServicePlusImpl getPassListByTaskIds(List taskIds) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(WgzPayCalculation::getTaskId, taskIds) + .eq(WgzPayCalculation::getAuditorType, AuditStatus.PASS.getCode()); + return list(wrapper); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfProgressListDTO.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfProgressListDTO.java index 2e81df6..fa035ee 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfProgressListDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfProgressListDTO.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; +import javax.validation.constraints.NotNull; + @Data @Accessors(chain = true) @ApiModel("总包方任务进度列表查询对象") @@ -16,6 +18,7 @@ public class ZbfProgressListDTO { @ApiModelProperty("当前页数") private Integer pageNum; - @ApiModelProperty("项目ID") - private Long projectId; + @ApiModelProperty("项目分包Id") + @NotNull(message = "项目分包Id不能为空") + private Long subId; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfSubBgtListDTO.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfSubBgtListDTO.java new file mode 100644 index 0000000..cbed3e3 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfSubBgtListDTO.java @@ -0,0 +1,21 @@ +package com.ruoyi.zbf.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel("总包方分包详情班组长列表查询条件") +public class ZbfSubBgtListDTO { + @ApiModelProperty("分页大小") + private Integer pageSize; + /** 当前页数 */ + @ApiModelProperty("当前页数") + private Integer pageNum; + + @ApiModelProperty("分包ID") + @NotNull(message = "分包ID不能为空") + private Long subId; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfSubSwitchListDTO.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfSubSwitchListDTO.java index 7dd7f93..02d56cd 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfSubSwitchListDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfSubSwitchListDTO.java @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data -@ApiModel("分包商项目分包切换列表查询条件") +@ApiModel("总包方项目分包切换列表查询条件") public class ZbfSubSwitchListDTO { @ApiModelProperty("分页大小") diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfWageApplicationListDTO.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfWageApplicationListDTO.java new file mode 100644 index 0000000..21e5597 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfWageApplicationListDTO.java @@ -0,0 +1,35 @@ +package com.ruoyi.zbf.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 分包商工资申请分页查询对象 fbs_wage_application + * + * @author ruoyi + * @date 2025-03-26 + */ + +@Data +@ApiModel("总包方工资审核查询对象") +public class ZbfWageApplicationListDTO { + + /** 分页大小 */ + @ApiModelProperty("分页大小") + private Integer pageSize; + /** 当前页数 */ + @ApiModelProperty("当前页数") + private Integer pageNum; + + @ApiModelProperty("类型:0-申请中 1-已结算") + private Integer type; + + @ApiModelProperty("项目Id") + private Long projectId; + + @ApiModelProperty("项目分包Id") + private Long subId; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfWageAuditDTO.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfWageAuditDTO.java new file mode 100644 index 0000000..23e4aff --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfWageAuditDTO.java @@ -0,0 +1,28 @@ +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 ZbfWageAuditDTO { + + @ApiModelProperty("主键ID") + @NotNull(message = "主键ID不能为空") + private Long id; + + @ApiModelProperty("审核状态(1审核中 2已审核 3未通过)") + private String auditStatus; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZfbUserInfoUpdateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZfbUserInfoUpdateDTO.java new file mode 100644 index 0000000..343d4db --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZfbUserInfoUpdateDTO.java @@ -0,0 +1,16 @@ +package com.ruoyi.zbf.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +@ApiModel("分包商修改用户信息") +public class ZfbUserInfoUpdateDTO { + + @ApiModelProperty("头像") + @NotBlank(message = "头像不能为空") + private String avatarName; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfProgressListVO.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfProgressListVO.java index e6cc7c7..e44b929 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfProgressListVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfProgressListVO.java @@ -16,6 +16,6 @@ public class ZbfProgressListVO { @ApiModelProperty("进度") private Integer progress; - @ApiModelProperty("项目名称") + @ApiModelProperty("任务名称") private String taskName; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfProjectDetailProgressVO.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfProgressVO.java similarity index 93% rename from ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfProjectDetailProgressVO.java rename to ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfProgressVO.java index 2cdc265..2302e76 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfProjectDetailProgressVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfProgressVO.java @@ -16,7 +16,7 @@ import lombok.experimental.Accessors; @NoArgsConstructor @Accessors(chain = true) @ApiModel("App总包方项目详情-任务进度视图对象") -public class ZbfProjectDetailProgressVO { +public class ZbfProgressVO { @ApiModelProperty("总进度") private Integer totalProgress = 0; diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfSubBgtListVO.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfSubBgtListVO.java new file mode 100644 index 0000000..d655a86 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfSubBgtListVO.java @@ -0,0 +1,29 @@ +package com.ruoyi.zbf.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("总包方分包详情班组长列表视图对象") +public class ZbfSubBgtListVO { + + @ApiModelProperty("主键ID") + private String id; + + @ApiModelProperty("唯一标识") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long userId; + + @ApiModelProperty("姓名") + private String username; + + @ApiModelProperty("联系电话") + private String phone; + + @ApiModelProperty("头像地址") + private String avatarName; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfSubPersonCountVO.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfSubPersonCountVO.java new file mode 100644 index 0000000..54faafe --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfSubPersonCountVO.java @@ -0,0 +1,23 @@ +package com.ruoyi.zbf.domain.vo; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("总包方分包用工数量统计") +public class ZbfSubPersonCountVO { + + @ApiModelProperty("人员总数") + private Integer totalCount; + + @ApiModelProperty("进场总数") + private Integer entryCount; + + @ApiModelProperty("退场总数") + private Integer leaveCount; + + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/mapper/ZbfProjectSubcontractingMapper.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/mapper/ZbfProjectSubcontractingMapper.java index f47b3dd..91a4522 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/mapper/ZbfProjectSubcontractingMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/mapper/ZbfProjectSubcontractingMapper.java @@ -1,10 +1,13 @@ package com.ruoyi.zbf.mapper; - +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.zbf.domain.ZbfProjectSubcontracting; +import com.ruoyi.zbf.domain.dto.ZbfSubBgtListDTO; +import com.ruoyi.zbf.domain.vo.ZbfSubBgtListVO; import org.apache.ibatis.annotations.CacheNamespace; +import org.apache.ibatis.annotations.Param; /** * 总包方项目分包Mapper接口 @@ -16,4 +19,5 @@ import org.apache.ibatis.annotations.CacheNamespace; @CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class) public interface ZbfProjectSubcontractingMapper extends BaseMapperPlus { + Page bgtList(@Param("page") Page page, @Param("dto") ZbfSubBgtListDTO dto); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfMessageService.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfMessageService.java index 3b92cb6..9b83908 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfMessageService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfMessageService.java @@ -57,4 +57,16 @@ public interface IZbfMessageService extends IServicePlus { * 发送消息 */ Boolean sendAMessage(ZbfMessage bo); + + /** + * 已操作 + */ + void operation(String senderType,Long senderId,String recipientType,Long recipientId,Long tableId,String tableName); + + /** + * 批量已操作 + */ + void operationBatch(String recipientType,Long recipientId,List tableIds,String tableName); + + } 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 b82664c..75dae4f 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 @@ -172,7 +172,7 @@ public interface IZbfProjectService extends IServicePlus { /** * 总包方项目详情-用工进度 */ - ZbfProjectDetailProgressVO zbfProgress(Long projectId); + ZbfProgressVO zbfProgress(Long projectId); /** * 总包方项目详情-用工进度列表 @@ -184,10 +184,6 @@ public interface IZbfProjectService extends IServicePlus { */ ZbfProjectDetailWageVO zbfWage(Long projectId); - /** - * 总包方项目详情-付款情况查看更多 - */ - TableDataInfo zbfWageList(Long projectId); /** * 总包方项目详情-项目切换 */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfProjectSubcontractingService.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfProjectSubcontractingService.java index 80c7a0c..225d8cc 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfProjectSubcontractingService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfProjectSubcontractingService.java @@ -5,6 +5,10 @@ import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.zbf.bo.ZbfProjectSubcontractingQueryBo; import com.ruoyi.zbf.domain.ZbfProjectSubcontracting; +import com.ruoyi.zbf.domain.dto.ZbfProgressListDTO; +import com.ruoyi.zbf.domain.dto.ZbfSubBgtListDTO; +import com.ruoyi.zbf.domain.vo.*; +import org.springframework.validation.annotation.Validated; import java.util.Collection; import java.util.List; @@ -54,4 +58,28 @@ public interface IZbfProjectSubcontractingService extends IServicePlus ids, Boolean isValid); + /** + * 总包方项目分包详情-分包商人员总数 + */ + ZbfSubPersonCountVO subPersonCount(Long subId); + + /** + * 总包方项目分包详情-班组长列表 + */ + TableDataInfo bgtList(ZbfSubBgtListDTO dto); + + /** + * 总包方项目分包详情-用工进度 + */ + ZbfProgressVO zbfSubProgress(Long subId); + + /** + * 总包方项目分包详情-用工进度列表 + */ + TableDataInfo zbfSubProgressList(@Validated ZbfProgressListDTO dto); + + /** + * 总包方项目详情-付款情况 + */ + ZbfProjectDetailWageVO zbfSubWage(Long subId); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfUserService.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfUserService.java index cc142ec..8070fd9 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfUserService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfUserService.java @@ -68,4 +68,19 @@ public interface IZbfUserService extends IServicePlus { * 企业认证 */ Long authenticate(CompanyAuthenticateDTO dto); + + /** + * 根据信用代码查询用户 + */ + ZbfUser selectUserByCreditCode(String creditCode); + + /** + * 登录查询 + */ + ZbfUser loginSelect(String key); + + /** + * 修改头像 + */ + Boolean editAvatar(String avatarName); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfMessageServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfMessageServiceImpl.java index 838377f..786bd49 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfMessageServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfMessageServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.zbf.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; @@ -18,6 +19,8 @@ import java.util.Collection; import java.util.List; import java.util.Map; +import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.OPERATION_ALREADY; + /** * 消息Service业务层处理 * @@ -96,4 +99,29 @@ public class ZbfMessageServiceImpl extends ServicePlusImpl wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(ZbfMessage::getRecipientId, recipientId); + wrapper.eq(ZbfMessage::getRecipientType, recipientType); + wrapper.eq(ZbfMessage::getSenderId, senderId); + wrapper.eq(ZbfMessage::getSenderType, senderType); + wrapper.eq(ZbfMessage::getTableId, tableId); + wrapper.eq(ZbfMessage::getTableName, tableName); + wrapper.set(ZbfMessage::getIsOperation, OPERATION_ALREADY); + update(wrapper); + } + + @Override + public void operationBatch(String recipientType, Long recipientId, List tableIds, String tableName) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(ZbfMessage::getRecipientId, recipientId); + wrapper.eq(ZbfMessage::getRecipientType, recipientType); + wrapper.in(ZbfMessage::getTableId, tableIds); + wrapper.eq(ZbfMessage::getTableName, tableName); + wrapper.set(ZbfMessage::getIsOperation, OPERATION_ALREADY); + update(wrapper); + } + } 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 406a027..71a2e8c 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 @@ -27,7 +27,9 @@ 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.wgz.domain.WgzPayCalculation; import com.ruoyi.wgz.service.IWgzAttendanceService; +import com.ruoyi.wgz.service.IWgzPayCalculationService; import com.ruoyi.zbf.bo.ZbfProjectQueryBo; import com.ruoyi.zbf.domain.ZbfProject; import com.ruoyi.zbf.domain.ZbfProjectSection; @@ -77,6 +79,8 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl taskList = fbsProjectTaskService.list(Wrappers.lambdaQuery() .eq(FbsProjectTask::getCreateId, SecurityUtils.getAppUserId()) - .eq(FbsProjectTask::getProjectId, dto) + .eq(FbsProjectTask::getProjectId, dto.getProjectId()) ); List taskIds = taskList.stream().map(FbsProjectTask::getId).collect(Collectors.toList()); if(CollectionUtil.isNotEmpty(taskIds)){ @@ -728,12 +732,12 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl taskList = fbsProjectTaskService.list(Wrappers.lambdaQuery() .eq(FbsProjectTask::getProjectId, projectId) ); - ZbfProjectDetailProgressVO vo = new ZbfProjectDetailProgressVO(); + ZbfProgressVO vo = new ZbfProgressVO(); List taskIds = taskList.stream().map(FbsProjectTask::getId).collect(Collectors.toList()); if(CollectionUtil.isNotEmpty(taskIds)){ List progressByTaskIds = bgtProjectTaskProgressService.getProgressByTaskIds(taskIds); @@ -772,20 +776,32 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl passList= fbsWageApplicationService.getPassListBySubIds(subIds); BigDecimal payAmount = passList.stream().map(FbsWageApplication::getApplicantAmount).reduce(BigDecimal.ZERO, BigDecimal::add); vo.setPayAmount(payAmount); + + //查询分包下的任务 + List taskList = fbsProjectTaskService.list(Wrappers.lambdaQuery() + .in(FbsProjectTask::getSubId, subIds) + ); + List taskIds = taskList.stream().map(FbsProjectTask::getId).collect(Collectors.toList()); + if(CollectionUtil.isNotEmpty(taskIds)){ + List passListByTaskIds = wgzPayCalculationService.getPassListByTaskIds(taskIds); + + for (WgzPayCalculation wgzPayCalculation : passListByTaskIds){ + BigDecimal multiply = wgzPayCalculation.getRecruitAmount().multiply(new BigDecimal(wgzPayCalculation.getNum())); + wgzAmount = wgzAmount.add(multiply); + } + } } + vo.setWgzAmount(wgzAmount); return vo; } - @Override - public TableDataInfo zbfWageList(Long projectId) { - return null; - } @Override public TableDataInfo zbfSwitchList(ZbfProjectSwitchListDTO dto) { diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfProjectSubcontractingServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfProjectSubcontractingServiceImpl.java index 31c6c66..d4f4e9f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfProjectSubcontractingServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfProjectSubcontractingServiceImpl.java @@ -1,22 +1,38 @@ package com.ruoyi.zbf.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; 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.BgtProjectRecruitApply; +import com.ruoyi.bgt.domain.BgtProjectTaskProgress; +import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; +import com.ruoyi.bgt.service.IBgtProjectTaskProgressService; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.RecruitApplyStatus; import com.ruoyi.common.utils.PageUtils; +import com.ruoyi.fbs.domain.FbsProjectTask; +import com.ruoyi.fbs.domain.FbsWageApplication; +import com.ruoyi.fbs.service.IFbsProjectTaskService; +import com.ruoyi.fbs.service.IFbsWageApplicationService; +import com.ruoyi.wgz.domain.WgzPayCalculation; +import com.ruoyi.wgz.service.IWgzPayCalculationService; import com.ruoyi.zbf.bo.ZbfProjectSubcontractingQueryBo; import com.ruoyi.zbf.domain.ZbfProjectSubcontracting; +import com.ruoyi.zbf.domain.dto.ZbfProgressListDTO; +import com.ruoyi.zbf.domain.dto.ZbfSubBgtListDTO; +import com.ruoyi.zbf.domain.vo.*; import com.ruoyi.zbf.mapper.ZbfProjectSubcontractingMapper; import com.ruoyi.zbf.service.IZbfProjectSubcontractingService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; /** * 总包方项目分包Service业务层处理 @@ -27,6 +43,17 @@ import java.util.Map; @Service public class ZbfProjectSubcontractingServiceImpl extends ServicePlusImpl implements IZbfProjectSubcontractingService { + @Autowired + private IFbsProjectTaskService fbsProjectTaskService; + @Autowired + private IBgtProjectRecruitApplyService bgtProjectRecruitApplyService; + @Autowired + private IBgtProjectTaskProgressService bgtProjectTaskProgressService; + @Autowired + private IFbsWageApplicationService fbsWageApplicationService; + @Autowired + private IWgzPayCalculationService wgzPayCalculationService; + @Override public ZbfProjectSubcontracting queryById(Long id){ return getById(id); @@ -86,4 +113,102 @@ public class ZbfProjectSubcontractingServiceImpl extends ServicePlusImpl taskList = fbsProjectTaskService.list(Wrappers.lambdaQuery() + .eq(FbsProjectTask::getSubId, subId)); + if (CollectionUtil.isNotEmpty(taskList)){ + List taskIds = taskList.stream().map(FbsProjectTask::getId).collect(Collectors.toList()); + List recruitApplyList = bgtProjectRecruitApplyService.list(Wrappers.lambdaQuery() + .in(BgtProjectRecruitApply::getTaskId, taskIds) + .in(BgtProjectRecruitApply::getStatus, RecruitApplyStatus.getWorkStatus())); + entryCount = (int) recruitApplyList.stream().filter(recruitApply -> RecruitApplyStatus.WORKING.getCode().equals(recruitApply.getStatus())).count(); + leaveCount = (int) recruitApplyList.stream().filter(recruitApply -> RecruitApplyStatus.OUT_WORK.getCode().equals(recruitApply.getStatus())).count(); + } + ZbfSubPersonCountVO vo = new ZbfSubPersonCountVO(); + vo.setEntryCount(entryCount); + vo.setLeaveCount(leaveCount); + vo.setTotalCount(entryCount+leaveCount); + return vo; + } + + @Override + public TableDataInfo bgtList(ZbfSubBgtListDTO dto) { + Page queryDTOPage = new Page<>(); + queryDTOPage.setCurrent(dto.getPageNum()); + queryDTOPage.setSize(dto.getPageSize()); + Page page = baseMapper.bgtList(queryDTOPage, dto); + return PageUtils.buildDataInfo(page); + } + + @Override + public ZbfProgressVO zbfSubProgress(Long subId) { + + //查询所有创建的任务 + List taskList = fbsProjectTaskService.list(Wrappers.lambdaQuery() + .eq(FbsProjectTask::getSubId, subId) + ); + ZbfProgressVO vo = new ZbfProgressVO(); + 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 TableDataInfo zbfSubProgressList(ZbfProgressListDTO dto) { + Page voPage = new Page<>(); + //查询所有创建的任务 + List taskList = fbsProjectTaskService.list(Wrappers.lambdaQuery() + .eq(FbsProjectTask::getSubId, dto.getSubId()) + ); + List taskIds = taskList.stream().map(FbsProjectTask::getId).collect(Collectors.toList()); + if(CollectionUtil.isNotEmpty(taskIds)){ + TableDataInfo progressByTaskIds = bgtProjectTaskProgressService.getProgressByTaskIds(dto.getPageSize(), dto.getPageNum(), taskIds); + voPage.setTotal(progressByTaskIds.getTotal()); + voPage.setRecords(BeanUtil.copyToList(progressByTaskIds.getRows(), ZbfProgressListVO.class)); + } + return PageUtils.buildDataInfo(voPage); + } + + @Override + public ZbfProjectDetailWageVO zbfSubWage(Long subId) { + ZbfProjectDetailWageVO vo = new ZbfProjectDetailWageVO(); + ZbfProjectSubcontracting subcontracting = getById(subId); + //总金额 + vo.setTotalAmount(subcontracting.getSubAmount()); + + //已结算金额 + vo.setPayAmount(BigDecimal.ZERO); + BigDecimal wgzAmount = BigDecimal.ZERO; + + List passList = fbsWageApplicationService.getPassListBySubIds(Collections.singletonList(subId)); + BigDecimal payAmount = passList.stream().map(FbsWageApplication::getApplicantAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + vo.setPayAmount(payAmount); + + //查询分包下的任务 + List taskList = fbsProjectTaskService.list(Wrappers.lambdaQuery() + .eq(FbsProjectTask::getSubId, subId) + ); + List taskIds = taskList.stream().map(FbsProjectTask::getId).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(taskIds)) { + List passListByTaskIds = wgzPayCalculationService.getPassListByTaskIds(taskIds); + + for (WgzPayCalculation wgzPayCalculation : passListByTaskIds) { + BigDecimal multiply = wgzPayCalculation.getRecruitAmount().multiply(new BigDecimal(wgzPayCalculation.getNum())); + wgzAmount = wgzAmount.add(multiply); + } + } + vo.setWgzAmount(wgzAmount); + return vo; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfUserServiceImpl.java index 065e340..d378f2e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfUserServiceImpl.java @@ -10,7 +10,9 @@ import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.domain.Company; import com.ruoyi.common.domain.dto.CompanyAuthenticateDTO; +import com.ruoyi.common.exception.BaseException; import com.ruoyi.common.service.ICompanyService; +import com.ruoyi.common.util.ValidUtil; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.zbf.bo.ZbfUserQueryBo; @@ -118,6 +120,26 @@ public class ZbfUserServiceImpl extends ServicePlusImpl @Override public Long authenticate(CompanyAuthenticateDTO dto) { + + // 校验银行卡号 + if (!ValidUtil.isValidBankCard(dto.getCardNo())) { + throw new BaseException("银行卡号格式不正确"); + } + + //校验电话 + if (!ValidUtil.isValidChineseMobile(dto.getContactPhone())) { + throw new BaseException("手机号格式不正确"); + } + + boolean b = ValidUtil.verifyCreditCode(dto.getCreditCode()); + if (!b) { + throw new BaseException("统一社会信用代码格式不正确"); + } + + Company companyByCreditCode = companyService.getCompanyByCreditCode(dto.getCreditCode()); + if (companyByCreditCode != null) { + throw new RuntimeException("该企业已认证"); + } Company company = BeanUtil.copyProperties(dto, Company.class); companyService.save(company); ZbfUser zbfUser = selectUserByUserId(SecurityUtils.getAppUserId()); @@ -125,4 +147,30 @@ public class ZbfUserServiceImpl extends ServicePlusImpl updateById(zbfUser); return company.getId(); } + + @Override + public ZbfUser selectUserByCreditCode(String creditCode) { + Company company = companyService.getCompanyByCreditCode(creditCode); + if (company != null) { + return baseMapper.selectOne(new LambdaQueryWrapper().eq(ZbfUser::getCompanyId, company.getId())); + } + return null; + } + + @Override + public ZbfUser loginSelect(String key) { + ZbfUser zbfUser = selectUserByPhone(key); + if(zbfUser != null){ + return zbfUser; + } + zbfUser = selectUserByCreditCode(key); + return zbfUser; + } + + @Override + public Boolean editAvatar(String avatarName) { + ZbfUser zbfUser = selectUserByUserId(SecurityUtils.getAppUserId()); + zbfUser.setAvatarName(avatarName); + return updateById(zbfUser); + } } diff --git a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectTaskProgressMapper.xml b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectTaskProgressMapper.xml index 2552abf..d8f95ff 100644 --- a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectTaskProgressMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectTaskProgressMapper.xml @@ -52,6 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and bptp.task_id = #{dto.taskId} + order by bptp.id desc + SELECT u.id, + u.user_id, + u.username, + u.phone, + u.avatar_name + FROM fbs_project_task s + LEFT JOIN bgt_user u ON s.user_id = u.user_id + where s.sub_id = #{dto.subId} and s.user_id is not null +