Forráskód Böngészése

报工数据优化

unknown 3 hónapja
szülő
commit
6fd3bf11e7
1 módosított fájl, 102 hozzáadás és 2 törlés
  1. 102 2
      application/api/controller/GluingReport.php

+ 102 - 2
application/api/controller/GluingReport.php

@@ -354,6 +354,7 @@ class GluingReport extends Api
             'gxmc'    => $param['sczl_gxmc'],
             'sys_id'  => $param['sys_id'],
             'sczl_rq' => $param['sczl_rq'],
+            'sczl_bzdh' => $param['sczl_bzdh'],
         ];
 
         // 处理动态字段(1-30组bh/rate)
@@ -613,7 +614,7 @@ class GluingReport extends Api
             'a.sczl_zcfp as 制程废品','a.startTime as 开始时间','a.endTime as 结束时间','a.sczl_ls as 联数','a.sczl_rq as 日期',
             'a.sczl_dedh as 定额代号','a.工价系数','a.保养工时','a.装版工时','a.异常工时','a.异常类型','a.设备运行工时','a.role',
             'a.sys_id as 创建人员','a.sys_rq as 上报时间','a.mod_rq as 修改时间','a.Uid','a.sczl_jtbh as 机台编号','a.price',
-            'b.Gd_cpdh as 产品代号','b.Gd_cpmc as 产品名称'];
+            'b.Gd_cpdh as 产品代号','b.Gd_cpmc as 产品名称','a.sczl_bzdh as 班组',];
         $list = \db('设备_糊盒报工资料')
             ->alias('a')
             ->join('工单_基本资料 b','a.sczl_gdbh = b.Gd_gdbh','left')
@@ -673,7 +674,7 @@ class GluingReport extends Api
             'a.sczl_zcfp as 制程废品','a.startTime as 开始时间','a.endTime as 结束时间','a.sczl_ls as 联数','a.sczl_rq as 日期',
             'a.sczl_dedh as 定额代号','a.工价系数','a.保养工时','a.装版工时','a.异常工时','a.异常类型','a.设备运行工时','a.role',
             'a.sys_id as 创建人员','a.sys_rq as 上报时间','a.mod_rq as 修改时间','a.Uid','a.sczl_jtbh as 机台编号','a.price',
-            'b.Gd_cpdh as 产品代号','b.Gd_cpmc as 产品名称'];
+            'b.Gd_cpdh as 产品代号','b.Gd_cpmc as 产品名称','a.sczl_bzdh as 班组',];
         $list = \db('设备_糊盒报工资料')
             ->alias('a')
             ->join('工单_基本资料 b','a.sczl_gdbh = b.Gd_gdbh','left')
@@ -762,6 +763,7 @@ class GluingReport extends Api
             'gdbh'    => $param['sczl_gdbh'],
             'gxmc'    => $param['sczl_gxmc'],
             'sczl_rq' => $param['sczl_rq'],
+            'sczl_bzdh' => $param['sczl_bzdh'],
         ];
 
         // 处理动态字段(1-30组bh/rate)
@@ -955,4 +957,102 @@ class GluingReport extends Api
         }
         $this->success('成功',$data);
     }
+
+
+    //最新糊盒班组查询
+    public function classifyList()
+    {
+        // 1. 请求方法验证
+        if (!$this->request->isGet()) {
+            $this->error('请使用GET请求');
+        }
+
+        // 2. 参数验证
+        $params = $this->request->param();
+
+        // 验证必需参数
+        $requiredParams = ['sczl_jtbh', 'sczl_bzdh'];
+        foreach ($requiredParams as $param) {
+            if (empty($params[$param] ?? null)) {
+                $this->error("缺少必要参数: {$param}");
+            }
+        }
+
+        $jtbh = trim($params['sczl_jtbh']);
+        $bzdh = trim($params['sczl_bzdh']);
+
+        // 3. 查询糊盒报工资料
+        $role = \db('设备_糊盒报工资料')
+            ->where('sczl_jtbh', $jtbh)
+            ->where('sczl_bzdh', $bzdh)
+            ->order('Uid', 'desc')
+            ->value('role');
+
+        if (empty($role)) {
+            $this->error('未找到对应的报工班组信息');
+        }
+
+        // 4. 动态生成字段列表
+        $fields = [];
+        for ($i = 1; $i <= 30; $i++) {
+            $fields[] = "bh{$i}";
+            $fields[] = "rate{$i}";
+        }
+
+        // 5. 查询班组信息
+        $class = \db('糊盒报工班组')
+            ->where('id', $role)
+            ->field($fields)
+            ->find();
+
+        if (empty($class)) {
+            $this->error('班组信息不存在');
+        }
+
+        // 6. 处理班组成员信息
+        $members = [];
+        $employeeIds = [];
+
+        // 收集所有有效的员工编号
+        for ($i = 1; $i <= 30; $i++) {
+            $bh = $class["bh{$i}"] ?? '';
+            $rate = $class["rate{$i}"] ?? 0;
+
+            // 验证员工编号是否有效
+            $bh = trim($bh);
+            if (!empty($bh) && $bh !== '000000') {
+                $employeeIds[$bh] = [
+                    'index' => $i,
+                    'rate' => $rate
+                ];
+            }
+        }
+
+        // 如果有有效的员工编号,批量查询员工信息
+        if (!empty($employeeIds)) {
+            $employeeNames = [];
+            $ids = array_keys($employeeIds);
+
+            // 批量查询员工信息(减少数据库查询次数)
+            $result = \db('人事_基本资料')
+                ->whereIn('员工编号', $ids)
+                ->field('员工编号, rtrim(员工姓名) as 姓名')
+                ->select();
+
+            foreach ($result as $item) {
+                $employeeNames[$item['员工编号']] = $item['姓名'];
+            }
+
+            // 组装返回数据
+            foreach ($employeeIds as $employeeId => $info) {
+                $members[] = [
+                    '编号' => $employeeId,
+                    '姓名' => $employeeNames[$employeeId] ?? '未知',
+                    '比例' => $info['rate']
+                ];
+            }
+        }
+
+        $this->success('获取成功', array_values($members));
+    }
 }