cy
2023-10-26 5d7ab4ea0ef70f7930cc7b3a4209ded1b1c83115
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
package com.consum.base.service;
 
import com.consum.model.po.LWhFormTransfer;
import com.iplatform.model.po.S_user_core;
import com.walker.infrastructure.utils.DateUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
 
/**
 * @ClassName LWhFormTransferCoreService
 * @Author cy
 * @Date 2023/10/26
 * @Description
 * @Version 1.0
 **/
@Service
@Slf4j
public class LWhFormTransferCoreService {
    @Resource
    private LWhProcureModelService lWhProcureModelService;
    @Resource
    private LWhFormTransferService lWhFormTransferService;
    @Resource
    private LWarehouseFlowCoreService lWarehouseFlowService;
    @Resource
    private LWhFormOutputCoreService lWhFormOutputCoreService;
 
 
    /**
     * 执行调拨出库操作
     * 1. 通过调拨单【WH_FORM_TRANSFER】 确定调拨单物品【L_WH_PROCURE_MODEL】
     * 2. 校验库存
     * 3. 更新进出库流水总表[L_WAREHOUSE_FLOW]、各规格物品的进出库【L_WH_GOODS_RECORD】、进出库流水明细[L_WH_GOODS_RECORD_DETAILS]、
     * 库存物品详情(L_WH_GOODS)
     * 4. 更新调拨单【WH_FORM_TRANSFER】为待接收,更新调拨单物品【WH_FORM_TRANSFER_MODEL】出库流水ID
     *
     * @param whFormTransferId 调拨单id
     */
    public void doTransferOutPut(Long whFormTransferId, S_user_core currentUser) {
        LWhFormTransfer lWhFormTransfer = new LWhFormTransfer(whFormTransferId);
        lWhFormTransfer = lWhFormTransferService.get(lWhFormTransfer);
        if (lWhFormTransfer == null || lWhFormTransfer.getStates() != 0) {
            log.error("调拨失败!请检查调拨单状态");
            return;
        }
 
        Long userId = currentUser.getId();
        String nickName = currentUser.getNick_name();
        long dealTime = DateUtils.getDateTimeNumber(System.currentTimeMillis());
 
        // 出库单ID
        Long outWarehouseFormId = null;
        try {
            // 根据调拨单 生成 出库单
            outWarehouseFormId = lWhFormOutputCoreService.createOutFormByTransId(whFormTransferId, currentUser, dealTime);
        } catch (Exception e) {
            log.error(e.getMessage());
            return;
        }
        // 出库单 出库,返回 出库单流水Id
        Long outFormByTransId = lWhFormOutputCoreService.outFormByTransId(whFormTransferId, currentUser, dealTime);
 
        // 更新调拨单
        lWhFormTransfer = new LWhFormTransfer(whFormTransferId);
        lWhFormTransfer.setOutWarehouseFormId(outWarehouseFormId);
        lWhFormTransfer.setStates(1);
        lWhFormTransfer.setOutOperatorId(userId);
        lWhFormTransfer.setOutOperatorName(nickName);
        lWhFormTransfer.setOutputTime(dealTime);
        lWhFormTransferService.update(lWhFormTransfer);
 
        log.info("调拨单:{} 出库完成", whFormTransferId);
        return;
 
    }
}