自动化立体仓库 - WMS系统
zwl
3 天以前 73f677ac03ebcf0f9d2e865dd60d3e4a6c2bc2c9
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
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.entity.result.FindLocNoAttributeVo;
import com.zy.asrs.mapper.WrkMastLogMapper;
import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.service.InboundCameraCaptureService;
import com.zy.asrs.service.WrkMastService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
 
@Slf4j
@Service("wrkMastService")
public class WrkMastServiceImpl extends ServiceImpl<WrkMastMapper, WrkMast> implements WrkMastService {
 
    @Autowired
    private WrkMastLogMapper wrkMastLogMapper;
 
    @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 List<WrkMast> selectPendingInboundCameraCapture() {
        return this.baseMapper.selectPendingInboundCameraCapture(
                InboundCameraCaptureService.CAPTURE_PENDING,
                InboundCameraCaptureService.CAPTURE_RUNNING);
    }
 
    @Override
    public boolean updateMemoIfCurrent(Integer wrkNo, String current, String next) {
        return this.baseMapper.updateMemoIfCurrent(wrkNo, current, next) > 0;
    }
 
    @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 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 int selectWrkMastBareBoardStaNo(Integer ioType,Integer staNo) {
        return this.baseMapper.selectWrkMastBareBoardStaNo(ioType,staNo);
    }
 
    @Override
    public List<WrkMast> selectWrkMastWrkDetl(Integer ioType, FindLocNoAttributeVo findLocNoAttributeVo, Integer crnNo) {
        return this.baseMapper.selectWrkMastWrkDetl(ioType,findLocNoAttributeVo.getMatnr(),findLocNoAttributeVo.getBatch(),findLocNoAttributeVo.getBrand()
                ,findLocNoAttributeVo.getStandby1(),findLocNoAttributeVo.getStandby2(),findLocNoAttributeVo.getStandby3()
                ,findLocNoAttributeVo.getBoxType1(),findLocNoAttributeVo.getBoxType2(),findLocNoAttributeVo.getBoxType3()
                ,crnNo);
    }
 
    @Override
    public WrkMast selectWrkMast(Integer workNo, String barcode) {
        return this.baseMapper.selectWrkMast(workNo, barcode);
    }
 
    @Override
    public int outboundSeqMaxContiguousPlt(String userNo, String batchSeq) {
        List<Integer> fromMast = baseMapper.listOutboundPltTypesByUserNo(userNo, batchSeq);
        List<Integer> fromLog = wrkMastLogMapper.listOutboundPltTypesByUserNo(userNo, batchSeq);
        Set<Integer> filled = new HashSet<>();
        addPositivePlt(fromMast, filled);
        addPositivePlt(fromLog, filled);
        int h = 0;
        while (filled.contains(h + 1)) {
            h++;
        }
        return h;
    }
 
    @Override
    public Date firstInboundCreateTimeByTrainNo(String trainNo) {
        if (Cools.isEmpty(trainNo)) {
            return null;
        }
        Date fromMast = baseMapper.selectFirstInboundCreateTimeByTrainNo(trainNo);
        Date fromLog = wrkMastLogMapper.selectFirstInboundCreateTimeByTrainNo(trainNo);
        if (fromMast == null) {
            return fromLog;
        }
        if (fromLog == null) {
            return fromMast;
        }
        return fromMast.before(fromLog) ? fromMast : fromLog;
    }
 
    @Override
    public int finishedInboundPalletCountByTrainNo(String trainNo) {
        if (Cools.isEmpty(trainNo)) {
            return 0;
        }
        Set<Integer> wrkNos = new HashSet<>();
        addPositiveWrkNos(baseMapper.listFinishedInboundWrkNosByTrainNo(trainNo), wrkNos);
        addPositiveWrkNos(wrkMastLogMapper.listFinishedInboundWrkNosByTrainNo(trainNo), wrkNos);
        return wrkNos.size();
    }
 
    private static void addPositivePlt(List<Integer> list, Set<Integer> target) {
        if (list == null) {
            return;
        }
        for (Integer p : list) {
            if (p != null && p > 0) {
                target.add(p);
            }
        }
    }
 
    private static void addPositiveWrkNos(List<Integer> list, Set<Integer> target) {
        if (list == null) {
            return;
        }
        for (Integer wrkNo : list) {
            if (wrkNo != null && wrkNo > 0) {
                target.add(wrkNo);
            }
        }
    }
}