dbmsv2 init...1

This commit is contained in:
choi.jh 2025-09-17 15:04:01 +09:00
parent fe0002fc74
commit 1e3b70a015
7 changed files with 65 additions and 11 deletions

View File

@ -4,8 +4,8 @@
"settings": {
"width": 3000,
"height": 3000,
"scrollTop": -624.4768,
"scrollLeft": -1686,
"scrollTop": -1655.4768,
"scrollLeft": -167,
"zoomLevel": 0.76,
"show": 511,
"database": 4,
@ -340,6 +340,7 @@
"OGYYobEerCY_Fsb8dqU0D",
"1q8jG5dQKdD35_XYimkSk",
"HYB03rpc8hol5HFnZGtAi",
"Mp3WiH2boEKm5P3XFL0lQ",
"VycsOgeM1SXkcq_5XYUMS",
"k4vpMNZ75fNUjX-hrjXzs",
"8ZPjmeG3NoO6C0icGibJP",
@ -359,6 +360,7 @@
"zL9bBVm37HTSU-xWpwxxJ",
"G9PMddYQm9ohnzkJUa_nw",
"HYB03rpc8hol5HFnZGtAi",
"Mp3WiH2boEKm5P3XFL0lQ",
"P84ZMnZu1nZtRhDY18T5o",
"6qEigzm8oyPReGxYdSzNi",
"VycsOgeM1SXkcq_5XYUMS",
@ -375,7 +377,7 @@
"color": ""
},
"meta": {
"updateAt": 1756961442460,
"updateAt": 1758087644044,
"createAt": 1745819764138
}
},
@ -8364,6 +8366,26 @@
"updateAt": 1757395574609,
"createAt": 1757395574605
}
},
"Mp3WiH2boEKm5P3XFL0lQ": {
"id": "Mp3WiH2boEKm5P3XFL0lQ",
"tableId": "ZMGIWLFEswObjH2Sx0NlW",
"name": "stock",
"comment": "재고",
"dataType": "INT",
"default": "0",
"options": 8,
"ui": {
"keys": 0,
"widthName": 60,
"widthComment": 60,
"widthDataType": 60,
"widthDefault": 60
},
"meta": {
"updateAt": 1758087660022,
"createAt": 1758087641569
}
}
},
"relationshipEntities": {

View File

@ -261,6 +261,7 @@ CREATE TABLE `partinfo` (
`type` varchar(20) NOT NULL COMMENT '부품구분',
`title` varchar(50) NOT NULL,
`price` int(11) NOT NULL DEFAULT 0 COMMENT '기본금액',
`stock` int(11) NOT NULL DEFAULT 0 COMMENT '재고수',
`status` varchar(20) NOT NULL DEFAULT 'available',
`updated_at` timestamp NULL DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT current_timestamp(),
@ -277,7 +278,7 @@ CREATE TABLE `partinfo` (
LOCK TABLES `partinfo` WRITE;
/*!40000 ALTER TABLE `partinfo` DISABLE KEYS */;
INSERT INTO `partinfo` VALUES (1,'CPU1','CPU','Xeon E5530 2.4Ghz 4Core',50000,'available','2025-09-05 01:27:05','2025-09-04 04:54:34',NULL),(2,'CPU2','CPU','Xeon E5540 2.4Ghz 4Core',50000,'available',NULL,'2025-09-04 04:54:34',NULL),(3,'CPU3','CPU','Xeon X5560 2.8Ghz 8Core',80000,'available','2025-09-05 00:05:26','2025-09-04 04:54:34',NULL),(4,'CPU4','CPU','Xeon X5650 2.6Ghz 12Core',100000,'available',NULL,'2025-09-04 04:54:34',NULL),(5,'CPU5','CPU','Xeon E5-2690v2 2.6Ghz 12Core',100000,'available',NULL,'2025-09-04 04:54:34',NULL),(6,'CPU6','CPU','Xeon E5-2690v4 3.0Ghz 20Core',150000,'available','2025-09-05 00:04:09','2025-09-04 04:54:34',NULL),(7,'RAM7','RAM','2G',20000,'available','2025-09-05 01:27:05','2025-09-04 04:54:34',NULL),(8,'RAM8','RAM','4G',30000,'available',NULL,'2025-09-04 04:54:34',NULL),(9,'RAM9','RAM','8G',40000,'available','2025-09-05 00:05:26','2025-09-04 04:54:34',NULL),(10,'RAM10','RAM','16G',60000,'available','2025-09-05 00:04:09','2025-09-04 04:54:34',NULL),(11,'RAM11','RAM','32G',100000,'available',NULL,'2025-09-04 04:54:34',NULL),(12,'RAM12','RAM','64G',100000,'available',NULL,'2025-09-04 04:54:34',NULL),(13,'DISK13','DISK','SATA 128G',50000,'available',NULL,'2025-09-04 04:54:34',NULL),(14,'DISK14','DISK','SATA 256G',70000,'available','2025-09-05 01:27:05','2025-09-04 04:54:34',NULL),(15,'DISK15','DISK','SATA 512G',90000,'available',NULL,'2025-09-04 04:54:34',NULL),(16,'DISK16','DISK','SAS 128G',60000,'available',NULL,'2025-09-04 04:54:34',NULL),(17,'DISK17','DISK','SAS 256G',80000,'available',NULL,'2025-09-04 04:54:34',NULL),(18,'DISK18','DISK','SAS 512G',100000,'available',NULL,'2025-09-04 04:54:34',NULL),(19,'DISK19','DISK','SSD 128G',60000,'available',NULL,'2025-09-04 04:54:34',NULL),(20,'DISK20','DISK','SSD 256G',80000,'available',NULL,'2025-09-04 04:54:34',NULL),(21,'DISK21','DISK','SSD 512G',100000,'available',NULL,'2025-09-04 04:54:34',NULL),(22,'DISK22','DISK','SSD 1T',120000,'available','2025-09-05 00:04:09','2025-09-04 04:54:34',NULL),(23,'DISK23','DISK','SSD 2T',150000,'available',NULL,'2025-09-04 04:54:34',NULL),(24,'DISK24','DISK','NVME 512G',120000,'available',NULL,'2025-09-04 04:54:34',NULL),(25,'DISK25','DISK','NVME 1T',150000,'available',NULL,'2025-09-04 04:54:34',NULL),(26,'DISK26','DISK','NVME 2T',180000,'available',NULL,'2025-09-04 04:54:34',NULL),(27,'OS27','OS','Windows 10',10000,'available',NULL,'2025-09-04 04:54:34',NULL),(28,'OS28','OS','Windows 11',20000,'available',NULL,'2025-09-04 04:54:34',NULL),(29,'OS29','OS','Windows NT 2008R2',30000,'available',NULL,'2025-09-04 04:54:34',NULL),(30,'OS30','OS','Windows NT 2012R2',30000,'available',NULL,'2025-09-04 04:54:34',NULL),(31,'OS31','OS','Windows NT 2016R2',30000,'available',NULL,'2025-09-04 04:54:34',NULL),(32,'OS32','OS','Windows NT 2019R2',30000,'available',NULL,'2025-09-04 04:54:34',NULL),(33,'OS33','OS','CentOS 7',10000,'available',NULL,'2025-09-04 04:54:34',NULL),(34,'OS34','OS','CentOS 8',10000,'available',NULL,'2025-09-04 04:54:34',NULL),(35,'OS35','OS','CentOS 9',10000,'available',NULL,'2025-09-04 04:54:34',NULL),(36,'OS36','OS','Ununtu 20.04',10000,'available',NULL,'2025-09-04 04:54:34',NULL),(37,'OS37','OS','Ununtu 21.04',10000,'available',NULL,'2025-09-04 04:54:34',NULL),(38,'OS38','OS','Ununtu 22.04',10000,'available',NULL,'2025-09-04 04:54:34',NULL),(39,'DB39','DB','Windows MSSQL 2008',10000,'available',NULL,'2025-09-04 04:54:34',NULL),(40,'DB40','DB','Windows MSSQL 2012',10000,'available',NULL,'2025-09-04 04:54:34',NULL),(41,'DB41','DB','Mysql',10000,'available',NULL,'2025-09-04 04:54:34',NULL),(42,'DB42','DB','Postgress',10000,'available',NULL,'2025-09-04 04:54:34',NULL),(43,'SOFTWARE43','SOFTWARE','닷디펜더',50000,'available',NULL,'2025-09-04 04:54:34',NULL),(44,'SOFTWARE44','SOFTWARE','딥파인더',50000,'available',NULL,'2025-09-04 04:54:34',NULL);
INSERT INTO `partinfo` VALUES (1,'CPU1','CPU','Xeon E5530 2.4Ghz 4Core',50000,100,'available','2025-09-05 01:27:05','2025-09-04 04:54:34',NULL),(2,'CPU2','CPU','Xeon E5540 2.4Ghz 4Core',50000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(3,'CPU3','CPU','Xeon X5560 2.8Ghz 8Core',80000,100,'available','2025-09-05 00:05:26','2025-09-04 04:54:34',NULL),(4,'CPU4','CPU','Xeon X5650 2.6Ghz 12Core',100000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(5,'CPU5','CPU','Xeon E5-2690v2 2.6Ghz 12Core',100000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(6,'CPU6','CPU','Xeon E5-2690v4 3.0Ghz 20Core',150000,100,'available','2025-09-05 00:04:09','2025-09-04 04:54:34',NULL),(7,'RAM7','RAM','2G',20000,100,'available','2025-09-05 01:27:05','2025-09-04 04:54:34',NULL),(8,'RAM8','RAM','4G',30000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(9,'RAM9','RAM','8G',40000,100,'available','2025-09-05 00:05:26','2025-09-04 04:54:34',NULL),(10,'RAM10','RAM','16G',60000,100,'available','2025-09-05 00:04:09','2025-09-04 04:54:34',NULL),(11,'RAM11','RAM','32G',100000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(12,'RAM12','RAM','64G',100000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(13,'DISK13','DISK','SATA 128G',50000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(14,'DISK14','DISK','SATA 256G',70000,100,'available','2025-09-05 01:27:05','2025-09-04 04:54:34',NULL),(15,'DISK15','DISK','SATA 512G',90000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(16,'DISK16','DISK','SAS 128G',60000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(17,'DISK17','DISK','SAS 256G',80000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(18,'DISK18','DISK','SAS 512G',100000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(19,'DISK19','DISK','SSD 128G',60000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(20,'DISK20','DISK','SSD 256G',80000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(21,'DISK21','DISK','SSD 512G',100000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(22,'DISK22','DISK','SSD 1T',120000,100,'available','2025-09-05 00:04:09','2025-09-04 04:54:34',NULL),(23,'DISK23','DISK','SSD 2T',150000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(24,'DISK24','DISK','NVME 512G',120000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(25,'DISK25','DISK','NVME 1T',150000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(26,'DISK26','DISK','NVME 2T',180000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(27,'OS27','OS','Windows 10',10000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(28,'OS28','OS','Windows 11',20000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(29,'OS29','OS','Windows NT 2008R2',30000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(30,'OS30','OS','Windows NT 2012R2',30000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(31,'OS31','OS','Windows NT 2016R2',30000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(32,'OS32','OS','Windows NT 2019R2',30000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(33,'OS33','OS','CentOS 7',10000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(34,'OS34','OS','CentOS 8',10000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(35,'OS35','OS','CentOS 9',10000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(36,'OS36','OS','Ununtu 20.04',10000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(37,'OS37','OS','Ununtu 21.04',10000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(38,'OS38','OS','Ununtu 22.04',10000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(39,'DB39','DB','Windows MSSQL 2008',10000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(40,'DB40','DB','Windows MSSQL 2012',10000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(41,'DB41','DB','Mysql',10000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(42,'DB42','DB','Postgress',10000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(43,'SOFTWARE43','SOFTWARE','닷디펜더',50000,100,'available',NULL,'2025-09-04 04:54:34',NULL),(44,'SOFTWARE44','SOFTWARE','딥파인더',50000,100,'available',NULL,'2025-09-04 04:54:34',NULL);
/*!40000 ALTER TABLE `partinfo` ENABLE KEYS */;
UNLOCK TABLES;
@ -309,7 +310,7 @@ CREATE TABLE `payment` (
CONSTRAINT `FK_clientinfo_TO_payment` FOREIGN KEY (`clientinfo_uid`) REFERENCES `clientinfo` (`uid`),
CONSTRAINT `FK_serviceinfo_TO_payment` FOREIGN KEY (`serviceinfo_uid`) REFERENCES `serviceinfo` (`uid`),
CONSTRAINT `FK_user_TO_payment` FOREIGN KEY (`user_uid`) REFERENCES `user` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='결제정보';
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='결제정보';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@ -318,6 +319,7 @@ CREATE TABLE `payment` (
LOCK TABLES `payment` WRITE;
/*!40000 ALTER TABLE `payment` DISABLE KEYS */;
INSERT INTO `payment` VALUES (3,1,193,11,'부품정보 [SATA 256G]에 대한 일회성 추가',70000,'onetime','2025-09-17',NULL,'unpaid',NULL,'2025-09-17 01:21:42',NULL);
/*!40000 ALTER TABLE `payment` ENABLE KEYS */;
UNLOCK TABLES;
@ -420,7 +422,7 @@ CREATE TABLE `serverpartinfo` (
KEY `FK_serviceinfo_TO_serverpartinfo` (`serviceinfo_uid`),
CONSTRAINT `FK_serverinfo_TO_serverpartinfo` FOREIGN KEY (`serverinfo_uid`) REFERENCES `serverinfo` (`uid`),
CONSTRAINT `FK_serviceinfo_TO_serverpartinfo` FOREIGN KEY (`serviceinfo_uid`) REFERENCES `serviceinfo` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8 COMMENT='서버파트정보';
) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8 COMMENT='서버파트정보';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@ -429,7 +431,7 @@ CREATE TABLE `serverpartinfo` (
LOCK TABLES `serverpartinfo` WRITE;
/*!40000 ALTER TABLE `serverpartinfo` DISABLE KEYS */;
INSERT INTO `serverpartinfo` VALUES (4,NULL,6,4,NULL,'CPU','',0,4,NULL,NULL,'2025-09-05 00:04:09'),(5,NULL,10,4,NULL,'RAM','',0,4,NULL,NULL,'2025-09-05 00:04:09'),(6,NULL,22,4,NULL,'DISK','',0,2,NULL,NULL,'2025-09-05 00:04:09'),(7,NULL,3,5,NULL,'CPU','',0,3,NULL,NULL,'2025-09-05 00:05:26'),(8,NULL,9,5,NULL,'RAM','',0,3,NULL,NULL,'2025-09-05 00:05:26'),(9,NULL,14,5,NULL,'DISK','',0,3,'RAID5',NULL,'2025-09-05 00:05:26'),(13,NULL,5,6,NULL,'CPU','',0,10,NULL,'2025-09-05 07:37:42','2025-09-05 07:36:21'),(14,NULL,7,6,NULL,'RAM','base',0,10,'','2025-09-11 03:57:23','2025-09-05 07:36:21'),(15,NULL,26,6,NULL,'DISK','',0,10,'RAID10',NULL,'2025-09-05 07:36:21'),(16,NULL,10,6,NULL,'RAM','onetime',100000,2,NULL,NULL,'2025-09-05 07:38:22'),(17,NULL,14,6,NULL,'DISK','month',10000,2,'RAID1',NULL,'2025-09-05 07:39:26'),(25,NULL,25,4,8,'SWITCH','base',0,1,NULL,NULL,'2025-09-08 08:13:09'),(26,NULL,1,11,9,'CPU','base',100000,2,'','2025-09-11 04:48:29','2025-09-09 03:39:10'),(28,NULL,510,12,5,'SWITCH','base',0,1,NULL,NULL,'2025-09-16 07:48:19'),(29,NULL,259,12,5,'IP','base',0,1,NULL,NULL,'2025-09-16 07:48:37');
INSERT INTO `serverpartinfo` VALUES (4,NULL,6,4,NULL,'CPU','',0,4,NULL,NULL,'2025-09-05 00:04:09'),(5,NULL,10,4,NULL,'RAM','',0,4,NULL,NULL,'2025-09-05 00:04:09'),(6,NULL,22,4,NULL,'DISK','',0,2,NULL,NULL,'2025-09-05 00:04:09'),(7,NULL,3,5,NULL,'CPU','',0,3,NULL,NULL,'2025-09-05 00:05:26'),(8,NULL,9,5,NULL,'RAM','',0,3,NULL,NULL,'2025-09-05 00:05:26'),(9,NULL,14,5,NULL,'DISK','',0,3,'RAID5',NULL,'2025-09-05 00:05:26'),(13,NULL,5,6,NULL,'CPU','',0,10,NULL,'2025-09-05 07:37:42','2025-09-05 07:36:21'),(14,NULL,7,6,NULL,'RAM','base',0,10,'','2025-09-11 03:57:23','2025-09-05 07:36:21'),(15,NULL,26,6,NULL,'DISK','',0,10,'RAID10',NULL,'2025-09-05 07:36:21'),(16,NULL,10,6,NULL,'RAM','onetime',100000,2,NULL,NULL,'2025-09-05 07:38:22'),(17,NULL,14,6,NULL,'DISK','month',10000,2,'RAID1',NULL,'2025-09-05 07:39:26'),(25,NULL,25,4,8,'SWITCH','base',0,1,NULL,NULL,'2025-09-08 08:13:09'),(26,NULL,1,11,9,'CPU','base',100000,2,'','2025-09-11 04:48:29','2025-09-09 03:39:10'),(28,NULL,510,12,5,'SWITCH','base',0,1,NULL,NULL,'2025-09-16 07:48:19'),(29,NULL,259,12,5,'IP','base',0,1,NULL,NULL,'2025-09-16 07:48:37'),(30,NULL,7,11,9,'RAM','base',20000,1,NULL,NULL,'2025-09-16 09:22:24'),(34,NULL,14,11,9,'DISK','base',70000,1,NULL,NULL,'2025-09-17 00:11:51'),(35,69,15,11,9,'DISK','base',90000,1,NULL,NULL,'2025-09-17 00:17:26'),(38,193,14,10,11,'DISK','onetime',70000,1,NULL,NULL,'2025-09-17 01:21:42');
/*!40000 ALTER TABLE `serverpartinfo` ENABLE KEYS */;
UNLOCK TABLES;
@ -590,4 +592,4 @@ UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2025-09-16 17:53:55
-- Dump completed on 2025-09-17 14:44:52

View File

@ -18,6 +18,10 @@ class PartEntity extends EquipmentEntity
{
return $this->attributes['price'];
}
public function getStock(): int
{
return $this->attributes['stock'];
}
public function getCustomTitle(): string
{
return $this->getTitle() . " " . number_format($this->getPrice()) . "";

View File

@ -5,6 +5,7 @@ return [
'type' => "종류",
'title' => "모델명",
'price' => "기본가",
'stock' => "재고",
'status' => "상태",
'updated_at' => "수정일",
'created_at' => "작성일",

View File

@ -16,6 +16,7 @@ class PartModel extends EquipmentModel
"type",
"title",
"price",
"stock",
"status",
"updated_at"
];
@ -34,6 +35,7 @@ class PartModel extends EquipmentModel
$rule = "required|trim|string";
break;
case "price":
case "stock":
$rule = "required|numeric";
break;
default:

View File

@ -3,6 +3,7 @@
namespace App\Services\Equipment;
use App\Entities\Equipment\PartEntity;
use App\Entities\Equipment\ServerPartEntity;
use App\Helpers\Equipment\PartHelper;
use App\Models\Equipment\PartModel;
@ -19,6 +20,7 @@ class PartService extends EquipmentService
"type",
"title",
"price",
"stock",
"status",
];
}
@ -35,6 +37,7 @@ class PartService extends EquipmentService
"type",
"title",
"price",
"stock",
"status",
];
}
@ -44,6 +47,26 @@ class PartService extends EquipmentService
}
//기본 기능부분
//FieldForm관련용
//서비스파트 설정
public function setServerPart(ServerPartEntity $serverPartEntity, mixed $uid, string $status): PartEntity
{
$entity = $this->getEntity($uid);
if (!($entity instanceof PartEntity)) {
throw new \Exception("{$uid}에 해당하는 부품정보를 찾을수없습니다.");
}
//부품정보에 서버정보 설정 및 서비스,고객정보 정의
$formDatas = [];
if ($status === STATUS['AVAILABLE']) { //해지된 부품 재고수를 처리
$formDatas['stock'] = $entity->getStock() + $serverPartEntity->getCnt();
}
if ($status === STATUS['OCCUPIED']) { //추가된 부품 재고수를 처리
if ($entity->getStock() < $serverPartEntity->getCnt()) {
throw new \Exception("현재 재고수[{$entity->getStock()}]보다 지정하신 갯수({$serverPartEntity->getCnt()})가 더 많습니다.");
}
$formDatas['stock'] = $entity->getStock() - $serverPartEntity->getCnt();
}
return $this->modify($entity, $formDatas);
}
//OrderBy 처리
public function setOrderBy(mixed $field = null, mixed $value = null): void
{

View File

@ -180,9 +180,9 @@ class ServerPartService extends EquipmentService
case 'CS':
$partEntity = $this->getCSService()->setServerPart($entity, $part_uid, $status);
break;
default:
throw new \Exception(__METHOD__ . "에서 오류발생: {$entity->getType()}은 지정되지 않은 부품파트입니다.");
// break;
default: //CPU/RAM/DISK/OS/DB/SOFTWARE
$partEntity = $this->getPartService()->setServerPart($entity, $part_uid, $status);
break;
}
return $partEntity;
}