فهرست منبع

员工超节损汇总优化

qiuenguang 10 ماه پیش
والد
کامیت
02963fbed0
1فایلهای تغییر یافته به همراه35 افزوده شده و 53 حذف شده
  1. 35 53
      application/api/controller/OrderSuperLoss.php

+ 35 - 53
application/api/controller/OrderSuperLoss.php

@@ -1177,14 +1177,13 @@ class OrderSuperLoss extends Api
 //        $list = \db('工单_质量考核汇总')
 //            ->alias('a')
 //            ->join('工单_印件资料 b', 'a.Gy0_gdbh = b.Yj_Gdbh AND a.印件及工序 = b.yj_Yjno')
-//            ->join('成品入仓 c','a.Gy0_gdbh = c.jjcp_gdbh and a.印件及工序 = c.jjcp_yjno')
+//            ->join('成品入仓 c', 'a.Gy0_gdbh = c.jjcp_gdbh AND a.印件及工序 = c.jjcp_yjno')
 //            ->where('a.sys_ny', $date)
-//            // 修改质量考核条件为 0 或者 NULL
 //            ->where(function ($query) {
 //                $query->where('b.质量考核', 0)
-//                    ->whereOr('b.质量考核',null); // 检查为空
+//                    ->whereOr('b.质量考核', null);
 //            })
-//            ->where('c.jjcp_smb','like','末%')
+//            ->where('c.jjcp_smb', 'like', '末%')
 //            ->select();
 //        $data = [];
 //
@@ -1196,12 +1195,11 @@ class OrderSuperLoss extends Api
 //                $xm = $item["Xm{$i}"] ?? '';
 //                $rateValue = $item["sczl_rate{$i}"] ?? '';
 //
-//                // 关键修改:rate 为空时默认为 1
-//                $rate = ($rateValue === '') ? 1 : (float)$rateValue;
-//
-//                if (!empty($bh)) {
+//                // 关键优化:如果分配比例为 0 或空,默认为 1
+//                $rate = (empty($rateValue) || (float)$rateValue == 0) ? 1 : (float)$rateValue;
+//                echo ($rate);echo '//';
+//                if (!empty($bh) && $bh !== '') {
 //                    $je = round((float)$item["CjsJe"] * $rate, 4);
-//
 //                    $data[] = [
 //                        "bh" => $bh,
 //                        "xm" => $xm,
@@ -1218,33 +1216,32 @@ class OrderSuperLoss extends Api
 //            $bh = $item['bh'];
 //            $je = round($item['je'], 2); // 保留两位小数
 //
-//            // 如果 cj 不存在于结果数组中,则初始化
 //            if (!isset($result[$cj])) {
-//                $result[$cj] = []; // 初始化车间数据
+//                $result[$cj] = [];
 //            }
 //
-//            // 如果 bh 已经存在于当前车间,累加 je
 //            if (isset($result[$cj][$bh])) {
-//                $result[$cj][$bh]['je'] += (float)$je; // 累加 je
+//                $result[$cj][$bh]['je'] += (float)$je;
 //            } else {
-//                // 如果 bh 不存在,则添加新的记录
 //                $result[$cj][$bh] = [
 //                    'bh' => $bh,
 //                    'xm' => $item['xm'],
-//                    'je' => (float)$je, // 保留为浮点数格式
+//                    'je' => (float)$je,
 //                    'cj' => $cj
 //                ];
 //            }
 //        }
 //
-//        // 将每个车间的子数组变成索引数组
+//        // 将每个车间的子数组转换为索引数组
 //        foreach ($result as $cjName => &$items) {
-//            $items = array_values($items); // 重建索引
+//            $items = array_values($items);
 //        }
+//
 //        $this->success('成功', $result);
 //    }
     public function EmployeeDataCollect()
     {
+        // Validate request and parameters
         if ($this->request->isPost() === false) {
             $this->error('请求错误');
         }
@@ -1252,6 +1249,8 @@ class OrderSuperLoss extends Api
         if (empty($params)) {
             $this->error('参数错误');
         }
+
+        // Query data
         $date = date('Ym', strtotime($params['date']));
         $list = \db('工单_质量考核汇总')
             ->alias('a')
@@ -1264,7 +1263,8 @@ class OrderSuperLoss extends Api
             })
             ->where('c.jjcp_smb', 'like', '末%')
             ->select();
-        $data = [];
+
+        $result = [];
 
         foreach ($list as $item) {
             $workshop = $item["车间名称"] ?? '';
@@ -1273,55 +1273,37 @@ class OrderSuperLoss extends Api
                 $bh = $item["sczl_bh{$i}"] ?? '';
                 $xm = $item["Xm{$i}"] ?? '';
                 $rateValue = $item["sczl_rate{$i}"] ?? '';
-
-                // 关键优化:如果分配比例为 0 或空,默认为 1
+                
                 $rate = (empty($rateValue) || (float)$rateValue == 0) ? 1 : (float)$rateValue;
 
                 if (!empty($bh)) {
                     $je = round((float)$item["CjsJe"] * $rate, 4);
 
-                    $data[] = [
-                        "bh" => $bh,
-                        "xm" => $xm,
-                        "je" => (float)number_format($je, 4, '.', ''),
-                        "cj" => $workshop
-                    ];
-                }
-            }
-        }
-
-        $result = [];
-
-        foreach ($data as $item) {
-            $cj = $item['cj'];
-            $bh = $item['bh'];
-            $je = round($item['je'], 2); // 保留两位小数
-
-            if (!isset($result[$cj])) {
-                $result[$cj] = [];
-            }
+                    if (!isset($result[$workshop])) {
+                        $result[$workshop] = [];
+                    }
 
-            if (isset($result[$cj][$bh])) {
-                $result[$cj][$bh]['je'] += (float)$je;
-            } else {
-                $result[$cj][$bh] = [
-                    'bh' => $bh,
-                    'xm' => $item['xm'],
-                    'je' => (float)$je,
-                    'cj' => $cj
-                ];
+                    if (isset($result[$workshop][$bh])) {
+                        $result[$workshop][$bh]['je'] += $je;
+                    } else {
+                        $result[$workshop][$bh] = [
+                            'bh' => $bh,
+                            'xm' => $xm,
+                            'je' => $je,
+                            'cj' => $workshop
+                        ];
+                    }
+                }
             }
         }
 
-        // 将每个车间的子数组转换为索引数组
-        foreach ($result as $cjName => &$items) {
-            $items = array_values($items);
+        foreach ($result as &$workshopData) {
+            $workshopData = array_values($workshopData);
         }
 
         $this->success('成功', $result);
     }
 
-
     /**
      * 单条工单超节损计算
      * @param $gdbh