From 8bef81e4e6ceedf882807df15eeb0a51d6c84518 Mon Sep 17 00:00:00 2001 From: lishiwei <3230787218@qq.com> Date: Wed, 8 Jul 2026 11:28:42 +0800 Subject: [PATCH] =?UTF-8?q?feat():=20=E4=BC=98=E5=8C=96=E9=87=8D=E7=82=B9?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E7=BB=9F=E8=AE=A1=E4=B8=8E=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AF=B9=E5=BA=94=E5=92=8C=E5=A4=84=E7=BD=9A?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- start/src/main/resources/sdk-prod.yml | 4 +- start/src/main/resources/sdk.yml | 4 +- .../hidden/HiddenAcceptRecordUpdateExe.java | 14 ++- .../project/command/hidden/HiddenAddExe.java | 94 ++++++++++++++++--- .../command/hidden/HiddenPenaltyAddExe.java | 51 +++++++--- .../hidden/HiddenPenaltyUpdateExe.java | 34 ++++++- .../SafetyEnvironmentalInspectionAddExe.java | 47 ++++++++-- ...afetyEnvironmentalInspectionUpdateExe.java | 81 ++++++++++++++-- .../resources/mapper/KeyProjectMapper.xml | 16 +++- 9 files changed, 285 insertions(+), 60 deletions(-) diff --git a/start/src/main/resources/sdk-prod.yml b/start/src/main/resources/sdk-prod.yml index 82f6e15..82e3723 100644 --- a/start/src/main/resources/sdk-prod.yml +++ b/start/src/main/resources/sdk-prod.yml @@ -73,9 +73,9 @@ message: checkedPersonApplyDefendNotPass: MS000139 hiddenDangerRectifyPersonApplyRectify: MS000140 hiddenDangerAcceptancePersonApplyAcceptance: MS000141 - hiddenDangerPenaltyPersonApplyPenalty: MS000145 - hiddenDangerPenaltyFeedbackPersonApplyFeedback: MS000146 checkInitiatorApplyAcceptancePass: MS000142 checkInitiatorApplyAcceptanceNotPass: MS000143 hiddenDangerRectifyPersonApplyRectifyPass: MS000144 + hiddenDangerPenaltyPersonApplyPenalty: MS000163 + hiddenDangerPenaltyFeedbackPersonApplyFeedback: MS000162 diff --git a/start/src/main/resources/sdk.yml b/start/src/main/resources/sdk.yml index c3b33a9..30dc0f7 100644 --- a/start/src/main/resources/sdk.yml +++ b/start/src/main/resources/sdk.yml @@ -73,7 +73,7 @@ message: checkedPersonApplyDefendNotPass: MS000139 hiddenDangerRectifyPersonApplyRectify: MS000140 hiddenDangerAcceptancePersonApplyAcceptance: MS000141 - hiddenDangerPenaltyPersonApplyPenalty: MS000145 - hiddenDangerPenaltyFeedbackPersonApplyFeedback: MS000146 checkInitiatorApplyAcceptancePass: MS000142 checkInitiatorApplyAcceptanceNotPass: MS000143 + hiddenDangerPenaltyPersonApplyPenalty: MS000163 + hiddenDangerPenaltyFeedbackPersonApplyFeedback: MS000162 diff --git a/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenAcceptRecordUpdateExe.java b/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenAcceptRecordUpdateExe.java index ffdb02e..79dee9c 100644 --- a/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenAcceptRecordUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenAcceptRecordUpdateExe.java @@ -109,12 +109,16 @@ public class HiddenAcceptRecordUpdateExe { // 查找发起人,作为归档人 SafetyEnvironmentalInspectionDO inspectionDO = safetyEnvironmentalInspectionRepository.getByInspectionId(cmd.getForeignKey()); List initiator = safetyEnvironmentalInspectionUserRepository.listAllByInspectionId(cmd.getForeignKey(), 1); - Map sendParamsPigeonhole = new HashMap<>(); - sendParamsPigeonhole.put("checkTitle", inspectionDO.getProjectName()); - messageNoticeExe.messageNotice(initiator.get(0).getUserId(), messageTemplateConfig.getCheckInitiatorApplyAcceptancePass(), sendParamsPigeonhole); + if (inspectionDO != null && initiator != null && !initiator.isEmpty()) { + Map sendParamsPigeonhole = new HashMap<>(); + sendParamsPigeonhole.put("checkTitle", inspectionDO.getProjectName()); + messageNoticeExe.messageNotice(initiator.get(0).getUserId(), messageTemplateConfig.getCheckInitiatorApplyAcceptancePass(), sendParamsPigeonhole); + } // 完成隐患整改待办 List userList = safetyEnvironmentalInspectionUserRepository.listAllByInspectionId(cmd.getForeignKey(), 7); - messageNoticeExe.sendMessageCompleteEvent(userList.get(0).getId()); + if (userList != null && !userList.isEmpty()) { + messageNoticeExe.sendMessageCompleteEvent(userList.get(0).getId()); + } } } else if (cmd.getState() == 0) { // 验收未通过 // 将修改安全环保检查隐患整改操作记录改为未完成 @@ -200,7 +204,9 @@ public class HiddenAcceptRecordUpdateExe { Map sendParams = new HashMap<>(); if (projectName != null && !projectName.isEmpty()) { sendParams.put("checkTitle", projectName); + sendParams.put("keyProject", projectName); } + sendParams.put("listName", "待处罚"); keyProjectPenaltyPersonnelRepository.getListByProjectId(keyProjectId).stream() .map(item -> item.getUserId()) .filter(userId -> userId != null) diff --git a/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenAddExe.java b/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenAddExe.java index 740b1e3..1c8582a 100644 --- a/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenAddExe.java +++ b/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenAddExe.java @@ -1,46 +1,60 @@ package com.zcloud.key.project.command.hidden; +import cn.hutool.core.collection.CollUtil; import com.alibaba.cola.exception.BizException; +import com.zcloud.gbscommon.utils.Tools; import com.zcloud.key.project.command.project.MessageNoticeExe; import com.zcloud.key.project.domain.config.MessageTemplateConfig; import com.zcloud.key.project.domain.gateway.hidden.HiddenGateway; import com.zcloud.key.project.domain.model.hidden.HiddenE; import com.zcloud.key.project.dto.hidden.HiddenAddCmd; +import com.zcloud.key.project.persistence.dataobject.ai.AiAlarmDO; +import com.zcloud.key.project.persistence.dataobject.hidden.HiddenPenaltyDO; +import com.zcloud.key.project.persistence.dataobject.project.KeyProjectPenaltyPersonnelDO; +import com.zcloud.key.project.persistence.repository.ai.AiAlarmRepository; +import com.zcloud.key.project.persistence.repository.hidden.HiddenPenaltyRepository; +import com.zcloud.key.project.persistence.repository.project.KeyProjectPenaltyPersonnelRepository; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; +import java.util.List; import java.util.Map; - -/** - * web-app - * - * @Author zhaokai - * @Date 2026-03-20 11:32:51 - */ @Component @AllArgsConstructor public class HiddenAddExe { private final HiddenGateway hiddenGateway; private final MessageNoticeExe messageNoticeExe; private final MessageTemplateConfig messageTemplateConfig; + private final AiAlarmRepository aiAlarmRepository; + private final HiddenPenaltyRepository hiddenPenaltyRepository; + private final KeyProjectPenaltyPersonnelRepository keyProjectPenaltyPersonnelRepository; @Transactional(rollbackFor = Exception.class) public boolean execute(HiddenAddCmd cmd) { HiddenE hiddenE = new HiddenE(); BeanUtils.copyProperties(cmd, hiddenE); hiddenE.setState(1); - boolean res = false; + boolean res; try { res = hiddenGateway.add(hiddenE); Map sendParams = new HashMap<>(); - messageNoticeExe.messageNotice(hiddenE.getRectificationUserId(), messageTemplateConfig.getHiddenDangerRectifyPersonApplyRectifyPass(), sendParams); - messageNoticeExe.sendMessageAddEvent(hiddenE.getRectificationUserId(), "由您负责处置隐患的摄像头发现隐患,请及时整改。","隐患待整改", hiddenE.getId(), hiddenE.getId()); - - + messageNoticeExe.messageNotice( + hiddenE.getRectificationUserId(), + messageTemplateConfig.getHiddenDangerRectifyPersonApplyRectifyPass(), + sendParams + ); + messageNoticeExe.sendMessageAddEvent( + hiddenE.getRectificationUserId(), + "由您负责处置隐患的摄像头发现隐患,请及时整改。", + "隐患待整改", + hiddenE.getId(), + hiddenE.getId() + ); + initPenaltyForAiHidden(hiddenE); } catch (Exception e) { throw new RuntimeException(e); } @@ -49,5 +63,59 @@ public class HiddenAddExe { } return true; } -} + private void initPenaltyForAiHidden(HiddenE hiddenE) { + if (!Integer.valueOf(1).equals(hiddenE.getSource()) || hiddenE.getForeignKey() == null || hiddenE.getHiddenId() == null) { + return; + } + AiAlarmDO aiAlarmDO = aiAlarmRepository.getByAiAlarmId(hiddenE.getForeignKey()); + if (aiAlarmDO == null || aiAlarmDO.getKeyProjectId() == null) { + return; + } + List personnelList = + keyProjectPenaltyPersonnelRepository.getListByProjectId(aiAlarmDO.getKeyProjectId()); + if (CollUtil.isEmpty(personnelList)) { + return; + } + + HiddenPenaltyDO penalty = new HiddenPenaltyDO(); + penalty.setHiddenPenaltyId(Tools.get32UUID()); + penalty.setHiddenId(hiddenE.getHiddenId()); + penalty.setKeyProjectId(aiAlarmDO.getKeyProjectId()); + penalty.setPenalizedCorpId(hiddenE.getRectificationCorpId()); + penalty.setFineFlag(0); + penalty.setFeedbackStatus(0); + penalty.setEditFlag(0); + hiddenPenaltyRepository.save(penalty); + + HiddenPenaltyDO savedPenalty = hiddenPenaltyRepository.getByPenaltyId(penalty.getHiddenPenaltyId()); + if (savedPenalty == null || savedPenalty.getId() == null) { + return; + } + Map sendParams = new HashMap<>(); + sendParams.put("keyProject", aiAlarmDO.getProjectName()); + sendParams.put("checkTitle", aiAlarmDO.getProjectName()); + sendParams.put("listName", "待处罚"); + for (KeyProjectPenaltyPersonnelDO person : personnelList) { + if (person.getUserId() == null) { + continue; + } + messageNoticeExe.messageNotice( + person.getUserId(), + messageTemplateConfig.getHiddenDangerPenaltyPersonApplyPenalty(), + sendParams + ); + messageNoticeExe.sendMessageAddEvent( + person.getUserId(), + "您有一条待处罚隐患,请及时发起处罚。", + "待处罚", + savedPenalty.getId(), + getPendingPenaltyTodoKey(savedPenalty) + ); + } + } + + private Long getPendingPenaltyTodoKey(HiddenPenaltyDO penalty) { + return penalty.getHiddenTableId() != null ? penalty.getHiddenTableId() : penalty.getId(); + } +} diff --git a/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenPenaltyAddExe.java b/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenPenaltyAddExe.java index 88cd364..337b706 100644 --- a/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenPenaltyAddExe.java +++ b/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenPenaltyAddExe.java @@ -22,8 +22,10 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.HashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Set; @Component @AllArgsConstructor @@ -131,10 +133,11 @@ public class HiddenPenaltyAddExe { if (penaltyDO == null) { return; } - if (penaltyDO.getId() != null) { - messageNoticeExe.sendMessageCompleteEvent(penaltyDO.getId()); + Long pendingPenaltyTodoKey = getPendingPenaltyTodoKey(penaltyDO); + if (pendingPenaltyTodoKey != null) { + messageNoticeExe.sendMessageCompleteEvent(pendingPenaltyTodoKey); } - if (!Integer.valueOf(1).equals(penaltyDO.getFineFlag()) || penaltyDO.getPenalizedUserId() == null) { + if (!Integer.valueOf(1).equals(penaltyDO.getFineFlag())) { return; } @@ -142,17 +145,35 @@ public class HiddenPenaltyAddExe { if (StringUtils.isNotBlank(penaltyDO.getProjectName())) { sendParams.put("checkTitle", penaltyDO.getProjectName()); } - messageNoticeExe.messageNotice( - penaltyDO.getPenalizedUserId(), - messageTemplateConfig.getHiddenDangerPenaltyFeedbackPersonApplyFeedback(), - sendParams - ); - messageNoticeExe.sendMessageAddEvent( - penaltyDO.getPenalizedUserId(), - "您有一条待反馈处罚,请及时缴纳处罚金并上传凭证。", - "待反馈处罚", - penaltyDO.getId(), - penaltyDO.getId() - ); + sendParams.put("listName", "待反馈处罚"); + resolveFeedbackReceivers(penaltyDO).forEach(userId -> { + messageNoticeExe.messageNotice( + userId, + messageTemplateConfig.getHiddenDangerPenaltyFeedbackPersonApplyFeedback(), + sendParams + ); + messageNoticeExe.sendMessageAddEvent( + userId, + "您有一条待反馈处罚,请及时缴纳处罚金并上传凭证。", + "待反馈处罚", + penaltyDO.getId(), + penaltyDO.getId() + ); + }); + } + + private Set resolveFeedbackReceivers(HiddenPenaltyDO penaltyDO) { + Set userIds = new LinkedHashSet<>(); + if (penaltyDO.getPenalizedUserId() != null) { + userIds.add(penaltyDO.getPenalizedUserId()); + } + if (penaltyDO.getXgfMasterUserId() != null) { + userIds.add(penaltyDO.getXgfMasterUserId()); + } + return userIds; + } + + private Long getPendingPenaltyTodoKey(HiddenPenaltyDO penaltyDO) { + return penaltyDO.getHiddenTableId() != null ? penaltyDO.getHiddenTableId() : penaltyDO.getId(); } } diff --git a/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenPenaltyUpdateExe.java b/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenPenaltyUpdateExe.java index 5265ebd..d56ec6e 100644 --- a/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenPenaltyUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/key/project/command/hidden/HiddenPenaltyUpdateExe.java @@ -17,7 +17,9 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.HashMap; +import java.util.LinkedHashSet; import java.util.Map; +import java.util.Set; @Component @AllArgsConstructor @@ -35,11 +37,9 @@ public class HiddenPenaltyUpdateExe { throw new BizException("处罚数据不存在"); } - // 已反馈的不可更改 if (1 == existing.getFeedbackStatus()) { throw new BizException("已反馈,无法更改处罚"); } - // 已更改过的不可重复更改 if (1 == existing.getEditFlag()) { throw new BizException("已更改过,无法重复更改"); } @@ -65,15 +65,39 @@ public class HiddenPenaltyUpdateExe { } private void handleFeedbackTodo(HiddenPenaltyDO penaltyDO) { - if (Integer.valueOf(1).equals(penaltyDO.getFineFlag()) && penaltyDO.getPenalizedUserId() != null) { + if (Integer.valueOf(1).equals(penaltyDO.getFineFlag())) { Map sendParams = new HashMap<>(); if (penaltyDO.getProjectName() != null && !penaltyDO.getProjectName().isEmpty()) { sendParams.put("checkTitle", penaltyDO.getProjectName()); } - messageNoticeExe.messageNotice(penaltyDO.getPenalizedUserId(), messageTemplateConfig.getHiddenDangerPenaltyFeedbackPersonApplyFeedback(), sendParams); - messageNoticeExe.sendMessageAddEvent(penaltyDO.getPenalizedUserId(), "您有一条待反馈处罚,请及时缴纳处罚金并上传凭证。", "待反馈处罚", penaltyDO.getId(), penaltyDO.getId()); + sendParams.put("listName", "待反馈处罚"); + resolveFeedbackReceivers(penaltyDO).forEach(userId -> { + messageNoticeExe.messageNotice( + userId, + messageTemplateConfig.getHiddenDangerPenaltyFeedbackPersonApplyFeedback(), + sendParams + ); + messageNoticeExe.sendMessageAddEvent( + userId, + "您有一条待反馈处罚,请及时缴纳处罚金并上传凭证。", + "待反馈处罚", + penaltyDO.getId(), + penaltyDO.getId() + ); + }); return; } messageNoticeExe.sendMessageCompleteEvent(penaltyDO.getId()); } + + private Set resolveFeedbackReceivers(HiddenPenaltyDO penaltyDO) { + Set userIds = new LinkedHashSet<>(); + if (penaltyDO.getPenalizedUserId() != null) { + userIds.add(penaltyDO.getPenalizedUserId()); + } + if (penaltyDO.getXgfMasterUserId() != null) { + userIds.add(penaltyDO.getXgfMasterUserId()); + } + return userIds; + } } diff --git a/web-app/src/main/java/com/zcloud/key/project/command/inspection/SafetyEnvironmentalInspectionAddExe.java b/web-app/src/main/java/com/zcloud/key/project/command/inspection/SafetyEnvironmentalInspectionAddExe.java index feae4e2..fadb9ba 100644 --- a/web-app/src/main/java/com/zcloud/key/project/command/inspection/SafetyEnvironmentalInspectionAddExe.java +++ b/web-app/src/main/java/com/zcloud/key/project/command/inspection/SafetyEnvironmentalInspectionAddExe.java @@ -209,15 +209,13 @@ public class SafetyEnvironmentalInspectionAddExe { // 通知处罚人 String projectName = projectDO != null ? projectDO.getProjectName() : ""; - Map sendParams = new HashMap<>(); - sendParams.put("keyProject", projectName); - penaltyList.forEach(penalty -> personnelList.forEach(person -> { - messageNoticeExe.messageNotice(person.getUserId(), - messageTemplateConfig.getHiddenDangerPenaltyPersonApplyPenalty(), sendParams); - messageNoticeExe.sendMessageAddEvent(person.getUserId(), - "您有一条待处罚隐患,请及时发起处罚。", "待处罚", - penalty.getId(), penalty.getId()); - })); + List savedPenaltyList = penaltyList.stream() + .map(HiddenPenaltyDO::getHiddenPenaltyId) + .distinct() + .map(hiddenPenaltyRepository::getByPenaltyId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + notifyPenaltyPersonnel(personnelList, savedPenaltyList, projectName); } } } catch (Exception e) { @@ -255,5 +253,36 @@ public class SafetyEnvironmentalInspectionAddExe { } return safetyEnvironmentalInspectionCO; } + + private void notifyPenaltyPersonnel(List personnelList, + List penaltyList, + String projectName) { + if (CollUtil.isEmpty(personnelList) || CollUtil.isEmpty(penaltyList)) { + return; + } + Map sendParams = new HashMap<>(); + sendParams.put("keyProject", projectName); + sendParams.put("checkTitle", projectName); + sendParams.put("listName", "待处罚"); + penaltyList.forEach(penalty -> { + if (penalty.getId() == null) { + return; + } + personnelList.forEach(person -> { + if (person.getUserId() == null) { + return; + } + messageNoticeExe.messageNotice(person.getUserId(), + messageTemplateConfig.getHiddenDangerPenaltyPersonApplyPenalty(), sendParams); + messageNoticeExe.sendMessageAddEvent(person.getUserId(), + "您有一条待处罚隐患,请及时发起处罚。", "待处罚", + penalty.getId(), getPendingPenaltyTodoKey(penalty)); + }); + }); + } + + private Long getPendingPenaltyTodoKey(HiddenPenaltyDO penalty) { + return penalty.getHiddenTableId() != null ? penalty.getHiddenTableId() : penalty.getId(); + } } diff --git a/web-app/src/main/java/com/zcloud/key/project/command/inspection/SafetyEnvironmentalInspectionUpdateExe.java b/web-app/src/main/java/com/zcloud/key/project/command/inspection/SafetyEnvironmentalInspectionUpdateExe.java index e6a2e60..b056bde 100644 --- a/web-app/src/main/java/com/zcloud/key/project/command/inspection/SafetyEnvironmentalInspectionUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/key/project/command/inspection/SafetyEnvironmentalInspectionUpdateExe.java @@ -237,15 +237,13 @@ public class SafetyEnvironmentalInspectionUpdateExe { hiddenPenaltyRepository.saveBatch(penaltyList); String projectName = projectDO != null ? projectDO.getProjectName() : ""; - Map sendParams = new HashMap<>(); - sendParams.put("keyProject", projectName); - penaltyList.forEach(penalty -> personnelList.forEach(person -> { - messageNoticeExe.messageNotice(person.getUserId(), - messageTemplateConfig.getHiddenDangerPenaltyPersonApplyPenalty(), sendParams); - messageNoticeExe.sendMessageAddEvent(person.getUserId(), - "您有一条待处罚隐患,请及时发起处罚。", "待处罚", - penalty.getId(), penalty.getId()); - })); + List savedPenaltyList = penaltyList.stream() + .map(HiddenPenaltyDO::getHiddenPenaltyId) + .distinct() + .map(hiddenPenaltyRepository::getByPenaltyId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + notifyPenaltyPersonnel(personnelList, savedPenaltyList, projectName); } } //TODO 站内信 @@ -422,6 +420,40 @@ public class SafetyEnvironmentalInspectionUpdateExe { hiddenRepository.batchInsert(BeanUtil.copyToList(hiddenList, HiddenDO.class)); // 新增隐患发现人 hiddenFindUserRepository.batchInsert(BeanUtil.copyToList(hiddenFindUserList, HiddenFindUserDO.class)); + + List personnelList = + keyProjectPenaltyPersonnelRepository.getListByProjectId(cmd.getKeyProjectId()); + if (CollUtil.isNotEmpty(personnelList)) { + QueryWrapper projectQuery = new QueryWrapper<>(); + projectQuery.eq("key_project_id", cmd.getKeyProjectId()); + projectQuery.eq("delete_enum", "FALSE"); + projectQuery.orderByDesc("create_time"); + projectQuery.last("limit 1"); + KeyProjectDO projectDO = keyProjectRepository.getOne(projectQuery); + + List penaltyList = new ArrayList<>(); + hiddenAddCmdList.forEach(hiddenAddCmd -> { + HiddenPenaltyDO penalty = new HiddenPenaltyDO(); + penalty.setHiddenPenaltyId(Tools.get32UUID()); + penalty.setHiddenId(hiddenAddCmd.getHiddenId()); + penalty.setKeyProjectId(cmd.getKeyProjectId()); + penalty.setPenalizedCorpId(safetyEnvironmentalInspectionE.getInspectedCorpinfoId()); + penalty.setFineFlag(0); + penalty.setFeedbackStatus(0); + penalty.setEditFlag(0); + penaltyList.add(penalty); + }); + hiddenPenaltyRepository.saveBatch(penaltyList); + + String projectName = projectDO != null ? projectDO.getProjectName() : ""; + List savedPenaltyList = penaltyList.stream() + .map(HiddenPenaltyDO::getHiddenPenaltyId) + .distinct() + .map(hiddenPenaltyRepository::getByPenaltyId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + notifyPenaltyPersonnel(personnelList, savedPenaltyList, projectName); + } } // 发送站内信和待办 @@ -519,5 +551,36 @@ public class SafetyEnvironmentalInspectionUpdateExe { messageNoticeExe.sendMessageCompleteEvent(userList.get(0).getId()); } } + + private void notifyPenaltyPersonnel(List personnelList, + List penaltyList, + String projectName) { + if (CollUtil.isEmpty(personnelList) || CollUtil.isEmpty(penaltyList)) { + return; + } + Map sendParams = new HashMap<>(); + sendParams.put("keyProject", projectName); + sendParams.put("checkTitle", projectName); + sendParams.put("listName", "待处罚"); + penaltyList.forEach(penalty -> { + if (penalty.getId() == null) { + return; + } + personnelList.forEach(person -> { + if (person.getUserId() == null) { + return; + } + messageNoticeExe.messageNotice(person.getUserId(), + messageTemplateConfig.getHiddenDangerPenaltyPersonApplyPenalty(), sendParams); + messageNoticeExe.sendMessageAddEvent(person.getUserId(), + "您有一条待处罚隐患,请及时发起处罚。", "待处罚", + penalty.getId(), getPendingPenaltyTodoKey(penalty)); + }); + }); + } + + private Long getPendingPenaltyTodoKey(HiddenPenaltyDO penalty) { + return penalty.getHiddenTableId() != null ? penalty.getHiddenTableId() : penalty.getId(); + } } diff --git a/web-infrastructure/src/main/resources/mapper/KeyProjectMapper.xml b/web-infrastructure/src/main/resources/mapper/KeyProjectMapper.xml index 892a227..8b58382 100644 --- a/web-infrastructure/src/main/resources/mapper/KeyProjectMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/KeyProjectMapper.xml @@ -22,6 +22,13 @@ LEFT JOIN corp_info cp ON kp.corpinfo_id = cp.id AND cp.delete_enum = 'FALSE' kp.delete_enum = 'FALSE' + AND NOT EXISTS ( + SELECT 1 + FROM key_project kp_latest + WHERE kp_latest.delete_enum = 'FALSE' + AND kp_latest.key_project_id = kp.key_project_id + AND kp_latest.id > kp.id + ) AND kp.project_name LIKE CONCAT('%', #{params.projectName}, '%') @@ -295,8 +302,15 @@ GROUP BY key_project_id ) sei_stat ON kp.key_project_id = sei_stat.key_project_id where kp.delete_enum = 'FALSE' - and kp.apply_status in (0,1,2,4,5,6) + and kp.apply_status in (1,2,4,5,6) and kp.jurisdiction_corpinfo_id = #{params.jurisdictionCorpinfoId} + AND NOT EXISTS ( + SELECT 1 + FROM key_project kp_latest + WHERE kp_latest.delete_enum = 'FALSE' + AND kp_latest.key_project_id = kp.key_project_id + AND kp_latest.id > kp.id + ) AND kp.project_name like concat('%',#{params.projectName},'%')