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<EimsRepairRes> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(EimsRepairRes::getStatus, DictConstants.REPAIR_RES_STATUS_DETAIL.WANCHENG)
|
.le(EimsRepairRes::getEndTime, threeDaysAgo);
|
|
List<EimsRepairRes> repairOrders = repairResMapper.selectList(queryWrapper);
|
|
for (EimsRepairRes order : repairOrders) {
|
// 检查是否已经存在好评反馈
|
LambdaQueryWrapper<EimsRepairFb> 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("自动好评维修单任务执行成功");
|
}
|
}
|