Эх сурвалжийг харах

关联工资批量附加搜索接口优化

曹鹤洋 1 жил өмнө
parent
commit
2f469e96f8

+ 21 - 38
application/api/controller/RelatedSalaryAccounting.php

@@ -487,48 +487,31 @@ class RelatedSalaryAccounting extends Api
         $req['date']=str_replace('.','-',$req['date']);
         $start_time=$req['date'].' 00:00:00';
         $end_time=$req['date'].' 23:59:59';
-        $gd = db()->table('工单_基本资料')->where('Gd_cpmc',$req['search'])->value('Gd_gdbh');
+        $gd = db('人事_基本资料')->where('员工姓名','like','%'.$req['search'].'%')->column('员工编号');
         if($gd){
-            $req['search']=$gd;
-        }
-        $gz=db('绩效工资汇总')
-            ->cache(true,86400)
-            ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资,
-            DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq,sczl_bzdh')
-            ->group('LEFT(sczl_rq, 10),bh')
-            ->where(['sczl_rq'=>$start_time])
-            ->select();
-        foreach($gz as $v){
-           $data[$v['bh']][$v['sczl_rq']]=$v;
+            $where = [
+                'j.sczl_rq'=>['between',"$start_time,$end_time"],
+                'j.bh'=>['in',$gd]
+            ];
+        }else{
+            $where = [
+                'j.sczl_rq'=>['between',"$start_time,$end_time"],
+                'j.bh'=>['like','%'.$req['search'].'%']
+            ];
         }
-        $res=db('人事_关联工资设置')
-            ->cache(true,86400)
-            ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.被关联员工','LEFT')
-            ->field('DATE_FORMAT(日期,"%Y.%m.%d") as 日期,人事_基本资料.所在部门,人事_基本资料.职称职务,被关联员工 as 班组员工编号,人事_关联工资设置.UniqID')
-            // ->group('被关联员工')
-            ->where(['日期'=>['between',"$start_time,$end_time"],'被关联员工'=>['EQ',$req['search']]])
-            ->order('人事_基本资料.所在部门')
+        $res=db('绩效工资汇总')->alias('j')->cache(true,3600)
+            ->join('人事_基本资料 r','r.员工编号=j.bh')
+            ->field('DATE_FORMAT(j.sczl_rq,"%Y.%m.%d") as 日期,
+            trim(r.所在部门) as 所在部门,sczl_bzdh, trim(r.职称职务) as 职称职务,
+            CONCAT(trim(j.xm),"(", j.bh, ")") as 班组员工编号,
+            sum(j.个人计件工资) as 个人计件工资, sum(j.个人加班工资) as 个人加班工资,
+            j.bh, j.UniqID')
+            ->group('j.bh')
+            ->where($where)
+            ->order('r.所在部门,r.所在部门,j.bh')
             ->select();
-        if(!$res){
+        if($res===false){
             $this->error('失败');
-        }
-         foreach($res as &$v){
-            if(isset($data[$v['班组员工编号']][$v['日期']])){
-                $bh=$v['班组员工编号'];
-                $rq=$v['日期'];
-                $v['班组员工编号']=$bh.'('.$data[$bh][$rq]['姓名'].')';
-                $v['班组']=$data[$bh][$rq]['sczl_bzdh'];
-                $v['计件工资基数']=$data[$bh][$rq]['个人计件工资'];
-                $v['加班工资基数']=$data[$bh][$rq]['个人加班工资'];
-            }else{
-                $v['计件工资基数']='删除';
-                $v['加班工资基数']='';
-            }
-        }
-        foreach($res as $k=>$v){
-            if($v['计件工资基数']=='删除'){
-                unset($res[$k]);
-            }
         }
         $this->success('成功',$res);
     }