zouyu
2026-04-28 7cce9e212894b69f5539d768bfd372360df05904
合格率统计调整:不合格处理OA状态为退回的不纳入合格率统计
已修改4个文件
161 ■■■■■ 文件已修改
cnas-personnel/src/main/resources/mapper/PersonRewardPunishmentRecordMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/DataAnalysisServiceImpl.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsUnqualifiedHandlerMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/mapper/PersonRewardPunishmentRecordMapper.xml
@@ -22,6 +22,7 @@
                AND cprpr.reward_punish_time BETWEEN #{dto.startTime} AND #{dto.endTime}
            </if>
        </where>
        ORDER BY cprpr.id DESC
    </select>
    <select id="rewardPunishmentExport" resultType="com.ruoyi.personnel.excel.PersonRewardPunishmentRecordExcel">
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/DataAnalysisServiceImpl.java
@@ -65,36 +65,10 @@
            dataAnalysisDto.setBeginDate(startDate.atTime(LocalTime.MIN).format(dateTimeFormatter));
            dataAnalysisDto.setEndDate(endDate.atTime(LocalTime.MAX).format(dateTimeFormatter));
        }
//        if (StrUtil.isNotBlank(dataAnalysisDto.getBeginDate()) && StrUtil.isNotBlank(dataAnalysisDto.getEndDate())) {
//            return dataAnalysisMapper.getRawPassRateByBarChartByDay(dataAnalysisDto);
//        } else
//            if (dataAnalysisDto.getDateType().equals("1")) {
////            // 获取本周的开始时间(周一 00:00:00)
////            DateTime beginOfWeek = DateUtil.beginOfWeek(now);
////            // 获取本周的结束时间(周日 23:59:59)
////            // 获取本周的结束时间(周日 23:59:59)
////            DateTime endOfWeek = DateUtil.endOfWeek(now);
////            dataAnalysisDto.setBeginDate(DateUtil.format(beginOfWeek, "yyyy-MM-dd HH:mm:ss"));
////            dataAnalysisDto.setEndDate(DateUtil.format(endOfWeek, "yyyy-MM-dd HH:mm:ss"));
//            List<Map<String, Object>> maps = dataAnalysisMapper.getRawPassRateByBarChartByWeek(dataAnalysisDto);
//            return maps;
//        } else
            if (Arrays.asList("1","2").contains(dataAnalysisDto.getDateType())) {
//            // 获取当前月的开始时间(每月1号 00:00:00)
//            DateTime beginOfMonth = DateUtil.beginOfMonth(now);
//            // 获取当前月的结束时间(本月最后一天 23:59:59)
//            DateTime endOfMonth = DateUtil.endOfMonth(now);
//            dataAnalysisDto.setBeginDate(DateUtil.format(beginOfMonth, "yyyy-MM-dd HH:mm:ss"));
//            dataAnalysisDto.setEndDate(DateUtil.format(endOfMonth, "yyyy-MM-dd HH:mm:ss"));
        if (Arrays.asList("1","2").contains(dataAnalysisDto.getDateType())) {
            List<Map<String, Object>> maps = dataAnalysisMapper.getRawPassRateByBarChartByDay(dataAnalysisDto);
            return maps;
        } else if (dataAnalysisDto.getDateType().equals("3")) {
//            // 获取当前年的开始时间(每年1月1日 00:00:00)
//            DateTime beginOfYear = DateUtil.beginOfYear(now);
//            // 获取当前年的结束时间(每年12月31日 23:59:59)
//            DateTime endOfYear = DateUtil.endOfYear(now);
//            dataAnalysisDto.setBeginDate(DateUtil.format(beginOfYear, "yyyy-MM-dd HH:mm:ss"));
//            dataAnalysisDto.setEndDate(DateUtil.format(endOfYear, "yyyy-MM-dd HH:mm:ss"));
            List<Map<String, Object>> maps = dataAnalysisMapper.getRawPassRateByBarChartByYear(dataAnalysisDto);
            return maps;
        }
@@ -123,32 +97,6 @@
            dataAnalysisDto.setBeginDate(startDate.atTime(LocalTime.MIN).format(dateTimeFormatter));
            dataAnalysisDto.setEndDate(endDate.atTime(LocalTime.MAX).format(dateTimeFormatter));
        }
