Explorar el Código

设备运行跟踪 车间报工 印版表格分页优化

zck hace 9 meses
padre
commit
835fce6424
Se han modificado 1 ficheros con 103 adiciones y 87 borrados
  1. 103 87
      application/api/controller/Facility.php

+ 103 - 87
application/api/controller/Facility.php

@@ -1057,95 +1057,111 @@ class Facility extends Api
      * @return void
      */
     public function PrintDetail()
-    {
-        if ($this->request->isGet() === false){
-            $this->error('请求失败');
-        }
-        $param = $this->request->param();
-        if (empty($param)){
-            $this->error('参数错误');
-        }
-        $productCode = $param['productCode'];
-        $code = $param['code'].'%';
-        $workOrder = $param['workOrder'];
-//        $sql = "SELECT
-//                RTRIM(a.`存货编码`) as `存货编码`,
-//                RTRIM(c.`物料名称`) as `存货名称`,
-//                RTRIM(b.`印版名称`) as `印版名称`,
-//                RTRIM(b.`供方批号`) as `供方批号`,
-//                RTRIM(b.`制造日期`) as `制造日期`,
-//                SUM(d.`Yb_印数`) as `印数`,
-//                RTRIM(e.`名称`) as `印版类别`,
-//                SUBSTRING(a.YB_Cpdh,1,4) as `客户编号`,
-//                RTRIM(f.`Gd_客户名称`) as `客户名称`,
-//                RTRIM(a.YB_Cpdh) as `产品编号`,
-//                RTRIM(f.Gd_cpmc) as `产品名称`,
-//                RTRIM(d.UniqID) as UniqId
-//                FROM `产品_印版资料` as a
-//                LEFT JOIN `产品_印版库` as b ON b.`存货编码` = a.`存货编码`
-//                JOIN `物料_存货编码` as c ON c.`物料代码` = a.`存货编码`
-//                LEFT JOIN `工单_印版领用记录` as d ON d.`Yb_供方批号` = b.`供方批号`
-//                JOIN `物料_存货结构` as e ON e.`编号` = SUBSTRING(a.`存货编码`,1,4)
-//                JOIN `工单_基本资料` as f ON a.YB_Cpdh = f.Gd_cpdh
-//                WHERE a.YB_Cpdh = '{$productCode}'
-//                AND a.`存货编码` LIKE '{$code}'
-//                AND f.Gd_gdbh = '{$workOrder}'
-//                AND b.`报废日期` = '1900-01-01 00:00:00'
-//                GROUP BY b.`供方批号`
-//                ORDER BY a.`存货编码`";
-        $sql = "SELECT 
-                    RTRIM(a.`存货编码`) AS `存货编码`,
-                    RTRIM(c.`物料名称`) AS `存货名称`,
-                    RTRIM(b.`印版名称`) AS `印版名称`,
-                    RTRIM(b.`供方批号`) AS `供方批号`,
-                    RTRIM(b.`制造日期`) AS `制造日期`,
-                    SUM(d.`Yb_印数`) AS `印数`,
-                    RTRIM(e.`名称`) AS `印版类别`,
-                    SUBSTRING(a.YB_Cpdh, 1, 4) AS `客户编号`,
-                    RTRIM(f.`Gd_客户名称`) AS `客户名称`,
-                    RTRIM(a.YB_Cpdh) AS `产品编号`,
-                    RTRIM(f.Gd_cpmc) AS `产品名称`,
-                    MAX(d.UniqID) AS UniqId,
-                    MAX(CASE 
-                        WHEN d.`Yb_领用日期` IS NOT NULL AND d.`Yb_退还日期` IS NULL THEN d.`Yb_工单编号`
-                        ELSE NULL 
-                    END) AS `工单编号`
-                FROM `产品_印版资料` a 
-                JOIN `物料_存货编码` c ON c.`物料代码` = a.`存货编码`
-                JOIN `物料_存货结构` e ON e.`编号` = (
-                    CASE 
-                        WHEN a.`存货编码` REGEXP '[A-Za-z]' 
-                        THEN SUBSTRING(a.`存货编码`, 1, 5)
-                        ELSE SUBSTRING(a.`存货编码`, 1, 4) 
-                    END
-                )
-                JOIN `工单_基本资料` f ON a.YB_Cpdh = f.Gd_cpdh
-                LEFT JOIN `产品_印版库` b ON b.`存货编码` = a.`存货编码`
-                    AND b.`报废日期` = '1900-01-01 00:00:00'
-                LEFT JOIN `工单_印版领用记录` d ON d.`Yb_供方批号` = b.`供方批号`
-                    AND d.`Yb_工单编号` IS NOT NULL
-                WHERE 
-                    a.YB_Cpdh = '{$productCode}' 
-                    AND a.`存货编码` LIKE '{$code}'
-                    AND f.Gd_gdbh = '{$workOrder}'
-                GROUP BY 
-                    a.`存货编码`,
-                    c.`物料名称`,
-                    b.`印版名称`,
-                    b.`供方批号`,
-                    b.`制造日期`,
-                    e.`名称`,
-                    f.`Gd_客户名称`,
-                    a.YB_Cpdh,
-                    f.Gd_cpmc
-                ORDER BY a.`存货编码`";
-        $list = Db::query($sql);
-        if (empty($list)){
-            $this->success('');
-        }
-        $this->success('成功',$list);
+{
+    if (!$this->request->isGet()) {
+        $this->error('请求失败');
     }
 
+    $param = $this->request->param();
+    if (empty($param)) {
+        $this->error('参数错误');
+    }
+
+    // 分页参数(带默认值)
+    $page = isset($param['page']) ? max(1, intval($param['page'])) : 1;
+    $limit = isset($param['limit']) ? min(max(1, intval($param['limit'])), 100) : 10;
+
+    $productCode = $param['productCode'];
+    $code = $param['code'] . '%';
+    $workOrder = $param['workOrder'];
+
+    // 1. 先查询总数
+    $countSql = "SELECT COUNT(*) AS total FROM (
+        SELECT 
+            b.`供方批号`
+        FROM `产品_印版资料` a 
+        JOIN `物料_存货编码` c ON c.`物料代码` = a.`存货编码`
+        JOIN `物料_存货结构` e ON e.`编号` = (
+            CASE 
+                WHEN a.`存货编码` REGEXP '[A-Za-z]' 
+                THEN SUBSTRING(a.`存货编码`, 1, 5)
+                ELSE SUBSTRING(a.`存货编码`, 1, 4) 
+            END
+        )
+        JOIN `工单_基本资料` f ON a.YB_Cpdh = f.Gd_cpdh
+        LEFT JOIN `产品_印版库` b ON b.`存货编码` = a.`存货编码`
+            AND b.`报废日期` = '1900-01-01 00:00:00'
+        LEFT JOIN `工单_印版领用记录` d ON d.`Yb_供方批号` = b.`供方批号`
+            AND d.`Yb_工单编号` IS NOT NULL
+        WHERE 
+            a.YB_Cpdh = '{$productCode}' 
+            AND a.`存货编码` LIKE '{$code}'
+            AND f.Gd_gdbh = '{$workOrder}'
+        GROUP BY 
+            a.`存货编码`,
+            b.`供方批号`
+    ) AS t";
+
+    $total = Db::query($countSql)[0]['total'] ?? 0;
+
+    // 2. 查询分页数据
+    $dataSql = "SELECT 
+        RTRIM(a.`存货编码`) AS `存货编码`,
+        RTRIM(c.`物料名称`) AS `存货名称`,
+        RTRIM(b.`印版名称`) AS `印版名称`,
+        RTRIM(b.`供方批号`) AS `供方批号`,
+        RTRIM(b.`制造日期`) AS `制造日期`,
+        SUM(d.`Yb_印数`) AS `印数`,
+        RTRIM(e.`名称`) AS `印版类别`,
+        SUBSTRING(a.YB_Cpdh, 1, 4) AS `客户编号`,
+        RTRIM(f.`Gd_客户名称`) AS `客户名称`,
+        RTRIM(a.YB_Cpdh) AS `产品编号`,
+        RTRIM(f.Gd_cpmc) AS `产品名称`,
+        MAX(d.UniqID) AS UniqId,
+        MAX(CASE 
+            WHEN d.`Yb_领用日期` IS NOT NULL AND d.`Yb_退还日期` IS NULL 
+            THEN d.`Yb_工单编号`
+            ELSE NULL 
+        END) AS `工单编号`
+    FROM `产品_印版资料` a 
+    JOIN `物料_存货编码` c ON c.`物料代码` = a.`存货编码`
+    JOIN `物料_存货结构` e ON e.`编号` = (
+        CASE 
+            WHEN a.`存货编码` REGEXP '[A-Za-z]' 
+            THEN SUBSTRING(a.`存货编码`, 1, 5)
+            ELSE SUBSTRING(a.`存货编码`, 1, 4) 
+        END
+    )
+    JOIN `工单_基本资料` f ON a.YB_Cpdh = f.Gd_cpdh
+    LEFT JOIN `产品_印版库` b ON b.`存货编码` = a.`存货编码`
+        AND b.`报废日期` = '1900-01-01 00:00:00'
+    LEFT JOIN `工单_印版领用记录` d ON d.`Yb_供方批号` = b.`供方批号`
+        AND d.`Yb_工单编号` IS NOT NULL
+    WHERE 
+        a.YB_Cpdh = '{$productCode}' 
+        AND a.`存货编码` LIKE '{$code}'
+        AND f.Gd_gdbh = '{$workOrder}'
+    GROUP BY 
+        a.`存货编码`,
+        c.`物料名称`,
+        b.`印版名称`,
+        b.`供方批号`,
+        b.`制造日期`,
+        e.`名称`,
+        f.`Gd_客户名称`,
+        a.YB_Cpdh,
+        f.Gd_cpmc
+    ORDER BY a.`存货编码`
+    LIMIT " . ($page - 1) * $limit . ", " . $limit;
+
+    $list = Db::query($dataSql);
+
+    $this->success('成功', [
+        'data' => $list ?: [],
+        'total' => $total,
+    ]);
+}
+
     /**
      * 换型清场->左侧菜单栏
      * @ApiMethod  (GET)