package org.dromara.eims.job; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.dto.JobArgs; import com.aizuda.snailjob.client.model.ExecuteResult; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import org.dromara.common.core.constant.DictConstants; import org.dromara.common.core.utils.DateUtils; import org.dromara.eims.domain.EimsRepairRes; import org.dromara.eims.domain.EimsRepairFb; import org.dromara.eims.mapper.EimsRepairResMapper; import org.dromara.eims.mapper.EimsRepairFbMapper; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; @Component @RequiredArgsConstructor @JobExecutor(name = "autoApproveRepairJob") public class AutoApproveRepairJob { private final EimsRepairResMapper repairResMapper; private final EimsRepairFbMapper repairFbMapper; @SneakyThrows @Transactional(rollbackFor = Exception.class) public ExecuteResult jobExecute(JobArgs jobArgs) { // 查询已完成(status等于3)且结束时间超过三天以上的维修单 Date threeDaysAgo = DateUtils.addDays(DateUtils.getNowDate(), -3); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EimsRepairRes::getStatus, DictConstants.REPAIR_RES_STATUS_DETAIL.WANCHENG) .le(EimsRepairRes::getEndTime, threeDaysAgo); List repairOrders = repairResMapper.selectList(queryWrapper); for (EimsRepairRes order : repairOrders) { // 检查是否已经存在好评反馈 LambdaQueryWrapper fbQueryWrapper = new LambdaQueryWrapper<>(); fbQueryWrapper.eq(EimsRepairFb::getResId, order.getId()) .eq(EimsRepairFb::getRepairSatisfaction, 1); Long count = repairFbMapper.selectCount(fbQueryWrapper); // 将维修单状态更新为已评价 order.setStatus(DictConstants.REPAIR_RES_STATUS_DETAIL.PINGJIA); repairResMapper.updateById(order); if (count == 0) { // 插入一条repairSatisfaction为1的反馈数据 EimsRepairFb feedback = new EimsRepairFb(); feedback.setResId(order.getId()); feedback.setRepairSatisfaction("1"); // 默认好评 feedback.setRemark("系统自动好评"); // 可以根据需要设置反馈内容 feedback.setCreateTime(DateUtils.getNowDate()); repairFbMapper.insert(feedback); } } return ExecuteResult.success("自动好评维修单任务执行成功"); } }