#
mrzhssss
2022-04-26 d17c089f1d7ff3be848b05161917346e7f664a1d
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
package zy.cloud.wms.manager.service.impl;
 
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import org.springframework.beans.factory.annotation.Autowired;
import zy.cloud.wms.common.model.PickOutDto;
import zy.cloud.wms.manager.entity.*;
import zy.cloud.wms.manager.mapper.WaveMapper;
import zy.cloud.wms.manager.service.*;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
 
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
 
@Service("waveService")
public class WaveServiceImpl extends ServiceImpl<WaveMapper, Wave> implements WaveService {
    @Autowired
    private WaveDetlService waveDetlService;
    @Autowired
    private OrderService orderService;
    @Autowired
    private WaveService waveService;
    @Autowired
    private PickoutService pickoutService;
    @Autowired
    private PickoutDetlService pickoutDetlService;
    @Autowired
    private MatService matService;
 
    /**
     * 通过波次生成拣货单
     * @param
     * @param userId
     * @param hostId
     */
    @Override
    public R createOut(List<PickOutDto> pickOutDtosk, Long userId, Long hostId) {
        HashSet<String> orderIds = new HashSet<>();
        /**
         * 控管
         */
        if (Cools.isEmpty(pickOutDtosk)) {
            throw new CoolException("数据传输错误,请联系管理员");
        }
        Wave wave = waveService.selectOne(new EntityWrapper<Wave>()
                .eq("id", pickOutDtosk.get(0).getWaveId()));
        List<WaveDetl> waveDetls = waveDetlService.selectList(new EntityWrapper<WaveDetl>()
                .eq("wave_id", wave.getId()));
 
        /**
         * 生成拣货单
         */
        Pickout pickout = new Pickout();
        pickout.setHostId(hostId);
        pickout.setUserId(userId);
        pickout.setWrkNo("PO-"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
        pickout.setWrkSts(1L);
        pickout.setCreateBy(userId.intValue());
        pickout.setUpdateBy(userId.intValue());
        pickout.setOrderQty(wave.getOrdersQty());
        pickout.setWaveNo(wave.getWaveNo());
        pickoutService.insert(pickout);
        for (PickOutDto pickOutDto : pickOutDtosk) {
            Mat mat = matService.selectByMatnr(hostId, pickOutDto.getMatnr());
            if (Cools.isEmpty(mat)) {
                pickoutService.delete(new EntityWrapper<Pickout>()
                        .eq("id",pickout.getId()));
                throw new CoolException("查询不到该物料明细");
 
            }
            PickoutDetl pickoutDetl = new PickoutDetl();
            pickoutDetl.setHeadId(pickout.getId());
            if (!Cools.isEmpty(pickOutDto.getNodeId())) {
 
                pickoutDetl.setNodeId(pickOutDto.getNodeId().longValue());
            }
 
            pickoutDetl.setNodeName(pickOutDto.getLocNo());
            pickoutDetl.setAnfme(pickOutDto.getReduce().doubleValue());
            pickoutDetl.setMatnr(pickOutDto.getMatnr());
            pickoutDetl.setMaktx(mat.getMaktx());
            pickoutDetl.setName(mat.getName());
            pickoutDetl.setSpecs(mat.getSpecs());
            pickoutDetl.setModel(mat.getModel());
            pickoutDetl.setUnit(mat.getUnit());
            pickoutDetl.setPrice(mat.getPrice());
            pickoutDetl.setWeight(mat.getWeight());
            pickoutDetl.setStatus(1);
            pickoutDetl.setCreateBy(userId.intValue());
            pickoutDetl.setUpdateBy(userId.intValue());
            pickoutDetl.setWrkNo(pickout.getWrkNo());
            pickoutDetlService.insert(pickoutDetl);
        }
 
        /**
         * 更改出库单状态,从"生成波次"到"波次拣货中"
         */
        for (WaveDetl waveDetl : waveDetls) {
            String orderNos = waveDetl.getOrderNos();
            String[] split = orderNos.split(",");
            for (String s : split) {
                orderIds.add(s);
            }
        }
        for (String s : new ArrayList<String>(orderIds)) {
            orderService.changeSettleTo12(s);
        }
        /**
         * 更改波次单状态,从"待处理"到"处理中"
         */
        wave.setStatus((short) 1);
        waveService.update(wave,new EntityWrapper<Wave>()
                .eq("id",wave.getId()));
 
 
        return R.ok();
    }
 
    @Override
    public String getCurrNum(String waveNo) {
        return this.baseMapper.getCurrNum(waveNo);
    }
}