package com.ruoyi.web.report.service.impl;

import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.web.report.domain.print.ReportPrintTemplateVo;
import com.ruoyi.web.report.mapper.ReportPrintTemplateMapper;
import com.ruoyi.web.report.service.IReportPrintTemplateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * 报表打印模板服务实现。
 */
@Service
public class ReportPrintTemplateServiceImpl implements IReportPrintTemplateService {

    @Autowired
    private ReportPrintTemplateMapper reportPrintTemplateMapper;

    @Override
    public ReportPrintTemplateVo getByReportId(Long reportId) {
        return reportPrintTemplateMapper.selectByReportId(reportId);
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public int saveByReportId(Long reportId, ReportPrintTemplateVo template) {
        if (reportId == null || template == null) {
            throw new IllegalArgumentException("保存打印模板失败：参数不能为空。");
        }
        fillDefaultValue(template);
        ReportPrintTemplateVo db = reportPrintTemplateMapper.selectByReportId(reportId);
        if (db == null) {
            return reportPrintTemplateMapper.insertTemplate(reportId, template);
        }
        return reportPrintTemplateMapper.updateTemplate(reportId, template);
    }

    /**
     * 填充默认值，保证单模板覆盖保存场景可用。
     * tableStyleJson 支持保存 Luckysheet 模板 JSON，后端透传不限制内部结构。
     */
    private void fillDefaultValue(ReportPrintTemplateVo template) {
        if (StringUtils.isEmpty(template.getTemplateName())) {
            template.setTemplateName("默认打印模板");
        }
        if (StringUtils.isEmpty(template.getPageSize())) {
            template.setPageSize("A4");
        }
        if (StringUtils.isEmpty(template.getPageOrientation())) {
            template.setPageOrientation("PORTRAIT");
        }
        if (template.getIsDefault() == null) {
            template.setIsDefault(1);
        }
    }
}
