1
zhang
昨天 15dc3914bdf06e0351b6f39388b3b1512a928904
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
package com.zy.acs.conveyor.core.operation.handler;
 
import com.alibaba.fastjson.JSON;
import com.zy.acs.common.utils.News;
import com.zy.acs.common.utils.RedisSupport;
import com.zy.acs.conveyor.core.constant.RedisConveyorConstant;
import com.zy.acs.conveyor.core.enums.ConveyorStateType;
import com.zy.acs.conveyor.core.model.StaProtocol;
import com.zy.acs.conveyor.core.operation.OperationHandler;
import com.zy.acs.conveyor.core.properties.CtuOperationConfig;
import com.zy.acs.conveyor.core.properties.DevpSlave;
import com.zy.acs.conveyor.core.properties.SlaveProperties;
import com.zy.acs.conveyor.core.service.StationService;
import com.zy.acs.conveyor.entity.Job;
import com.zy.acs.conveyor.enums.WorkNoTypeType;
import com.zy.acs.conveyor.service.JobService;
import com.zy.acs.conveyor.service.WrkLastnoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
import java.util.Date;
import java.util.Map;
 
/**
 * 模拟用户按按钮
 */
@Slf4j
@Component
public class StartUpOperationHandler implements OperationHandler {
 
    @Autowired
    private SlaveProperties slaveProperties;
 
 
    @Autowired
    private JobService jobService;
 
 
    @Autowired
    private StationService stationService;
 
 
    @Autowired
    private WrkLastnoService wrkLastnoService;
 
    private final RedisSupport redis = RedisSupport.defaultRedisSupport;
 
 
    @Override
    public ConveyorStateType getType() {
        return ConveyorStateType.STARTUP;
    }
 
    @Override
    public synchronized void execute(CtuOperationConfig config) {
 
        try {
            // 根据输送线plc遍历
            for (DevpSlave devp : slaveProperties.getDevp()) {
                // 遍历入库口
                for (DevpSlave.Sta inSta : devp.getInSta()) {
                    // 根据输送线plc遍历
                    Map<Integer, StaProtocol> stationMap = stationService.getStationMap(devp.getId());
                    StaProtocol staProtocol = stationMap.get(inSta.getSourceStaNo());
                    if (staProtocol == null) {
                        continue;
                    } else {
                        staProtocol = staProtocol.clone();
                    }
                    // 判断是否满足条件
                    if (!staProtocol.isStartup() || !staProtocol.isAutoing() || !staProtocol.isLoading()) {
                        if (!staProtocol.isStartup()) {
                            //News.error("{}:站点:{},未启动入库", config.getMark(), staProtocol.getSiteId());
                            continue;
                        }
                        if (!staProtocol.isAutoing()) {
                            //News.error("{}:站点:{},非自动", config.getMark(), staProtocol.getSiteId());
                            continue;
                        }
                        if (!staProtocol.isLoading()) {
                            News.error("{}:站点:{},无物", config.getMark(), staProtocol.getSiteId());
                            continue;
                        }
 
                    }
//                    Job jobByJobNo = jobService.getJobByJobNo(staProtocol.getWorkNo());
//                    if (jobByJobNo == null) {
//                        News.error("{}:站点:{},找不到任务", config.getMark(), staProtocol.getSiteId());
//                        continue;
//                    }
//                    if (jobByJobNo.getJobSts() != ConveyorStateType.OUTBOUND.getStatus()) {
//                        if (jobByJobNo.getJobSts() == ConveyorStateType.STARTUP.getStatus()) {
//                            continue;
//                        }
//                        News.error("{}:站点:{},任务状态不对,{}", config.getMark(), staProtocol.getSiteId(), JSON.toJSON(jobByJobNo));
//                        continue;
//                    }
 
 
                    if (staProtocol.getWorkNo() == 0 && !staProtocol.isStartUpFlag()) {
                        Job job = initJob(getWorkNo(), staProtocol.getSiteId() + "");
                        staProtocol.setWorkNo(job.getJobNo());
                        staProtocol.setStaNo(inSta.getStaNo());
                        staProtocol.setStartUpFlag(false);
                        redis.push(RedisConveyorConstant.CONVEYOR_TASK_FLAG, staProtocol);
                        if (!jobService.insert(job)) {
                            News.info("{},启动入库:{},{}", config.getMark(), staProtocol.getWorkNo(), staProtocol.getStaNo());
                        }
                    }
 
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }
 
    private Job initJob(Integer workNo, String staNo) {
        Job job = new Job();
        job.setStaNo(staNo);
        job.setJobNo(workNo);
        job.setJobSts(ConveyorStateType.STARTUP.getStatus());
        job.setStartTime(new Date());
        return job;
    }
 
    private Integer getWorkNo() {
        return wrkLastnoService.nextWorkNo(WorkNoTypeType.WORK_NO_TYPE.type);
    }
}