自动化立体仓库 - WMS系统
zhou zhou
14 小时以前 5315fe106471728406cbd521576c3fc5d9d28791
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
package com.zy.asrs.service.impl;
 
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.CheckTaskListParam;
import com.zy.asrs.mapper.CheckOrderMapper;
import com.zy.asrs.service.*;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.zy.common.model.LocDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
 
@Service("checkOrderService")
public class CheckOrderServiceImpl extends ServiceImpl<CheckOrderMapper, CheckOrder> implements CheckOrderService {
 
    @Autowired
    private CheckOrderDetlService checkOrderDetlService;
 
    @Autowired
    private LocMastService locMastService;
 
    @Autowired
    private LocDetlService locDetlService;
 
    @Autowired
    private StaDescService staDescService;
 
    @Autowired
    private WrkMastService wrkMastService;
 
    @Autowired
    private WrkDetlService wrkDetlService;
 
    @Override
    public void remove(Long orderId) {
        if (this.baseMapper.deleteById(orderId) < 1 ) {
            throw new CoolException("删除单据失败");
        }
        checkOrderDetlService.delete(new EntityWrapper<CheckOrderDetl>().eq("order_id", orderId));
    }
 
    @Override
    public List<LocDto> preview(Long orderId) {
        CheckOrder checkOrder = this.baseMapper.selectById(orderId);
        if (Cools.isEmpty(checkOrder)) {
            throw new CoolException("数据错误");
        }
 
        List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", orderId));
        if (Cools.isEmpty(checkOrderDetls)) {
            throw new CoolException("获取明细数据错误");
        }
        List<LocDto> locDtos = new ArrayList<>();
        for (CheckOrderDetl checkOrderDetl : checkOrderDetls) {
            LocDto locDto = new LocDto(checkOrderDetl.getLocNo(), checkOrderDetl.getMatnr(), checkOrderDetl.getMaktx(), checkOrderDetl.getBatch(), checkOrderDetl.getOrderNo(),
                    checkOrderDetl.getAnfme().doubleValue());
            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", checkOrderDetl.getLocNo()));
            LocDetl locDetl = locDetlService.selectById(checkOrderDetl.getLocDetlId());
            locDto.setFrozen(locDetl.getFrozen());
            locDto.setFrozenLoc(locMast.getFrozen());
            List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), 107);
 
 
            locDto.setStaNos(staNos);
            locDtos.add(locDto);
        }
 
        return locDtos;
 
    }
 
    @Override
    public List<CheckOrderDetl> getTaskList(String barcode) {
        List<CheckOrderDetl> checkOrderDetls = new ArrayList<>();
 
        WrkMast wrkMast = wrkMastService.selectByBarcode(barcode);
        if (Cools.isEmpty(wrkMast)) {
            throw new CoolException("未找到任务");
        }
 
        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
        if (Cools.isEmpty(wrkDetls)) {
            throw new CoolException("未找到任务明细");
        }
 
        for (WrkDetl wrkDetl : wrkDetls) {
            if(Cools.isEmpty(wrkDetl.getOrderNo())){
                throw new CoolException("明细数据有误,无订单号数据");
            }
            CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectOne(new EntityWrapper<CheckOrderDetl>()
                    .eq("loc_no", wrkMast.getSourceLocNo())
                    .eq("matnr", wrkDetl.getMatnr())
                    .eq("batch", wrkDetl.getBatch())
                    .eq("order_no", wrkDetl.getOrderNo()));
            if(Cools.isEmpty(checkOrderDetl)){
                throw new CoolException("明细数据有误,未找到盘点单数据");
            }
            if (checkOrderDetl.getStatus().equals(2)){
                checkOrderDetls.add(checkOrderDetl);
            }
 
        }
        if (Cools.isEmpty(checkOrderDetls)) {
            throw new CoolException("该容器已完成盘点");
        }
 
        return checkOrderDetls;
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R pdaComplete(CheckTaskListParam checkTaskListParam) {
 
        WrkMast wrkMast = wrkMastService.selectByBarcode(checkTaskListParam.getBarcode());
        if (Cools.isEmpty(wrkMast)) {
            throw new CoolException("未找到任务");
        }
 
        for (CheckOrderDetl checkOrderDetl: checkTaskListParam.getCheckOrderDetlList()){
            checkOrderDetl.setStatus(3);
            if (!checkOrderDetlService.updateById(checkOrderDetl)){
                throw new CoolException("更新盘点状态失败");
            }
        }
        CheckOrder checkOrder = this.selectOne(new EntityWrapper<CheckOrder>().eq("order_no", checkTaskListParam.getCheckOrderDetlList().get(0).getOrderNo()));
        List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", checkOrder.getId()));
        boolean is = checkOrderDetls.stream().allMatch(item -> item.getStatus().equals(3));
        if (is){
            checkOrder.setSettle(4L);
            if (!this.updateById(checkOrder)){
                throw new CoolException("更新盘点主单状态失败");
            }
 
        }
 
 
        return R.ok();
    }
}