package org.sadigit.entity; import java.security.Timestamp; import java.time.LocalDateTime; import org.locationtech.jts.geom.Geometry; import org.sadigit.adapter.GeometryAdapter; import jakarta.json.bind.annotation.JsonbTypeAdapter; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import lombok.Getter; import lombok.Setter; @Entity @Getter @Setter @Table(name = "keluhan", schema = "apkt_transactional") public class Keluhan { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "id_pelanggan_no_meter") private Long idPelangganNoMeter; @Column(name = "id_ulp") private Long idUlp; @Column(name = "id_tipe_permasalahan") private Long idTipePermasalahan; @Column(name = "alamat_pelanggan", length = 255) private String alamatPelanggan; @Column(name = "nama_pelapor", length = 255) private String namaPelapor; @Column(name = "telepon_pelapor", length = 255) private String teleponPelapor; @Column(name = "hp_pelapor", length = 255) private String hpPelapor; @Column(name = "fax_pelapor", length = 255) private String faxPelapor; @Column(name = "email_pelapor", length = 255) private String emailPelapor; @Column(name = "alamat_pelapor", length = 4000) private String alamatPelapor; @Column(length = 255) private String media; @Column(name = "waktu_padam", length = 255) private LocalDateTime waktuPadam; @Column(length = 255) private String konfirmasi; @JsonbTypeAdapter(GeometryAdapter.class) @Column(name = "lokasi", columnDefinition = "geometry(Point,4326)") private Geometry lokasi; @Column(name = "no_laporan") private String noLaporan; @Column(length = 4000) private String keterangan; @Column(name = "created_date") private LocalDateTime createdDate; @Column(name = "created_by") private Long createdBy; @Column(name = "updated_date") private LocalDateTime updatedDate; @Column(name = "updated_by") private Long updatedBy; @Column(name = "status_akhir", length = 50) private String statusAkhir; @Column(name = "tipe_wo") private Long tipeWo; private Long unit; private Long eskalasi; private String permasalahan; @Column(name = "waktu_lapor") private LocalDateTime waktuLapor; @Column(name = "id_regu") private Long idRegu; @Column(name = "waktu_penugasan") private LocalDateTime waktuPenugasan; @Column(name = "waktu_perjalanan") private LocalDateTime waktuPerjalanan; @Column(name = "waktu_pengerjaan") private LocalDateTime waktuPengerjaan; @Column(name = "waktu_nyala_sementara") private LocalDateTime waktuNyalaSementara; @Column(name = "waktu_nyala") private LocalDateTime waktuNyala; @Column(name = "waktu_batal") private LocalDateTime waktuBatal; @Column(name = "waktu_selesai") private LocalDateTime waktuSelesai; @Column(name = "tipe_keluhan") private Long tipeKeluhan; @Column(name = "tipe_sub_keluhan") private Long tipeSubKeluhan; private String alasan; private String patokan; private Long jarak; @Column(name = "id_kelurahan") private Long idKelurahan; private String fax; @Column(name = "keterangan_lokasi") private String keteranganLokasi; @Column(name = "waktu_fax") private LocalDateTime waktuFax; @Column(name = "nama_media") private String namaMedia; @Column(name = "waktu_media") private LocalDateTime waktuMedia; @Column(name = "id_posko") private Long idPosko; @Column(name = "respon_pelanggan") private String responPelanggan; private String uraian; private String pelaksana; @Column(name = "id_tarif_daya") private Long idTarifDaya; private String summary; @Column(name = "jumlah_lapor") private Long jumlahLapor; private String deskripsi; @Column(name = "waktu_konfirmasi") private LocalDateTime waktuKonfirmasi; @Column(name = "waktu_menunggu_tanggapan_supervisor") private LocalDateTime waktuMenungguTanggapanSupervisor; @Column(name = "tindak_lanjut_penyelesaian") private String tindakLanjutPenyelesaian; @Column(name = "no_lapor_pln") private String noLaporPln; @Column(name = "no_tiket_crm") private String noTiketCrm; @ManyToOne() @JoinColumn(name = "id_kelurahan", referencedColumnName = "id_kelurahan", insertable = false, updatable = false) private MasterKelurahan kelurahan; @ManyToOne() @JoinColumn(name = "tipe_keluhan", referencedColumnName = "issuetypeid", insertable = false, updatable = false) private Issuetype issueType; @ManyToOne() @JoinColumn(name = "tipe_sub_keluhan", referencedColumnName = "subissuetypeid", insertable = false, updatable = false) private SubIssueType subIssueType; }