Browse Source

机台日报表列表查询优化, 成品入仓

曹鹤洋 1 year ago
parent
commit
0738be964d

+ 227 - 153
application/api/controller/FinishedProductWarehousing.php

@@ -124,15 +124,15 @@ class FinishedProductWarehousing extends Api
         if (isset($req['limit']) && !empty($req['limit'])) $limit = $req['limit'];
 
         if(strpos($req['date'],'-')){
-            $where = ['c.Sys_rq'=>['like','%'.$req['date'].'%']];
-            $option = ['Sys_rq'=>['like','%'.$req['date'].'%']];
+            $where = ['c.Sys_rq'=>['like',$req['date'].'%']];
+            $option = ['Sys_rq'=>['like',$req['date'].'%']];
         }else{
             $where = [];
             $option = [];
         }
         if (isset($req['sys_id']) && !empty($req['sys_id'])){
-            $where['c.Sys_id'] = ['LIKE','%'.$req['sys_id'].'%'];
-            $option['Sys_id'] = ['LIKE','%'.$req['sys_id'].'%'];
+            $where['c.Sys_id'] = ['LIKE',$req['sys_id'].'%'];
+            $option['Sys_id'] = ['LIKE',$req['sys_id'].'%'];
         }
 
         //客户编号
@@ -590,14 +590,14 @@ class FinishedProductWarehousing extends Api
         }
 
         if(strpos($req['date'],'-')){
-            $where = ['c.Sys_rq'=>['like','%'.$req['date'].'%']];
+            $where = ['c.Sys_rq'=>['like',$req['date'].'%']];
         }else if(empty($req['date'])){
             $where = [];
         }else{
             $where = ['c.jjcp_gdbh'=>$req['date']];
         }
         if (isset($req['sys_id']) && !empty($req['sys_id'])){
-            $where['c.Sys_id'] = ['LIKE','%'.$req['sys_id'].'%'];
+            $where['c.Sys_id'] = ['LIKE',$req['sys_id'].'%'];
         }
 
         $arr = [
@@ -1044,55 +1044,17 @@ class FinishedProductWarehousing extends Api
         }
         $req = $this->request->param();
 
