Browse Source

维修车位脚本 活动模式增加翻译

master
wanghongjun 5 days ago
parent
commit
9e67c3f00f
  1. 101
      app/Console/Commands/AutoChangeRepair.php
  2. 1
      app/Console/Kernel.php
  3. 6
      app/Exports/ParkingPatternModelExport.php
  4. 12
      app/Http/Controllers/Admin/ParkingPatternController.php
  5. 29
      app/Imports/ParkingPatternImport.php
  6. 21
      app/Models/ParkingPattern.php
  7. 1
      app/Services/AdminTranslationService.php
  8. 17
      app/Services/ParkingPatternService.php
  9. 39
      app/Services/ParkingSpaceService.php
  10. 3
      resources/lang/en/log.php
  11. 3
      resources/lang/zh-CN/log.php
  12. 3
      resources/lang/zh-TW/log.php

101
app/Console/Commands/AutoChangeRepair.php

@ -0,0 +1,101 @@
<?php
namespace App\Console\Commands;
use App\Models\ParkingSpace;
use App\Models\ParkingSpaceRepair;
use App\Services\OperationLogService;
use App\Services\ParkingSpaceService;
use Exception;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class AutoChangeRepair extends Command
{
/**
* The name and signature of the console command.
* @var string
*/
protected $signature = 'run:auto-change-repair';
/**
* The console command description.
* @var string
*/
protected $description = 'Command description';
protected OperationLogService $logService;
protected int $user_id;
protected ParkingSpaceService $service;
public function __construct(OperationLogService $log)
{
parent::__construct();
$this->logService = $log;
$this->logService->menuTitle = 'cat_list';
// 默认超级管理员修改
$this->user_id = DB::table('admin_users')->where('username', 'Admin')
->value('id');
$this->service = new ParkingSpaceService($this->logService);
}
/**
* Execute the console command.
*/
public function handle()
{
try {
DB::beginTransaction();
$now_times = time();
$now_time = date("Y-m-d H:i:s", $now_times);
$where = [
['start_at', '<=', $now_time],
['end_at', '>=', $now_time]
];
$space_ids = ParkingSpaceRepair::query()->where($where)->pluck(
'space_id'
);
if ($space_ids) {
$update_ids = ParkingSpace::query()->where('status', '<>', 2)
->whereIn('id', $space_ids)->pluck('id');
// 更新为维修状态
foreach ($update_ids as $id) {
// 修改为类型的维修指定灯光
$this->service->updateRepairStatus($id, 2);
}
}
// 处理在维修的回复正常, 维修已结束的回复正常
$ParkingSpace = ParkingSpace::query();
$ParkingSpace->where('status', 2);
if ($space_ids) {
$ParkingSpace->whereNotIn('id', $space_ids);
}
$space_ids = $ParkingSpace->pluck('id');
if ($space_ids) {
// 维修车位已经 超过维修结束时间, 改为空置状态
$update_ids = ParkingSpaceRepair::query()->where(
'end_at',
'<',
$now_time
)->whereIn('space_id', $space_ids)->pluck(
'space_id'
);
if ($update_ids) {
// 更新为空置状态
foreach ($update_ids as $id) {
// 恢复正常类型灯光
$this->service->updateRepairStatus($id, 0);
}
}
}
DB::commit();
} catch (Exception $e) {
DB::rollBack();
}
}
}

1
app/Console/Kernel.php

@ -29,6 +29,7 @@ class Kernel extends ConsoleKernel
protected $commands = [
Commands\AutomaticallyStartActivity::class,
Commands\AutoChangeRepair::class,
];
}

6
app/Exports/ParkingPatternModelExport.php

