SCTMES_V5/mes_in_sct/app/command/CreateQueueTableCommand.php
2025-06-14 18:55:09 +08:00

365 lines
12 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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