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; } }