cy
2023-11-29 46136bb08f496cf439c734a1a7e1f38feb6c6d29
feat: 发放
2个文件已修改
54 ■■■■■ 已修改文件
consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java
@@ -72,7 +72,7 @@
     * @return 出库单Id
     */
    @Transactional(rollbackFor = Exception.class)
    public Long createOutFormByTransId(Long whFormTransferId, S_user_core currentUser, Long dealTime) {
    public Long createOutFormByTransId(Long whFormTransferId, WhBusinessEnum businessEnum, S_user_core currentUser, Long dealTime) {
        if (whFormTransferId == null) {
            return null;
        }
@@ -89,7 +89,7 @@
        }
        //申请调拨的物品
        List<LWhProcureModel> goodsModelNumList = lWhProcureModelService.getModelByForm(WhBusinessEnum.DIAOBO, whFormTransferId);
        List<LWhProcureModel> goodsModelNumList = lWhProcureModelService.getModelByForm(businessEnum, whFormTransferId);
        if (CollectionUtils.isEmpty(goodsModelNumList)) {
            log.error("没有要入库的物品");
            return null;
@@ -200,6 +200,7 @@
        } else if (BaseWarehouseParam1.In_OutPutTypeEnum.Dept_Lending_Out.getValue()  == businessTypeValue) {
            //  部门仓库 分发出库
//            queryModelStatusT = 2;
            lWarehouseFlowBusinessId = lWhFormOutput.getTransBusinessId();
        } else if (BaseWarehouseParam1.In_OutPutTypeEnum.Fragmentary_Output.getValue()  == businessTypeValue) {
            //  零星出库
            queryModelStatusT = 1;
@@ -304,7 +305,9 @@
        lWhFormOutputService.update(lWhFormOutput);
        //当库存变动时调用该方法
        if (outWarehouseType == 0){
        lWhWarningCoreService.updateKuCun(Convert.toShort(outWarehouseType, (short) 0), outWarehouseId, allChangModelList, null, dealTime);
        }
        return lWarehouseFlowId;
    }
consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java
@@ -70,16 +70,6 @@
        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;
        }
        //单据类型。0仓库调拨;1部门分发;2部门物品回退
        Integer businessType = lWhFormTransfer.getBusinessType();
        businessType = businessType == null ? 0 : businessType;
@@ -90,6 +80,17 @@
            businessEnum = WhBusinessEnum.BUMENFENFA;
        } else if (businessType == 2) {
            businessEnum = WhBusinessEnum.BUMENTUIHUI;
        }
        // 出库单ID
        Long outWarehouseFormId = null;
        try {
            // 根据调拨单 生成 出库单 这样就能公用出库
            lWhFormTransfer.getBusinessType();
            outWarehouseFormId = lWhFormOutputCoreService.createOutFormByTransId(whFormTransferId, businessEnum, currentUser, dealTime);
        } catch (Exception e) {
            log.error(e.getMessage());
            return;
        }
        // 出库单 出库,返回 出库单流水Id
        Long lWarehouseFlowId = lWhFormOutputCoreService.outFormByTransId(outWarehouseFormId, businessEnum, currentUser, dealTime);
@@ -178,19 +179,33 @@
            whGoodsRecord.setDealTime(dealTime);
            //通过LockManage获得锁
            Object warehouseModelLockObj = LockManage.acquireLock(inWarehouseType, inWarehouseId, baseGoodsModelsId);
            List<Long> outGoodsIds = null;
            synchronized (warehouseModelLockObj) {
                // 根据出库流水ID 查询 出库的物品ID
                List<Long> outGoodsIds = getGoodsidByFlowId(outWarehouseFlowId, oldRecordId);
                outGoodsIds = getGoodsidByFlowId(outWarehouseFlowId, oldRecordId);
                // 库存物品详情(L_WH_GOODS)中 状态设置为1
                lWhGoodsService.modGoodsTransfering(outGoodsIds, inWarehouseType, inWarehouseId, inWarehouseName, goodsStatus);
                // 获得锁后查询该型号的期初数量
                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(inWarehouseType, inWarehouseId, baseGoodsModelsId, 1, null);
                whGoodsRecord.setInitialCount(goodsModelNum);
                whGoodsRecord.setEndCount(goodsModelNum + whGoodsRecord.getThisCount());
                long totalAmount = lWhGoodsService.queryGoodsPriceById(outGoodsIds);
                whGoodsRecord.setTotalPrice(totalAmount);
            }
                if (businessType == 1) {
//                List<Map<String, Object>> modelInfo = baseGoodsModelsService.queryGoodsModelInfo(baseGoodsModelsId);
                    // 1部门分发 此时要往 物品使用记录【L_GOODS_USER_RECORD】添加数据
                    //查询部门分发使用人
                    LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser();
                    lWhProcureModelUser.setTransBusinessId(whFormTransferId);
                    lWhProcureModelUser.setBaseGoodsModelsId(baseGoodsModelsId);
                    List<LWhProcureModelUser> goodsUserInfo = goodsBaseService.select(lWhProcureModelUser);
                    int totalGoodsNum = goodsUserInfo.stream().mapToInt(LWhProcureModelUser::getGoodsNum).sum();
                if (CollectionUtils.isEmpty(goodsUserInfo)){
                    continue;
                }
                int totalGoodsNum = goodsUserInfo.stream().filter(item -> item.getGoodsNum() != null).mapToInt(LWhProcureModelUser::getGoodsNum).sum();
                    if (totalGoodsNum != outGoodsIds.size()) {
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        throw new RuntimeException("入库单失败,使用人使用数量与物品数量不一致");
@@ -234,11 +249,7 @@
                //将保管仓库信息更新到 物品仓库保管记录【L_GOODS_WH_RECORD】
                lGoodsWhRecordService.insertNewRecord(outGoodsIds, inWarehouseFlowId, dealTime);
                // 获得锁后查询该型号的期初数量
                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(inWarehouseType, inWarehouseId, baseGoodsModelsId, 1, null);
                whGoodsRecord.setInitialCount(goodsModelNum);
                whGoodsRecord.setEndCount(goodsModelNum + whGoodsRecord.getThisCount());
            }
            LWhGoodsRecordDetails lWhGoodsRecordDetails = new LWhGoodsRecordDetails();
            lWhGoodsRecordDetails.setWhGoodsRecordId(oldRecordId);
            List<LWhGoodsRecordDetails> goodsRecordDetailsList = lWhGoodsRecordDetailsService.select(lWhGoodsRecordDetails);
@@ -262,7 +273,9 @@
        lWhFormTransferService.update(lWhFormTransfer);
        //当库存变动时调用该方法
        if (inWarehouseType == 0){
        lWhWarningCoreService.updateKuCun(Convert.toShort(inWarehouseType, (short) 0), inWarehouseId, allChangModelList, null, dealTime);
        }
        log.info("调拨单:{} 入库完成", whFormTransferId);
        return;
    }