Jelajahi Sumber

关联工资接口优化

曹鹤洋 1 tahun lalu
induk
melakukan
a6bec71461
1 mengubah file dengan 40 tambahan dan 40 penghapusan
  1. 40 40
      application/api/controller/RelatedSalaryAccounting.php

+ 40 - 40
application/api/controller/RelatedSalaryAccounting.php

@@ -32,29 +32,37 @@ class RelatedSalaryAccounting extends Api
         if(!$this->request->isGet()){
             $this->error('请求方式错误');
         }
-        // $rows = db()->table('绩效工资汇总')
-        // ->whereTime('sczl_rq', '>=', strtotime('-25 months'))
-        // ->group('sys_ny')
-        // ->order('sys_ny desc')
-        // ->limit(25)
-        // ->column('sys_ny');
-        $rows = db('db_大废品')
-        ->cache(true,86400)
-        ->whereTime('sys_rq', '>=', strtotime('-25 months'))
-        ->group("DATE_FORMAT(`sys_rq`, '%Y%m')")
-        ->order('sys_rq desc')
-        ->limit(25)
-        ->column("DATE_FORMAT(`sys_rq`, '%Y%m')");
-        foreach($rows as $k=>$v){
-            $datas[$k]['label']=$v;
-            $datas[$k]['children']=[
-                ['label'=>'胶印车间','rq'=>$v],
-                ['label'=>'凹印车间','rq'=>$v],
-                ['label'=>'丝印车间','rq'=>$v],
-                ['label'=>'模切车间','rq'=>$v],
-                ['label'=>'检验车间','rq'=>$v]];
-        }
-        $this->success('成功',$datas);
+        $rows = db('人事_关联工资设置')->alias('g')
+            ->join('人事_基本资料 j', 'g.关联员工 = j.员工编号')
+            ->field('DATE_FORMAT(g.日期,"%Y%m") as 日期, trim(j.所在部门) as 所在部门,j.部门编码')
+            ->group('DATE_FORMAT(g.日期,"%Y%m"), j.所在部门')
+            ->buildSql();
+        $rows = db()->table($rows . ' t')
+            ->field('t.日期, t.所在部门')
+            ->group('t.日期, t.所在部门')
+            ->order('t.日期 desc, t.部门编码 asc')
+            ->select();
+            
+        $result = [];
+        foreach ($rows as $row) {
+            $date = $row['日期'];
+            $department = $row['所在部门'];
+        
+            if (!isset($result[$date])) {
+                $result[$date] = [
+                    'label' => $date,
+                    'children' => [],
+                ];
+            }
+        
+            $result[$date]['children'][] = [
+                'label' => $department,
+                'rq' => $date,
+            ];
+        }
+        $result = array_values($result);
+        
+        $this->success('成功',$result);
     }
     
 
@@ -75,16 +83,15 @@ class RelatedSalaryAccounting extends Api
         $month = substr($req['date'],-2);
         $start_time = $year . '-' . $month . '-01 00:00:00';
         $end_time = date('Y-m-t', strtotime("$year-$month-01")) . ' 23:59:59';