-        $page = 1;
-        $limit = 15;
-        if (isset($req['page']) && !empty($req['page'])) $page = $req['page'];
-        if (isset($req['limit']) && !empty($req['limit'])) $limit = $req['limit'];
-
-        $where = [
-
-        ];
-
-        $rows = db('db_包装产量预报')
-            ->field('sczl_rq,sczl_gdbh1,sczl_gdbh2,sczl_gdbh3,sczl_gdbh4,sczl_gdbh5,sczl_gdbh6,sys_rq,mod_rq,UniqId')
-            ->where('sys_rq','>=','2023-10-25')
-            ->select();
-        $uniqueValues = [];
-        foreach ($rows as $row) {
-            $gdbhArray = array($row['sczl_gdbh1'], $row['sczl_gdbh2'], $row['sczl_gdbh3'], $row['sczl_gdbh4'], $row['sczl_gdbh5'], $row['sczl_gdbh6']);
-            $uniqueValues = array_merge($uniqueValues, array_unique($gdbhArray));
-        }
-
-        $uniqueValues = array_values(array_unique($uniqueValues));
-        halt($uniqueValues);
-        $rows = db('成品入仓')->alias('c')
-            ->field('c.jjcp_gdbh, c.jjcp_yjno, rtrim(c.jjcp_cpmc) as jjcp_cpmc,
-            y.yj_成品数量, y.yj_实际投料, rtrim(c.jjcp_cpdh) as jjcp_cpdh, rtrim(c.jjcp_smb) as jjcp_smb,
-            sum(c.jjcp_sl) as jjcp_sls, left(max(c.Sys_rq),10) as Sys_rq')
-            ->where($where)
-            ->where('y.yj_Yjdh=c.jjcp_cpdh')
-            ->join('工单_印件资料 y','y.Yj_Gdbh=c.jjcp_gdbh')
-            ->order('c.jjcp_gdbh desc, c.jjcp_yjno asc')
-            ->group('c.jjcp_gdbh, c.jjcp_cpdh')
-            ->page($page,$limit)
-            ->select();
-
-        $total = db('成品入仓')->alias('c')
-            ->where($where)
-            ->where('y.yj_Yjdh=c.jjcp_cpdh')
-            ->join('工单_印件资料 y','y.Yj_Gdbh=c.jjcp_gdbh')
-            ->group('c.jjcp_gdbh, c.jjcp_cpdh')
-            ->count();
-        $brr = db('成品入仓')
-            ->group('jjcp_gdbh,jjcp_cpdh')
-            ->column('CONCAT(jjcp_gdbh, "-", rtrim(jjcp_cpdh)), sum(jjcp_sl)');
+        // $page = 1;
+        // $limit = 15;
+        // if (isset($req['page']) && !empty($req['page'])) $page = $req['page'];
+        // if (isset($req['limit']) && !empty($req['limit'])) $limit = $req['limit'];
 
-        $num = db('db_包装产量预报')->count();
+        $date = date('Y-m-d',strtotime('-3 month'));
         $arr1 = db('db_包装产量预报')
             ->field('sczl_gdbh1, sczl_gdbh2, sczl_gdbh3, sczl_gdbh4, sczl_gdbh5, sczl_gdbh6, 
-            substr(sczl_yjGx1,2,1) as sczl_yjGx1, substr(sczl_yjGx2,2,1) as sczl_yjGx2, 
-            substr(sczl_yjGx3,2,1) as sczl_yjGx3, substr(sczl_yjGx4,2,1) as sczl_yjGx4, 
-            substr(sczl_yjGx5,2,1) as sczl_yjGx5, substr(sczl_yjGx6,2,1) as sczl_yjGx6, 
+            cast(substr(sczl_yjGx1,1,2) as signed) as sczl_yjGx1, cast(substr(sczl_yjGx2,1,2) as signed) as sczl_yjGx2, 
+            cast(substr(sczl_yjGx3,1,2) as signed) as sczl_yjGx3, cast(substr(sczl_yjGx4,1,2) as signed) as sczl_yjGx4, 
+            cast(substr(sczl_yjGx5,1,2) as signed) as sczl_yjGx5, cast(substr(sczl_yjGx6,1,2) as signed) as sczl_yjGx6, 
             (sczl_cl1*sczl_PgCl1+sczl_clAdd1) as sczl_cls1, 
             (sczl_cl2*sczl_PgCl2+sczl_clAdd2) as sczl_cls2, 
             (sczl_cl3*sczl_PgCl3+sczl_clAdd3) as sczl_cls3, 
@@ -1100,7 +1062,7 @@ class FinishedProductWarehousing extends Api
             (sczl_cl5*sczl_PgCl5+sczl_clAdd5) as sczl_cls5, 
             (sczl_cl6*sczl_PgCl6+sczl_clAdd6) as sczl_cls6
             ')
-            ->limit($num)
+            ->where('sczl_rq','>=',$date)
             ->select();
 
         $data1 = [];
@@ -1113,32 +1075,143 @@ class FinishedProductWarehousing extends Api
                 }
             }
         }
+        krsort($data1);
+        
+        //成品入仓中jjcp_smb不为空的工单
+        $rows1 = db('成品入仓')
+            ->where('jjcp_smb','<>','')
+            ->order('jjcp_gdbh desc')
+            ->column("CONCAT(jjcp_gdbh, '-', jjcp_yjno) AS gdyj, UniqId");
 