@ -10,9 +10,9 @@ class ParkingPatternModelExport implements FromArray
{
return [
[
'No.',
'Parking Space No.',
'Parking Space Type'
__exports('global.index'),
__exports('parking_pattern.parking_space_number'),
__exports('parking_pattern.parking_space_type')
],
['1', 'A0001', 'General'],
['2', 'A0001', 'General'],

12
app/Http/Controllers/Admin/ParkingPatternController.php

@ -9,6 +9,7 @@ use App\Imports\ParkingPatternImport;
use App\Imports\ParkingPatternSpaceImport;
use App\Models\AdminUsers;
use App\Models\ParkingPattern;
use App\Services\AdminTranslationService;
use App\Services\ApiResponseService;
use App\Services\ParkingPatternService;
use Exception;
@ -91,6 +92,7 @@ class ParkingPatternController extends BaseController
);
$item['status'] = $statusArr[$item['status']];
$item['is_default'] = $isDefaultArr[$item['is_default']];
$item['model_name'] = AdminTranslationService::getTranslationTypeName($item['id'], 10, $item['model_name']);
unset($item['admin_user_id']);
return $item;
});
@ -145,6 +147,12 @@ class ParkingPatternController extends BaseController
ParkingPatternService::getStatus()
)
];
$Translation = AdminTranslationService::getTranslation(
$item['id'],
10
);
$item['en_name'] = $Translation['en'] ?? '';
$item['tw_name'] = $Translation['zh_tw'] ?? '';
$data['item'] = $item;
return $this->responseService->success($data);
} catch (Exception $e) {
@ -319,6 +327,8 @@ class ParkingPatternController extends BaseController
}
$model_name = $data['model_name'];
$en_name = $data['en_name'] ?? '';
$tw_name = $data['tw_name'] ?? '';
// 2. 获取上传的文件
$file = $request->file('file');
@ -329,7 +339,7 @@ class ParkingPatternController extends BaseController
// 4. 执行导入(使用存储后的绝对路径)
// storage_path('app') 获取 storage/app 的绝对路径
Excel::import(
new ParkingPatternImport($model_name, $this->adminUserId),
new ParkingPatternImport($model_name, $this->adminUserId, $en_name, $tw_name),
storage_path('app/' . $path)
);

29
app/Imports/ParkingPatternImport.php

