#
18516761980
2022-06-13 96d16ce048ad16ce79ac6cbf97ef559e5c520d4a
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
package com.zy.asrs.task;
 
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.LocDetlService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WorkService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.utils.Utils;
import com.zy.common.properties.SlaveProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
import java.util.List;
 
@Component
@Slf4j
public class CheckDeepScheduler {
    @Value("${wcs-slave.doubleDeep}")
    private boolean confirmDeep;
    /**
     * 空板并库
     */
    @Value("${wcs-slave.locCombD}")
    private boolean locCombD;
    @Autowired
    private LocDetlService locDetlService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private WorkService workService;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private SlaveProperties slaveProperties;
 
    /**
     * 将两个空托盘深库位合并为深浅库位,库位状态都为D
     */
    @Scheduled(cron = "0/60 * * * * ?")
    private void locCombDToD() {
        if (!confirmDeep) return;
        if(!locCombD) return;
        for (int crnNo = 1; crnNo < 3; crnNo++){
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                    .eq("crn_no",crnNo)
                    .last(" and wrk_sts in (2,3,4,11,12)")
            );
            if (wrkMasts.size() > 1) continue;
 
            List<LocMast> locMasts = locMastService.queryNeedMoveDeepLocD(crnNo);
            for (LocMast locMast : locMasts) {
 
                List<LocMast> deepLocMasts = locMastService.queryNeedMoveDeepLocD(crnNo);
                for (LocMast deepLocMast : deepLocMasts) {
                    if(locMast.getLocNo().equals(deepLocMast.getLocNo())){
                        continue;
                    }
                    String ShallLoc = Utils.getShallowLoc(slaveProperties, locMast.getLocNo());
                    LocMast targetLoc = locMastService.selectById(ShallLoc);
 
                    if(!Cools.isEmpty(targetLoc) && targetLoc.getLocSts().equals("O") && deepLocMast.getLocSts().equals("D")) {
                        workService.locMove(deepLocMast.getLocNo(), targetLoc.getLocNo(), 1L);
                        log.info("浅库位移转到深库位:生成库位移转任务成功[浅到深]===>>" + locMast.getLocNo() + "---" + targetLoc.getLocNo());
                        return;
                    }
                }
 
            }
        }
    }
 
    /**
     * 遍历库存中,浅库位状态F,深库位状态O的数据,生成库位移转工作档将浅库位移转到对应深库位中去
     */
    @Scheduled(cron = "0/30 * * * * ?")
    private void checkDeep(){
        if (!confirmDeep) return;
        if(!locCombD) return;
        List<LocMast> locMasts = locMastService.queryShallowLocFMast();
 
        if (null == locMasts) return;
 
        for (LocMast sourceLoc : locMasts){
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                    .eq("crn_no",sourceLoc.getCrnNo())
                    .last(" and wrk_sts in (2,3,4,11,12)")
            );
            if (wrkMasts.size() > 1) continue;
 
            String deep = Utils.getDeepLoc(slaveProperties, sourceLoc.getLocNo());
            LocMast destLoc = locMastService.selectById(deep);
 
            if(!Cools.isEmpty(sourceLoc) && !Cools.isEmpty(destLoc)) {
                //查找源库位是否有转移任务,如果有,不生成库位移转
                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                        .eq("source_loc_no", sourceLoc.getLocNo()));
                if (Cools.isEmpty(wrkMast) && destLoc.getLocSts().equals("O") &&
                        (sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D"))) {
                    workService.locMove(sourceLoc.getLocNo(), deep, 1L);
                }
            }
        }
 
    }
 
}