-        $gz = db('人事_关联工资设置')->alias('r')->cache(true,3600)
+        $gz = db('人事_关联工资设置')->alias('r')
             ->join('绩效工资汇总 j', 'r.被关联员工 = j.bh AND r.日期 = j.sczl_rq')
             ->join('人事_基本资料 n', 'n.员工编号 = r.关联员工')
             ->field('r.关联员工, j.bh, sum(j.个人计件工资) as 个人计件工资, sum(j.个人加班工资) as 个人加班工资,
             sum(j.装版工时,j.保养工时,j.打样工时) as 定额补差, sum(j.异常停机工时) as 计时工资, DATE_FORMAT(j.sczl_rq,"%Y.%m.%d") as 日期')
             ->where('r.日期', 'between', [$start_time, $end_time])
-            ->where('n.所在部门', 'like', $req['department'] . '%')
+            ->where('n.所在部门', $req['department'])
             ->group('LEFT(j.sczl_rq, 10), j.bh')
             ->select();
-
         $data = [];
         foreach($gz as $v){
             if (!isset($data[$v['关联员工']][$v['日期']])) {
@@ -100,9 +107,8 @@ class RelatedSalaryAccounting extends Api
             $data[$v['关联员工']][$v['日期']]['定额补差'] += (float) $v['定额补差'];
             $data[$v['关联员工']][$v['日期']]['计时工资'] += (float) $v['计时工资'];
         }
-        
+
         $res=db('人事_关联工资设置')
-            ->cache(true,86400)
             ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT')
             ->field('关联员工 as 员工编号,rtrim(人事_基本资料.员工姓名) as 员工姓名,rtrim(人事_基本资料.职称职务) as 职称职务,
             rtrim(人事_基本资料.所在部门) as 所在部门,DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联系数,count(被关联员工) as 关联人数')
@@ -158,7 +164,6 @@ class RelatedSalaryAccounting extends Api
             $end_time=$year.'-'.($month+1).'-01 00:00:00';
         }
         $gz=db('绩效工资汇总')
-            ->cache(true,86400)
             ->field('bh,rtrim(xm) as 姓名,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资,
             (sum(装版工时) + sum(保养工时) + sum(打样工时)) as 定额补差, sum(异常停机工时) as 计时工资, DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq')
             ->group('LEFT(sczl_rq, 10),bh')
@@ -167,7 +172,7 @@ class RelatedSalaryAccounting extends Api
         foreach($gz as $v){
            $data[$v['bh']][$v['sczl_rq']]=$v;
         }
-        $res=db('人事_关联工资设置')->cache(true,86400)
+        $res=db('人事_关联工资设置')
             ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT')
             ->field('DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联员工 as 员工编号,rtrim(人事_基本资料.员工姓名) as 员工姓名,
             rtrim(人事_基本资料.职称职务) as 职称职务,rtrim(人事_基本资料.所在部门) as 所在部门,被关联员工,权重')
@@ -211,7 +216,6 @@ class RelatedSalaryAccounting extends Api
         $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')
@@ -220,7 +224,7 @@ class RelatedSalaryAccounting extends Api
         foreach($gz as $v){
            $data[$v['bh']][$v['sczl_rq']]=$v;
         }
-        $res=db('人事_关联工资设置')->cache(true,86400)
+        $res=db('人事_关联工资设置')
             ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT')
             ->field('DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联员工 as 员工编号,rtrim(人事_基本资料.员工姓名) as 员工姓名,
             rtrim(人事_基本资料.职称职务) as 职称职务,人事_基本资料.所在部门,被关联员工,权重')
@@ -258,7 +262,7 @@ class RelatedSalaryAccounting extends Api
         $start_time = $year . '-' . $month . '-01 00:00:00';
         $end_time = date('Y-m-t', strtotime("$year-$month-01")) . ' 23:59:59';
         
-        $gz = db('人事_关联工资设置')->alias('r')->cache(true,3600)
+        $gz = db('人事_关联工资设置')->alias('r')
             ->join('绩效工资汇总 j', 'r.被关联员工 = j.bh AND r.日期 = j.sczl_rq')
             ->join('人事_基本资料 n', 'n.员工编号 = r.关联员工')
             ->field('r.关联员工, j.bh, sum(j.个人计件工资) as 个人计件工资, sum(j.个人加班工资) as 个人加班工资,
@@ -284,7 +288,7 @@ class RelatedSalaryAccounting extends Api
             $data[$v['关联员工']][$v['日期']]['定额补差'] += (float) $v['定额补差'];
             $data[$v['关联员工']][$v['日期']]['计时工资'] += (float) $v['计时工资'];
         }
-        $res=db('人事_关联工资设置')->cache(true,86400)
+        $res=db('人事_关联工资设置')
             ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT')
             ->field('关联员工 as 员工编号,rtrim(人事_基本资料.员工姓名) as 员工姓名,rtrim(人事_基本资料.职称职务) as 职称职务,
             rtrim(人事_基本资料.所在部门) as 所在部门,DATE_FORMAT(日期,"%Y.%m.%d") as 日期,关联系数,count(被关联员工) as 关联人数')
@@ -333,14 +337,12 @@ class RelatedSalaryAccounting extends Api
         $start_time=$req['date'].' 00:00:00';
         $end_time=$req['date'].' 23:59:59';
         $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 关联人员工号, 
@@ -423,7 +425,6 @@ class RelatedSalaryAccounting extends Api
         $start_time=$req['date'].' 00:00:00';
         $end_time=$req['date'].' 23:59:59';
         $res=db('人事_基本资料')
-            ->cache(true,86400)
             ->join('人事_关联工资设置','人事_基本资料.员工编号=人事_关联工资设置.被关联员工','LEFT')
             ->join('人事_员工照片','人事_基本资料.照片ID=人事_员工照片.UniqId','LEFT')
             ->field('人事_关联工资设置.被关联员工 as 员工编号,rtrim(员工姓名) as 姓名,rtrim(所在部门) as 部门名称,人事_基本资料.职称职务 as 职务,
@@ -454,7 +455,7 @@ class RelatedSalaryAccounting extends Api
         $start_time=$req['date'].' 00:00:00';
         $end_time=$req['date'].' 23:59:59';
         
-        $res=db('绩效工资汇总')->alias('j')->cache(true,3600)
+        $res=db('绩效工资汇总')->alias('j')
             ->join('人事_基本资料 r','r.员工编号=j.bh')
             ->field('DATE_FORMAT(j.sczl_rq,"%Y.%m.%d") as 日期,
             trim(r.所在部门) as 所在部门,sczl_bzdh, trim(r.职称职务) as 职称职务,
@@ -498,7 +499,7 @@ class RelatedSalaryAccounting extends Api
                 'j.bh'=>['like','%'.$req['search'].'%']
             ];
         }
-        $res=db('绩效工资汇总')->alias('j')->cache(true,3600)
+        $res=db('绩效工资汇总')->alias('j')
             ->join('人事_基本资料 r','r.员工编号=j.bh')
             ->field('DATE_FORMAT(j.sczl_rq,"%Y.%m.%d") as 日期,
             trim(r.所在部门) as 所在部门,sczl_bzdh, trim(r.职称职务) as 职称职务,
@@ -530,7 +531,6 @@ class RelatedSalaryAccounting extends Api
         $start_time=$req['date'].' 00:00:00';
         $end_time=$req['date'].' 23:59:59';
         $res=db('人事_关联工资设置')
-            ->cache(true,86400)
             ->join('人事_基本资料','人事_基本资料.员工编号=人事_关联工资设置.关联员工','LEFT')
             ->field('关联员工 as 员工编号, trim(人事_基本资料.员工姓名) as 员工姓名, trim(人事_基本资料.所在部门) as 所在部门, trim(人事_基本资料.职称职务) as 职称职务,trim(人事_基本资料.UniqID) as UniqID')
             ->group('关联员工')