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<LWhProcureModel> 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<Long> allChangModelList =
|
goodsModelNum.stream().map(LWhProcureModel::getBaseGoodsModelsId).distinct().collect(Collectors.toList());
|
// 当库存变动时调用该方法
|
lWhWarningCoreService.updateKuCun((short)0, warehouseId, allChangModelList, null, dealTime);
|
|
log.info("入库单:{} 入库完成", whFormProcureId);
|
return null;
|
}
|
|
}
|