From 23dfd63e9a7cc1083557c41a4d1c883c10ec055c Mon Sep 17 00:00:00 2001 From: "cyril.tsui" Date: Fri, 9 May 2025 11:28:53 +0800 Subject: [PATCH] [Liquibase] !!!Need to re-create database (fpsmsdb). May need to add FK (uomId) to po line table --- build.gradle | 2 + .../stock => m18}/entity/M18DataLog.kt | 20 +++-- .../entity/M18DataLogRepository.kt | 3 +- .../ffii/fpsms/m18/model/M18DataLogRequest.kt | 12 +++ .../fpsms/m18/model/M18DataLogResponse.kt | 8 ++ .../m18/{modals => model}/M18TokenRequest.kt | 2 +- .../m18/{modals => model}/M18TokenResponse.kt | 2 +- src/main/resources/application.yml | 77 +++++++++++-------- .../changes/20250312_01_derek/01_master.sql | 35 +++++---- .../20250409_01_cyril/01_master_data.sql | 41 +++++----- .../20250409_01_cyril/02_m18_data_log.sql | 23 +++--- .../20250414_01_cyril/01_purchase_order.sql | 34 ++++---- 12 files changed, 154 insertions(+), 105 deletions(-) rename src/main/java/com/ffii/fpsms/{modules/stock => m18}/entity/M18DataLog.kt (57%) rename src/main/java/com/ffii/fpsms/{modules/stock => m18}/entity/M18DataLogRepository.kt (53%) create mode 100644 src/main/java/com/ffii/fpsms/m18/model/M18DataLogRequest.kt create mode 100644 src/main/java/com/ffii/fpsms/m18/model/M18DataLogResponse.kt rename src/main/java/com/ffii/fpsms/m18/{modals => model}/M18TokenRequest.kt (83%) rename src/main/java/com/ffii/fpsms/m18/{modals => model}/M18TokenResponse.kt (80%) diff --git a/build.gradle b/build.gradle index fa213f8..b205c01 100644 --- a/build.gradle +++ b/build.gradle @@ -30,6 +30,8 @@ dependencies { implementation 'org.liquibase:liquibase-core' implementation 'com.google.code.gson:gson:2.8.5' + implementation group: 'org.springframework.cloud', name: 'spring-cloud-context', version: '4.2.1' + implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0' implementation group: 'org.apache.poi', name: 'poi', version: '5.2.3' implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '5.2.3' diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/M18DataLog.kt b/src/main/java/com/ffii/fpsms/m18/entity/M18DataLog.kt similarity index 57% rename from src/main/java/com/ffii/fpsms/modules/stock/entity/M18DataLog.kt rename to src/main/java/com/ffii/fpsms/m18/entity/M18DataLog.kt index 95708e8..eb215ff 100644 --- a/src/main/java/com/ffii/fpsms/modules/stock/entity/M18DataLog.kt +++ b/src/main/java/com/ffii/fpsms/m18/entity/M18DataLog.kt @@ -1,4 +1,4 @@ -package com.ffii.fpsms.modules.stock.entity +package com.ffii.fpsms.m18.entity import com.ffii.core.entity.BaseEntity import jakarta.persistence.Column @@ -8,26 +8,30 @@ import jakarta.validation.constraints.NotNull import jakarta.validation.constraints.Size import org.hibernate.annotations.JdbcTypeCode import org.hibernate.type.SqlTypes +import java.time.LocalDateTime @Entity @Table(name = "m18_data_log") open class M18DataLog : BaseEntity() { - @Size(max = 10) + @Size(max = 1000) @NotNull - @Column(name = "refType", nullable = false, length = 10) + @Column(name = "refType", nullable = false, length = 1000) open var refType: String? = null @NotNull @Column(name = "m18Id", nullable = false) - open var m18Id: Int? = null + open var m18Id: Long? = null @NotNull @JdbcTypeCode(SqlTypes.JSON) @Column(name = "dataLog", nullable = false) - open var dataLog: MutableMap? = null + open var dataLog: MutableMap? = null - @Size(max = 5) @NotNull - @Column(name = "status", nullable = false, length = 5) - open var status: String? = null + @Column(name = "status", nullable = false) + open var status: Boolean? = null + + @NotNull + @Column(name = "m18LastModifyDate", nullable = false) + open var m18LastModifyDate: LocalDateTime? = null } \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/M18DataLogRepository.kt b/src/main/java/com/ffii/fpsms/m18/entity/M18DataLogRepository.kt similarity index 53% rename from src/main/java/com/ffii/fpsms/modules/stock/entity/M18DataLogRepository.kt rename to src/main/java/com/ffii/fpsms/m18/entity/M18DataLogRepository.kt index bbad2b7..34bc288 100644 --- a/src/main/java/com/ffii/fpsms/modules/stock/entity/M18DataLogRepository.kt +++ b/src/main/java/com/ffii/fpsms/m18/entity/M18DataLogRepository.kt @@ -1,8 +1,9 @@ -package com.ffii.fpsms.modules.stock.entity +package com.ffii.fpsms.m18.entity import com.ffii.core.support.AbstractRepository import org.springframework.stereotype.Repository @Repository interface M18DataLogRepository : AbstractRepository { + fun findFirstByM18IdAndRefTypeAndDeletedIsFalseOrderByM18LastModifyDateDesc(m18Id: Long, refType: String): M18DataLog? } \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/m18/model/M18DataLogRequest.kt b/src/main/java/com/ffii/fpsms/m18/model/M18DataLogRequest.kt new file mode 100644 index 0000000..dfbec82 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/m18/model/M18DataLogRequest.kt @@ -0,0 +1,12 @@ +package com.ffii.fpsms.m18.model + +import java.time.LocalDateTime + +data class SaveM18DataLogRequest ( + val id: Long?, + val refType: String?, + val m18Id: Long?, + val m18LastModifyDate: LocalDateTime?, + val dataLog: MutableMap?, + val status: Boolean? = true, +) \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/m18/model/M18DataLogResponse.kt b/src/main/java/com/ffii/fpsms/m18/model/M18DataLogResponse.kt new file mode 100644 index 0000000..13ddda8 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/m18/model/M18DataLogResponse.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.m18.model + +data class M18DataLogResponse ( + val id: Long?, + val refType: String?, + val m18Id: Long?, + val status: Boolean?, +) \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/m18/modals/M18TokenRequest.kt b/src/main/java/com/ffii/fpsms/m18/model/M18TokenRequest.kt similarity index 83% rename from src/main/java/com/ffii/fpsms/m18/modals/M18TokenRequest.kt rename to src/main/java/com/ffii/fpsms/m18/model/M18TokenRequest.kt index a7d92ba..985b05f 100644 --- a/src/main/java/com/ffii/fpsms/m18/modals/M18TokenRequest.kt +++ b/src/main/java/com/ffii/fpsms/m18/model/M18TokenRequest.kt @@ -1,4 +1,4 @@ -package com.ffii.fpsms.m18.modals +package com.ffii.fpsms.m18.model data class M18TokenRequest( val grant_type: String, diff --git a/src/main/java/com/ffii/fpsms/m18/modals/M18TokenResponse.kt b/src/main/java/com/ffii/fpsms/m18/model/M18TokenResponse.kt similarity index 80% rename from src/main/java/com/ffii/fpsms/m18/modals/M18TokenResponse.kt rename to src/main/java/com/ffii/fpsms/m18/model/M18TokenResponse.kt index d075db7..6f42192 100644 --- a/src/main/java/com/ffii/fpsms/m18/modals/M18TokenResponse.kt +++ b/src/main/java/com/ffii/fpsms/m18/model/M18TokenResponse.kt @@ -1,4 +1,4 @@ -package com.ffii.fpsms.m18.modals +package com.ffii.fpsms.m18.model data class M18TokenResponse( val access_token: String, diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8633371..cd993a8 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,37 +1,54 @@ server: - servlet: - contextPath: /api - encoding: - charset: UTF-8 - enabled: true - force: true - port: 8090 - error: - include-message: always + servlet: + contextPath: /api + encoding: + charset: UTF-8 + enabled: true + force: true + port: 8090 + error: + include-message: always spring: - servlet: - multipart: - max-file-size: 500MB - max-request-size: 600MB - jpa: - hibernate: - naming: - physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl - database-platform: org.hibernate.dialect.MySQL8Dialect - properties: - hibernate: - dialect: - storage_engine: innodb + servlet: + multipart: + max-file-size: 500MB + max-request-size: 600MB + jpa: + hibernate: + naming: + physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl + database-platform: org.hibernate.dialect.MySQL8Dialect + properties: + hibernate: + dialect: + storage_engine: innodb logging: - config: 'classpath:log4j2.yml' + config: 'classpath:log4j2.yml' m18: - config: - grant-type: password - client-id: M2Y1OGYxMmQtZDRiOS00OTA4LTgyNTktZDRkNzEzNWVkMzRm - client-secret: M2Y2YjQzYzQtZTc2Mi00OTFhLTkwYmItYmJhMzFjZjEyYmY5 - username: testingMTMS - password: db25f2fc14cd2d2b1e7af307241f548fb03c312a - base-url: http://16.162.251.126/jsf/rfws + config: + grant-type: password + client-id: M2Y1OGYxMmQtZDRiOS00OTA4LTgyNTktZDRkNzEzNWVkMzRm + client-secret: M2Y2YjQzYzQtZTc2Mi00OTFhLTkwYmItYmJhMzFjZjEyYmY5 + username: testingMTMS + password: db25f2fc14cd2d2b1e7af307241f548fb03c312a + base-url: http://16.162.251.126/jsf/rfws + base-password: qwer1234 + beId: + toa: 29 + pp: 27 + pf: 1 + seriesId: + pp: 26 + pf: 33 + fa: 2 + fb: 3 + fc: 4 + fd: 5 + ff: 6 + sc: 27 + se: 28 + sf: 70 + sr: 29 \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20250312_01_derek/01_master.sql b/src/main/resources/db/changelog/changes/20250312_01_derek/01_master.sql index af45030..a2e2eb5 100644 --- a/src/main/resources/db/changelog/changes/20250312_01_derek/01_master.sql +++ b/src/main/resources/db/changelog/changes/20250312_01_derek/01_master.sql @@ -4,23 +4,24 @@ CREATE TABLE items ( - id INT NOT NULL AUTO_INCREMENT, - version INT NOT NULL DEFAULT '0', - created datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - createdBy VARCHAR(30) NULL, - modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - modifiedBy VARCHAR(30) NULL, - deleted TINYINT(1) NOT NULL DEFAULT '0', - `code` VARCHAR(50) NOT NULL, - `name` VARCHAR(50) NOT NULL, - description VARCHAR(100) NULL, - remarks varchar(500) NULL, - type VARCHAR(50) NOT NULL, - uomId INT(11) NOT NULL DEFAULT 0, - shelfLife INT(11) NULL, - countryOfOrigin varchar(50) NULL, - maxQty DECIMAL(16, 2) NULL, - m18Id INT(11) NULL, + id INT NOT NULL AUTO_INCREMENT, + version INT NOT NULL DEFAULT '0', + created datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + createdBy VARCHAR(30) NULL, + modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + modifiedBy VARCHAR(30) NULL, + deleted TINYINT(1) NOT NULL DEFAULT '0', + `code` VARCHAR(50) NOT NULL, + `name` VARCHAR(500) NOT NULL, + description VARCHAR(500) NULL, + remarks varchar(500) NULL, + type VARCHAR(50) NOT NULL, + uomId INT(11) NOT NULL DEFAULT 0, + shelfLife INT(11) NULL, + countryOfOrigin varchar(50) NULL, + maxQty DECIMAL(16, 2) NULL, + m18Id INT(11) NULL, + m18LastModifyDate datetime NOT NULL, CONSTRAINT pk_material PRIMARY KEY (id) ); CREATE TABLE uom_conversion diff --git a/src/main/resources/db/changelog/changes/20250409_01_cyril/01_master_data.sql b/src/main/resources/db/changelog/changes/20250409_01_cyril/01_master_data.sql index f83e2d5..78ea740 100644 --- a/src/main/resources/db/changelog/changes/20250409_01_cyril/01_master_data.sql +++ b/src/main/resources/db/changelog/changes/20250409_01_cyril/01_master_data.sql @@ -3,26 +3,27 @@ --changeset cyril:master data for shop and warehouse CREATE TABLE `shop` ( - `id` INT NOT NULL AUTO_INCREMENT, - `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `createdBy` VARCHAR(30) NULL DEFAULT NULL, - `version` INT NOT NULL DEFAULT '0', - `modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `modifiedBy` VARCHAR(30) NULL DEFAULT NULL, - `deleted` TINYINT(1) NOT NULL DEFAULT '0', - `code` VARCHAR(30) NOT NULL, - `name` VARCHAR(30) NOT NULL, - `brNo` VARCHAR(30) NULL, - `contactNo` VARCHAR(30) NULL, - `contactEmail` VARCHAR(30) NULL, - `contactName` VARCHAR(30) NULL, - `addr1` VARCHAR(30) NULL, - `addr2` VARCHAR(30) NULL, - `addr3` VARCHAR(30) NULL, - `addr4` VARCHAR(30) NULL, - `district` VARCHAR(30) NULL, - `type` VARCHAR(10) NULL, - `m18Id` INT NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `createdBy` VARCHAR(30) NULL DEFAULT NULL, + `version` INT NOT NULL DEFAULT '0', + `modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `modifiedBy` VARCHAR(30) NULL DEFAULT NULL, + `deleted` TINYINT(1) NOT NULL DEFAULT '0', + `code` VARCHAR(50) NOT NULL, + `name` VARCHAR(300) NOT NULL, + `brNo` VARCHAR(50) NULL, + `contactNo` VARCHAR(50) NULL, + `contactEmail` VARCHAR(50) NULL, + `contactName` VARCHAR(50) NULL, + `addr1` VARCHAR(300) NULL, + `addr2` VARCHAR(300) NULL, + `addr3` VARCHAR(300) NULL, + `addr4` VARCHAR(300) NULL, + `district` VARCHAR(300) NULL, + `type` VARCHAR(10) NULL, + `m18Id` INT NOT NULL, + `m18LastModifyDate` datetime NOT NULL, CONSTRAINT pk_shop PRIMARY KEY (id) ); diff --git a/src/main/resources/db/changelog/changes/20250409_01_cyril/02_m18_data_log.sql b/src/main/resources/db/changelog/changes/20250409_01_cyril/02_m18_data_log.sql index 68ffd66..ce9a854 100644 --- a/src/main/resources/db/changelog/changes/20250409_01_cyril/02_m18_data_log.sql +++ b/src/main/resources/db/changelog/changes/20250409_01_cyril/02_m18_data_log.sql @@ -3,16 +3,17 @@ --changeset cyril:m18 data log CREATE TABLE `m18_data_log` ( - `id` INT NOT NULL AUTO_INCREMENT, - `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `createdBy` VARCHAR(30) NULL DEFAULT NULL, - `version` INT NOT NULL DEFAULT '0', - `modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `modifiedBy` VARCHAR(30) NULL DEFAULT NULL, - `deleted` TINYINT(1) NOT NULL DEFAULT '0', - `refType` VARCHAR(10) NOT NULL, - `m18Id` INT NOT NULL, - `dataLog` JSON NOT NULL, - `status` VARCHAR(5) NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `createdBy` VARCHAR(30) NULL DEFAULT NULL, + `version` INT NOT NULL DEFAULT '0', + `modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `modifiedBy` VARCHAR(30) NULL DEFAULT NULL, + `deleted` TINYINT(1) NOT NULL DEFAULT '0', + `refType` VARCHAR(1000) NOT NULL, + `m18Id` INT NOT NULL, + `m18LastModifyDate` datetime NOT NULL, + `dataLog` JSON NOT NULL, + `status` TINYINT(1) NOT NULL, CONSTRAINT pk_m18_data_log PRIMARY KEY (id) ); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20250414_01_cyril/01_purchase_order.sql b/src/main/resources/db/changelog/changes/20250414_01_cyril/01_purchase_order.sql index 0ead8f8..f1fe059 100644 --- a/src/main/resources/db/changelog/changes/20250414_01_cyril/01_purchase_order.sql +++ b/src/main/resources/db/changelog/changes/20250414_01_cyril/01_purchase_order.sql @@ -13,7 +13,7 @@ CREATE TABLE `purchase_order` `code` VARCHAR(30) NOT NULL, `supplierId` INT NULL, `orderDate` DATETIME NULL, - `estimatedCompleteDate` DATETIME NULL, + `estimatedArrivalDate` DATETIME NULL, `completeDate` DATETIME NULL, `status` VARCHAR(10) NOT NULL DEFAULT 'pending', `m18DataLogId` INT NOT NULL, @@ -24,23 +24,25 @@ CREATE TABLE `purchase_order` CREATE TABLE `purchase_order_line` ( - `id` INT NOT NULL AUTO_INCREMENT, - `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `createdBy` VARCHAR(30) NULL DEFAULT NULL, - `version` INT NOT NULL DEFAULT '0', - `modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `modifiedBy` VARCHAR(30) NULL DEFAULT NULL, - `deleted` TINYINT(1) NOT NULL DEFAULT '0', - `itemId` INT NOT NULL, - `itemNo` VARCHAR(20) NOT NULL, - `purchaseOrderId` INT NOT NULL, - `qty` DECIMAL(14, 2) NULL, - `price` DECIMAL(14, 2) NULL, - `priceUnit` VARCHAR(5) NULL, - `status` VARCHAR(10) NOT NULL DEFAULT 'pending', - `m18DataLogId` INT NOT NULL, + `id` INT NOT NULL AUTO_INCREMENT, + `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `createdBy` VARCHAR(30) NULL DEFAULT NULL, + `version` INT NOT NULL DEFAULT '0', + `modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `modifiedBy` VARCHAR(30) NULL DEFAULT NULL, + `deleted` TINYINT(1) NOT NULL DEFAULT '0', + `itemId` INT NOT NULL, + `itemNo` VARCHAR(20) NOT NULL, + `uomId` INT NULL, + `purchaseOrderId` INT NOT NULL, + `qty` DECIMAL(14, 2) NULL, + `price` DECIMAL(14, 2) NULL, + `priceUnit` VARCHAR(5) NULL, + `status` VARCHAR(10) NOT NULL DEFAULT 'pending', + `m18DataLogId` INT NOT NULL, CONSTRAINT pk_purchase_order_line PRIMARY KEY (id), CONSTRAINT FK_PURCHASE_ORDER_LINE_ON_ITEMID FOREIGN KEY (itemId) REFERENCES items (id), + CONSTRAINT FK_PURCHASE_ORDER_LINE_ON_UOMID FOREIGN KEY (uomId) REFERENCES uom_conversion (id), CONSTRAINT FK_PURCHASE_ORDER_LINE_ON_PURCHASEORDERID FOREIGN KEY (purchaseOrderId) REFERENCES purchase_order (id), CONSTRAINT FK_PURCHASE_ORDER_LINE_ON_M18DATALOGID FOREIGN KEY (m18DataLogId) REFERENCES m18_data_log (id) ); \ No newline at end of file