自动化立体仓库 - WMS系统
zhangc
2025-03-19 7e0d9bcc6d822f3ca959823e45d574d54366689d
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
package com.zy.asrs.service.impl;
 
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.zy.asrs.entity.ManPakOut;
import com.zy.asrs.mapper.ManPakOutMapper;
import com.zy.asrs.service.ManPakOutService;
import org.springframework.stereotype.Service;
 
import java.util.ArrayList;
import java.util.List;
 
@Service("manPakOutService")
public class ManPakOutServiceImpl extends ServiceImpl<ManPakOutMapper, ManPakOut> implements ManPakOutService {
 
 
    public void updateAllStatus(String orderNo, int status) {
        this.baseMapper.updateAllStatus(orderNo,status);
    }
 
    @Override
    public ManPakOut selectByOrderWithName(String orderNo) {
        return this.baseMapper.selectByOrderWithName(orderNo);
    }
 
    @Override
    public List<ManPakOut> selectByLocType(String locType) {
        return this.selectList(new EntityWrapper<ManPakOut>().like("loc_no",locType+"-")
                .andNew().eq("status",0).or().eq("status",8));
    }
 
    @Override
    public List<ManPakOut> pakoutByLocType(String locType) {
        List<ManPakOut> manPakOuts = this.selectByLocType(locType);
 
        manPakOuts.sort((m1,m2) -> {
            //取库位编码最后6位得到排列层
            String locNo1 = m1.getLocNo().substring(m1.getLocNo().length()-6);
            String locNo2 = m2.getLocNo().substring(m2.getLocNo().length()-6);
 
            int row1 = Integer.parseInt(locNo1.substring(0, 2));
            int row2 = Integer.parseInt(locNo2.substring(0, 2));
            int bay1 = Integer.parseInt(locNo1.substring(2,4));
            int bay2 = Integer.parseInt(locNo2.substring(2,4));
 
            //每两排为一个起点,根据列来由近到远排序
            if((row1 + 1)/2 != (row2+1)/2){
                return row1 - row2;
            }else {
                return bay1 - bay2;
            }
        });
 
        return manPakOuts;
    }
 
    public static void main(String[] args) {
 
        String str = "DT-13C-010203";
        System.out.println(str.substring(str.length()-6));
 
        List<ManPakOut> list = new ArrayList<>();
        list.add(new ManPakOut("DT-C-010403"));
        list.add(new ManPakOut("DT-C-050203"));
        list.add(new ManPakOut("DT-C-040503"));
        list.add(new ManPakOut("DT-C-030203"));
        list.add(new ManPakOut("DT-C-010503"));
        list.add(new ManPakOut("DT-C-020103"));
        list.add(new ManPakOut("DT-C-020203"));
        list.add(new ManPakOut("DT-C-040103"));
 
        //Collections.sort(list);
 
        list.sort((m1,m2) ->{
 
            //取库位编码最后6位得到排列层
            String locNo1 = m1.getLocNo().substring(m1.getLocNo().length()-6);
            String locNo2 = m2.getLocNo().substring(m2.getLocNo().length()-6);
 
            int row1 = Integer.parseInt(locNo1.substring(0, 2));
            int row2 = Integer.parseInt(locNo2.substring(0, 2));
            int bay1 = Integer.parseInt(locNo1.substring(2,4));
            int bay2 = Integer.parseInt(locNo2.substring(2,4));
 
            if((row1 + 1)/2 != (row2+1)/2){
                return row1 - row2;
            }else {
                return bay1 - bay2;
            }
 
        });
 
        list.forEach(manPakOut -> {
            System.out.println(manPakOut);
        });
    }
}