cqpCow 1 year ago
parent
commit
44e93a5802

+ 75 - 0
app/Http/Controllers/Api/InspectController.php

@@ -0,0 +1,75 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\InspectService;
+use Illuminate\Http\Request;
+
+class InspectController extends BaseController
+{
+    //巡检单据列表 点检单据列表 维修单据列表
+    public function deviceOrderList(Request $request)
+    {
+        $service = new InspectService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->deviceOrderList($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function deviceOrderEdit(Request $request)
+    {
+        $service = new InspectService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->deviceOrderEdit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function deviceOrderAdd(Request $request)
+    {
+        $service = new InspectService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->deviceOrderAdd($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function deviceOrderDel(Request $request)
+    {
+        $service = new InspectService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->deviceOrderDel($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function deviceOrderDetail(Request $request)
+    {
+        $service = new InspectService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->deviceOrderDetail($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 28 - 0
app/Model/DeviceOrder.php

@@ -0,0 +1,28 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class DeviceOrder extends Model
+{
+    protected $table = "device_order"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+    const Model_type_one = 1; // 巡检
+    const Model_type_two = 2; // 点检
+    const Model_type_three = 3; // 维修
+
+    public static $prefix = [
+        self::Model_type_one => 'XJ',
+        self::Model_type_two => 'DJ',
+        self::Model_type_three => 'WX',
+    ];
+
+    public static $prefix_title = [
+        self::Model_type_one => '巡检单',
+        self::Model_type_two => '点检单',
+        self::Model_type_three => '维修单',
+    ];
+}

+ 24 - 0
app/Model/DeviceOrderInfo.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class DeviceOrderInfo extends Model
+{
+    protected $table = "device_order_info"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+
+    const Model_type_zero = 0;
+    const Model_type_one = 1; // 正常
+    const Model_type_two = 2; // 异常
+
+
+    public static $prefix = [
+        self::Model_type_zero => '无',
+        self::Model_type_one => '正常',
+        self::Model_type_two => '异常',
+    ];
+}

+ 14 - 0
app/Model/EquipmentXj.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class EquipmentXj extends Model
+{
+    protected $table = "equipment_xj"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+}
+

+ 110 - 9
app/Service/EquipmentService.php

@@ -2,7 +2,11 @@
 
 namespace App\Service;
 
+use App\Model\Depart;
+use App\Model\DeviceOrderInfo;
 use App\Model\Equipment;
+use App\Model\EquipmentXj;
+use Illuminate\Support\Facades\DB;
 
 /**
  * 设备档案
@@ -19,8 +23,29 @@ class EquipmentService extends Service
         list($status,$msg) = $this->equipmentRule($data,false);
         if(!$status) return [$status,$msg];
 
-        $update = $msg['data'][0];
-        Equipment::where('id',$data['id'])->update($update);
+        $time = time();
+        try {
+            DB::beginTransaction();
+
+            $update = $msg['data'][0];
+            Equipment::where('id',$data['id'])->update($update);
+
+            EquipmentXj::where('equipment_id',$data['id'])
+                ->where('del_time',0)
+                ->update(['del_time' => $time]);
+            foreach ($msg['time_arr'] as $key => $value){
+                $msg['time_arr'][$key]['equipment_id'] = $data['id'];
+                $msg['time_arr'][$key]['crt_time'] = $time;
+                $msg['time_arr'][$key]['upd_time'] = $time;
+            }
+            EquipmentXj::insert($msg['time_arr']);
+
+            DB::commit();
+        }catch (\Throwable $exception){
+            DB::rollBack();
+            return [false, $exception->getMessage()];
+        }
+
 
         return [true,'保存成功!'];
     }
@@ -34,7 +59,33 @@ class EquipmentService extends Service
         list($status,$msg) = $this->equipmentRule($data);
         if(!$status) return [$status,$msg];
 
-        Equipment::insert($msg['data']);
+        $time = time();
+        try {
+            DB::beginTransaction();
+
+            foreach ($msg['data'] as $key => $value){
+                $msg['data'][$key]['crt_time'] = $time;
+                $msg['data'][$key]['upd_time'] = $time;
+            }
+            Equipment::insert($msg['data']);
+
+            //获取上一次插入订单的所有id
+            $last_insert_id = Equipment::where('crt_time',$time)->select('id')->get()->toArray();
+            $last_insert_id = array_column($last_insert_id,'id');
+
+            foreach ($msg['time_arr'] as $key => $value){
+                $msg['time_arr'][$key]['equipment_id'] = $last_insert_id[$key];
+                $msg['time_arr'][$key]['crt_time'] = $time;
+                $msg['time_arr'][$key]['upd_time'] = $time;
+            }
+            EquipmentXj::insert($msg['time_arr']);
+
+            DB::commit();
+        }catch (\Throwable $exception){
+            DB::rollBack();
+            return [false, $exception->getMessage()];
+        }
+
 
         return [true,'保存成功!'];
     }
@@ -47,9 +98,17 @@ class EquipmentService extends Service
     public function equipmentDel($data){
         if($this->isEmpty($data,'id')) return [false,'ID必须!'];
 
+        $device_bool = DeviceOrderInfo::where('del_time',0)
+            ->whereIn('equipment_id',$data['id'])
+            ->exists();
+        if($device_bool) return [false, '设备已生成巡检、点检或维修单,删除失败'];
+
         Equipment::whereIn('id',$data['id'])->update([
             'del_time' => time()
         ]);
+        EquipmentXj::whereIn('equipment_id',$data['id'])->update([
+            'del_time' => time()
+        ]);
 
         return [true,'删除成功'];
     }
@@ -67,8 +126,38 @@ class EquipmentService extends Service
         if(! empty($data['code'])) $model->where('code', 'LIKE', '%'.$data['code'].'%');
 
         $list = $this->limit($model,'',$data);
+        //组织数据
+        $list = $this->fillData($list);
+
+        return [true, $list];
+    }
+
+    public function fillData($data){
+        if (empty($data['data'])) return $data;
+
+        $depart_map = Depart::whereIn('id',array_unique(array_column($data['data'],'depart_id')))
+            ->pluck('title','id')
+            ->toArray();
+        // 设备最大一次的巡检的时间  设置的首次巡检
+        list($equipment_map,$equipment_first_map) = (new InspectService())->getXJLastData(array_column($data['data'],'id'));
 
-        return [200,$list];
+        $day = date('Y-m-d');
+        foreach ($data['data'] as $key => $value){
+            $data['data'][$key]['depart_title'] = $depart_map[$value['depart_id']] ?? '';
+
+            $first_time = $equipment_first_map[$value['id']] ?? 0;
+            $data['data'][$key]['first_time'] = $first_time ? date('Y-m-d', $first_time) : '';
+            $next_time = 0;
+            $detail_time = $equipment_map[$value['id']] ?? 0;
+            if($detail_time > 0 && $value['check_cycle'] > 0) $next_time = strtotime("+{$value['check_cycle']} days", $detail_time);
+            if($day > date('Y-m-d', $next_time)){
+                $data['data'][$key]['next_time'] = "暂无巡检计划";
+            }else{
+                $data['data'][$key]['next_time'] = $next_time ? date('Y-m-d', $next_time) : "暂无巡检计划";
+            }
+        }
+
+        return $data;
     }
 
     /**
@@ -100,23 +189,35 @@ class EquipmentService extends Service
             if($title_count[$value] > 1) return [false,'名称不能重复'];
         }
 
+        $timestamp = strtotime(date('Y-m-d 00:00:00'));
+        $return = [];
         foreach ($data['data'] as $key => $value){
-            $data['data'][$key]['upd_time'] = time();
+            if(isset($value['check_cycle']) && isset($value['first_time'])){
+                if(! empty($value['check_cycle']) && ! is_numeric($value['check_cycle'])) return [false, '设备巡检周期请输入数字'];
+                if(! empty($value['first_time']) && ! is_numeric($value['first_time'])) return [false, '首次巡检时间格式错误'];
+                if($value['check_cycle'] >= 0 && $value['first_time'] < $timestamp){
+                    return [false, '首次巡检时间请选择大于等于今天的日期'];
+                }
+            }
+            $return[$key]['first_time'] = ! empty($value['first_time']) ? $value['first_time'] : 0;
+            if(array_key_exists('first_time', $value)) unset($data['data'][$key]['first_time']);
+
+            $search = "(title = '{$value['title']}' OR code = '{$value['code']}')";
             if($is_add){
-                $bool = Equipment::whereRaw("title = '{$value['title']}' OR code = '{$value['code']}'")
+                $bool = Equipment::whereRaw($search)
                     ->where('del_time',0)
                     ->exists();
-                $data['data'][$key]['crt_time'] = time();
             }else{
                 if($this->isEmpty($data,'id')) return [false,'id不能为空!'];
-                $bool = Equipment::whereRaw("title = '{$value['title']}' OR code = '{$value['code']}'")
+                $bool = Equipment::whereRaw($search)
                     ->where('id','<>',$data['id'])
                     ->where('del_time',0)
                     ->exists();
             }
             if($bool) return [false,'名称和编码不能重复'];
         }
+        $data['time_arr'] = $return;
 
-        return [true,$data];
+        return [true, $data];
     }
 }

+ 359 - 0
app/Service/InspectService.php

@@ -0,0 +1,359 @@
+<?php
+
+namespace App\Service;
+
+use App\Model\DeviceOrder;
+use App\Model\DeviceOrderInfo;
+use App\Model\Employee;
+use App\Model\Equipment;
+use App\Model\EquipmentXj;
+use Illuminate\Support\Facades\DB;
+
+class InspectService extends Service
+{
+    //生成巡检单据
+    public function addOnSiteInspectionOrder(){
+        $deviceList = Equipment::where('del_time',0)
+            ->where('check_cycle','>',0)
+            ->select('id','title','code','check_cycle')
+            ->get()->toArray();
+        if(empty($deviceList)) return [false,'1.暂无启用巡检的设备'];
+        $timestamp1 = strtotime(date('Y-m-d 00:00:00'));
+        $timestamp2 = strtotime(date('Y-m-d 23:59:59'));
+        $equipment_id = array_column($deviceList,'id');
+        //今天已巡检的设备
+        $xj_data = DeviceOrderInfo::where('del_time',0)
+            ->where('type',DeviceOrder::Model_type_one)
+            ->whereIn('equipment_id', $equipment_id)
+            ->where('crt_time','>=',$timestamp1)
+            ->where('crt_time','<=',$timestamp2)
+            ->select('equipment_id')
+            ->get()->toArray();
+        $xj_data = array_column($xj_data,'equipment_id');
+        if(! empty($xj_data)) {
+            foreach ($deviceList as $key => $value){
+                if(in_array($value['id'], $xj_data)) unset($deviceList[$key]);
+            }
+        }
+        if(empty($deviceList)) return [false,'2.今日设备已全部生产巡检单'];
+
+        // 设备最大一次的巡检的时间  设置的首次巡检
+        list($equipment_map,$equipment_first_map) = $this->getXJLastData($equipment_id);
+
+        $insert_detail = [];
+        foreach ($deviceList as $value){
+            //设备巡检的时间
+            $first_time = $equipment_map[$value['id']] ?? 0;
+            if($first_time <= 0) continue;
+
+            if($timestamp2 >= $first_time && $timestamp1 <= $first_time){
+                $insert_detail[] = [
+                    'equipment_id' => $value['id'],
+                    'equipment_no' => $value['code'],
+                ];
+            }else{
+                //存在巡检数据 获取数据最近一次的时间 加上巡检周期
+                $detail_time = strtotime("+{$value['check_cycle']} days", $first_time);
+                if($timestamp2 >= $detail_time && $timestamp1 <= $detail_time){
+                    $insert_detail[] = [
+                        'equipment_id' => $value['id'],
+                        'equipment_no' => $value['code'],
+                    ];
+                }
+            }
+        }
+
+        if(empty($insert_detail)) return [false, '3.暂无今日要生成的巡检数据'];
+
+        //生成巡检单号
+        $order_number = $this->createOrderNumber();
+        try {
+            DB::beginTransaction();
+
+            $time = time();
+            $model = new DeviceOrder();
+            $model->type = DeviceOrder::Model_type_one;
+            $model->order_number = $order_number;
+            $model->crt_time = $time;
+            $model->hand_time = $time;
+            $model->save();
+            $device_order_id = $model->id;
+
+            //详情数据
+            foreach ($insert_detail as $key => $value){
+                $insert_detail[$key]['type'] = DeviceOrder::Model_type_one;
+                $insert_detail[$key]['crt_time'] = $time;
+                $insert_detail[$key]['device_order_id'] = $device_order_id;
+                $insert_detail[$key]['order_number'] = $order_number;
+            }
+            DeviceOrderInfo::insert($insert_detail);
+
+            DB::commit();
+        }catch (\Throwable $exception){
+            DB::rollBack();
+            return [false, $exception->getMessage()];
+        }
+
+        return [true, ''];
+    }
+
+    public function deviceOrderEdit($data,$user){
+        list($status,$msg) = $this->deviceRule($data, $user, false);
+        if(!$status) return [$status,$msg];
+
+        try {
+            DB::beginTransaction();
+
+            $model = DeviceOrder::where('id',$data['id'])->first();
+            if($model->del_time > 0) return [false, '单据不存在或已被删除'];
+
+            $model->mark = $data['mark'] ?? '';
+            $model->state = $data['state'] ?? 0;
+            $model->hand_time = $data['hand_time'] ?? 0;
+            $model->crt_id = $data['crt_id'] ?? 0;
+            $model->save();
+
+            $time = time();
+            DeviceOrderInfo::where('del_time',0)
+                ->where('device_order_id',$data['id'])
+                ->update(['del_time' => $time]);
+
+            if(! empty($data['sub'])){
+                $insert = [];
+                foreach ($data['sub'] as $value){
+                    $insert[] = [
+                        'type' => $data['type'],
+                        'device_order_id' => $data['id'],
+                        'order_number' => $model->order_number,
+                        'equipment_id' => $value['equipment_id'],
+                        'equipment_no' => $value['equipment_no'],
+                        'state' => $value['state'],
+                        'mark' => $value['mark'] ?? "",
+                        'crt_time' => $time,
+                    ];
+                }
+                DeviceOrderInfo::insert($insert);
+            }
+
+            DB::commit();
+        }catch (\Exception $exception){
+            DB::rollBack();
+            return [false,$exception->getMessage()];
+        }
+
+        return [true, ''];
+    }
+
+    public function deviceOrderAdd($data,$user){
+        list($status,$msg) = $this->deviceRule($data, $user);
+        if(!$status) return [$status,$msg];
+
+        try {
+            DB::beginTransaction();
+
+            $order_number = $this->createOrderNumber($data['type']);
+            $model = new DeviceOrder();
+            $model->type = $data['type'];
+            $model->order_number = $order_number;
+            $model->mark = $data['mark'] ?? '';
+            $model->state = $data['state'] ?? 0;
+            $model->hand_time = $data['hand_time'] ?? 0;
+            $model->crt_id = $data['crt_id'];
+            $model->save();
+            $device_order_id = $model->id;
+
+            $time = time();
+
+            if(! empty($data['sub'])){
+                $insert = [];
+                foreach ($data['sub'] as $value){
+                    $insert[] = [
+                        'type' => $data['type'],
+                        'device_order_id' => $device_order_id,
+                        'order_number' => $order_number,
+                        'equipment_id' => $value['equipment_id'],
+                        'equipment_no' => $value['equipment_no'],
+                        'state' => $value['state'],
+                        'mark' => $value['mark'] ?? "",
+                        'crt_time' => $time,
+                    ];
+                }
+                DeviceOrderInfo::insert($insert);
+            }
+
+            DB::commit();
+        }catch (\Exception $exception){
+            DB::rollBack();
+            return [false,$exception->getMessage()];
+        }
+
+        return [true, ''];
+    }
+
+    public function deviceRule(&$data, $user, $is_add = true){
+        if(empty($data['type'])) return [false,'单据类型不能为空'];
+        if(! isset(DeviceOrder::$prefix[$data['type']])) return [false,'单据类型不存在'];
+        if(! isset($data['crt_id'])) return [false,'单据创建人不能为空'];
+        if(empty($data['hand_time'])) return [false,'单据日期不能为空'];
+        if($data['type'] == DeviceOrder::Model_type_one) $data['hand_time'] = strtotime($data['hand_time']);
+        if(empty($data['sub'])) return [false, '表体信息不能为空'];
+
+        foreach ($data['sub'] as $value){
+            if(empty($value['equipment_id']) || empty($value['equipment_no'])) return [false, '设备信息不能为空'];
+            if(! isset($value['state']) || ! isset(DeviceOrderInfo::$prefix[$value['state']]))  return [false, '设备状态信息不能为空'];
+        }
+
+        if(! $is_add){
+            if(empty($data['id'])) return [false, 'ID不能为空'];
+        }
+
+        return [true, $data];
+    }
+    
+    public function deviceOrderDel($data,$user){
+        if($this->isEmpty($data,'id')) return [false,'请选择数据'];
+
+        try {
+            DB::beginTransaction();
+            $time = time();
+
+            DeviceOrder::where('del_time',0)->where('id',$data['id'])->update(['del_time' => $time]);
+            DeviceOrderInfo::where('device_order_id',$data['id'])
+                ->where('del_time',0)
+                ->update(['del_time' => $time]);
+
+            DB::commit();
+        }catch (\Exception $exception){
+            DB::rollBack();
+            return [false,$exception->getMessage()];
+        }
+
+        return [true, ''];
+    }
+
+    public function deviceOrderDetail($data,$user){
+        if($this->isEmpty($data,'id')) return [false,'请选择数据'];
+
+        $customer = DeviceOrder::where('del_time',0)
+            ->where('id',$data['id'])
+            ->first();
+        if(empty($customer)) return [false,'单据不存在或已被删除'];
+        $customer = $customer->toArray();
+        $customer['type_title'] = DeviceOrder::$prefix_title[$customer['type']] ?? "";
+        $customer['crt_title'] = Employee::where('id',$customer['crt_id'])->value('emp_name') ?? "系统生成";
+        $customer['crt_time'] = $customer['crt_time'] ? date("Y-m-d H:i:s",$customer['crt_time']): '';
+        $customer['hand_time'] = $customer['hand_time'] ? date("Y-m-d",$customer['hand_time']): '';
+        $customer['sub'] = [];
+        $sub = DeviceOrderInfo::where('del_time',0)
+            ->where('device_order_id',$data['id'])
+            ->select('equipment_id','equipment_no','state','mark')
+            ->get()->toArray();
+        $equ = Equipment::whereIn('id',array_unique(array_column($sub,'equipment_id')))
+            ->pluck('title','id')
+            ->toArray();
+        foreach ($sub as $key => $value){
+            $sub[$key]['equipment_title'] = $equ[$value['equipment_id']] ?? "";
+        }
+        $customer['sub'] = $sub;
+
+        return [true, $customer];
+    }
+
+    //单据列表
+    public function deviceOrderList($data){
+        $model = new DeviceOrder;
+        $model = $model->where('del_time',0)
+            ->select('type','id','order_number','crt_id','crt_time','mark','state','hand_time')
+            ->orderby('id', 'desc');
+
+        if(! empty($data['order_number'])) $model->where('order_number', 'LIKE', '%'.$data['order_number'].'%');
+        if(isset($data['type'])) $model->where('type', $data['type']);
+        if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) $model->whereBetween('crt_time',[$data['crt_time'][0],$data['crt_time'][1]]);
+        if(! empty($data['hand_time'][0]) && ! empty($data['hand_time'][1])) $model->whereBetween('hand_time',[$data['hand_time'][0],$data['hand_time'][1]]);
+        if(! empty($data['crt_id'])) $model->where('crt_id', $data['crt_id']);
+
+        $list = $this->limit($model,'',$data);
+        $list = $this->fillData($list);
+
+        return [true, $list];
+    }
+
+    public function fillData($data){
+        if(empty($data['data'])) return $data;
+
+        $emp = Employee::whereIn('id',array_unique(array_filter(array_column($data['data'],'crt_id'))))
+            ->pluck('emp_name','id')
+            ->toArray();
+        foreach ($data['data'] as $key => $value){
+            $data['data'][$key]['type_title'] = DeviceOrder::$prefix_title[$value['type']] ?? "";
+            $data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d',$value['crt_time']) : '';
+            $data['data'][$key]['hand_time'] = $value['hand_time'] ? date('Y-m-d',$value['hand_time']) : '';
+            $data['data'][$key]['crt_title'] = $value['crt_id'] ? $emp[$value['crt_id']] : "系统生成";
+        }
+
+         return $data;
+    }
+
+    public function createOrderNumber($type = 1){
+        $str = DeviceOrder::$prefix[$type] . date('Ymd',time());
+
+        $order_number = DeviceOrder::where('order_number','Like','%'. $str . '%')
+            ->where('type',$type)
+            ->max('order_number');
+
+        if(empty($order_number)){
+            $number = str_pad(1,2,'0',STR_PAD_LEFT);
+            $number = $str . $number;
+        }else{
+            $tmp = substr($order_number, -2);
+            $tmp = $tmp + 1;
+
+            //超过99999
+            if(strlen($tmp) > 5) return '';
+
+            $number = str_pad($tmp,2,'0',STR_PAD_LEFT);
+            $number = $str . $number;
+        }
+
+        return $number;
+    }
+
+    // 设置的首次巡检,设备最大一次的巡检的时间
+    public function getXJLastData($equipment_id = []){
+        if(empty($equipment_id)) return [];
+
+        //设置的首次巡检
+        $equipment = EquipmentXj::where('del_time',0)
+            ->whereIn('equipment_id',$equipment_id)
+            ->select('equipment_id',DB::raw('MAX(first_time) as first_time'))
+            ->groupBy('equipment_id')
+            ->get()->toArray();
+        $equipment_first_map = array_column($equipment,'first_time','equipment_id');
+
+        //巡检单明细数据
+        $xj_data = DeviceOrderInfo::where('del_time',0)
+            ->where('type',DeviceOrder::Model_type_one)
+            ->whereIn('equipment_id', $equipment_id)
+            ->select('equipment_id', DB::raw('MAX(crt_time) as crt_time'))
+            ->groupBy('equipment_id')
+            ->get()->toArray();
+        $map = array_column($xj_data,'crt_time','equipment_id');
+
+        //设备最近一次的巡检的时间 (通过比较 巡检单明细数据  设置的首次巡检  谁大取谁)
+        $equipment_map = [];
+        foreach ($equipment as $value){
+            $xj_tmp = $map[$value['equipment_id']] ?? 0;
+            if(empty($xj_tmp)) {
+                $equipment_map[$value['equipment_id']] = $value['first_time'] ?? 0;
+            }else{
+                if($xj_tmp < $value['first_time']){
+                    $equipment_map[$value['equipment_id']] = $value['first_time'] ?? 0;
+                }else{
+                    $equipment_map[$value['equipment_id']] = $xj_tmp;
+                }
+            }
+        }
+
+        return [$equipment_map,$equipment_first_map];
+    }
+}