SCTMES_V5/mes_in_sct/app/command/CreateQueueTableCommand.php

365 lines
12 KiB
PHP
Raw Permalink Normal View History

2025-06-14 18:55:09 +08:00
<?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;
}
}