王佳豪
2021-06-19 a856ba46d206d6d8d317b9e79bc1c421d49bf02d
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
package com.zy.asrs.controller;
 
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.annotations.ManagerAuth;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocNormal;
import com.zy.asrs.entity.param.LocNormalStockOutParam;
import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.service.LocNormalService;
import com.zy.asrs.service.OutStockService;
import com.zy.asrs.service.WorkService;
import com.zy.common.service.erp.ErpService;
import com.zy.common.service.erp.entity.OutStockBillEntry;
import com.zy.common.web.BaseController;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.implementation.bytecode.Throw;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.Date;
import java.util.List;
import java.util.Map;
 
@Slf4j
@RestController
public class OutStockController extends BaseController {
 
    @Autowired
    private OutStockService outStockService;
    @Autowired
    private WorkService workService;
    @Autowired
    private LocNormalService locNormalService;
    @Autowired
    private ErpService erpService;
 
    /**
     *
     * @param curr
     * @param limit
     * @param param
     * @return
     */
    @RequestMapping(value = "/outStock/query/list")
    @ManagerAuth
    public R outStockQueryList(@RequestParam(defaultValue = "1")Integer curr,
                          @RequestParam(defaultValue = "10")Integer limit,
                          @RequestParam Map<String, Object> param){
        return R.ok(outStockService.queryOutStock(toPage(curr, limit, param, OutStockBillEntry.class)));
    }
 
    /**
     * 检索符合通知单的立库库存物料
     * @param fbillNo
     * @return
     */
    @RequestMapping(value = "/outStock/query/locList")
    @ManagerAuth
    public R queryMatWithLoc(String fbillNo) {
        List<LocDetl> list = outStockService.queryMatWithLoc(fbillNo);
        return R.ok(list);
    }
 
    @RequestMapping(value = "/plate/outStock/start")
    @ManagerAuth(memo = "出库作业")
    public R fullStoreTakeStart(@RequestBody StockOutParam param) {
        outStockService.startupFullTakeStore(param, getUserId());
        return R.ok("出库启动成功");
    }
 
    /**
     * 检索符合通知单的平仓库存物料
     * @param fbillNo
     * @return
     */
    @RequestMapping(value = "/outStock/query/locNormalList")
    @ManagerAuth
    public R queryMatWithLocNormal(String fbillNo) {
        List<LocNormal> list = locNormalService.queryLocNorlMatnr(fbillNo);
        return R.ok(list);
    }
 
 
    /**
     * 平仓对接erp出库
     * @param
     * @return
     */
    @RequestMapping(value = "/outStock/locNormal")
    @ManagerAuth
    public R outStockLocNormal(@RequestBody LocNormalStockOutParam param) {
        Long modiUser = getUserId();
        Date modiTime = new Date();
        for (LocNormal locNormals:param.getList()) {
            // erp中间表更新数据
            Integer FInterI = outStockService.queryOutStockFInterID(param.getSupplier()); // 获取出库单主表主键
            if (!erpService.incrementCPakOut(FInterI, locNormals.getMatnr(), locNormals.getAnfme().doubleValue(), param.getSupplier())) {
                log.info("更新ERP成品出库数据[matnr={0}]失败", locNormals.getMatnr(), param.getSupplier());
            }
            LocNormal locNormal = locNormalService.selectOne(new EntityWrapper<LocNormal>().eq("id", locNormals.getId()));
            if (!Cools.isEmpty(locNormal)) {
                if (locNormal.getAnfme().compareTo(locNormals.getAnfme()) == 1) {
                    LocNormal logLocNormal = new LocNormal();
                    logLocNormal.setAnfme(locNormals.getAnfme());
                    logLocNormal.setMatnr(locNormal.getMatnr());
                    logLocNormal.setMaktx(locNormal.getMaktx());
                    logLocNormal.setLgnum(locNormal.getLgnum());
                    logLocNormal.setType(locNormal.getType());
                    logLocNormal.setMnemonic(locNormal.getMnemonic());
                    logLocNormal.setSupplier(locNormal.getSupplier());
                    logLocNormal.setWarehouse(locNormal.getWarehouse());
                    logLocNormal.setWarehouseName(locNormal.getWarehouseName());
                    logLocNormal.setBrand(locNormal.getBrand());
                    logLocNormal.setAltme(locNormal.getAltme());
                    logLocNormal.setBname(locNormal.getBname());
                    logLocNormal.setMemo(locNormal.getMemo());
                    logLocNormal.setState("2");
                    // 生成出库记录
                    locNormalService.insert(logLocNormal);
                    // 更新原先平仓记录
                    locNormalService.updateLocNormal(locNormal.getMatnr(), locNormal.getAnfme().subtract(locNormals.getAnfme()), modiUser, modiTime, locNormal.getId());
                } else {
                    // 把对应物料平仓库存出库
                    locNormalService.outLocNormal(locNormals.getMatnr(), modiUser, modiTime, locNormals.getId());
                }
            }
 
        }
        return R.ok("平仓出库成功");
    }
}