liding
昨天 b118694a837ef1ca938a24959e77e86dd988654f
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
@@ -281,7 +281,7 @@
    /**
     * 直绑模板订单的页签来源是订单模板快照,而不是已生成的检验项。
     *
     * <p>
     * 仍保留每个模板下已有的检验项记录;如果某个模板没有“检验项”标记,补一条仅用于
     * 承载模板内容的返回对象,使前端也能展示、填写该模板。
     */
@@ -943,6 +943,7 @@
    /**
     * 查询模板内容
     *
     * @param order
     * @param insProducts
     */
@@ -1024,6 +1025,7 @@
    /**
     * todo: 原始记录模板清除没有使用的检验项(暂时有bug无法使用)
     *
     * @param sheet
     * @param itemNameList
     */
@@ -1096,6 +1098,7 @@
    /**
     * 坐标拼接
     *
     * @param r 横坐标
     * @param c 纵坐标
     * @return
@@ -1326,6 +1329,7 @@
    /**
     * *****添加分析数据******
     *
     * @param productList
     * @param ifsInventoryQuantity
     * @param order
@@ -1416,6 +1420,7 @@
    /**
     * *****计算偏差****
     *
     * @param data
     * @param targetStr
     * @return
@@ -1441,6 +1446,7 @@
    /**
     * *****计算偏差(要求值)****
     *
     * @param asked
     * @param targetStr
     * @return
@@ -1459,6 +1465,7 @@
    /**
     * ******原始记录模板复制*****
     *
     * @param orderId
     * @param ids
     */