@ -11,14 +11,23 @@ use Illuminate\Validation\ValidationException;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
class ParkingPatternImport implements ToModel, WithHeadingRow
class ParkingPatternImport implements ToModel
{
protected string $model_name;
protected string $en_name;
protected string $tw_name;
protected string $user_id;
protected int $index = 1;
public function __construct(string $model_name, string $user_id)
{
public function __construct(
string $model_name,
string $user_id,
string $en_name = '',
string $tw_name = ''
) {
$this->model_name = $model_name;
$this->en_name = $en_name ?? '';
$this->tw_name = $tw_name ?? '';
$this->user_id = $user_id;
}
@ -27,12 +36,20 @@ class ParkingPatternImport implements ToModel, WithHeadingRow
*/
public function model(array $row)
{
if (!empty($row['parking_space_no']) && !empty($row['parking_space_type'])) {
if ($this->index == 1) {
$this->index += 1;
return;
}
if (!empty($row[1])
&& !empty($row[2])
) {
$data = [
'model_name' => $this->model_name,
'admin_user_id' => $this->user_id,
'parking_space_number' => $row['parking_space_no'],
'parking_space_type' => $row['parking_space_type']
'parking_space_number' => $row[1],
'parking_space_type' => $row[2],
'en_name' => $this->en_name,
'tw_name' => $this->tw_name
];
$service = new ParkingPatternService(new OperationLogService());
$service->saveModel($data);

21
app/Models/ParkingPattern.php

@ -2,6 +2,7 @@
namespace App\Models;
use App\Services\AdminTranslationService;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
@ -31,7 +32,8 @@ class ParkingPattern extends Model
public static function getName($id)
{
return self::query()->where('id', $id)->value('name');
$name = self::query()->where('id', $id)->value('name');
return AdminTranslationService::getTranslationTypeName($id, 10, $name);
}
public static function getData()
@ -39,7 +41,15 @@ class ParkingPattern extends Model
return self::query()->where('status', 1)->orderBy('created_at', 'desc')
->select(
['id', 'name as model_name']
)->get()->toArray();
)->get()->each(function ($item) {
$item['model_name']
= AdminTranslationService::getTranslationTypeName(
$item['id'],
10,
$item['model_name']
);
return $item;
})->toArray();
}
public static function getId($name)
@ -55,7 +65,12 @@ class ParkingPattern extends Model
$data['show_release'] = 0;
$data['show_change'] = 0;
if ($pattern) {
$data['pattern_name'] = $pattern['name'];
$data['pattern_name']
= AdminTranslationService::getTranslationTypeName(
$id,
10,
$pattern['name']
);
if ($status == 1) {
$data['show_release'] = $pattern['release'];
$data['show_change'] = $pattern['change'];

1
app/Services/AdminTranslationService.php

@ -222,6 +222,7 @@ class AdminTranslationService
7 岗亭管理
8 离场原因
9 设备管理
10 模式管理
100 - 199 告警信息
*/
public static function getTranslationTypeName($type_id, $type, $name)

17
app/Services/ParkingPatternService.php

@ -63,6 +63,14 @@ class ParkingPatternService extends BaseService
throw new Exception(__('service.parking_pattern.name_exists'));
}
$model = $this->updateData($data, $id);
AdminTranslationService::saveTranslation(
$data['model_name'],
$data['en_name'] ?? '',
$data['tw_name'] ?? '',
$model->id,
10
);
DB::commit();
return $model;
} catch (Exception $e) {
@ -156,6 +164,8 @@ class ParkingPatternService extends BaseService
$model_name = $data['model_name'];
$parking_space_number = $data['parking_space_number'];
$parking_space_type = $data['parking_space_type'];
$en_name = $data['en_name'] ?? '';
$tw_name = $data['tw_name'] ?? '';
$pattern_id = ParkingPatternModel::query()->where('name', $model_name)->value('id');
if ($pattern_id) {
@ -164,6 +174,13 @@ class ParkingPatternService extends BaseService
$mode = $this->createData($data);
$pattern_id = $mode->id;
}
AdminTranslationService::saveTranslation(
$model_name,
$en_name,
$tw_name,
$pattern_id,
10
);
// 验证
$parking_space_id = ParkingSpace::getValueId($parking_space_number);

39
app/Services/ParkingSpaceService.php

@ -294,7 +294,7 @@ class ParkingSpaceService extends BaseService
$this->logService->logUpdated(
$model,
$oldValues,
'space_attributes.update'
'parking_space.update_status'
);
DB::commit();
return $model;
@ -344,11 +344,13 @@ class ParkingSpaceService extends BaseService
$this->getLogDescription('space_type_id')
);
// 切换车位类型,同步切换车位灯颜色
if ($oldValues['status'] != 2) {
$this->changeSpaceCameraColor($oldValues['number'], $type_id, $oldValues['space_attr_id']);
}
}
// 切换模式更改车位类型 后 更改车位灯颜色
protected function changeSpaceCameraColor($number, $space_type_id, $space_attr)
public function changeSpaceCameraColor($number, $space_type_id, $space_attr, $is_repair = false)
{
if ($number == '1-1') {
$SpaceType = ParkingSpaceType::query()->find($space_type_id);
@ -362,6 +364,12 @@ class ParkingSpaceService extends BaseService
$color_vacant = $SpaceTypeAttr['color_vacant'];
$is_flicker = $SpaceTypeAttr['is_warning'];
}
// 维修灯
if ($is_repair) {
$color_occupy = $SpaceType['repair_light'];
$color_vacant = $SpaceType['repair_light'];
$is_flicker = false;
}
$HikParkingCameraService = new HikParkingCameraService($this->logService);
$body = $HikParkingCameraService->getBody($color_occupy, $color_vacant, $is_flicker);
$HikParkingCameraService->updatelight($body);
@ -470,4 +478,31 @@ class ParkingSpaceService extends BaseService
throw $e;
}
}
//修改为维修车位
public function updateRepairStatus($id, $status)
{
$model = ParkingSpace::query()->findOrFail($id);
$oldValues = $model->toArray();
$update = [
'status' => $status,
'updated_at' => date("Y-m-d H:i:s", time())
];
$model->update($update);
$this->logService->logUpdated(
$model,
$oldValues,
'parking_space.update_status'
);
$number = $oldValues['number'];
$space_attr_id = $oldValues['space_attr_id'];
$space_type_id = $oldValues['space_type_id'];
// 修改为类型的维修指定灯光
$this->changeSpaceCameraColor(
$number,
$space_attr_id,
$space_type_id,
$status == 2
);
}
}

3
resources/lang/en/log.php

@ -72,7 +72,8 @@ return [
'parking_space' => [
'create' => 'Create parking space',
'update' => 'Update parking spaces',
'delete' => 'Delete parking space'
'delete' => 'Delete parking space',
'update_status' => 'Update parking status'
],
'parking_pattern' => [
'create' => 'Create activity mode',

3
resources/lang/zh-CN/log.php

@ -72,7 +72,8 @@ return [
'parking_space' => [
'create' => '创建车位',
'update' => '更新车位',
'delete' => '删除车位'
'delete' => '删除车位',
'update_status' => '更新车位状态'
],
'parking_pattern' => [
'create' => '创建活动模式',

3
resources/lang/zh-TW/log.php

@ -72,7 +72,8 @@ return [
'parking_space' => [
'create' => '創建車位',
'update' => '更新車位',
'delete' => '删除車位'
'delete' => '删除車位',
'update_status' => '更新車位狀態'
],
'parking_pattern' => [
'create' => '創建活動模式',

Loading…
Cancel
Save