自动化立体仓库 - WMS系统
#
18516761980
2023-03-05 0fd2bfc2078b0ea41638857213d180c35dd93432
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
package com.zy.asrs.service.impl;
 
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.core.common.Cools;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.utils.Utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
 
import java.util.List;
 
@Slf4j
@Service("wrkMastService")
public class WrkMastServiceImpl extends ServiceImpl<WrkMastMapper, WrkMast> implements WrkMastService {
 
    @Override
    public int getWorkingMast(Integer devpNo) {
        return selectCount(new EntityWrapper<WrkMast>().eq("source_sta_no", devpNo).in("wrk_sts", 1, 6));
    }
 
    @Override
    public List<WrkMast> selectToBeCompleteData() {
        return this.baseMapper.selectToBeCompleteData();
    }
 
    @Override
    public List<WrkMast> selectToBeHistoryData() {
        return this.baseMapper.selectToBeHistoryData();
    }
 
    @Override
    public WrkMast selectByBarcode(String barcode) {
        List<WrkMast> wrkMasts = this.selectList(new EntityWrapper<WrkMast>().eq("barcode", barcode));
        if (Cools.isEmpty(wrkMasts)) {
            return null;
        }
        return wrkMasts.get(0);
    }
 
    @Override
    public synchronized Double getIoPri(Integer ioType, String locNo) {
        Double defaultIoPri = null;
        if (Cools.isEmpty(ioType, locNo)) {
            return 100.0D;
        }
        if (ioType != 11) {
            // 入库
            if (ioType < 100) {
                List<String> groupOuterLoc = Utils.getGroupOuterLoc(locNo);
                if (!Cools.isEmpty(groupOuterLoc)) {
                    for (String outerLoc : groupOuterLoc) {
                        WrkMast wrkMast = this.baseMapper.selectByLocNoOfPakin(outerLoc);
                        if (wrkMast != null) {
                            defaultIoPri = wrkMast.getIoPri() - 2;
//                            defaultIoPri = defaultIoPri == null ? wrkMast.getIoPri() - 2 : defaultIoPri - 2;
                        }
                    }
                }
                List<String> groupInsideLoc = Utils.getGroupInsideLoc(locNo);
                if (!Cools.isEmpty(groupInsideLoc)) {
                    for (String insideLoc : groupInsideLoc) {
                        WrkMast wrkMast = this.baseMapper.selectByLocNoOfPakin(insideLoc);
                        if (wrkMast != null) {
                            defaultIoPri = wrkMast.getIoPri() + 2;
//                            defaultIoPri = defaultIoPri == null ? wrkMast.getIoPri() + 2 : defaultIoPri + 2;
                        }
                    }
                }
            // 出库
            } else {
                List<String> groupOuterLoc = Utils.getGroupOuterLoc(locNo);
                if (!Cools.isEmpty(groupOuterLoc)) {
                    for (String outerLoc : groupOuterLoc) {
                        WrkMast wrkMast = this.baseMapper.selectBySourceLocNoOfPakout(outerLoc);
                        if (wrkMast != null) {
                            defaultIoPri = wrkMast.getIoPri() - 2;
//                            defaultIoPri = defaultIoPri == null ? wrkMast.getIoPri() - 2 : defaultIoPri - 2;
                        }
                    }
                }
                List<String> groupInsideLoc = Utils.getGroupInsideLoc(locNo);
                if (!Cools.isEmpty(groupInsideLoc)) {
                    for (String insideLoc : groupInsideLoc) {
                        WrkMast wrkMast = this.baseMapper.selectBySourceLocNoOfPakout(insideLoc);
                        if (wrkMast != null) {
                            defaultIoPri = wrkMast.getIoPri() + 2;
//                            defaultIoPri = defaultIoPri == null ? wrkMast.getIoPri() + 2 : defaultIoPri + 2;
                        }
                    }
                }
            }
        // 移库
        } else {
//            @Deprecated
        }
        int row = getRow(locNo);
        if (row<=4){
            return defaultIoPri == null ? 300.0D+row*2 : defaultIoPri+row*2;
        }else {
            return defaultIoPri == null ? 300.0D+row-2 : defaultIoPri-row*2;
        }
    }
    /**
     * 通过库位号获取 排
     */
    public static int getRow(String locNo) {
        if (!Cools.isEmpty(locNo)) {
            return Integer.parseInt(locNo.substring(0, 2));
        }
        throw new RuntimeException("库位解析异常");
    }
 
    @Override
    public int getStoreCount(Integer crnNo) {
        return selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnNo)
                .last(" and (wrk_sts in (1,2) or (wrk_sts=3 and wrk_no in (select wrk_no from asr_bas_devp)))"));
    }
 
    @Override
    public Boolean setSteEmpty(Integer wrkNo) {
        return this.baseMapper.setSteEmpty(wrkNo) > 0;
    }
 
    @Override
    public WrkMast selectOfPick(Integer wrkNo, Integer ioType) {
        return this.baseMapper.selectOfPick(wrkNo, ioType);
    }
 
}