@@ -1541,6 +1548,7 @@
    /**
     * 检验任务复核
     *
     * @param orderId
     * @param laboratory
     * @param type
@@ -1794,6 +1802,7 @@
    /**
     * 生成报告
     *
     * @param orderId
     */
    private void generateReport(Integer orderId, Integer reportType, Integer writeUserId) {
@@ -1835,6 +1844,7 @@
    /**
     * 电缆配置, 查看配置标识
     *
     * @param id
     * @param laboratory
     * @return
@@ -1846,6 +1856,7 @@
    /**
     * 原材料查看标识
     *
     * @param id
     * @param laboratory
     * @return
@@ -1857,6 +1868,7 @@
    /**
     * 查看重复标识
     *
     * @param id
     * @param laboratory
     * @return
@@ -1868,6 +1880,7 @@
    /**
     * 新增不合格复测内容
     *
     * @return
     */
    @Override
@@ -2064,6 +2077,7 @@
    /**
     * 查询进货原始记录
     *
     * @param insOrderId
     * @return
     */
@@ -2119,6 +2133,7 @@
    /**
     * 保存原材料进货验证
     *
     * @param factoryVerify
     * @return
     */
@@ -2170,6 +2185,7 @@
    /**
     * 设置表格样式
     *
     * @param max 标识最大个数
     * @return
     */
@@ -2178,12 +2194,23 @@
        TableStyle tableStyle = new TableStyle();
        if (!showResult) {
            switch (max) {
                case 1: tableStyle.setColWidths(new int[]{650, 3000, 850, 2400, 3100}); break;
                case 2: tableStyle.setColWidths(new int[]{650, 2800, 850, 2200, 1750, 1750}); break;
                case 3: tableStyle.setColWidths(new int[]{650, 2600, 850, 1800, 1400, 1400, 1400}); break;
                case 4: tableStyle.setColWidths(new int[]{650, 2400, 850, 1600, 1125, 1125, 1125, 1125}); break;
                case 5: tableStyle.setColWidths(new int[]{650, 2200, 850, 1500, 960, 960, 960, 960, 960}); break;
                default: break;
                case 1:
                    tableStyle.setColWidths(new int[]{650, 3000, 850, 2400, 3100});
                    break;
                case 2:
                    tableStyle.setColWidths(new int[]{650, 2800, 850, 2200, 1750, 1750});
                    break;
                case 3:
                    tableStyle.setColWidths(new int[]{650, 2600, 850, 1800, 1400, 1400, 1400});
                    break;
                case 4:
                    tableStyle.setColWidths(new int[]{650, 2400, 850, 1600, 1125, 1125, 1125, 1125});
                    break;
                case 5:
                    tableStyle.setColWidths(new int[]{650, 2200, 850, 1500, 960, 960, 960, 960, 960});
                    break;
                default:
                    break;
            }
        } else if(max<=5){
            for (int i = 1; i <= max; i++) {
@@ -2224,6 +2251,7 @@
    /**
     * 处理有电缆颜色标识的检测项
     *
     * @param cableTags 电缆颜色标识
     * @param collect   检测项列表
     * @param startIndex 起始下标
@@ -2256,6 +2284,7 @@
    /**
     * 检测项排序
     *
     * @param sourceMap
     * @param targetMap
     */
@@ -2269,6 +2298,7 @@
    /**
     * 小报告生成
     *
     * @param orderId
     * @param insOrder
     * @param insSamples
@@ -2477,6 +2507,7 @@
    /**
     * 处理常规检测项
     *
     * @param item
     * @param finalIndex
     * @param sampleList
@@ -2770,6 +2801,7 @@
    /**
     * 添加小报告表头
     *
     * @param text
     * @param max
     * @param rows
@@ -2959,6 +2991,7 @@
    /**
     * 创建大报告
     *
     * @param orderId
     * @param insOrder
     * @param
@@ -2966,6 +2999,10 @@
    private void addBitReport(Integer orderId, InsOrder insOrder, Integer reportType, Integer writeUserId) {
        //samples是不包括带有"/"的样品
        List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId);
        boolean directTemplateOrder = isDirectTemplateOrder(orderId);
        if (!directTemplateOrder && CollectionUtils.isEmpty(samples)) {
            throw new ErrorException("当前订单未找到可生成报告的有效检验项目");
        }
        InsReport insReport = new InsReport();
        insReport.setCode(insOrder.getEntrustCode());
        insReport.setInsOrderId(orderId);
@@ -3229,12 +3266,6 @@
            }
        }
        Map<String, String> codeStr = new HashMap<>();
        codeStr.put("报告编号", insReport.getCode());
        codeStr.put("样品名称", defaultReportText(insOrder.getSampleView(), insOrder.getSample()));
        codeStr.put("规格型号", samples.get(0).getModel());
        codeStr.put("发放日期", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        String modelStr = CollUtil.join(models, "\n");
        // 检测类型
@@ -3358,7 +3389,10 @@
        List<Map<String, String>> finalDeviceList = deviceList;
        String finalModelStr = modelStr;
        List<Map<String, String>> detectionResultRows = buildDetectionResultRows(orderId, samples);
        // 直绑模板订单没有 ins_product,检测项目、单位和结果均从订单模板快照中获取。
        List<Map<String, String>> detectionResultRows = directTemplateOrder
                ? buildTemplateDetectionResultRows(orderId)
                : buildDetectionResultRows(samples);
        String productName = defaultReportText(insOrder.getSampleView(), insOrder.getSample());
        String customerName = defaultReportText(custom == null ? null : custom.getCompany(), insOrder.getCompany());
        String detectionCategory = defaultReportText(finalOrderType, "委托检测");
@@ -3385,7 +3419,7 @@
                Wrappers.<InsOrderStandardTemplate>lambdaQuery()
                        .eq(InsOrderStandardTemplate::getInsOrderId, orderId)
                        .orderByAsc(InsOrderStandardTemplate::getSort, InsOrderStandardTemplate::getId));
        boolean newJuTemplateOrder = !templateSnapshots.isEmpty() && isDirectTemplateOrder(orderId);
        boolean newJuTemplateOrder = !templateSnapshots.isEmpty() && directTemplateOrder;
        if (newJuTemplateOrder) {
            productName = defaultReportText(insOrder.getSampleView(), insOrder.getSample());
            finalModelStr = "/";
@@ -3527,10 +3561,7 @@
    /**
     * 新版检测报告的结果表固定为四列:序号、检测项目、单位、检测结果。
     */
    private List<Map<String, String>> buildDetectionResultRows(Integer orderId, List<SampleProductDto> samples) {
        if (isDirectTemplateOrder(orderId)) {
            return buildTemplateDetectionResultRows(orderId);
        }
    private List<Map<String, String>> buildDetectionResultRows(List<SampleProductDto> samples) {
        List<Map<String, String>> rows = new ArrayList<>();
        if (CollectionUtils.isEmpty(samples)) {
            return rows;
@@ -3752,7 +3783,9 @@
        return minimumText + "~" + maximum.stripTrailingZeros().toPlainString() + unit;
    }
    /** 报告项目名称不展示模板计算过程中的“平均值”字样及其后的分隔逗号。 */
    /**
     * 报告项目名称不展示模板计算过程中的“平均值”字样及其后的分隔逗号。
     */
    private static String formatExportItemName(String itemName) {
        if (StringUtils.isBlank(itemName)) {
            return itemName;
@@ -3788,18 +3821,25 @@
    /**
     * 计算表格列宽度
     *
     * @param max 最大检验个数
     * @return
     */
    private static int[] calcTableColWidths(int max, boolean showResult){
        if (!showResult) {
            switch (max) {
                case 1: return new int[]{650, 2200, 2200, 850, 2300, 1800};
                case 2: return new int[]{650, 1600, 1600, 850, 1900, 1700, 1700};
                case 3: return new int[]{650, 1400, 1400, 850, 1600, 1375, 1375, 1375};
                case 4: return new int[]{650, 1250, 1250, 850, 1450, 1140, 1140, 1140, 1140};
                case 5: return new int[]{650, 1150, 1150, 850, 1300, 980, 980, 980, 980, 980};
                default: return new int[0];
                case 1:
                    return new int[]{650, 2200, 2200, 850, 2300, 1800};
                case 2:
                    return new int[]{650, 1600, 1600, 850, 1900, 1700, 1700};
                case 3:
                    return new int[]{650, 1400, 1400, 850, 1600, 1375, 1375, 1375};
                case 4:
                    return new int[]{650, 1250, 1250, 850, 1450, 1140, 1140, 1140, 1140};
                case 5:
                    return new int[]{650, 1150, 1150, 850, 1300, 980, 980, 980, 980, 980};
                default:
                    return new int[0];
            }
        }
        int[] colWidths = null;
@@ -3837,6 +3877,7 @@
    /**
     * 调整高度
     *
     * @param row
     * @param rowHeight
     * @return
@@ -4068,6 +4109,7 @@
    /**
     * 添加报告表头
     *
     * @param sample
     * @param text
     * @param rowRenderData
@@ -4300,6 +4342,7 @@
    /**
     * 添加检测值
     *
     * @param a   当前样品
     * @param text
     * @param rowRenderData
@@ -4993,6 +5036,7 @@
    /**
     * NBSP(非间断空格) 转成 普通空格
     *
     * @param oldStr
     * @return
     */
@@ -5005,6 +5049,7 @@
    /**
     * 添加报告结论中英文
     *
     * @param sample
     * @param itemCh
     * @param itemEn
@@ -5064,6 +5109,7 @@
    /**
     * 格式化修改检验项
     *
     * @param sampleProductDto2s
     */
    private void formatProducts(List<SampleProductExportDto> sampleProductDto2s) {
@@ -5133,6 +5179,7 @@
    /**
     * 添加结尾
     *
     * @param text
     * @param rowRenderData
     * @param rows
@@ -5164,6 +5211,7 @@
    /**
     * 判断当前内容是否是科学计数法
     *
     * @param str
     * @return
     */
@@ -5180,6 +5228,7 @@
    /**
     * 修改要求描述的科学计数法
     *
     * @param input
     */
    public static String convertToScientificNotation(String input) {
@@ -5209,6 +5258,7 @@
    /**
     * 展示成科学计数法
     *
     * @param number
     * @return
     */
@@ -5305,6 +5355,7 @@
    /**
     * 根据要求描述保留结果小数点位数
     *
     * @param reference
     * @param value
     * @return
@@ -5373,6 +5424,7 @@
    /**
     * 保留位数, 如果等于0 返回找到的一个非0位数
     *
     * @param number 当前数字
     * @param scale  原本保留的位数
     * @return
@@ -5411,6 +5463,7 @@
    /**
     * *****保存元此阿里进货验证原始记录*****
     *
     * @param insOrderId 订单Id
     * @param examineUserId  复核人Id
     * @param writeUserId  检验员Id
@@ -5566,6 +5619,7 @@
    /**
     * ***格式化进厂验证内容****
     *
     * @param basicType
     * @return
     */
@@ -5595,6 +5649,7 @@
    /**
     * ***word转换pdf***
     *
     * @param path
     * @return
     */
@@ -5643,6 +5698,7 @@
    /**
     * *****修改成品抽样状态******
     *
     * @param insSamples
     * @param order
     */
@@ -5680,6 +5736,7 @@
    /**
     * 添加工时
     *
     * @param userId
     * @param insProduct
     * @param insOrder