//package com.hotent.surveyinfo.req;
//
//// ... existing code ...
//@Service
//public class CostSurveyTemplateService {
//
//    @Autowired
//    private CostSurveyTemplateMapper costSurveyTemplateMapper;
//
//    @Autowired
//    private CostSurveyTemplateVersionMapper costSurveyTemplateVersionMapper;
//
//    @Autowired
//    private CostSurveyDataMapper costSurveyDataMapper;
//
//    // 版本发布
//    public void publishVersion(CostSurveyTemplateVersion version) {
//        // 1. 检查是否存在现行版本
//        CostSurveyTemplateVersion currentVersion =
//            costSurveyTemplateVersionMapper.selectCurrentVersion(version.getFormName());
//
//        if (currentVersion != null) {
//            // 2. 将现有现行版本状态改为"历史"
//            currentVersion.setStatus("1"); // 1-历史
//            currentVersion.setUpdateTime(new Date());
//            costSurveyTemplateVersionMapper.updateById(currentVersion);
//        }
//
//        // 3. 设置新版本为"现行"
//        version.setStatus("0"); // 0-现行
//        version.setCreateTime(new Date());
//        version.setUpdateTime(new Date());
//        costSurveyTemplateVersionMapper.insert(version);
//
//        // 4. 更新模板状态
//        CostSurveyTemplate template = costSurveyTemplateMapper.selectById(version.getSurveyTemplateId());
//        if (template != null) {
//            template.setStatus("0"); // 启用
//            template.setUpdateTime(new Date());
//            costSurveyTemplateMapper.updateById(template);
//        }
//    }
//
//    // 数据录入
//    public void saveSurveyData(CostSurveyData data) {
//        // 根据模板类型选择存储方式
//        switch (data.getTemplateType()) {
//            case "单记录":
//                saveSingleRecord(data);
//                break;
//            case "固定表":
//                saveFixedTable(data);
//                break;
//            case "动态表":
//                saveDynamicTable(data);
//                break;
//            default:
//                throw new IllegalArgumentException("不支持的模板类型: " + data.getTemplateType());
//        }
//    }
//
//    private void saveSingleRecord(CostSurveyData data) {
//        // 单记录存储：直接保存到对应表
//        String storageTable = getStorageTableName(data.getSurveyTemplateId());
//        Map<String, Object> fields = data.getFields();
//
//        // 构建SQL语句
//        StringBuilder sql = new StringBuilder("INSERT INTO ");
//        sql.append(storageTable).append(" (");
//
//        List<String> columns = new ArrayList<>();
//        List<Object> values = new ArrayList<>();
//
//        for (Map.Entry<String, Object> entry : fields.entrySet()) {
//            columns.add(entry.getKey());
//            values.add(entry.getValue());
//        }
//
//        sql.append(String.join(",", columns)).append(") VALUES (");
//        sql.append(String.join(",", Collections.nCopies(columns.size(), "?")));
//        sql.append(")");
//
//        // 执行插入
//        jdbcTemplate.update(sql.toString(), values.toArray());
//    }
//
//    private void saveFixedTable(CostSurveyData data) {
//        // 固定表存储：行转列方式
//        String storageTable = getStorageTableName(data.getSurveyTemplateId());
//        List<Map<String, Object>> rows = data.getRows();
//
//        for (Map<String, Object> row : rows) {
//            // 每行数据作为一条记录
//            Map<String, Object> record = new HashMap<>();
//            record.put("survey_template_id", data.getSurveyTemplateId());
//            record.put("row_num", row.get("rowNum"));
//            record.put("cell_code", row.get("cellCode"));
//            record.put("value", row.get("value"));
//            record.put("unit", row.get("unit"));
//            record.put("create_time", new Date());
//            record.put("update_time", new Date());
//
//            costSurveyDataMapper.insert(record);
//        }
//    }
//
//    private void saveDynamicTable(CostSurveyData data) {
//        // 动态表存储：JSON格式
//        String storageTable = getStorageTableName(data.getSurveyTemplateId());
//
//        // 转换为JSON字符串
//        String jsonData = objectMapper.writeValueAsString(data.getFields());
//
//        // 保存数据
//        Map<String, Object> record = new HashMap<>();
//        record.put("survey_template_id", data.getSurveyTemplateId());
//        record.put("data_json", jsonData);
//        record.put("create_time", new Date());
//        record.put("update_time", new Date());
//
//        costSurveyDataMapper.insert(record);
//    }
//
//    // 版本切换
//    public void switchVersion(Long versionId) {
//        // 1. 获取要切换的版本
//        CostSurveyTemplateVersion targetVersion =
//            costSurveyTemplateVersionMapper.selectById(versionId);
//
//        if (targetVersion == null) {
//            throw new IllegalArgumentException("版本不存在");
//        }
//
//        // 2. 检查是否已是现行版本
//        if ("0".equals(targetVersion.getStatus())) {
//            return; // 已是现行版本，无需切换
//        }
//
//        // 3. 获取当前现行版本
//        CostSurveyTemplateVersion currentVersion =
//            costSurveyTemplateVersionMapper.selectCurrentVersion(targetVersion.getFormName());
//
//        if (currentVersion != null) {
//            // 4. 将当前现行版本改为"历史"
//            currentVersion.setStatus("1"); // 1-历史
//            currentVersion.setUpdateTime(new Date());
//            costSurveyTemplateVersionMapper.updateById(currentVersion);
//        }
//
//        // 5. 将目标版本设置为"现行"
//        targetVersion.setStatus("0"); // 0-现行
//        targetVersion.setUpdateTime(new Date());
//        costSurveyTemplateVersionMapper.updateById(targetVersion);
//
//        // 6. 更新模板状态
//        CostSurveyTemplate template = costSurveyTemplateMapper.selectById(targetVersion.getSurveyTemplateId());
//        if (template != null) {
//            template.setStatus("0"); // 启用
//            template.setUpdateTime(new Date());
//            costSurveyTemplateMapper.updateById(template);
//        }
//    }
//
//    private String getStorageTableName(Long templateId) {
//        // 查询模板获取存储表名
//        CostSurveyTemplate template = costSurveyTemplateMapper.selectById(templateId);
//        return template.getStorageTable();
//    }
//}
