fuliqi
2025-01-15 36a00aa8bee92f62470fc1031c8c07f3de35910d
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
package com.ycl.thread;
 
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.ycl.platform.domain.entity.YwPoint;
import com.ycl.platform.mapper.YwPointMapper;
 
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
 
/**
 * @author:xp
 * @date:2024/8/22 14:24
 */
public class PointImportCallable implements Callable<Boolean> {
 
    private List<YwPoint> updateList;
    private YwPointMapper ywPointMapper;
    private List<YwPoint> failedList = new ArrayList<>();
 
    private Integer maxFailedTimes = 5;
 
    public PointImportCallable(List<YwPoint> updateList, YwPointMapper ywPointMapper) {
        this.updateList = updateList;
        this.ywPointMapper = ywPointMapper;
    }
 
    @Override
    public Boolean call() throws Exception {
        this.updateFailed(updateList);
        return this.failedList.size() < 1;
    }
 
    private void updateFailed(List<YwPoint> list) {
        this.maxFailedTimes -= 1;
        if (this.maxFailedTimes < 0) {
            return;
        }
        for (YwPoint ywPoint : list) {
            boolean update = new LambdaUpdateChainWrapper<>(ywPointMapper)
                    .eq(YwPoint::getSerialNumber, ywPoint.getSerialNumber())
                    .set(YwPoint::getProvinceTagVideo, ywPoint.getProvinceTagVideo())
                    .set(YwPoint::getProvinceTagCar, ywPoint.getProvinceTagCar())
                    .set(YwPoint::getProvinceTagFace, ywPoint.getProvinceTagFace())
                    .set(YwPoint::getImportantCommandImageTag, ywPoint.getImportantCommandImageTag())
                    .set(YwPoint::getUnitId, ywPoint.getUnitId())
                    .set(YwPoint::getStartTime, ywPoint.getStartTime())
                    .set(YwPoint::getEndTime, ywPoint.getEndTime())
                    .update();
            if (! update) {
                failedList.add(ywPoint);
            } else if (failedList.contains(ywPoint)) {
                failedList.remove(ywPoint);
            }
        }
        if (failedList.size() > 0) {
            this.updateFailed(failedList);
        }
    }
}