Kaynağa Gözat

色度数导出

unknown 9 ay önce
ebeveyn
işleme
98338513bc
1 değiştirilmiş dosya ile 30 ekleme ve 40 silme
  1. 30 40
      application/api/controller/Decision.php

+ 30 - 40
application/api/controller/Decision.php

@@ -660,20 +660,15 @@ class Decision extends Api
         if (empty($param['month'])) {
             $this->error('参数错误');
         }
-        $where = [];
-        // 将参数转换成标准日期格式
-        $mouth = date_create_from_format('Ym', $param['month'])->format('Y-m');
-        $where['a.sczl_rq'] = ['like', $mouth . '%'];
 
-        // 分页配置
-        $page = !empty($param['page']) ? (int)$param['page'] : 1;
-        $limit = !empty($param['limit']) ? (int)$param['limit'] : 9999; // 默认查询所有
+        $month = date_create_from_format('Ym', $param['month'])->format('Y-m');
+        $where = ['a.sczl_rq' => ['like', $month . '%']];
 
-        // 查询数据
         $list = \db('设备_产量计酬')
             ->alias('a')
             ->join('工单_印件资料 c', 'a.sczl_gdbh = c.Yj_Gdbh AND a.sczl_yjno = c.yj_Yjno')
             ->join('工单_工艺资料 d', 'a.sczl_gdbh = d.Gy0_gdbh AND a.sczl_yjno = d.Gy0_yjno AND a.sczl_gxh = d.Gy0_gxh')
+            ->join('设备_基本资料 e', 'a.sczl_jtbh = e.设备编号')
             ->field([
                 'a.sczl_gdbh' => '工单编号',
                 'a.sczl_yjno' => '印件号',
@@ -684,57 +679,52 @@ class Decision extends Api
                 'rtrim(d.印刷方式)' => '印刷方式',
                 'rtrim(d.版距)' => '版距',
                 'rtrim(d.Gy0_SITE)' => '车间名称',
+                'rtrim(e.设备编组)' => '设备编组'
             ])
             ->where($where)
             ->group('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh')
-            ->page($page, $limit)  // 使用 page 和 limit 实现分页
             ->select();
 
-        // 数据处理
         $data = [];
         if (!empty($list)) {
             foreach ($list as $key => $value) {
-                $parts = explode('-', $value['工序名称']);
-                $data[$key]['工序名称'] = end($parts);
-                // 产量计算
-                if ($value['印刷方式'] === '卷对卷') {
-                    $list[$key]['产量'] = round($value['产量'] / $value['版距'] * 1000);
+                // Convert ALL outputs to integers
+                $value['产量'] = (int)round($value['产量']);
+
+                if ($value['印刷方式'] === '卷对卷' && $value['版距'] != 0) {
+                    $value['产量'] = (int)round($value['产量'] / $value['版距'] * 1000);
                 }
-                $data[$key]['墨色'] = $list[$key]['产量'] * $value['墨色数'];
-                $data[$key]['车间'] = $value['车间名称'];
+
+                $data[$key] = [
+                    '产量' => $value['产量'],
+                    '墨色' => $value['产量'] * $value['墨色数'],
+                    '设备编组' => $value['设备编组']
+                ];
             }
         }
+
         $grouped = [];
         foreach ($data as $item) {
-            $key = $item['车间'] . '|' . $item['工序名称'];
+            $key = substr($item['设备编组'], 5, 6);
             if (!isset($grouped[$key])) {
                 $grouped[$key] = [
-                    '车间' => $item['车间'],
-                    '工序名称' => $item['工序名称'],
-                    '色' => 0
+                    '产量合计' => 0,  // Will be integer after operations
+                    '工序名称' => $key,
+                    '色度数' => 0
                 ];
             }
-            $grouped[$key]['墨色'] += $item['墨色'];
-        }
-
-        $workshopOrder = [
-            '胶印车间' => 1,
-            '凹丝印车间' => 2,
-            '印后车间' => 3,
-            '检验车间' => 4
-        ];
-        usort($grouped, function ($a, $b) use ($workshopOrder) {
-            $orderA = $workshopOrder[$a['车间']] ?? 999;
-            $orderB = $workshopOrder[$b['车间']] ?? 999;
 
+            // Force integer casting during summation
+            $grouped[$key]['产量合计'] += (int)$item['产量'];
+            $grouped[$key]['色度数'] += (int)$item['墨色'];
+        }
 
-            if ($orderA !== $orderB) {
-                return $orderA <=> $orderB;
-            }
-            return $a['工序名称'] <=> $b['工序名称'];
-        });
-        $result = array_values($grouped);
+        // Explicitly cast final sums to integers
+        foreach ($grouped as &$group) {
+            $group['产量合计'] = (int)$group['产量合计'];
+            $group['色度数'] = (int)$group['色度数'];
+        }
 
-        $this->success('成功', $result);
+        $this->success('成功', array_values($grouped));
     }
 }