|
|
@@ -2869,19 +2869,73 @@ class WorkOrderSpotCheck extends Api{
|
|
|
if (empty($param)){
|
|
|
$this->error('参数错误');
|
|
|
}
|
|
|
- $list = \db('工单_基本资料')
|
|
|
+
|
|
|
+ //优化前:循环里查数据库 → 有 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('a.生产款号|a.订单编号|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 关联订单,c.关联编号')
|
|
|
- ->group('物料编码')
|
|
|
+ // 关联面料表
|
|
|
+ ->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_物料编码')
|
|
|
->order('a.订单编号 desc')
|
|
|
->select();
|
|
|
+
|
|
|
if (empty($list)){
|
|
|
$res = \db('工单_基本资料')->alias('a')
|
|
|
->join('工单_印件资料 b','a.订单编号 = b.订单编号')
|