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 abbd4e0..fd344a4 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 @@ -1,6 +1,7 @@ package com.zcloud.key.project.command.inspection; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import com.alibaba.cola.exception.BizException; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.jjb.saas.framework.auth.model.SSOUser; @@ -21,17 +22,21 @@ import com.zcloud.key.project.dto.hidden.HiddenAddCmd; import com.zcloud.key.project.dto.inspection.*; import com.zcloud.key.project.persistence.dataobject.hidden.HiddenDO; import com.zcloud.key.project.persistence.dataobject.hidden.HiddenFindUserDO; +import com.zcloud.key.project.persistence.dataobject.hidden.HiddenPenaltyDO; import com.zcloud.key.project.persistence.dataobject.inspection.SafetyEnvironmentalInspectionContentDO; import com.zcloud.key.project.persistence.dataobject.inspection.SafetyEnvironmentalInspectionDO; import com.zcloud.key.project.persistence.dataobject.inspection.SafetyEnvironmentalInspectionDefendDO; import com.zcloud.key.project.persistence.dataobject.inspection.SafetyEnvironmentalInspectionUserDO; import com.zcloud.key.project.persistence.dataobject.project.KeyProjectDO; +import com.zcloud.key.project.persistence.dataobject.project.KeyProjectPenaltyPersonnelDO; import com.zcloud.key.project.persistence.repository.hidden.HiddenFindUserRepository; +import com.zcloud.key.project.persistence.repository.hidden.HiddenPenaltyRepository; import com.zcloud.key.project.persistence.repository.hidden.HiddenRepository; import com.zcloud.key.project.persistence.repository.inspection.SafetyEnvironmentalInspectionContentRepository; import com.zcloud.key.project.persistence.repository.inspection.SafetyEnvironmentalInspectionDefendRepository; import com.zcloud.key.project.persistence.repository.inspection.SafetyEnvironmentalInspectionRepository; import com.zcloud.key.project.persistence.repository.inspection.SafetyEnvironmentalInspectionUserRepository; +import com.zcloud.key.project.persistence.repository.project.KeyProjectPenaltyPersonnelRepository; import com.zcloud.key.project.persistence.repository.project.KeyProjectRepository; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -65,6 +70,8 @@ public class SafetyEnvironmentalInspectionUpdateExe { private final HiddenRepository hiddenRepository; private final HiddenFindUserRepository hiddenFindUserRepository; private final KeyProjectRepository keyProjectRepository; + private final KeyProjectPenaltyPersonnelRepository keyProjectPenaltyPersonnelRepository; + private final HiddenPenaltyRepository hiddenPenaltyRepository; private final MessageNoticeExe messageNoticeExe; private final MessageTemplateConfig messageTemplateConfig; @@ -133,6 +140,14 @@ public class SafetyEnvironmentalInspectionUpdateExe { params.put("eqForeignKey", safetyEnvironmentalInspectionE.getInspectionId()); // 删除隐患 List deleteHiddenList = hiddenRepository.listAll(params); + // 删除旧的处罚记录 + if (CollUtil.isNotEmpty(deleteHiddenList)) { + List deletedHiddenIds = deleteHiddenList.stream() + .map(HiddenDO::getHiddenId) + .distinct() + .collect(Collectors.toList()); + hiddenPenaltyRepository.deleteByHiddenIds(deletedHiddenIds); + } List hiddenVideoFile = deleteHiddenList.stream().map(HiddenDO::getVideoUrl).collect(Collectors.toList()); // zcloudImgFilesFacade.deleteFileList(hiddenVideoFile); hiddenRepository.deleteBatch(params); @@ -195,6 +210,44 @@ 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 -> personnelList.forEach(person -> { + HiddenPenaltyDO penalty = new HiddenPenaltyDO(); + penalty.setHiddenPenaltyId(Tools.get32UUID()); + penalty.setHiddenId(hiddenAddCmd.getHiddenId()); + penalty.setKeyProjectId(cmd.getKeyProjectId()); + penalty.setPenalizedCorpId(safetyEnvironmentalInspectionE.getInspectedCorpinfoId()); + penalty.setPenalizedUserId(person.getUserId()); + penalty.setFineFlag(0); + penalty.setFeedbackStatus(0); + penalty.setEditFlag(0); + penaltyList.add(penalty); + })); + hiddenPenaltyRepository.saveBatch(penaltyList); + + String projectName = projectDO != null ? projectDO.getProjectName() : ""; + Map sendParams = new HashMap<>(); + sendParams.put("keyProject", projectName); + personnelList.forEach(person -> { + messageNoticeExe.messageNotice(person.getUserId(), + messageTemplateConfig.getHiddenDangerPenaltyPersonApplyPenalty(), sendParams); + messageNoticeExe.sendMessageAddEvent(person.getUserId(), + "您有一条待处罚隐患,请及时发起处罚。", "待处罚", + safetyEnvironmentalInspectionE.getId(), safetyEnvironmentalInspectionE.getId()); + }); + } } //TODO 站内信 // 发送站内信和待办 diff --git a/web-infrastructure/src/main/java/com/zcloud/key/project/persistence/repository/hidden/HiddenPenaltyRepository.java b/web-infrastructure/src/main/java/com/zcloud/key/project/persistence/repository/hidden/HiddenPenaltyRepository.java index 97e2a0b..0761e37 100644 --- a/web-infrastructure/src/main/java/com/zcloud/key/project/persistence/repository/hidden/HiddenPenaltyRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/key/project/persistence/repository/hidden/HiddenPenaltyRepository.java @@ -25,4 +25,6 @@ public interface HiddenPenaltyRepository extends BaseRepository Long countByUserId(Long userId); Long countFeedbackByUserId(Long userId); + + void deleteByHiddenIds(List hiddenIds); } diff --git a/web-infrastructure/src/main/java/com/zcloud/key/project/persistence/repository/impl/hidden/HiddenPenaltyRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/key/project/persistence/repository/impl/hidden/HiddenPenaltyRepositoryImpl.java index 48411b1..d758b4b 100644 --- a/web-infrastructure/src/main/java/com/zcloud/key/project/persistence/repository/impl/hidden/HiddenPenaltyRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/key/project/persistence/repository/impl/hidden/HiddenPenaltyRepositoryImpl.java @@ -1,6 +1,7 @@ package com.zcloud.key.project.persistence.repository.impl.hidden; import com.alibaba.cola.dto.PageResponse; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.jjb.saas.framework.repository.common.PageHelper; import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; @@ -68,4 +69,13 @@ public class HiddenPenaltyRepositoryImpl public Long countFeedbackByUserId(Long userId) { return hiddenPenaltyMapper.countFeedbackByUserId(userId); } + + @Override + public void deleteByHiddenIds(List hiddenIds) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("hidden_id", hiddenIds); + updateWrapper.eq("delete_enum", "FALSE"); + updateWrapper.set("delete_enum", "TRUE"); + hiddenPenaltyMapper.update(null, updateWrapper); + } } diff --git a/web-infrastructure/src/main/resources/mapper/HiddenPenaltyMapper.xml b/web-infrastructure/src/main/resources/mapper/HiddenPenaltyMapper.xml index cf2676a..f16d369 100644 --- a/web-infrastructure/src/main/resources/mapper/HiddenPenaltyMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/HiddenPenaltyMapper.xml @@ -121,14 +121,23 @@ LEFT JOIN user xmu ON xmu.id = kp.xgf_master_user_id LEFT JOIN user xmu2 ON xmu2.id = kp2.xgf_master_user_id WHERE hp.hidden_penalty_id = #{hiddenPenaltyId} AND hp.delete_enum = 'FALSE' + GROUP BY hp.id