自动化立体仓库 - WMS系统
qw
zc
7 天以前 55773cf8183b9ddb45a4321de3468d727cea88fd
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
package com.zy.asrs.task.handler;
 
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.service.LocDetlService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WorkService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.common.model.StartupDto;
import com.zy.common.service.CommonService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.List;
import java.util.Map;
 
 
/**
 * Created by vincent on 2023/7/7
 */
@Slf4j
@Service
public class AutoLocMoveHandler extends AbstractHandler<String> {
    @Autowired
    private CommonService commonService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private LocDetlService locDetlService;
    @Autowired
    private WorkService workService;
 
    @Transactional(isolation = Isolation.REPEATABLE_READ)
    public ReturnT<String> start(Integer crnNo, Integer ioType) {
        try {
            //11  穿梭移单边
            if (ioType==11){
                for (int bay = 1;bay < 27;bay++){
                    for (int lev = 1 ; lev <6 ; lev++){
                        List<LocMast> locMasts = locMastService.selectLocMastShuttleMoveUnilateral(bay,lev,crnNo);
                        if (!Cools.isEmpty(locMasts) && locMasts.size()<4){
                            for (LocMast locMast:locMasts){
                                LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
//                                StartupDto startupDto = commonService.getLocNo(crnNo == 1 ? 6 : 5, ioType, crnNo == 1 ? 917 : 918, locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), null);
                                StartupDto startupDto = commonService.getLocNo( ioType, crnNo == 1 ? 917 : 918, locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), null,false);
                                workService.locMove(locMast.getLocNo(), startupDto.getLocNo(),9527L);
                            }
                            return SUCCESS;
                        }
                    }
                }
            }else {//11  单边移穿梭
                List<Map<String, Object>> list = locDetlService.selectLocDetlUnilateralMoveShuttleMap(crnNo);//111   单边移穿梭
                for (Map<String, Object> map : list) {
                    String matnr = map.getOrDefault("matnr","").toString();//物料号
                    String batch = map.getOrDefault("batch","").toString();//批号
                    String grade = map.getOrDefault("brand","").toString();//等级
                    int count = Integer.parseInt(map.get("count").toString());//单边库数量
                    if (count < 4) {
                        continue;
                    }
 
                    List<LocDetl> locDetlList = locDetlService.selectLocDetlUnilateralMoveShuttle(matnr, batch, grade, crnNo);
                    for (LocDetl locDetl : locDetlList) {
//                        StartupDto startupDto = commonService.getLocNo(crnNo == 1 ? 4 : 3, ioType, crnNo == 1 ? 901 : 932, locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(), null);
                        StartupDto startupDto = commonService.getLocNo( ioType, crnNo == 1 ? 901 : 932, locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(), null,false);
                        workService.locMove(locDetl.getLocNo(), startupDto.getLocNo(), 9527L);
                    }
                }
                return SUCCESS;
            }
        }catch (Exception e){
            log.error("自动移库出错,堆垛机号{},工作类型{}",crnNo,ioType);
        }
        return SUCCESS;
    }
 
}