feat: add article and production modules
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace plugin\produce\app\validate;
|
||||
|
||||
use core\base\BaseValidate;
|
||||
|
||||
class ExceptionRecordValidate extends BaseValidate
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'order_no' => ['required', 'max:100'],
|
||||
'user_code' => ['nullable', 'max:50'],
|
||||
'reporter' => ['nullable', 'max:100'],
|
||||
'type_id' => ['nullable', 'integer'],
|
||||
'type_code' => ['required', 'max:64'],
|
||||
'type_name' => ['required', 'max:100'],
|
||||
'reason_id' => ['nullable', 'integer'],
|
||||
'reason_code' => ['required', 'max:64'],
|
||||
'reason_name' => ['required', 'max:100'],
|
||||
'issue_id' => ['nullable', 'integer'],
|
||||
'issue_code' => ['nullable', 'max:64'],
|
||||
'issue_name' => ['nullable', 'max:100'],
|
||||
'images' => ['nullable'],
|
||||
'remark' => ['nullable', 'max:65535'],
|
||||
'status' => ['nullable', 'integer', 'in:0,1,2'],
|
||||
'handler' => ['nullable', 'max:100'],
|
||||
'handler_id' => ['nullable', 'integer'],
|
||||
'handled_at' => ['nullable', 'integer'],
|
||||
'reported_at' => ['nullable', 'integer'],
|
||||
];
|
||||
}
|
||||
|
||||
protected array $message = [
|
||||
'order_no.required' => '单号或条码不能为空',
|
||||
'order_no.max' => '单号或条码不能超过100个字符',
|
||||
'user_code.max' => '提报人工号不能超过50个字符',
|
||||
'reporter.max' => '提报人不能超过100个字符',
|
||||
'type_id.integer' => '处理类型格式不正确',
|
||||
'type_code.required' => '处理类型编码不能为空',
|
||||
'type_code.max' => '处理类型编码不能超过64个字符',
|
||||
'type_name.required' => '处理类型名称不能为空',
|
||||
'type_name.max' => '处理类型名称不能超过100个字符',
|
||||
'reason_id.integer' => '异常原因格式不正确',
|
||||
'reason_code.required' => '异常原因编码不能为空',
|
||||
'reason_code.max' => '异常原因编码不能超过64个字符',
|
||||
'reason_name.required' => '异常原因名称不能为空',
|
||||
'reason_name.max' => '异常原因名称不能超过100个字符',
|
||||
'issue_id.integer' => '具体问题格式不正确',
|
||||
'issue_code.max' => '具体问题编码不能超过64个字符',
|
||||
'issue_name.max' => '具体问题名称不能超过100个字符',
|
||||
'status.integer' => '处理状态格式不正确',
|
||||
'status.in' => '处理状态值不正确',
|
||||
'handler.max' => '处理人不能超过100个字符',
|
||||
'handler_id.integer' => '处理人ID格式不正确',
|
||||
'handled_at.integer' => '处理时间格式不正确',
|
||||
'reported_at.integer' => '提报时间格式不正确',
|
||||
];
|
||||
|
||||
protected array $scene = [
|
||||
'store' => ['order_no', 'user_code', 'reporter', 'type_id', 'type_code', 'type_name', 'reason_id', 'reason_code', 'reason_name', 'issue_id', 'issue_code', 'issue_name', 'images', 'remark', 'status', 'handler', 'handler_id', 'handled_at', 'reported_at'],
|
||||
'update' => ['order_no', 'user_code', 'reporter', 'type_id', 'type_code', 'type_name', 'reason_id', 'reason_code', 'reason_name', 'issue_id', 'issue_code', 'issue_name', 'images', 'remark', 'status', 'handler', 'handler_id', 'handled_at', 'reported_at'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace plugin\produce\app\validate;
|
||||
|
||||
use core\base\BaseValidate;
|
||||
|
||||
class ExceptionSettingValidate extends BaseValidate
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'parent_id' => ['nullable', 'integer'],
|
||||
'setting_type' => ['required', 'in:type,reason,issue'],
|
||||
'code' => ['required', 'max:64'],
|
||||
'name' => ['required', 'max:100'],
|
||||
'sort' => ['nullable', 'integer', 'min:0'],
|
||||
'is_enabled' => ['nullable', 'integer', 'in:0,1'],
|
||||
'remark' => ['nullable', 'max:65535'],
|
||||
];
|
||||
}
|
||||
|
||||
protected array $message = [
|
||||
'parent_id.integer' => '父级设置格式不正确',
|
||||
'setting_type.required' => '设置类型不能为空',
|
||||
'setting_type.in' => '设置类型值不正确',
|
||||
'code.required' => '设置编码不能为空',
|
||||
'code.max' => '设置编码不能超过64个字符',
|
||||
'name.required' => '设置名称不能为空',
|
||||
'name.max' => '设置名称不能超过100个字符',
|
||||
'sort.integer' => '排序必须为整数',
|
||||
'sort.min' => '排序不能小于0',
|
||||
'is_enabled.integer' => '启用状态格式不正确',
|
||||
'is_enabled.in' => '启用状态值不正确',
|
||||
'remark.max' => '备注内容过长',
|
||||
];
|
||||
|
||||
protected array $scene = [
|
||||
'store' => ['parent_id', 'setting_type', 'code', 'name', 'sort', 'is_enabled', 'remark'],
|
||||
'update' => ['parent_id', 'setting_type', 'code', 'name', 'sort', 'is_enabled', 'remark'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace plugin\produce\app\validate;
|
||||
|
||||
use core\base\BaseValidate;
|
||||
|
||||
class HardwareFaultDescriptionValidate extends BaseValidate
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'category_id' => ['required', 'integer'],
|
||||
'description' => ['required', 'max:500'],
|
||||
'is_enabled' => ['integer', 'in:0,1'],
|
||||
'remark' => ['max:500'],
|
||||
];
|
||||
}
|
||||
|
||||
protected array $message = [
|
||||
'category_id.required' => '请选择物料分类',
|
||||
'category_id.integer' => '物料分类不正确',
|
||||
'description.required' => '硬件故障描述不能为空',
|
||||
'description.max' => '硬件故障描述不能超过500个字符',
|
||||
'is_enabled.in' => '启用状态不正确',
|
||||
'remark.max' => '备注不能超过500个字符',
|
||||
];
|
||||
|
||||
protected array $scene = [
|
||||
'store' => ['category_id', 'description', 'is_enabled', 'remark'],
|
||||
'update' => ['category_id', 'description', 'is_enabled', 'remark'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace plugin\produce\app\validate;
|
||||
|
||||
use core\base\BaseValidate;
|
||||
|
||||
class MaterialCategoryValidate extends BaseValidate
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
return ['category_name' => ['required', 'max:100']];
|
||||
}
|
||||
|
||||
protected array $message = [
|
||||
'category_name.required' => '分类名称不能为空',
|
||||
'category_name.max' => '分类名称不能超过100个字符',
|
||||
];
|
||||
|
||||
protected array $scene = [
|
||||
'store' => ['category_name'],
|
||||
'update' => ['category_name'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace plugin\produce\app\validate;
|
||||
|
||||
use core\base\BaseValidate;
|
||||
|
||||
class MaterialValidate extends BaseValidate
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'category_id' => ['required'],
|
||||
'product_code' => ['required', 'max:100'],
|
||||
'product_name' => ['required', 'max:200'],
|
||||
];
|
||||
}
|
||||
|
||||
protected array $message = [
|
||||
'category_id.required' => '请选择分类',
|
||||
'product_code.required' => '商品编码不能为空',
|
||||
'product_code.max' => '商品编码不能超过100个字符',
|
||||
'product_name.required' => '商品名称不能为空',
|
||||
'product_name.max' => '商品名称不能超过200个字符',
|
||||
];
|
||||
|
||||
protected array $scene = [
|
||||
'store' => ['category_id', 'product_code', 'product_name'],
|
||||
'update' => ['category_id', 'product_code', 'product_name'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace plugin\produce\app\validate;
|
||||
|
||||
use core\base\BaseValidate;
|
||||
use Illuminate\Validation\Rule;
|
||||
use plugin\produce\app\model\ProcessStep;
|
||||
|
||||
class ProcessStepValidate extends BaseValidate
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
$id = request()->route?->param('id');
|
||||
$processId = (string) (request()->input('process_id') ?? '');
|
||||
|
||||
return [
|
||||
'process_id' => ['required', 'integer'],
|
||||
'step_code' => [
|
||||
'required',
|
||||
'max:50',
|
||||
Rule::unique(ProcessStep::class, 'step_code')
|
||||
->where(fn ($query) => $query->where('process_id', $processId))
|
||||
->ignore($id, 'id')
|
||||
],
|
||||
'step_name' => ['required', 'max:100'],
|
||||
'description' => ['nullable', 'max:65535'],
|
||||
'sort' => ['nullable', 'integer', 'min:0'],
|
||||
'status' => ['nullable', 'integer', 'in:0,1'],
|
||||
'prerequisite_steps' => ['nullable'],
|
||||
'prerequisite_mode' => ['nullable', 'in:all,any,none'],
|
||||
'prerequisite_require_final' => ['nullable', 'integer', 'in:0,1'],
|
||||
'allow_repeat_scan' => ['nullable', 'integer', 'in:0,1'],
|
||||
'repeat_scan_statuses' => ['nullable'],
|
||||
];
|
||||
}
|
||||
|
||||
protected array $message = [
|
||||
'process_id.required' => '所属工序不能为空',
|
||||
'process_id.integer' => '所属工序格式不正确',
|
||||
'step_code.required' => '步骤编码不能为空',
|
||||
'step_code.max' => '步骤编码不能超过50个字符',
|
||||
'step_code.unique' => '步骤编码已存在',
|
||||
'step_name.required' => '步骤名称不能为空',
|
||||
'step_name.max' => '步骤名称不能超过100个字符',
|
||||
'description.max' => '步骤描述内容过长',
|
||||
'sort.integer' => '排序必须为整数',
|
||||
'sort.min' => '排序不能小于0',
|
||||
'status.integer' => '状态格式不正确',
|
||||
'status.in' => '状态值不正确',
|
||||
'prerequisite_mode.in' => '前置步骤验证模式值不正确',
|
||||
'prerequisite_require_final.integer' => '前置步骤终态要求格式不正确',
|
||||
'prerequisite_require_final.in' => '前置步骤终态要求值不正确',
|
||||
'allow_repeat_scan.integer' => '允许重复扫码格式不正确',
|
||||
'allow_repeat_scan.in' => '允许重复扫码值不正确',
|
||||
];
|
||||
|
||||
protected array $scene = [
|
||||
'store' => ['process_id', 'step_code', 'step_name', 'description', 'sort', 'status', 'prerequisite_steps', 'prerequisite_mode', 'prerequisite_require_final', 'allow_repeat_scan', 'repeat_scan_statuses'],
|
||||
'update' => ['process_id', 'step_code', 'step_name', 'description', 'sort', 'status', 'prerequisite_steps', 'prerequisite_mode', 'prerequisite_require_final', 'allow_repeat_scan', 'repeat_scan_statuses'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace plugin\produce\app\validate;
|
||||
|
||||
use core\base\BaseValidate;
|
||||
use Illuminate\Validation\Rule;
|
||||
use plugin\produce\app\model\Process;
|
||||
|
||||
class ProcessValidate extends BaseValidate
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
$id = request()->route?->param('id');
|
||||
|
||||
return [
|
||||
'process_code' => ['required', 'max:50', Rule::unique(Process::class, 'process_code')->ignore($id, 'id')],
|
||||
'process_name' => ['required', 'max:100'],
|
||||
'description' => ['nullable', 'max:65535'],
|
||||
'sort' => ['nullable', 'integer', 'min:0'],
|
||||
'status' => ['nullable', 'integer', 'in:0,1'],
|
||||
];
|
||||
}
|
||||
|
||||
protected array $message = [
|
||||
'process_code.required' => '工序编码不能为空',
|
||||
'process_code.max' => '工序编码不能超过50个字符',
|
||||
'process_code.unique' => '工序编码已存在',
|
||||
'process_name.required' => '工序名称不能为空',
|
||||
'process_name.max' => '工序名称不能超过100个字符',
|
||||
'description.max' => '工序描述内容过长',
|
||||
'sort.integer' => '排序必须为整数',
|
||||
'sort.min' => '排序不能小于0',
|
||||
'status.integer' => '状态格式不正确',
|
||||
'status.in' => '状态值不正确',
|
||||
];
|
||||
|
||||
protected array $scene = [
|
||||
'store' => ['process_code', 'process_name', 'description', 'sort', 'status'],
|
||||
'update' => ['process_code', 'process_name', 'description', 'sort', 'status'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace plugin\produce\app\validate;
|
||||
|
||||
use core\base\BaseValidate;
|
||||
|
||||
class ProductRecordValidate extends BaseValidate
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'process_order_no' => ['required', 'max:100'],
|
||||
'product_code' => ['required', 'max:100'],
|
||||
'quantity' => ['required', 'integer', 'min:1'],
|
||||
'user_code' => ['required', 'max:50'],
|
||||
'operator' => ['nullable', 'max:100'],
|
||||
'process_id' => ['nullable', 'integer'],
|
||||
'step_id' => ['nullable', 'integer'],
|
||||
'status_id' => ['nullable', 'integer'],
|
||||
'scan_result' => ['required', 'integer', 'in:0,1'],
|
||||
'remark' => ['nullable', 'max:65535'],
|
||||
];
|
||||
}
|
||||
|
||||
protected array $message = [
|
||||
'process_order_no.required' => '加工单号不能为空',
|
||||
'process_order_no.max' => '加工单号不能超过100个字符',
|
||||
'product_code.required' => '商品编码不能为空',
|
||||
'product_code.max' => '商品编码不能超过100个字符',
|
||||
'quantity.required' => '数量不能为空',
|
||||
'quantity.integer' => '数量格式不正确',
|
||||
'quantity.min' => '数量必须大于0',
|
||||
'user_code.required' => '用户编码不能为空',
|
||||
'user_code.max' => '用户编码不能超过50个字符',
|
||||
'operator.max' => '操作人员不能超过100个字符',
|
||||
'process_id.integer' => '工序格式不正确',
|
||||
'step_id.integer' => '步骤格式不正确',
|
||||
'status_id.integer' => '状态格式不正确',
|
||||
'scan_result.required' => '扫码结果不能为空',
|
||||
'scan_result.integer' => '扫码结果格式不正确',
|
||||
'scan_result.in' => '扫码结果值不正确',
|
||||
'remark.max' => '备注内容过长',
|
||||
];
|
||||
|
||||
protected array $scene = [
|
||||
'store' => ['process_order_no', 'product_code', 'quantity', 'user_code', 'operator', 'process_id', 'step_id', 'status_id', 'scan_result', 'remark'],
|
||||
'update' => ['process_order_no', 'product_code', 'quantity', 'user_code', 'operator', 'process_id', 'step_id', 'status_id', 'scan_result', 'remark'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace plugin\produce\app\validate;
|
||||
|
||||
use core\base\BaseValidate;
|
||||
|
||||
class RepairRecordValidate extends BaseValidate
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'repair_no' => ['required', 'max:100'],
|
||||
'order_no' => ['max:100'],
|
||||
'product_code' => ['max:100'],
|
||||
'product_name' => ['max:200'],
|
||||
'category_id' => ['integer'],
|
||||
'category_ids' => ['array'],
|
||||
'category_ids.*' => ['integer'],
|
||||
'fault_description_id' => ['integer'],
|
||||
'repair_result' => ['max:50'],
|
||||
'operator' => ['max:100'],
|
||||
'repaired_at' => ['integer'],
|
||||
'remark' => ['max:1000'],
|
||||
];
|
||||
}
|
||||
|
||||
protected array $message = [
|
||||
'repair_no.required' => '维修单号不能为空',
|
||||
'repair_no.max' => '维修单号不能超过100个字符',
|
||||
'order_no.max' => '订单号不能超过100个字符',
|
||||
'product_code.max' => '商品编码不能超过100个字符',
|
||||
'product_name.max' => '商品名称不能超过200个字符',
|
||||
'category_id.integer' => '物料分类不正确',
|
||||
'category_ids.array' => '物料分类集合格式不正确',
|
||||
'category_ids.*.integer' => '物料分类不正确',
|
||||
'fault_description_id.integer' => '硬件故障描述不正确',
|
||||
'repair_result.max' => '维修判定不能超过50个字符',
|
||||
'operator.max' => '维修人员不能超过100个字符',
|
||||
'repaired_at.integer' => '维修时间不正确',
|
||||
'remark.max' => '备注不能超过1000个字符',
|
||||
];
|
||||
|
||||
protected array $scene = [
|
||||
'store' => ['repair_no', 'order_no', 'product_code', 'product_name', 'category_id', 'category_ids', 'fault_description_id', 'repair_result', 'parts', 'operator', 'repaired_at', 'remark'],
|
||||
'update' => ['repair_no', 'order_no', 'product_code', 'product_name', 'category_id', 'category_ids', 'fault_description_id', 'repair_result', 'parts', 'operator', 'repaired_at', 'remark'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace plugin\produce\app\validate;
|
||||
|
||||
use core\base\BaseValidate;
|
||||
|
||||
class RepairSettingValidate extends BaseValidate
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'parent_id' => ['nullable', 'integer'],
|
||||
'setting_type' => ['required', 'in:type,reason,issue'],
|
||||
'code' => ['required', 'max:64'],
|
||||
'name' => ['required', 'max:100'],
|
||||
'sort' => ['nullable', 'integer', 'min:0'],
|
||||
'is_enabled' => ['nullable', 'integer', 'in:0,1'],
|
||||
'remark' => ['nullable', 'max:65535'],
|
||||
];
|
||||
}
|
||||
|
||||
protected array $message = [
|
||||
'parent_id.integer' => '父级设置格式不正确',
|
||||
'setting_type.required' => '设置类型不能为空',
|
||||
'setting_type.in' => '设置类型值不正确',
|
||||
'code.required' => '设置编码不能为空',
|
||||
'code.max' => '设置编码不能超过64个字符',
|
||||
'name.required' => '设置名称不能为空',
|
||||
'name.max' => '设置名称不能超过100个字符',
|
||||
'sort.integer' => '排序必须为整数',
|
||||
'sort.min' => '排序不能小于0',
|
||||
'is_enabled.integer' => '启用状态格式不正确',
|
||||
'is_enabled.in' => '启用状态值不正确',
|
||||
'remark.max' => '备注内容过长',
|
||||
];
|
||||
|
||||
protected array $scene = [
|
||||
'store' => ['parent_id', 'setting_type', 'code', 'name', 'sort', 'is_enabled', 'remark'],
|
||||
'update' => ['parent_id', 'setting_type', 'code', 'name', 'sort', 'is_enabled', 'remark'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace plugin\produce\app\validate;
|
||||
|
||||
use core\base\BaseValidate;
|
||||
|
||||
class ScanDataValidate extends BaseValidate
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'order_no' => ['required', 'max:100'],
|
||||
'quantity' => ['nullable', 'integer', 'min:1'],
|
||||
'user_code' => ['required', 'max:50'],
|
||||
'operator' => ['nullable', 'max:100'],
|
||||
'process_id' => ['required', 'integer'],
|
||||
'step_id' => ['required', 'integer'],
|
||||
'status_id' => ['nullable', 'integer'],
|
||||
'scan_result' => ['required', 'integer', 'in:0,1'],
|
||||
'remark' => ['nullable', 'max:65535'],
|
||||
];
|
||||
}
|
||||
|
||||
protected array $message = [
|
||||
'order_no.required' => '订单号不能为空',
|
||||
'order_no.max' => '订单号不能超过100个字符',
|
||||
'quantity.integer' => '本次数量格式不正确',
|
||||
'quantity.min' => '本次数量必须大于0',
|
||||
'user_code.required' => '用户编码不能为空',
|
||||
'user_code.max' => '用户编码不能超过50个字符',
|
||||
'operator.max' => '操作人员不能超过100个字符',
|
||||
'process_id.required' => '工序不能为空',
|
||||
'process_id.integer' => '工序格式不正确',
|
||||
'step_id.required' => '步骤不能为空',
|
||||
'step_id.integer' => '步骤格式不正确',
|
||||
'status_id.integer' => '状态格式不正确',
|
||||
'scan_result.required' => '扫码结果不能为空',
|
||||
'scan_result.integer' => '扫码结果格式不正确',
|
||||
'scan_result.in' => '扫码结果值不正确',
|
||||
'remark.max' => '备注内容过长',
|
||||
];
|
||||
|
||||
protected array $scene = [
|
||||
'store' => ['order_no', 'quantity', 'user_code', 'operator', 'process_id', 'step_id', 'status_id', 'scan_result', 'remark'],
|
||||
'update' => ['order_no', 'quantity', 'user_code', 'operator', 'process_id', 'step_id', 'status_id', 'scan_result', 'remark'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace plugin\produce\app\validate;
|
||||
|
||||
use core\base\BaseValidate;
|
||||
|
||||
class SpecificRuleValidate extends BaseValidate
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'rule_name' => ['required', 'max:255'],
|
||||
'rule_pattern' => ['required'],
|
||||
'rule_type' => ['required', 'integer'],
|
||||
'apply_mode' => ['required', 'in:order,machine,both'],
|
||||
'match_field' => ['required', 'in:order_no,process_order_no,product_code,user_code'],
|
||||
'is_enabled' => ['nullable', 'integer', 'in:0,1'],
|
||||
'step_ids' => ['nullable'],
|
||||
'sort' => ['nullable', 'integer', 'min:0'],
|
||||
'remark' => ['nullable', 'max:65535'],
|
||||
];
|
||||
}
|
||||
|
||||
protected array $message = [
|
||||
'rule_name.required' => '规则名称不能为空',
|
||||
'rule_name.max' => '规则名称不能超过255个字符',
|
||||
'rule_pattern.required' => '规则表达式不能为空',
|
||||
'rule_type.required' => '规则类型不能为空',
|
||||
'rule_type.integer' => '规则类型格式不正确',
|
||||
'apply_mode.required' => '适用模式不能为空',
|
||||
'apply_mode.in' => '适用模式值不正确',
|
||||
'match_field.required' => '匹配字段不能为空',
|
||||
'match_field.in' => '匹配字段值不正确',
|
||||
'is_enabled.integer' => '启用状态格式不正确',
|
||||
'is_enabled.in' => '启用状态值不正确',
|
||||
'sort.integer' => '排序必须为整数',
|
||||
'sort.min' => '排序不能小于0',
|
||||
'remark.max' => '备注内容过长',
|
||||
];
|
||||
|
||||
protected array $scene = [
|
||||
'store' => ['rule_name', 'rule_pattern', 'rule_type', 'apply_mode', 'match_field', 'is_enabled', 'step_ids', 'sort', 'remark'],
|
||||
'update' => ['rule_name', 'rule_pattern', 'rule_type', 'apply_mode', 'match_field', 'is_enabled', 'step_ids', 'sort', 'remark'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace plugin\produce\app\validate;
|
||||
|
||||
use core\base\BaseValidate;
|
||||
|
||||
class StatusTransitionValidate extends BaseValidate
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'step_id' => ['required', 'integer'],
|
||||
'from_status_id' => ['required', 'integer'],
|
||||
'to_status_id' => ['required', 'integer', 'different:from_status_id'],
|
||||
'trigger_event' => ['required', 'max:100', 'in:next_step_scan,scan_trigger,exception_trigger,manual_trigger,timer_trigger,complete_trigger'],
|
||||
'event_config' => [
|
||||
'nullable',
|
||||
function (string $attribute, mixed $value, \Closure $fail) {
|
||||
if ($value === null || $value === '') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_array($value)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_string($value)) {
|
||||
$fail('事件配置必须为有效的JSON字符串');
|
||||
return;
|
||||
}
|
||||
|
||||
json_decode($value, true);
|
||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||
$fail('事件配置必须为有效的JSON字符串');
|
||||
}
|
||||
}
|
||||
],
|
||||
'auto_trigger' => ['nullable', 'integer', 'in:0,1'],
|
||||
'priority' => ['nullable', 'integer', 'min:0'],
|
||||
'transition_type' => ['required', 'max:20', 'in:primary,side_effect'],
|
||||
'side_effect_type' => ['nullable', 'max:50', 'in:log,notify,update_field,trigger_event'],
|
||||
'side_effect_config' => [
|
||||
'nullable',
|
||||
function (string $attribute, mixed $value, \Closure $fail) {
|
||||
if ($value === null || $value === '') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_array($value)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_string($value)) {
|
||||
$fail('副作用配置必须为有效的JSON字符串');
|
||||
return;
|
||||
}
|
||||
|
||||
json_decode($value, true);
|
||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||
$fail('副作用配置必须为有效的JSON字符串');
|
||||
}
|
||||
}
|
||||
],
|
||||
'description' => ['nullable', 'max:65535'],
|
||||
'sort' => ['nullable', 'integer', 'min:0'],
|
||||
'status' => ['nullable', 'integer', 'in:0,1'],
|
||||
];
|
||||
}
|
||||
|
||||
protected array $message = [
|
||||
'step_id.required' => '所属步骤不能为空',
|
||||
'step_id.integer' => '所属步骤格式不正确',
|
||||
'from_status_id.required' => '源状态不能为空',
|
||||
'from_status_id.integer' => '源状态格式不正确',
|
||||
'to_status_id.required' => '目标状态不能为空',
|
||||
'to_status_id.integer' => '目标状态格式不正确',
|
||||
'to_status_id.different' => '目标状态不能与源状态相同',
|
||||
'trigger_event.required' => '触发事件不能为空',
|
||||
'trigger_event.max' => '触发事件长度不能超过100个字符',
|
||||
'trigger_event.in' => '触发事件值不正确',
|
||||
'auto_trigger.integer' => '自动触发格式不正确',
|
||||
'auto_trigger.in' => '自动触发值不正确',
|
||||
'priority.integer' => '优先级必须为整数',
|
||||
'priority.min' => '优先级不能小于0',
|
||||
'transition_type.required' => '转换类型不能为空',
|
||||
'transition_type.max' => '转换类型长度不能超过20个字符',
|
||||
'transition_type.in' => '转换类型值不正确',
|
||||
'side_effect_type.max' => '副作用类型长度不能超过50个字符',
|
||||
'side_effect_type.in' => '副作用类型值不正确',
|
||||
'description.max' => '描述内容过长',
|
||||
'sort.integer' => '排序必须为整数',
|
||||
'sort.min' => '排序不能小于0',
|
||||
'status.integer' => '状态格式不正确',
|
||||
'status.in' => '状态值不正确',
|
||||
];
|
||||
|
||||
protected array $scene = [
|
||||
'store' => ['step_id', 'from_status_id', 'to_status_id', 'trigger_event', 'event_config', 'auto_trigger', 'priority', 'transition_type', 'side_effect_type', 'side_effect_config', 'description', 'sort', 'status'],
|
||||
'update' => ['step_id', 'from_status_id', 'to_status_id', 'trigger_event', 'event_config', 'auto_trigger', 'priority', 'transition_type', 'side_effect_type', 'side_effect_config', 'description', 'sort', 'status'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace plugin\produce\app\validate;
|
||||
|
||||
use core\base\BaseValidate;
|
||||
use Illuminate\Validation\Rule;
|
||||
use plugin\produce\app\model\StepRelation;
|
||||
|
||||
class StepRelationValidate extends BaseValidate
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
$id = request()->route?->param('id');
|
||||
$fromStepId = (string) (request()->input('from_step_id') ?? '');
|
||||
$toStepId = (string) (request()->input('to_step_id') ?? '');
|
||||
$relationType = (string) (request()->input('relation_type') ?? 'normal');
|
||||
|
||||
return [
|
||||
'from_step_id' => ['required', 'integer'],
|
||||
'to_step_id' => ['required', 'integer', 'different:from_step_id'],
|
||||
'relation_type' => [
|
||||
'required',
|
||||
'max:20',
|
||||
Rule::in(['normal', 'exception']),
|
||||
Rule::unique(StepRelation::class, 'relation_type')
|
||||
->where(fn ($query) => $query
|
||||
->where('from_step_id', $fromStepId)
|
||||
->where('to_step_id', $toStepId)
|
||||
)
|
||||
->ignore($id, 'id')
|
||||
],
|
||||
'flow_condition' => [
|
||||
'nullable',
|
||||
function (string $attribute, mixed $value, \Closure $fail) {
|
||||
if ($value === null || $value === '') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_array($value)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_string($value)) {
|
||||
$fail('流转条件必须为有效的JSON字符串');
|
||||
return;
|
||||
}
|
||||
|
||||
json_decode($value, true);
|
||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||
$fail('流转条件必须为有效的JSON字符串');
|
||||
}
|
||||
}
|
||||
],
|
||||
'priority' => ['nullable', 'integer', 'min:0'],
|
||||
'description' => ['nullable', 'max:65535'],
|
||||
'sort' => ['nullable', 'integer', 'min:0'],
|
||||
'status' => ['nullable', 'integer', 'in:0,1'],
|
||||
];
|
||||
}
|
||||
|
||||
protected array $message = [
|
||||
'from_step_id.required' => '源步骤不能为空',
|
||||
'from_step_id.integer' => '源步骤格式不正确',
|
||||
'to_step_id.required' => '目标步骤不能为空',
|
||||
'to_step_id.integer' => '目标步骤格式不正确',
|
||||
'to_step_id.different' => '目标步骤不能与源步骤相同',
|
||||
'relation_type.required' => '关系类型不能为空',
|
||||
'relation_type.max' => '关系类型长度不能超过20个字符',
|
||||
'relation_type.in' => '关系类型值不正确',
|
||||
'relation_type.unique' => '该步骤关系已存在',
|
||||
'priority.integer' => '优先级必须为整数',
|
||||
'priority.min' => '优先级不能小于0',
|
||||
'description.max' => '描述内容过长',
|
||||
'sort.integer' => '排序必须为整数',
|
||||
'sort.min' => '排序不能小于0',
|
||||
'status.integer' => '状态格式不正确',
|
||||
'status.in' => '状态值不正确',
|
||||
];
|
||||
|
||||
protected array $scene = [
|
||||
'store' => ['from_step_id', 'to_step_id', 'relation_type', 'flow_condition', 'priority', 'description', 'sort', 'status'],
|
||||
'update' => ['from_step_id', 'to_step_id', 'relation_type', 'flow_condition', 'priority', 'description', 'sort', 'status'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace plugin\produce\app\validate;
|
||||
|
||||
use core\base\BaseValidate;
|
||||
use Illuminate\Validation\Rule;
|
||||
use plugin\produce\app\model\StepStatus;
|
||||
|
||||
class StepStatusValidate extends BaseValidate
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
$id = request()->route?->param('id');
|
||||
$stepId = (string) (request()->input('step_id') ?? '');
|
||||
|
||||
return [
|
||||
'step_id' => ['required', 'integer'],
|
||||
'status_code' => [
|
||||
'required',
|
||||
'max:50',
|
||||
Rule::unique(StepStatus::class, 'status_code')
|
||||
->where(fn ($query) => $query->where('step_id', $stepId))
|
||||
->ignore($id, 'id')
|
||||
],
|
||||
'status_name' => ['required', 'max:100'],
|
||||
'is_initial' => ['nullable', 'integer', 'in:0,1'],
|
||||
'is_final' => ['nullable', 'integer', 'in:0,1'],
|
||||
'description' => ['nullable', 'max:65535'],
|
||||
'sort' => ['nullable', 'integer', 'min:0'],
|
||||
'status' => ['nullable', 'integer', 'in:0,1'],
|
||||
];
|
||||
}
|
||||
|
||||
protected array $message = [
|
||||
'step_id.required' => '所属步骤不能为空',
|
||||
'step_id.integer' => '所属步骤格式不正确',
|
||||
'status_code.required' => '状态编码不能为空',
|
||||
'status_code.max' => '状态编码不能超过50个字符',
|
||||
'status_code.unique' => '状态编码已存在',
|
||||
'status_name.required' => '状态名称不能为空',
|
||||
'status_name.max' => '状态名称不能超过100个字符',
|
||||
'is_initial.integer' => '初始状态格式不正确',
|
||||
'is_initial.in' => '初始状态值不正确',
|
||||
'is_final.integer' => '终态格式不正确',
|
||||
'is_final.in' => '终态值不正确',
|
||||
'description.max' => '状态描述内容过长',
|
||||
'sort.integer' => '排序必须为整数',
|
||||
'sort.min' => '排序不能小于0',
|
||||
'status.integer' => '状态格式不正确',
|
||||
'status.in' => '状态值不正确',
|
||||
];
|
||||
|
||||
protected array $scene = [
|
||||
'store' => ['step_id', 'status_code', 'status_name', 'is_initial', 'is_final', 'description', 'sort', 'status'],
|
||||
'update' => ['step_id', 'status_code', 'status_name', 'is_initial', 'is_final', 'description', 'sort', 'status'],
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user