-        foreach ($rows as $key=>$value) {
-            $rows[$key]['yj_成品数量'] = (string)floatval($value['yj_成品数量']*10000);
-            $rows[$key]['yj_实际投料'] = (string)floatval($value['yj_实际投料']*10000);
-            if(array_key_exists($value['jjcp_gdbh'].'-'.$value['jjcp_yjno'],$data1)){
-                $rows[$key]['包装产量'] = $data1[$value['jjcp_gdbh'].'-'.$value['jjcp_yjno']];
-            }else{
-                $rows[$key]['包装产量'] = '';
-            }
-            if(array_key_exists($value['jjcp_gdbh'].'-'.$value['jjcp_cpdh'],$brr)){
-                $rows[$key]['入仓数量'] = $brr[$value['jjcp_gdbh'].'-'.$value['jjcp_cpdh']];
-            }else{
-                $rows[$key]['入仓数量'] = '';
-            }
-            if($value['jjcp_smb'] !=''){
-                $rows[$key]['状态'] = '完工';
-                $rows[$key]['缺数'] = (int)$rows[$key]['yj_成品数量']-(int)$rows[$key]['包装产量'];
-            }else{
-                $rows[$key]['状态'] = '';
-                $rows[$key]['缺数'] = '';
+        $rows2 = db('成品入仓')
+            ->where('jjcp_sj','>=',$date)
+            ->group('jjcp_gdbh, jjcp_cpdh')
+            ->column("CONCAT( jjcp_gdbh, '-',  jjcp_yjno) AS gdyj, jjcp_smb,
+            sum(jjcp_sl) as jjcp_sls, left(max(jjcp_sj),10) as jjcp_sj");
+
+        $rows3 = db('工单_印件资料')->cache(true,86400)
+            ->group('Yj_Gdbh, yj_Yjno')
+            ->column("CONCAT( Yj_Gdbh, '-',  yj_Yjno) AS gdyj, 
+            Yj_Gdbh, yj_Yjno, yj_yjmc, yj_成品数量, yj_实际投料");
+        $data = [];
+        foreach($data1 as $key=>$value){
+            if(!array_key_exists($key,$rows1)){
+                $subArray = [];
+                if(array_key_exists($key,$rows3)){
+                    $subArray['Yj_Gdbh'] = $rows3[$key]['Yj_Gdbh'];
+                    $subArray['yj_Yjno'] = $rows3[$key]['yj_Yjno'];
+                    $subArray['yj_yjmc'] = trim($rows3[$key]['yj_yjmc']);
+                    $subArray['yj_成品数量'] = (string)floatval($rows3[$key]['yj_成品数量']*10000);
+                    $subArray['yj_实际投料'] = (string)floatval($rows3[$key]['yj_实际投料']*10000);
+                }else{
+                    $subArray['Yj_Gdbh'] = '';
+                    $subArray['yj_Yjno'] = '';
+                    $subArray['yj_yjmc'] = '';
+                    $subArray['yj_成品数量'] = '';
+                    $subArray['yj_实际投料'] = '';
+                }
+                
+                if(array_key_exists($key,$rows2)){
+                    $subArray['jjcp_smb'] = $rows2[$key]['jjcp_smb'];
+                    $subArray['jjcp_sls'] = $rows2[$key]['jjcp_sls'];
+                    $subArray['jjcp_sj'] = $rows2[$key]['jjcp_sj'];
+                }else{
+                    $subArray['jjcp_smb'] = '';
+                    $subArray['jjcp_sls'] = '';
+                    $subArray['jjcp_sj'] = '';
+                }
+                $subArray['sczl_cls'] = (string)floatval($value);
+                array_push($data,$subArray);
             }
         }
 
+
+        // $rows = db('db_包装产量预报')
+        //     ->field('sczl_rq,sczl_gdbh1,sczl_gdbh2,sczl_gdbh3,sczl_gdbh4,sczl_gdbh5,sczl_gdbh6,sys_rq,mod_rq,UniqId')
+        //     ->where('sys_rq','>=','2023-10-25')
+        //     ->select();
+        // $uniqueValues = [];
+        // foreach ($rows as $row) {
+        //     $gdbhArray = array($row['sczl_gdbh1'], $row['sczl_gdbh2'], $row['sczl_gdbh3'], $row['sczl_gdbh4'], $row['sczl_gdbh5'], $row['sczl_gdbh6']);
+        //     $uniqueValues = array_merge($uniqueValues, array_unique($gdbhArray));
+        // }
+
+        // $uniqueValues = array_values(array_unique($uniqueValues));
+        // halt($uniqueValues);
+        // $rows = db('成品入仓')->alias('c')
+        //     ->field('c.jjcp_gdbh, c.jjcp_yjno, rtrim(c.jjcp_cpmc) as jjcp_cpmc,
+        //     y.yj_成品数量, y.yj_实际投料, rtrim(c.jjcp_cpdh) as jjcp_cpdh, rtrim(c.jjcp_smb) as jjcp_smb,
+        //     sum(c.jjcp_sl) as jjcp_sls, left(max(c.Sys_rq),10) as Sys_rq')
+        //     ->where($where)
+        //     ->where('y.yj_Yjdh=c.jjcp_cpdh')
+        //     ->join('工单_印件资料 y','y.Yj_Gdbh=c.jjcp_gdbh')
+        //     ->order('c.jjcp_gdbh desc, c.jjcp_yjno asc')
+        //     ->group('c.jjcp_gdbh, c.jjcp_cpdh')
+        //     ->page($page,$limit)
+        //     ->select();
+
+        // $total = db('成品入仓')->alias('c')
+        //     ->where($where)
+        //     ->where('y.yj_Yjdh=c.jjcp_cpdh')
+        //     ->join('工单_印件资料 y','y.Yj_Gdbh=c.jjcp_gdbh')
+        //     ->group('c.jjcp_gdbh, c.jjcp_cpdh')
+        //     ->count();
+        // $brr = db('成品入仓')
+        //     ->group('jjcp_gdbh,jjcp_cpdh')
+        //     ->column('CONCAT(jjcp_gdbh, "-", rtrim(jjcp_cpdh)), sum(jjcp_sl)');
+
+        // $num = db('db_包装产量预报')->count();
+        // $arr1 = db('db_包装产量预报')
+        //     ->field('sczl_gdbh1, sczl_gdbh2, sczl_gdbh3, sczl_gdbh4, sczl_gdbh5, sczl_gdbh6, 
+        //     substr(sczl_yjGx1,2,1) as sczl_yjGx1, substr(sczl_yjGx2,2,1) as sczl_yjGx2, 
+        //     substr(sczl_yjGx3,2,1) as sczl_yjGx3, substr(sczl_yjGx4,2,1) as sczl_yjGx4, 
+        //     substr(sczl_yjGx5,2,1) as sczl_yjGx5, substr(sczl_yjGx6,2,1) as sczl_yjGx6, 
+        //     (sczl_cl1*sczl_PgCl1+sczl_clAdd1) as sczl_cls1, 
+        //     (sczl_cl2*sczl_PgCl2+sczl_clAdd2) as sczl_cls2, 
+        //     (sczl_cl3*sczl_PgCl3+sczl_clAdd3) as sczl_cls3, 
+        //     (sczl_cl4*sczl_PgCl4+sczl_clAdd4) as sczl_cls4, 
+        //     (sczl_cl5*sczl_PgCl5+sczl_clAdd5) as sczl_cls5, 
+        //     (sczl_cl6*sczl_PgCl6+sczl_clAdd6) as sczl_cls6
+        //     ')
+        //     ->limit($num)
+        //     ->select();
+
+        // $data1 = [];
+        // foreach ($arr1 as $k=>$v){
+        //     for ($i=1;$i<=6;$i++){
+        //         if(array_key_exists($v['sczl_gdbh'.$i].'-'.$v['sczl_yjGx'.$i],$data1)){
+        //             $data1[$v['sczl_gdbh'.$i].'-'.$v['sczl_yjGx'.$i]] += $v['sczl_cls'.$i];
+        //         }else{
+        //             $data1[$v['sczl_gdbh'.$i].'-'.$v['sczl_yjGx'.$i]] = $v['sczl_cls'.$i];
+        //         }
+        //     }
+        // }
+
+        // foreach ($rows as $key=>$value) {
+        //     $rows[$key]['yj_成品数量'] = (string)floatval($value['yj_成品数量']*10000);
+        //     $rows[$key]['yj_实际投料'] = (string)floatval($value['yj_实际投料']*10000);
+        //     if(array_key_exists($value['jjcp_gdbh'].'-'.$value['jjcp_yjno'],$data1)){
+        //         $rows[$key]['包装产量'] = $data1[$value['jjcp_gdbh'].'-'.$value['jjcp_yjno']];
+        //     }else{
+        //         $rows[$key]['包装产量'] = '';
+        //     }
+        //     if(array_key_exists($value['jjcp_gdbh'].'-'.$value['jjcp_cpdh'],$brr)){
+        //         $rows[$key]['入仓数量'] = $brr[$value['jjcp_gdbh'].'-'.$value['jjcp_cpdh']];
+        //     }else{
+        //         $rows[$key]['入仓数量'] = '';
+        //     }
+        //     if($value['jjcp_smb'] !=''){
+        //         $rows[$key]['状态'] = '完工';
+        //         $rows[$key]['缺数'] = (int)$rows[$key]['yj_成品数量']-(int)$rows[$key]['包装产量'];
+        //     }else{
+        //         $rows[$key]['状态'] = '';
+        //         $rows[$key]['缺数'] = '';
+        //     }
+        // }
+
         $data = [
-            'total'          => $total,
-            'rows'          => $rows,
+            'total'         => count($data),
+            'rows'          => $data,
         ];
         $this->success('成功',$data);
     }
@@ -1164,20 +1237,18 @@ class FinishedProductWarehousing extends Api
         if (!(isset($req['fields']) && count($req['fields'])!=0)){
             $this->error('参数错误','fields',100);
         }
-        if (isset($req['key_word']) && !empty($req['key_word'])){
-            $where['c.jjcp_sj | c.jjcp_gdbh | c.jjcp_cpmc | c.jjcp_cpdh | g.实际投料'] = ['like','%'.$req['key_word'].'%'];
-        }
+
         $arr = [
-            'jjcp_gdbh'    =>['jjcp_gdbh'],
-            'jjcp_yjno'    =>['jjcp_yjno'],
-            'jjcp_cpmc'    =>['印件名称'],
-            'yj_成品数量'   =>['计划交货数量'],
-            'yj_实际投料'   =>['印件投料'],
-            'sczl_cls'     =>['包装产量'],
-            'Sys_rq'       =>['最近入仓时间'],
-            'jjcp_sls'     =>['入仓数量'],
-            'status'       =>['完工'],
-            '缺数'         =>['缺数'],
+            'Yj_Gdbh'       =>['工单编号'],
+            'yj_Yjno'       =>['印件号'],
+            'yj_yjmc'       =>['印件名称'],
+            'yj_成品数量'    =>['计划交货数量'],
+            'yj_实际投料'    =>['印件投料'],
+            'sczl_cls'      =>['包装产量'],
+            'jjcp_sj'       =>['最近入仓时间'],
+            'jjcp_sls'      =>['入仓产量'],
+            'status'        =>['完工'],
+            '缺数'          =>['缺数'],
         ];
         $data[0] = [];
         foreach ($req['fields'] as $k=>$v){
@@ -1185,32 +1256,12 @@ class FinishedProductWarehousing extends Api
                 array_push($data[0],$arr[$v][0]);
             }
         }
-
-        $where = [
-            'c.jjcp_smb'=>['<>','']
-        ];
-
-        $rows = db('成品入仓')->alias('c')
-            ->field('c.jjcp_gdbh, c.jjcp_yjno, rtrim(c.jjcp_cpmc) as jjcp_cpmc,
-            y.yj_成品数量, y.yj_实际投料, rtrim(c.jjcp_cpdh) as jjcp_cpdh, rtrim(c.jjcp_smb) as jjcp_smb,
-            sum(c.jjcp_sl) as jjcp_sls, left(max(c.Sys_rq),10) as Sys_rq')
-            ->where($where)
-            ->where('y.yj_Yjdh=c.jjcp_cpdh')
-            ->join('工单_印件资料 y','y.Yj_Gdbh=c.jjcp_gdbh')
-            ->order('c.jjcp_gdbh desc, c.jjcp_yjno asc')
-            ->group('c.jjcp_gdbh, c.jjcp_cpdh')
-            ->select();
-
-        $brr = db('成品入仓')
-            ->group('jjcp_gdbh,jjcp_cpdh')
-            ->column('CONCAT(jjcp_gdbh, "-", rtrim(jjcp_cpdh)), sum(jjcp_sl)');
-
-        $num = db('db_包装产量预报')->count();
+        $date = date('Y-m-d',strtotime('-3 month'));
         $arr1 = db('db_包装产量预报')
             ->field('sczl_gdbh1, sczl_gdbh2, sczl_gdbh3, sczl_gdbh4, sczl_gdbh5, sczl_gdbh6, 
-            substr(sczl_yjGx1,2,1) as sczl_yjGx1, substr(sczl_yjGx2,2,1) as sczl_yjGx2, 
-            substr(sczl_yjGx3,2,1) as sczl_yjGx3, substr(sczl_yjGx4,2,1) as sczl_yjGx4, 
-            substr(sczl_yjGx5,2,1) as sczl_yjGx5, substr(sczl_yjGx6,2,1) as sczl_yjGx6, 
+            cast(substr(sczl_yjGx1,1,2) as signed) as sczl_yjGx1, cast(substr(sczl_yjGx2,1,2) as signed) as sczl_yjGx2, 
+            cast(substr(sczl_yjGx3,1,2) as signed) as sczl_yjGx3, cast(substr(sczl_yjGx4,1,2) as signed) as sczl_yjGx4, 
+            cast(substr(sczl_yjGx5,1,2) as signed) as sczl_yjGx5, cast(substr(sczl_yjGx6,1,2) as signed) as sczl_yjGx6, 
             (sczl_cl1*sczl_PgCl1+sczl_clAdd1) as sczl_cls1, 
             (sczl_cl2*sczl_PgCl2+sczl_clAdd2) as sczl_cls2, 
             (sczl_cl3*sczl_PgCl3+sczl_clAdd3) as sczl_cls3, 
@@ -1218,7 +1269,7 @@ class FinishedProductWarehousing extends Api
             (sczl_cl5*sczl_PgCl5+sczl_clAdd5) as sczl_cls5, 
             (sczl_cl6*sczl_PgCl6+sczl_clAdd6) as sczl_cls6
             ')
-            ->limit($num)
+            ->where('sczl_rq','>=',$date)
             ->select();
 
         $data1 = [];
@@ -1231,52 +1282,75 @@ class FinishedProductWarehousing extends Api
                 }
             }
         }
+        krsort($data1);
+        
+        //成品入仓中jjcp_smb不为空的工单
+        $rows1 = db('成品入仓')
+            ->where('jjcp_smb','<>','')
+            ->order('jjcp_gdbh desc')
+            ->column("CONCAT(jjcp_gdbh, '-', jjcp_yjno) AS gdyj, UniqId");
 
-        foreach ($rows as $key=>$value) {
-            if(array_key_exists($value['jjcp_gdbh'].'-'.$value['jjcp_yjno'],$data1)){
-                $rows[$key]['包装产量'] = $data1[$value['jjcp_gdbh'].'-'.$value['jjcp_yjno']];
-            }else{
-                $rows[$key]['包装产量'] = '';
-            }
-            if(array_key_exists($value['jjcp_gdbh'].'-'.$value['jjcp_cpdh'],$brr)){
-                $rows[$key]['入仓数量'] = $brr[$value['jjcp_gdbh'].'-'.$value['jjcp_cpdh']];
-            }else{
-                $rows[$key]['入仓数量'] = '';
-            }
-            if($value['jjcp_smb'] !=''){
-                $rows[$key]['状态'] = '完工';
-                $rows[$key]['缺数'] = (int)$rows[$key]['yj_成品数量']-(int)$rows[$key]['包装产量'];
-            }else{
-                $rows[$key]['状态'] = '';
-                $rows[$key]['缺数'] = '';
-            }
-            $subArray = [];
-            foreach ($arr as $k=>$v){
-                if($k=='yj_成品数量' || $k=='yj_实际投料'){
-                    $subArray[$k] = (string)floatval($value['实际投料']*10000);
-                }else if($k=='sczl_cls'){
-                    if(array_key_exists($value['jjcp_gdbh'].'-'.$value['jjcp_yjno'],$data1)){
-                        $rows[$key]['包装产量'] = $data1[$value['jjcp_gdbh'].'-'.$value['jjcp_yjno']];
-                    }else{
-                        $rows[$key]['包装产量'] = '';
-                    }
-                }else if($k=='status'){
-                    if($value['jjcp_smb'] !=''){
-                        $rows[$key]['状态'] = '完工';
-                    }else{
-                        $rows[$key]['状态'] = '';
-                    }
-                }else if($k=='缺数'){
-                    if($value['jjcp_smb'] !=''){
-                        $rows[$key]['缺数'] = (int)$rows[$key]['yj_成品数量']-(int)$rows[$key]['包装产量'];
+        $rows2 = db('成品入仓')
+            ->where('jjcp_sj','>=',$date)
+            ->group('jjcp_gdbh, jjcp_cpdh')
+            ->column("CONCAT( jjcp_gdbh, '-',  jjcp_yjno) AS gdyj, jjcp_smb,
+            sum(jjcp_sl) as jjcp_sls, left(max(jjcp_sj),10) as jjcp_sj");
+
+        $rows3 = db('工单_印件资料')->cache(true,86400)
+            ->group('Yj_Gdbh, yj_Yjno')
+            ->column("CONCAT( Yj_Gdbh, '-',  yj_Yjno) AS gdyj, 
+            Yj_Gdbh, yj_Yjno, yj_yjmc, yj_成品数量, yj_实际投料");
+
+        foreach($data1 as $key=>$value){
+            if(!array_key_exists($key,$rows1)){
+                $subArray = [];
+                foreach ($arr as $k=>$v){
+                    if($k=='yj_成品数量' || $k=='yj_实际投料'){
+                        if(array_key_exists($key,$rows3)){
+                            $subArray[$k] = (string)floatval($rows3[$key][$k]*10000);
+                        }else{
+                            $subArray[$k] = '';
+                        }
+                    }else if($k=='Yj_Gdbh' || $k=='yj_Yjno'){
+                        if(array_key_exists($key,$rows3)){
+                            $subArray[$k] = $rows3[$key][$k];
+                        }else{
+                            $subArray[$k] = '';
+                        }
+                    }else if($k=='yj_yjmc'){
+                        if(array_key_exists($key,$rows3)){
+                            $subArray[$k] = trim($rows3[$key][$k]);
+                        }else{
+                            $subArray[$k] = '';
+                        }
+                    }else if($k=='sczl_cls'){
+                        $subArray[$k] = (string)floatval($value);
+                    }else if($k=='status'){
+                        if(array_key_exists($key,$rows2) && $rows2[$key]['jjcp_smb'] !=''){
+                            $subArray[$k] = '完工';
+                        }else{
+                            $subArray[$k] = '';
+                        }
+                    }else if($k=='缺数'){
+                        if(array_key_exists($key,$rows2) && $rows2[$key]['jjcp_smb'] !=''){
+                            $subArray[$k]['缺数'] = (int)$rows3[$key]['yj_成品数量']-(int)$value;
+                        }else{
+                            $subArray[$k] = '';
+                        }
                     }else{
-                        $rows[$key]['缺数'] = '';
+                        if(array_key_exists($key,$rows2)){
+                            $subArray[$k] = $rows2[$key][$k];
+                            $subArray[$k] = $rows2[$key][$k];
+                            $subArray[$k] = $rows2[$key][$k];
+                        }else{
+                            $subArray[$k] = '';
+                            $subArray[$k] = '';
+                            $subArray[$k] = '';
+                        }
                     }
-                }else{
-                    $subArray[$k] = $rows[$key][$k];
                 }
+                array_push($data,$subArray);
             }
-            array_push($data,$subArray);
         }
 
         $this->success('成功',['file_name'=>$req['file_name'],'data'=>$data]);

+ 4 - 4
application/api/controller/MachineProductionReport.php

@@ -211,7 +211,7 @@ class MachineProductionReport extends Api
                         rtrim(a.sys_id) as sys_id, a.sys_rq, a.mod_rq, a.UniqId, "设备_产量计酬" AS table_type
                     FROM `设备_产量计酬` `a` INNER JOIN `dic_lzde` `d` ON `a`.`sczl_dedh`=`d`.`sys_bh` ';
             $sql .= strpos($req['date'],'-') ? 'WHERE `a`.`sys_rq` LIKE "'.$req['date'].'%" ' : 'WHERE `a`.`sczl_gdbh` = "'.$req['date'].'" ';
-            $sql .= isset($req['sys_id']) && !empty($req['sys_id']) ? 'AND `a`.`sys_id` LIKE "'.$req['sys_id'].'%" ' : '';
+            $sql .= isset($req['sys_id']) && !empty($req['sys_id']) ? 'AND `a`.`sys_id` = "'.$req['sys_id'].'" ' : '';
             $sql .= 'UNION ALL
                     SELECT a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_type, LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh,
                         a.sczl_bzdh, a.sczl_num, a.sczl_cl, a.sczl_ms, a.sczl_fp as sczl_zcfp, a.sczl_cp as sczl_zccp,
@@ -221,7 +221,7 @@ class MachineProductionReport extends Api
                         rtrim(a.sys_id) as sys_id, a.sys_rq, a.mod_rq, a.UniqId, "db_sczl" AS table_type
                     FROM `db_sczl` `a` INNER JOIN `dic_lzde` `d` ON `a`.`sczl_dedh`=`d`.`sys_bh`';
             $sql .= strpos($req['date'],'-') ? 'WHERE `a`.`sys_rq` LIKE "'.$req['date'].'%" ' : 'WHERE `a`.`sczl_gdbh` = "'.$req['date'].'" ';
-            $sql .= isset($req['sys_id']) && !empty($req['sys_id']) ? 'AND `a`.`sys_id` LIKE "'.$req['sys_id'].'%" ' : '';
+            $sql .= isset($req['sys_id']) && !empty($req['sys_id']) ? 'AND `a`.`sys_id` = "'.$req['sys_id'].'" ' : '';
             $sql .= 'ORDER BY sys_id ASC, sczl_num ASC LIMIT '.($page-1)*$limit.','.$limit;
             $rows = db()->query($sql);
 
@@ -231,8 +231,8 @@ class MachineProductionReport extends Api
             $rows = cache('ReportGetList-'.$req['date'].'-'.$req['sys_id'].'-'.$req['page'].'-'.$req['limit']);
         }
 
-        $gd = db('工单_基本资料')->column('Gd_gdbh, 成品名称 as Gd_cpmc');
-        $rs = db('人事_基本资料')->column('员工编号, 员工姓名');
+        $gd = db('工单_基本资料')->cache(true,86400)->column('Gd_gdbh, 成品名称 as Gd_cpmc');
+        $rs = db('人事_基本资料')->cache(true,86400)->column('员工编号, 员工姓名');
         foreach ($rows as $key=>$value){
             $rows[$key]['mod_rq'] = $value['mod_rq']=='1900-01-01 00:00:00' ? '' :$value['mod_rq'];
             $rows[$key]['Gd_cpmc'] = array_key_exists($value['sczl_gdbh'],$gd) ? trim($gd[$value['sczl_gdbh']]) : '';