package digital.laboratory.platform.inspection.service;

import digital.laboratory.platform.common.core.util.R;
import digital.laboratory.platform.inspection.entity.TestRecordSampleData;
import digital.laboratory.platform.inspetion.api.entity.SampleInfo;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @author ChenJiangBao
 * @version 1.0
 * @description: 生成检验记录相关接口
 * @date 2025/3/18 14:50
 */
public interface InspectRecordService {

    /**
     * 生成检验记录-贵阳禁毒
     * @param businessId 委托id
     * @return
     * @throws Exception
     */
    R buildInspectionRecord(String businessId, String materialType,boolean isPreview) throws Exception;

    void previewInspectionRecord(String businessId, String materialType, HttpServletResponse servletResponse) throws Exception;

    /**
     * 构建检材性状描述（使用检材编号尾号，并合并连续编号）
     * <p>
     * 规则：
     * 1. **提取编号尾号**（如 `2025007001` → `1`）
     * 2. **按尾号排序**
     * 3. **连续编号 & 物质性状相同时合并**
     * 4. **只有一个检材时，省略编号，直接描述**
     * 5. **输出格式示例：**
     * - `"1号至4号检材为粉状"`
     * - `"检材为粉状"`（仅有一个检材时）
     *
     * @param sampleInfoList 样本信息列表
     * @return 物料特性描述（如果列表为空，则返回空字符串）
     */
    String buildMaterialCharacterDesc(List<SampleInfo> sampleInfoList);

    /**
     * 根据传入的TestRecordSampleData列表生成鉴定意见
     *
     * @param dataList 包含检验数据的列表
     * @return 检测意见字符串，以“；”分隔
     */
    String buildInspectOpinion(List<TestRecordSampleData> dataList);
}
