fcx
2025-11-25 dccbfeb549d2dd3b11e16c4073977de24f3e20f7
平板端上方添加一个搜索框提供查询
已修改2个文件
510 ■■■■ 文件已修改
StandardPda/MES.Service/Dto/service/ProductionLineDot.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/service/QC/ProductionLineService.cs 509 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Dto/service/ProductionLineDot.cs
@@ -20,6 +20,7 @@
    public string StatusUser { get; set; }
    public int Status { get; set; }  // 0: 未提交, 1: 已提交
    public string SearchValue { get; set; }
    public String SelectedIndex { get; set; }
}
/// <summary>
StandardPda/MES.Service/service/QC/ProductionLineService.cs
@@ -81,52 +81,171 @@
        // 第一步:查询工单基础数据
        // 第一步:查询工单基础数据
        //       var workOrderSql = @"
        //       SELECT
        //           A.ID,
        //           A.DAA001,
        //           item.ITEM_NO AS ItemNo,
        //           A.DAA003,
        //           A.DAA004,
        //           A.DAA008,
        //           A.DAA018,
        //           A.DAA019 AS DaA019,
        //           A.DAA020 AS Line,
        //           A.PID AS Pbaid,
        //           T.PROJECT_CODE AS ProjecT_CODE,
        //           u.FNAME AS FName,
        //           0 AS Urgent,
        //           0 AS IsFirst,
        //           CAST(NULL AS VARCHAR2(50)) AS BillNo,
        //           CAST(NULL AS VARCHAR2(50)) AS Result,
        //           CAST(BE1.FNAME AS VARCHAR2(50)) AS StatusUser,
        //           CAST(NULL AS DATE) AS CreateTime,
        //           CAST(NULL AS NUMBER) AS InspectionId
        //       FROM WOMDAA A
        //       LEFT JOIN WOMCAA c ON c.CAA001 = A.DAA021
        //       LEFT JOIN MES_PROJECT T ON C.PROJECT = T.ID
        //       LEFT JOIN MES_UNIT u ON TO_CHAR(u.ID) = TO_CHAR(A.DAA005)
        //left join MES_ITEMS item on item.ITEM_ID=c.CAA006
        // LEFT JOIN IQC_BEFORE_SJ BE ON BE.ITEM_ID = item.ITEM_ID
        //        LEFT JOIN IQC_BEFORE_FROM_SJ BE2 ON BE.PID = BE2.ID
        //        LEFT JOIN SYS_USER BE1 ON BE2.SID = BE1.FID
        //       WHERE A.DAA018 LIKE '%已开工%'
        //           AND A.FSTATUS = 1
        //           AND A.F_TYPE = 0
        //           AND CASE
        //               WHEN C.CAA023 = '0' THEN '开立'
        //               WHEN C.CAA023 = '1' THEN '已核准'
        //               WHEN C.CAA023 = '2' THEN '开工'
        //               WHEN C.CAA023 = '3' THEN '完工'
        //               WHEN C.CAA023 = '4' THEN '核准中'
        //           END LIKE '%开工%'";
        //       // 添加搜索条件
        //       if (StringUtil.IsNotNullOrEmpty(queryObj.SearchValue))
        //       {
        //           workOrderSql += @"
        //       AND (
        //               A.DAA001 LIKE :SearchValue
        //            OR T.PROJECT_CODE LIKE '%' || :SearchValue || '%'  -- 项目(来自MES_PROJECT表)
        //           OR A.DAA001 LIKE '%' || :SearchValue || '%'        -- 工单号(来自WOMDAA表)
        //           OR item.ITEM_NO LIKE '%' || :SearchValue || '%'    -- 物料号(来自MES_ITEMS表)
        //           OR item.ITEM_NAME LIKE '%' || :SearchValue || '%'  -- 物料名称(来自MES_ITEMS表)
        //       )";
        //       }
        var workOrderSql = @"
        SELECT
            A.ID,
            A.DAA001,
            item.ITEM_NO AS ItemNo,
            A.DAA003,
            A.DAA004,
            A.DAA008,
            A.DAA018,
            A.DAA019 AS DaA019,
            A.DAA020 AS Line,
            A.PID AS Pbaid,
            T.PROJECT_CODE AS ProjecT_CODE,
            u.FNAME AS FName,
            0 AS Urgent,
            0 AS IsFirst,
            CAST(NULL AS VARCHAR2(50)) AS BillNo,
            CAST(NULL AS VARCHAR2(50)) AS Result,
            CAST(BE1.FNAME AS VARCHAR2(50)) AS StatusUser,
            CAST(NULL AS DATE) AS CreateTime,
            CAST(NULL AS NUMBER) AS InspectionId
        FROM WOMDAA A
        LEFT JOIN WOMCAA c ON c.CAA001 = A.DAA021
        LEFT JOIN MES_PROJECT T ON C.PROJECT = T.ID
        LEFT JOIN MES_UNIT u ON TO_CHAR(u.ID) = TO_CHAR(A.DAA005)
 left join MES_ITEMS item on item.ITEM_ID=c.CAA006
  LEFT JOIN IQC_BEFORE_SJ BE ON BE.ITEM_ID = item.ITEM_ID
         LEFT JOIN IQC_BEFORE_FROM_SJ BE2 ON BE.PID = BE2.ID
         LEFT JOIN SYS_USER BE1 ON BE2.SID = BE1.FID
        WHERE A.DAA018 LIKE '%已开工%'
            AND A.FSTATUS = 1
            AND A.F_TYPE = 0
            AND CASE
                WHEN C.CAA023 = '0' THEN '开立'
                WHEN C.CAA023 = '1' THEN '已核准'
                WHEN C.CAA023 = '2' THEN '开工'
                WHEN C.CAA023 = '3' THEN '完工'
                WHEN C.CAA023 = '4' THEN '核准中'
            END LIKE '%开工%'";
