liuhairui 1 månad sedan
förälder
incheckning
ffbc7f1ec3
1 ändrade filer med 24 tillägg och 64 borttagningar
  1. 24 64
      application/api/controller/WorkOrderSpotCheck.php

+ 24 - 64
application/api/controller/WorkOrderSpotCheck.php

@@ -2869,73 +2869,33 @@ class WorkOrderSpotCheck extends Api{
         if (empty($param)){
             $this->error('参数错误');
         }
-
-        //优化前:循环里查数据库 → 有 1000 个订单就查 1000 次,会出现卡死
-        // $list = \db('工单_基本资料')->alias('a')
-//            ->field('
-//            a.订单编号,
-//            a.生产款号,
-//            a.客户编号,
-//            a.款式,
-//            a.订单数量,
-//            a.落货日期,
-//            a.接单日期,
-//            a.Sys_id as 创建人员,
-//            a.Sys_rq as 创建时间,
-//            b.BOM_颜色 as 颜色,
-//            b.BOM_物料编码 as 物料编码,
-//            b.BOM_物料名称 as 物料名称,
-//            GROUP_CONCAT(DISTINCT c.订单编号 SEPARATOR ",") AS 关联订单,
-//            c.关联编号')
-//            ->group('物料编码')
-//            ->join('工单_面料资料 b','a.订单编号 = b.BOM_工单编号')
-//            ->join('工单关联表 c','a.订单编号 = c.订单编号 AND b.BOM_物料编码 = c.物料编号')
-//            ->where('a.生产款号|a.订单编号|b.BOM_物料编码','like','%'.$param['search'].'%')
-//            ->where('a.Mod_rq',null)
-//            ->where('b.Mod_rq',null)
-//            ->where('c.Mod_rq',null)
-//            ->order('a.订单编号 desc')
-//            ->select();
-
-        //优化后:只执行 1 次查询,替代 N 次循环
-        $list = Db::name('工单_基本资料')
-            ->alias('a')
-            // 关联面料表
-            ->join('工单_面料资料 b', 'a.订单编号 = b.BOM_工单编号')
-            // 关联工单附表
-            ->join('工单关联表 c', 'a.订单编号 = c.订单编号 AND b.BOM_物料编码 = c.物料编号')
-            // 搜索条件
-            ->where(function ($query) use ($param) {
-                $query->where('a.生产款号', 'like', '%' . $param['search'] . '%')
-                    ->whereOr('a.订单编号', 'like', '%' . $param['search'] . '%')
-                    ->whereOr('b.BOM_物料编码', 'like', '%' . $param['search'] . '%');
-            })
-            // 未删除数据
-            ->where('a.Mod_rq', null)
-            ->where('b.Mod_rq', null)
-            ->where('c.Mod_rq', null)
-            // 查询字段
-            ->field([
-                'a.订单编号',
-                'a.生产款号',
-                'a.客户编号',
-                'a.款式',
-                'a.订单数量',
-                'a.落货日期',
-                'a.接单日期',
-                'a.Sys_id as 创建人员',
-                'a.Sys_rq as 创建时间',
-                'b.BOM_颜色 as 颜色',
-                'b.BOM_物料编码 as 物料编码',
-                'b.BOM_物料名称 as 物料名称',
-                // 合并关联订单
-                'GROUP_CONCAT(DISTINCT c.订单编号 SEPARATOR ",") as 关联订单',
-                'GROUP_CONCAT(DISTINCT c.关联编号 SEPARATOR ",") as 关联编号'
-            ])
-            ->group('a.订单编号,b.BOM_物料编码')
+         $list = \db('工单_基本资料')->alias('a')
+            ->field('
+            a.订单编号,
+            a.生产款号,
+            a.客户编号,
+            a.款式,
+            a.订单数量,
+            a.落货日期,
+            a.接单日期,
+            a.Sys_id as 创建人员,
+            a.Sys_rq as 创建时间,
+            b.BOM_颜色 as 颜色,
+            b.BOM_物料编码 as 物料编码,
+            b.BOM_物料名称 as 物料名称,
+            GROUP_CONCAT(DISTINCT c.订单编号 SEPARATOR ",") AS 关联订单,
+            c.关联编号')
+            ->group('物料编码')
+            ->join('工单_面料资料 b','a.订单编号 = b.BOM_工单编号')
+            ->join('工单关联表 c','a.订单编号 = c.订单编号 AND b.BOM_物料编码 = c.物料编号')
+            ->where('a.生产款号|a.订单编号|b.BOM_物料编码','like','%'.$param['search'].'%')
+            ->where('a.Mod_rq',null)
+            ->where('b.Mod_rq',null)
+            ->where('c.Mod_rq',null)
             ->order('a.订单编号 desc')
             ->select();
 
+
         if (empty($list)){
             $res =  \db('工单_基本资料')->alias('a')
                 ->join('工单_印件资料 b','a.订单编号 = b.订单编号')