车间能级提升-智能设备管理系统
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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("自动好评维修单任务执行成功");
    }
}