瀏覽代碼

关联工资设置接口优化

曹鹤洋 1 年之前
父節點
當前提交
f85e11ae7f
共有 1 個文件被更改,包括 23 次插入28 次删除
  1. 23 28
      application/api/controller/RelatedSalaryAccounting.php

+ 23 - 28
application/api/controller/RelatedSalaryAccounting.php

@@ -330,43 +330,38 @@ class RelatedSalaryAccounting extends Api
             $this->error('请求方式错误');
         }
         $req = $this->request->param();
-        $req['date']=str_replace('.','-',$req['date']);
         $start_time=$req['date'].' 00:00:00';
         $end_time=$req['date'].' 23:59:59';
-        $gz=db('绩效工资汇总')
-            ->cache(true,86400)
-            ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资,
-            DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq')
-            ->group('LEFT(sczl_rq, 10),bh')
+        $data=db('绩效工资汇总')
+            ->cache(true,3600)
+            ->group('bh')
             ->where(['sczl_rq'=>$start_time])
+            ->column('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,
+            sum(个人加班工资) as 个人加班工资');
+        
+        $res = db('人事_关联工资设置')->alias('r')
+            ->cache(true,3600)
+            ->join('人事_基本资料 j1','j1.员工编号 = r.关联员工')
+            ->join('人事_基本资料 j2','j2.员工编号 = r.被关联员工')
+            ->field('DATE_FORMAT(r.日期,"%Y.%m.%d") as 日期, r.关联员工 as 关联人员工号, 
+            rtrim(j1.员工姓名) as 关联人员姓名, r.被关联员工 as 班组员工编号,rtrim(j2.员工姓名) as 被关联人员姓名,
+            r.权重 as 组员权重,r.关联系数 as 日关联系数,r.UniqID')
+            ->where(['r.日期'=>['between',"$start_time,$end_time"],'r.关联员工'=>$req['code']])
+            ->order('r.关联员工')
             ->select();
-        foreach($gz as $v){
-           $data[$v['bh']][$v['sczl_rq']]=$v;
-        }
-        $res=db('人事_关联工资设置')
-            ->cache(true,86400)
-            ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT')
-            ->field('DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联员工 as 关联人员工号,rtrim(人事_基本资料.员工姓名) as 关联人员姓名,
-            被关联员工 as 班组员工编号,权重 as 组员权重,关联系数 as 日关联系数,人事_关联工资设置.UniqID')
-            ->group('被关联员工')
-            ->where(['日期'=>['between',"$start_time,$end_time"],'关联员工'=>$req['code']])
-            ->order('关联员工,日期')
-            ->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]['个人计件工资'];
-                $v['加班工资基数']=$data[$bh][$rq]['个人加班工资'];
-                $v['日关联人数']=count($res);
+            if(isset($data[$v['班组员工编号']])){
+                $v['计件工资基数'] = $data[$v['班组员工编号']]['个人计件工资'];
+                $v['加班工资基数'] = $data[$v['班组员工编号']]['个人加班工资'];
             }else{
-                $v['个人计件工资']='';
-                $v['个人加班工资']='';
+                $v['计件工资基数'] = 0;
+                $v['加班工资基数'] = 0;
             }
+            $v['班组员工编号'] = $v['班组员工编号'].'('.$v['被关联人员姓名'].')';
+            $v['日关联人数'] = count($res);
         }
         $this->success('成功',$res);
     }