cqp před 2 měsíci
rodič
revize
99ae97918f
1 změnil soubory, kde provedl 18 přidání a 17 odebrání
  1. 18 17
      app/Service/RuleSetService.php

+ 18 - 17
app/Service/RuleSetService.php

@@ -283,27 +283,28 @@ class RuleSetService extends Service
         }
 
         // --- 2. 设备列表校验 ---
-        if (empty($data['device_list'])) return [false, '设备不能为空'];
-        $deviceRates = [];
-        foreach ($data['device_list'] as $key => $value) {
-            if (empty($value['type'])) return [false, '类型不能为空'];
-            if (empty($value['data_id'])) return [false, '设备ID不能为空'];
-            if (empty($value['item_id'])) return [false, '项目不能为空'];
+        if (! empty($data['device_list'])){
+            $deviceRates = [];
+            foreach ($data['device_list'] as $key => $value) {
+                if (empty($value['type'])) return [false, '类型不能为空'];
+                if (empty($value['data_id'])) return [false, '设备ID不能为空'];
+                if (empty($value['item_id'])) return [false, '项目不能为空'];
 
-            $res = $this->checkNumber($value['rate'], 2, 'non-negative');
-            if (!$res['valid']) return [false, '设备工时分摊比例:' . $res['error']];
+                $res = $this->checkNumber($value['rate'], 2, 'non-negative');
+                if (!$res['valid']) return [false, '设备工时分摊比例:' . $res['error']];
 
-            $data['device_list'][$key]['top_depart_id'] = $data['top_depart_id'];
+                $data['device_list'][$key]['top_depart_id'] = $data['top_depart_id'];
 
-            $devId = $value['data_id'];
-            $deviceRates[$devId] = ($deviceRates[$devId] ?? 0) + $value['rate'];
-        }
+                $devId = $value['data_id'];
+                $deviceRates[$devId] = ($deviceRates[$devId] ?? 0) + $value['rate'];
+            }
 
-        // 校验设备比例 (错误提示加入设备名称)
-        foreach ($deviceRates as $dId => $total) {
-            if (abs($total - 100) > 0.0001) {
-                $displayName = $devMap[$dId] ?? "ID:{$dId}";
-                return [false, "设备{$displayName}的分摊比例合计为{$total}%,必须等于100%"];
+            // 校验设备比例 (错误提示加入设备名称)
+            foreach ($deviceRates as $dId => $total) {
+                if (abs($total - 100) > 0.0001) {
+                    $displayName = $devMap[$dId] ?? "ID:{$dId}";
+                    return [false, "设备{$displayName}的分摊比例合计为{$total}%,必须等于100%"];
+                }
             }
         }