#
luxiaotao1123
2021-03-05 644d37c99c6a4e910470f7fa4596c15d1b3e231c
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 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 org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import zy.cloud.wms.common.model.OrderStoDto;
import zy.cloud.wms.common.service.MainService;
import zy.cloud.wms.common.utils.VersionUtils;
import zy.cloud.wms.manager.entity.*;
import zy.cloud.wms.manager.entity.param.StockConfirmParam;
import zy.cloud.wms.manager.entity.param.StockInParam;
import zy.cloud.wms.manager.entity.param.StockOutParam;
import zy.cloud.wms.manager.entity.result.StoPrintVo;
import zy.cloud.wms.manager.service.*;
 
import java.util.Date;
import java.util.List;
 
/**
 * Created by vincent on 2021/2/25
 */
@Service("workService")
public class WorkServiceImpl implements WorkService {
 
    @Autowired
    private MainService mainService;
    @Autowired
    private NodeService nodeService;
    @Autowired
    private CombService combService;
    @Autowired
    private LocDetlService locDetlService;
    @Autowired
    private CustOrderService custOrderService;
    @Autowired
    private PakoutService pakoutService;
 
    @Override
    @Transactional
    public R stockIn(StockInParam param, Long userId) {
        Node node = nodeService.selectByUuid(param.getNodeId());
        if (node == null) {
            return R.error("货位不存在");
        }
        List<Comb> combs = combService.selectList(new EntityWrapper<Comb>().eq("zpallet", param.getZpallet()).eq("io_status", 1));
        if (Cools.isEmpty(combs)) {
            return R.error("物料不存在");
        }
        Date now = new Date();
        for (Comb comb : combs) {
            // 改变组托档状态
            comb.setIoStatus(4);
            comb.setUpdateBy(userId);
            comb.setUpdateTime(now);
            boolean update = combService.update(comb, new EntityWrapper<Comb>().eq("zpallet", param.getZpallet()).eq("matnr", comb.getMatnr()));
            if (!update) {
                throw new CoolException("修改托盘资料档失败");
            }
            // 更新货位库存明细
            LocDetl locDetl = new LocDetl();
            locDetl.setLocNo(node.getName());
            locDetl.setNodeId(node.getId());
            locDetl.setZpallet(param.getZpallet());
            locDetl.setAnfme(comb.getAnfme());
            VersionUtils.setLocDetl(locDetl, comb);
            locDetl.setStatus(1);
            locDetl.setCreateBy(userId);
            locDetl.setCreateTime(now);
            locDetl.setUpdateBy(userId);
            locDetl.setUpdateTime(now);
            boolean insert = locDetlService.insert(locDetl);
            if (!insert) {
                throw new CoolException("新增库存明细档失败");
            }
        }
        return R.ok();
    }
 
    @Override
    public R stockOutCheck(String number, Long userId) {
        return null;
    }
 
    @Override
    public R stockOutPrint(StockOutParam param, Long userId) {
        List<Pakout> pakouts = pakoutService.selectList(new EntityWrapper<Pakout>().eq("doc_num", param.getNumber()));
        Double total = 0.0D;
        String custName = "";
        for (Pakout pakout : pakouts) {
            total = pakout.getAnfme() + total;
            custName = pakout.getCustName();
        }
        StoPrintVo vo = new StoPrintVo();
        vo.setDocNum(param.getNumber());
        vo.setList(pakouts);
        vo.setTotal(total);
        vo.setCustName("浙江中扬立库技术有限公司");
        vo.setWorkerName("陆晓涛");
        return R.ok().add(vo);
    }
 
    @Override
    public R stockOut(StockOutParam param, Long userId) {
        List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>()
                .eq("number", param.getNumber())
                .eq("status", 1)
        );
        OrderStoDto dto = new OrderStoDto();
        dto.setNumber(param.getNumber());
        dto.setCustOrders(custOrders);
        // 开始整理出库数据
        mainService.stockOutProcess(dto);
        return R.ok();
    }
 
    @Override
    @Transactional
    public R stockOutComplete(StockConfirmParam param, Long userId) {
        // 修改出库单状态
        if (!pakoutService.stockOutComplete(param.getWrkNo(), param.getNumber(), userId)) {
            return R.error("保存数据失败");
        }
        // todo:修改库存数量
 
        return R.ok();
    }
 
}