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;
|
|||
|
}
|
|||
|
}
|