zhoushihao
2 天以前 4e3b8155722b66e25df3c6fd42cc586b68dea391
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
package com.mes.rawglasstask.service.impl;
 
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.common.config.Const;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
import com.mes.rawglassstation.entity.RawGlassStorageStation;
import com.mes.rawglasstask.entity.RawGlassStorageTask;
import com.mes.rawglasstask.entity.request.RawGlassTaskRequest;
import com.mes.rawglasstask.mapper.RawGlassStorageTaskMapper;
import com.mes.rawglasstask.service.RawGlassStorageTaskService;
import com.mes.tools.DateUtil;
import com.mes.utils.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
 
/**
 * @author system
 * @since 2024-07-09 14:51:27
 */
@Service
@Slf4j
public class RawGlassRawGlassStorageTaskServiceImpl extends ServiceImpl<RawGlassStorageTaskMapper, RawGlassStorageTask> implements RawGlassStorageTaskService {
 
    @Autowired
    RedisUtil redisUtil;
 
    @Resource
    RawGlassStorageDetailsService rawGlassStorageDetailsService;
 
    @Override
    public Page<RawGlassStorageTask> queryRawGlassHistoryTask(RawGlassTaskRequest request) {
        if (request.getBeginDate() == null) {
            //设置默认时间    startDate:开始时间   endDate:结束时间
            request.setBeginDate(DateUtil.getBeginDate());
            request.setEndDate(DateUtil.getEndDate());
        }
        Page<RawGlassStorageTask> page = new Page<>(request.getPageNo(), request.getPageSize());
        return page(page, new LambdaQueryWrapper<RawGlassStorageTask>()
                .between(RawGlassStorageTask::getCreateTime, request.getBeginDate(), request.getEndDate())
                .in(CollectionUtil.isNotEmpty(request.getTaskState()), RawGlassStorageTask::getTaskState, request.getTaskState())
                .in(CollectionUtil.isNotEmpty(request.getTaskType()), RawGlassStorageTask::getTaskType, request.getTaskType())
                .orderByDesc(RawGlassStorageTask::getCreateTime));
    }
 
    @Override
    public List<RawGlassStorageTask> listRawGlassTask() {
        RawGlassTaskRequest request = redisUtil.getCacheObject("rawGlassTaskRequest");
        if (null == request) {
            request = new RawGlassTaskRequest();
        }
        if (request.getBeginDate() == null) {
            //设置默认时间    startDate:开始时间   endDate:结束时间
            request.setBeginDate(DateUtil.getBeginDate());
            request.setEndDate(DateUtil.getEndDate());
        }
        return list(new LambdaQueryWrapper<RawGlassStorageTask>()
                .between(RawGlassStorageTask::getCreateTime, request.getBeginDate(), request.getEndDate())
                .in(CollectionUtil.isNotEmpty(request.getTaskState()), RawGlassStorageTask::getTaskState, request.getTaskState())
                .in(CollectionUtil.isNotEmpty(request.getTaskType()), RawGlassStorageTask::getTaskType, request.getTaskType())
                .orderByDesc(RawGlassStorageTask::getCreateTime));
 
    }
 
    @Override
    public String setRawGlassTaskRequest(RawGlassTaskRequest request) {
        if (request == null) {
            redisUtil.deleteObject("rawGlassTaskRequest");
        } else {
            redisUtil.setCacheObject("rawGlassTaskRequest", request);
        }
        log.info("前端传入参数:{}", request);
        return "success";
    }
 
    @Override
    public Boolean taskSuccess(Long taskId) {
        //获取任务正在执行的任务信息
        RawGlassStorageTask task = this.getById(taskId);
        //去详情表获取正在执行的原片详情信息
        RawGlassStorageDetails details = rawGlassStorageDetailsService.getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
                .ne(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT).eq(RawGlassStorageDetails::getSlot, task.getStartSlot())
        );
        if(details!=null){
            RawGlassStorageDetails targetDetails = rawGlassStorageDetailsService.generateDetails(details, task.getEndSlot());
            int deviceId = details.getDeviceId();
            Integer taskType = task.getTaskType();
            log.info("将详情表的状态改为已出库");
            rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                    .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT)
                    .ne(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT)
                    .eq(RawGlassStorageDetails::getSlot, task.getStartSlot()));
            log.info("任务状态已更改为:已完成");
            this.update(new LambdaUpdateWrapper<RawGlassStorageTask>()
                    .eq(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW)
                    .set(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_SUCCESS));
            switch (taskType) {
                case 1:
                case 3:
                    log.info("1、入库,3、调度任务。{}", taskType);
                    if (details.getRemainQuantity() > 0) {
                        rawGlassStorageDetailsService.save(targetDetails);
                    }
                    break;
                case 2:
                case 4:
                    log.info("2、出片,4、入库请求。{}", taskType);
                    targetDetails = new RawGlassStorageDetails();
                    targetDetails.setSlot(task.getEndSlot());
                    targetDetails.setDeviceId(deviceId);
                    targetDetails.setShelf(task.getStartSlot());
                    targetDetails.setState(Const.RAW_GLASS_STATE_IN);
                    rawGlassStorageDetailsService.save(targetDetails);
                    break;
                default:
                    break;
            }
        }
        return Boolean.TRUE;
    }
 
 
    @Override
    public Boolean taskError(Long taskId) {
        //获取任务正在执行的任务信息
        RawGlassStorageTask task = this.getById(taskId);
        Integer taskType = task.getTaskType();
        if (taskType.equals(Const.RAW_GLASS_TASK_TYPE_IN_REQUEST)) {
            rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                    .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT)
                    .eq(RawGlassStorageDetails::getSlot, task.getStartSlot())
                    .in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING, Const.RAW_GLASS_STATE_CAR));
        } else {
            rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                    .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
                    .eq(RawGlassStorageDetails::getSlot, task.getStartSlot())
                    .in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING, Const.RAW_GLASS_STATE_CAR));
        }
        this.update(new LambdaUpdateWrapper<RawGlassStorageTask>()
                .eq(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW)
                .set(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_FAILURE));
        return Boolean.TRUE;
    }
 
 
}