package com.consum.base.service.core; import com.consum.base.service.LWhFormProcureService; import com.consum.base.service.LWhProcureModelService; import java.util.List; import java.util.stream.Collectors; import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.consum.base.core.WhBusinessEnum; import com.consum.model.po.LWarehouseFlow; import com.consum.model.po.LWhFormProcure; import com.consum.model.po.LWhProcureModel; import com.iplatform.model.po.S_user_core; import com.walker.infrastructure.utils.DateUtils; import com.walker.infrastructure.utils.NumberGenerator; import lombok.extern.slf4j.Slf4j; /** * @ClassName LWhFormProcureCoreService * @Date 2023/10/26 * @Description * @Version 1.0 **/ @Service @Slf4j @Transactional(propagation = Propagation.REQUIRED) public class LWhFormProcureCoreService { @Resource private LWhProcureModelService lWhProcureModelService; @Resource private LWhFormProcureService lWhFormProcureServiceImpl; @Resource private LWhWarningCoreService lWhWarningCoreService; @Resource private LWarehouseFlowCoreService lWarehouseFlowService; /** * 执行采购入库 第一步:通过采购单ID查询采购单型号【L_WH_PROCURE_MODEL】得到商品型号以及数量 第二步:记录进出库流水:L_WAREHOUSE_FLOW */ @Transactional(rollbackFor = Exception.class) public String doProcure(Long whFormProcureId, S_user_core currentUser) { if (whFormProcureId == null) { return "采购单id为空"; } // 采购单信息 LWhFormProcure whFormProcure = new LWhFormProcure(whFormProcureId); LWhFormProcure lWhFormProcure = lWhFormProcureServiceImpl.get(whFormProcure); if (lWhFormProcure == null || lWhFormProcure.getStates() != 1) { log.error("入库失败!请检查入库单状态"); return "入库失败!请检查入库单状态"; } Long userId = currentUser.getId(); String nickName = currentUser.getNick_name(); long dealTime = DateUtils.getDateTimeNumber(System.currentTimeMillis()); List goodsModelNum = lWhProcureModelService.getModelByForm1(WhBusinessEnum.CAIGOU, whFormProcureId); // 流水记录总表ID Long warehouseId = lWhFormProcure.getWarehouseId(); long lWarehouseFlowId = NumberGenerator.getLongSequenceNumberNano(); LWarehouseFlow warehouseFlow = new LWarehouseFlow(); warehouseFlow.setId(lWarehouseFlowId); warehouseFlow.setWarehouseType(0); warehouseFlow.setWarehouseId(warehouseId); warehouseFlow.setWarehouseName(lWhFormProcure.getWarehouseName()); warehouseFlow.setThisType(1); warehouseFlow.setBusinessType(WhBusinessEnum.CAIGOU.getValue()); warehouseFlow.setBusinessFormId(whFormProcureId); warehouseFlow.setOperatorId(userId); warehouseFlow.setOperatorName(nickName); warehouseFlow.setDealTime(dealTime); int flowInsertFlag = lWarehouseFlowService.buyInsertWareFlow(goodsModelNum, lWhFormProcure, warehouseFlow); if (flowInsertFlag == 1) { // 更新采购单【L_WH_FORM_PROCURE】 whFormProcure = new LWhFormProcure(whFormProcureId); whFormProcure.setStates(2); whFormProcure.setLWarehouseFlowId(lWarehouseFlowId); whFormProcure.setIncomeId(userId); whFormProcure.setIncomeName(nickName); whFormProcure.setIncomeTime(dealTime); lWhFormProcureServiceImpl.update(whFormProcure); } // 提取baseGoodsModelsId并放入新的List中 List allChangModelList = goodsModelNum.stream().map(LWhProcureModel::getBaseGoodsModelsId).distinct().collect(Collectors.toList()); // 当库存变动时调用该方法 lWhWarningCoreService.updateKuCun((short)0, warehouseId, allChangModelList, null, dealTime); log.info("入库单:{} 入库完成", whFormProcureId); return null; } }