365 lines
12 KiB
PHP
365 lines
12 KiB
PHP
<?php
|
||
namespace app\command;
|
||
|
||
use libs\db\Db;
|
||
use Symfony\Component\Console\Command\Command;
|
||
use Symfony\Component\Console\Input\InputInterface;
|
||
use Symfony\Component\Console\Output\OutputInterface;
|
||
use Symfony\Component\Console\Input\InputArgument;
|
||
|
||
class CreateQueueTableCommand extends Command
|
||
{
|
||
protected function configure()
|
||
{
|
||
$this
|
||
// 命令的名称 ("php console_command" 后面的部分)
|
||
->setName('table:create')
|
||
// 运行 "php console_command list" 时的简短描述
|
||
->setDescription('Create new model')
|
||
// 运行命令时使用 "--help" 选项时的完整命令描述
|
||
->setHelp('This command allow you to create models...')
|
||
// 配置一个参数m
|
||
->addArgument('name', InputArgument::REQUIRED, 'what\'s model you want to create ?')
|
||
// 配置一个可选参数
|
||
->addArgument('optional_argument', InputArgument::OPTIONAL, 'this is a optional argument');
|
||
}
|
||
|
||
protected function execute(InputInterface $input, OutputInterface $output)
|
||
{
|
||
$name = $input->getArgument('name');
|
||
if($name == 'queue'){
|
||
$allTables = $this->getDbTables();
|
||
$this->hf_mes_queue_pincheck($allTables);
|
||
$this->hf_mes_queue_curve($allTables);
|
||
$this->hf_mes_queue_grading($allTables);
|
||
$this->hf_mes_queue_k($allTables);
|
||
$this->hf_mes_queue_kun($allTables);
|
||
}
|
||
|
||
// 你想要做的任何操作
|
||
// $optional_argument = $input->getArgument('optional_argument');
|
||
//
|
||
// $output->writeln('creating...');
|
||
// $output->writeln('created ' . $input->getArgument('name') . ' model success !');
|
||
//
|
||
// if ($optional_argument)
|
||
// $output->writeln('optional argument is ' . $optional_argument);
|
||
//
|
||
// $output->writeln('the end.');
|
||
|
||
|
||
$output->writeln('created ' . $input->getArgument('name') . ' table success !');
|
||
|
||
return 1;
|
||
}
|
||
|
||
/**
|
||
* 获取数据库表名
|
||
* @return array
|
||
*/
|
||
private function getDbTables(): array
|
||
{
|
||
$sql = <<<SQL
|
||
SELECT tablename
|
||
FROM pg_tables
|
||
WHERE schemaname = 'public' AND tablename NOT IN ('pg_catalog', 'information_schema')
|
||
SQL;
|
||
$ret = Db::query($sql);
|
||
$data = [];
|
||
if (!empty($ret)) {
|
||
foreach ($ret as $item) {
|
||
array_push($data, $item['tablename']);
|
||
}
|
||
}
|
||
|
||
return $data;
|
||
}
|
||
|
||
/**
|
||
* pin_check队列表
|
||
* @param string $table
|
||
* @return array
|
||
*/
|
||
private function hf_mes_queue_pincheck($allTables, $table='hf_mes_queue_pincheck')
|
||
{
|
||
if(in_array($table, $allTables)){
|
||
return false;
|
||
}
|
||
|
||
$sql = <<<SQL
|
||
CREATE TABLE IF NOT EXISTS "{$table}" (
|
||
"id" serial PRIMARY KEY,
|
||
"device_code" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"batch" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"subbatch" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"tray" varchar(45) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"lot" varchar(45) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"param" text COLLATE "pg_catalog"."default",
|
||
"status" int2 NOT NULL DEFAULT 0,
|
||
"create_time" TIMESTAMP(6)
|
||
)
|
||
SQL;
|
||
|
||
$row = Db::query($sql);
|
||
|
||
$comment = <<<SQL
|
||
CREATE INDEX idx_{$table}_create_time ON {$table} (create_time);
|
||
COMMENT ON COLUMN {$table}.device_code IS '设备编码';
|
||
COMMENT ON COLUMN {$table}.batch IS '批次';
|
||
COMMENT ON COLUMN {$table}.subbatch IS '子批次';
|
||
COMMENT ON COLUMN {$table}.tray IS '托盘号';
|
||
COMMENT ON COLUMN {$table}.lot IS '流水号';
|
||
COMMENT ON COLUMN {$table}.param IS '数据集';
|
||
COMMENT ON COLUMN {$table}.status IS '任务状态(0 未处理, 1已处理)';
|
||
COMMENT ON COLUMN {$table}.create_time IS '创建时间';
|
||
SQL;
|
||
|
||
$comment_arr = explode(';', $comment);
|
||
|
||
foreach ($comment_arr as $item) {
|
||
if (!empty($item)) {
|
||
if (strpos($item, 'idx') !== false) {
|
||
$idx = Db::query("SELECT tablename FROM pg_indexes WHERE indexname='{$item}';");
|
||
if (!empty($idx)) {
|
||
Db::query("DROP INDEX {$item};");
|
||
}
|
||
}
|
||
|
||
Db::query($item);
|
||
}
|
||
}
|
||
|
||
return $row;
|
||
}
|
||
|
||
/**
|
||
* 曲线队列表
|
||
* @param string $table
|
||
* @return array
|
||
*/
|
||
private function hf_mes_queue_curve($allTables, $table='hf_mes_queue_curve')
|
||
{
|
||
if(in_array($table, $allTables)){
|
||
return false;
|
||
}
|
||
|
||
$sql = <<<SQL
|
||
CREATE TABLE IF NOT EXISTS "{$table}" (
|
||
"id" serial PRIMARY KEY,
|
||
"device_code" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"batch" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"subbatch" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"tray" varchar(45) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"lot" varchar(45) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"end_time" varchar(45) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"param" text COLLATE "pg_catalog"."default",
|
||
"status" int2 NOT NULL DEFAULT 0,
|
||
"create_time" TIMESTAMP(6)
|
||
)
|
||
SQL;
|
||
|
||
$row = Db::query($sql);
|
||
|
||
$comment = <<<SQL
|
||
CREATE INDEX idx_{$table}_create_time ON {$table} (create_time);
|
||
COMMENT ON COLUMN {$table}.device_code IS '设备编码';
|
||
COMMENT ON COLUMN {$table}.batch IS '批次';
|
||
COMMENT ON COLUMN {$table}.subbatch IS '子批次';
|
||
COMMENT ON COLUMN {$table}.tray IS '托盘号';
|
||
COMMENT ON COLUMN {$table}.lot IS '流水号';
|
||
COMMENT ON COLUMN {$table}.end_time IS '曲线文件时间戳';
|
||
COMMENT ON COLUMN {$table}.param IS '数据集';
|
||
COMMENT ON COLUMN {$table}.status IS '任务状态(0 未处理, 1已处理)';
|
||
COMMENT ON COLUMN {$table}.create_time IS '创建时间';
|
||
SQL;
|
||
|
||
$comment_arr = explode(';', $comment);
|
||
|
||
foreach ($comment_arr as $item) {
|
||
if (!empty($item)) {
|
||
if (strpos($item, 'idx') !== false) {
|
||
$idx = Db::query("SELECT tablename FROM pg_indexes WHERE indexname='{$item}';");
|
||
if (!empty($idx)) {
|
||
Db::query("DROP INDEX {$item};");
|
||
}
|
||
}
|
||
|
||
Db::query($item);
|
||
}
|
||
}
|
||
|
||
return $row;
|
||
}
|
||
|
||
/**
|
||
* 分档队列表
|
||
* @param string $table
|
||
* @return array
|
||
*/
|
||
private function hf_mes_queue_grading($allTables, $table='hf_mes_queue_grading')
|
||
{
|
||
if(in_array($table, $allTables)){
|
||
return false;
|
||
}
|
||
|
||
$sql = <<<SQL
|
||
CREATE TABLE IF NOT EXISTS "{$table}" (
|
||
"id" serial PRIMARY KEY,
|
||
"process_code" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"batch" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"subbatch" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"tray" varchar(45) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"lot" varchar(45) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"param" text COLLATE "pg_catalog"."default",
|
||
"status" int2 NOT NULL DEFAULT 0,
|
||
"create_time" TIMESTAMP(6)
|
||
)
|
||
SQL;
|
||
|
||
$row = Db::query($sql);
|
||
|
||
$comment = <<<SQL
|
||
CREATE INDEX idx_{$table}_create_time ON {$table} (create_time);
|
||
COMMENT ON COLUMN {$table}.process_code IS '工序编码';
|
||
COMMENT ON COLUMN {$table}.batch IS '批次';
|
||
COMMENT ON COLUMN {$table}.subbatch IS '子批次';
|
||
COMMENT ON COLUMN {$table}.tray IS '托盘号';
|
||
COMMENT ON COLUMN {$table}.lot IS '流水号';
|
||
COMMENT ON COLUMN {$table}.param IS '数据集';
|
||
COMMENT ON COLUMN {$table}.status IS '任务状态(0 未处理, 1已处理)';
|
||
COMMENT ON COLUMN {$table}.create_time IS '创建时间';
|
||
SQL;
|
||
|
||
$comment_arr = explode(';', $comment);
|
||
|
||
foreach ($comment_arr as $item) {
|
||
if (!empty($item)) {
|
||
if (strpos($item, 'idx') !== false) {
|
||
$idx = Db::query("SELECT tablename FROM pg_indexes WHERE indexname='{$item}';");
|
||
if (!empty($idx)) {
|
||
Db::query("DROP INDEX {$item};");
|
||
}
|
||
}
|
||
|
||
Db::query($item);
|
||
}
|
||
}
|
||
|
||
return $row;
|
||
}
|
||
|
||
/**
|
||
* K值队列表
|
||
* @param string $table
|
||
* @return array
|
||
*/
|
||
private function hf_mes_queue_k($allTables, $table='hf_mes_queue_k')
|
||
{
|
||
if(in_array($table, $allTables)){
|
||
return false;
|
||
}
|
||
|
||
$sql = <<<SQL
|
||
CREATE TABLE IF NOT EXISTS "{$table}" (
|
||
"id" serial PRIMARY KEY,
|
||
"flow_id" int4 NOT NULL DEFAULT 0,
|
||
"batch" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"subbatch" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"tray" varchar(45) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"lot" varchar(45) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"param" text COLLATE "pg_catalog"."default",
|
||
"status" int2 NOT NULL DEFAULT 0,
|
||
"create_time" TIMESTAMP(6)
|
||
)
|
||
SQL;
|
||
|
||
$row = Db::query($sql);
|
||
|
||
$comment = <<<SQL
|
||
CREATE INDEX idx_{$table}_create_time ON {$table} (create_time);
|
||
COMMENT ON COLUMN {$table}.flow_id IS '工艺流程ID';
|
||
COMMENT ON COLUMN {$table}.batch IS '批次';
|
||
COMMENT ON COLUMN {$table}.subbatch IS '子批次';
|
||
COMMENT ON COLUMN {$table}.tray IS '托盘号';
|
||
COMMENT ON COLUMN {$table}.lot IS '流水号';
|
||
COMMENT ON COLUMN {$table}.param IS '数据集';
|
||
COMMENT ON COLUMN {$table}.status IS '任务状态(0 未处理, 1已处理)';
|
||
COMMENT ON COLUMN {$table}.create_time IS '创建时间';
|
||
SQL;
|
||
|
||
$comment_arr = explode(';', $comment);
|
||
|
||
foreach ($comment_arr as $item) {
|
||
if (!empty($item)) {
|
||
if (strpos($item, 'idx') !== false) {
|
||
$idx = Db::query("SELECT tablename FROM pg_indexes WHERE indexname='{$item}';");
|
||
if (!empty($idx)) {
|
||
Db::query("DROP INDEX {$item};");
|
||
}
|
||
}
|
||
|
||
Db::query($item);
|
||
}
|
||
}
|
||
|
||
return $row;
|
||
}
|
||
|
||
/**
|
||
* 容量预测队列表
|
||
* @param string $table
|
||
* @return array
|
||
*/
|
||
private function hf_mes_queue_kun($allTables, $table='hf_mes_queue_kun')
|
||
{
|
||
if(in_array($table, $allTables)){
|
||
return false;
|
||
}
|
||
|
||
$sql = <<<SQL
|
||
CREATE TABLE IF NOT EXISTS "{$table}" (
|
||
"id" serial PRIMARY KEY,
|
||
"workingsubclass" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"batch" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"subbatch" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"tray" varchar(45) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"lot" varchar(45) COLLATE "pg_catalog"."default" NOT NULL,
|
||
"param" text COLLATE "pg_catalog"."default",
|
||
"status" int2 NOT NULL DEFAULT 0,
|
||
"create_time" TIMESTAMP(6)
|
||
)
|
||
SQL;
|
||
|
||
$row = Db::query($sql);
|
||
|
||
$comment = <<<SQL
|
||
CREATE INDEX idx_{$table}_create_time ON {$table} (create_time);
|
||
COMMENT ON COLUMN {$table}.workingsubclass IS '工序单元';
|
||
COMMENT ON COLUMN {$table}.batch IS '批次';
|
||
COMMENT ON COLUMN {$table}.subbatch IS '子批次';
|
||
COMMENT ON COLUMN {$table}.tray IS '托盘号';
|
||
COMMENT ON COLUMN {$table}.lot IS '流水号';
|
||
COMMENT ON COLUMN {$table}.param IS '数据集';
|
||
COMMENT ON COLUMN {$table}.status IS '任务状态(0 未处理, 1已处理)';
|
||
COMMENT ON COLUMN {$table}.create_time IS '创建时间';
|
||
SQL;
|
||
|
||
$comment_arr = explode(';', $comment);
|
||
|
||
foreach ($comment_arr as $item) {
|
||
if (!empty($item)) {
|
||
if (strpos($item, 'idx') !== false) {
|
||
$idx = Db::query("SELECT tablename FROM pg_indexes WHERE indexname='{$item}';");
|
||
if (!empty($idx)) {
|
||
Db::query("DROP INDEX {$item};");
|
||
}
|
||
}
|
||
|
||
Db::query($item);
|
||
}
|
||
}
|
||
|
||
return $row;
|
||
}
|
||
}
|