|
|
@@ -455,8 +455,8 @@ class StatisticsService extends Service
|
|
|
return [true, [$model, $time]];
|
|
|
}
|
|
|
|
|
|
- public function statisticsDeviceFillExportData($data, $ergs, $device, $item_total){
|
|
|
- $device_map = $device_map_2 = $item_id = [];
|
|
|
+ public function statisticsDeviceFillExportData1($data, $ergs, $device, $item_total){
|
|
|
+ $device_map = $device_map_2 = [];
|
|
|
foreach ($data as $value){
|
|
|
if(isset($device_map[$value['data_id']])){
|
|
|
$total_hours = bcadd($device_map[$value['data_id']], $value['total_hours'],2);
|
|
|
@@ -471,11 +471,8 @@ class StatisticsService extends Service
|
|
|
}else{
|
|
|
$device_map_2[$key][$value['item_id']] = $value['total_hours'];
|
|
|
}
|
|
|
-
|
|
|
- if(! in_array($value['item_id'], $item_id)) $item_id[] = $value['item_id'];
|
|
|
}
|
|
|
unset($data);
|
|
|
-// $item_map = array_column($item_total,'code','id');
|
|
|
|
|
|
$tmp = [];
|
|
|
foreach ($item_total as $value){
|
|
|
@@ -523,4 +520,70 @@ class StatisticsService extends Service
|
|
|
|
|
|
return $device;
|
|
|
}
|
|
|
+
|
|
|
+ public function statisticsDeviceFillExportData($data, $ergs, $device, $item_total, $is_count = false) {
|
|
|
+ $device_map = $device_map_2 = [];
|
|
|
+ foreach ($data as $value) {
|
|
|
+ $device_map[$value['data_id']] = bcadd($device_map[$value['data_id']] ?? 0, $value['total_hours'], 2);
|
|
|
+ $device_map_2[$value['data_id']][$value['item_id']] = bcadd($device_map_2[$value['data_id']][$value['item_id']] ?? 0, $value['total_hours'], 2);
|
|
|
+ }
|
|
|
+ unset($data);
|
|
|
+
|
|
|
+ $tmp = [];
|
|
|
+ foreach ($item_total as $value) {
|
|
|
+ $tmp[$value['id']] = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach ($device as $key => $value) {
|
|
|
+ $device[$key]['in_time'] = $value['in_time'] ? date("Y-m-d", $value['in_time']) : '';
|
|
|
+
|
|
|
+ $rd_total_hours = bcdiv($device_map[$value['id']] ?? 0, 60, 2);
|
|
|
+ $device[$key]['rd_total_hours'] = $rd_total_hours;
|
|
|
+ $device[$key]['set_total_hours'] = $rd_total_hours;
|
|
|
+
|
|
|
+ $every_item_hours = $device_map_2[$value['id']] ?? [];
|
|
|
+ $details = $tmp;
|
|
|
+ if (!empty($every_item_hours)) {
|
|
|
+ foreach ($every_item_hours as $item => $item_hour) {
|
|
|
+ if (isset($details[$item])) {
|
|
|
+ $details[$item] = bcdiv($item_hour, 60, 2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach ($details as $it => $d_v) {
|
|
|
+ $device[$key]['extra_' . $it] = $d_v;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 基础信息补充
|
|
|
+ $device[$key]['my_item'] = "";
|
|
|
+ $device[$key]['type_title'] = Device::$type[$value['type']] ?? "";
|
|
|
+ $device[$key]['type_2_title'] = Device::$type_2[$value['type_2']] ?? "";
|
|
|
+
|
|
|
+ // 百分比计算
|
|
|
+ $device[$key]['rate_one'] = "100%";
|
|
|
+ $rate_val = floatval($rd_total_hours) > 0.0 ? "100.00%" : "0.00%";
|
|
|
+ $device[$key]['rate_two'] = $rate_val;
|
|
|
+ $device[$key]['rate_three'] = $rate_val;
|
|
|
+ }
|
|
|
+
|
|
|
+ // --- 合计逻辑 ---
|
|
|
+ if ($is_count && !empty($device)) {
|
|
|
+ //取第一行作为模板,所有值初始化为空字符串
|
|
|
+ $summaryRow = array_map(fn() => '', $device[array_key_first($device)]);
|
|
|
+
|
|
|
+ foreach ($device as $row) {
|
|
|
+ // 动态累加所有 extra_ 开头的列
|
|
|
+ foreach ($row as $k => $v) {
|
|
|
+ if (strpos($k, 'extra_') === 0) {
|
|
|
+ $summaryRow[$k] = bcadd($summaryRow[$k] ?: 0, $v, 2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $device[] = $summaryRow;
|
|
|
+ }
|
|
|
+
|
|
|
+ return $device;
|
|
|
+ }
|
|
|
}
|