feat(): 完善检查发起隐患处罚数据存储、优化处罚查询逻辑

dev
lishiwei 2026-06-29 17:28:39 +08:00
parent 879ac8e8a5
commit 0ab2942367
4 changed files with 89 additions and 16 deletions

View File

@ -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<HiddenDO> deleteHiddenList = hiddenRepository.listAll(params);
// 删除旧的处罚记录
if (CollUtil.isNotEmpty(deleteHiddenList)) {
List<String> deletedHiddenIds = deleteHiddenList.stream()
.map(HiddenDO::getHiddenId)
.distinct()
.collect(Collectors.toList());
hiddenPenaltyRepository.deleteByHiddenIds(deletedHiddenIds);
}
List<String> 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<KeyProjectPenaltyPersonnelDO> personnelList =
keyProjectPenaltyPersonnelRepository.getListByProjectId(cmd.getKeyProjectId());
if (CollUtil.isNotEmpty(personnelList)) {
QueryWrapper<KeyProjectDO> 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<HiddenPenaltyDO> 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<String, Object> 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 站内信
// 发送站内信和待办

View File

@ -25,4 +25,6 @@ public interface HiddenPenaltyRepository extends BaseRepository<HiddenPenaltyDO>
Long countByUserId(Long userId);
Long countFeedbackByUserId(Long userId);
void deleteByHiddenIds(List<String> hiddenIds);
}

View File

@ -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<String> hiddenIds) {
UpdateWrapper<HiddenPenaltyDO> updateWrapper = new UpdateWrapper<>();
updateWrapper.in("hidden_id", hiddenIds);
updateWrapper.eq("delete_enum", "FALSE");
updateWrapper.set("delete_enum", "TRUE");
hiddenPenaltyMapper.update(null, updateWrapper);
}
}

View File

@ -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
</select>
<select id="feedbackListPage" resultType="com.zcloud.key.project.persistence.dataobject.hidden.HiddenPenaltyFeedbackDO">
SELECT hpf.*,
hp.penalty_desc as penalty_desc,
hp.feedback_status as feedback_status,
kp.project_name as project_name,
xci.corp_name as xgf_corpinfo_name,
SELECT hp.id AS id,
hp.hidden_penalty_id AS hidden_penalty_id,
hp.penalty_desc AS penalty_desc,
hp.feedback_status AS feedback_status,
hp.penalized_user_id AS penalized_user_id,
hpf.hidden_penalty_feedback_id AS hidden_penalty_feedback_id,
hpf.feedback_user_id AS feedback_user_id,
hpf.feedback_time AS feedback_time,
hpf.fine_payment_receipt AS fine_payment_receipt,
hpf.create_time AS create_time,
hpf.update_time AS update_time,
kp.project_name AS project_name,
xci.corp_name AS xgf_corpinfo_name,
u.name AS feedback_user_name,
h.id AS hidden_table_id,
h.hidden_id AS hidden_id,
@ -136,23 +145,22 @@
h.create_name AS find_user_name,
h.foreign_key AS foreign_key,
h.source AS hidden_source
FROM hidden_penalty_feedback hpf
INNER JOIN (
SELECT MAX(id) AS id
FROM hidden_penalty_feedback
WHERE delete_enum = 'FALSE'
GROUP BY hidden_penalty_id
) latest_hpf ON latest_hpf.id = hpf.id
LEFT JOIN hidden_penalty hp ON hp.hidden_penalty_id = hpf.hidden_penalty_id AND hp.delete_enum = 'FALSE'
FROM hidden_penalty hp
LEFT JOIN hidden h ON hp.hidden_id = h.hidden_id AND h.delete_enum = 'FALSE'
LEFT JOIN safety_environmental_inspection i ON i.inspection_id = h.foreign_key AND h.source IN (2, 3)
LEFT JOIN key_project kp ON kp.key_project_id = i.key_project_id
LEFT JOIN ai_alarm aa ON h.foreign_key = aa.ai_alarm_id AND h.source = 1
LEFT JOIN key_project kp2 ON kp2.key_project_id = aa.key_project_id
LEFT JOIN corp_info xci ON xci.id = IFNULL(kp.xgf_corpinfo_id, kp2.xgf_corpinfo_id)
LEFT JOIN hidden_penalty_feedback hpf ON hpf.hidden_penalty_id = hp.hidden_penalty_id
AND hpf.delete_enum = 'FALSE'
AND hpf.id = (
SELECT MAX(id) FROM hidden_penalty_feedback
WHERE hidden_penalty_id = hp.hidden_penalty_id AND delete_enum = 'FALSE'
)
LEFT JOIN user u ON u.id = hpf.feedback_user_id AND u.delete_enum = 'FALSE'
<where>
hpf.delete_enum = 'FALSE'
hp.delete_enum = 'FALSE'
AND hp.fine_flag = 1
AND (h.source NOT IN (2, 3) OR i.inspection_id IS NOT NULL)
<if test="params.xgfCorpinfoName != null and params.xgfCorpinfoName != ''">
@ -188,8 +196,8 @@
AND hp.penalty_desc LIKE CONCAT('%', #{params.penaltyDesc}, '%')
</if>
</where>
GROUP BY hpf.id
ORDER BY hpf.feedback_time DESC, hpf.create_time DESC, hpf.id DESC
GROUP BY hp.id
ORDER BY hpf.feedback_time DESC, hp.create_time DESC, hpf.id DESC
</select>
<select id="getFeedbackByPenaltyId" resultType="com.zcloud.key.project.persistence.dataobject.hidden.HiddenPenaltyFeedbackDO">