SELECT
    A.ID,
    A.DAA001,
    item.ITEM_NO AS ItemNo,
    A.DAA003,
    A.DAA004,
    A.DAA008,
    A.DAA018,
    A.DAA019 AS DaA019,
    A.DAA020 AS Line,
    A.PID AS Pbaid,
    T.PROJECT_CODE AS ProjecT_CODE,
    u.FNAME AS FName,
    0 AS Urgent,
    0 AS IsFirst,
    CAST(NULL AS VARCHAR2(50)) AS BillNo,
    CAST(NULL AS VARCHAR2(50)) AS Result,
    CAST(BE1.FNAME AS VARCHAR2(50)) AS StatusUser,
    CAST(NULL AS DATE) AS CreateTime,
    CAST(NULL AS NUMBER) AS InspectionId
FROM WOMDAA A
LEFT JOIN WOMCAA c ON c.CAA001 = A.DAA021
LEFT JOIN MES_PROJECT T ON C.PROJECT = T.ID
LEFT JOIN MES_UNIT u ON TO_CHAR(u.ID) = TO_CHAR(A.DAA005)
LEFT JOIN MES_ITEMS item ON item.ITEM_ID = c.CAA006
LEFT JOIN MES_LINE ml ON ml.LINE_NO = A.DAA020
LEFT JOIN IQC_BEFORE_SJ BE ON BE.ITEM_ID = item.ITEM_ID
LEFT JOIN IQC_BEFORE_FROM_SJ BE2 ON BE.PID = BE2.ID
LEFT JOIN SYS_USER BE1 ON BE2.SID = BE1.FID
WHERE A.DAA018 LIKE '%已开工%'
    AND A.FSTATUS = 1
    AND A.F_TYPE = 0
    AND CASE
        WHEN C.CAA023 = '0' THEN '开立'
        WHEN C.CAA023 = '1' THEN '已核准'
        WHEN C.CAA023 = '2' THEN '开工'
        WHEN C.CAA023 = '3' THEN '完工'
        WHEN C.CAA023 = '4' THEN '核准中'
    END LIKE '%开工%'";
        // 添加搜索条件
        if (StringUtil.IsNotNullOrEmpty(queryObj.SearchValue))
        if (!string.IsNullOrEmpty(queryObj.SearchValue))
        {
            workOrderSql += " AND (A.DAA001 LIKE :SearchValue OR A.DAA002 LIKE :SearchValue)";
            switch (queryObj.SelectedIndex)
            {
                case "2": // 工单号
                    workOrderSql += " AND A.DAA001 LIKE '%' || :SearchValue || '%'";
                    break;
                case "3": // 物料号
                    workOrderSql += " AND item.ITEM_NO LIKE '%' || :SearchValue || '%'";
                    break;
                case "4": // 物料名称
                    workOrderSql += " AND item.ITEM_NAME LIKE '%' || :SearchValue || '%'";
                    break;
                case "0": // 项目编码
                    workOrderSql += " AND T.PROJECT_CODE LIKE '%' || :SearchValue || '%'";
                    break;
                case "1": // 线体
                    workOrderSql += " AND A.DAA020 LIKE '%' || :SearchValue || '%'";
                    break;
                default:
                    return (new List<ProductionLinePageResult>(), 0);
            }
        }
        // 根据 selectedIndex 添加额外的搜索条件
        var workOrders = db.SqlQueryable<ProductionLinePageResult>(workOrderSql)
            .AddParameters(new { SearchValue = $"%{queryObj.SearchValue}%" })
