Browse Source

模式管理导入

master
wanghongjun 1 day ago
parent
commit
6bd6230cda
  1. 24
      app/Http/Controllers/Admin/ParkingPatternController.php
  2. 44
      app/Imports/ParkingPatternImport.php
  3. 42
      app/Imports/ParkingPatternSpaceImport.php
  4. 12
      app/Services/ParkingPatternService.php
  5. 7
      resources/lang/en/imports.php
  6. 7
      resources/lang/zh-CN/imports.php
  7. 7
      resources/lang/zh-TW/imports.php

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

@ -248,6 +248,7 @@ class ParkingPatternController extends BaseController
* @param Request $request
* @return JsonResponse
* @throws ValidationException
* @throws CustomException
*/
public function batchImport(Request $request): JsonResponse
{
@ -273,18 +274,25 @@ class ParkingPatternController extends BaseController
// 4. 执行导入(使用存储后的绝对路径)
// storage_path('app') 获取 storage/app 的绝对路径
$model = new ParkingPatternSpaceImport($this->adminUserId);
Excel::import(
new ParkingPatternSpaceImport($this->adminUserId),
$model,
storage_path('app/' . $path)
);
// 5. (可选)导入完成后删除临时文件
Storage::delete($path);
// 6. 返回错误行
$error_arr = $model->errorArr();
if ($error_arr) {
throw new CustomException(implode("<br>", $error_arr));
}
return $this->responseService->success(
__('controller.import.success')
);
} catch (ValidationException $e) {
} catch (ValidationException|CustomException $e) {
throw $e;
} catch (Exception $e) {
return $this->responseService->systemError(
@ -299,6 +307,7 @@ class ParkingPatternController extends BaseController
* @param Request $request
* @return JsonResponse
* @throws ValidationException
* @throws CustomException
*/
public function import(Request $request): JsonResponse
{
@ -338,18 +347,25 @@ class ParkingPatternController extends BaseController
// 4. 执行导入(使用存储后的绝对路径)
// storage_path('app') 获取 storage/app 的绝对路径
$model = new ParkingPatternImport($model_name, $this->adminUserId, $en_name, $tw_name);
Excel::import(
new ParkingPatternImport($model_name, $this->adminUserId, $en_name, $tw_name),
$model,
storage_path('app/' . $path)
);
// 5. (可选)导入完成后删除临时文件
Storage::delete($path);
// 6. 返回错误行
$error_arr = $model->errorArr();
if ($error_arr) {
throw new CustomException(implode("<br>", $error_arr));
}
return $this->responseService->success(
__('controller.import.success')
);
} catch (ValidationException $e) {
} catch (ValidationException|CustomException $e) {
throw $e;
} catch (Exception $e) {
return $this->responseService->systemError(

44
app/Imports/ParkingPatternImport.php

@ -12,7 +12,8 @@ class ParkingPatternImport implements ToModel
protected string $en_name;
protected string $tw_name;
protected string $user_id;
protected int $index = 1;
protected int $index = 0;
protected array $error = [];
public function __construct(
string $model_name,
@ -31,23 +32,36 @@ class ParkingPatternImport implements ToModel
*/
public function model(array $row)
{
if ($this->index == 1) {
if (!$this->index) {
$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[1],
'parking_space_type' => $row[2],
'en_name' => $this->en_name,
'tw_name' => $this->tw_name
];
$service = new ParkingPatternService(new OperationLogService());
$service->saveModel($data);
$this->index += 1;
if (empty($row[1])) {
$this->error[] = imports_error($this->index, 'import15');
return;
}
if (empty($row[2])) {
$this->error[] = imports_error($this->index, 'import16');
return;
}
$data = [
'model_name' => $this->model_name,
'admin_user_id' => $this->user_id,
'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());
$error_str = $service->saveModel($data);
if ($error_str) {
$this->error[] = imports_error($this->index, $error_str);
}
}
public function errorArr(): array
{
return $this->error;
}
}

42
app/Imports/ParkingPatternSpaceImport.php

@ -9,7 +9,8 @@ use Maatwebsite\Excel\Concerns\ToModel;
class ParkingPatternSpaceImport implements ToModel
{
protected string $user_id;
protected int $index = 1;
protected int $index = 0;
protected array $error = [];
public function __construct(string $user_id)
{
@ -21,19 +22,38 @@ class ParkingPatternSpaceImport implements ToModel
*/
public function model(array $row)
{
if ($this->index == 1) {
if (!$this->index) {
$this->index += 1;
return;
}
if (!empty($row[1]) && !empty($row[2]) && !empty($row[3])) {
$data = [
'model_name' => $row[1],
'admin_user_id' => $this->user_id,
'parking_space_number' => $row[2],
'parking_space_type' => $row[3]
];
$service = new ParkingPatternService(new OperationLogService());
$service->saveModel($data);
$this->index += 1;
if (empty($row[1])) {
$this->error[] = imports_error($this->index, 'import19');
return;
}
if (empty($row[2])) {
$this->error[] = imports_error($this->index, 'import15');
return;
}
if (empty($row[3])) {
$this->error[] = imports_error($this->index, 'import16');
return;
}
$data = [
'model_name' => $row[1],
'admin_user_id' => $this->user_id,
'parking_space_number' => $row[2],
'parking_space_type' => $row[3]
];
$service = new ParkingPatternService(new OperationLogService());
$error_str = $service->saveModel($data);
if ($error_str) {
$this->error[] = imports_error($this->index, $error_str);
}
}
public function errorArr(): array
{
return $this->error;
}
}

12
app/Services/ParkingPatternService.php

@ -154,9 +154,9 @@ class ParkingPatternService extends BaseService
/**
* 保存
* @param $data
* @return bool
* @return string
*/
public function saveModel($data): bool
public function saveModel($data): string
{
try {
DB::beginTransaction();
@ -188,7 +188,7 @@ class ParkingPatternService extends BaseService
// 验证
$parking_space_id = ParkingSpace::getValueId($parking_space_number);
if (empty($parking_space_id)) {
throw new Exception('');
return 'import17';
}
$parking_space_type_id = ParkingSpaceType::getValueId(
$parking_space_type
@ -196,7 +196,7 @@ class ParkingPatternService extends BaseService
if (empty($parking_space_type_id)) {
$parking_space_type_id = AdminTranslationService::getTypeId(1, $parking_space_type);
if (!$parking_space_type_id) {
throw new Exception('');
return 'import18';
}
}
@ -226,10 +226,10 @@ class ParkingPatternService extends BaseService
}
DB::commit();
return true;
return '';
} catch (Exception $e) {
DB::rollBack();
return false;
return '';
}
}

7
resources/lang/en/imports.php

@ -14,5 +14,10 @@ return [
'import11' => 'The end time cannot be empty.',
'import12' => 'End time data error',
'import13' => 'The start time cannot be greater than the end time.',
'import14' => 'There is already an activity running in the current time period, so uploading is not allowed.'
'import14' => 'There is already an activity running in the current time period, so uploading is not allowed.',
'import15' => 'Parking space number cannot be empty',
'import16' => 'Parking space type cannot be empty',
'import17' => 'Parking space number does not exist',
'import18' => 'Parking space type does not exist',
'import19' => 'The mode name cannot be empty.'
];

7
resources/lang/zh-CN/imports.php

@ -14,5 +14,10 @@ return [
'import11' => '结束时间不能为空',
'import12' => '结束时间数据错误',
'import13' => '开始时间不能大于结束时间',
'import14' => '当前时间段已有活动,不可上传'
'import14' => '当前时间段已有活动,不可上传',
'import15' => '车位号码不能为空',
'import16' => '车位类型不能为空',
'import17' => '车位号码不存在',
'import18' => '车位类型不存在',
'import19' => '模式名称不能为空'
];

7
resources/lang/zh-TW/imports.php

@ -14,5 +14,10 @@ return [
'import11' => '結束時間不能為空',
'import12' => '結束時間資料錯誤',
'import13' => '開始時間不能大於結束時間',
'import14' => '目前時段已有活動,不可上傳'
'import14' => '目前時段已有活動,不可上傳',
'import15' => '车位号码不能为空',
'import16' => '车位类型不能为空',
'import17' => '车位号码不存在',
'import18' => '车位类型不存在',
'import19' => '模式名称不能为空'
];

Loading…
Cancel
Save