团队项目周总结02

这周我们实现了对于入库和出库的全部流程,我们这里的功能安排的是,在采购人员进行采购完设备之后呢,这些设备是默认属于待入库的状态,这就需要我们的仓库管理员进行入库操作,这里我们添加了设备的批量入库以及入库时仓库和工区的自动匹配,简化仓库管理员的操作,符合实际情况,当然在这里的批量入库我们在后端实现了对待入库集合的循环修改的功能实现,之后我们仓库设备为已入库待出库的状态,同理我们这里出库和入库状态仓库管理员类似,但是我们这里出库规定的是需要每个组的班组长需要进行申请设备,之后审批通过之后才可以由仓库管理员进行出库操作,这里多了一个审核的流程,当然这是考虑了实际的情况,在实际中,不可能莫名其妙地进行出库,所以我们添加了一个审核流程。在这本周的训练中,我们对设备出入库的操作进行了完善,加油吧,希望我们的项目能够再进一步!

以下是后端关键逻辑部分

/**
     * 批量创建设备和库存记录(完整实现)
     * @param purchase 采购信息
     * @param dto 采购确认DTO
     */
    private void batchCreateDeviceAndInventoryRecords(EquipmentPurchase purchase, PurchaseConfirmDTO dto) {
        // 1. 准备设备列表(此时deviceId为null)
        List<DeviceBaseInfo> deviceList = new ArrayList<>();
        for (int i = 0; i < purchase.getQuantity(); i++) {
            int sequence = i + 1;
            DeviceBaseInfo device = DeviceBaseInfo.builder()
                    .deviceCode(generateDeviceCode(purchase.getEquipmentType(), sequence))
                    .deviceName(purchase.getEquipmentName())
                    .deviceType(convertEquipmentType(purchase.getEquipmentType()))
                    .model(purchase.getModelNumber())
                    .brand(purchase.getManufacturer())
                    .manufacturer(purchase.getManufacturer())
                    .productionDate(purchase.getPurchaseDate())
                    .purchaseDate(LocalDate.now())
                    .warrantyPeriod(purchase.getWarrantyPeriod())
                    .status(StatusConstant.ENABLE)  // 1表示启用
                    //.createTime(LocalDateTime.now())
                    //.updateTime(LocalDateTime.now())
                    .build();
            deviceList.add(device);
        }

        // 2. 批量插入设备(MyBatis会回填deviceId)
        if (!deviceList.isEmpty()) {
            equipmentPurchaseMapper.insertDeviceBaseInfo(deviceList);
        }

        // 3. 构建库存记录并关联deviceId
        List<WarehouseInventory> inventoryList = new ArrayList<>();
        for (int i = 0; i < deviceList.size(); i++) {
            DeviceBaseInfo device = deviceList.get(i);
            int sequence = i + 1;

                     WarehouseInventory inventory = WarehouseInventory.builder()
                    .purchaseId(purchase.getPurchaseId())
                    .deviceId(device.getDeviceId())  // 关键:使用回填的deviceId
                    .equipmentType(purchase.getEquipmentType())
                    .equipmentName(purchase.getEquipmentName())
                    .modelNumber(purchase.getModelNumber())
                    .manufacturer(purchase.getManufacturer())
                    .batchNumber(generateSingleBatchNumber(purchase.getPurchaseId(), sequence))
                    .unit(purchase.getUnit())
                    .expectedLife(purchase.getExpectedLife())
                    .status(StatusConstant.ENABLE)  // 1表示在库
                    .warrantyPeriod(purchase.getWarrantyPeriod())
                    //.createTime(LocalDateTime.now())
                    //.updateTime(LocalDateTime.now())
                    .build();
            inventoryList.add(inventory);
        }

        // 4. 批量插入库存记录
        if (!inventoryList.isEmpty()) {
            equipmentPurchaseMapper.batchInsertWarehouseInventory(inventoryList);
        }
    }

posted @ 2025-06-04 17:26  不要再蒸了团队  阅读(9)  评论(0)    收藏  举报