@@ -257,81 +376,261 @@
    {
        var totalCount = 0;
        //        var sql = @"
        //            SELECT
        //                A.ID AS InspectionId,
        //                A.BILL_NO AS BillNo,
        //                A.PBAID AS Pbaid,
        //                DA.DAA001,
        //               item.ITEM_NO AS ItemNo,
        //                DA.DAA003,
        //                DA.DAA004,
        //                DA.DAA008,
        //                DA.DAA018,
        //                DA.DAA019 AS DaA019,
        //                DA.DAA020 AS Line,
        //                A.CREATE_TIME AS CreateTime,
        //                 NVL(BE3.FNAME, BE1.FNAME)  AS StatusUser,
        //                A.FSUBMIT,
        //                A.CREATE_BY,
        //                0 AS Urgent,
        //                0 AS IsFirst,
        //                T.PROJECT_CODE AS ProjecT_CODE,
        //                CASE
        //                    WHEN 检验结果 IS NULL THEN '未完成'
        //                    ELSE 检验结果
        //                END AS Result
        //            FROM QS_ITEM_IPI_REQ A
        //            LEFT JOIN WOMDAA DA ON DA.ID = A.PBAID
        //            LEFT JOIN WOMCAA c ON c.CAA001 = DA.DAA021
        //            LEFT JOIN MES_PROJECT T ON C.PROJECT = T.ID
        // left join MES_ITEMS item on item.ITEM_ID=c.CAA006
        //--变更后
        //LEFT JOIN INSPECTOR_CHANGE_SJ_LOG chlog
        //                   ON chlog.INSPECTION_NO = a.BILL_NO AND chlog.IS_VALID = 'Y'
        // LEFT JOIN SYS_USER BE3 ON chlog.INSPECTOR = BE3.FCODE
        //--变更前
        //  LEFT JOIN IQC_BEFORE_SJ BE ON BE.ITEM_ID = item.ITEM_ID
        //         LEFT JOIN IQC_BEFORE_FROM_SJ BE2 ON BE.PID = BE2.ID
        //         LEFT JOIN SYS_USER BE1 ON BE2.SID = BE1.FID
        //            LEFT JOIN (
        //                SELECT
        //                    PID,
        //                    CASE
        //                        WHEN (COUNT(CASE WHEN PASSED = -1 THEN 1 END) > 0) THEN NULL
        //                        WHEN (COUNT(CASE WHEN PASSED = 1 THEN 1 END) = COUNT(*)) THEN '合格'
        //                        ELSE '不合格'
        //                    END AS 检验结果
        //                FROM (
        //                    SELECT
        //                        A.PID,
        //                        CASE
        //                            WHEN (A.IS_PASS IS NULL OR B.完成状态 IS NULL) THEN -1
        //                            WHEN (NVL(A.IS_PASS, -1) = NVL(B.完成状态, -1) AND A.IS_PASS = 1) THEN 1
        //                            WHEN (NVL(A.IS_PASS, -1) = NVL(B.完成状态, -1) AND A.IS_PASS = 0) THEN 0
        //                            ELSE -1
        //                        END AS PASSED
        //                    FROM QS_ITEM_IPI_ITEM A
        //                    LEFT JOIN (
        //                        SELECT
        //                            PID,
        //                            CASE
        //                                WHEN (COUNT(CASE WHEN FSTAND IS NULL THEN 1 END) > 0) THEN NULL
        //                                WHEN (COUNT(CASE WHEN FSTAND = '√' THEN 1 END) = COUNT(1)) THEN 1
        //                                ELSE 0
        //                            END AS 完成状态
        //                        FROM QS_ITEM_IPI_ITEM_DETAIL
        //                        GROUP BY PID
        //                    ) B ON A.ID = B.PID
        //                )
        //                GROUP BY PID
        //            ) RES ON RES.PID = A.ID
        //            WHERE A.ID IS NOT NULL";
        //        // 添加搜索条件
        //        if (StringUtil.IsNotNullOrEmpty(queryObj.SearchValue))
        //        {
        //            sql += sql += @"
        //    AND (
        //           A.BILL_NO LIKE :SearchValue
        //        OR DA.DAA001 LIKE :SearchValue
        //        OR DA.DAA002 LIKE :SearchValue
        //        OR T.PROJECT_CODE LIKE '%' || :SearchValue || '%'  -- 项目(来自MES_PROJECT表)
        //       OR ml.LINE_NAME LIKE '%' || :SearchValue || '%'    -- 线体(来自MES_LINE表)
        //      OR A.DAA001 LIKE '%' || :SearchValue || '%'        -- 工单号(来自WOMDAA表)
        //      OR item.ITEM_NO LIKE '%' || :SearchValue || '%'    -- 物料号(来自MES_ITEMS表)
        //      OR item.ITEM_NAME LIKE '%' || :SearchValue || '%'  -- 物料名称(来自MES_ITEMS表)
        //    )";
        //        }
        var sql = @"
    SELECT
        A.ID AS InspectionId,
        A.BILL_NO AS BillNo,
        A.PBAID AS Pbaid,
        DA.DAA001,
        item.ITEM_NO AS ItemNo,
        DA.DAA003,
        DA.DAA004,
        DA.DAA008,
        DA.DAA018,
        DA.DAA019 AS DaA019,
        DA.DAA020 AS Line,
        A.CREATE_TIME AS CreateTime,
        NVL(BE3.FNAME, BE1.FNAME) AS StatusUser,
        A.FSUBMIT,
        A.CREATE_BY,
        0 AS Urgent,
        0 AS IsFirst,
        T.PROJECT_CODE AS ProjecT_CODE,
        CASE
            WHEN 检验结果 IS NULL THEN '未完成'
            ELSE 检验结果
        END AS Result
    FROM QS_ITEM_IPI_REQ A
    LEFT JOIN WOMDAA DA ON DA.ID = A.PBAID
    LEFT JOIN WOMCAA c ON c.CAA001 = DA.DAA021
    LEFT JOIN MES_PROJECT T ON C.PROJECT = T.ID
    LEFT JOIN MES_ITEMS item ON item.ITEM_ID = c.CAA006
    LEFT JOIN MES_LINE ml ON ml.LINE_NO = DA.DAA020
    --变更后
    LEFT JOIN INSPECTOR_CHANGE_SJ_LOG chlog
               ON chlog.INSPECTION_NO = a.BILL_NO AND chlog.IS_VALID = 'Y'
    LEFT JOIN SYS_USER BE3 ON chlog.INSPECTOR = BE3.FCODE
    --变更前
    LEFT JOIN IQC_BEFORE_SJ BE ON BE.ITEM_ID = item.ITEM_ID
    LEFT JOIN IQC_BEFORE_FROM_SJ BE2 ON BE.PID = BE2.ID
    LEFT JOIN SYS_USER BE1 ON BE2.SID = BE1.FID
    LEFT JOIN (
        SELECT
            PID,
            CASE
                WHEN (COUNT(CASE WHEN PASSED = -1 THEN 1 END) > 0) THEN NULL
                WHEN (COUNT(CASE WHEN PASSED = 1 THEN 1 END) = COUNT(*)) THEN '合格'
                ELSE '不合格'
            END AS 检验结果
        FROM (
            SELECT 
                A.ID AS InspectionId,
                A.BILL_NO AS BillNo,
                A.PBAID AS Pbaid,
                DA.DAA001,
               item.ITEM_NO AS ItemNo,
                DA.DAA003,
                DA.DAA004,
                DA.DAA008,
                DA.DAA018,
                DA.DAA019 AS DaA019,
                DA.DAA020 AS Line,
                A.CREATE_TIME AS CreateTime,
                 NVL(BE3.FNAME, BE1.FNAME)  AS StatusUser,
                A.FSUBMIT,
                A.CREATE_BY,
                0 AS Urgent,
                0 AS IsFirst,
                T.PROJECT_CODE AS ProjecT_CODE,
                A.PID,
                CASE
                    WHEN 检验结果 IS NULL THEN '未完成'
                    ELSE 检验结果
                END AS Result
            FROM QS_ITEM_IPI_REQ A
            LEFT JOIN WOMDAA DA ON DA.ID = A.PBAID
            LEFT JOIN WOMCAA c ON c.CAA001 = DA.DAA021
            LEFT JOIN MES_PROJECT T ON C.PROJECT = T.ID
 left join MES_ITEMS item on item.ITEM_ID=c.CAA006
--变更后
LEFT JOIN INSPECTOR_CHANGE_SJ_LOG chlog
                   ON chlog.INSPECTION_NO = a.BILL_NO AND chlog.IS_VALID = 'Y'
 LEFT JOIN SYS_USER BE3 ON chlog.INSPECTOR = BE3.FCODE
--变更前
  LEFT JOIN IQC_BEFORE_SJ BE ON BE.ITEM_ID = item.ITEM_ID
         LEFT JOIN IQC_BEFORE_FROM_SJ BE2 ON BE.PID = BE2.ID
         LEFT JOIN SYS_USER BE1 ON BE2.SID = BE1.FID
                    WHEN (A.IS_PASS IS NULL OR B.完成状态 IS NULL) THEN -1
                    WHEN (NVL(A.IS_PASS, -1) = NVL(B.完成状态, -1) AND A.IS_PASS = 1) THEN 1
                    WHEN (NVL(A.IS_PASS, -1) = NVL(B.完成状态, -1) AND A.IS_PASS = 0) THEN 0
                    ELSE -1
                END AS PASSED
            FROM QS_ITEM_IPI_ITEM A
            LEFT JOIN (
                SELECT 
                    PID,
                    CASE
                        WHEN (COUNT(CASE WHEN PASSED = -1 THEN 1 END) > 0) THEN NULL
                        WHEN (COUNT(CASE WHEN PASSED = 1 THEN 1 END) = COUNT(*)) THEN '合格'
                        ELSE '不合格'
                    END AS 检验结果
                FROM (
                    SELECT
                        A.PID,
                        CASE
                            WHEN (A.IS_PASS IS NULL OR B.完成状态 IS NULL) THEN -1
                            WHEN (NVL(A.IS_PASS, -1) = NVL(B.完成状态, -1) AND A.IS_PASS = 1) THEN 1
                            WHEN (NVL(A.IS_PASS, -1) = NVL(B.完成状态, -1) AND A.IS_PASS = 0) THEN 0
                            ELSE -1
                        END AS PASSED
                    FROM QS_ITEM_IPI_ITEM A
                    LEFT JOIN (
                        SELECT
                            PID,
                            CASE
                                WHEN (COUNT(CASE WHEN FSTAND IS NULL THEN 1 END) > 0) THEN NULL
                                WHEN (COUNT(CASE WHEN FSTAND = '√' THEN 1 END) = COUNT(1)) THEN 1
                                ELSE 0
                            END AS 完成状态
                        FROM QS_ITEM_IPI_ITEM_DETAIL
                        GROUP BY PID
                    ) B ON A.ID = B.PID
                )
                        WHEN (COUNT(CASE WHEN FSTAND IS NULL THEN 1 END) > 0) THEN NULL
                        WHEN (COUNT(CASE WHEN FSTAND = '√' THEN 1 END) = COUNT(1)) THEN 1
                        ELSE 0
                    END AS 完成状态
                FROM QS_ITEM_IPI_ITEM_DETAIL
                GROUP BY PID
            ) RES ON RES.PID = A.ID
            WHERE A.ID IS NOT NULL";
            ) B ON A.ID = B.PID
        )
        GROUP BY PID
    ) RES ON RES.PID = A.ID
    WHERE A.ID IS NOT NULL";
        // 添加搜索条件
        if (StringUtil.IsNotNullOrEmpty(queryObj.SearchValue))
        if (!string.IsNullOrEmpty(queryObj.SearchValue))
        {
            sql += " AND (A.BILL_NO LIKE :SearchValue OR DA.DAA001 LIKE :SearchValue OR DA.DAA002 LIKE :SearchValue)";
            switch (queryObj.SelectedIndex)
            {
                case "2": // 工单号
                    sql += " AND DA.DAA001 LIKE '%' || :SearchValue || '%'";
                    break;
                case "3": // 物料号
                    sql += " AND item.ITEM_NO LIKE '%' || :SearchValue || '%'";
                    break;
                case "4": // 物料名称
                    sql += " AND item.ITEM_NAME LIKE '%' || :SearchValue || '%'";
                    break;
                case "0": // 项目编码
                    sql += " AND T.PROJECT_CODE LIKE '%' || :SearchValue || '%'";
                    break;
                case "1": // 线体
                    sql += " AND DA.DAA020 LIKE '%' || :SearchValue || '%'";
                    break;
                default:
                    return (new List<ProductionLinePageResult>(), 0);
            }
        }
        sql += " ORDER BY A.CREATE_TIME DESC";