//        DateTime now = DateUtil.date();
//        if (StrUtil.isNotBlank(dataAnalysisDto.getBeginDate()) && StrUtil.isNotBlank(dataAnalysisDto.getEndDate())) {
//
//        } else
//            if (dataAnalysisDto.getDateType().equals("1")) {
//            // 获取本周的开始时间(周一 00:00:00)
//            DateTime beginOfWeek = DateUtil.beginOfWeek(now);
//            // 获取本周的结束时间(周日 23:59:59)
//            DateTime endOfWeek = DateUtil.endOfWeek(now);
//            dataAnalysisDto.setBeginDate(DateUtil.format(beginOfWeek, "yyyy-MM-dd HH:mm:ss"));
//            dataAnalysisDto.setEndDate(DateUtil.format(endOfWeek, "yyyy-MM-dd HH:mm:ss"));
//        } else if (dataAnalysisDto.getDateType().equals("2")) {
//            // 获取当前月的开始时间(每月1号 00:00:00)
//            DateTime beginOfMonth = DateUtil.beginOfMonth(now);
//            // 获取当前月的结束时间(本月最后一天 23:59:59)
//            DateTime endOfMonth = DateUtil.endOfMonth(now);
//            dataAnalysisDto.setBeginDate(DateUtil.format(beginOfMonth, "yyyy-MM-dd HH:mm:ss"));
//            dataAnalysisDto.setEndDate(DateUtil.format(endOfMonth, "yyyy-MM-dd HH:mm:ss"));
//        } else if (dataAnalysisDto.getDateType().equals("3")) {
//            // 获取当前年的开始时间(每年1月1日 00:00:00)
//            DateTime beginOfYear = DateUtil.beginOfYear(now);
//            // 获取当前年的结束时间(每年12月31日 23:59:59)
//            DateTime endOfYear = DateUtil.endOfYear(now);
//            dataAnalysisDto.setBeginDate(DateUtil.format(beginOfYear, "yyyy-MM-dd HH:mm:ss"));
//            dataAnalysisDto.setEndDate(DateUtil.format(endOfYear, "yyyy-MM-dd HH:mm:ss"));
//        }
        return dataAnalysisMapper.getRawPassRateByCake(dataAnalysisDto);
    }
@@ -165,31 +113,6 @@
            dataAnalysisDto.setBeginDate(startDate.atTime(LocalTime.MIN).format(dateTimeFormatter));
            dataAnalysisDto.setEndDate(endDate.atTime(LocalTime.MAX).format(dateTimeFormatter));
        }
//        if (StrUtil.isNotBlank(dataAnalysisDto.getBeginDate()) && StrUtil.isNotBlank(dataAnalysisDto.getEndDate())) {
//
//        } else if (dataAnalysisDto.getDateType().equals("1")) {
//            // 获取本周的开始时间(周一 00:00:00)
//            DateTime beginOfWeek = DateUtil.beginOfWeek(now);
//            // 获取本周的结束时间(周日 23:59:59)
//            DateTime endOfWeek = DateUtil.endOfWeek(now);
//            dataAnalysisDto.setBeginDate(DateUtil.format(beginOfWeek, "yyyy-MM-dd HH:mm:ss"));
//            dataAnalysisDto.setEndDate(DateUtil.format(endOfWeek, "yyyy-MM-dd HH:mm:ss"));
//        } else if (dataAnalysisDto.getDateType().equals("2")) {
//            // 获取当前月的开始时间(每月1号 00:00:00)
//            DateTime beginOfMonth = DateUtil.beginOfMonth(now);
//            // 获取当前月的结束时间(本月最后一天 23:59:59)
//            DateTime endOfMonth = DateUtil.endOfMonth(now);
//            dataAnalysisDto.setBeginDate(DateUtil.format(beginOfMonth, "yyyy-MM-dd HH:mm:ss"));
//            dataAnalysisDto.setEndDate(DateUtil.format(endOfMonth, "yyyy-MM-dd HH:mm:ss"));
//        } else if (dataAnalysisDto.getDateType().equals("3")) {
//            // 获取当前年的开始时间(每年1月1日 00:00:00)
//            DateTime beginOfYear = DateUtil.beginOfYear(now);
//            // 获取当前年的结束时间(每年12月31日 23:59:59)
//            DateTime endOfYear = DateUtil.endOfYear(now);
//            dataAnalysisDto.setBeginDate(DateUtil.format(beginOfYear, "yyyy-MM-dd HH:mm:ss"));
//            dataAnalysisDto.setEndDate(DateUtil.format(endOfYear, "yyyy-MM-dd HH:mm:ss"));
//        }
        return dataAnalysisMapper.getMaterialPropTable(dataAnalysisDto);
    }
inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
@@ -85,15 +85,29 @@
        SELECT
        DATE(io1.send_time) AS day,
        COUNT(*) AS total,
        SUM(CASE WHEN iiq.inspect_status = 1 or (iiq.inspect_status = 4 AND iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
        SUM(CASE WHEN iiq.inspect_status = 2 or (iiq.inspect_status = 4 AND iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
        SUM(CASE WHEN iiq.inspect_status = 1 or (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
        FROM ifs_inventory_quantity iiq
        LEFT JOIN ins_order io1
        ON io1.ifs_inventory_id = iiq.id
        AND io1.order_type = #{dto.orderType}
        AND io1.state != -1
        AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
        LEFT JOIN ins_unqualified_handler iuh ON iiq.id = iuh.inventory_quantity_id
        LEFT JOIN (
            SELECT
                iuh.id,
                coa.operation,
                iuh.inventory_quantity_id
            FROM ins_unqualified_handler iuh
            LEFT JOIN (
            SELECT
            *,
            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
            FROM
            common_oa
            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
            WHERE coa.operation !='退回' AND coa.operation is not null
        ) iuh ON iiq.id = iuh.inventory_quantity_id
        LEFT JOIN (
        SELECT ins_order_id, MAX(sample) AS sample, MAX(model) AS model
        FROM ins_sample
@@ -160,15 +174,29 @@
        SELECT
        MONTH(io1.send_time) AS month,
        COUNT(*) AS total,
        SUM(CASE WHEN iiq.inspect_status = 1 or (iiq.inspect_status = 4 AND iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
        SUM(CASE WHEN iiq.inspect_status = 2 or (iiq.inspect_status = 4 AND iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
        SUM(CASE WHEN iiq.inspect_status = 1 or (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
        FROM ifs_inventory_quantity iiq
        LEFT JOIN ins_order io1
        ON io1.ifs_inventory_id = iiq.id
        AND io1.order_type = #{dto.orderType}
        AND io1.state != -1
        AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
        LEFT JOIN ins_unqualified_handler iuh ON iiq.id = iuh.inventory_quantity_id
        LEFT JOIN (
            SELECT
            iuh.id,
            coa.operation,
            iuh.inventory_quantity_id
            FROM ins_unqualified_handler iuh
            LEFT JOIN (
            SELECT
            *,
            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
            FROM
            common_oa
            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
            WHERE coa.operation !='退回' AND coa.operation is not null
        ) iuh ON iiq.id = iuh.inventory_quantity_id
        LEFT JOIN (
        SELECT ins_order_id, MAX(sample) AS sample, MAX(model) AS model
        FROM ins_sample
@@ -204,13 +232,27 @@
        SELECT
        COUNT(*) AS sum,
        /* 合格 */
        SUM(CASE WHEN iiq.inspect_status = 1 or (iiq.inspect_status = 4 AND iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
        SUM(CASE WHEN iiq.inspect_status = 1 or (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
        /* 不合格 */
        SUM(CASE WHEN iiq.inspect_status = 2 or (iiq.inspect_status = 4 AND iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
        FROM ifs_inventory_quantity iiq
        INNER JOIN ins_order io1
        ON io1.ifs_inventory_id = iiq.id
        LEFT JOIN ins_unqualified_handler iuh ON iiq.id = iuh.inventory_quantity_id
        LEFT JOIN (
            SELECT
            iuh.id,
            coa.operation,
            iuh.inventory_quantity_id
            FROM ins_unqualified_handler iuh
            LEFT JOIN (
            SELECT
            *,
            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
            FROM
            common_oa
            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
            WHERE coa.operation !='退回' AND coa.operation is not null
        ) iuh ON iiq.id = iuh.inventory_quantity_id
        LEFT JOIN (
        SELECT
        is2.ins_order_id,
@@ -248,15 +290,29 @@
        SELECT
        iiq.supplier_name AS supplierName,
        COUNT(iiq.id) AS totalBatch,
        SUM(CASE WHEN iiq.inspect_status = 2 or (iiq.inspect_status = 4 AND iuh.id is not null) THEN 1 ELSE 0 END) AS unqualifiedBatch,
        ROUND(SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) / COUNT(*)* 100, 2 ) AS passRate
        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unqualifiedBatch,
        ROUND(SUM(CASE WHEN iiq.inspect_status = 1 and iuh.id is null THEN 1 ELSE 0 END) / COUNT(*)* 100, 2 ) AS passRate
        FROM ifs_inventory_quantity iiq
        INNER JOIN ins_order io1
        ON io1.ifs_inventory_id = iiq.id
        AND io1.order_type = #{dto.orderType}
        AND io1.state != -1
        AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
        LEFT JOIN ins_unqualified_handler iuh ON iiq.id = iuh.inventory_quantity_id
        LEFT JOIN (
            SELECT
            iuh.id,
            coa.operation,
            iuh.inventory_quantity_id
            FROM ins_unqualified_handler iuh
            LEFT JOIN (
            SELECT
            *,
            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
            FROM
            common_oa
            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
            WHERE coa.operation !='退回' AND coa.operation is not null
        ) iuh ON iiq.id = iuh.inventory_quantity_id
        LEFT JOIN (
        SELECT
        ins_order_id,
inspect-server/src/main/resources/mapper/InsUnqualifiedHandlerMapper.xml
@@ -93,6 +93,7 @@
                iuh.request_id,
                iuh.file_url,
                iuh.headline,
                iuh.ins_order_id,
                coa.operation
            from
                ins_unqualified_handler iuh