From 48d38d196240198d9925c0dd18cb211f5983b640 Mon Sep 17 00:00:00 2001 From: zt Date: Wed, 16 Apr 2025 17:31:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppBgtProjectRecruitApplyController.java | 5 +- .../AppBgtProjectTaskProgressController.java | 4 + .../controller/common/AnnexController.java | 23 +++ .../common/UploadZipController.java | 31 ++-- .../fbs/AppFbsWageApplicationController.java | 1 - .../zbf/AppZbfMessageController.java | 72 +++++++++ .../zbf/AppZbfWageApplicationController.java | 4 +- .../common/enums/RecruitApplyStatus.java | 6 + .../framework/config/SecurityConfig.java | 3 +- .../bgt/domain/BgtProjectTaskProgress.java | 2 +- .../ruoyi/bgt/domain/BgtWageApplication.java | 3 + .../dto/BgtProjectRecruitApplyUserDTO.java | 2 +- .../com/ruoyi/bgt/domain/dto/BgtScoreDTO.java | 6 + .../vo/BgtPayCalculationDetailBaseVO.java | 2 +- .../vo/BgtPayCalculationDetailListVO.java | 3 + .../vo/BgtProjectRecruitApplyHtmlVO.java | 53 +++++++ .../vo/BgtProjectRecruitDetailWgzListVO.java | 3 + .../vo/BgtProjectTaskProgressDetailVO.java | 47 ++++-- .../domain/vo/BgtWageApplicationDetailVO.java | 27 ++++ .../bgt/domain/vo/BgtWageApplicationVO.java | 3 + .../mapper/BgtProjectRecruitApplyMapper.java | 3 +- .../IBgtProjectRecruitApplyService.java | 3 +- .../BgtProjectRecruitApplyServiceImpl.java | 22 ++- .../impl/BgtProjectRecruitServiceImpl.java | 9 +- .../BgtProjectTaskProgressServiceImpl.java | 27 +++- .../impl/BgtWageApplicationServiceImpl.java | 16 ++ .../common/constants/BgtMessageConstant.java | 11 +- .../common/domain/vo/AnnexUploadCountVO.java | 22 +++ .../com/ruoyi/common/mapper/AnnexMapper.java | 11 +- .../ruoyi/common/service/IAnnexService.java | 8 +- .../common/service/impl/AnnexServiceImpl.java | 6 + .../ruoyi/fbs/domain/FbsWageApplication.java | 3 + .../fbs/domain/dto/FbsProjectListDTO.java | 3 + .../ruoyi/fbs/domain/dto/FbsWageAuditDTO.java | 5 +- .../fbs/domain/dto/FbsWageAuditListDTO.java | 2 +- .../java/com/ruoyi/task/BusinessTask.java | 2 + ...gzAppApplyForPayrollSettlementListRes.java | 2 + .../service/IWgzPayCalculationService.java | 5 + .../impl/WgzPayCalculationServiceImpl.java | 62 ++++++-- .../zbf/domain/dto/ZbfMessageDetailDTO.java | 46 ++++++ .../zbf/domain/dto/ZbfMessageMyListDTO.java | 28 ++++ .../ruoyi/zbf/domain/dto/ZbfWageAuditDTO.java | 5 +- .../zbf/domain/vo/ZbfMessageCountVO.java | 36 +++++ .../zbf/domain/vo/ZbfMessageDetailVO.java | 58 +++++++ .../com/ruoyi/zbf/domain/vo/ZbfMessageVO.java | 55 +++++++ .../ruoyi/zbf/service/IZbfMessageService.java | 18 +++ .../service/impl/ZbfMessageServiceImpl.java | 58 +++++++ .../bgt/BgtProjectRecruitApplyMapper.xml | 13 +- .../mapper/bgt/BgtWageApplicationMapper.xml | 12 +- .../resources/mapper/common/AnnexMapper.xml | 13 +- .../resources/mapper/zbf/ZbfProjectMapper.xml | 5 + ruoyi/uploadPath/appResource/html/upload.html | 146 ++++++++++++++++-- 52 files changed, 927 insertions(+), 88 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfMessageController.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitApplyHtmlVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/common/domain/vo/AnnexUploadCountVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfMessageDetailDTO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfMessageMyListDTO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfMessageCountVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfMessageDetailVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfMessageVO.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java index 8626d47..fe80446 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java @@ -4,6 +4,7 @@ import com.ruoyi.bgt.domain.BgtProjectRecruitApply; import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyConsentDTO; import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; import com.ruoyi.bgt.domain.dto.BgtScoreDTO; +import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyHtmlVO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; import com.ruoyi.common.annotation.Log; @@ -12,6 +13,7 @@ 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.common.utils.SecurityUtils; import com.ruoyi.wgz.bo.req.WgzAppPersonalBasicInformationReq; import com.ruoyi.wgz.bo.res.WgzAppPersonalBasicInformationRes; import com.ruoyi.wgz.service.IWgzUserService; @@ -63,7 +65,7 @@ public class AppBgtProjectRecruitApplyController extends BaseController { @ApiOperation("HTML务工者列表") @GetMapping("/htmlList") - public AjaxResult> htmlList(Long recruitId,Boolean isNotUpload) { + public AjaxResult> htmlList(Long recruitId, Boolean isNotUpload) { return AjaxResult.success(iBgtProjectRecruitApplyService.htmlList(recruitId,isNotUpload)); } @@ -141,6 +143,7 @@ public class AppBgtProjectRecruitApplyController extends BaseController { @RepeatSubmit @PutMapping("/score") public AjaxResult score(@Validated @RequestBody BgtScoreDTO dto) { + dto.setScoreBy(SecurityUtils.getAppUserId()); return AjaxResult.success(iBgtProjectRecruitApplyService.score(dto)); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskProgressController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskProgressController.java index 4a71a04..0034298 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskProgressController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskProgressController.java @@ -14,6 +14,7 @@ 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.common.enums.BusinessType; +import com.ruoyi.common.exception.BaseException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.fbs.domain.FbsProjectTask; import com.ruoyi.fbs.service.IFbsProjectTaskService; @@ -77,6 +78,9 @@ public class AppBgtProjectTaskProgressController extends BaseController { FbsProjectTask task = iFbsProjectTaskService.getById(dto.getTaskId()); FbsUser fbsUser = iFbsUserService.selectUserByUserId(task.getCreateId()); + if (fbsUser == null) { + throw new BaseException("获取不到分包商信息"); + } BgtProjectTaskProgress bgtProjectTaskProgress = BeanUtil.copyProperties(dto, BgtProjectTaskProgress.class); bgtProjectTaskProgress.setReviewerName(fbsUser.getUsername()); bgtProjectTaskProgress.setReviewerId(fbsUser.getUserId()); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AnnexController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AnnexController.java index 273d160..f9640b0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AnnexController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AnnexController.java @@ -28,7 +28,10 @@ import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotEmpty; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import static com.ruoyi.common.constant.Constants.BGT; import static com.ruoyi.common.constant.Constants.WGZ; @@ -150,4 +153,24 @@ public class AnnexController extends BaseController { return AjaxResult.success(iAnnexService.list(wrapper)); } + @ApiOperation("HTML查看务工者附件") + @GetMapping("/getHtmlWgzAnnex") + public AjaxResult>> getHtmlWgzAnnex(Long wgzUserId,Long recruitApplyId) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .eq(Annex::getUserId, wgzUserId) + .eq(Annex::getUserType, WGZ) + .eq(Annex::getRecruitApplyId, recruitApplyId) + .in(Annex::getAnnexType, Arrays.asList("1","2")); + List list = iAnnexService.list(wrapper); + Map> stringListhashMap = new HashMap<>(); + //劳动合同 + List contracts = list.stream().filter(vo -> "1".equals(vo.getAnnexType())).collect(Collectors.toList()); + stringListhashMap.put("1",contracts); + //保单 + List policyList = list.stream().filter(vo -> "2".equals(vo.getAnnexType())).collect(Collectors.toList()); + stringListhashMap.put("2",policyList); + return AjaxResult.success(stringListhashMap); + } + + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/UploadZipController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/UploadZipController.java index 74eae86..72d1c36 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/UploadZipController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/UploadZipController.java @@ -56,9 +56,9 @@ public class UploadZipController { private final IBgtUserService bgtUserService; private final IBgtProjectRecruitApplyService recruitApplyService; - private static final String TEMP_DIR = "ruoyi/uploadPath/temporaryZip"; - private static final String SAVE_DIR = "ruoyi/uploadPath/recruit"; - private static final String RECORD_DIR = "ruoyi/uploadPath/record"; + private static final String TEMP_DIR = "ruoyi/uploadPath/temporaryZip"; //临时解压 + private static final String SAVE_DIR = "ruoyi/uploadPath/recruit"; //保存目录 + private static final String RECORD_DIR = "ruoyi/uploadPath/record"; //记录目录 @ApiOperation("上传压缩文件") @PostMapping("/upload-zip") @@ -233,7 +233,7 @@ public class UploadZipController { System.out.println("第二层文件夹名称: " + secondLevelFolderName); if (secondLevelFile.isDirectory()) { File[] thirdLevelFiles = secondLevelFile.listFiles(); - if (thirdLevelFiles != null) { + if (thirdLevelFiles != null && thirdLevelFiles.length > 0) { // 删除数据库里的附件 if ("保险".equals(secondLevelFolderName)) { insurance.add(wgzUser.getUserId()); @@ -271,11 +271,24 @@ public class UploadZipController { if (firstLevelFiles != null) { for (File firstLevelFile : firstLevelFiles) { if (firstLevelFile.isDirectory()) { - String secondLevelName = firstLevelFile.getName(); - File secondLevelDestDir = new File(firstLevelDestDir, secondLevelName); - if (secondLevelDestDir.exists()) { - // 删除和解压出来的二级目录同名字的目录 - deleteFolder(secondLevelDestDir); + + String firstLevelName = firstLevelFile.getName(); //解压目录 + File secondLevelDestDir = new File(firstLevelDestDir, firstLevelName); //保存目录 + + File[] secondLevelFiles = firstLevelFile.listFiles(); + if (secondLevelFiles != null) { + for (File secondLevelfile : secondLevelFiles) { + if (secondLevelfile.isDirectory()) { + String secondLevelName = secondLevelfile.getName(); //解压目录 + File thirdLevelDestDir = new File(secondLevelDestDir, secondLevelName); //保存目录 + + File[] thirdLevelFiles = secondLevelfile.listFiles(); + if(thirdLevelFiles != null && thirdLevelFiles.length > 0){ + deleteFolder(thirdLevelDestDir); + } + + } + } } moveFilesRecursively(firstLevelFile, firstLevelDestDir, annexList, recruitId,username); } 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 0defa5c..2e871ed 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 @@ -105,5 +105,4 @@ public class AppFbsWageApplicationController extends BaseController { return AjaxResult.success(iBgtWageApplicationService.fbsAudit(bo)); } - } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfMessageController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfMessageController.java new file mode 100644 index 0000000..713789e --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zbf/AppZbfMessageController.java @@ -0,0 +1,72 @@ +package com.ruoyi.web.controller.zbf; + +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.zbf.domain.ZbfMessage; +import com.ruoyi.zbf.domain.dto.ZbfMessageDetailDTO; +import com.ruoyi.zbf.domain.dto.ZbfMessageMyListDTO; +import com.ruoyi.zbf.domain.vo.ZbfMessageCountVO; +import com.ruoyi.zbf.domain.vo.ZbfMessageDetailVO; +import com.ruoyi.zbf.domain.vo.ZbfMessageVO; +import com.ruoyi.zbf.service.IZbfMessageService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * 消息Controller + * + * @author ruoyi + * @date 2025-03-31 + */ +@Api(value = "App总包方消息控制器", tags = {"App总包方"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RestController +@RequestMapping("/app/zbf/message") +public class AppZbfMessageController extends BaseController { + + private final IZbfMessageService iZbfMessageService; + + /** + * 查询消息列表 + */ + @ApiOperation("总包方未读消息统计") + @GetMapping("/countUnread") + public AjaxResult count() { + return AjaxResult.success(iZbfMessageService.countUnread()); + } + + @ApiOperation("总包方消息列表") + @GetMapping("/myList") + public TableDataInfo myList(ZbfMessageMyListDTO dto) { + return iZbfMessageService.queryMyPageList(dto); + } + + @ApiOperation("总包方消息详情列表") + @GetMapping("/detailList") + public TableDataInfo otherList(ZbfMessageDetailDTO dto) { + return iZbfMessageService.queryDetailPageList(dto); + } + + + @ApiOperation("总包方消息已读") + @PutMapping("/read/{id}") + public AjaxResult read(@PathVariable(value = "id") Long id) { + ZbfMessage zbfMessage = new ZbfMessage(); + zbfMessage.setId(id); + zbfMessage.setReadStatus("1"); + return AjaxResult.success(iZbfMessageService.updateById(zbfMessage)); + } + + @ApiOperation("总包方消息已操作") + @PutMapping("/operation/{id}") + public AjaxResult operation(@PathVariable(value = "id") Long id) { + ZbfMessage zbfMessage = new ZbfMessage(); + zbfMessage.setId(id); + zbfMessage.setIsOperation("2"); + return AjaxResult.success(iZbfMessageService.updateById(zbfMessage)); + } +} 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 index 0b6e24a..9f86404 100644 --- 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 @@ -7,8 +7,8 @@ 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 com.ruoyi.zbf.domain.dto.ZbfWageAuditDTO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -43,7 +43,7 @@ public class AppZbfWageApplicationController extends BaseController { @Log(title = "总包方审核分包商工资申请", businessType = BusinessType.UPDATE) @RepeatSubmit @PutMapping("/audit") - public AjaxResult audit(@Validated @RequestBody FbsWageAuditDTO dto) { + public AjaxResult audit(@Validated @RequestBody ZbfWageAuditDTO dto) { FbsWageApplication bo = iFbsWageApplicationService.getById(dto.getId()); BeanUtil.copyProperties(dto, bo); return AjaxResult.success(iFbsWageApplicationService.zbfAudit(bo)); diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java index a9cc4d7..b0fd4dc 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java @@ -17,6 +17,7 @@ public enum RecruitApplyStatus WGZ_REFUSE("4", "务工者拒绝"), WORKING("5", "进场"), OUT_WORK("6", "离场"), + CANCEL("7", "取消"), ; private final String code; @@ -57,4 +58,9 @@ public enum RecruitApplyStatus public static List getFile(){ return Arrays.asList(WORKING.getCode(), WGZ_PASS.getCode()); } + + //其他 + public static List other(){ + return Arrays.asList(BGT_REFUSE.getCode(), WGZ_REFUSE.getCode(),CANCEL.getCode()); + } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index e0f09ba..83a30a8 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -102,7 +102,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter .authorizeRequests() // 对于登录login 验证码captchaImage 允许匿名访问 .antMatchers("/login", "/app/login", "/captchaImage","/demo/tress/all").anonymous() - .antMatchers("/app/login","/wgz/app/wgzRegister","/app/bgt/recruit/htmlList","/app/bgt/apply/htmlList" + .antMatchers("/app/login","/wgz/app/wgzRegister", + "/app/bgt/recruit/htmlList","/app/bgt/apply/htmlList","/common/annex/getHtmlWgzAnnex" ,"/download-folders","/upload-zip").permitAll() .antMatchers( HttpMethod.GET, diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/BgtProjectTaskProgress.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/BgtProjectTaskProgress.java index d0be008..e91c4cf 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/BgtProjectTaskProgress.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/BgtProjectTaskProgress.java @@ -83,7 +83,7 @@ public class BgtProjectTaskProgress implements Serializable { private String uploader; @ApiModelProperty("上传时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private LocalDateTime uploadTime; /** 进度 */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/BgtWageApplication.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/BgtWageApplication.java index 2f186fe..7880279 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/BgtWageApplication.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/BgtWageApplication.java @@ -117,6 +117,9 @@ public class BgtWageApplication implements Serializable { @ApiModelProperty("审核人名字") private String reviewerName; + @ApiModelProperty("审核意见") + private String auditOpinion; + /** 删除标志(0代表存在 2代表删除) */ @Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除") @ApiModelProperty("删除标志(0代表存在 2代表删除)") diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyUserDTO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyUserDTO.java index b589d9e..560af24 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyUserDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyUserDTO.java @@ -20,7 +20,7 @@ public class BgtProjectRecruitApplyUserDTO { @NotNull(message = "招工任务Id不能为空") private Long recruitId; - @ApiModelProperty("选择状态(0未选择 1已选择") + @ApiModelProperty("选择状态(0未选择 1已选择 2其他") private Integer status; @ApiModelProperty("务工者名字") diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtScoreDTO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtScoreDTO.java index 7f55400..1e9ce40 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtScoreDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtScoreDTO.java @@ -30,4 +30,10 @@ public class BgtScoreDTO { /** 评分内容 */ @ApiModelProperty("评分内容") private String content; + + @ApiModelProperty(value = "创建者",hidden = true) + private String createBy; + + @ApiModelProperty(value = "更新者",hidden = true) + private String updateBy; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtPayCalculationDetailBaseVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtPayCalculationDetailBaseVO.java index 4ae7961..a68053e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtPayCalculationDetailBaseVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtPayCalculationDetailBaseVO.java @@ -41,7 +41,7 @@ public class BgtPayCalculationDetailBaseVO { @ApiModelProperty("已付工资") private BigDecimal payAmount; - @ApiModelProperty("剩余工资") + @ApiModelProperty("申请中工资") private BigDecimal residueAmount; @ApiModelProperty("身份证号") diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtPayCalculationDetailListVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtPayCalculationDetailListVO.java index fff1bae..bb7443b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtPayCalculationDetailListVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtPayCalculationDetailListVO.java @@ -25,6 +25,9 @@ public class BgtPayCalculationDetailListVO { @ApiModelProperty("出勤天数") private Long num; + @ApiModelProperty("申请人类型") + private String operatorType; + @ApiModelProperty("创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitApplyHtmlVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitApplyHtmlVO.java new file mode 100644 index 0000000..25ae88b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitApplyHtmlVO.java @@ -0,0 +1,53 @@ +package com.ruoyi.bgt.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 包工头招工申请对象 bgt_project_recruit_apply + * + * @author ruoyi + * @date 2025-02-18 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("App包工头招工HTML务工者信息") +public class BgtProjectRecruitApplyHtmlVO implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty("主键ID") + private Long id; + + @ApiModelProperty("务工者用户ID") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long userId; + + @ApiModelProperty("姓名") + private String username; + + @ApiModelProperty("联系电话") + private String phone; + + @ApiModelProperty("头像") + private String avatarName; + + @ApiModelProperty("招工ID") + private Long recruitId; + + @ApiModelProperty("招工主题") + private String recruitName; + + @ApiModelProperty("0报名 1包工同意 2包工头拒绝(截止时间)3务工者同意 4务工者拒绝 5进场 6离场") + private String status; + + @ApiModelProperty("上传状态(0,未上传 1-部分上传 2-已上传)") + private String uploadType="0"; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitDetailWgzListVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitDetailWgzListVO.java index 7c11e86..d2c599a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitDetailWgzListVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitDetailWgzListVO.java @@ -26,4 +26,7 @@ public class BgtProjectRecruitDetailWgzListVO { @ApiModelProperty("未选择人数") private Integer notSelectNum; + + @ApiModelProperty("其他人数") + private Integer otherNum; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectTaskProgressDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectTaskProgressDetailVO.java index ca1b6b1..517e232 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectTaskProgressDetailVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectTaskProgressDetailVO.java @@ -28,12 +28,27 @@ public class BgtProjectTaskProgressDetailVO implements Serializable { @ApiModelProperty("主键ID") private Long id; + @ApiModelProperty("项目ID") + private Long projectId; + @ApiModelProperty("项目名") private String projectName; + @ApiModelProperty("标段ID") + private Long sectionId; + + @ApiModelProperty("分包ID") + private Long subId; + + @ApiModelProperty("任务ID") + private Long taskId; + @ApiModelProperty("任务名") private String taskName; + @ApiModelProperty("用工数量") + private Integer taskStaffNum; + @ApiModelProperty("任务地址") private String taskAddress; @@ -43,31 +58,41 @@ public class BgtProjectTaskProgressDetailVO implements Serializable { @ApiModelProperty("负责人") private String director; + @ApiModelProperty("上传人ID") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long uploaderId; + @ApiModelProperty("上传人") private String uploader; + @ApiModelProperty("上传时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + private LocalDateTime createTime; + @ApiModelProperty("进度") private Integer progress; - @ApiModelProperty("用工数量") - private Integer taskStaffNum; - - @ApiModelProperty("审核状态(1审核中 2已审核 3未审核)") - private String auditStatus; - - @ApiModelProperty("上传时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm") - private LocalDateTime createTime; - @ApiModelProperty("进度描述") private String progressDescribe; @ApiModelProperty("进度附件") private String progressAnnex; + @ApiModelProperty("审核状态(1审核中 2已审核 3未审核)") + private String auditStatus; + + @ApiModelProperty("审核人Id") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long reviewerId; + + @ApiModelProperty("审核人名字") + private String reviewerName; + + @ApiModelProperty("审核意见") + private String auditOpinion; + @ApiModelProperty("备注") private String remark; - } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtWageApplicationDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtWageApplicationDetailVO.java index 89d01ff..36d54af 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtWageApplicationDetailVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtWageApplicationDetailVO.java @@ -26,9 +26,21 @@ public class BgtWageApplicationDetailVO { @ApiModelProperty("主键") private Long id; + @ApiModelProperty("项目ID") + private Long projectId; + @ApiModelProperty("项目名") private String projectName; + @ApiModelProperty("标段ID") + private Long sectionId; + + @ApiModelProperty("分包ID") + private Long subId; + + @ApiModelProperty("任务ID") + private Long taskId; + @ApiModelProperty("任务名") private String taskName; @@ -41,6 +53,10 @@ public class BgtWageApplicationDetailVO { @ApiModelProperty("申请金额") private BigDecimal applicantAmount; + @ApiModelProperty("申请人ID") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long userId; + @ApiModelProperty("申请人") private String username; @@ -72,4 +88,15 @@ public class BgtWageApplicationDetailVO { @ApiModelProperty("审核状态(1审核中 2已审核 3未审核)") private String auditStatus; + @ApiModelProperty("审核人Id") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long reviewerId; + + @ApiModelProperty("审核人名字") + private String reviewerName; + + @ApiModelProperty("审核意见") + private String auditOpinion; + + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtWageApplicationVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtWageApplicationVO.java index bbb948f..9509da7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtWageApplicationVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtWageApplicationVO.java @@ -59,4 +59,7 @@ public class BgtWageApplicationVO { @ApiModelProperty("审核状态(1审核中 2已审核 3未审核)") private String auditStatus; + + @ApiModelProperty("审核意见") + private String auditOpinion; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java index 1eb4d60..fe9bb0e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java @@ -6,6 +6,7 @@ import com.ruoyi.bgt.domain.dto.BgtAttendanceDayDTO; import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyUserDTO; import com.ruoyi.bgt.domain.dto.BgtProjectTaskUserDTO; +import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyHtmlVO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; @@ -33,7 +34,7 @@ public interface BgtProjectRecruitApplyMapper extends BaseMapperPlus appQueryList(@Param("dto") BgtProjectRecruitApplyQueryDTO dto); - List htmlList(@Param("recruitId") Long recruitId,@Param("isNotUpload")Boolean isNotUpload); + List htmlList(@Param("recruitId") Long recruitId, @Param("isNotUpload")Boolean isNotUpload); // Page dayAttendanceList(@Param("page")Page queryDTOPage,@Param("dto") BgtAttendanceDayDTO dto); diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java index b87f1f1..b9f70e4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java @@ -3,6 +3,7 @@ package com.ruoyi.bgt.service; import com.ruoyi.bgt.bo.BgtProjectRecruitApplyQueryBo; import com.ruoyi.bgt.domain.BgtProjectRecruitApply; import com.ruoyi.bgt.domain.dto.*; +import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyHtmlVO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; @@ -96,7 +97,7 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus appAllList(BgtProjectRecruitApplyQueryDTO dto); - List htmlList(Long recruitId,Boolean isNotUpload); + List htmlList(Long recruitId, Boolean isNotUpload); /** * LC-APP相关 diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitApplyServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitApplyServiceImpl.java index a2124db..c5ea859 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitApplyServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitApplyServiceImpl.java @@ -12,6 +12,7 @@ import com.ruoyi.bgt.domain.BgtMessage; import com.ruoyi.bgt.domain.BgtProjectRecruit; import com.ruoyi.bgt.domain.BgtProjectRecruitApply; import com.ruoyi.bgt.domain.dto.*; +import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyHtmlVO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.bgt.mapper.BgtProjectRecruitApplyMapper; import com.ruoyi.bgt.service.IBgtMessageService; @@ -20,6 +21,7 @@ import com.ruoyi.bgt.service.IBgtProjectRecruitService; import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.domain.vo.AnnexUploadCountVO; import com.ruoyi.common.enums.RecruitApplyStatus; import com.ruoyi.common.enums.RecruitStatus; import com.ruoyi.common.exception.BaseException; @@ -50,6 +52,7 @@ import java.time.LocalDate; import java.time.LocalTime; import java.time.temporal.TemporalAdjusters; import java.util.*; +import java.util.stream.Collectors; import static com.ruoyi.common.constants.BgtMessageConstant.*; import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.*; @@ -237,8 +240,22 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl htmlList(Long recruitId,Boolean isNotUpload) { - return baseMapper.htmlList(recruitId,isNotUpload); + public List htmlList(Long recruitId, Boolean isNotUpload) { + List bgtProjectRecruitApplyVOS = baseMapper.htmlList(recruitId, isNotUpload); + List annexUploadCountVOS = annexService.countByRecruitId(recruitId); + Map map = annexUploadCountVOS.stream().collect(Collectors.toMap(vo->vo.getUserId()+"-"+vo.getRecruitApplyId(), AnnexUploadCountVO::getNum)); + if(!isNotUpload){ + for (BgtProjectRecruitApplyHtmlVO vo : bgtProjectRecruitApplyVOS){ + Integer i = map.get(vo.getUserId()+"-"+vo.getId()); + if (i != null && i == 1) { + vo.setUploadType("1"); + } + if (i != null && i == 2) { + vo.setUploadType("2"); + } + } + } + return bgtProjectRecruitApplyVOS; } @Override @@ -613,7 +630,6 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl wgzScoreRecords = scoreRecordService.getBaseMapper().selectList(Wrappers.lambdaQuery() diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitServiceImpl.java index 4fbada3..a88d637 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitServiceImpl.java @@ -229,12 +229,13 @@ public class BgtProjectRecruitServiceImpl extends ServicePlusImpl list = bgtProjectRecruitApplyService.list(wrapper); - List bgtProjectRecruitApplyVOS = BeanUtil.copyToList(list, BgtProjectRecruitApplyVO.class); - int count = (int)bgtProjectRecruitApplyVOS.stream().filter(apply -> apply.getStatus().equals(RecruitApplyStatus.SIGN_UP.getCode())).count(); - vo.setTotalNum(bgtProjectRecruitApplyVOS.size()); + int count = (int)list.stream().filter(apply -> apply.getStatus().equals(RecruitApplyStatus.SIGN_UP.getCode())).count(); + int otherNum = (int)list.stream().filter(apply -> RecruitApplyStatus.other().contains(apply.getStatus())).count(); + vo.setTotalNum(list.size()); vo.setNotSelectNum(count); - vo.setPassNum(vo.getTotalNum()-count); + vo.setOtherNum(otherNum); + vo.setPassNum(vo.getTotalNum()-count-otherNum); return vo; } 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 b263645..e32cb13 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 @@ -134,13 +134,32 @@ public class BgtProjectTaskProgressServiceImpl extends ServicePlusImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(BgtProjectTaskProgress::getTaskId, entity.getTaskId()); + wrapper.orderByDesc(BgtProjectTaskProgress::getProgress); + List list = baseMapper.selectList(wrapper); + int lastProgress =0; + if(CollectionUtil.isNotEmpty(list)){ + boolean b = list.stream().anyMatch(vo -> AuditStatus.AUDIT.getCode().equals(vo.getAuditStatus())); + if(b){ + throw new BaseException("存在未审核的进度,请等待审核完成之后再提交"); + } + // 找到第一个审核状态为通过的数据 + BgtProjectTaskProgress firstApproved = list.stream() + .filter(vo -> AuditStatus.PASS.getCode().equals(vo.getAuditStatus())) + .findFirst() + .orElse(null); + if (firstApproved != null) { + lastProgress = firstApproved.getProgress(); + if (firstApproved.getProgress() == 100) { + throw new BaseException("当前任务进度已满"); + } + } + } if(lastProgress>=entity.getProgress()){ throw new BaseException("当前进度不能小于等于上一个进度"); } - if(lastProgress==100){ - throw new BaseException("进度已满"); - } + } @Override 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 081b1b1..723ba21 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 @@ -16,6 +16,7 @@ import com.ruoyi.bgt.domain.vo.BgtWageApplicationVO; import com.ruoyi.bgt.mapper.BgtWageApplicationMapper; import com.ruoyi.bgt.service.IBgtMessageService; import com.ruoyi.bgt.service.IBgtWageApplicationService; +import com.ruoyi.common.core.domain.entity.FbsUser; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.AuditStatus; @@ -27,6 +28,7 @@ import com.ruoyi.fbs.domain.FbsProjectTask; import com.ruoyi.fbs.domain.dto.FbsWageAuditListDTO; import com.ruoyi.fbs.service.IFbsMessageService; import com.ruoyi.fbs.service.IFbsProjectTaskService; +import com.ruoyi.fbs.service.IFbsUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -59,6 +61,9 @@ public class BgtWageApplicationServiceImpl extends ServicePlusImpl list = list(Wrappers.lambdaQuery().eq(BgtWageApplication::getTaskId, bo.getTaskId()) .eq(BgtWageApplication::getUserId, SecurityUtils.getAppUserId()) .in(BgtWageApplication::getAuditStatus, AuditStatus.getUse())); + + boolean b = list.stream() + .anyMatch(app -> AuditStatus.AUDIT.getCode().equals(app.getAuditStatus())); + if(b){ + throw new BaseException("您还有未审核的申请,待审核完之后在进行申请"); + } //收款金额 int taskUseAmount = list.stream() .map(BgtWageApplication::getApplicantAmount) @@ -116,6 +127,11 @@ public class BgtWageApplicationServiceImpl extends ServicePlusImpl mp = new HashMap<>(); 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 2f2929c..a4006ef 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 @@ -49,7 +49,9 @@ public class BgtMessageConstant { //取消选择 public static final String BGT_LEAVE_REPORT_MAKE_UP_HEADLINE = "您【%s】项目的日报补卡已审批!"; public static final String BGT_LEAVE_REPORT_MAKE_UP_SUBHEADING_ONE = "您【%s】项目的日报补卡,审核人【%s】已%s"; - + //主动结算工资 + public static final String BGT_ACTIVE_PAY_HEADLINE = "您【%s】项目的工资已结算!"; + public static final String BGT_ACTIVE_PAY_SUBHEADING = "您【%s】项目的工资已由包工头【%s】主动结算!"; //包工头->务工者 消息类型 public static final String BGT_TYPE_SIGN_UP = "1"; //务工者报名 @@ -58,7 +60,8 @@ public class BgtMessageConstant { public static final String BGT_TYPE_MAKE_UP = "4"; //补卡 public static final String BGT_TYPE_EXIT = "5"; //退场 public static final String BGT_TYPE_CANSEL = "11"; //取消选择 - public static final String BGT_TYPE_REPORT_MAKE_UP = "12"; //日报补卡 + public static final String BGT_TYPE_REPORT_MAKE_UP = "12"; + public static final String BGT_TYPE_ACTIVE_PAY = "14"; //主动结算工资 /** @@ -177,6 +180,10 @@ public class BgtMessageConstant { map.put(HEADLINE, String.format(BGT_TO_FBG_PROGRESS_HEADLINE,auditor, projectName)); map.put(SUBHEADING, String.format(BGT_TO_FBG_PROGRESS_SUBHEADING, auditor,projectName)); break; + case "14": + map.put(HEADLINE, String.format(BGT_ACTIVE_PAY_HEADLINE, projectName)); + map.put(SUBHEADING, String.format(BGT_ACTIVE_PAY_SUBHEADING, projectName,auditor)); + break; default: break; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/domain/vo/AnnexUploadCountVO.java b/ruoyi-system/src/main/java/com/ruoyi/common/domain/vo/AnnexUploadCountVO.java new file mode 100644 index 0000000..ac7a50d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/common/domain/vo/AnnexUploadCountVO.java @@ -0,0 +1,22 @@ +package com.ruoyi.common.domain.vo; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +@ApiModel("附件对象") +public class AnnexUploadCountVO { + + @ApiModelProperty("用户ID") + private Long userId; + + @ApiModelProperty("申请ID") + private Long recruitApplyId; + + @ApiModelProperty("上传文件种类数量") + private Integer num; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/mapper/AnnexMapper.java b/ruoyi-system/src/main/java/com/ruoyi/common/mapper/AnnexMapper.java index 491f1ec..7d8676b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/common/mapper/AnnexMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/common/mapper/AnnexMapper.java @@ -1,9 +1,13 @@ package com.ruoyi.common.mapper; -import com.ruoyi.common.domain.Annex; -import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; +import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; +import com.ruoyi.common.domain.Annex; +import com.ruoyi.common.domain.vo.AnnexUploadCountVO; import org.apache.ibatis.annotations.CacheNamespace; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 附件Mapper接口 @@ -15,4 +19,7 @@ import org.apache.ibatis.annotations.CacheNamespace; @CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class) public interface AnnexMapper extends BaseMapperPlus { + + List countByRecruitId(@Param("recruitId")Long recruitId); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/service/IAnnexService.java b/ruoyi-system/src/main/java/com/ruoyi/common/service/IAnnexService.java index 329e6a4..bdc693f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/common/service/IAnnexService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/common/service/IAnnexService.java @@ -1,10 +1,11 @@ package com.ruoyi.common.service; -import com.ruoyi.common.domain.Annex; import com.ruoyi.common.bo.AnnexQueryBo; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.domain.Annex; import com.ruoyi.common.domain.dto.AnnexDTO; +import com.ruoyi.common.domain.vo.AnnexUploadCountVO; import java.util.Collection; import java.util.List; @@ -90,4 +91,9 @@ public interface IAnnexService extends IServicePlus { * 检查入场材料 */ boolean checkEntry(Long userId,Long recruitId); + + /** + * 统计招工中的资料上传情况 + */ + List countByRecruitId(Long recruitId); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/AnnexServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/AnnexServiceImpl.java index 937a466..aaca502 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/AnnexServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/AnnexServiceImpl.java @@ -11,6 +11,7 @@ import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.domain.Annex; import com.ruoyi.common.domain.dto.AnnexDTO; +import com.ruoyi.common.domain.vo.AnnexUploadCountVO; import com.ruoyi.common.mapper.AnnexMapper; import com.ruoyi.common.service.IAnnexService; import com.ruoyi.common.tool.FileDeletionService; @@ -183,4 +184,9 @@ public class AnnexServiceImpl extends ServicePlusImpl implem } return result; } + + @Override + public List countByRecruitId(Long recruitId) { + return baseMapper.countByRecruitId(recruitId); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/FbsWageApplication.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/FbsWageApplication.java index 6eef091..7407bd9 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/FbsWageApplication.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/FbsWageApplication.java @@ -139,6 +139,9 @@ public class FbsWageApplication implements Serializable { @ApiModelProperty("审核人名字") private String reviewerName; + @ApiModelProperty("审核意见") + private String auditOpinion; + /** 删除标志(0代表存在 2代表删除) */ @Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除") @ApiModelProperty("删除标志(0代表存在 2代表删除)") diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsProjectListDTO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsProjectListDTO.java index 9980bd6..2a0ac28 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsProjectListDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsProjectListDTO.java @@ -17,6 +17,9 @@ public class FbsProjectListDTO { @ApiModelProperty("类型:0申请中,1已加入,2已竣工") private Integer type; + @ApiModelProperty("项目名字") + private String projectName; + @ApiModelProperty(value = "分包商Id",hidden = true) private Long fbsUserId; diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsWageAuditDTO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsWageAuditDTO.java index ca62dc2..4193da4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsWageAuditDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsWageAuditDTO.java @@ -14,7 +14,7 @@ import javax.validation.constraints.NotNull; */ @Data -@ApiModel("App包工头工资申请分页查询对象") +@ApiModel("App分包商工资申请审核") public class FbsWageAuditDTO { @ApiModelProperty("主键ID") @@ -24,5 +24,8 @@ public class FbsWageAuditDTO { @ApiModelProperty("审核状态(1审核中 2已审核 3未通过)") private String auditStatus; + @ApiModelProperty("审核意见") + private String auditOpinion; + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsWageAuditListDTO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsWageAuditListDTO.java index ee5e769..5e6c10d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsWageAuditListDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsWageAuditListDTO.java @@ -34,7 +34,7 @@ public class FbsWageAuditListDTO { // @ApiModelProperty("审核状态(1审核中 2已审核 3未通过)") // private String auditStatus; - @ApiModelProperty("筛选(1申请中 2已结算)") + @ApiModelProperty("筛选(1申请中 2已结算 3未通过)") private Integer type; 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 f17b433..714df23 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/task/BusinessTask.java +++ b/ruoyi-system/src/main/java/com/ruoyi/task/BusinessTask.java @@ -155,6 +155,8 @@ public class BusinessTask bgtScoreDTO.setUserId(bgtProjectRecruitApply.getUserId()); bgtScoreDTO.setScoreBy(map.get(bgtProjectRecruitApply.getRecruitId())); bgtScoreDTO.setContent("默认评分"); + bgtScoreDTO.setCreateBy("系统"); + bgtScoreDTO.setUpdateBy("系统"); iBgtProjectRecruitApplyService.score(bgtScoreDTO); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppApplyForPayrollSettlementListRes.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppApplyForPayrollSettlementListRes.java index 68760da..b1b821d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppApplyForPayrollSettlementListRes.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppApplyForPayrollSettlementListRes.java @@ -94,4 +94,6 @@ public class WgzAppApplyForPayrollSettlementListRes implements Serializable { @ApiModelProperty("附件实体数据") private List payCalculation; + @ApiModelProperty("申请人类型") + private String operatorType; } 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 db86efd..7ff6320 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 @@ -144,6 +144,11 @@ public interface IWgzPayCalculationService extends IServicePlus payList = list(Wrappers.lambdaQuery().eq(WgzPayCalculation::getAuditorType, AuditStatus.UNREAD.getCode()) - .eq(WgzPayCalculation::getRecruitId, dto.getRecruitId()) - .eq(WgzPayCalculation::getApplyKey, dto.getRecruitApplyId()) - .eq(WgzPayCalculation::getUserId, dto.getUserId())); - if(CollectionUtil.isNotEmpty(payList)) { - payList.forEach(pay -> { - pay.setAuditorType(AuditStatus.REFUSE.getCode()); - }); - } - updateBatchById(payList); +// List payList = list(Wrappers.lambdaQuery().eq(WgzPayCalculation::getAuditorType, AuditStatus.UNREAD.getCode()) +// .eq(WgzPayCalculation::getRecruitId, dto.getRecruitId()) +// .eq(WgzPayCalculation::getApplyKey, dto.getRecruitApplyId()) +// .eq(WgzPayCalculation::getUserId, dto.getUserId())); +// if(CollectionUtil.isNotEmpty(payList)) { +// payList.forEach(pay -> { +// pay.setAuditorType(AuditStatus.REFUSE.getCode()); +// }); +// } +// updateBatchById(payList); //存附件 List files = dto.getPayCalculation(); @@ -589,6 +592,22 @@ public class WgzPayCalculationServiceImpl extends ServicePlusImpl mp = new HashMap<>(); + mp.put("projectName",iBgtProjectRecruitService.getById(payCalculation.getRecruitId()).getRecruitName()); + mp.put("auditor",SecurityUtils.getUsername()); + Map map = bgtMessage(mp, BGT_TYPE_ACTIVE_PAY, true); + WgzMessage wgzMessage = new WgzMessage() + .setSenderType(USERTYPE_BGT) + .setSenderId(SecurityUtils.getAppUserId()) + .setRecipientType(USERTYPE_WGZ) + .setRecipientId(payCalculation.getUserId()) + .setHeadline(map.get(HEADLINE)) + .setSubheading(map.get(SUBHEADING)) + .setTableId(payCalculation.getId()) + .setTableName(SqlHelper.table(WgzPayCalculation.class).getTableName()) + .setMessageLargeType(LARGE_SALARY); + wgzMessageService.sendAMessage(wgzMessage); return save; } @@ -647,7 +666,24 @@ public class WgzPayCalculationServiceImpl extends ServicePlusImpl eq = new LambdaQueryWrapper(). eq(WgzPayCalculation::getUserId, userId). eq(WgzPayCalculation::getApplyKey, recruitApplyId). - eq(WgzPayCalculation::getAuditorType, "2"); + eq(WgzPayCalculation::getAuditorType, AuditStatus.PASS.getCode()); + List gzs = baseMapper.selectList(eq); + + BigDecimal addSum = new BigDecimal(0); + for (WgzPayCalculation gz : gzs) { + //金额*天数=实际工资 + BigDecimal multiply = gz.getRecruitAmount().multiply(BigDecimal.valueOf(gz.getNum())); + addSum = addSum.add(multiply); + } + return addSum; + } + + @Override + public BigDecimal getApplyPay(Long userId, Long recruitApplyId) { + LambdaQueryWrapper eq = new LambdaQueryWrapper(). + eq(WgzPayCalculation::getUserId, userId). + eq(WgzPayCalculation::getApplyKey, recruitApplyId). + in(WgzPayCalculation::getAuditorType, AuditStatus.getToAudit()); List gzs = baseMapper.selectList(eq); BigDecimal addSum = new BigDecimal(0); diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfMessageDetailDTO.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfMessageDetailDTO.java new file mode 100644 index 0000000..d3dd56f --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfMessageDetailDTO.java @@ -0,0 +1,46 @@ +package com.ruoyi.zbf.domain.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; + +/** + * 消息对象 bgt_message + * + * @author ruoyi + * @date 2025-02-25 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("总包方消息详情查询对象") +public class ZbfMessageDetailDTO { + + /** 分页大小 */ + @ApiModelProperty("分页大小") + private Integer pageSize; + /** 当前页数 */ + @ApiModelProperty("当前页数") + private Integer pageNum; + + @ApiModelProperty("日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate date; + + @ApiModelProperty("大类型(字典fbs_message_large_type)") + private String messageLargeType; + + @ApiModelProperty("小类型(字典fbs_message_small_type)") + private String messageSmallType; + + @ApiModelProperty("是否待处理") + private Boolean isHandle = false; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfMessageMyListDTO.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfMessageMyListDTO.java new file mode 100644 index 0000000..6e3c414 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/dto/ZbfMessageMyListDTO.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 lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * 消息对象 bgt_message + * + * @author ruoyi + * @date 2025-02-25 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("消息列表查询对象") +public class ZbfMessageMyListDTO { + + /** 分页大小 */ + @ApiModelProperty("分页大小") + private Integer pageSize; + /** 当前页数 */ + @ApiModelProperty("当前页数") + private Integer pageNum; + +} 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 index 23e4aff..c669e44 100644 --- 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 @@ -14,7 +14,7 @@ import javax.validation.constraints.NotNull; */ @Data -@ApiModel("App包工头工资申请分页查询对象") +@ApiModel("App总包方工资申请审核") public class ZbfWageAuditDTO { @ApiModelProperty("主键ID") @@ -24,5 +24,6 @@ public class ZbfWageAuditDTO { @ApiModelProperty("审核状态(1审核中 2已审核 3未通过)") private String auditStatus; - + @ApiModelProperty("审核意见") + private String auditOpinion; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfMessageCountVO.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfMessageCountVO.java new file mode 100644 index 0000000..26d109d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfMessageCountVO.java @@ -0,0 +1,36 @@ +package com.ruoyi.zbf.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; + +/** + * 消息对象 bgt_message + * + * @author ruoyi + * @date 2025-02-25 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("分包商未读消息统计视图对象") +public class ZbfMessageCountVO implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty("项目消息") + private Integer taskMessageCount; + + @ApiModelProperty("结算消息") + private Integer settlementMessageCount; + + @ApiModelProperty("其他消息") + private Integer otherMessageCount; + + @ApiModelProperty("待处理消息") + private Integer handleMessageCount; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfMessageDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfMessageDetailVO.java new file mode 100644 index 0000000..3bc4469 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfMessageDetailVO.java @@ -0,0 +1,58 @@ +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; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 消息对象 bgt_message + * + * @author ruoyi + * @date 2025-02-25 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("总包方消息列表详情视图对象") +public class ZbfMessageDetailVO implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty("主键自增ID") + private Long id; + + @ApiModelProperty("发送人") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long senderId; + + @ApiModelProperty("表ID") + private Long tableId; + + @ApiModelProperty("标题") + private String headline; + + @ApiModelProperty("副标题") + private String subheading; + + @ApiModelProperty("大类型(字典fbs_message_large_type)") + private String messageLargeType; + + @ApiModelProperty("小类型(字典fbs_message_small_type)") + private String messageSmallType; + + @ApiModelProperty("读状态(0未读 1已读)") + private String readStatus; + + @ApiModelProperty("创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + private LocalDateTime createTime; + + @ApiModelProperty("是否需要操作(0不需要 1需要 2已操作)") + private String isOperation ; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfMessageVO.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfMessageVO.java new file mode 100644 index 0000000..fa96126 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/vo/ZbfMessageVO.java @@ -0,0 +1,55 @@ +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; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 消息对象 bgt_message + * + * @author ruoyi + * @date 2025-02-25 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("总包方消息列表视图对象") +public class ZbfMessageVO implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty("主键自增ID") + private Long id; + + @ApiModelProperty("表ID") + private Long tableId; + + @ApiModelProperty("发送人") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long senderId; + + @ApiModelProperty("标题") + private String headline; + + @ApiModelProperty("副标题") + private String subheading; + + @ApiModelProperty("大类型(字典fbs_message_large_type)") + private String messageLargeType; + + @ApiModelProperty("小类型(字典fbs_message_small_type)") + private String messageSmallType; + + @ApiModelProperty("读状态(0未读 1已读)") + private String readStatus; + + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + +} 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 9b83908..b73e90a 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 @@ -4,6 +4,11 @@ import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.zbf.bo.ZbfMessageQueryBo; import com.ruoyi.zbf.domain.ZbfMessage; +import com.ruoyi.zbf.domain.dto.ZbfMessageDetailDTO; +import com.ruoyi.zbf.domain.dto.ZbfMessageMyListDTO; +import com.ruoyi.zbf.domain.vo.ZbfMessageCountVO; +import com.ruoyi.zbf.domain.vo.ZbfMessageDetailVO; +import com.ruoyi.zbf.domain.vo.ZbfMessageVO; import java.util.Collection; import java.util.List; @@ -68,5 +73,18 @@ public interface IZbfMessageService extends IServicePlus { */ void operationBatch(String recipientType,Long recipientId,List tableIds,String tableName); + /** + * 总包方的未读消息统计 + */ + ZbfMessageCountVO countUnread(); + /** + * 总包方消息列表 + */ + TableDataInfo queryMyPageList(ZbfMessageMyListDTO dto); + + /** + * 消息详情列表 + */ + TableDataInfo queryDetailPageList(ZbfMessageDetailDTO dto); } 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 786bd49..1be8bca 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 @@ -8,18 +8,28 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.BgtMessageType; import com.ruoyi.common.utils.PageUtils; +import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.zbf.bo.ZbfMessageQueryBo; import com.ruoyi.zbf.domain.ZbfMessage; +import com.ruoyi.zbf.domain.dto.ZbfMessageDetailDTO; +import com.ruoyi.zbf.domain.dto.ZbfMessageMyListDTO; +import com.ruoyi.zbf.domain.vo.ZbfMessageCountVO; +import com.ruoyi.zbf.domain.vo.ZbfMessageDetailVO; +import com.ruoyi.zbf.domain.vo.ZbfMessageVO; import com.ruoyi.zbf.mapper.ZbfMessageMapper; import com.ruoyi.zbf.service.IZbfMessageService; import org.springframework.stereotype.Service; +import java.time.LocalTime; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.OPERATION_ALREADY; +import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.OPERATION_NEED; /** * 消息Service业务层处理 @@ -124,4 +134,52 @@ public class ZbfMessageServiceImpl extends ServicePlusImpl zbfMessages = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(ZbfMessage::getRecipientId, SecurityUtils.getAppUserId()) + .eq(ZbfMessage::getReadStatus, "0")); + Map map = zbfMessages.stream().collect(Collectors.groupingBy(ZbfMessage::getMessageLargeType, Collectors.counting())); + + ZbfMessageCountVO zbfMessageCountVO = new ZbfMessageCountVO(); + zbfMessageCountVO.setTaskMessageCount(map.getOrDefault(BgtMessageType.TASK.getCode(), 0L).intValue()); + zbfMessageCountVO.setSettlementMessageCount(map.getOrDefault(BgtMessageType.SETTLEMENT.getCode(), 0L).intValue()); + zbfMessageCountVO.setOtherMessageCount(map.getOrDefault(BgtMessageType.OTHER.getCode(), 0L).intValue()); + + Integer handle = baseMapper.selectCount(Wrappers.lambdaQuery() + .eq(ZbfMessage::getRecipientId, SecurityUtils.getAppUserId()) + .eq(ZbfMessage::getIsOperation, OPERATION_NEED)); + zbfMessageCountVO.setHandleMessageCount(handle); + return zbfMessageCountVO; + } + + @Override + public TableDataInfo queryMyPageList(ZbfMessageMyListDTO dto) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ZbfMessage::getRecipientId, SecurityUtils.getAppUserId()); + wrapper.orderByDesc(ZbfMessage::getCreateTime); + Page result = page(PageUtils.buildPage(), wrapper); + Page page = new Page<>(); + page.setTotal(result.getTotal()); + page.setRecords(BeanUtil.copyToList(result.getRecords(), ZbfMessageVO.class)); + return PageUtils.buildDataInfo(page); + } + + @Override + public TableDataInfo queryDetailPageList(ZbfMessageDetailDTO dto) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ZbfMessage::getRecipientId, SecurityUtils.getAppUserId()); + wrapper.eq(StrUtil.isNotBlank(dto.getMessageLargeType()), ZbfMessage::getMessageLargeType, dto.getMessageLargeType()); + wrapper.eq(StrUtil.isNotBlank(dto.getMessageSmallType()), ZbfMessage::getMessageSmallType, dto.getMessageSmallType()); + wrapper.eq(dto.getIsHandle(), ZbfMessage::getIsOperation,OPERATION_NEED); + if(dto.getDate() != null) { + wrapper.between(ZbfMessage::getCreateTime, dto.getDate().atStartOfDay(), dto.getDate().atStartOfDay().with(LocalTime.MAX)); + } + wrapper.orderByDesc(ZbfMessage::getId); + Page result = page(PageUtils.buildPage(), wrapper); + Page page = new Page<>(); + page.setTotal(result.getTotal()); + page.setRecords(BeanUtil.copyToList(result.getRecords(), ZbfMessageDetailVO.class)); + return PageUtils.buildDataInfo(page); + } } diff --git a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml index 0bd0110..88ff101 100644 --- a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml @@ -65,11 +65,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select - distinct wu.user_id, - wu.username + wu.username, + bpra.id from bgt_project_recruit_apply bpra left join wgz_user wu on bpra.user_id = wu.user_id where bpra.recruit_id = #{recruitId} and bpra.status in('3','5') @@ -222,7 +222,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND bpra.status = '0' - AND bpra.status != '0' + AND bpra.status in('1','3','5','6') + + + AND bpra.status in('2','4','7') order by wu.score desc,bpra.create_time desc @@ -268,7 +271,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND bpra.status in ('1','3','5','6') - order by bpra.create_time desc + order by bpra.id desc diff --git a/ruoyi-system/src/main/resources/mapper/common/AnnexMapper.xml b/ruoyi-system/src/main/resources/mapper/common/AnnexMapper.xml index a97c3e4..c8416bc 100644 --- a/ruoyi-system/src/main/resources/mapper/common/AnnexMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/common/AnnexMapper.xml @@ -18,5 +18,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - \ No newline at end of file + diff --git a/ruoyi-system/src/main/resources/mapper/zbf/ZbfProjectMapper.xml b/ruoyi-system/src/main/resources/mapper/zbf/ZbfProjectMapper.xml index 25abad0..8a8fe17 100644 --- a/ruoyi-system/src/main/resources/mapper/zbf/ZbfProjectMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/zbf/ZbfProjectMapper.xml @@ -30,6 +30,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" project_img, project_status FROM zbf_project zp + + + AND zp.project_name like concat('%', #{dto.projectName}, '%') + + order by zp.id desc diff --git a/ruoyi/uploadPath/appResource/html/upload.html b/ruoyi/uploadPath/appResource/html/upload.html index 1d84873..2cb2eb6 100644 --- a/ruoyi/uploadPath/appResource/html/upload.html +++ b/ruoyi/uploadPath/appResource/html/upload.html @@ -29,6 +29,29 @@ gap: 12px; margin-top: 15px; } + .checkbox-item { + display: flex; + width: 100%; /* 确保宽度占满父容器 */ + } + .el-checkbox__label { + display: flex; + align-items: center; /* 垂直居中 */ + justify-content: space-between; + width: 100%; /* 确保宽度占满父容器 */ + } + /* 添加状态颜色样式 */ + .status-text.not-uploaded { + color: rgb(255, 0, 0); + } + .status-text.partially-uploaded { + color: rgb(255, 225, 7); + } + .status-text.uploaded { + color: rgb(8, 224, 8); + } + .status-text { + color: #999; + } .action-bar { display: flex; justify-content: space-between; @@ -56,6 +79,12 @@ width: 100%; margin-top: 10px; } + .el-table--border { + margin: 10px 0; + } + .el-table .cell { + white-space: nowrap; + } @@ -88,7 +117,7 @@ 筛选未上传的人员列表 @@ -113,7 +142,21 @@ :label="item.userId" class="checkbox-item" > - {{ item.username }} + {{ item.username }} + + + {{ getUploadStatus(item.uploadType) }} + + 查看 + +
{{ listStatusText }}
@@ -156,6 +199,23 @@ + + + + + + + + + + + + + @@ -174,17 +234,28 @@ loading: false, uploadLoading: false, listStatusText: "请先选择主题", - userId: "", + userId: "1893247598219890699", checkAll: false, isIndeterminate: false, uploadFile: null, isFilter: false, + dialogVisible: false, + detailLoading: false, + dialogData: {}, + tableData: [], }; }, computed: { isListEmpty() { return this.currentList.length === 0; }, + isFilterDisabled() { + // 仅在未选择主题或原始列表为空时禁用 + return ( + !this.selectedTheme || + (this.currentList.length === 0 && !this.isFilter) + ); + }, }, mounted() { const protocol = window.location.protocol; @@ -239,11 +310,11 @@ // 筛选未上传文件的人员列表 async handleFilterChange() { - if (this.isListEmpty) { - // 新增空列表判断 - this.isFilter = false; - return; - } + // if (this.isListEmpty) { + // // 新增空列表判断 + // this.isFilter = false; + // return; + // } this.loading = true; try { const response = await this.ajaxRequest({ @@ -345,6 +416,29 @@ } }, + // 详情请求方法 + async checkoutDetail(item) { + console.log("点击详情", item); + + try { + this.detailLoading = true; + const response = await this.ajaxRequest({ + url: `/ruoyi/common/annex/getHtmlWgzAnnex?recruitApplyId=${item.id}&wgzUserId=${item.userId}`, + method: "GET", + }); + // 转换数据结构 + this.dialogData = response.data; + // 将后端返回的数据转换为适合表格展示的格式 + this.tableData = Object.values(this.dialogData).flat(); + this.dialogVisible = true; + console.log("获取详情数据", this.tableData); + } catch (error) { + ElementPlus.ElMessage.error("获取详情失败"); + } finally { + this.detailLoading = false; + } + }, + // 统一的 AJAX 请求方法 async ajaxRequest(options) { const config = { method: options.method, @@ -364,6 +458,32 @@ return options.isDownload ? response.arrayBuffer() : response.json(); }, + // 根据uploadType返回状态文本 + getUploadStatus(uploadType) { + switch (uploadType) { + case "0": + return "未上传"; + case "1": + return "部分上传"; + case "2": + return "已上传"; + default: + return "未知状态"; + } + }, + // 根据uploadType返回状态样式类名 + getUploadStatusClass(uploadType) { + switch (uploadType) { + case "0": + return "not-uploaded"; + case "1": + return "partially-uploaded"; + case "2": + return "uploaded"; + default: + return ""; + } + }, }, watch: { userIds(newVal) { @@ -371,11 +491,11 @@ this.checkAll = newVal.length === total && total > 0; this.isIndeterminate = newVal.length > 0 && newVal.length < total; }, - currentList(newVal) { - if (newVal.length === 0) { - this.isFilter = false; - } - }, + // currentList(newVal) { + // if (newVal.length === 0) { + // this.isFilter = false; + // } + // }, }, }); app.use(ElementPlus);