自动化立体仓库 - WMS系统
18516761980
2022-06-16 8b52cb78c70877c9d8689bfcdb49461995cf939a
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
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.task.core.ReturnT;
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.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
 
@Component
@Slf4j
public class CheckDeepScheduler {
 
    @Value("${wcs-slave.doubleDeep}")
    private boolean confirmDeep;
    @Value("${wcs-slave.doubleLocs}")
    private String deepLocs;
    @Value("${wcs-slave.shallowLocs}")
    private String shallowLocs;
    @Autowired
    private LocDetlService locDetlService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private WorkService workService;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private SlaveProperties slaveProperties;
 
    /**
     * 遍历库存中,浅库位状态F/D,深库位状态O的数据,生成库位移转工作档将浅库位移转到对应深库位中去
     */
    @Scheduled(cron = "0/30 * * * * ?")
    private void locMoveToDeep(){
        if (!confirmDeep) return;
        List<LocMast> locMasts = locMastService.queryShallowLocFMast();
 
        if (null == locMasts) return;
 
        for (LocMast sourceLoc : locMasts){
            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);
                }
            }
        }
 
    }
 
    /**
     *遍历库存中,深浅库位状态都为F,物料不相同,或者浅库位入库日期比深库位早的库位,做库位移转移到新的深库位中去
     * 0点到5点之间执行,每次只执行一笔
     */
//    @Scheduled(cron = "0/90 * * * * ?")
    private void LocMoveToNewLoc() throws ParseException {
//        if (!confirmDeep) return;
//
//        for (int crnNo = 1; crnNo < 4; 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() > 0) continue;
//            List<LocMast> locMasts = locMastService.queryNeedMoveShallLoc(crnNo);
//            for (LocMast locMast : locMasts) {
//                LocMast targetLoc = locMastService.queryEmptyDeepLoc(crnNo);
//                if(!Cools.isEmpty(targetLoc)) {
//                    workService.locMove(locMast.getLocNo(), targetLoc.getLocNo(), 1L);
//                }
//                break;
//            }
//        }
 
    }
 
 
    /**
     * 将深库位转为对应浅库位
     * @param deep
     * @return
     */
    private String convertShallow(String deep){
        String shallLoc = "";
        Integer mastInt = Integer.parseInt(deep.substring(0, 2));
        if (mastInt % 2 == 0){
            mastInt -= 1;
        }else if (mastInt % 2 == 1){
            mastInt += 1;
        }
        if (mastInt <10){
            shallLoc = "0" + mastInt+ deep.substring(2,7);
        }else {
            shallLoc = mastInt+ deep.substring(2,7);
        }
        return shallLoc;
    }
 
}