瀏覽代碼

计时工资导出

unknown 7 月之前
父節點
當前提交
5e680302cd
共有 1 個文件被更改,包括 46 次插入50 次删除
  1. 46 50
      application/api/controller/PieceWorkSchedule.php

+ 46 - 50
application/api/controller/PieceWorkSchedule.php

@@ -52,25 +52,23 @@ class PieceWorkSchedule extends Api
      */
     public function getList()
     {
-        //get请求
-        if(!$this->request->isGet()){
+        // 验证请求方式
+        if (!$this->request->isGet()) {
             $this->error('请求方式错误');
         }
-        $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'];
+        $req = $this->request->param();
 
-        $where = [];
-        if (isset($req['date']) && !empty($req['date'])){
-            $where['wgjs_rq'] = ['LIKE',$req['date'].'%'];
-        }else{
-            $this->error('参数错误');
+        // 必需参数校验
+        if (empty($req['date'])) {
+            $this->error('参数错误: 缺少日期参数');
         }
 
-        $rows = db()->table('db_wgjs')
+        $where['wgjs_rq'] = ['LIKE', $req['date'] . '%'];
+        $usePagination = isset($req['page'], $req['limit']) && $req['page'] > 0 && $req['limit'] > 0;
+
+        // 构建基础查询
+        $query = db()->table('db_wgjs')
             ->field('LEFT(wgjs_rq, 10) as wgjs_rq, UniqId, 
             wgjs_bh1, wgjs_js1, rtrim(wgjs_yy1) as wgjs_yy1, 
             wgjs_bh2, wgjs_js2, rtrim(wgjs_yy2) as wgjs_yy2, 
@@ -79,48 +77,46 @@ class PieceWorkSchedule extends Api
             wgjs_bh5, wgjs_js5, rtrim(wgjs_yy5) as wgjs_yy5, 
             wgjs_bh6, wgjs_js6, rtrim(wgjs_yy6) as wgjs_yy6')
             ->where($where)
-            ->order('wgjs_rq desc, UniqId asc')
-            ->page($page,$limit)
-            ->select();
-        $total = db()->table('db_wgjs')->where($where)->count();
+            ->order('wgjs_rq desc, UniqId asc');
+
+        // 执行分页/全量查询
+        if ($usePagination) {
+            $rows = $query->page($req['page'], $req['limit'])->select();
+            $total = db()->table('db_wgjs')->where($where)->count();
+        } else {
+            $rows = $query->select();
+            $total = count($rows);  // 避免额外COUNT查询
+        }
+
+        // 获取员工基础数据
+        $employees = db()->table('人事_基本资料')->column('员工编号, 员工姓名, 所在部门');
 
-        $rs = db()->table('人事_基本资料')->column('员工编号, 员工姓名, 所在部门');
-
-        foreach ($rows as $key=>$value){
-            $rows[$key]['wgjs_js1'] = $value['wgjs_js1'] == 0 ? '' : $value['wgjs_js1'];
-            //存在该员工编号
-            if (array_key_exists($value['wgjs_bh1'],$rs)){
-                $rows[$key]['department'] = trim($rs[$value['wgjs_bh1']]['所在部门']);
-                $rows[$key]['name1'] = trim($rs[$value['wgjs_bh1']]['员工姓名']);
-                for ($i=2;$i<=6;$i++){
-                    $rows[$key]['wgjs_js'.$i] = $value['wgjs_js'.$i] == '0.0' ? '' : $value['wgjs_js'.$i];
-                    if ($value['wgjs_bh'.$i]){
-                        if ($value['wgjs_bh'.$i]==$value['wgjs_bh1']){
-                            $rows[$key]['name'.$i] = $rows[$key]['name1'];
-                        }else{
-                            $rows[$key]['name'.$i] = trim($rs[$value['wgjs_bh'.$i]]['员工姓名']);
-                        }
-                    }else{
-                        $rows[$key]['name'.$i] = '';
-                    }
-                }
-            }else{
-                $rows[$key]['department'] = '';
-                $rows[$key]['name1'] = '';
-                for ($i=2;$i<=6;$i++){
-                    $rows[$key]['wgjs_js'.$i] = $value['wgjs_js'.$i] == '0.0' ? '' : $value['wgjs_js'.$i];
-                    $rows[$key]['name'.$i] = '';
-                }
+        // 数据处理优化
+        foreach ($rows as &$row) {
+            // 处理主员工信息
+            $mainId = $row['wgjs_bh1'];
+            $hasMain = isset($employees[$mainId]);
+
+            $row['wgjs_js1'] = $row['wgjs_js1'] == 0 ? '' : $row['wgjs_js1'];
+            $row['department'] = $hasMain ? trim($employees[$mainId]['所在部门']) : '';
+            $row['name1'] = $hasMain ? trim($employees[$mainId]['员工姓名']) : '';
+
+            // 处理2-6号员工信息
+            for ($i = 2; $i <= 6; $i++) {
+                $fieldId = $row["wgjs_bh$i"];
+                $row["wgjs_js$i"] = $row["wgjs_js$i"] == '0.0' ? '' : $row["wgjs_js$i"];
+
+                $row["name$i"] = ($fieldId && isset($employees[$fieldId]))
+                    ? trim($employees[$fieldId]['员工姓名'])
+                    : ($fieldId === $mainId ? $row['name1'] : '');
             }
         }
 
-        $data = [
-            'total'          => $total,
-            'rows'          => $rows,
-        ];
-        $this->success('成功',$data);
+        $this->success('成功', [
+            'total' => $total,
+            'rows' => $rows
+        ]);
     }
-
     /**
      * 获取计件工计时单信息
      * @ApiMethod (GET)