package com.consum.base.core;
|
|
import com.consum.base.core.po.WhFormInventory;
|
import com.consum.base.core.tools.SqlParameter;
|
import com.consum.model.po.*;
|
import com.walker.infrastructure.utils.NumberGenerator;
|
import com.walker.jdbc.service.BaseServiceImpl;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
|
/**
|
* 进出库 业务处 类
|
*/
|
@Service
|
public class WarehouseBusinessService extends BaseServiceImpl {
|
|
|
private WarehouseCoreService coreService;
|
|
/**
|
* 执行采购入库
|
* 第一步:通过采购单【WH_FORM_PROCURE】查询采购单型号【WH_FORM_PROCURE_MODEL】数据
|
* 第二步:组织CheckWarehouseParam,调用WarehouseCoreService.unifyCheck()执行入库
|
* 第三步:更新采购单型号【WH_FORM_PROCURE_MODEL】库存物品编号字段及主表WH_FORM_PROCURE状态信息
|
* 第四步:更新 进出库流水(仓库)【WH_GOODS_DETAILS】
|
* @param procure
|
*/
|
public void doProcure(WhFormProcure procure){
|
|
String sql = "SELECT\n" +
|
" * \n" +
|
"FROM\n" +
|
" WH_FORM_PROCURE_MODEL A \n" +
|
"WHERE\n" +
|
" A.WH_FORM_PROCURE_ID = : PROCURE_ID";
|
|
List<WhFormProcureModel> modelList = this.select(sql,new SqlParameter().put("PROCURE_ID",procure.getId()),new WhFormProcureModel());
|
|
for (WhFormProcureModel model : modelList){
|
CheckWarehouseParam param = new CheckWarehouseParam();
|
param.setIsCheckIn(true);
|
param.setWarehouseId(procure.getId());
|
param.setCount(model.getCounts());
|
param.setFirstInputCode(model.getId().toString());
|
param.setFirst_input_type(1);
|
param.setModelId(model.getBaseGoodsModelsId());
|
CheckWarehouseResult result = coreService.unifyCheck(param)[0];
|
|
|
WhGoodsDetails details = new WhGoodsDetails();
|
details.setId(result.getWhGoods().getFirstInputHisId());
|
details.setBusinessFormId(procure.getId());
|
details.setBusinessFormCode(procure.getBusinessFormCode());
|
details.setBusinessFormName(procure.getWarehouseName() + "采购入库单:" + details.getBusinessFormCode());
|
details.setInitialCount(result.getInitial_count());
|
details.setThisType(1);
|
details.setEndCount(result.getEnd_count());
|
details.setWarehouseId(param.getWarehouseId());
|
details.setWarehouseName(procure.getWarehouseName());
|
details.setClassification(1);
|
details.setOperatorId(procure.getOperatorId2());
|
details.setOperatorName(procure.getOperatorName2());
|
details.setDealTime(procure.getIncomeTime());
|
details.setWhGoodsId(result.getWhGoods().getId());
|
|
this.insert(details);
|
|
|
model.setInWhGoodsDetailsId(details.getId());
|
update(model);
|
|
procure.setStates(2);
|
update(procure);
|
}
|
}
|
|
/**
|
* 执行调拨出库操作
|
* 1. 通过调拨单【WH_FORM_TRANSFER】、调拨单物品【WH_FORM_TRANSFER_GOODS】组织CheckWarehouseParam
|
* 2. 调用调用WarehouseCoreService.unifyCheck()执行出库
|
* 3. 更新进出库流水(仓库)【WH_GOODS_DETAILS】
|
* 4. 更新调拨单【WH_FORM_TRANSFER】为待接收,更新调拨单物品【WH_FORM_TRANSFER_MODEL】出库流水ID
|
* @param transfer
|
*/
|
public void doTransferOutPut(WhFormTransfer transfer){
|
String sql = "SELECT\n" +
|
" * \n" +
|
"FROM\n" +
|
" WH_FORM_TRANSFER_GOODS A \n" +
|
"WHERE\n" +
|
" A.WH_FORM_TRANSFER_ID = : TRANSFER_ID";
|
|
List<WhFormTransferGoods> goodsList = this.select(sql,new SqlParameter()
|
.put("TRANSFER_ID",transfer.getId()),new WhFormTransferGoods());
|
|
for (WhFormTransferGoods goods : goodsList){
|
CheckWarehouseParam param = new CheckWarehouseParam();
|
param.setIsCheckIn(false);
|
param.setWarehouseId(transfer.getOutWarehouseId());
|
param.setCount(goods.getCounts());
|
CheckWarehouseResult[] results = coreService.unifyCheck(param);
|
for (CheckWarehouseResult result : results){
|
WhFormTransferModel model = new WhFormTransferModel();
|
model.setId(NumberGenerator.getLongSequenceNumber());
|
model.setWhFormTransferId(transfer.getId());
|
model.setWorehouseCount(result.getInitial_count());
|
model.setCounts(result.getInitial_count() - result.getInitial_count());
|
model.setOutWhGoodsDetailsId(result.getWhGoods().getId());
|
model.setWhFormTransferGoodsId(goods.getId());
|
insert(model);
|
|
WhGoodsDetails details = new WhGoodsDetails();
|
details.setBusinessFormId(transfer.getId());
|
details.setBusinessFormCode(transfer.getBusinessFormCode());
|
details.setBusinessFormName("调拨出库单:" + transfer.getBusinessFormCode());
|
details.setInitialCount(result.getInitial_count());
|
details.setThisType(2);
|
details.setThisCount(result.getInitial_count() - result.getEnd_count());
|
details.setEndCount(result.getEnd_count());
|
details.setWarehouseId(result.getWhGoods().getWarehouseId());
|
details.setWarehouseName(result.getWhGoods().getWarehouseName());
|
details.setClassification(5);
|
details.setOperatorId(transfer.getOperatorId());
|
details.setOperatorName(transfer.getOperatorName());
|
details.setDealTime(transfer.getOutputTime());
|
details.setWhGoodsId(result.getWhGoods().getId());
|
this.insert(details);
|
}
|
}
|
}
|
|
/**
|
* 执行调拨入库操作
|
* 1. 通过调拨单【WH_FORM_TRANSFER】、调拨单物品【WH_FORM_TRANSFER_GOODS】组织CheckWarehouseParam
|
* 2. 调用调用WarehouseCoreService.unifyCheck()执行出库
|
* 3. 更新进出库流水(仓库)【WH_GOODS_DETAILS】
|
* 4. 更新调拨单【WH_FORM_TRANSFER】为已入库,,更新调拨单物品【WH_FORM_TRANSFER_MODEL】入库流水ID
|
* @param transfer
|
*/
|
public void doTransferInPut(WhFormTransfer transfer){
|
|
String sql = "SELECT\n" +
|
" * \n" +
|
"FROM\n" +
|
" WH_FORM_TRANSFER_GOODS A \n" +
|
"WHERE\n" +
|
" A.WH_FORM_TRANSFER_ID = : TRANSFER_ID";
|
|
List<WhFormTransferGoods> goodsList = this.select(sql,new SqlParameter()
|
.put("TRANSFER_ID",transfer.getId()),new WhFormTransferGoods());
|
|
}
|
|
/**
|
* 创建盘点任务,创建盘点任务时,根据当时时间会将库存数据冻结一份放入待盘点单。
|
* 1.从库存物品【WH_GOODS】中按照仓库将数据放入盘点单物品【WH_FORM_INVENTORY_GOODS】,主要是
|
* 期初数量INIT_COUNTS,和 库存物品编号WH_GOODS_ID字段
|
* @param inventory
|
*/
|
public void createInventory(WhFormInventory inventory){
|
|
}
|
|
}
|