diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/AgingPeriod.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/AgingPeriod.java
new file mode 100644
index 00000000..a7958513
--- /dev/null
+++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/AgingPeriod.java
@@ -0,0 +1,36 @@
+package com.jasamedika.medifirst2000.entities;
+
+import com.jasamedika.medifirst2000.base.BaseActive;
+import com.jasamedika.medifirst2000.helper.Caption;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.validator.constraints.NotBlank;
+
+import javax.persistence.*;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+import static javax.persistence.GenerationType.SEQUENCE;
+
+/**
+ * @author salmanoe
+ * @version 1.0.0
+ * @since 07/03/2024
+ */
+@Getter
+@Setter
+@Entity
+@Table(name = "aging_period_m", schema = "mkko")
+public class AgingPeriod extends BaseActive implements Serializable {
+ @Id
+ @GeneratedValue(strategy = SEQUENCE, generator = "sg_aging_period_m")
+ @SequenceGenerator(name = "sg_aging_period_m", schema = "mkko", sequenceName = "mkko.aging_period_m_seq", allocationSize = 1)
+ @Column(name = "id", columnDefinition = "bigint default nextval('mkko.aging_period_m_seq'::regclass)")
+ protected Long id;
+
+ @Column(name = "period", length = 50, unique = true, nullable = false)
+ @Size(max = 50, message = "Period maksimal {max} karakter")
+ @NotBlank(message = "Period tidak boleh kosong")
+ @Caption("Period")
+ private String period;
+}
diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/CapitalComponent.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/CapitalComponent.java
new file mode 100644
index 00000000..e39a6e97
--- /dev/null
+++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/CapitalComponent.java
@@ -0,0 +1,30 @@
+package com.jasamedika.medifirst2000.entities;
+
+import com.jasamedika.medifirst2000.base.BaseTransaction;
+import com.jasamedika.medifirst2000.helper.Caption;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.validator.constraints.NotBlank;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * @author salmanoe
+ * @version 1.0.0
+ * @since 07/03/2024
+ */
+@Getter
+@Setter
+@Entity
+@Table(name = "capital_component_m", schema = "mkko")
+public class CapitalComponent extends BaseTransaction implements Serializable {
+ @Column(name = "component_name", length = 150, nullable = false)
+ @NotBlank(message = "Component name tidak boleh kosong")
+ @Size(max = 150, message = "Component name maksimal {max} karakter")
+ @Caption("Component Name")
+ private String componentName;
+}
diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ComponentObject.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ComponentObject.java
new file mode 100644
index 00000000..f3a16aa1
--- /dev/null
+++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ComponentObject.java
@@ -0,0 +1,55 @@
+package com.jasamedika.medifirst2000.entities;
+
+import com.jasamedika.medifirst2000.base.BaseTransaction;
+import com.jasamedika.medifirst2000.helper.Caption;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.validator.constraints.NotBlank;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+import static javax.persistence.FetchType.LAZY;
+
+/**
+ * @author salmanoe
+ * @version 1.0.0
+ * @since 07/03/2024
+ */
+@Getter
+@Setter
+@Entity
+@Table(name = "component_object_m", schema = "mkko")
+public class ComponentObject extends BaseTransaction implements Serializable {
+ @Column(name = "param_key", length = 20, nullable = false)
+ @NotBlank(message = "Parameter key tidak boleh kosong")
+ @Size(max = 20, message = "Param key maksimal {max} karakter")
+ @Caption("Parameter Key")
+ private String paramKey;
+
+ @Column(name = "param_logic", length = 50, nullable = false)
+ @NotBlank(message = "Parameter logic tidak boleh kosong")
+ @Size(max = 50, message = "Parameter logic maksimal {max} karakter")
+ @Caption("Parameter Logic")
+ private String paramLogic;
+
+ @ManyToOne(fetch = LAZY)
+ @JoinColumn(name = "capital_component_fk", nullable = false)
+ @NotNull(message = "Capital component tidak boleh kosong")
+ @Caption(value = "Capital Component")
+ private CapitalComponent capitalComponent;
+
+ @Column(name = "object_name", length = 150, nullable = false)
+ @NotBlank(message = "Object name tidak boleh kosong")
+ @Size(max = 150, message = "Object name maksimal {max} karakter")
+ @Caption("Object Name")
+ private String objectName;
+
+ @ManyToOne(fetch = LAZY)
+ @JoinColumn(name = "capital_component_head_fk", nullable = false)
+ @NotNull(message = "Capital component head tidak boleh kosong")
+ @Caption(value = "Capital Component Head")
+ private ComponentObject componentObjectHead;
+}
diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/KinerjaOperasional.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/KinerjaOperasional.java
new file mode 100644
index 00000000..6923c41d
--- /dev/null
+++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/KinerjaOperasional.java
@@ -0,0 +1,54 @@
+package com.jasamedika.medifirst2000.entities;
+
+import com.jasamedika.medifirst2000.base.BaseTransaction;
+import com.jasamedika.medifirst2000.helper.Caption;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.validator.constraints.NotBlank;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+import static javax.persistence.FetchType.LAZY;
+
+/**
+ * @author salmanoe
+ * @version 1.0.0
+ * @since 04/03/2024
+ */
+@Getter
+@Setter
+@Entity
+@Table(name = "kinerja_operasional_m", schema = "mkko")
+public class KinerjaOperasional extends BaseTransaction implements Serializable {
+ @Column(name = "urutan", length = 20, nullable = false)
+ @NotBlank(message = "Urutan tidak boleh kosong")
+ @Size(max = 20, message = "Urutan maksimal {max} karakter")
+ @Caption("Urutan")
+ private String urutan;
+
+ @Column(name = "fungsi_urutan", length = 50, nullable = false)
+ @NotBlank(message = "Fungsi urutan tidak boleh kosong")
+ @Size(max = 50, message = "Fungsi urutan maksimal {max} karakter")
+ @Caption("Fungsi Urutan")
+ private String fungsiUrutan;
+
+ @Column(name = "nama_kinerja", length = 150, nullable = false)
+ @NotBlank(message = "Nama kinerja tidak boleh kosong")
+ @Size(max = 150, message = "Nama kinerja maksimal {max} karakter")
+ @Caption("Nama Kinerja")
+ private String namaKinerja;
+
+ @ManyToOne(fetch = LAZY)
+ @JoinColumn(name = "satuan_kinerja_fk", nullable = false, columnDefinition = "bigint")
+ @NotNull(message = "Satuan kinerja tidak boleh kosong")
+ @Caption(value = "Satuan Kinerja")
+ private SatuanKinerja satuanKinerja;
+
+ @ManyToOne(fetch = LAZY)
+ @JoinColumn(name = "kinerja_head_fk")
+ @Caption(value = "Kinerja Head")
+ private KinerjaOperasional kinerjaHead;
+}
diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MonitoringKinerja.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MonitoringKinerja.java
new file mode 100644
index 00000000..7cdda394
--- /dev/null
+++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MonitoringKinerja.java
@@ -0,0 +1,52 @@
+package com.jasamedika.medifirst2000.entities;
+
+import com.jasamedika.medifirst2000.base.BaseTransaction;
+import com.jasamedika.medifirst2000.helper.Caption;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+import static javax.persistence.EnumType.STRING;
+import static javax.persistence.FetchType.LAZY;
+
+/**
+ * @author salmanoe
+ * @version 1.0.0
+ * @since 04/03/2024
+ */
+@Getter
+@Setter
+@Entity
+@Table(name = "monitoring_kinerja_t", schema = "mkko")
+public class MonitoringKinerja extends BaseTransaction implements Serializable {
+ @ManyToOne(fetch = LAZY)
+ @JoinColumn(name = "kinerja_fk", nullable = false)
+ @NotNull(message = "Kinerja tidak boleh kosong")
+ @Caption(value = "Kinerja")
+ private KinerjaOperasional kinerja;
+
+ @ManyToOne(fetch = LAZY)
+ @JoinColumn(name = "periode_fk", nullable = false, columnDefinition = "bigint")
+ @NotNull(message = "Periode monitoring tidak boleh kosong")
+ @Caption(value = "Periode Monitoring")
+ private PeriodeMonitoring periode;
+
+ @Column(name = "nilai_anggaran", length = 20, columnDefinition = "varchar(20)")
+ @Enumerated(STRING)
+ @Size(max = 20, message = "Status migrasi maksimal {max} karakter")
+ @Caption(value = "Nilai Anggaran")
+ private NilaiAnggaran nilaiAnggaran;
+
+ @Column(name = "tahun")
+ @Caption(value = "Tahun")
+ private Integer tahun;
+
+ @Column(name = "nilai_kinerja", nullable = false, columnDefinition = "numeric(15,2) default 0.00")
+ @NotNull(message = "Nilai kinerja tidak boleh kosong")
+ private BigDecimal nilaiKinerja;
+}
diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MonitoringKinerjaHarian.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MonitoringKinerjaHarian.java
new file mode 100644
index 00000000..93111148
--- /dev/null
+++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MonitoringKinerjaHarian.java
@@ -0,0 +1,56 @@
+package com.jasamedika.medifirst2000.entities;
+
+import com.jasamedika.medifirst2000.base.BaseTransaction;
+import com.jasamedika.medifirst2000.helper.Caption;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+import static javax.persistence.EnumType.STRING;
+import static javax.persistence.FetchType.LAZY;
+import static javax.persistence.TemporalType.TIMESTAMP;
+
+/**
+ * @author salmanoe
+ * @version 1.0.0
+ * @since 05/03/2024
+ */
+@Getter
+@Setter
+@Entity
+@Table(name = "monitoring_kinerja_harian_t", schema = "mkko")
+public class MonitoringKinerjaHarian extends BaseTransaction implements Serializable {
+ @ManyToOne(fetch = LAZY)
+ @JoinColumn(name = "kinerja_fk", nullable = false)
+ @NotNull(message = "Kinerja tidak boleh kosong")
+ @Caption(value = "Kinerja")
+ private KinerjaOperasional kinerja;
+
+ @ManyToOne(fetch = LAZY)
+ @JoinColumn(name = "periode_fk", nullable = false, columnDefinition = "bigint")
+ @NotNull(message = "Periode monitoring tidak boleh kosong")
+ @Caption(value = "Periode Monitoring")
+ private PeriodeMonitoring periode;
+
+ @Column(name = "nilai_anggaran", length = 20, columnDefinition = "varchar(20)")
+ @Enumerated(STRING)
+ @Size(max = 20, message = "Status migrasi maksimal {max} karakter")
+ @Caption(value = "Nilai Anggaran")
+ private NilaiAnggaran nilaiAnggaran;
+
+ @Column(name = "tanggal_entri", nullable = false)
+ @Temporal(TIMESTAMP)
+ @NotNull(message = "Tanggal entri tidak boleh kosong")
+ @Caption(value = "Tanggal Entri")
+ private Date tanggalEntri;
+
+ @Column(name = "nilai_kinerja", nullable = false, columnDefinition = "numeric(15,2) default 0.00")
+ @NotNull(message = "Nilai kinerja tidak boleh kosong")
+ private BigDecimal nilaiKinerja;
+}
diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/NilaiAnggaran.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/NilaiAnggaran.java
new file mode 100644
index 00000000..7690e47b
--- /dev/null
+++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/NilaiAnggaran.java
@@ -0,0 +1,10 @@
+package com.jasamedika.medifirst2000.entities;
+
+/**
+ * @author salmanoe
+ * @version 1.0.0
+ * @since 04/03/2024
+ */
+public enum NilaiAnggaran {
+ REAL, BUDGET, BUDGET_AWAL, BUDGET_AKHIR, BUDGET_REVISI, AUDIT
+}
diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PeriodeMonitoring.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PeriodeMonitoring.java
new file mode 100644
index 00000000..b150fbf1
--- /dev/null
+++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PeriodeMonitoring.java
@@ -0,0 +1,36 @@
+package com.jasamedika.medifirst2000.entities;
+
+import com.jasamedika.medifirst2000.base.BaseActive;
+import com.jasamedika.medifirst2000.helper.Caption;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.validator.constraints.NotBlank;
+
+import javax.persistence.*;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+import static javax.persistence.GenerationType.SEQUENCE;
+
+/**
+ * @author salmanoe
+ * @version 1.0.0
+ * @since 04/03/2024
+ */
+@Getter
+@Setter
+@Entity
+@Table(name = "periode_monitoring_m", schema = "mkko")
+public class PeriodeMonitoring extends BaseActive implements Serializable {
+ @Id
+ @GeneratedValue(strategy = SEQUENCE, generator = "sg_periode_monitoring_m")
+ @SequenceGenerator(name = "sg_periode_monitoring_m", schema = "mkko", sequenceName = "mkko.periode_monitoring_m_seq", allocationSize = 1)
+ @Column(name = "id", columnDefinition = "bigint default nextval('mkko.periode_monitoring_m_seq'::regclass)")
+ protected Long id;
+
+ @Column(name = "periode", length = 50, unique = true, nullable = false)
+ @Size(max = 50, message = "Periode maksimal {max} karakter")
+ @NotBlank(message = "Periode tidak boleh kosong")
+ @Caption("Periode")
+ private String periode;
+}
diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/SatuanKinerja.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/SatuanKinerja.java
new file mode 100644
index 00000000..8e892164
--- /dev/null
+++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/SatuanKinerja.java
@@ -0,0 +1,41 @@
+package com.jasamedika.medifirst2000.entities;
+
+import com.jasamedika.medifirst2000.base.BaseActive;
+import com.jasamedika.medifirst2000.helper.Caption;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.validator.constraints.NotBlank;
+
+import javax.persistence.*;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+import static javax.persistence.GenerationType.SEQUENCE;
+
+/**
+ * @author salmanoe
+ * @version 1.0.0
+ * @since 04/03/2024
+ */
+@Getter
+@Setter
+@Entity
+@Table(name = "satuan_kinerja_m", schema = "mkko")
+public class SatuanKinerja extends BaseActive implements Serializable {
+ @Id
+ @GeneratedValue(strategy = SEQUENCE, generator = "sg_satuan_kinerja_m")
+ @SequenceGenerator(name = "sg_satuan_kinerja_m", schema = "mkko", sequenceName = "mkko.satuan_kinerja_m_seq", allocationSize = 1)
+ @Column(name = "id", columnDefinition = "bigint default nextval('mkko.satuan_kinerja_m_seq'::regclass)")
+ protected Long id;
+
+ @Column(name = "satuan_kinerja", length = 50, unique = true, nullable = false)
+ @Size(max = 50, message = "Satuan kinerja maksimal {max} karakter")
+ @NotBlank(message = "Satuan kinerja tidak boleh kosong")
+ @Caption("Satuan Kinerja")
+ private String satuanKinerja;
+
+ @Column(name = "kode_satuan", length = 10)
+ @Size(max = 10, message = "Kode Satuan maksimal {max} karakter")
+ @Caption("Kode Satuan")
+ private String kodeSatuan;
+}
diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/WorkingCapital.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/WorkingCapital.java
new file mode 100644
index 00000000..b0ce7f78
--- /dev/null
+++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/WorkingCapital.java
@@ -0,0 +1,40 @@
+package com.jasamedika.medifirst2000.entities;
+
+import com.jasamedika.medifirst2000.base.BaseTransaction;
+import com.jasamedika.medifirst2000.helper.Caption;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+import static javax.persistence.FetchType.LAZY;
+
+/**
+ * @author salmanoe
+ * @version 1.0.0
+ * @since 07/03/2024
+ */
+@Getter
+@Setter
+@Entity
+@Table(name = "working_capital_t", schema = "mkko")
+public class WorkingCapital extends BaseTransaction implements Serializable {
+ @ManyToOne(fetch = LAZY)
+ @JoinColumn(name = "component_object_fk", nullable = false)
+ @NotNull(message = "Component object tidak boleh kosong")
+ @Caption(value = "Component Object")
+ private ComponentObject componentObject;
+
+ @ManyToOne(fetch = LAZY)
+ @JoinColumn(name = "aging_period_fk", nullable = false)
+ @NotNull(message = "Aging period tidak boleh kosong")
+ @Caption(value = "Aging Period")
+ private AgingPeriod agingPeriod;
+
+ @Column(name = "liquidity_value", nullable = false, columnDefinition = "numeric(15,2) default 0.00")
+ @NotNull(message = "Liquidity value tidak boleh kosong")
+ private BigDecimal liquidityValue;
+}
diff --git a/jasamedika-web/src/main/webapp/WEB-INF/web.xml b/jasamedika-web/src/main/webapp/WEB-INF/web.xml
index 1d90352f..f739001b 100644
--- a/jasamedika-web/src/main/webapp/WEB-INF/web.xml
+++ b/jasamedika-web/src/main/webapp/WEB-INF/web.xml
@@ -15,7 +15,7 @@
spring.profiles.default
- web
+ localhost