src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.handler.CustomTenantLineHandler;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto;
@@ -74,12 +75,29 @@
                .inboundBatches(aLong.equals(0L) ? "第1批次" : "第"+ (aLong + 1) + "批次")
                .inboundNum(new BigDecimal(procurementRecordOutAdd.getQuantity()))
                .type(procurementRecordOutAdd.getType())
                .supplierName(procurementRecordOutAdd.getSupplierName())
                .createTime(localDateTime == null ? LocalDateTime.now() : localDateTime)
                .createUser(Long.valueOf(procurementRecordOutAdd.getUserId()))
                .createBy(sysUser.getNickName())
                .updateUser(Long.valueOf(procurementRecordOutAdd.getUserId()))
                .updateTime(LocalDateTime.now());
        this.save(procurementRecordOut.build());
        ProcurementRecordOut saved = procurementRecordOut.build();
        // 出库写入时临时跳过租户插件,避免 jsqlparser 解析异常
        // (ClassCastException: SetOperationList cannot be cast to PlainSelect)
        // tenant_id 由 MybatisHandler 的 strictInsertFill 自动填充,不会丢
        CustomTenantLineHandler.TEMP_IGNORE.set(Boolean.TRUE);
        try {
            this.save(saved);
            if (StringUtils.isNotEmpty(procurementRecordOutAdd.getRequisitionNum()) && saved.getId() != null) {
                ProcurementRecordOut upd = ProcurementRecordOut.builder()
                        .id(saved.getId())
                        .requisitionNum(new BigDecimal(procurementRecordOutAdd.getRequisitionNum()))
                        .build();
                procurementRecordOutMapper.updateById(upd);
            }
        } finally {
            CustomTenantLineHandler.TEMP_IGNORE.remove();
        }
        return 0;
    }
@@ -118,4 +136,16 @@
    public IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page, ProcurementRecordOutPageDto procurementDto) {
        return procurementRecordOutMapper.listPageByCustom(page, procurementDto);
    }
    @Override
    public IPage<ProcurementRecordOutPageDto> listPageByPurchaseReturn(Page page, ProcurementRecordOutPageDto procurementDto) {
        return procurementRecordOutMapper.listPageByPurchaseReturn(page, procurementDto);
    }
    @Override
    public void exportPurchaseReturn(HttpServletResponse response) {
        List<ProcurementRecordOutPageDto> list = procurementRecordOutMapper.listPurchaseReturn();
        ExcelUtil<ProcurementRecordOutPageDto> util = new ExcelUtil<>(ProcurementRecordOutPageDto.class);
        util.exportExcel(response, list, "退货出库台账");
    }
}