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 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 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 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){ } }