package com.ruoyi.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.domain.*; import com.ruoyi.mapper.CarReviewTaskMapper; import com.ruoyi.mapper.SystemReviewTaskMapper; import com.ruoyi.service.CarReviewTaskService; import com.ruoyi.service.ReviewSceneChangeTaskService; import com.ruoyi.service.ReviewTaskInboxService; import com.ruoyi.mapper.ReviewTaskInboxMapper; import com.ruoyi.service.SystemReviewTaskService; import com.ruoyi.web.request.ReviewTaskInboxConfirmRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; /** * @author wangfei * @description 针对表【t_system_review_task_inbox(体系审查任务收件箱(目前用来获取审查场景变更通知))】的数据库操作Service实现 * @createDate 2023-12-26 09:55:39 */ @Transactional @Service public class ReviewTaskInboxServiceImpl extends ServiceImpl<ReviewTaskInboxMapper, ReviewTaskInbox> implements ReviewTaskInboxService { @Autowired private SystemReviewTaskService systemReviewTaskService; @Autowired private CarReviewTaskService carReviewTaskService; @Autowired private ReviewTaskInboxMapper reviewTaskInboxMapper; @Autowired private ReviewSceneChangeTaskService reviewSceneChangeTaskService; @Autowired private SystemReviewTaskMapper systemReviewTaskMapper; @Autowired private CarReviewTaskMapper carReviewTaskMapper; /** * 保存场景变更对进行中的问卷产生的影响,用于提醒问卷使用者场景发生了变更。 * 体系审查任务、侧性审查任务分别查询不同的表 * @param reviewSceneChangeTaskId * @param type */ @Override public void saveNotify(Long reviewSceneChangeTaskId, String type) { if(ReviewStandard.TYPE_SYSTEM.equals(type)) { doSaveNotifyBySystemReview(reviewSceneChangeTaskId); } else if(ReviewStandard.TYPE_CAR.equals(type)) { doSaveNotifyByCarReview(reviewSceneChangeTaskId); } else { throw new ServiceException("未知的检查类型[" + type + "]",HttpStatus.ERROR); } } @Override public void confirm(ReviewTaskInboxConfirmRequest request) { List<ReviewTaskInbox> inboxList = reviewTaskInboxMapper.findConfirmList(request.getReviewTaskId(),request.getDetailsId()); for (ReviewTaskInbox inbox : inboxList) { inbox.setIsConfirm(1); reviewTaskInboxMapper.updateById(inbox); } } public void doSaveNotifyByCarReview(Long reviewSceneChangeTaskId) { // 查找所有受变更影响的体系审查任务(所有PENDING状态的任务 且回答过的) ReviewSceneChangeTask reviewSceneChangeTask = reviewSceneChangeTaskService.getById(reviewSceneChangeTaskId); List<CarReviewTask> pendingTasks = carReviewTaskMapper.findByDetailsResult(reviewSceneChangeTask.getDetailsId()); // 构建并保存提醒消息 List<ReviewTaskInbox> inboxes = new ArrayList(); for(CarReviewTask task : pendingTasks) { ReviewTaskInbox inbox = new ReviewTaskInbox() .setReviewSceneChangeTaskId(reviewSceneChangeTaskId) .setReviewTaskId(task.getId()) .setIsConfirm(0); inboxes.add(inbox); } saveBatch(inboxes); } public void doSaveNotifyBySystemReview(Long reviewSceneChangeTaskId) { // 查找所有受变更影响的体系审查任务(所有PENDING状态的任务 且回答过的) ReviewSceneChangeTask reviewSceneChangeTask = reviewSceneChangeTaskService.getById(reviewSceneChangeTaskId); List<SystemReviewTask> pendingTasks = systemReviewTaskMapper.findByDetailsResult(reviewSceneChangeTask.getDetailsId()); // 构建并保存提醒消息 List<ReviewTaskInbox> inboxes = new ArrayList(); for(SystemReviewTask task : pendingTasks) { ReviewTaskInbox inbox = new ReviewTaskInbox() .setReviewSceneChangeTaskId(reviewSceneChangeTaskId) .setReviewTaskId(task.getId()) .setIsConfirm(0); inboxes.add(inbox); } saveBatch(inboxes); } }