From 9b1fc6fe994c953b26cd97cf0f333ee7ea7113a6 Mon Sep 17 00:00:00 2001 From: zt Date: Thu, 15 May 2025 11:15:01 +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 --- .../ruoyi/bgt/service/IBgtMessageService.java | 5 ++ .../service/impl/BgtMessageServiceImpl.java | 24 +++++++- .../common/constants/BgtMessageConstant.java | 8 +++ .../java/com/ruoyi/task/BusinessTask.java | 17 +++++- .../ruoyi/wgz/service/IWgzMessageService.java | 11 ++++ .../service/impl/WgzMessageServiceImpl.java | 57 ++++++++++++++++++- .../impl/WgzQuestionSaveServiceImpl.java | 10 ++++ ruoyi/uploadPath/appResource/html/upload.html | 2 +- 8 files changed, 128 insertions(+), 6 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtMessageService.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtMessageService.java index fe1aa7f..c48520b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtMessageService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtMessageService.java @@ -96,4 +96,9 @@ public interface IBgtMessageService extends IServicePlus { */ void operation(String senderType,Long senderId,String recipientType,Long recipientId,Long tableId,String tableName); + /** + * 批量已操作 + */ + void operationBatch(List tableId,String tableName,String messageLargeType,String messageSmallType); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtMessageServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtMessageServiceImpl.java index dcbd0e5..bb86af3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtMessageServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtMessageServiceImpl.java @@ -1,6 +1,7 @@ package com.ruoyi.bgt.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.conditions.update.LambdaUpdateWrapper; @@ -17,7 +18,9 @@ import com.ruoyi.bgt.domain.vo.BgtMessageDetailVO; import com.ruoyi.bgt.domain.vo.BgtMessageVO; import com.ruoyi.bgt.mapper.BgtMessageMapper; import com.ruoyi.bgt.service.IBgtMessageService; +import com.ruoyi.bgt.service.IBgtProjectRecruitService; import com.ruoyi.bgt.service.IBgtWageApplicationService; +import com.ruoyi.common.constants.BgtMessageConstant; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.redis.RedisCache; @@ -91,6 +94,10 @@ public class BgtMessageServiceImpl extends ServicePlusImpl tableId, String tableName, String messageLargeType, String messageSmallType) { + if(CollectionUtil.isEmpty(tableId)){ + return; + } + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.in(BgtMessage::getTableId, tableId); + wrapper.eq(BgtMessage::getTableName, tableName); + wrapper.eq(BgtMessage::getMessageLargeType, messageLargeType); + wrapper.eq(BgtMessage::getMessageSmallType, messageSmallType); + wrapper.eq(BgtMessage::getIsOperation, OPERATION_NEED); + wrapper.set(BgtMessage::getIsOperation, OPERATION_ALREADY); + update(wrapper); + } + @Override public TableDataInfo unAuditList(BgtMessageUnAuditDetailDTO dto) { 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 6fc7a0d..15c6f6a 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 @@ -53,6 +53,9 @@ public class BgtMessageConstant { //主动结算工资 public static final String BGT_ACTIVE_PAY_HEADLINE = "您【%s】项目的工资已结算!"; public static final String BGT_ACTIVE_PAY_SUBHEADING = "您【%s】项目的工资已由包工头【%s】主动结算!"; + //过期拒绝 + public static final String BGT_EXPIRED_REFUSE_HEADLINE = "您因【%s】项目过期而被系统自动拒绝!"; + public static final String BGT_EXPIRED_REFUSE_SUBHEADING = "您因【%s】项目过期而被系统自动拒绝!"; //包工头->务工者 消息类型 public static final String BGT_TYPE_SIGN_UP = "1"; //务工者报名 @@ -63,6 +66,7 @@ public class BgtMessageConstant { public static final String BGT_TYPE_CANSEL = "11"; //取消选择 public static final String BGT_TYPE_REPORT_MAKE_UP = "12"; public static final String BGT_TYPE_ACTIVE_PAY = "14"; //主动结算工资 + public static final String BGT_TYPE_EXPIRED_REFUSE= "15"; //过期拒绝 /** @@ -185,6 +189,10 @@ public class BgtMessageConstant { map.put(HEADLINE, String.format(BGT_ACTIVE_PAY_HEADLINE, projectName)); map.put(SUBHEADING, String.format(BGT_ACTIVE_PAY_SUBHEADING, projectName,auditor)); break; + case "15": + map.put(HEADLINE, String.format(BGT_EXPIRED_REFUSE_HEADLINE, projectName)); + map.put(SUBHEADING, String.format(BGT_EXPIRED_REFUSE_SUBHEADING, projectName)); + break; default: break; } 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 2c32a1e..9ad3e42 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/task/BusinessTask.java +++ b/ruoyi-system/src/main/java/com/ruoyi/task/BusinessTask.java @@ -10,6 +10,7 @@ import com.ruoyi.bgt.domain.dto.BgtScoreDTO; import com.ruoyi.bgt.service.IBgtMessageService; import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; import com.ruoyi.bgt.service.IBgtProjectRecruitService; +import com.ruoyi.common.constants.BgtMessageConstant; import com.ruoyi.common.constants.WgzAndBgtMessageConstant; import com.ruoyi.common.enums.RecruitApplyStatus; import com.ruoyi.common.enums.RecruitStatus; @@ -94,13 +95,25 @@ public class BusinessTask .lt(BgtProjectRecruit::getRecruitEndTime, LocalDate.now())); if(CollectionUtil.isNotEmpty(recruitList)){ List recruitIds = recruitList.stream().map(BgtProjectRecruit::getId).collect(Collectors.toList()); - recruitApplyService.lambdaUpdate() + List list = recruitApplyService.list(Wrappers.lambdaQuery() .in(BgtProjectRecruitApply::getRecruitId, recruitIds) - .in(BgtProjectRecruitApply::getStatus,status) + .in(BgtProjectRecruitApply::getStatus, status) + ); + List recruitApplyIds = list.stream().map(BgtProjectRecruitApply::getId).collect(Collectors.toList()); + recruitApplyService.lambdaUpdate() + .in(BgtProjectRecruitApply::getId, recruitApplyIds) .set(BgtProjectRecruitApply::getStatus,RecruitApplyStatus.BGT_REFUSE.getCode()) .update(); recruitService.lambdaUpdate().in(BgtProjectRecruit::getId, recruitIds) .set(BgtProjectRecruit::getStatus,RecruitStatus.OVERDUE.getCode()).update(); + //处理消息操作状态 + List bgtMessageHandleIds = list.stream().filter(vo->RecruitApplyStatus.SIGN_UP.getCode().equals(vo.getStatus())).map(BgtProjectRecruitApply::getId).collect(Collectors.toList()); + iBgtMessageService.operationBatch(bgtMessageHandleIds,SqlHelper.table(BgtProjectRecruitApply.class).getTableName(), BgtMessageConstant.BGT_LARGE_OTHER, BgtMessageConstant.BGT_SMALL_SIGN_UP ); + + List wgzMessageList = list.stream().filter(vo->RecruitApplyStatus.BGT_PASS.getCode().equals(vo.getStatus())).collect(Collectors.toList()); + iWgzMessageService.operationBatchSignUp(wgzMessageList); + //发送消息 + iWgzMessageService.operationBatchReject(list); } Console.log("招工拒绝任务结束,此次拒绝任务个数:"+recruitList.size()); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzMessageService.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzMessageService.java index 643549f..a835bf5 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzMessageService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzMessageService.java @@ -1,5 +1,6 @@ package com.ruoyi.wgz.service; +import com.ruoyi.bgt.domain.BgtProjectRecruitApply; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.wgz.bo.WgzMessageQueryBo; @@ -102,4 +103,14 @@ public interface IWgzMessageService extends IServicePlus { * 修改操作状态 */ Boolean updateOperationStatus(Long id); + + /** + * 报名批量修改操作状态 + */ + void operationBatchSignUp(List list); + + /** + * 批量发送报名拒绝消息 + */ + void operationBatchReject(List list); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzMessageServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzMessageServiceImpl.java index 4cab277..2a6df5e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzMessageServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzMessageServiceImpl.java @@ -1,11 +1,14 @@ package com.ruoyi.wgz.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.baomidou.mybatisplus.extension.toolkit.SqlHelper; import com.ruoyi.bgt.domain.BgtProjectRecruit; +import com.ruoyi.bgt.domain.BgtProjectRecruitApply; import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; import com.ruoyi.bgt.service.IBgtProjectRecruitService; import com.ruoyi.common.constants.WgzAndBgtMessageConstant; @@ -40,8 +43,9 @@ import org.springframework.stereotype.Service; import java.time.LocalDate; import java.util.*; -import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.USERTYPE_BGT; -import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.USERTYPE_WGZ; +import static com.ruoyi.common.constants.BgtMessageConstant.*; +import static com.ruoyi.common.constants.BgtMessageConstant.SUBHEADING; +import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.*; /** * 消息Service业务层处理 @@ -285,6 +289,55 @@ public class WgzMessageServiceImpl extends ServicePlusImpl list) { + if(CollectionUtil.isEmpty(list)){ + return ; + } + List updateList = new ArrayList<>(); + for (BgtProjectRecruitApply apply : list) { + List wgzMessages = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(WgzMessage::getTableId, apply.getId()) + .eq(WgzMessage::getMessageLargeType, LARGE_APPLY) + .eq(WgzMessage::getIsOperation, OPERATION_NEED) + .eq(WgzMessage::getRecipientId, apply.getUserId()) + .eq(WgzMessage::getRecipientType, USERTYPE_WGZ) + ); + updateList.addAll(wgzMessages); + } + if(CollectionUtil.isNotEmpty(updateList)){ + for (WgzMessage wgzMessage : updateList) { + wgzMessage.setIsOperation(OPERATION_ALREADY); + } + updateBatchById(updateList); + } + } + + @Override + public void operationBatchReject(List list) { + //发消息 + ArrayList wgzMessages = new ArrayList<>(); + for(BgtProjectRecruitApply recruitApply : list){ + HashMap mp = new HashMap<>(); + mp.put("projectName", iBgtProjectRecruitService.getById(recruitApply.getRecruitId()).getRecruitName()); + Map map = bgtMessage(mp, BGT_TYPE_EXPIRED_REFUSE, true); + WgzMessage wgzMessage = new WgzMessage() + .setSenderType(USERTYPE_SYSTEM) + .setSenderId(SYSTEM_ID) + .setRecipientType(USERTYPE_WGZ) + .setRecipientId(recruitApply.getUserId()) + .setHeadline(map.get(HEADLINE)) + .setSubheading(map.get(SUBHEADING)) + .setTableId(recruitApply.getId()) + .setTableName(SqlHelper.table(BgtProjectRecruitApply.class).getTableName()) + .setMessageLargeType(LARGE_APPLY); + wgzMessages.add(wgzMessage); + } + if(CollectionUtil.isNotEmpty(wgzMessages)){ + saveBatch(wgzMessages); + } + } + /** * 判断招工是否已招满或已过期 * @param recruitId 招工ID diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzQuestionSaveServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzQuestionSaveServiceImpl.java index 5ab4948..d4c4950 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzQuestionSaveServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzQuestionSaveServiceImpl.java @@ -310,6 +310,16 @@ public class WgzQuestionSaveServiceImpl extends ServicePlusImpl