diff --git a/README.md b/README.md index a1fde56..ff95ee8 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# api-keluhan-mobile +# PLN MOBILE This project uses Quarkus, the Supersonic Subatomic Java Framework. @@ -43,14 +43,13 @@ Or, if you don't have GraalVM installed, you can run the native executable build ./mvnw package -Dnative -Dquarkus.native.container-build=true ``` -You can then execute your native executable with: `./target/api-keluhan-mobile-1.0.0-SNAPSHOT-runner` +You can then execute your native executable with: `./target/ap2t-api-1.0.0-runner` If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling. ## Related Guides - RESTEasy Reactive ([guide](https://quarkus.io/guides/resteasy-reactive)): A Jakarta REST implementation utilizing build time processing and Vert.x. This extension is not compatible with the quarkus-resteasy extension, or any of the extensions that depend on it. -- Reactive PostgreSQL client ([guide](https://quarkus.io/guides/reactive-sql-clients)): Connect to the PostgreSQL database using the reactive pattern ## Provided Code diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000..860bf99 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,7 @@ +echo "-----------------------------------" +echo "Build and deploy api pln mobile version : $1" +echo "-----------------------------------" +./mvnw package +docker build -f src/main/docker/Dockerfile.jvm -t tias333/api-mobpl:v.0.0.$1 . +# docker build -f src/main/docker/Dockerfile.native -t tias333/api-mobpl:v.0.0.$1 . +docker push tias333/api-mobpl:v.0.0.$1 \ No newline at end of file diff --git a/deploynative.sh b/deploynative.sh new file mode 100644 index 0000000..782c067 --- /dev/null +++ b/deploynative.sh @@ -0,0 +1,6 @@ +echo "-----------------------------------" +echo "Build and deploy api pln mobile version : $1" +echo "-----------------------------------" +./mvnw package -Dnative +# docker build -f src/main/docker/Dockerfile.native -t tias333/api-mobpl:v.0.0.$1-native . +# docker push tias333/api-mobpl:v.0.0.$1-native \ No newline at end of file diff --git a/pom.xml b/pom.xml index 5673de8..d305f17 100644 --- a/pom.xml +++ b/pom.xml @@ -1,181 +1,203 @@ - - - 4.0.0 - org.sadigit - api-keluhan-mobile - 1.0.0-SNAPSHOT - - - 3.12.1 - 21 - UTF-8 - UTF-8 - quarkus-bom - io.quarkus.platform - 3.8.4 - true - 3.2.5 - 2.17.0 - - - - - - ${quarkus.platform.group-id} - ${quarkus.platform.artifact-id} - ${quarkus.platform.version} - pom - import - - - - + + + 4.0.0 + org.sadigit + api-mobpl + 1.0.0 + + 3.12.1 + 2.17.0 + 17 + UTF-8 + UTF-8 + quarkus-bom + io.quarkus.platform + 3.7.4 + true + 3.2.5 + + - io.quarkus - quarkus-hibernate-orm-panache - - - io.quarkus - quarkus-jdbc-postgresql - - - io.quarkus - quarkus-arc - - - io.quarkus - quarkus-junit5 - test - - - io.rest-assured - rest-assured - test - - - org.projectlombok - lombok - 1.18.32 - provided - - - io.quarkus - quarkus-hibernate-validator - - - org.projectlombok - lombok - 1.18.30 - provided - - - org.apache.commons - commons-lang3 - - - org.hibernate - hibernate-spatial - 6.4.2.Final - - - io.quarkus - quarkus-resteasy-jsonb - - - com.fasterxml.jackson.core - * - - - - - com.fasterxml.jackson.core - jackson-annotations - ${jackson.version} - - - com.fasterxml.jackson.core - jackson-core - ${jackson.version} - - - com.fasterxml.jackson.dataformat - jackson-dataformat-xml - ${jackson.version} - - + ${quarkus.platform.group-id} + ${quarkus.platform.artifact-id} + ${quarkus.platform.version} + pom + import + - - - - - ${quarkus.platform.group-id} - quarkus-maven-plugin - ${quarkus.platform.version} - true - - - - build - generate-code - generate-code-tests - - - - - - maven-compiler-plugin - ${compiler-plugin.version} - - - -parameters - - - - - maven-surefire-plugin - ${surefire-plugin.version} - - - org.jboss.logmanager.LogManager - ${maven.home} - - - - - maven-failsafe-plugin - ${surefire-plugin.version} - - - - integration-test - verify - - - - - - ${project.build.directory}/${project.build.finalName}-runner - org.jboss.logmanager.LogManager - ${maven.home} - - - - - - - - - native - - - native - - - - false - native - - - + + + + org.projectlombok + lombok + 1.18.30 + provided + + + org.hibernate + hibernate-spatial + 6.4.2.Final + + + io.quarkus + quarkus-resteasy + + + io.quarkus + quarkus-jaxb + + + org.apache.commons + commons-text + 1.12.0 + + + io.quarkus + quarkus-resteasy-jsonb + + + com.fasterxml.jackson.core + * + + + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + ${jackson.version} + + + io.quarkus + quarkus-micrometer-registry-prometheus + + + org.eclipse.microprofile.metrics + microprofile-metrics-api + + + io.quarkus + quarkus-smallrye-health + + + io.quarkus + quarkus-smallrye-fault-tolerance + + + io.quarkus + quarkus-hibernate-orm-panache + + + io.quarkus + quarkus-jdbc-postgresql + + + io.quarkus + quarkus-config-yaml + + + io.quarkus + quarkus-smallrye-context-propagation + + + io.quarkus + quarkus-arc + + + io.quarkus + quarkus-smallrye-openapi + + + io.quarkus + quarkus-junit5 + test + + + io.rest-assured + rest-assured + test + + + + + + ${quarkus.platform.group-id} + quarkus-maven-plugin + ${quarkus.platform.version} + true + + + + build + generate-code + generate-code-tests + + + + + + maven-compiler-plugin + ${compiler-plugin.version} + + + -parameters + + + + + maven-surefire-plugin + ${surefire-plugin.version} + + + org.jboss.logmanager.LogManager + ${maven.home} + + + + + maven-failsafe-plugin + ${surefire-plugin.version} + + + + integration-test + verify + + + + + + ${project.build.directory}/${project.build.finalName}-runner + org.jboss.logmanager.LogManager + ${maven.home} + + + + + + + + native + + + native + + + + false + native + + + diff --git a/src/main/docker/Dockerfile.jvm b/src/main/docker/Dockerfile.jvm index 3d65e85..d9d8748 100644 --- a/src/main/docker/Dockerfile.jvm +++ b/src/main/docker/Dockerfile.jvm @@ -7,11 +7,11 @@ # # Then, build the image with: # -# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/api-keluhan-mobile-jvm . +# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/ap2t-api-jvm . # # Then run the container using: # -# docker run -i --rm -p 8080:8080 quarkus/api-keluhan-mobile-jvm +# docker run -i --rm -p 8080:8080 quarkus/ap2t-api-jvm # # If you want to include the debug port into your docker image # you will have to expose the debug port (default 5005 being the default) like this : EXPOSE 8080 5005. @@ -20,7 +20,7 @@ # # Then run the container using : # -# docker run -i --rm -p 8080:8080 quarkus/api-keluhan-mobile-jvm +# docker run -i --rm -p 8080:8080 quarkus/ap2t-api-jvm # # This image uses the `run-java.sh` script to run the application. # This scripts computes the command line to execute your Java application, and @@ -77,7 +77,7 @@ # accessed directly. (example: "foo.example.com,bar.example.com") # ### -FROM registry.access.redhat.com/ubi8/openjdk-21:1.18 +FROM registry.access.redhat.com/ubi8/openjdk-17:1.18 ENV LANGUAGE='en_US:en' diff --git a/src/main/docker/Dockerfile.legacy-jar b/src/main/docker/Dockerfile.legacy-jar index 2a1ab76..1127342 100644 --- a/src/main/docker/Dockerfile.legacy-jar +++ b/src/main/docker/Dockerfile.legacy-jar @@ -7,11 +7,11 @@ # # Then, build the image with: # -# docker build -f src/main/docker/Dockerfile.legacy-jar -t quarkus/api-keluhan-mobile-legacy-jar . +# docker build -f src/main/docker/Dockerfile.legacy-jar -t quarkus/ap2t-api-legacy-jar . # # Then run the container using: # -# docker run -i --rm -p 8080:8080 quarkus/api-keluhan-mobile-legacy-jar +# docker run -i --rm -p 8080:8080 quarkus/ap2t-api-legacy-jar # # If you want to include the debug port into your docker image # you will have to expose the debug port (default 5005 being the default) like this : EXPOSE 8080 5005. @@ -20,7 +20,7 @@ # # Then run the container using : # -# docker run -i --rm -p 8080:8080 quarkus/api-keluhan-mobile-legacy-jar +# docker run -i --rm -p 8080:8080 quarkus/ap2t-api-legacy-jar # # This image uses the `run-java.sh` script to run the application. # This scripts computes the command line to execute your Java application, and @@ -77,7 +77,7 @@ # accessed directly. (example: "foo.example.com,bar.example.com") # ### -FROM registry.access.redhat.com/ubi8/openjdk-21:1.18 +FROM registry.access.redhat.com/ubi8/openjdk-17:1.18 ENV LANGUAGE='en_US:en' diff --git a/src/main/docker/Dockerfile.native b/src/main/docker/Dockerfile.native index 313351c..9c917cb 100644 --- a/src/main/docker/Dockerfile.native +++ b/src/main/docker/Dockerfile.native @@ -7,11 +7,11 @@ # # Then, build the image with: # -# docker build -f src/main/docker/Dockerfile.native -t quarkus/api-keluhan-mobile . +# docker build -f src/main/docker/Dockerfile.native -t quarkus/ap2t-api . # # Then run the container using: # -# docker run -i --rm -p 8080:8080 quarkus/api-keluhan-mobile +# docker run -i --rm -p 8080:8080 quarkus/ap2t-api # ### FROM registry.access.redhat.com/ubi8/ubi-minimal:8.9 diff --git a/src/main/docker/Dockerfile.native-micro b/src/main/docker/Dockerfile.native-micro index 52e41fb..b8b7e4b 100644 --- a/src/main/docker/Dockerfile.native-micro +++ b/src/main/docker/Dockerfile.native-micro @@ -10,11 +10,11 @@ # # Then, build the image with: # -# docker build -f src/main/docker/Dockerfile.native-micro -t quarkus/api-keluhan-mobile . +# docker build -f src/main/docker/Dockerfile.native-micro -t quarkus/ap2t-api . # # Then run the container using: # -# docker run -i --rm -p 8080:8080 quarkus/api-keluhan-mobile +# docker run -i --rm -p 8080:8080 quarkus/ap2t-api # ### FROM quay.io/quarkus/quarkus-micro-image:2.0 diff --git a/src/main/java/org/sadigit/adapter/GeometryAdapter.java b/src/main/java/org/sadigit/adapter/GeometryAdapter.java index 10478ff..0860ad4 100644 --- a/src/main/java/org/sadigit/adapter/GeometryAdapter.java +++ b/src/main/java/org/sadigit/adapter/GeometryAdapter.java @@ -32,4 +32,4 @@ public class GeometryAdapter implements JsonbAdapter { throw new IllegalArgumentException("Invalid WKT string: " + json, e); } } -} \ No newline at end of file +} diff --git a/src/main/java/org/sadigit/adapter/PointAdapter.java b/src/main/java/org/sadigit/adapter/PointAdapter.java new file mode 100644 index 0000000..d28a1b7 --- /dev/null +++ b/src/main/java/org/sadigit/adapter/PointAdapter.java @@ -0,0 +1,21 @@ +package org.sadigit.adapter; + +import org.locationtech.jts.geom.Point; +import org.locationtech.jts.io.WKTReader; + +import jakarta.json.bind.adapter.JsonbAdapter; + +public class PointAdapter implements JsonbAdapter { + + @Override + public String adaptToJson(Point point) throws Exception { + // Serialize the Point object to a string representation + return point.toText(); + } + + @Override + public Point adaptFromJson(String pointString) throws Exception { + // Deserialize the string representation to a Point object + return (Point) new WKTReader().read(pointString); + } +} diff --git a/src/main/java/org/sadigit/boundary/v1/endpoint/PlnMobileResource.java b/src/main/java/org/sadigit/boundary/v1/endpoint/PlnMobileResource.java new file mode 100644 index 0000000..8b35469 --- /dev/null +++ b/src/main/java/org/sadigit/boundary/v1/endpoint/PlnMobileResource.java @@ -0,0 +1,203 @@ +package org.sadigit.boundary.v1.endpoint; + +import java.util.List; +import java.util.Map; + +import org.sadigit.control.exception.CustomException; +import org.sadigit.model.request.CreateGangguanRequest; +import org.sadigit.model.request.CreateGangguanV2Request; +import org.sadigit.model.request.CreateKeluhanRequest; +import org.sadigit.model.request.CreateKeluhanV2Request; +import org.sadigit.model.request.GetCancelRequest; +import org.sadigit.model.request.GetCttRequest; +import org.sadigit.model.request.GetDataGarduV2Request; +import org.sadigit.model.request.GetDataRequest; +import org.sadigit.model.request.GetRatingPlgnRequest; +import org.sadigit.model.response.CreateGangguanResponse; +import org.sadigit.model.response.DetailPengaduanFlowResponse; +import org.sadigit.model.response.DetailPengaduanResponse; +import org.sadigit.model.response.GarduNyalaResponse; +import org.sadigit.model.response.GetCttResponse; +import org.sadigit.model.response.GarduPadamResponse; +import org.sadigit.model.response.GarduRencanaResponse; +import org.sadigit.model.response.GetFotoResponse; +import org.sadigit.model.response.GetHistoByIdpelResponse; +import org.sadigit.model.response.GetHistoriGangguanByIdResponse; +import org.sadigit.model.response.GetMasterJenisPengaduanResponse; +import org.sadigit.model.response.GetMasterJenisPengaduanResponseV2; +import org.sadigit.model.response.GetRatingPlnResponse; +import org.sadigit.model.response.base.ResponseModel; +import org.sadigit.model.response.base.ResponseModelGardu; +import org.sadigit.model.response.base.ResponseModelGarduV2; +import org.sadigit.model.response.base.ResponseModelOutReturn; +import org.sadigit.model.response.base.ResponseModelWithFlow; +import org.sadigit.service.api.v1.PlnMobileService; + +import jakarta.inject.Inject; +import jakarta.ws.rs.BeanParam; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; + +@Path("/api/apkt/plnmobile") +public class PlnMobileResource { + + @Inject + PlnMobileService plnMobileService; + + @POST + @Path(value = "/histogangguan") + @Produces(MediaType.APPLICATION_JSON) + public ResponseModel histogangguan(@QueryParam("in_data") String in_data) { + + if (in_data == null || in_data.isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "in_data tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + return plnMobileService.getHistoriGangguanById(in_data); + } + + @POST + @Path(value = "/detailpengaduan") + @Produces(MediaType.APPLICATION_JSON) + public ResponseModelWithFlow detailpengaduan(@QueryParam("in_data") String in_data) { + if (in_data == null || in_data.isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "in_data tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + return plnMobileService.getDetailPengaduan(in_data); + } + + @POST + @Path(value = "/masterjp") + @Produces(MediaType.APPLICATION_JSON) + public ResponseModel> masterjp() { + return plnMobileService.getMasterJenisPengaduan(); + } + + @POST + @Path(value = "/creategangguan") + @Produces(MediaType.APPLICATION_JSON) + public CreateGangguanResponse creategangguan(@BeanParam CreateGangguanRequest params) { + params.checkParameter(); + return plnMobileService.createGangguan(params); + } + + @POST + @Path(value = "/creategangguanv2") + @Produces(MediaType.APPLICATION_JSON) + public CreateGangguanResponse creategangguanv2(@BeanParam CreateGangguanV2Request params) { + params.checkParameter(); + return plnMobileService.createGangguanV2(params); + } + + @POST + @Path(value = "/createkeluhan") + @Produces(MediaType.APPLICATION_JSON) + public ResponseModel> createkeluhan(@BeanParam CreateKeluhanRequest params) { + params.checkParameter(); + return plnMobileService.createKeluhan(params); + } + + @POST + @Path(value = "/get_cancel") + @Produces(MediaType.APPLICATION_JSON) + public ResponseModelOutReturn getcancel(@BeanParam GetCancelRequest params) { + params.checkParameter(); + return plnMobileService.batalkanPengaduan(params); + } + + @POST + @Path(value = "/gethistobyidpel") + @Produces(MediaType.APPLICATION_JSON) + public ResponseModel> gethistobyidpel( + @QueryParam("in_data") String in_data) { + if (in_data == null || in_data.isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "in_data tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + return plnMobileService.getHistoriGangguanByIdpel(in_data); + } + + @POST + @Path(value = "/rating") + @Produces(MediaType.APPLICATION_JSON) + public ResponseModel> rating(@BeanParam GetRatingPlgnRequest request) { + request.checkParameter(); + return plnMobileService.getRating(request); + } + + @POST + @Path(value = "/getdatagardu") + @Produces(MediaType.APPLICATION_JSON) + public ResponseModelGardu getdatagardu() { + return plnMobileService.getDataGardu(); + } + + @POST + @Path(value = "/getdatagarduv2") + @Produces(MediaType.APPLICATION_JSON) + public ResponseModelGarduV2 getdatagarduv2(@BeanParam GetDataGarduV2Request params) { + params.checkParameter(); + return plnMobileService.getDataGarduV2(params); + } + + @POST + @Path(value = "/masterjpv2") + @Produces(MediaType.APPLICATION_JSON) + public ResponseModel> masterjpv2() { + return plnMobileService.getMasterJenisPengaduanV2(); + } + + @POST + @Path(value = "/createkeluhanV2") + @Produces(MediaType.APPLICATION_JSON) + public ResponseModel> createkeluhanV2(CreateKeluhanV2Request params) { + params.checkParameter(); + return plnMobileService.createKeluhanV2(params); + } + + @POST + @Path(value = "/GET_FOTO") + @Produces(MediaType.APPLICATION_JSON) + public GetFotoResponse>> getFoto(@QueryParam("p_reportnumber") String pReportNumber) { + + if (pReportNumber == null || pReportNumber.isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "No laporan tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + return plnMobileService.getFoto(pReportNumber); + } + + @POST + @Path(value = "/GET_CTT") + @Produces(MediaType.APPLICATION_JSON) + public ResponseModel> GET_CTT(@BeanParam GetCttRequest params) { + params.checkParameter(); + return plnMobileService.getCtt(params); + } + + @POST + @Path(value = "/get_data") + @Produces(MediaType.APPLICATION_JSON) + public ResponseModel get_data(@BeanParam GetDataRequest params) { + return plnMobileService.getData(params); + } +} diff --git a/src/main/java/org/sadigit/control/errorhandlers/CustomExceptionHandler.java b/src/main/java/org/sadigit/control/errorhandlers/CustomExceptionHandler.java new file mode 100644 index 0000000..0b3f703 --- /dev/null +++ b/src/main/java/org/sadigit/control/errorhandlers/CustomExceptionHandler.java @@ -0,0 +1,32 @@ +package org.sadigit.control.errorhandlers; + +// import java.util.LinkedHashMap; +import java.util.Map; +import java.util.LinkedHashMap; + +import org.sadigit.control.exception.CustomException; + +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.ext.ExceptionMapper; +import jakarta.ws.rs.ext.Provider; + +@Provider +public class CustomExceptionHandler implements ExceptionMapper{ + + @Override + public Response toResponse(CustomException exception) { + + if (exception.getCustomErrorStructure() != null) { + return Response.status(Status.OK).entity(exception.getCustomErrorStructure()).build(); + } else { + Map response = new LinkedHashMap<>(); + exception.printStackTrace(); + response.put("status", false); + response.put("title", "Terjadi Kesalahan"); + response.put("message", exception.getMessage()); + return Response.status(Status.OK).entity(response).build(); + } + } + +} \ No newline at end of file diff --git a/src/main/java/org/sadigit/control/errorhandlers/GetDataGarduV2Handler.java b/src/main/java/org/sadigit/control/errorhandlers/GetDataGarduV2Handler.java new file mode 100644 index 0000000..428f6e6 --- /dev/null +++ b/src/main/java/org/sadigit/control/errorhandlers/GetDataGarduV2Handler.java @@ -0,0 +1,27 @@ +package org.sadigit.control.errorhandlers; + +import java.util.Map; + +import org.sadigit.control.exception.GetDataGarduV2Exception; +import org.sadigit.model.response.base.ResponseModelGarduV2; + +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.ext.ExceptionMapper; +import jakarta.ws.rs.ext.Provider; + +@Provider +public class GetDataGarduV2Handler implements ExceptionMapper{ + + @Override + public Response toResponse(GetDataGarduV2Exception exception) { + + ResponseModelGarduV2> response = new ResponseModelGarduV2<>(); + response.setP_return(Map.of( + "errorcode", exception.getErrorCode(), + "info", exception.getMessage() + )); + + return Response.status(Response.Status.OK).entity(response).build(); + } + +} diff --git a/src/main/java/org/sadigit/control/exception/CustomException.java b/src/main/java/org/sadigit/control/exception/CustomException.java new file mode 100644 index 0000000..bbf64e7 --- /dev/null +++ b/src/main/java/org/sadigit/control/exception/CustomException.java @@ -0,0 +1,23 @@ +package org.sadigit.control.exception; + +import lombok.Getter; + +@Getter +public class CustomException extends RuntimeException{ + private static final long serialVersionUID = 1L; + + private Object customErrorStructure; + + public CustomException() { + super(); + } + + public CustomException(String msg) { + super(msg); + } + + public CustomException(String msg, Object customErrorStructure) { + super(); + this.customErrorStructure = customErrorStructure; + } +} diff --git a/src/main/java/org/sadigit/control/exception/GetDataGarduV2Exception.java b/src/main/java/org/sadigit/control/exception/GetDataGarduV2Exception.java new file mode 100644 index 0000000..ff0c61d --- /dev/null +++ b/src/main/java/org/sadigit/control/exception/GetDataGarduV2Exception.java @@ -0,0 +1,20 @@ +package org.sadigit.control.exception; + +import lombok.Getter; + +@Getter +public class GetDataGarduV2Exception extends RuntimeException{ + + private static final long serialVersionUID = 1L; + private String errorCode; + + public GetDataGarduV2Exception(String errorCode) { + super(); + this.errorCode = errorCode; + } + + public GetDataGarduV2Exception(String errorCode, String msg) { + super(msg); + this.errorCode = errorCode; + } +} diff --git a/src/main/java/org/sadigit/entity/AppUser.java b/src/main/java/org/sadigit/entity/AppUser.java index 4b5d793..a1c4075 100644 --- a/src/main/java/org/sadigit/entity/AppUser.java +++ b/src/main/java/org/sadigit/entity/AppUser.java @@ -3,19 +3,22 @@ package org.sadigit.entity; import lombok.Getter; import lombok.Setter; +import java.math.BigInteger; import java.sql.Timestamp; -import java.util.List; - import org.hibernate.annotations.Immutable; +import org.sadigit.entity.referensi.Posko; +import org.sadigit.entity.referensi.Regional; +import org.sadigit.entity.referensi.Uid; +import org.sadigit.entity.referensi.Ulp; +import org.sadigit.entity.referensi.Up3; import io.quarkus.hibernate.orm.panache.PanacheEntityBase; import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToMany; import jakarta.persistence.ManyToOne; -import jakarta.persistence.OneToMany; import jakarta.persistence.Table; @Entity @@ -27,7 +30,7 @@ public class AppUser extends PanacheEntityBase { @Id @Column(name = "userid", nullable = false) - private Long userId; + private BigInteger userId; @Column(name = "username", length = 200) private String username; @@ -53,8 +56,9 @@ public class AppUser extends PanacheEntityBase { @Column(name = "email", length = 200) private String email; - @Column(name = "positionid") - private Long positionId; + @ManyToOne(optional = false, fetch = FetchType.EAGER) + @JoinColumn(name = "positionid", referencedColumnName = "id") + private Position position; @Column(name = "unitid") private Long unitId; @@ -98,7 +102,24 @@ public class AppUser extends PanacheEntityBase { @Column(name = "picture") private String picture; - @OneToMany(mappedBy = "idUser") - private List userRole; + @ManyToOne(optional = true, fetch = FetchType.EAGER) + @JoinColumn(name = "unitId", referencedColumnName = "id", insertable = false, updatable = false, nullable = true) + private Ulp ulp; + + @ManyToOne(optional = true, fetch = FetchType.EAGER) + @JoinColumn(name = "unitId", referencedColumnName = "id", insertable = false, updatable = false, nullable = true) + private Regional regional; + + @ManyToOne(optional = true, fetch = FetchType.EAGER) + @JoinColumn(name = "unitId", referencedColumnName = "id", insertable = false, updatable = false, nullable = true) + private Uid uid; + + @ManyToOne(optional = true, fetch = FetchType.EAGER) + @JoinColumn(name = "unitId", referencedColumnName = "id", insertable = false, updatable = false, nullable = true) + private Up3 up3; + + @ManyToOne(optional = true, fetch = FetchType.EAGER) + @JoinColumn(name = "unitId", referencedColumnName = "id", insertable = false, updatable = false, nullable = true) + private Posko posko; } diff --git a/src/main/java/org/sadigit/entity/Position.java b/src/main/java/org/sadigit/entity/Position.java new file mode 100644 index 0000000..3915b5a --- /dev/null +++ b/src/main/java/org/sadigit/entity/Position.java @@ -0,0 +1,43 @@ +package org.sadigit.entity; + +import lombok.Getter; +import lombok.Setter; + +import java.sql.Timestamp; +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; + +@Entity +@Getter +@Setter +@Immutable +@Table(name = "position", schema = "apkt_transactional") +public class Position extends PanacheEntityBase { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "kode") + private String kode; + + @Column(name = "nama") + private String nama; + + @Column(name = "is_active") + private Boolean is_active; + + @Column(name = "created_date") + private Timestamp created_date; + + @Column(name = "created_by") + private Long created_by; +} diff --git a/src/main/java/org/sadigit/entity/SessionUser.java b/src/main/java/org/sadigit/entity/SessionUser.java new file mode 100644 index 0000000..ba26078 --- /dev/null +++ b/src/main/java/org/sadigit/entity/SessionUser.java @@ -0,0 +1,39 @@ +package org.sadigit.entity; + +import java.time.LocalDate; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "session", schema = "apkt_transactional") +@Immutable +public class SessionUser extends PanacheEntity { + @Column(name = "id") + private Long id; + + @Column(name = "id_regu", nullable = false) + private Long id_regu; + + @Column(name = "waktu_login", nullable = false) + private LocalDate waktu_login; + + @Column(name = "waktu_logout") + private LocalDate waktu_logout; + + @Column(name = "aktif", nullable = false) + private Boolean aktif; + + @Column(name = "created_date") + private LocalDate created_date; + + @Column(name = "created_by") + private Long created_by; + +} diff --git a/src/main/java/org/sadigit/entity/masterYantek/AreaYantek.java b/src/main/java/org/sadigit/entity/masterYantek/AreaYantek.java new file mode 100644 index 0000000..cecf0d4 --- /dev/null +++ b/src/main/java/org/sadigit/entity/masterYantek/AreaYantek.java @@ -0,0 +1,34 @@ +package org.sadigit.entity.masterYantek; + +import org.hibernate.annotations.Immutable; +import org.locationtech.jts.geom.Polygon; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "area_yantek", schema = "apkt_transactional") +@Immutable +public class AreaYantek extends PanacheEntity { + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "id_ulp") + private Long idUlp; + + @Column(name = "geom_area") + private Polygon geomArea; + + @Column(name = "rowid", nullable = false, updatable = false, insertable = false) + private Long rowId; + + @Column(name = "color") + private String color; + +} diff --git a/src/main/java/org/sadigit/entity/masterYantek/ReguKoordinat.java b/src/main/java/org/sadigit/entity/masterYantek/ReguKoordinat.java new file mode 100644 index 0000000..cc310a2 --- /dev/null +++ b/src/main/java/org/sadigit/entity/masterYantek/ReguKoordinat.java @@ -0,0 +1,59 @@ +package org.sadigit.entity.masterYantek; + +import jakarta.json.bind.annotation.JsonbTypeAdapter; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +import org.locationtech.jts.geom.Geometry; +import org.sadigit.adapter.GeometryAdapter; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; + +@Entity +@Setter +@Getter +@Table(name = "regu_koordinat", schema = "apkt_transactional") +public class ReguKoordinat extends PanacheEntityBase { + + @Id + @Column(name = "reguid", nullable = false) + private Long reguid; + + @Column(name = "date_time") + private LocalDateTime date_time; + + @Column(name = "user_id") + private Long user_id; + + @Column(name = "unit_id") + private Long unit_id; + + @Column(name = "user_name", length = 50) + private String user_name; + + @Column(name = "regutype", length = 25) + private String regutype; + + @JsonbTypeAdapter(GeometryAdapter.class) + @Column(name = "geom_point", columnDefinition = "geometry(Point,4326)") + private Geometry geom_point; + + @Column(name = "login_status", length = 10) + private String login_status; + + @Column(name = "login_date") + private LocalDateTime login_date; + + @Column(name = "jml_wo") + private Long jml_wo; + + @Column(name = "lastupdate_wo") + private LocalDateTime lastupdate_wo; + + @Column(name = "penugasan_khusus_laststatus", length = 50) + private String penugasan_khusus_laststatus; + +} \ No newline at end of file diff --git a/src/main/java/org/sadigit/entity/masterYantek/Shift.java b/src/main/java/org/sadigit/entity/masterYantek/Shift.java new file mode 100644 index 0000000..94eb0e6 --- /dev/null +++ b/src/main/java/org/sadigit/entity/masterYantek/Shift.java @@ -0,0 +1,53 @@ +package org.sadigit.entity.masterYantek; + +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; +import org.sadigit.entity.transaksi.MasterRegu; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "shift", schema = "apkt_transactional") +@Immutable +public class Shift extends PanacheEntityBase { + + @Id + @Column(name = "id", nullable = false) + private Long id; + + @ManyToOne + @JoinColumn(name = "id_regu", nullable = false) + private MasterRegu masterRegu; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "kode", nullable = false) + private String kode; + + @Column(name = "waktu_mulai", nullable = false) + private LocalDateTime waktu_mulai; + + @Column(name = "waktu_selesai", nullable = false) + private LocalDateTime waktu_selesai; + + @Column(name = "aktif", nullable = false) + private Boolean aktif; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; +} diff --git a/src/main/java/org/sadigit/entity/masterYantek/ShiftPetugas.java b/src/main/java/org/sadigit/entity/masterYantek/ShiftPetugas.java new file mode 100644 index 0000000..6bcdc3d --- /dev/null +++ b/src/main/java/org/sadigit/entity/masterYantek/ShiftPetugas.java @@ -0,0 +1,41 @@ +package org.sadigit.entity.masterYantek; + +import java.time.LocalDateTime; + +import org.sadigit.entity.AppUser; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; + +public class ShiftPetugas extends PanacheEntity { + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "userid", nullable = false) + private Long userId; + + @Column(name = "username", nullable = false) + private String username; + + @ManyToOne + @JoinColumn(name = "id_shift", nullable = false) + private Shift shift; + + @ManyToOne + @JoinColumn(name = "id_petugas", referencedColumnName = "user_id", nullable = false) + private AppUser petugas; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/masterYantek/Unit.java b/src/main/java/org/sadigit/entity/masterYantek/Unit.java new file mode 100644 index 0000000..ca9f9c4 --- /dev/null +++ b/src/main/java/org/sadigit/entity/masterYantek/Unit.java @@ -0,0 +1,91 @@ +package org.sadigit.entity.masterYantek; + +import java.time.LocalDate; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "unit", schema = "apkt_transactional") +@Immutable +public class Unit extends PanacheEntityBase { + @Id + @Column(name = "unitid") + private Long unitid; + + @Column(name = "unitcode", length = 10) + private String unitcode; + + @Column(name = "unitname", length = 100) + private String unitname; + + @Column(name = "unittypeid") + private Double unittypeid; + + @Column(name = "unitparent") + private Double unitparent; + + @Column(name = "address", length = 250) + private String address; + + @Column(name = "city", length = 50) + private String city; + + @Column(name = "zip", length = 5) + private String zip; + + @Column(name = "phone", length = 20) + private String phone; + + @Column(name = "mobile", length = 20) + private String mobile; + + @Column(name = "fax", length = 20) + private String fax; + + @Column(name = "email", length = 100) + private String email; + + @Column(name = "ipaddress", length = 15) + private String ipaddress; + + @Column(name = "createdate") + private LocalDate createdate; + + @Column(name = "createby") + private Double createby; + + @Column(name = "updatedate") + private LocalDate updatedate; + + @Column(name = "updateby") + private Double update_by; + + @Column(name = "isactive", length = 1) + private String isactive; + + @Column(name = "coordinator") + private Double coordinator; + + @Column(name = "supervisor") + private Double supervisor; + + @Column(name = "assistantmanager") + private Double assistantmanager; + + @Column(name = "assmanphone", length = 20) + private String assmanphone; + + @Column(name = "vehiclecolor", length = 10) + private String vehiclecolor; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/Cuaca.java b/src/main/java/org/sadigit/entity/referensi/Cuaca.java new file mode 100644 index 0000000..53b9deb --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Cuaca.java @@ -0,0 +1,38 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "cuaca", schema = "apkt_transactional") +@Immutable +public class Cuaca extends PanacheEntity { + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/Dampak.java b/src/main/java/org/sadigit/entity/referensi/Dampak.java new file mode 100644 index 0000000..241f635 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Dampak.java @@ -0,0 +1,39 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "dampak", schema = "apkt_transactional") +@Immutable + +public class Dampak extends PanacheEntity { + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/Equipment.java b/src/main/java/org/sadigit/entity/referensi/Equipment.java new file mode 100644 index 0000000..3cbd94d --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Equipment.java @@ -0,0 +1,40 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "equipment", schema = "apkt_transactional") +@Immutable + +public class Equipment extends PanacheEntity { + + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/Fasilitas.java b/src/main/java/org/sadigit/entity/referensi/Fasilitas.java new file mode 100644 index 0000000..7668192 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Fasilitas.java @@ -0,0 +1,46 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "fasilitas", schema = "apkt_transactional") +@Immutable + +public class Fasilitas extends PanacheEntity { + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + + @JoinColumn(name = "id_kelompok", referencedColumnName = "id", nullable = false) + @ManyToOne(fetch = FetchType.EAGER, optional = false, cascade = CascadeType.ALL) + private Kelompok Kelompok; +} diff --git a/src/main/java/org/sadigit/entity/referensi/GrupPenyebabGangguan.java b/src/main/java/org/sadigit/entity/referensi/GrupPenyebabGangguan.java new file mode 100644 index 0000000..86fc35f --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/GrupPenyebabGangguan.java @@ -0,0 +1,41 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDate; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "grup_penyebab_gangguan", schema = "apkt_transactional") +@Immutable + +public class GrupPenyebabGangguan extends PanacheEntityBase { + @Id + + @Column(name = "id") + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "created_date") + private LocalDate created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDate updated_date; + + @Column(name = "updated_by") + private Long updated_by; +} diff --git a/src/main/java/org/sadigit/entity/referensi/Kabupaten.java b/src/main/java/org/sadigit/entity/referensi/Kabupaten.java new file mode 100644 index 0000000..d150447 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Kabupaten.java @@ -0,0 +1,38 @@ +package org.sadigit.entity.referensi; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import java.time.LocalDate; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "kota_kabupaten", schema = "apkt_transactional") +public class Kabupaten extends PanacheEntity { + @Column(name = "id") + private Long id; + + @Column(name = "id_provinsi") + private Long id_provinsi; + + @Column(name = "nama") + private String nama; + + @Column(name = "created_date") + private LocalDate created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDate updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/Kecamatan.java b/src/main/java/org/sadigit/entity/referensi/Kecamatan.java new file mode 100644 index 0000000..a8c3430 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Kecamatan.java @@ -0,0 +1,38 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDate; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "kecamatan", schema = "apkt_transactional") +public class Kecamatan extends PanacheEntity { + @Column(name = "id") + private Long id; + + @Column(name = "id_kota_kabupaten") + private Long id_kota_kabupaten; + + @Column(name = "nama") + private String nama; + + @Column(name = "created_date") + private LocalDate created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDate updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/Kelompok.java b/src/main/java/org/sadigit/entity/referensi/Kelompok.java new file mode 100644 index 0000000..0caa649 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Kelompok.java @@ -0,0 +1,46 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "kelompok", schema = "apkt_transactional") +@Immutable +public class Kelompok extends PanacheEntity { + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + + @JoinColumn(name = "id_kelompok", referencedColumnName = "id", nullable = false) + @ManyToOne(fetch = FetchType.EAGER, optional = false, cascade = CascadeType.ALL) + private KelompokUtama kelompokUtama; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/KelompokUtama.java b/src/main/java/org/sadigit/entity/referensi/KelompokUtama.java new file mode 100644 index 0000000..b21b96d --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/KelompokUtama.java @@ -0,0 +1,41 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "kelompok_utama", schema = "apkt_transactional") +@Immutable + +public class KelompokUtama extends PanacheEntityBase { + @Id + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/Kelurahan.java b/src/main/java/org/sadigit/entity/referensi/Kelurahan.java new file mode 100644 index 0000000..231b2d2 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Kelurahan.java @@ -0,0 +1,40 @@ +package org.sadigit.entity.referensi; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; + +import java.time.LocalDate; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "kelurahan", schema = "apkt_transactional") + +public class Kelurahan extends PanacheEntity { + @Column(name = "id") + private Long id; + + @Column(name = "id_kecamatan") + private Long id_kecamatan; + + @Column(name = "nama") + private String nama; + + @Column(name = "created_date") + private LocalDate created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDate updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/MasterKelurahan.java b/src/main/java/org/sadigit/entity/referensi/MasterKelurahan.java new file mode 100644 index 0000000..c3651c9 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/MasterKelurahan.java @@ -0,0 +1,58 @@ +package org.sadigit.entity.referensi; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; + +@Entity +@Setter +@Getter +@Table(name = "master_kelurahan", schema = "apkt_transactional") +@Immutable +public class MasterKelurahan extends PanacheEntityBase implements Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id_kelurahan", nullable = false) + private Long id_kelurahan; + + @Column(name = "nama_kelurahan", nullable = false) + private String nama_kelurahan; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + + @Column(name = "id_kecamatan") + private Long id_kecamatan; + + @Column(name = "nama_kecamatan") + private String nama_kecamatan; + + @Column(name = "id_kota") + private Long id_kota; + + @Column(name = "nama_kota") + private String nama_kota; + + @Column(name = "id_provinsi") + private Long id_provinsi; + + @Column(name = "nama_provinsi") + private String nama_provinsi; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/Material.java b/src/main/java/org/sadigit/entity/referensi/Material.java new file mode 100644 index 0000000..6901495 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Material.java @@ -0,0 +1,52 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDateTime; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "material", schema = "apkt_transactional") +public class Material extends PanacheEntity { + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + @Column(name = "stok") + private Long stok; + + @Column(name = "stok_os") + private Long stok_os; + + @Column(name = "satuan") + private String satuan; + @Column(name = "merk") + private String merk; + @Column(name = "tahun_manufaktur") + private String tahun_manufaktur; + + @ManyToOne + @JoinColumn(name = "id_posko", referencedColumnName = "id") + private Posko posko; +} diff --git a/src/main/java/org/sadigit/entity/referensi/Media.java b/src/main/java/org/sadigit/entity/referensi/Media.java new file mode 100644 index 0000000..fafef2b --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Media.java @@ -0,0 +1,26 @@ +package org.sadigit.entity.referensi; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "media", schema = "apkt_transactional") +@Immutable +public class Media extends PanacheEntityBase { + @Id + @Column(name = "kode", nullable = false) + private Long kode; + + @Column(name = "keterangan", length = 100) + private String keterangan; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/MerkMeter.java b/src/main/java/org/sadigit/entity/referensi/MerkMeter.java new file mode 100644 index 0000000..ae2e669 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/MerkMeter.java @@ -0,0 +1,39 @@ +package org.sadigit.entity.referensi; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "master_merk_meter", schema = "apkt_transactional") +public class MerkMeter extends PanacheEntityBase { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "merk_meter", length = 50) + private String merk_meter; + + @Column(name = "keterangan", length = 500) + private String keterangan; + + @Column(name = "flag", length = 1) + private Character flag; + + @Column(name = "tipe_meter", length = 50) + private String tipe_meter; + + @Column(name = "no_pabrik") + private Long no_pabrik; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/PenyebabGangguan.java b/src/main/java/org/sadigit/entity/referensi/PenyebabGangguan.java new file mode 100644 index 0000000..e4176ee --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/PenyebabGangguan.java @@ -0,0 +1,35 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDateTime; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "penyebab_gangguan", schema = "apkt_transactional") +public class PenyebabGangguan extends PanacheEntity { + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/Posko.java b/src/main/java/org/sadigit/entity/referensi/Posko.java new file mode 100644 index 0000000..983a1e7 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Posko.java @@ -0,0 +1,73 @@ +package org.sadigit.entity.referensi; + +import lombok.Getter; +import lombok.Setter; + +import java.sql.Timestamp; +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import io.quarkus.runtime.annotations.RegisterForReflection; +import jakarta.persistence.*; + +@Entity +@Getter +@Setter +@Immutable +@Table(name = "master_posko", schema = "apkt_transactional") +@RegisterForReflection +public class Posko extends PanacheEntity { + + @Column(name = "id") + private Long id; + + @JoinColumn(name = "id_ulp", referencedColumnName = "id", nullable = false) + @ManyToOne(fetch = FetchType.EAGER, optional = false, cascade = CascadeType.ALL) + private Ulp ulp; + + @Column(name = "nama") + private String nama; + + @Column(name = "created_date") + private Timestamp createdDate; + + @Column(name = "created_by") + private Long createdBy; + + @Column(name = "updated_date") + private Timestamp updatedDate; + + @Column(name = "updated_by") + private Long updatedBy; + + @Column(name = "kode") + private String kode; + + @Column(name = "alamat") + private String alamat; + + @Column(name = "city") + private String city; + + @Column(name = "zip") + private String zip; + + @Column(name = "telepon") + private String telepon; + + @Column(name = "mobile") + private String mobile; + + @Column(name = "fax") + private String fax; + + @Column(name = "email") + private String email; + + @Column(name = "ipaddress") + private String ipAddress; + + @Column(name = "aktif", nullable = true) + private Boolean aktif; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/Prioritas.java b/src/main/java/org/sadigit/entity/referensi/Prioritas.java new file mode 100644 index 0000000..ed02632 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Prioritas.java @@ -0,0 +1,35 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDateTime; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "prioritas", schema = "apkt_transactional") +public class Prioritas extends PanacheEntity { + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/Provinsi.java b/src/main/java/org/sadigit/entity/referensi/Provinsi.java new file mode 100644 index 0000000..6fc8cea --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Provinsi.java @@ -0,0 +1,37 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDate; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "provinsi", schema = "apkt_transactional") +public class Provinsi extends PanacheEntity { + + @Column(name = "id") + private Long id; + + @Column(name = "nama_provinsi") + private String nama_provinsi; + + @Column(name = "created_date") + private LocalDate created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDate updated_date; + + @Column(name = "updated_by") + private Long updated_by; + + // Constructors, getters, setters, etc. +} diff --git a/src/main/java/org/sadigit/entity/referensi/Pulau.java b/src/main/java/org/sadigit/entity/referensi/Pulau.java new file mode 100644 index 0000000..a21194b --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Pulau.java @@ -0,0 +1,42 @@ +package org.sadigit.entity.referensi; + +import lombok.Getter; +import java.time.LocalDateTime; +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; + +@Entity +@Getter +@Immutable +@Table(name = "master_pulau", schema = "apkt_transactional") +public class Pulau extends PanacheEntity { + + @Column(name = "id") + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "created_date", nullable = false) + private LocalDateTime createdDate; + + @Column(name = "created_by", nullable = false) + private Long createdBy; + + @Column(name = "updated_date") + private LocalDateTime updatedDate; + + @Column(name = "updated_by") + private Long updatedBy; + + @Column(name = "kode", nullable = false) + private String kode; + + @Column(name = "aktif", nullable = false) + private Boolean aktif; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/RatingPln.java b/src/main/java/org/sadigit/entity/referensi/RatingPln.java new file mode 100644 index 0000000..232e6f6 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/RatingPln.java @@ -0,0 +1,36 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDateTime; +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "trm_ratingpln", schema = "apkt_transactional") +public class RatingPln extends PanacheEntityBase { + + @Id + @Column(name = "no_laporan", length = 20, nullable = false) + public String noLaporan; + + @Column(name = "nilai", length = 5) + public String nilai; + + @Column(name = "status_nilai") + public Long statusNilai; + + @Column(name = "createdate") + public LocalDateTime createDate; + + @Column(name = "updatedate") + public LocalDateTime updateDate; + + @Column(name = "keterangan", length = 500) + public String keterangan; +} diff --git a/src/main/java/org/sadigit/entity/referensi/Regional.java b/src/main/java/org/sadigit/entity/referensi/Regional.java new file mode 100644 index 0000000..d432537 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Regional.java @@ -0,0 +1,38 @@ +package org.sadigit.entity.referensi; + +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; + +@Entity +@Getter +@Setter +@Immutable +@Table(name = "master_regional", schema = "apkt_transactional") +public class Regional extends PanacheEntity { + + private Long id; + + @Column(name = "nama") + private String nama; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/SubFasilitas.java b/src/main/java/org/sadigit/entity/referensi/SubFasilitas.java new file mode 100644 index 0000000..376e0c5 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/SubFasilitas.java @@ -0,0 +1,42 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDateTime; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "sub_fasilitas", schema = "apkt_transactional") +public class SubFasilitas extends PanacheEntity { + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + + @JoinColumn(name = "id_fasilitas", referencedColumnName = "id", nullable = false) + @ManyToOne(fetch = FetchType.EAGER, optional = false, cascade = CascadeType.ALL) + private Fasilitas fasilitas; +} diff --git a/src/main/java/org/sadigit/entity/referensi/SubTipeKeluhan.java b/src/main/java/org/sadigit/entity/referensi/SubTipeKeluhan.java new file mode 100644 index 0000000..7c26de7 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/SubTipeKeluhan.java @@ -0,0 +1,39 @@ +package org.sadigit.entity.referensi; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "subissuetype", schema = "apkt_transactional") +public class SubTipeKeluhan extends PanacheEntityBase { + @Id + @Column(name = "subissuetypeid", nullable = false) + private Long subissuetypeid; + + @JoinColumn(name = "issuetypeid", referencedColumnName = "issuetypeid", insertable = false, updatable = false) + @ManyToOne(optional = false, fetch = FetchType.EAGER) + private TipeKeluhan tipeKeluhan; + + @Column(name = "subissuetypename", length = 200) + private String subissuetypename; + + @Column(name = "projectid") + private Long projectid; + + @Column(name = "isactive", length = 1) + private String isactive; + + @Column(name = "description", length = 4000) + private String description; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/SubTipePermasalahan.java b/src/main/java/org/sadigit/entity/referensi/SubTipePermasalahan.java new file mode 100644 index 0000000..f01b47d --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/SubTipePermasalahan.java @@ -0,0 +1,39 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDate; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Immutable +@Table(name = "sub_tipe_permasalahan", schema = "apkt_transactional") +public class SubTipePermasalahan extends PanacheEntity { + + @Column(name = "id") + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "created_date") + private LocalDate created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDate updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/SystemParameter.java b/src/main/java/org/sadigit/entity/referensi/SystemParameter.java new file mode 100644 index 0000000..b6ab299 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/SystemParameter.java @@ -0,0 +1,36 @@ +package org.sadigit.entity.referensi; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Table(name = "system_parameter", schema = "apkt_transactional") +public class SystemParameter extends PanacheEntityBase{ + + @Id + @Column(name = "id") + private Long id; + + @Column(name = "nama") + private String nama; + + @Column(name = "value") + private String value; + + @Column(name = "unit") + private String unit; + + @Column(name = "tipe") + private String tipe; +} diff --git a/src/main/java/org/sadigit/entity/referensi/TarifDaya.java b/src/main/java/org/sadigit/entity/referensi/TarifDaya.java new file mode 100644 index 0000000..fbd9333 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/TarifDaya.java @@ -0,0 +1,22 @@ +package org.sadigit.entity.referensi; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "tarif_daya", schema = "apkt_transactional") +public class TarifDaya extends PanacheEntity { + + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "tarif", nullable = false) + private String tarif; + + @Column(name = "daya", nullable = false) + private Long daya; +} diff --git a/src/main/java/org/sadigit/entity/referensi/Tindakan.java b/src/main/java/org/sadigit/entity/referensi/Tindakan.java new file mode 100644 index 0000000..f9baa75 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Tindakan.java @@ -0,0 +1,35 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDateTime; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "tindakan", schema = "apkt_transactional") +public class Tindakan extends PanacheEntity { + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/TipeKeluhan.java b/src/main/java/org/sadigit/entity/referensi/TipeKeluhan.java new file mode 100644 index 0000000..fbe7a21 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/TipeKeluhan.java @@ -0,0 +1,44 @@ +package org.sadigit.entity.referensi; + +import java.util.List; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "issuetype", schema = "apkt_transactional") +public class TipeKeluhan extends PanacheEntityBase { + @Id + @Column(name = "issuetypeid", nullable = false) + private Long issuetypeid; + + @Column(name = "issuetypecode", length = 10) + private String issuetypecode; + + @Column(name = "issuetypename", length = 200) + private String issuetypename; + + @Column(name = "projectid") + private Long projectid; + + @Column(name = "isactive", length = 1) + private String isactive; + + @Column(name = "description", length = 4000) + private String description; + + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) + @JoinColumn(name = "issuetypeid") + private List subTipeKeluhan; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/TipePermasalahan.java b/src/main/java/org/sadigit/entity/referensi/TipePermasalahan.java new file mode 100644 index 0000000..892d173 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/TipePermasalahan.java @@ -0,0 +1,48 @@ +package org.sadigit.entity.referensi; + +import java.time.LocalDate; +import java.util.List; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Immutable +@Table(name = "tipe_permasalahan", schema = "apkt_transactional") +public class TipePermasalahan extends PanacheEntity { + + @Column(name = "id") + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) + @JoinColumn(name = "id_tipe_permasalahan") + private List subTipePermasalahan; + + @Column(name = "created_date") + private LocalDate created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDate updated_date; + + @Column(name = "updated_by") + private Long updated_by; + + +} diff --git a/src/main/java/org/sadigit/entity/referensi/Uid.java b/src/main/java/org/sadigit/entity/referensi/Uid.java new file mode 100644 index 0000000..67548e0 --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Uid.java @@ -0,0 +1,107 @@ +package org.sadigit.entity.referensi; + +import lombok.Getter; +import lombok.Setter; + +import java.math.BigDecimal; +import java.time.Instant; +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; + +@Entity +@Getter +@Setter +@Immutable +@Table(name = "master_uid", schema = "apkt_transactional") +public class Uid extends PanacheEntity { + + @Column(name = "id") + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "kode", nullable = false) + private String kode; + + // @Column(name = "location") + // private String location; + + @Column(name = "created_date", nullable = false) + private Instant createdDate; + + @Column(name = "created_by", nullable = false) + private Long createdBy; + + @Column(name = "updated_date") + private Instant updatedDate; + + @Column(name = "updated_by") + private Long updatedBy; + + @Column(name = "alamat") + private String alamat; + + @Column(name = "telepon") + private String telepon; + + @Column(name = "aktif", nullable = false) + private Boolean aktif; + + @Column(name = "unittypeid") + private BigDecimal unittypeid; + + @Column(name = "unitparent") + private BigDecimal unitparent; + + @Column(name = "city", length = 50) + private String city; + + @Column(name = "zip", length = 5) + private String zip; + + @Column(name = "mobile", length = 20) + private String mobile; + + @Column(name = "fax", length = 20) + private String fax; + + @Column(name = "email", length = 100) + private String email; + + @Column(name = "ipaddress", length = 15) + private String ipaddress; + + @Column(name = "coordinator") + private BigDecimal coordinator; + + @Column(name = "supervisor") + private BigDecimal supervisor; + + @Column(name = "assistantmanager") + private BigDecimal assistantmanager; + + @Column(name = "assmanphone", length = 20) + private String assmanphone; + + @Column(name = "vehiclecolor", length = 10) + private String vehiclecolor; + + @Column(name = "id_pulau") + private Long idPulau; + + // @Column(name = "geom_point") + // private String geomPoint; + @ManyToOne(fetch = FetchType.EAGER, optional = true, cascade = CascadeType.ALL) + @JoinColumn(name = "id_regional", nullable = true) + private Regional regional; + +} diff --git a/src/main/java/org/sadigit/entity/referensi/Ulp.java b/src/main/java/org/sadigit/entity/referensi/Ulp.java new file mode 100644 index 0000000..9fe39ed --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Ulp.java @@ -0,0 +1,75 @@ +package org.sadigit.entity.referensi; + +import java.sql.Timestamp; +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import lombok.Getter; +import lombok.Setter; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; + +@Entity +@Getter +@Setter +@Immutable +@Table(name = "master_ulp", schema = "apkt_transactional") +public class Ulp extends PanacheEntity { + + @Column(name = "id") + private Long id; + + @Column(name = "id_up3") + private Long idUp3; + + @Column(name = "nama") + private String nama; + + @Column(name = "kode", nullable = false) + private String kode; + + @Column(name = "alamat") + private String alamat; + + @Column(name = "created_date") + private Timestamp created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private Timestamp updated_date; + + @Column(name = "updated_by") + private Long updated_by; + + @Column(name = "telepon") + private String telepon; + + @Column(name = "aktif", nullable = true) + private Boolean aktif; + + @Column(name = "city") + private String city; + + @Column(name = "zip") + private String zip; + + @Column(name = "mobile") + private String mobile; + + @Column(name = "fax") + private String fax; + + @Column(name = "email") + private String email; + + @ManyToOne(fetch = FetchType.EAGER, optional = false, cascade = CascadeType.ALL) + @JoinColumn(name = "id_up3", referencedColumnName = "id", insertable = false, updatable = false, nullable = true) + private Up3 up3; +} diff --git a/src/main/java/org/sadigit/entity/referensi/Up3.java b/src/main/java/org/sadigit/entity/referensi/Up3.java new file mode 100644 index 0000000..440678b --- /dev/null +++ b/src/main/java/org/sadigit/entity/referensi/Up3.java @@ -0,0 +1,83 @@ +package org.sadigit.entity.referensi; + +import lombok.Getter; +import lombok.Setter; + +import java.time.Instant; +import org.hibernate.annotations.Immutable; +import org.locationtech.jts.geom.Geometry; +import org.sadigit.adapter.GeometryAdapter; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.json.bind.annotation.JsonbTypeAdapter; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; + +@Entity +@Getter +@Setter +@Immutable +@Table(name = "master_up3", schema = "apkt_transactional") +public class Up3 extends PanacheEntityBase { + @Id + @Column(name = "id") + public Long id; + + @Column(name = "id_uid", nullable = false) + public Long idUid; + + @Column(name = "nama", nullable = false) + public String nama; + + @Column(name = "kode", nullable = false) + public String kode; + + @Column(name = "alamat", nullable = false) + public String alamat; + + @Column(name = "location") + public String location; + + @Column(name = "created_date", nullable = false) + public Instant createdDate; + + @Column(name = "created_by", nullable = false) + public Long createdBy; + + @Column(name = "updated_date") + public Instant updatedDate; + + @Column(name = "updated_by") + public Long updatedBy; + + @Column(name = "telepon", nullable = false) + public String telepon; + + @Column(name = "aktif", nullable = false) + public Boolean aktif; + + @JsonbTypeAdapter(GeometryAdapter.class) + @Column(name = "geom_point", columnDefinition = "geometry(Point,4326)") + private Geometry geomPoint; + @Column(name = "city") + public String city; + + @Column(name = "zip") + public String zip; + + @Column(name = "fax") + public String fax; + + @Column(name = "email") + public String email; + + @ManyToOne(fetch = FetchType.EAGER, optional = false, cascade = CascadeType.ALL) + @JoinColumn(name = "id_uid", referencedColumnName = "id", insertable = false, updatable = false) + public Uid uid; +} diff --git a/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterFeeder.java b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterFeeder.java new file mode 100644 index 0000000..eca78d0 --- /dev/null +++ b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterFeeder.java @@ -0,0 +1,58 @@ +package org.sadigit.entity.saidisaifi.masterJaringan; + +import java.sql.Timestamp; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "master_feeder", schema = "apkt_transactional") +@Immutable +public class MasterFeeder extends PanacheEntity { + @Column(name = "id") + private Long id; + + @Column(name = "id_gardu_induk", nullable = false) + private Long idGarduInduk; + + @Column(name = "rayon", nullable = false) + private String rayon; + + @Column(name = "no_urut", nullable = false) + private String noUrut; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "kode", nullable = false) + private String kode; + + @Column(name = "no_tiang", nullable = false) + private String noTiang; + + @Column(name = "file_sld", nullable = false) + private String fileSld; + + @Column(name = "panjang_kms", nullable = false) + private String panjangKms; + + @Column(name = "created_date", nullable = false) + private Timestamp createdDate; + + @Column(name = "created_by", nullable = false) + private Long createdBy; + + @Column(name = "updated_date") + private Timestamp updatedDate; + + @Column(name = "updated_by") + private Long updatedBy; +} diff --git a/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterGarduDistribusi.java b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterGarduDistribusi.java new file mode 100644 index 0000000..e920fc7 --- /dev/null +++ b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterGarduDistribusi.java @@ -0,0 +1,95 @@ +package org.sadigit.entity.saidisaifi.masterJaringan; + +import java.sql.Timestamp; + +import org.hibernate.annotations.Immutable; +import org.locationtech.jts.geom.Geometry; +import org.sadigit.adapter.GeometryAdapter; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.json.bind.annotation.JsonbTypeAdapter; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "master_gardu_distribusi", schema = "apkt_transactional") +@Immutable +public class MasterGarduDistribusi extends PanacheEntity { + @Column(name = "id") + private Long id; + + @Column(name = "id_feeder", nullable = false) + private Long idFeeder; + + @Column(name = "kode", nullable = false) + private String kode; + + @Column(name = "nomor", nullable = false) + private String nomor; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "alamat", nullable = false) + private String alamat; + + @Column(name = "area_layanan", nullable = false) + private String areaLayanan; + + @Column(name = "phasa", nullable = false) + private String phasa; + + @Column(name = "jumlah_jurusan", nullable = false) + private String jumlahJurusan; + + @Column(name = "jumlah_daya", nullable = false) + private String jumlahDaya; + + @Column(name = "jumlah_pelanggan", nullable = false) + private String jumlahPelanggan; + + @Column(name = "created_date") + private Timestamp createdDate; + + @Column(name = "created_by") + private Long createdBy; + + @Column(name = "updated_date") + private Timestamp updatedDate; + + @Column(name = "updated_by") + private Long updatedBy; + + @JsonbTypeAdapter(GeometryAdapter.class) + @Column(name = "point", columnDefinition = "geometry(Point,4326)") + private Geometry point; + + @Column(name = "status") + private String status; + + @Column(name = "no_tiang") + private String noTiang; + + @Column(name = "jenis") + private String jenis; + + @Column(name = "konstruksi") + private String konstruksi; + + @Column(name = "telepon") + private String telepon; + + @Column(name = "kapasitas") + private Long kapasitas; + + @Column(name = "sisipan") + private Boolean sisipan; + + @Column(name = "deskripsi") + private String deskripsi; +} diff --git a/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterGarduInduk.java b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterGarduInduk.java new file mode 100644 index 0000000..f183db9 --- /dev/null +++ b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterGarduInduk.java @@ -0,0 +1,73 @@ +package org.sadigit.entity.saidisaifi.masterJaringan; + +import java.sql.Timestamp; + +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.Immutable; +import org.hibernate.annotations.UpdateTimestamp; +import org.locationtech.jts.geom.Geometry; +import org.sadigit.adapter.GeometryAdapter; +import org.sadigit.entity.referensi.Up3; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.json.bind.annotation.JsonbTypeAdapter; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +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 +@Setter +@Getter +@Table(name = "master_gardu_induk", schema = "apkt_transactional") +@Immutable +public class MasterGarduInduk extends PanacheEntityBase { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @ManyToOne(fetch = FetchType.EAGER, optional = false, cascade = CascadeType.ALL) + @JoinColumn(name = "id_up3", referencedColumnName = "id") + private Up3 up3; + + private String kode; + + private String area; + + private String nama; + + private String alamat; + + @JsonbTypeAdapter(GeometryAdapter.class) + @Column(name = "lokasi", columnDefinition = "geometry(Point,4326)") + private Geometry lokasi; + + @CreationTimestamp + @Column(name = "created_date") + private Timestamp created_date; + + @Column(name = "created_by") + private Long created_by; + + @UpdateTimestamp + @Column(name = "updated_date") + private Timestamp updated_date; + + @Column(name = "updated_by") + private Long updated_by; + + @Column(name = "status") + private String status; + + +} diff --git a/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterGarduIndukTransaksi.java b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterGarduIndukTransaksi.java new file mode 100644 index 0000000..4cddb96 --- /dev/null +++ b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterGarduIndukTransaksi.java @@ -0,0 +1,54 @@ +package org.sadigit.entity.saidisaifi.masterJaringan; + +import java.time.LocalDateTime; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +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 +@Setter +@Getter +@Table(name = "master_gardu_induk_transaksi", schema = "apkt_transactional") +public class MasterGarduIndukTransaksi extends PanacheEntityBase { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_master_gardu_induk", referencedColumnName = "id") + private MasterGarduInduk garduInduk; + + @Column(name = "status") + private String status; + + @Column(name = "no_laporan") + private String no_laporan; + + @Column(name = "keterangan") + private String keterangan; + + @Column(name = "waktu_catat") + private LocalDateTime waktu_catat; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "is_read") + private Boolean is_read; + +} diff --git a/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterJaringan.java b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterJaringan.java new file mode 100644 index 0000000..4bb5996 --- /dev/null +++ b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterJaringan.java @@ -0,0 +1,280 @@ +package org.sadigit.entity.saidisaifi.masterJaringan; + +import java.time.LocalDate; +import org.hibernate.annotations.Immutable; +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "ss_jaringan", schema = "apkt_transactional") +@Immutable +public class MasterJaringan extends PanacheEntityBase { + + @Id + @Column(name = "kode_asset", length = 100, nullable = false) + public String kodeAsset; + + @Column(name = "parent_asset", length = 100) + public String parentAsset; + + @Column(name = "jenis_asset", length = 50) + public String jenisAsset; + + @Column(name = "levelid") + public Long levelId; + + @Column(name = "nama", length = 100) + public String nama; + + @Column(name = "alamat", length = 200) + public String alamat; + + @Column(name = "longitude", length = 50) + public String longitude; + + @Column(name = "latitude", length = 50) + public String latitude; + + @Column(name = "kva") + public Long kva; + + @Column(name = "jml_plgn") + public Long jmlPlgn; + + @Column(name = "asumsi") + public Long asumsi; + + @Column(name = "status_nyala") + public Long statusNyala; + + @Column(name = "phase") + public Long phase; + + @Column(name = "beban_s", precision = 22, scale = 2) + public Long bebanS; + + @Column(name = "beban_r", precision = 22, scale = 2) + public Long bebanR; + + @Column(name = "beban_t", precision = 22, scale = 2) + public Long bebanT; + + @Column(name = "beban_srt", precision = 22, scale = 2) + public Long bebanSrt; + + @Column(name = "beban_x1", precision = 22, scale = 2) + public Long bebanX1; + + @Column(name = "beban_x2", precision = 22, scale = 2) + public Long bebanX2; + + @Column(name = "jurusan_beban", length = 5) + public String jurusanBeban; + + @Column(name = "jenis_komponen", length = 50) + public String jenisKomponen; + + @Column(name = "keterangan", length = 200) + public String keterangan; + + @Column(name = "distribusi", length = 6) + public String distribusi; + + @Column(name = "area", length = 6) + public String area; + + @Column(name = "unit", length = 6) + public String unit; + + @Column(name = "createdate") + public LocalDate createDate; + + @Column(name = "createby", length = 50) + public String createBy; + + @Column(name = "updatedate") + public LocalDate updateDate; + + @Column(name = "updateby", length = 50) + public String updateBy; + + @Column(name = "kode_gi", length = 10) + public String kodeGi; + + @Column(name = "no_tiang", length = 400) + public String noTiang; + + @Column(name = "kode_feeder", length = 400) + public String kodeFeeder; + + @Column(name = "type_asset") + public Long typeAsset; + + @Column(name = "kode_zone", length = 400) + public String kodeZone; + + @Column(name = "kode_section", length = 400) + public String kodeSection; + + @Column(name = "kode_segment", length = 400) + public String kodeSegment; + + @Column(name = "kode_lateral", length = 400) + public String kodeLateral; + + @Column(name = "no_cabang_section", length = 400) + public String noCabangSection; + + @Column(name = "no_cabang_segment", length = 400) + public String noCabangSegment; + + @Column(name = "kode_trafo", length = 400) + public String kodeTrafo; + + @Column(name = "kode_gd", length = 400) + public String kodeGd; + + @Column(name = "jenis_trafo", length = 6) + public String jenisTrafo; + + @Column(name = "jenis_pemakaian", length = 50) + public String jenisPemakaian; + + @Column(name = "coverage", length = 400) + public String coverage; + + @Column(name = "jml_jurusan") + public Long jmlJurusan; + + @Column(name = "merk", length = 200) + public String merk; + + @Column(name = "no_seri", length = 400) + public String noSeri; + + @Column(name = "thn_buat", length = 4) + public String thnBuat; + + @Column(name = "thn_pasang", length = 4) + public String thnPasang; + + @Column(name = "no_urut", length = 400) + public String noUrut; + + @Column(name = "start_switch", length = 400) + public String startSwitch; + + @Column(name = "finish_switch1", length = 400) + public String finishSwitch1; + + @Column(name = "finish_switch2", length = 400) + public String finishSwitch2; + + @Column(name = "finish_switch3", length = 400) + public String finishSwitch3; + + @Column(name = "finish_switch4", length = 400) + public String finishSwitch4; + + @Column(name = "type_parent") + public Long typeParent; + + @Column(name = "kode_jaringan", length = 400) + public String kodeJaringan; + + @Column(name = "kode_cabsection", length = 200) + public String kodeCabSection; + + @Column(name = "kode_cabsegment", length = 200) + public String kodeCabSegment; + + @Column(name = "kode_subsegment", length = 200) + public String kodeSubSegment; + + @Column(name = "kode_subsubsegment", length = 200) + public String kodeSubSubSegment; + + @Column(name = "kode_sublateral", length = 200) + public String kodeSubLateral; + + @Column(name = "kode_subsublateral", length = 200) + public String kodeSubSubLateral; + + @Column(name = "jml_trafo") + public Long jmlTrafo; + + @Column(name = "fuse") + public Long fuse; + + @Column(name = "kode_jurusan", length = 200) + public String kodeJurusan; + + @Column(name = "aktif") + public Long aktif; + + @Column(name = "subtypeasset") + public Long subTypeAsset; + + @Column(name = "finish_switch5", length = 45) + public String finishSwitch5; + + @Column(name = "finish_switch6", length = 45) + public String finishSwitch6; + + @Column(name = "finish_switch7", length = 45) + public String finishSwitch7; + + @Column(name = "finish_switch8", length = 45) + public String finishSwitch8; + + @Column(name = "finish_switch9", length = 45) + public String finishSwitch9; + + @Column(name = "finish_switch10", length = 45) + public String finishSwitch10; + + @Column(name = "finish_switch11", length = 45) + public String finishSwitch11; + + @Column(name = "finish_switch12", length = 45) + public String finishSwitch12; + + @Column(name = "finish_switch13", length = 45) + public String finishSwitch13; + + @Column(name = "finish_switch14", length = 45) + public String finishSwitch14; + + @Column(name = "finish_switch15", length = 45) + public String finishSwitch15; + + @Column(name = "finish_switch16", length = 45) + public String finishSwitch16; + + @Column(name = "unit2", length = 5) + public String unit2; + + @Column(name = "jml_plgn2") + public Long jmlPlgn2; + + @Column(name = "express", length = 10) + public String express; + + @Transient + @Column(name = "rowid", nullable = false) + public Long rowId; + + @Column(name = "geom_point", columnDefinition = "GEOMETRY(POINT,4326)") + public String geomPoint; + + @Column(name = "id_up3") + public Long idUp3; +} diff --git a/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterLateral.java b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterLateral.java new file mode 100644 index 0000000..7549c4c --- /dev/null +++ b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterLateral.java @@ -0,0 +1,60 @@ +package org.sadigit.entity.saidisaifi.masterJaringan; + +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; +import org.locationtech.jts.geom.Geometry; +import org.sadigit.adapter.GeometryAdapter; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.json.bind.annotation.JsonbTypeAdapter; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "master_lateral", schema = "apkt_transactional") +@Immutable +public class MasterLateral extends PanacheEntity { + @Column(name = "id", nullable = false) + private Long id; + + @ManyToOne + @JoinColumn(name = "id_segment", nullable = false) + private MasterSegment masterSegment; + + @Column(name = "kode", nullable = false) + private String kode; + + @Column(name = "rayon", nullable = false) + private String rayon; + + @Column(name = "keterangan") + private String keterangan; + + @Column(name = "alamat", nullable = false) + private String alamat; + + @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; + + @JsonbTypeAdapter(GeometryAdapter.class) + @Column(name = "point", columnDefinition = "geometry(Point,4326)") + private Geometry point; + +} diff --git a/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterSection.java b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterSection.java new file mode 100644 index 0000000..23e1c8f --- /dev/null +++ b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterSection.java @@ -0,0 +1,61 @@ +package org.sadigit.entity.saidisaifi.masterJaringan; + +import java.sql.Timestamp; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "master_section", schema = "apkt_transactional") +@Immutable +public class MasterSection extends PanacheEntity{ + private Long id; + + @Column(name = "id_zona", nullable = false) + private Long idZona; + + @Column(name = "kode", nullable = false) + private String kode; + + @Column(name = "no_tiang", nullable = false) + private String noTiang; + + @Column(name = "no_urut", nullable = false) + private String noUrut; + + @Column(name = "rayon", nullable = false) + private String rayon; + + @Column(name = "switch_awal", nullable = false) + private String switchAwal; + + @Column(name = "switch_akhir", nullable = false) + private String switchAkhir; + + @Column(name = "keterangan") + private String keterangan; + + @Column(name = "alamat", nullable = false) + private String alamat; + + @Column(name = "created_date") + private Timestamp createdDate; + + @Column(name = "created_by") + private Long createdBy; + + @Column(name = "updated_date") + private Timestamp updatedDate; + + @Column(name = "updated_by") + private Long updatedBy; + +} diff --git a/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterSegment.java b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterSegment.java new file mode 100644 index 0000000..5ca7bba --- /dev/null +++ b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterSegment.java @@ -0,0 +1,53 @@ +package org.sadigit.entity.saidisaifi.masterJaringan; + +import java.sql.Timestamp; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "master_segment", schema = "apkt_transactional") +@Immutable +public class MasterSegment extends PanacheEntity { + @Column(name = "id") + private Long id; + + @Column(name = "id_section", nullable = false) + private Long idSection; + + @Column(name = "kode", nullable = false) + private String kode; + + @Column(name = "no_urut", nullable = false) + private String noUrut; + + @Column(name = "rayon", nullable = false) + private String rayon; + + @Column(name = "keterangan") + private String keterangan; + + @Column(name = "alamat", nullable = false) + private String alamat; + + @Column(name = "created_date") + private Timestamp createdDate; + + @Column(name = "created_by") + private Long createdBy; + + @Column(name = "updated_date") + private Timestamp updatedDate; + + @Column(name = "updated_by") + private Long updatedBy; + +} diff --git a/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterSubLateral.java b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterSubLateral.java new file mode 100644 index 0000000..7d4b865 --- /dev/null +++ b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterSubLateral.java @@ -0,0 +1,53 @@ +package org.sadigit.entity.saidisaifi.masterJaringan; + +import java.sql.Timestamp; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "master_sub_lateral", schema = "apkt_transactional") +@Immutable +public class MasterSubLateral extends PanacheEntity { + @Column(name = "id") + private Long id; + + @Column(name = "id_gardu_distribusi", nullable = false) + private Long idGarduDistribusi; + + @Column(name = "kode", nullable = false) + private String kode; + + @Column(name = "no_tiang", nullable = false) + private String noTiang; + + @Column(name = "rayon", nullable = false) + private String rayon; + + @Column(name = "keterangan") + private String keterangan; + + @Column(name = "alamat", nullable = false) + private String alamat; + + @Column(name = "created_date") + private Timestamp createdDate; + + @Column(name = "created_by") + private Long createdBy; + + @Column(name = "updated_date") + private Timestamp updatedDate; + + @Column(name = "updated_by") + private Long updatedBy; + +} diff --git a/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterSwitch.java b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterSwitch.java new file mode 100644 index 0000000..86c405b --- /dev/null +++ b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterSwitch.java @@ -0,0 +1,52 @@ +package org.sadigit.entity.saidisaifi.masterJaringan; + +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; +import org.locationtech.jts.geom.Geometry; +import org.sadigit.adapter.GeometryAdapter; +import org.sadigit.entity.referensi.Ulp; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.json.bind.annotation.JsonbTypeAdapter; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "master_switch", schema = "apkt_transactional") +@Immutable +public class MasterSwitch extends PanacheEntity { + @Column(name = "id", nullable = false) + private Long id; + + @ManyToOne + @JoinColumn(name = "id_ulp", nullable = false) + private Ulp ulp; + + @Column(name = "tipe", nullable = false) + private String tipe; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updatedDate; + + @Column(name = "updated_by") + private Long updated_by; + + @JsonbTypeAdapter(GeometryAdapter.class) + @Column(name = "point", columnDefinition = "geometry(Point,4326)") + private Geometry point; + +} diff --git a/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterZona.java b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterZona.java new file mode 100644 index 0000000..4cf4158 --- /dev/null +++ b/src/main/java/org/sadigit/entity/saidisaifi/masterJaringan/MasterZona.java @@ -0,0 +1,58 @@ +package org.sadigit.entity.saidisaifi.masterJaringan; + +import java.sql.Timestamp; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "master_zona", schema = "apkt_transactional") +@Immutable +public class MasterZona extends PanacheEntity { + @Column(name = "id") + private Long id; + + @JoinColumn(name = "id_feeder", referencedColumnName = "id", nullable = false) + @ManyToOne(fetch = FetchType.EAGER, optional = false, cascade = CascadeType.ALL) + private MasterFeeder masterFeeder; + + @Column(name = "kode", nullable = false) + private String kode; + + @Column(name = "no_tiang", nullable = false) + private String noTiang; + + @Column(name = "rayon", nullable = false) + private String rayon; + + @Column(name = "keterangan") + private String keterangan; + + @Column(name = "alamat", nullable = false) + private String alamat; + + @Column(name = "created_date") + private Timestamp createdDate; + + @Column(name = "created_by") + private Long createdBy; + + @Column(name = "updated_date") + private Timestamp updatedDate; + + @Column(name = "updated_by") + private Long updatedBy; + +} diff --git a/src/main/java/org/sadigit/entity/transaksi/Gangguan.java b/src/main/java/org/sadigit/entity/transaksi/Gangguan.java new file mode 100644 index 0000000..8859749 --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/Gangguan.java @@ -0,0 +1,261 @@ +package org.sadigit.entity.transaksi; + +import java.time.LocalDateTime; +import java.util.List; + +import org.hibernate.annotations.Immutable; +import org.locationtech.jts.geom.Geometry; +import org.sadigit.adapter.GeometryAdapter; +import org.sadigit.entity.referensi.Cuaca; +import org.sadigit.entity.referensi.Dampak; +import org.sadigit.entity.referensi.Equipment; +import org.sadigit.entity.referensi.Fasilitas; +import org.sadigit.entity.referensi.GrupPenyebabGangguan; +import org.sadigit.entity.referensi.Kelompok; +import org.sadigit.entity.referensi.KelompokUtama; +import org.sadigit.entity.referensi.PenyebabGangguan; +import org.sadigit.entity.referensi.Posko; +import org.sadigit.entity.referensi.Prioritas; +import org.sadigit.entity.referensi.SubFasilitas; +import org.sadigit.entity.referensi.SubTipePermasalahan; +import org.sadigit.entity.referensi.TarifDaya; +import org.sadigit.entity.referensi.Tindakan; +import org.sadigit.entity.referensi.TipePermasalahan; +import org.sadigit.entity.referensi.MasterKelurahan; +import org.sadigit.entity.referensi.MerkMeter; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.json.bind.annotation.JsonbTypeAdapter; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "gangguan", schema = "apkt_transactional") +@Immutable +public class Gangguan extends PanacheEntityBase { + + @Id + @SequenceGenerator(name = "gangguan_seq", sequenceName = "apkt_transactional.gangguan_seq", allocationSize = 1) + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gangguan_seq") + @Column(name = "id") + private Long id; + @Column(name = "id_pelanggan_no_meter") + private Long id_pelanggan_no_meter; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_posko", foreignKey = @ForeignKey(name = "posko_fk")) + private Posko master_posko; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_tipe_permasalahan", foreignKey = @ForeignKey(name = "id_tipe_permasalahan")) + private TipePermasalahan tipePermasalahan; + + @Column(name = "alamat_pelanggan") + private String alamat_pelanggan; + + @Column(name = "nama_pelapor") + private String nama_pelapor; + + @Column(name = "telepon_pelapor") + private String telepon_pelapor; + + @Column(name = "hp_pelapor") + private String hp_pelapor; + + @Column(name = "fax_pelapor") + private String fax_pelapor; + + @Column(name = "email_pelapor") + private String email_pelapor; + + @Column(name = "alamat_pelapor") + private String alamat_pelapor; + + @Column(name = "media") + private String media; + + @Column(name = "waktu_padam") + private LocalDateTime waktu_padam; + + @Column(name = "is_konfirmasi") + private Boolean konfirmasi; + + @JsonbTypeAdapter(GeometryAdapter.class) + @Column(name = "lokasi", columnDefinition = "geometry(Point,4326)") + private Geometry lokasi; + + @Column(name = "no_laporan", unique = true) + private String no_laporan; + + @Column(name = "keterangan") + private String keterangan; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + + @Column(name = "status_akhir") + private String status_akhir; + + @Column(name = "tipe_wo") + private Long tipe_wo; + + @Column(name = "unit") + private Long unit; + + @Column(name = "eskalasi") + private Long eskalasi; + + @Column(name = "permasalahan") + private String permasalahan; + + @Column(name = "waktu_lapor") + private LocalDateTime waktu_lapor; + + // @Column(name = "id_regu") + // private Long id_regu; + + @Column(name = "waktu_penugasan") + private LocalDateTime waktu_penugasan; + + @Column(name = "waktu_perjalanan") + private LocalDateTime waktu_perjalanan; + + @Column(name = "waktu_pengerjaan") + private LocalDateTime waktu_pengerjaan; + + @Column(name = "waktu_nyala_sementara") + private LocalDateTime waktu_nyala_sementara; + + @Column(name = "waktu_nyala") + private LocalDateTime waktu_nyala; + + @Column(name = "waktu_batal") + private LocalDateTime waktu_batal; + + @Column(name = "waktu_selesai") + private LocalDateTime waktu_selesai; + + @Column(name = "alasan") + private String alasan; + + @Column(name = "patokan") + private String patokan; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_sub_tipe_permasalahan", foreignKey = @ForeignKey(name = "gangguan_fk")) + private SubTipePermasalahan sub_tipe_permasalahan; + + @Column(name = "tipe_gangguan") + private Long tipe_gangguan; + + @Column(name = "alasan_pembatalan") + private String alasan_pembatalan; + + @Column(name = "jarak") + private Long jarak; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_kelompok", foreignKey = @ForeignKey(name = "kelompok")) + private Kelompok kelompok; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_sub_fasilitas", foreignKey = @ForeignKey(name = "sub_fasilitas_fk")) + private SubFasilitas sub_fasilitas; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_equipment", foreignKey = @ForeignKey(name = "equipment_fk")) + private Equipment equipment; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_prioritas", foreignKey = @ForeignKey(name = "prioritas")) + private Prioritas prioritas; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_penyebab", foreignKey = @ForeignKey(name = "penyebab")) + private PenyebabGangguan penyebab; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_regu", referencedColumnName = "id") + private MasterRegu regu; + + @Column(name = "jumlah_pelanggan_termarking") + private Long jumlah_pelanggan_termarking; + + @Column(name = "jumlah_lapor") + private Long jumlah_lapor; + + @Column(name = "waktu_konfirmasi") + private LocalDateTime waktu_konfirmasi; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_fasilitas", foreignKey = @ForeignKey(name = "fasilitas")) + private Fasilitas fasilitas; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_kelompok_utama", foreignKey = @ForeignKey(name = "kelompok_utama")) + private KelompokUtama kelompok_utama; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_dampak", foreignKey = @ForeignKey(name = "dampak")) + private Dampak dampak; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_grup_penyebab_gangguan", foreignKey = @ForeignKey(name = "grup_penyebab_gangguan")) + private GrupPenyebabGangguan grup_penyebab_gangguan; + + @OneToMany(mappedBy = "gangguan", cascade = CascadeType.ALL, orphanRemoval = true) + private List gangguan_transaksi; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_kelurahan", referencedColumnName = "id_kelurahan", foreignKey = @ForeignKey(name = "kelurahan")) + private MasterKelurahan master_kelurahan; + // |id_tindakan|id_cuaca|fax|keterangan_lokasi|waktu_fax|nama_media|waktu_media|merk_meter + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_tindakan", referencedColumnName = "id", foreignKey = @ForeignKey(name = "tindakan")) + private Tindakan tindakan; + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_cuaca", referencedColumnName = "id", foreignKey = @ForeignKey(name = "cuaca")) + private Cuaca cuaca; + @Column(name = "fax") + private String fax; + @Column(name = "keterangan_lokasi") + private String keterangan_lokasi; + @Column(name = "waktu_fax") + private LocalDateTime waktu_fax; + @Column(name = "nama_media") + private String nama_media; + @Column(name = "waktu_media") + private LocalDateTime waktu_media; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_merk_meter", referencedColumnName = "id", foreignKey = @ForeignKey(name = "merk_meter")) + private MerkMeter master_merk_meter; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_tarif_daya", referencedColumnName = "id", foreignKey = @ForeignKey(name = "tarif_daya")) + private TarifDaya tarifDaya; + + @Column(name = "alasan_nyala_sementara") + private String alasan_nyala_sementara; + @Column(name = "penyebab_sementara") + private String penyebab_sementara; + private String tindakan_telah_dilakukan_nyala_sementara; + private String usulan_tindakan_selanjutnya; + private String tindakan_telah_dilakukan_nyala; + + private String penyebab_nyala; + private Long jumlah_pelanggan_padam; + private String ctt; +} diff --git a/src/main/java/org/sadigit/entity/transaksi/GangguanAlihPosko.java b/src/main/java/org/sadigit/entity/transaksi/GangguanAlihPosko.java new file mode 100644 index 0000000..0b2def8 --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/GangguanAlihPosko.java @@ -0,0 +1,52 @@ +package org.sadigit.entity.transaksi; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +import org.sadigit.entity.referensi.Posko; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; + +import java.time.LocalDate; + +@Entity +@Setter +@Getter +@Table(name = "gangguan_alih_posko", schema = "apkt_transactional") +public class GangguanAlihPosko extends PanacheEntityBase{ + + @Id + @SequenceGenerator(name = "gangguan_alih_posko_seq", sequenceName = "apkt_transactional.gangguan_alih_posko_seq", allocationSize = 1) + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gangguan_alih_posko_seq") + @Column(name = "id") + private Long id; + + @ManyToOne + @JoinColumn(name = "id_gangguan", nullable = false) + private Gangguan gangguan; + + @ManyToOne + @JoinColumn(name = "id_posko_lama", nullable = false) + private Posko poskoLama; + + @ManyToOne + @JoinColumn(name = "id_posko_baru", nullable = false) + private Posko poskoBaru; + + @Column(name = "waktu_alih_posko", nullable = false) + private LocalDate waktu_alih_posko; + + @Column(name = "created_date") + private LocalDate created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDate updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} \ No newline at end of file diff --git a/src/main/java/org/sadigit/entity/transaksi/GangguanFoto.java b/src/main/java/org/sadigit/entity/transaksi/GangguanFoto.java new file mode 100644 index 0000000..80b47a9 --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/GangguanFoto.java @@ -0,0 +1,40 @@ +package org.sadigit.entity.transaksi; + +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "gangguan_foto", schema = "apkt_transactional") +@Immutable +public class GangguanFoto extends PanacheEntity { + + @Column(name = "id") + private Long id; + @ManyToOne + @JoinColumn(name = "id_gangguan", nullable = false) + private Gangguan gangguan; + + @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(nullable = false) + private String foto; + +} diff --git a/src/main/java/org/sadigit/entity/transaksi/GangguanKodeCTT.java b/src/main/java/org/sadigit/entity/transaksi/GangguanKodeCTT.java new file mode 100644 index 0000000..cf3f944 --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/GangguanKodeCTT.java @@ -0,0 +1,88 @@ +package org.sadigit.entity.transaksi; + +import java.time.LocalDateTime; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +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.SequenceGenerator; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; +@Entity +@Setter +@Getter +@Table(name = "gangguan_kode_ctt", schema = "apkt_transactional") +public class GangguanKodeCTT extends PanacheEntityBase { + @Id + @SequenceGenerator(name = "gangguan_kode_ctt_seq", sequenceName = "apkt_transactional.gangguan_kode_ctt_seq", allocationSize = 1) + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gangguan_kode_ctt_seq") + @Column(name = "id", nullable = false) + private Long id; + + @ManyToOne + @JoinColumn(name = "id_gangguan", nullable = false) + private Gangguan gangguan; + + @Column(name = "kode_08") + private String kode_08; + + @Column(name = "kode_08_hasil") + private Long kode_08_hasil; + + @Column(name = "kode_70") + private String kode_70; + + @Column(name = "kode_70_hasil") + private Long kode_70_hasil; + + @Column(name = "kode_71") + private String kode_71; + + @Column(name = "kode_71_hasil") + private Long kode_71_hasil; + + @Column(name = "kode_41") + private String kode_41; + + @Column(name = "kode_41_hasil") + private Long kode_41_hasil; + + @Column(name = "kode_44") + private String kode_44; + + @Column(name = "kode_44_hasil") + private Long kode_44_hasil; + + @Column(name = "kode_45") + private String kode_45; + + @Column(name = "kode_45_hasil") + private Long kode_45_hasil; + + @Column(name = "kode_46") + private String kode_46; + + @Column(name = "kode_46_hasil") + private Long kode_46_hasil; + + @Column(name = "kode_37") + private String kode_37; + + @Column(name = "kode_37_hasil") + private Long kode_37_hasil; + + @Column(name = "kode_47") + private String kode_47; + + @Column(name = "kode_47_hasil") + private Long kode_47_hasil; + + @Column(name = "created_date") + private LocalDateTime created_date; +} diff --git a/src/main/java/org/sadigit/entity/transaksi/GangguanKompor.java b/src/main/java/org/sadigit/entity/transaksi/GangguanKompor.java new file mode 100644 index 0000000..59dcf4d --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/GangguanKompor.java @@ -0,0 +1,69 @@ +package org.sadigit.entity.transaksi; + +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "gangguan_kompor", schema = "apkt_transactional") +@Immutable +public class GangguanKompor { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", nullable = false, unique = true) + private Long id; + + @Column(name = "id_gangguan", nullable = false) + private Long id_gangguan; + + @Column(name = "st_cabut") + private Long st_cabut; + + @Column(name = "st_pasang") + private Long st_pasang; + + @Column(name = "kwh_pakai") + private Long kwh_pakai; + + @Column(name = "id_kompor") + private String id_kompor; + + @Column(name = "kondisi_lcd") + private String kondisi_lcd; + + @Column(name = "foto_lama") + private String foto_lama; + + @Column(name = "foto_baru") + private String foto_baru; + + @Column(name = "id_tipe_keluhan") + private Long id_tipe_keluhan; + + @Column(name = "id_sub_tipe_keluhan") + private Long id_sub_tipe_keluhan; + + @Column(name = "created_date") + private LocalDateTime createdDate; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/transaksi/GangguanLaporUlang.java b/src/main/java/org/sadigit/entity/transaksi/GangguanLaporUlang.java new file mode 100644 index 0000000..7adf54f --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/GangguanLaporUlang.java @@ -0,0 +1,52 @@ +package org.sadigit.entity.transaksi; + +import java.time.LocalDateTime; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "gangguan_lapor_ulang", schema = "apkt_transactional") +@NoArgsConstructor +@AllArgsConstructor +public class GangguanLaporUlang extends PanacheEntityBase{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", nullable = false) + private Long id; + + @ManyToOne + @JoinColumn(name = "id_gangguan", nullable = false) + private Gangguan gangguan; + + @Column(name = "no_laporan_referensi", nullable = false) + private String no_laporan_referensi; + + @Column(name = "no_laporan_baru", nullable = false) + private String no_laporan_baru; + + @Column(name = "laporan_ke", nullable = false) + private Long laporan_ke; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + + // Getters and Setters + +} \ No newline at end of file diff --git a/src/main/java/org/sadigit/entity/transaksi/GangguanTMTransaksi.java b/src/main/java/org/sadigit/entity/transaksi/GangguanTMTransaksi.java new file mode 100644 index 0000000..7e078bc --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/GangguanTMTransaksi.java @@ -0,0 +1,54 @@ +package org.sadigit.entity.transaksi; + +import org.hibernate.annotations.Immutable; +import org.sadigit.entity.SessionUser; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +@Entity +@Setter +@Getter +@Table(name = "gangguan_tm_transaksi", schema = "apkt_transactional") +@Immutable +public class GangguanTMTransaksi extends PanacheEntityBase implements Serializable { + + @Id + @SequenceGenerator(name = "gangguan_tm_transaksi_seq", sequenceName = "apkt_transactional.gangguan_tm_transaksi_seq", allocationSize = 1) + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gangguan_tm_transaksi_seq") + @Column(name = "id") + private Long id; + + @ManyToOne + @JoinColumn(name = "id_gangguan_tm", nullable = false) + private GangguanTm gangguanTm; + + @Column(name = "jenis", nullable = false) + private String jenis; + + @Column(name = "waktu") + private LocalDateTime waktu; + + @Column(name = "created_date", nullable = false) + private LocalDateTime created_date; + + @Column(name = "created_by", nullable = false) + private Long created_by; + + @Column(name = "notif_flag", nullable = true) + private Boolean notif_flag; + + @Column(name = "waktu_read") + private LocalDateTime waktu_read; + + @ManyToOne + @JoinColumn(name = "id_session") + private SessionUser session; + + // Constructors, getters, setters, etc. +} \ No newline at end of file diff --git a/src/main/java/org/sadigit/entity/transaksi/GangguanTeganganMenengah.java b/src/main/java/org/sadigit/entity/transaksi/GangguanTeganganMenengah.java new file mode 100644 index 0000000..7fa15df --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/GangguanTeganganMenengah.java @@ -0,0 +1,91 @@ +package org.sadigit.entity.transaksi; + +import java.sql.Timestamp; +import java.time.LocalDateTime; + +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.Immutable; +import org.hibernate.annotations.UpdateTimestamp; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "gangguan_tm", schema = "apkt_transactional") +@Immutable +public class GangguanTeganganMenengah extends PanacheEntity { + @Column(name = "id") + private Long id; + + @Column(name = "prioritas") + private String prioritas; + + @Column(name = "id_ulp") + private Long idUlp; + + @Column(name = "perkiraan_area_padam") + private String perkiraanAreaPadam; + + @Column(name = "estimasi_padam") + private String estimasiPadam; + + @Column(name = "titik_gangguan") + private String titikGangguan; + + @Column(name = "no_tiang") + private String noTiang; + + @Column(name = "nama_asset") + private String namaAsset; + + @Column(name = "waktu_catat") + private LocalDateTime waktuCatat; + + @Column(name = "waktu_gangguan") + private LocalDateTime waktuGangguan; + + @Column(name = "waktu_nyala") + private LocalDateTime waktuNyala; + + @Column(name = "status_akhir") + private String statusAkhir; + + @Column(name = "jumlah_pelanggan") + private Long jumlahPelanggan; + + @Column(name = "ampere") + private Long ampere; + + @Column(name = "cuaca") + private String cuaca; + + @Column(name = "no_gangguan_tm") + private String noGangguanTm; + + @Column(name = "keterangan", length = 4000) + private String keterangan; + + @CreationTimestamp + @Column(name = "created_date") + private Timestamp createdDate; + + @Column(name = "created_by") + private Long createdBy; + + @UpdateTimestamp + @Column(name = "updated_date") + private Timestamp updatedDate; + + @Column(name = "updated_by") + private Long updatedBy; + + @Column(name = "id_regu") + private Long idRegu; + + @Column(name = "alasan") + private String alasan; +} diff --git a/src/main/java/org/sadigit/entity/transaksi/GangguanTm.java b/src/main/java/org/sadigit/entity/transaksi/GangguanTm.java new file mode 100644 index 0000000..81d953a --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/GangguanTm.java @@ -0,0 +1,168 @@ +package org.sadigit.entity.transaksi; + +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; +import org.sadigit.entity.referensi.Cuaca; +import org.sadigit.entity.referensi.Dampak; +import org.sadigit.entity.referensi.Equipment; +import org.sadigit.entity.referensi.Fasilitas; +import org.sadigit.entity.referensi.GrupPenyebabGangguan; +import org.sadigit.entity.referensi.Kelompok; +import org.sadigit.entity.referensi.KelompokUtama; +import org.sadigit.entity.referensi.PenyebabGangguan; +import org.sadigit.entity.referensi.SubFasilitas; +import org.sadigit.entity.referensi.SubTipePermasalahan; +import org.sadigit.entity.referensi.TipePermasalahan; +import org.sadigit.entity.referensi.Ulp; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "gangguan_tm", schema = "apkt_transactional") +@Immutable +public class GangguanTm extends PanacheEntity { + private Long id; + + @Column(name = "prioritas") + private String prioritas; + + @ManyToOne + @JoinColumn(name = "id_ulp") + private Ulp idUlp; + + @Column(name = "perkiraan_area_padam") + private String perkiraanAreaPadam; + + @Column(name = "estimasi_padam") + private String estimasiPadam; + + @Column(name = "titik_gangguan") + private String titikGangguan; + + @Column(name = "no_tiang") + private String noTiang; + + @Column(name = "nama_asset") + private String namaAsset; + + @Column(name = "status_akhir") + private String statusAkhir; + + @Column(name = "jumlah_pelanggan") + private Long jumlahPelanggan; + + @Column(name = "ampere") + private Long ampere; + + @Column(name = "cuaca") + private String cuaca; + + @Column(name = "no_gangguan_tm") + private String noGangguanTm; + + @Column(name = "keterangan", 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; + + @ManyToOne + @JoinColumn(name = "id_regu") + private MasterRegu idRegu; + + @Column(name = "alasan") + private String alasan; + + @Column(name = "id_jaringan") + private Long idJaringan; + + @Column(name = "waktu_lapor") + private LocalDateTime waktuLapor; + + @Column(name = "waktu_rencana") + private LocalDateTime waktuRencana; + + @Column(name = "waktu_pengerjaan") + private LocalDateTime waktuPengerjaan; + + @Column(name = "waktu_nyala_bertahap") + private LocalDateTime waktuNyalaBertahap; + + @Column(name = "waktu_nyala") + private LocalDateTime waktuNyala; + + @Column(name = "waktu_revisi") + private LocalDateTime waktuRevisi; + + @Column(name = "waktu_disetujui") + private LocalDateTime waktuDisetujui; + + @Column(name = "waktu_selesai") + private LocalDateTime waktuSelesai; + + @Column(name = "tipe_jaringan") + private String tipeJaringan; + + @ManyToOne + @JoinColumn(name = "id_kelompok_utama") + private KelompokUtama idKelompokUtama; + + @ManyToOne + @JoinColumn(name = "id_kelompok") + private Kelompok idKelompok; + + @ManyToOne + @JoinColumn(name = "id_fasilitas") + private Fasilitas idFasilitas; + + @ManyToOne + @JoinColumn(name = "id_sub_fasilitas") + private SubFasilitas idSubFasilitas; + + @ManyToOne + @JoinColumn(name = "id_equipment") + private Equipment idEquipment; + + @Column(name = "waktu_perjalanan") + private LocalDateTime waktuPerjalanan; + + @ManyToOne + @JoinColumn(name = "id_tipe_permasalahan") + private TipePermasalahan idTipePermasalahan; + + @ManyToOne + @JoinColumn(name = "id_sub_tipe_permasalahan") + private SubTipePermasalahan idSubTipePermasalahan; + + @ManyToOne + @JoinColumn(name = "id_penyebab") + private PenyebabGangguan idPenyebab; + + @ManyToOne + @JoinColumn(name = "id_grup_penyebab") + private GrupPenyebabGangguan idGrupPenyebab; + + @ManyToOne + @JoinColumn(name = "id_dampak") + private Dampak idDampak; + + @ManyToOne + @JoinColumn(name = "id_cuaca") + private Cuaca idCuaca; + +} diff --git a/src/main/java/org/sadigit/entity/transaksi/GangguanTransaksi.java b/src/main/java/org/sadigit/entity/transaksi/GangguanTransaksi.java new file mode 100644 index 0000000..bfdad87 --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/GangguanTransaksi.java @@ -0,0 +1,50 @@ +package org.sadigit.entity.transaksi; + +import org.hibernate.annotations.Immutable; +import org.sadigit.entity.SessionUser; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +@Entity +@Setter +@Getter +@Table(name = "gangguan_transaksi", schema = "apkt_transactional") +@Immutable +public class GangguanTransaksi extends PanacheEntityBase implements Serializable { + @Id + @SequenceGenerator(name = "gangguan_transaksi_seq", sequenceName = "apkt_transactional.gangguan_transaksi_seq", allocationSize = 1) + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gangguan_transaksi_seq") + @Column(name = "id") + private Long id; + + @ManyToOne + @JoinColumn(name = "id_gangguan", nullable = false) + private Gangguan gangguan; + + @Column(name = "jenis", nullable = false) + private String jenis; + + @Column(name = "waktu") + private LocalDateTime waktu; + + @Column(name = "created_date", nullable = false) + private LocalDateTime created_date; + + @Column(name = "created_by", nullable = false) + private Long created_by; + + @Column(name = "notif_flag", nullable = true) + private Boolean notif_flag; + + @ManyToOne + @JoinColumn(name = "id_session") + private SessionUser session; + + // Constructors, getters, setters, etc. +} \ No newline at end of file diff --git a/src/main/java/org/sadigit/entity/transaksi/HistRunTask.java b/src/main/java/org/sadigit/entity/transaksi/HistRunTask.java new file mode 100644 index 0000000..dd8adee --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/HistRunTask.java @@ -0,0 +1,62 @@ +package org.sadigit.entity.transaksi; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.sql.Timestamp; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; + +@Entity +@Setter +@Getter +@Table(name = "histruntask", schema = "apkt_transactional") +public class HistRunTask extends PanacheEntityBase implements Serializable { + + @Id + @Column(name = "runtaskid", nullable = false) + private Long runTaskId; + + @Column(name = "runworkflowid") + private Long runWorkflowId; + + @Column(name = "workflowdetail") + private Long workflowDetail; + + @Column(name = "runtaskfrom") + private Long runTaskFrom; + + @Column(name = "isdone", length = 1) + private String isDone; + + @Column(name = "createdate") + private Timestamp createDate; + + @Column(name = "createby") + private Long createBy; + + @Column(name = "updatedate") + private Timestamp updateDate; + + @Column(name = "updateby") + private Long updateBy; + + @Column(name = "STATUS", length = 50) + private String status; + + @Column(name = "statustype", length = 50) + private String statusType; + + @Column(name = "COMMENTS") + private String comments; + + @Column(name = "filtergroup", length = 200) + private String filterGroup; + + @Column(name = "ordernumber") + private Long orderNumber; + + // Constructors, getters, and setters... +} diff --git a/src/main/java/org/sadigit/entity/transaksi/HistRunWorkflow.java b/src/main/java/org/sadigit/entity/transaksi/HistRunWorkflow.java new file mode 100644 index 0000000..43025cc --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/HistRunWorkflow.java @@ -0,0 +1,36 @@ +package org.sadigit.entity.transaksi; + +import jakarta.persistence.*; +import java.io.Serializable; +import java.sql.Timestamp; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; + +@Entity +@Table(name = "histrunworkflow", schema = "apkt_transactional") +public class HistRunWorkflow extends PanacheEntityBase implements Serializable { + + @Id + @Column(name = "runworkflowid", nullable = false) + private Long runWorkflowId; + + @Column(name = "workflowid") + private Long workflowId; + + @Column(name = "requestby") + private Long requestBy; + + @Column(name = "lastworkflowdetailid") + private Long lastWorkflowDetailId; + + @Column(name = "laststatus", length = 50) + private String lastStatus; + + @Column(name = "laststatustype", length = 50) + private String lastStatusType; + + @Column(name = "createdate") + private Timestamp createDate; + + // Constructors, getters, and setters... +} diff --git a/src/main/java/org/sadigit/entity/transaksi/JenisPekerjaan.java b/src/main/java/org/sadigit/entity/transaksi/JenisPekerjaan.java new file mode 100644 index 0000000..462ec4a --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/JenisPekerjaan.java @@ -0,0 +1,35 @@ +package org.sadigit.entity.transaksi; + +import java.time.LocalDateTime; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "jenis_pekerjaan", schema = "apkt_transactional") +public class JenisPekerjaan extends PanacheEntity { + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/transaksi/Keluhan.java b/src/main/java/org/sadigit/entity/transaksi/Keluhan.java new file mode 100644 index 0000000..8b88d71 --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/Keluhan.java @@ -0,0 +1,166 @@ +package org.sadigit.entity.transaksi; + +import java.io.Serializable; +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; +import org.locationtech.jts.geom.Geometry; +import org.sadigit.adapter.GeometryAdapter; +import org.sadigit.entity.referensi.MasterKelurahan; +import org.sadigit.entity.referensi.Ulp; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.json.bind.annotation.JsonbTypeAdapter; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "keluhan", schema = "apkt_transactional") +@Immutable +public class Keluhan extends PanacheEntityBase implements Serializable { + @Id + @SequenceGenerator(name = "keluhan_seq", sequenceName = "apkt_transactional.keluhan_seq", allocationSize = 1) + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "keluhan_seq") + @Column(name = "id") + private Long id; + + @Column(name = "id_pelanggan_no_meter") + private Long id_pelanggan_no_meter; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_ulp", foreignKey = @ForeignKey(name = "id_ulp")) + private Ulp ulp; + @Column(name = "id_tipe_permasalahan") + private Long id_tipe_permasalahan; + + @Column(name = "alamat_pelanggan") + private String alamat_pelanggan; + + @Column(name = "daya_tarif") + private String daya_tarif; + + @Column(name = "nama_pelapor") + private String nama_pelapor; + + @Column(name = "telepon_pelapor") + private String telepon_pelapor; + + @Column(name = "hp_pelapor") + private String hp_pelapor; + + @Column(name = "fax_pelapor") + private String fax_pelapor; + + @Column(name = "email_pelapor") + private String email_pelapor; + + @Column(name = "alamat_pelapor") + private String alamat_pelapor; + + @Column(name = "media") + private String media; + + @Column(name = "waktu_padam") + private String waktu_padam; + + @Column(name = "konfirmasi") + private String konfirmasi; + + @JsonbTypeAdapter(GeometryAdapter.class) + @Column(name = "lokasi", columnDefinition = "geometry(Point,4326)") + private Geometry lokasi; + + @Column(name = "no_laporan", unique = true) + private String no_laporan; + + @Column(name = "keterangan") + private String keterangan; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + + @Column(name = "status_akhir") + private String status_akhir; + + @Column(name = "tipe_wo") + private Long tipe_wo; + + @Column(name = "unit") + private Long unit; + + @Column(name = "eskalasi") + private Long eskalasi; + + @Column(name = "permasalahan") + private String permasalahan; + + @Column(name = "waktu_lapor") + private LocalDateTime waktu_lapor; + + @Column(name = "waktu_penugasan") + private LocalDateTime waktu_penugasan; + + @Column(name = "waktu_perjalanan") + private LocalDateTime waktu_perjalanan; + + @Column(name = "waktu_pengerjaan") + private LocalDateTime waktu_pengerjaan; + + @Column(name = "waktu_nyala_sementara") + private LocalDateTime waktu_nyala_sementara; + + @Column(name = "waktu_nyala") + private LocalDateTime waktu_nyala; + + @Column(name = "waktu_batal") + private LocalDateTime waktu_batal; + + @Column(name = "waktu_selesai") + private LocalDateTime waktu_selesai; + + @Column(name = "tipe_keluhan") + private Long tipe_keluhan; + + @Column(name = "tipe_sub_keluhan") + private Long tipe_sub_keluhan; + + @Column(name = "alasan") + private String alasan; + + @Column(name = "patokan") + private String patokan; + + @Column(name = "jarak") + private Long jarak; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_kelurahan", referencedColumnName = "id_kelurahan", foreignKey = @ForeignKey(name = "kelurahan")) + private MasterKelurahan kelurahan; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "id_regu", referencedColumnName = "id" ) + private MasterRegu regu; + + @Column(name = "fax") + private String fax; + @Column(name = "keterangan_lokasi") + private String keterangan_lokasi; + @Column(name = "waktu_fax") + private LocalDateTime waktu_fax; + @Column(name = "nama_media") + private String nama_media; + @Column(name = "waktu_media") + private LocalDateTime waktu_media; +} diff --git a/src/main/java/org/sadigit/entity/transaksi/KeluhanLaporUlang.java b/src/main/java/org/sadigit/entity/transaksi/KeluhanLaporUlang.java new file mode 100644 index 0000000..31c1992 --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/KeluhanLaporUlang.java @@ -0,0 +1,59 @@ +package org.sadigit.entity.transaksi; + +import java.time.LocalDateTime; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +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.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "keluhan_lapor_ulang", schema = "apkt_transactional") +@NoArgsConstructor +@AllArgsConstructor +public class KeluhanLaporUlang extends PanacheEntityBase{ + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", nullable = false) + private Long id; + + @ManyToOne + @JoinColumn(name = "id_keluhan", nullable = false) + private Keluhan keluhan; + + @Column(name = "no_laporan_referensi", nullable = false) + private String no_laporan_referensi; + + @Column(name = "no_laporan_baru", nullable = false) + private String no_laporan_baru; + + @Column(name = "laporan_ke", nullable = false) + private Long laporan_ke; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + + + + // Getters and Setters +} diff --git a/src/main/java/org/sadigit/entity/transaksi/KeluhanTransaksi.java b/src/main/java/org/sadigit/entity/transaksi/KeluhanTransaksi.java new file mode 100644 index 0000000..15134f8 --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/KeluhanTransaksi.java @@ -0,0 +1,50 @@ +package org.sadigit.entity.transaksi; + +import org.hibernate.annotations.Immutable; +import org.sadigit.entity.SessionUser; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Entity +@Setter +@Getter +@Table(name = "keluhan_transaksi", schema = "apkt_transactional") +@Immutable +public class KeluhanTransaksi extends PanacheEntityBase { + + @Id + @SequenceGenerator(name = "keluhan_transaksi_seq", sequenceName = "apkt_transactional.keluhan_transaksi_seq", allocationSize = 1) + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "keluhan_transaksi_seq") + @Column(name = "id") + private Long id; + + @ManyToOne + @JoinColumn(name = "id_keluhan", nullable = false) + private Keluhan keluhan; + + @Column(name = "jenis", nullable = false) + private String jenis; + + @Column(name = "waktu") + private LocalDateTime waktu; + + @Column(name = "created_date", nullable = false) + private LocalDateTime created_date; + + @Column(name = "created_by", nullable = false) + private Long created_by; + + @ManyToOne + @JoinColumn(name = "id_session") + private SessionUser session; + + @Column(name = "notif_flag", nullable = true) + private Boolean notif_flag; + + // Constructors, getters, setters, etc. +} \ No newline at end of file diff --git a/src/main/java/org/sadigit/entity/transaksi/MasterRegu.java b/src/main/java/org/sadigit/entity/transaksi/MasterRegu.java new file mode 100644 index 0000000..f03662a --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/MasterRegu.java @@ -0,0 +1,60 @@ +package org.sadigit.entity.transaksi; + +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; +import org.locationtech.jts.geom.Geometry; +import org.sadigit.adapter.GeometryAdapter; +import org.sadigit.entity.referensi.Posko; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.json.bind.annotation.JsonbTypeAdapter; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "master_regu", schema = "apkt_transactional") +@Immutable +public class MasterRegu extends PanacheEntity { + @Column(name = "id") + private Long id; + + @ManyToOne(fetch = FetchType.EAGER, optional = false, cascade = CascadeType.ALL) + @JoinColumn(name = "id_posko", referencedColumnName = "id") + private Posko posko; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "kode", nullable = false) + private String kode; + + @Column(name = "alamat", nullable = false) + private String alamat; + + @Column(name = "telepon", nullable = false) + private String telepon; + + @Column(name = "aktif", nullable = false) + private boolean aktif; + + @JsonbTypeAdapter(GeometryAdapter.class) + @Column(name = "lokasi", columnDefinition = "geometry(Point,4326)") + private Geometry lokasi; + + @Column(name = "created_date") + private LocalDateTime created_date; + + @Column(name = "created_by") + private Long created_by; + + @Column(name = "updated_date") + private LocalDateTime updated_date; + + @Column(name = "updated_by") + private Long updated_by; + +} diff --git a/src/main/java/org/sadigit/entity/transaksi/MaterialTransaksi.java b/src/main/java/org/sadigit/entity/transaksi/MaterialTransaksi.java new file mode 100644 index 0000000..73c4b4b --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/MaterialTransaksi.java @@ -0,0 +1,63 @@ +package org.sadigit.entity.transaksi; + +import java.time.LocalDateTime; + +import org.hibernate.annotations.Immutable; +import org.sadigit.entity.referensi.Material; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "material_transaksi", schema = "apkt_transactional") +@Immutable +public class MaterialTransaksi extends PanacheEntity { + private Long id; + + @ManyToOne + @JoinColumn(name = "id_material", nullable = false) + private Material material; + + private Long stok; + private Long stokOs; + + @Enumerated(EnumType.STRING) + @Column(nullable = false) + private Tipe tipe; + + private String noDokumen; + private LocalDateTime createdDate; + private Long createdBy; + private LocalDateTime updatedDate; + private Long updatedBy; + + @ManyToOne + @JoinColumn(name = "id_gangguan") + private Gangguan gangguan; + + private Long id_gangguan_tm; + + public enum Tipe { + IN("in"), + OUT("out"); + + private String value; + + Tipe(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return value; + } + } +} diff --git a/src/main/java/org/sadigit/entity/transaksi/PelangganNoMeter.java b/src/main/java/org/sadigit/entity/transaksi/PelangganNoMeter.java new file mode 100644 index 0000000..4a9dafe --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/PelangganNoMeter.java @@ -0,0 +1,62 @@ +package org.sadigit.entity.transaksi; + +import java.sql.Timestamp; + +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.Immutable; +import org.hibernate.annotations.UpdateTimestamp; +import org.locationtech.jts.geom.Geometry; +import org.sadigit.adapter.GeometryAdapter; + +import io.quarkus.hibernate.orm.panache.PanacheEntity; +import jakarta.json.bind.annotation.JsonbTypeAdapter; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Setter +@Getter +@Table(name = "pelanggan_no_meter", schema = "apkt_transactional") +@Immutable +public class PelangganNoMeter extends PanacheEntity { + + @Column(name = "id") + private Long id; + + @Column(name = "nama", nullable = false) + private String nama; + + @Column(name = "no_meter", nullable = false) + private String no_meter; + + @Column(name = "alamat") + private String alamat; + + @Column(name = "daya") + private String daya; + + @JsonbTypeAdapter(GeometryAdapter.class) + @Column(name = "lokasi", columnDefinition = "geometry(Point,4326)") + private Geometry lokasi; + + @CreationTimestamp + @Column(name = "created_date") + private Timestamp created_date; + + @Column(name = "created_by") + private Long created_by; + @UpdateTimestamp + @Column(name = "updated_date") + private Timestamp updated_date; + + @Column(name = "updated_by") + private Long updated_by; + + @Column(name = "id_pelanggan") + private Long id_pelanggan; + + @Column(name = "telepon") + private String telepon; + +} diff --git a/src/main/java/org/sadigit/entity/transaksi/PenugasanKhusus.java b/src/main/java/org/sadigit/entity/transaksi/PenugasanKhusus.java new file mode 100644 index 0000000..75a0b44 --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/PenugasanKhusus.java @@ -0,0 +1,103 @@ +package org.sadigit.entity.transaksi; + +import jakarta.persistence.*; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; + +@Entity +@Table(name = "penugasan_khusus_belum_selesai", schema = "apkt_transactional") +public class PenugasanKhusus extends PanacheEntityBase { + + @Id + @Column(name = "rowid", nullable = false) + private Long id; + + @Column(name = "no_tugas", length = 20) + private String no_tugas; + + @Column(name = "tglcatat") + private LocalDateTime tglcatat; + + @Column(name = "nama_tugas", length = 50) + private String nama_tugas; + + @Column(name = "keterangan", length = 100) + private String keterangan; + + @Column(name = "reguid") + private BigDecimal reguid; + + @Column(name = "nama_regu", length = 200) + private String nama_regu; + + @Column(name = "flag_selesai") + private BigDecimal flag_selesai; + + @Column(name = "tglflag_selesai") + private LocalDateTime tglflag_selesai; + + @Column(name = "upi") + private BigDecimal upi; + + @Column(name = "ap") + private BigDecimal ap; + + @Column(name = "up") + private BigDecimal up; + + @Column(name = "posko") + private BigDecimal posko; + + @Column(name = "no_laporan", length = 20) + private String no_laporan; + + @Column(name = "catatby") + private BigDecimal catatby; + + @Column(name = "laststatus", length = 50) + private String laststatus; + + @Column(name = "tglpenugasan") + private LocalDateTime tglpenugasan; + + @Column(name = "penugasanby") + private BigDecimal penugasanby; + + @Column(name = "tglperjalanan") + private LocalDateTime tglperjalanan; + + @Column(name = "perjalananby") + private BigDecimal perjalananby; + + @Column(name = "tglpengerjaan") + private LocalDateTime tglpengerjaan; + + @Column(name = "pengerjaanby") + private BigDecimal pengerjaanby; + + @Column(name = "tglnyala") + private LocalDateTime tglnyala; + + @Column(name = "nyalaby") + private BigDecimal nyalaby; + + @Column(name = "selesaiby") + private BigDecimal selesaiby; + + @Column(name = "tglnyalasementara") + private LocalDateTime tglnyalasementara; + + @Column(name = "nyalasementaraby") + private BigDecimal nyalasementaraby; + + @Column(name = "keterangan_selesai") + private String keteranganSelesai; + + @Column(name = "catatbyvcc") + private BigDecimal catatbyvcc; + + @Column(name = "selesaibyvcc") + private BigDecimal selesaibyvcc; +} diff --git a/src/main/java/org/sadigit/entity/transaksi/RunTask.java b/src/main/java/org/sadigit/entity/transaksi/RunTask.java new file mode 100644 index 0000000..85a6de2 --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/RunTask.java @@ -0,0 +1,61 @@ +package org.sadigit.entity.transaksi; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; + +@Entity +@Setter +@Getter +@Table(name = "runtask", schema = "apkt_transactional") +public class RunTask extends PanacheEntityBase implements Serializable { + @Id + @Column(name = "runtaskid", nullable = false) + private Long runtaskid; + + @Column(name = "runworkflowid") + private Long runworkflowid; + + @Column(name = "workflowdetail") + private Long workflowdetail; + + @Column(name = "runtaskfrom") + private Long runtaskfrom; + + @Column(name = "isdone", length = 1) + private String isdone; + + @Column(name = "createdate") + private LocalDateTime createdate; + + @Column(name = "createby") + private Long createby; + + @Column(name = "updatedate") + private LocalDateTime updatedate; + + @Column(name = "updateby") + private Long updateby; + + @Column(name = "STATUS", length = 50) + private String STATUS; + + @Column(name = "statustype", length = 50) + private String statustype; + + @Column(name = "COMMENTS") + private String COMMENTS; + + @Column(name = "filtergroup", length = 200) + private String filtergroup; + + @Column(name = "ordernumber") + private Long ordernumber; + + // Constructors, getters, and setters... +} diff --git a/src/main/java/org/sadigit/entity/transaksi/RunWorkflow.java b/src/main/java/org/sadigit/entity/transaksi/RunWorkflow.java new file mode 100644 index 0000000..ac8db9e --- /dev/null +++ b/src/main/java/org/sadigit/entity/transaksi/RunWorkflow.java @@ -0,0 +1,44 @@ +package org.sadigit.entity.transaksi; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; + +@Entity +@Setter +@Getter +@Table(name = "runworkflow", schema = "apkt_transactional") +public class RunWorkflow extends PanacheEntityBase implements Serializable { + + @Id + @Column(name = "runworkflowid", nullable = false) + private Long runworkflowid; + + @Column(name = "workflowid") + private Long workflowid; + + @Column(name = "requestby") + private Long requestby; + + @Column(name = "lastworkflowdetailid") + private Long lastworkflowdetailid; + + @Column(name = "laststatus", length = 50) + private String laststatus; + + @Column(name = "laststatustype", length = 50) + private String laststatustype; + + @Column(name = "createdate") + private LocalDateTime createdate; + + @Column(name = "rowid", nullable = false, columnDefinition = "INT8 NOT VISIBLE DEFAULT unique_rowid()") + private Long rowid; + + // Constructors, getters, and setters... +} diff --git a/src/main/java/org/sadigit/model/dto/AppUserDto.java b/src/main/java/org/sadigit/model/dto/AppUserDto.java index 693bfb5..b18f118 100644 --- a/src/main/java/org/sadigit/model/dto/AppUserDto.java +++ b/src/main/java/org/sadigit/model/dto/AppUserDto.java @@ -1,22 +1,8 @@ package org.sadigit.model.dto; -import lombok.Builder; -import lombok.Getter; -import lombok.Setter; +public record AppUserDTO( + Boolean status, + String message, + UserDTO user) { -@Builder(toBuilder = true) -@Setter -@Getter -public class AppUserDto { - private String address; - private String nip; - private String phone; - private int positionid; - private String isactive; - private String mobile; - private int unitid; - private int userid; - private String employeename; - private String email; - private String username; } diff --git a/src/main/java/org/sadigit/model/dto/UserDTO.java b/src/main/java/org/sadigit/model/dto/UserDTO.java new file mode 100644 index 0000000..71f22c9 --- /dev/null +++ b/src/main/java/org/sadigit/model/dto/UserDTO.java @@ -0,0 +1,31 @@ + +package org.sadigit.model.dto; + +import java.math.BigInteger; + +public record UserDTO( + BigInteger userId, + String username, + String employeeName, + String nip, + String address, + String phone, + String mobile, + String email, + String position, + Long unitId, + String isActive, + String picture, + Long idRegu, + Long idPosko, + String namaPosko, + Long idUp3, + String namaUp3, + Long idUid, + String namaUid, + Long idUlp, + String namaUlp, + Long IdRegional, + String namaRegional) { + +} diff --git a/src/main/java/org/sadigit/model/request/AuthCmd.java b/src/main/java/org/sadigit/model/request/AuthCmd.java new file mode 100644 index 0000000..ddbbd3f --- /dev/null +++ b/src/main/java/org/sadigit/model/request/AuthCmd.java @@ -0,0 +1,4 @@ +package org.sadigit.model.request; + +public record AuthCmd(String username, String password) { +} \ No newline at end of file diff --git a/src/main/java/org/sadigit/model/request/CreateGangguanRequest.java b/src/main/java/org/sadigit/model/request/CreateGangguanRequest.java new file mode 100644 index 0000000..ddfbff0 --- /dev/null +++ b/src/main/java/org/sadigit/model/request/CreateGangguanRequest.java @@ -0,0 +1,164 @@ +package org.sadigit.model.request; + +import java.util.Map; + +import org.sadigit.control.exception.CustomException; +import org.sadigit.model.response.base.ResponseModel; + +import jakarta.validation.constraints.NotNull; +import jakarta.ws.rs.QueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Builder +@Data +@NoArgsConstructor +@AllArgsConstructor +public class CreateGangguanRequest { + + @QueryParam("in_idpel") + @NotNull + String in_idpel; + + @QueryParam("in_nama") + @NotNull + String in_nama; + + @NotNull + @QueryParam("in_alamat") + String in_alamat; + + @NotNull + @QueryParam("in_hp") + String in_hp; + + @NotNull + @QueryParam("in_unitup") + String in_unitup; + + @NotNull + @QueryParam("in_long") + String in_long; + + @NotNull + @QueryParam("in_lat") + String in_lat; + + @NotNull + @QueryParam("in_tipe_keluhan") + String in_tipe_keluhan; + + @NotNull + @QueryParam("in_keterangan") + String in_keterangan; + + @NotNull + @QueryParam("in_prov") + String in_prov; + + @NotNull + @QueryParam("in_kab") + String in_kab; + + @NotNull + @QueryParam("in_kec") + String in_kec; + + @NotNull + @QueryParam("in_kel") + String in_kel; + + @QueryParam("in_flag_padam_tm") + String in_flag_padam_tm; + + @QueryParam("in_laporan_ref") + String in_laporan_ref; + + public void checkParameter() { + if (this.getIn_kel() == null || this.getIn_kel().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "nama kelurahan tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_kec() == null || this.getIn_kec().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Nama kecamatan tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_kab() == null || this.getIn_kab().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Nama kabupaten tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_prov() == null || this.getIn_prov().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Nama provinsi tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_nama() == null || this.getIn_nama().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Nama tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_alamat() == null || this.getIn_alamat().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Alamat tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_hp() == null || this.getIn_hp().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "No telp tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_unitup() == null || this.getIn_unitup().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Unitup tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_long() == null || this.getIn_long().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Longitude tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_lat() == null || this.getIn_lat().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Latitude tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_tipe_keluhan() == null || this.getIn_tipe_keluhan().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Tipe keluhan tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_keterangan() == null || this.getIn_keterangan().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Keterangan tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + } +} diff --git a/src/main/java/org/sadigit/model/request/CreateGangguanV2Request.java b/src/main/java/org/sadigit/model/request/CreateGangguanV2Request.java new file mode 100644 index 0000000..8e2ae37 --- /dev/null +++ b/src/main/java/org/sadigit/model/request/CreateGangguanV2Request.java @@ -0,0 +1,217 @@ +package org.sadigit.model.request; + +import java.util.Map; + +import org.sadigit.control.exception.CustomException; +import org.sadigit.model.response.base.ResponseModel; + +import jakarta.validation.constraints.NotNull; +import jakarta.ws.rs.QueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CreateGangguanV2Request { + + @QueryParam("in_idpel") + private String in_idpel; + + @NotNull + @QueryParam("in_nama") + private String in_nama; + + @NotNull + @QueryParam("in_alamat") + private String in_alamat; + + @NotNull + @QueryParam("in_hp") + private String in_hp; + + @NotNull + @QueryParam("in_unitup") + private String in_unitup; + + @NotNull + @QueryParam("in_long") + private String in_long; + + @NotNull + @QueryParam("in_lat") + private String in_lat; + + @NotNull + @QueryParam("in_tipe_keluhan") + private String in_tipe_keluhan; + + @NotNull + @QueryParam("in_keterangan") + private String in_keterangan; + + @NotNull + @QueryParam("in_prov") + private String in_prov; + + @NotNull + @QueryParam("in_kab") + private String in_kab; + + @NotNull + @QueryParam("in_kec") + private String in_kec; + + @NotNull + @QueryParam("in_kel") + private String in_kel; + + @QueryParam("in_flag_padam_tm") + private String in_flag_padam_tm; + + @QueryParam("in_laporan_ref") + private String in_laporan_ref; + + @QueryParam("in_kode_gardu") + private String in_kode_gardu; + + @QueryParam("in_tgl_konfirmasi") + private String in_tgl_konfirmasi; + + @QueryParam("in_laporanulang_ref") + private String in_laporanulang_ref; + + public void checkParameter() { + if (this.getIn_kel() == null || this.getIn_kel().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "nama kelurahan tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_kec() == null || this.getIn_kec().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Nama kecamatan tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_kab() == null || this.getIn_kab().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Nama kabupaten tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_prov() == null || this.getIn_prov().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Nama provinsi tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_nama() == null || this.getIn_nama().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Nama tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_alamat() == null || this.getIn_alamat().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Alamat tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_hp() == null || this.getIn_hp().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "No telp tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_unitup() == null || this.getIn_unitup().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Unitup tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_long() == null || this.getIn_long().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Longitude tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_lat() == null || this.getIn_lat().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Latitude tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_tipe_keluhan() == null || this.getIn_tipe_keluhan().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Tipe keluhan tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_keterangan() == null || this.getIn_keterangan().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Keterangan tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + } + + public static CreateGangguanV2Request fromCreateGangguanV1(CreateGangguanRequest request) { + return CreateGangguanV2Request.builder() + .in_idpel(request.getIn_idpel()) + .in_nama(request.getIn_nama()) + .in_alamat(request.getIn_alamat()) + .in_hp(request.getIn_hp()) + .in_unitup(request.getIn_unitup()) + .in_long(request.getIn_long()) + .in_lat(request.getIn_lat()) + .in_tipe_keluhan(request.getIn_tipe_keluhan()) + .in_keterangan(request.getIn_keterangan()) + .in_prov(request.getIn_prov()) + .in_kab(request.getIn_kab()) + .in_kec(request.getIn_kec()) + .in_kel(request.getIn_kel()) + .in_flag_padam_tm(request.getIn_flag_padam_tm()) + .in_laporan_ref(request.getIn_laporan_ref()) + .build(); + } + +} diff --git a/src/main/java/org/sadigit/model/request/CreateKeluhanRequest.java b/src/main/java/org/sadigit/model/request/CreateKeluhanRequest.java new file mode 100644 index 0000000..da0d399 --- /dev/null +++ b/src/main/java/org/sadigit/model/request/CreateKeluhanRequest.java @@ -0,0 +1,166 @@ +package org.sadigit.model.request; + +import java.util.Map; + +import org.sadigit.control.exception.CustomException; +import org.sadigit.model.response.base.ResponseModel; + +import jakarta.ws.rs.QueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Builder +@Data +@NoArgsConstructor +@AllArgsConstructor +public class CreateKeluhanRequest { + @QueryParam("in_idpel") + String in_idpel; + + @NonNull + @QueryParam("in_nama") + String in_nama; + + @NonNull + @QueryParam("in_alamat") + String in_alamat; + + @NonNull + @QueryParam("in_hp") + String in_hp; + + @NonNull + @QueryParam("in_unitup") + String in_unitup; + + @NonNull + @QueryParam("in_long") + String in_long; + + @NonNull + @QueryParam("in_lat") + String in_lat; + + @NonNull + @QueryParam("in_tipe_keluhan") + String in_tipe_keluhan; + + @NonNull + @QueryParam("in_subtipe_keluhan") + String in_subtipe_keluhan; + + @NonNull + @QueryParam("in_keterangan") + String in_keterangan; + + @QueryParam("in_prov") + String in_prov; + + @QueryParam("in_kab") + String in_kab; + + @QueryParam("in_kec") + String in_kec; + + @QueryParam("in_kel") + String in_kel; + + public void checkParameter() { + + if (this.getIn_nama() == null || this.getIn_nama().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Nama tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_alamat() == null || this.getIn_alamat().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Alamat tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_hp() == null || this.getIn_hp().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "No telp tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_unitup() == null || this.getIn_unitup().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Unitup tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_long() == null || this.getIn_long().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Longitude tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_lat() == null || this.getIn_lat().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Latitude tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_tipe_keluhan() == null || this.getIn_tipe_keluhan().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Tipe keluhan tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_keterangan() == null || this.getIn_keterangan().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Keterangan tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_subtipe_keluhan() == null || this.getIn_subtipe_keluhan().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Subtipe keluhan tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_idpel() == null || this.getIn_idpel().isEmpty()) { + if (this.getIn_kel() == null || this.getIn_kel().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "nama kelurahan tidak boleh kosong apabila idpel tidak diisi")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_kec() == null || this.getIn_kec().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Nama kecamatan tidak boleh kosong apabila idpel tidak diisi")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_kab() == null || this.getIn_kab().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Nama kabupaten tidak boleh kosong apabila idpel tidak diisi")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_prov() == null || this.getIn_prov().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Nama provinsi tidak boleh kosong apabila idpel tidak diisi")) + .build(); + throw new CustomException(null, error); + } + } + } +} diff --git a/src/main/java/org/sadigit/model/request/CreateKeluhanV2Request.java b/src/main/java/org/sadigit/model/request/CreateKeluhanV2Request.java new file mode 100644 index 0000000..1d48872 --- /dev/null +++ b/src/main/java/org/sadigit/model/request/CreateKeluhanV2Request.java @@ -0,0 +1,200 @@ +package org.sadigit.model.request; + +import java.util.Map; + +import org.sadigit.control.exception.CustomException; +import org.sadigit.model.response.base.ResponseModel; + +import jakarta.ws.rs.QueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CreateKeluhanV2Request { + + @QueryParam("in_idpel") + private String in_idpel; + + @NonNull + @QueryParam("in_nama") + private String in_nama; + + @NonNull + @QueryParam("in_alamat") + private String in_alamat; + + @NonNull + @QueryParam("in_hp") + private String in_hp; + + @NonNull + @QueryParam("in_unitup") + private String in_unitup; + + @NonNull + @QueryParam("in_long") + private String in_long; + + @NonNull + @QueryParam("in_lat") + private String in_lat; + + @NonNull + @QueryParam("in_tipe_keluhan") + private String in_tipe_keluhan; + + @NonNull + @QueryParam("in_subtipe_keluhan") + private String in_subtipe_keluhan; + + @NonNull + @QueryParam("in_keterangan") + private String in_keterangan; + + @QueryParam("in_prov") + private String in_prov; + + @QueryParam("in_kab") + private String in_kab; + + @QueryParam("in_kec") + private String in_kec; + + @QueryParam("in_kel") + private String in_kel; + + @QueryParam("in_kode_gardu") + private String in_kode_gardu; + + @QueryParam("in_laporanulang_ref") + private String in_laporanulang_ref; + + public void checkParameter() { + + if (this.getIn_nama() == null || this.getIn_nama().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Nama tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_alamat() == null || this.getIn_alamat().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Alamat tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_hp() == null || this.getIn_hp().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "No telp tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_unitup() == null || this.getIn_unitup().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Unitup tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_long() == null || this.getIn_long().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Longitude tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_lat() == null || this.getIn_lat().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Latitude tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_tipe_keluhan() == null || this.getIn_tipe_keluhan().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Tipe keluhan tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_keterangan() == null || this.getIn_keterangan().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Keterangan tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_subtipe_keluhan() == null || this.getIn_subtipe_keluhan().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Subtipe keluhan tidak boleh kosong", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_idpel() == null || this.getIn_idpel().isEmpty()) { + if (this.getIn_kel() == null || this.getIn_kel().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Nama kelurahan tidak boleh kosong apabila idpel tidak diisi", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_kec() == null || this.getIn_kec().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Nama kecamatan tidak boleh kosong apabila idpel tidak diisi", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_kab() == null || this.getIn_kab().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Nama kabupaten tidak boleh kosong apabila idpel tidak diisi", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + + if (this.getIn_prov() == null || this.getIn_prov().isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Nama provinsi tidak boleh kosong apabila idpel tidak diisi", + "result", "0")) + .build(); + throw new CustomException(null, error); + } + } + } + +} diff --git a/src/main/java/org/sadigit/model/request/GetCancelRequest.java b/src/main/java/org/sadigit/model/request/GetCancelRequest.java new file mode 100644 index 0000000..b4249b2 --- /dev/null +++ b/src/main/java/org/sadigit/model/request/GetCancelRequest.java @@ -0,0 +1,46 @@ +package org.sadigit.model.request; + +import java.util.Map; + +import org.sadigit.control.exception.CustomException; +import org.sadigit.model.response.base.ResponseModel; + +import jakarta.ws.rs.QueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class GetCancelRequest { + + @NonNull + @QueryParam("p_reportnumber") + String p_reportnumber; + + @NonNull + @QueryParam("p_userid") + String p_userid; + + public void checkParameter() { + if (this.p_reportnumber == null || this.p_reportnumber.isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "No Laporan tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.p_userid == null || this.p_userid.isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "User ID tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + } +} diff --git a/src/main/java/org/sadigit/model/request/GetCttRequest.java b/src/main/java/org/sadigit/model/request/GetCttRequest.java new file mode 100644 index 0000000..e0f9909 --- /dev/null +++ b/src/main/java/org/sadigit/model/request/GetCttRequest.java @@ -0,0 +1,109 @@ +package org.sadigit.model.request; + +import java.util.Map; + +import org.sadigit.control.exception.CustomException; +import org.sadigit.model.response.base.ResponseModel; + +import jakarta.ws.rs.QueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class GetCttRequest { + + @NonNull + @QueryParam("p_reportnumber") + private String p_reportnumber; + + @NonNull + @QueryParam("p_idpel") + private String p_idpel; + + @QueryParam("p_kode08") + private String p_kode08; + + @QueryParam("p_kode70") + private String p_kode70; + + @QueryParam("p_kode71") + private String p_kode71; + + @NonNull + @QueryParam("p_kode41") + private String p_kode41; + + @NonNull + @QueryParam("p_kode44") + private String p_kode44; + + @QueryParam("p_kode45") + private String p_kode45; + + @QueryParam("p_kode46") + private String p_kode46; + + @NonNull + @QueryParam("p_kode37") + private String p_kode37; + + @NonNull + @QueryParam("p_kode47") + private String p_kode47; + + public void checkParameter() { + if (this.p_reportnumber == null || this.p_reportnumber.isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "No Laporan tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.p_idpel == null || this.p_idpel.isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "ID Pelanggan tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.p_kode41 == null || this.p_kode41.isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Kode 41 tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.p_kode44 == null || this.p_kode44.isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Kode 44 tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.p_kode37 == null || this.p_kode37.isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Kode 37 tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.p_kode47 == null || this.p_kode47.isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Kode 47 tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + } +} diff --git a/src/main/java/org/sadigit/model/request/GetDataGarduV2Request.java b/src/main/java/org/sadigit/model/request/GetDataGarduV2Request.java new file mode 100644 index 0000000..e63ece0 --- /dev/null +++ b/src/main/java/org/sadigit/model/request/GetDataGarduV2Request.java @@ -0,0 +1,55 @@ +package org.sadigit.model.request; + +import java.util.Map; + +import org.sadigit.control.exception.CustomException; +import org.sadigit.model.response.base.ResponseModel; + +import jakarta.ws.rs.QueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class GetDataGarduV2Request { + + @NonNull + @QueryParam("p_kode") + Integer p_kode; + + @NonNull + @QueryParam("p_jenis") + Integer p_jenis; + + @QueryParam("p_jumlah") + Integer p_jumlah; + + @QueryParam("p_nolaporan") + String p_nolaporan; + + @QueryParam("p_kodegardu") + String p_kodegardu; + + public void checkParameter() { + if (this.p_kode == null) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Kode tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.p_jenis == null) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Jenis tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + } +} diff --git a/src/main/java/org/sadigit/model/request/GetDataRequest.java b/src/main/java/org/sadigit/model/request/GetDataRequest.java new file mode 100644 index 0000000..241b162 --- /dev/null +++ b/src/main/java/org/sadigit/model/request/GetDataRequest.java @@ -0,0 +1,20 @@ +package org.sadigit.model.request; + +import jakarta.ws.rs.QueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class GetDataRequest { + + @QueryParam("p_kode") + String p_kode; + + @QueryParam("p_input") + String p_input; +} diff --git a/src/main/java/org/sadigit/model/request/GetRatingPlgnRequest.java b/src/main/java/org/sadigit/model/request/GetRatingPlgnRequest.java new file mode 100644 index 0000000..bc49745 --- /dev/null +++ b/src/main/java/org/sadigit/model/request/GetRatingPlgnRequest.java @@ -0,0 +1,58 @@ +package org.sadigit.model.request; + +import java.util.Map; + +import org.sadigit.control.exception.CustomException; +import org.sadigit.model.response.base.ResponseModel; + +import jakarta.ws.rs.QueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class GetRatingPlgnRequest { + + @NonNull + @QueryParam("p_reportnumber") + String p_reportnumber; + + @NonNull + @QueryParam("p_nilai") + String p_nilai; + + @NonNull + @QueryParam("p_keterangan") + String p_keterangan; + + public void checkParameter() { + if (this.p_reportnumber == null || this.p_reportnumber.isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "No laporan tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.p_nilai == null || this.p_nilai.isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Nilai tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + + if (this.p_keterangan == null || this.p_keterangan.isEmpty()) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Keterangan tidak boleh kosong")) + .build(); + throw new CustomException(null, error); + } + } +} diff --git a/src/main/java/org/sadigit/model/response/CreateGangguanResponse.java b/src/main/java/org/sadigit/model/response/CreateGangguanResponse.java new file mode 100644 index 0000000..a45abcd --- /dev/null +++ b/src/main/java/org/sadigit/model/response/CreateGangguanResponse.java @@ -0,0 +1,19 @@ +package org.sadigit.model.response; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import lombok.Getter; + +@Getter +public class CreateGangguanResponse { + + private final List> out_return; + + public CreateGangguanResponse(String reportNumber) { + this.out_return = new ArrayList<>(); + this.out_return.add(Map.of("reportnumber", reportNumber)); + } + +} diff --git a/src/main/java/org/sadigit/model/response/CreateKeluhanResponse.java b/src/main/java/org/sadigit/model/response/CreateKeluhanResponse.java new file mode 100644 index 0000000..cde9dfc --- /dev/null +++ b/src/main/java/org/sadigit/model/response/CreateKeluhanResponse.java @@ -0,0 +1,8 @@ +package org.sadigit.model.response; + +import lombok.Getter; + +@Getter +public class CreateKeluhanResponse { + String reportnumber; +} diff --git a/src/main/java/org/sadigit/model/response/DetailPengaduanFlowResponse.java b/src/main/java/org/sadigit/model/response/DetailPengaduanFlowResponse.java new file mode 100644 index 0000000..eab29b0 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/DetailPengaduanFlowResponse.java @@ -0,0 +1,46 @@ +package org.sadigit.model.response; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.stream.Collectors; + +import org.sadigit.entity.transaksi.Gangguan; +import org.sadigit.entity.transaksi.GangguanTransaksi; + +import jakarta.json.bind.annotation.JsonbDateFormat; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class DetailPengaduanFlowResponse { + Long reguid; + + @JsonbDateFormat("yyyy/MM/dd HH:mm:ss") + LocalDateTime updatedate; + + Double latitude; + Double longitude; + String status; + String nama_regu; + String reportnumber; + + public static DetailPengaduanFlowResponse fromGangguanTransaksi(GangguanTransaksi flow) { + return DetailPengaduanFlowResponse.builder() + .reguid(flow.getGangguan().getRegu() == null ? null :Long.valueOf(flow.getGangguan().getRegu().getId())) + .updatedate(flow.getWaktu()) + .latitude(flow.getGangguan().getLokasi().getCoordinate().x) + .longitude(flow.getGangguan().getLokasi().getCoordinate().y) + .status(flow.getJenis()) + .nama_regu(flow.getGangguan().getRegu() == null ? null : flow.getGangguan().getRegu().getNama()) + .reportnumber(flow.getGangguan().getNo_laporan()) + .build(); + } + + public static List fromGangguan(Gangguan gangguan) { + return gangguan.getGangguan_transaksi() + .stream() + .map(DetailPengaduanFlowResponse::fromGangguanTransaksi) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/org/sadigit/model/response/DetailPengaduanResponse.java b/src/main/java/org/sadigit/model/response/DetailPengaduanResponse.java new file mode 100644 index 0000000..6dc7b43 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/DetailPengaduanResponse.java @@ -0,0 +1,50 @@ +package org.sadigit.model.response; + +import java.time.LocalDateTime; +import org.sadigit.entity.transaksi.Gangguan; +import jakarta.json.bind.annotation.JsonbDateFormat; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class DetailPengaduanResponse { + String summary; + Long customernumber; + Double latitude; + Double longitude; + String reportnumber; + String nohp_petugas; + String token_ctt; + String penyebab; + String tindakan; + String reporteraddress; + String reportername; + String status_marking; + String description; + String nolaporulangawal; + + @JsonbDateFormat("yyyy/MM/dd HH:mm") + LocalDateTime createdate; + + public static DetailPengaduanResponse fromGangguanEntity(Gangguan gangguan) { + return DetailPengaduanResponse.builder() + .summary(gangguan.getKeterangan()) + .customernumber(gangguan.getId_pelanggan_no_meter()) + .latitude(gangguan.getLokasi().getCoordinate().x) + .longitude(gangguan.getLokasi().getCoordinate().y) + .reportnumber(gangguan.getNo_laporan()) + .nohp_petugas(gangguan.getRegu() == null ? null : gangguan.getRegu().getTelepon()) + .token_ctt(gangguan.getCtt()) + .penyebab(gangguan.getPenyebab() == null ? null : gangguan.getPenyebab().getNama()) + .tindakan(gangguan.getTindakan() == null ? null : gangguan.getTindakan().getNama()) + .reporteraddress(gangguan.getAlamat_pelapor()) + .reportername(gangguan.getNama_pelapor()) + .status_marking(gangguan.getStatus_akhir()) + .description(null) + .nolaporulangawal(null) + .createdate(gangguan.getCreated_date()) + .build(); + } + +} diff --git a/src/main/java/org/sadigit/model/response/GarduNyalaResponse.java b/src/main/java/org/sadigit/model/response/GarduNyalaResponse.java new file mode 100644 index 0000000..f65a413 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GarduNyalaResponse.java @@ -0,0 +1,53 @@ +package org.sadigit.model.response; + +import java.time.LocalDateTime; + +import org.sadigit.entity.saidisaifi.masterJaringan.MasterGarduIndukTransaksi; + +import jakarta.json.bind.annotation.JsonbDateFormat; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class GarduNyalaResponse { + String no_laporan; + String unitupi; + String unitap; + String unitup; + + @JsonbDateFormat("yyyy/MM/dd HH:mm") + LocalDateTime tglcatat; + + @JsonbDateFormat("yyyy/MM/dd HH:mm") + LocalDateTime tgl_nyala; + + String kode_gardu; + String nama_gardu; + String status; + String keterangan; + + String longitude; + String latitude; + + public static GarduNyalaResponse fromMasterGarduIndukTransaksi(MasterGarduIndukTransaksi masterGarduIndukTransaksi) { + + Double longitude = masterGarduIndukTransaksi.getGarduInduk().getLokasi().getCoordinate().x; + Double latitude = masterGarduIndukTransaksi.getGarduInduk().getLokasi().getCoordinate().y; + + return GarduNyalaResponse.builder() + .no_laporan(masterGarduIndukTransaksi.getNo_laporan()) + .unitupi(null) + .unitap(null) + .unitup(null) + .tglcatat(masterGarduIndukTransaksi.getWaktu_catat()) + .tgl_nyala(masterGarduIndukTransaksi.getWaktu_catat()) + .kode_gardu(masterGarduIndukTransaksi.getGarduInduk().getKode()) + .nama_gardu(masterGarduIndukTransaksi.getKeterangan()) + .status(masterGarduIndukTransaksi.getStatus()) + .keterangan(masterGarduIndukTransaksi.getKeterangan()) + .longitude(longitude.toString()) + .latitude(latitude.toString()) + .build(); + } +} diff --git a/src/main/java/org/sadigit/model/response/GarduNyalaV2Response.java b/src/main/java/org/sadigit/model/response/GarduNyalaV2Response.java new file mode 100644 index 0000000..53f6f63 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GarduNyalaV2Response.java @@ -0,0 +1,54 @@ +package org.sadigit.model.response; + +import java.time.LocalDateTime; + +import org.sadigit.entity.saidisaifi.masterJaringan.MasterGarduIndukTransaksi; + +import jakarta.json.bind.annotation.JsonbDateFormat; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class GarduNyalaV2Response { + String coverage; + String kode_gardu; + String no_laporan; + String keterangan; + String unitap; + String unitupi; + + @JsonbDateFormat("yyyy/MM/dd HH:mm") + LocalDateTime tglcatat; + + String latitude; + String unitup; + + @JsonbDateFormat("yyyy/MM/dd HH:mm") + LocalDateTime tgl_nyala; + + String nama_gardu; + String longitude; + String status; + + public static GarduNyalaV2Response fromMasterGarduIndukTransaksi (MasterGarduIndukTransaksi masterGarduIndukTransaksi) { + Double longitude = masterGarduIndukTransaksi.getGarduInduk().getLokasi().getCoordinate().x; + Double latitude = masterGarduIndukTransaksi.getGarduInduk().getLokasi().getCoordinate().y; + + return GarduNyalaV2Response.builder() + .coverage(null) + .kode_gardu(masterGarduIndukTransaksi.getGarduInduk().getKode()) + .no_laporan(masterGarduIndukTransaksi.getNo_laporan()) + .keterangan(masterGarduIndukTransaksi.getKeterangan()) + .unitap(null) + .unitupi(null) + .tglcatat(masterGarduIndukTransaksi.getWaktu_catat()) + .latitude(latitude.toString()) + .unitup(null) + .tgl_nyala(masterGarduIndukTransaksi.getWaktu_catat()) + .nama_gardu(masterGarduIndukTransaksi.getGarduInduk().getNama()) + .longitude(longitude.toString()) + .status(masterGarduIndukTransaksi.getStatus()) + .build(); + } +} diff --git a/src/main/java/org/sadigit/model/response/GarduPadamResponse.java b/src/main/java/org/sadigit/model/response/GarduPadamResponse.java new file mode 100644 index 0000000..7c46ac2 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GarduPadamResponse.java @@ -0,0 +1,53 @@ +package org.sadigit.model.response; + +import java.time.LocalDateTime; + +import org.sadigit.entity.saidisaifi.masterJaringan.MasterGarduIndukTransaksi; + +import jakarta.json.bind.annotation.JsonbDateFormat; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class GarduPadamResponse { + String kode_gardu; + String no_laporan; + String keterangan; + String unitap; + String unitupi; + String unitup; + + @JsonbDateFormat("yyyy/MM/dd HH:mm") + LocalDateTime tglcatat; + + @JsonbDateFormat("yyyy/MM/dd HH:mm") + LocalDateTime tlg_padam; + + String latitude; + String longitude; + + String status; + String nama_gardu; + + public static GarduPadamResponse fromMasterGarduIndukTransaksi(MasterGarduIndukTransaksi masterGarduIndukTransaksi) { + Double longitude = masterGarduIndukTransaksi.getGarduInduk().getLokasi().getCoordinate().x; + Double latitude = masterGarduIndukTransaksi.getGarduInduk().getLokasi().getCoordinate().y; + + return GarduPadamResponse.builder() + .kode_gardu(masterGarduIndukTransaksi.getGarduInduk().getKode()) + .no_laporan(masterGarduIndukTransaksi.getNo_laporan()) + .keterangan(masterGarduIndukTransaksi.getKeterangan()) + .unitap(null) + .unitupi(null) + .unitup(null) + .tglcatat(masterGarduIndukTransaksi.getWaktu_catat()) + .tlg_padam(masterGarduIndukTransaksi.getWaktu_catat()) + .latitude(latitude.toString()) + .longitude(longitude.toString()) + .status(masterGarduIndukTransaksi.getStatus()) + .nama_gardu(masterGarduIndukTransaksi.getKeterangan()) + .build(); + } + +} diff --git a/src/main/java/org/sadigit/model/response/GarduPadamV2Response.java b/src/main/java/org/sadigit/model/response/GarduPadamV2Response.java new file mode 100644 index 0000000..6775ae4 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GarduPadamV2Response.java @@ -0,0 +1,54 @@ +package org.sadigit.model.response; + +import java.time.LocalDateTime; + +import org.sadigit.entity.saidisaifi.masterJaringan.MasterGarduIndukTransaksi; + +import jakarta.json.bind.annotation.JsonbDateFormat; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class GarduPadamV2Response { + String coverage; + String kode_gardu; + String no_laporan; + String keterangan; + String unitap; + String unitupi; + + @JsonbDateFormat("yyyy/MM/dd HH:mm") + LocalDateTime tglcatat; + + String latitude; + String unitup; + + @JsonbDateFormat("yyyy/MM/dd HH:mm") + LocalDateTime tgl_padam; + + String nama_gardu; + String longitude; + String status; + + public static GarduPadamV2Response fromMasterGarduIndukTransaksi (MasterGarduIndukTransaksi masterGarduIndukTransaksi) { + Double longitude = masterGarduIndukTransaksi.getGarduInduk().getLokasi().getCoordinate().x; + Double latitude = masterGarduIndukTransaksi.getGarduInduk().getLokasi().getCoordinate().y; + + return GarduPadamV2Response.builder() + .coverage(null) + .kode_gardu(masterGarduIndukTransaksi.getGarduInduk().getKode()) + .no_laporan(masterGarduIndukTransaksi.getNo_laporan()) + .keterangan(masterGarduIndukTransaksi.getKeterangan()) + .unitap(null) + .unitupi(null) + .tglcatat(masterGarduIndukTransaksi.getWaktu_catat()) + .latitude(latitude.toString()) + .unitup(null) + .tgl_padam(masterGarduIndukTransaksi.getWaktu_catat()) + .nama_gardu(masterGarduIndukTransaksi.getGarduInduk().getNama()) + .longitude(longitude.toString()) + .status(masterGarduIndukTransaksi.getStatus()) + .build(); + } +} diff --git a/src/main/java/org/sadigit/model/response/GarduRencanaResponse.java b/src/main/java/org/sadigit/model/response/GarduRencanaResponse.java new file mode 100644 index 0000000..ab03296 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GarduRencanaResponse.java @@ -0,0 +1,53 @@ +package org.sadigit.model.response; + +import java.time.LocalDateTime; + +import org.sadigit.entity.saidisaifi.masterJaringan.MasterGarduIndukTransaksi; + +import jakarta.json.bind.annotation.JsonbDateFormat; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class GarduRencanaResponse { + String no_laporan; + String unitupi; + String unitap; + String unitup; + + @JsonbDateFormat("yyyy/MM/dd HH:mm") + LocalDateTime tglcatat; + + @JsonbDateFormat("yyyy/MM/dd HH:mm") + LocalDateTime tgl_awal; + + String kode_gardu; + String nama_gardu; + String status; + String keterangan; + + String longitude; + String latitude; + + public static GarduRencanaResponse fromMasterGarduIndukTransaksi(MasterGarduIndukTransaksi masterGarduIndukTransaksi) { + + Double longitude = masterGarduIndukTransaksi.getGarduInduk().getLokasi().getCoordinate().x; + Double latitude = masterGarduIndukTransaksi.getGarduInduk().getLokasi().getCoordinate().y; + + return GarduRencanaResponse.builder() + .no_laporan(masterGarduIndukTransaksi.getNo_laporan()) + .unitupi(null) + .unitap(null) + .unitup(null) + .tglcatat(masterGarduIndukTransaksi.getWaktu_catat()) + .tgl_awal(masterGarduIndukTransaksi.getWaktu_catat()) + .kode_gardu(masterGarduIndukTransaksi.getGarduInduk().getKode()) + .nama_gardu(masterGarduIndukTransaksi.getKeterangan()) + .status(masterGarduIndukTransaksi.getStatus()) + .keterangan(masterGarduIndukTransaksi.getKeterangan()) + .longitude(longitude.toString()) + .latitude(latitude.toString()) + .build(); + } +} diff --git a/src/main/java/org/sadigit/model/response/GarduRencanaV2Response.java b/src/main/java/org/sadigit/model/response/GarduRencanaV2Response.java new file mode 100644 index 0000000..61299a0 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GarduRencanaV2Response.java @@ -0,0 +1,54 @@ +package org.sadigit.model.response; + +import java.time.LocalDateTime; + +import org.sadigit.entity.saidisaifi.masterJaringan.MasterGarduIndukTransaksi; + +import jakarta.json.bind.annotation.JsonbDateFormat; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class GarduRencanaV2Response { + String coverage; + String kode_gardu; + String no_laporan; + String keterangan; + String unitap; + String unitupi; + + @JsonbDateFormat("yyyy/MM/dd HH:mm") + LocalDateTime tglcatat; + + String latitude; + String unitup; + + @JsonbDateFormat("yyyy/MM/dd HH:mm") + LocalDateTime tgl_awal; + + String nama_gardu; + String longitude; + String status; + + public static GarduRencanaV2Response fromMasterGarduIndukTransaksi (MasterGarduIndukTransaksi masterGarduIndukTransaksi) { + Double longitude = masterGarduIndukTransaksi.getGarduInduk().getLokasi().getCoordinate().x; + Double latitude = masterGarduIndukTransaksi.getGarduInduk().getLokasi().getCoordinate().y; + + return GarduRencanaV2Response.builder() + .coverage(null) + .kode_gardu(masterGarduIndukTransaksi.getGarduInduk().getKode()) + .no_laporan(masterGarduIndukTransaksi.getNo_laporan()) + .keterangan(masterGarduIndukTransaksi.getKeterangan()) + .unitap(null) + .unitupi(null) + .tglcatat(masterGarduIndukTransaksi.getWaktu_catat()) + .latitude(latitude.toString()) + .unitup(null) + .tgl_awal(masterGarduIndukTransaksi.getWaktu_catat()) + .nama_gardu(masterGarduIndukTransaksi.getGarduInduk().getNama()) + .longitude(longitude.toString()) + .status(masterGarduIndukTransaksi.getStatus()) + .build(); + } +} diff --git a/src/main/java/org/sadigit/model/response/GetCttResponse.java b/src/main/java/org/sadigit/model/response/GetCttResponse.java new file mode 100644 index 0000000..ee91785 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GetCttResponse.java @@ -0,0 +1,34 @@ +package org.sadigit.model.response; + +import java.time.LocalDateTime; + +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class GetCttResponse { + Long kode08_result; + String kode41; + String kode44; + String kode46; + LocalDateTime tglcatat; + String kode45; + String reportnumber; + Long kode46_result; + String kode37; + Long createdate; + Long kode37_result; + String kode47; + String idpel; + Long kode45_result; + Long kode47_result; + String kode08; + Long kode44_result; + Long kode41_result; + Long kode71_result; + Long id; + Long kode70_result; + String kode71; + String kode70; +} diff --git a/src/main/java/org/sadigit/model/response/GetDataKeteranganLokasi.java b/src/main/java/org/sadigit/model/response/GetDataKeteranganLokasi.java new file mode 100644 index 0000000..773be84 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GetDataKeteranganLokasi.java @@ -0,0 +1,46 @@ +package org.sadigit.model.response; + +import org.sadigit.entity.referensi.Kabupaten; +import org.sadigit.entity.referensi.Kecamatan; +import org.sadigit.entity.referensi.MasterKelurahan; +import org.sadigit.entity.referensi.Provinsi; + +import lombok.Builder; +import lombok.Getter; +import lombok.AllArgsConstructor; + +@Builder +@Getter +@AllArgsConstructor +public class GetDataKeteranganLokasi { + private Long id; + private String keterangan; + + public static GetDataKeteranganLokasi fromMasterKelurahan(MasterKelurahan masterKelurahan) { + return GetDataKeteranganLokasi.builder() + .id(masterKelurahan.getId_kelurahan()) + .keterangan(masterKelurahan.getNama_kelurahan()) + .build(); + } + + public static GetDataKeteranganLokasi fromMasterKecamatan(Kecamatan kecamatan) { + return GetDataKeteranganLokasi.builder() + .id(kecamatan.getId()) + .keterangan(kecamatan.getNama()) + .build(); + } + + public static GetDataKeteranganLokasi fromMasterKabupaten(Kabupaten kabupaten) { + return GetDataKeteranganLokasi.builder() + .id(kabupaten.getId()) + .keterangan(kabupaten.getNama()) + .build(); + } + + public static GetDataKeteranganLokasi fromMasterProvinsi(Provinsi provinsi) { + return GetDataKeteranganLokasi.builder() + .id(provinsi.getId()) + .keterangan(provinsi.getNama_provinsi()) + .build(); + } +} diff --git a/src/main/java/org/sadigit/model/response/GetDataKode4Response.java b/src/main/java/org/sadigit/model/response/GetDataKode4Response.java new file mode 100644 index 0000000..98d8a7e --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GetDataKode4Response.java @@ -0,0 +1,29 @@ +package org.sadigit.model.response; + +import org.sadigit.entity.saidisaifi.masterJaringan.MasterGarduDistribusi; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class GetDataKode4Response { + String no_tiang; + String status_nyala; + String kode_asset; + String nama; + Double latitude; + String alamat; + Double longitude; + + public static GetDataKode4Response fromGarduIndukDistribusi(MasterGarduDistribusi garduDistribusi) { + return GetDataKode4Response.builder() + .no_tiang(garduDistribusi.getNoTiang()) + .status_nyala(garduDistribusi.getStatus()) + .kode_asset(garduDistribusi.getKode()) + .nama(garduDistribusi.getNama()) + .latitude(garduDistribusi.getPoint().getCoordinate().y) + .alamat(garduDistribusi.getAlamat()) + .longitude(garduDistribusi.getPoint().getCoordinate().x) + .build(); + } +} diff --git a/src/main/java/org/sadigit/model/response/GetDataResponse.java b/src/main/java/org/sadigit/model/response/GetDataResponse.java new file mode 100644 index 0000000..210c9a7 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GetDataResponse.java @@ -0,0 +1,72 @@ +package org.sadigit.model.response; + +import java.time.LocalDateTime; +import org.sadigit.entity.transaksi.GangguanTMTransaksi; + +import jakarta.json.bind.annotation.JsonbDateFormat; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class GetDataResponse { + String no_laporan; + String keterangan; + + @JsonbDateFormat("yyyy/MM/dd hh:mm") + LocalDateTime tlgflag; + + Integer flag; + + @JsonbDateFormat("yyyy/MM/dd hh:mm") + LocalDateTime tglcatat; + + Integer jenis; + String status; + + public static GetDataResponse fromGangguanTM(GangguanTMTransaksi gangguan) { + int jenisGangguan = 0; + String keterangan = ""; + switch(gangguan.getJenis().toLowerCase()) { + case "selesai" : { + jenisGangguan = 1; + keterangan = "Status Pengaduan Selesai"; + } break; + case "dalam perjalanan" : { + jenisGangguan = 2; + keterangan = "Petugas Dalam Perjalanan"; + } break; + case "penugasan regu" : { + jenisGangguan = 3; + keterangan = "Penugasan Petugas Regu"; + } break; + case "dalam pengerjaan" : { + jenisGangguan = 4; + keterangan = "Petugas Dalam Pengerjaan"; + } break; + case "nyala" : { + jenisGangguan = 5; + keterangan = "Status Nyala"; + } break; + case "nyala sementara" : { + jenisGangguan = 6; + keterangan = "Status Nyala Sementara"; + } break; + default : { + keterangan = gangguan.getJenis(); + } + } + + return GetDataResponse.builder() + .no_laporan(gangguan.getGangguanTm().getNoGangguanTm()) + .flag(gangguan.getNotif_flag() == null ? 0 : 1) + .jenis(jenisGangguan) + .keterangan(keterangan) + .status(gangguan.getId().toString()) + // .tglcatat(BigDecimal.valueOf(gangguan.getCreated_date().toInstant(ZoneOffset.ofHours(7)).toEpochMilli())) + .tglcatat(gangguan.getCreated_date()) + .tlgflag(gangguan.getWaktu_read()) + .build(); + + } +} diff --git a/src/main/java/org/sadigit/model/response/GetFotoResponse.java b/src/main/java/org/sadigit/model/response/GetFotoResponse.java new file mode 100644 index 0000000..64ea95b --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GetFotoResponse.java @@ -0,0 +1,11 @@ +package org.sadigit.model.response; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class GetFotoResponse{ + String out_message; + T out_return; +} diff --git a/src/main/java/org/sadigit/model/response/GetHistoByIdpelResponse.java b/src/main/java/org/sadigit/model/response/GetHistoByIdpelResponse.java new file mode 100644 index 0000000..b1e64b9 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GetHistoByIdpelResponse.java @@ -0,0 +1,34 @@ +package org.sadigit.model.response; + +import java.time.LocalDateTime; +import jakarta.json.bind.annotation.JsonbDateFormat; +import jakarta.persistence.Tuple; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class GetHistoByIdpelResponse { + String summary; + Long customernumber; + String reportnumber; + String reporteraddress; + + @JsonbDateFormat("yyyy/MM/dd hh:mm") + LocalDateTime createdate; + + String reportername; + String nama_regu; + + public static GetHistoByIdpelResponse fromTuple(Tuple tuple) { + return GetHistoByIdpelResponse.builder() + .summary(tuple.get("keterangan", String.class)) + .customernumber(tuple.get("idpel", Long.class)) + .reportnumber(tuple.get("noLaporan", String.class)) + .reporteraddress(tuple.get("alamatPelapor", String.class)) + .createdate(tuple.get("createdDate", LocalDateTime.class)) + .reportername(tuple.get("namaPelapor", String.class)) + .nama_regu(tuple.get("namaRegu", String.class)) + .build(); + } +} diff --git a/src/main/java/org/sadigit/model/response/GetHistoriGangguanByIdResponse.java b/src/main/java/org/sadigit/model/response/GetHistoriGangguanByIdResponse.java new file mode 100644 index 0000000..e480353 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GetHistoriGangguanByIdResponse.java @@ -0,0 +1,49 @@ +package org.sadigit.model.response; + +import java.time.LocalDateTime; + +import org.sadigit.entity.transaksi.Gangguan; +import org.sadigit.entity.transaksi.Keluhan; + +import jakarta.json.bind.annotation.JsonbDateFormat; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class GetHistoriGangguanByIdResponse { + private String summary; + private Long customernumber; + private String reportnumber; + private String reporteraddress; + private String reportername; + + @JsonbDateFormat("YYYY/mm/dd hh:mm") + private LocalDateTime createdate; + + private String nama_regu; + + public static GetHistoriGangguanByIdResponse fromGangguan(Gangguan gangguan) { + return GetHistoriGangguanByIdResponse.builder() + .summary(gangguan.getKeterangan()) + .customernumber(gangguan.getId_pelanggan_no_meter()) + .reportnumber(gangguan.getNo_laporan()) + .reporteraddress(gangguan.getAlamat_pelapor()) + .createdate(gangguan.getCreated_date()) + .reportername(gangguan.getNama_pelapor()) + .nama_regu(gangguan.getRegu() == null ? null : gangguan.getRegu().getNama()) + .build(); + } + + public static GetHistoriGangguanByIdResponse fromKeluhan(Keluhan keluhan) { + return GetHistoriGangguanByIdResponse.builder() + .summary(keluhan.getKeterangan()) + .customernumber(keluhan.getId_pelanggan_no_meter()) + .reportnumber(keluhan.getNo_laporan()) + .reporteraddress(keluhan.getAlamat_pelapor()) + .createdate(keluhan.getCreated_date()) + .reportername(keluhan.getNama_pelapor()) + .nama_regu(keluhan.getRegu() == null ? null : keluhan.getRegu().getNama()) + .build(); + } +} diff --git a/src/main/java/org/sadigit/model/response/GetMasterJenisPengaduanResponse.java b/src/main/java/org/sadigit/model/response/GetMasterJenisPengaduanResponse.java new file mode 100644 index 0000000..703ee3f --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GetMasterJenisPengaduanResponse.java @@ -0,0 +1,34 @@ +package org.sadigit.model.response; + +import org.sadigit.entity.referensi.SubTipeKeluhan; +import lombok.Builder; +import lombok.Data; + +/** + * @author Tias Mardiansyah + */ + +@Data +@Builder +public class GetMasterJenisPengaduanResponse { + private String jenis_pengaduan; + private Long kode_pengaduan; + private Long subkode_pengaduan; + private String subjenis_pengaduan; + private String pengaduan; + + public static GetMasterJenisPengaduanResponse fromSubTipeKeluhan(SubTipeKeluhan tipeKeluhan) { + + String tipePengaduan = tipeKeluhan.getProjectid() == 1 + ? "GANGGUAN" + : "KELUHAN"; + + return GetMasterJenisPengaduanResponse.builder() + .jenis_pengaduan(tipeKeluhan.getTipeKeluhan().getIssuetypename()) + .kode_pengaduan(tipeKeluhan.getTipeKeluhan().getIssuetypeid()) + .subkode_pengaduan(tipeKeluhan.getSubissuetypeid()) + .subjenis_pengaduan(tipeKeluhan.getSubissuetypename()) + .pengaduan(tipePengaduan) + .build(); + } +} diff --git a/src/main/java/org/sadigit/model/response/GetMasterJenisPengaduanResponseV2.java b/src/main/java/org/sadigit/model/response/GetMasterJenisPengaduanResponseV2.java new file mode 100644 index 0000000..b2318fe --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GetMasterJenisPengaduanResponseV2.java @@ -0,0 +1,26 @@ +package org.sadigit.model.response; + +import org.sadigit.entity.referensi.SubTipeKeluhan; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class GetMasterJenisPengaduanResponseV2 { + private String jenis_pengaduan; + private Long kode_pengaduan; + private Long subkode_pengaduan; + private String subjenis_pengaduan; + private String pengaduan; + + public static GetMasterJenisPengaduanResponseV2 fromSubTipeKeluhan(SubTipeKeluhan tipeKeluhan) { + + return GetMasterJenisPengaduanResponseV2.builder() + .jenis_pengaduan(tipeKeluhan.getTipeKeluhan().getIssuetypename()) + .kode_pengaduan(tipeKeluhan.getTipeKeluhan().getIssuetypeid()) + .subkode_pengaduan(tipeKeluhan.getSubissuetypeid()) + .subjenis_pengaduan(tipeKeluhan.getSubissuetypename()) + .pengaduan("GANGGUAN") + .build(); + } +} diff --git a/src/main/java/org/sadigit/model/response/GetRatingPlnResponse.java b/src/main/java/org/sadigit/model/response/GetRatingPlnResponse.java new file mode 100644 index 0000000..9e80913 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/GetRatingPlnResponse.java @@ -0,0 +1,17 @@ +package org.sadigit.model.response; + +import java.time.LocalDateTime; +import jakarta.json.bind.annotation.JsonbDateFormat; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class GetRatingPlnResponse { + String no_laporan; + String keterangan; + String nilai; + + @JsonbDateFormat("yyyy/MM/dd HH:mm") + LocalDateTime createddate; +} diff --git a/src/main/java/org/sadigit/model/response/ResponChat.java b/src/main/java/org/sadigit/model/response/ResponChat.java new file mode 100644 index 0000000..40943b8 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/ResponChat.java @@ -0,0 +1,23 @@ +package org.sadigit.model.response; + +import lombok.*; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@ToString +public class ResponChat implements Serializable { + +private String report_number; + + public String getReport_number() { + return report_number; + } + + public void setReport_number(String report_number) { + this.report_number = report_number; + } +} diff --git a/src/main/java/org/sadigit/model/response/base/ResponseModel.java b/src/main/java/org/sadigit/model/response/base/ResponseModel.java new file mode 100644 index 0000000..d6d7393 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/base/ResponseModel.java @@ -0,0 +1,16 @@ +package org.sadigit.model.response.base; + +import lombok.*; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@ToString +public class ResponseModel implements Serializable { + private String message; + private T data; +} + diff --git a/src/main/java/org/sadigit/model/response/base/ResponseModelGardu.java b/src/main/java/org/sadigit/model/response/base/ResponseModelGardu.java new file mode 100644 index 0000000..7582728 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/base/ResponseModelGardu.java @@ -0,0 +1,19 @@ +package org.sadigit.model.response.base; + +import lombok.*; + +import java.io.Serializable; +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@ToString +public class ResponseModelGardu implements Serializable { + private String desc; + private List out_data; + private List out_data_nyala; + private List out_data_padam; + private List out_data_rencana; +} diff --git a/src/main/java/org/sadigit/model/response/base/ResponseModelGarduV2.java b/src/main/java/org/sadigit/model/response/base/ResponseModelGarduV2.java new file mode 100644 index 0000000..d67d5ee --- /dev/null +++ b/src/main/java/org/sadigit/model/response/base/ResponseModelGarduV2.java @@ -0,0 +1,14 @@ +package org.sadigit.model.response.base; + +import lombok.*; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@ToString +public class ResponseModelGarduV2 implements Serializable { + private T p_return; +} \ No newline at end of file diff --git a/src/main/java/org/sadigit/model/response/base/ResponseModelOutReturn.java b/src/main/java/org/sadigit/model/response/base/ResponseModelOutReturn.java new file mode 100644 index 0000000..e01f164 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/base/ResponseModelOutReturn.java @@ -0,0 +1,16 @@ +package org.sadigit.model.response.base; + +import lombok.*; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@ToString +public class ResponseModelOutReturn implements Serializable { + private String outmessage; + private T outreturn; +} + diff --git a/src/main/java/org/sadigit/model/response/base/ResponseModelWithFlow.java b/src/main/java/org/sadigit/model/response/base/ResponseModelWithFlow.java new file mode 100644 index 0000000..ead46b5 --- /dev/null +++ b/src/main/java/org/sadigit/model/response/base/ResponseModelWithFlow.java @@ -0,0 +1,19 @@ +package org.sadigit.model.response.base; + +import lombok.*; + +import java.io.Serializable; +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@ToString +public class ResponseModelWithFlow implements Serializable { + + private String Message; + private List Data; + private List Flow; +} + diff --git a/src/main/java/org/sadigit/repository/entity/auth/AuthRepository.java b/src/main/java/org/sadigit/repository/entity/auth/AuthRepository.java new file mode 100644 index 0000000..132f2a0 --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/auth/AuthRepository.java @@ -0,0 +1,9 @@ +package org.sadigit.repository.entity.auth; + +import org.sadigit.entity.AppUser; + +import io.quarkus.hibernate.orm.panache.PanacheRepository; + +public interface AuthRepository extends PanacheRepository { + +} diff --git a/src/main/java/org/sadigit/repository/entity/auth/AuthRepositoryImpl.java b/src/main/java/org/sadigit/repository/entity/auth/AuthRepositoryImpl.java new file mode 100644 index 0000000..2edbd4c --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/auth/AuthRepositoryImpl.java @@ -0,0 +1,147 @@ +package org.sadigit.repository.entity.auth; + +import jakarta.enterprise.context.ApplicationScoped; + +@ApplicationScoped +public class AuthRepositoryImpl implements AuthRepository { + // @Inject + // Session session; + // Long idRegu; + + // @Transactional + // public AppUserDTO sign(AuthCmd cmd) { + // String username = cmd.username(); + // String password = cmd.password(); + // try { + // String hashed = hashToMD5(password); + + // AppUser entity = AppUser + // .find("select a from AppUser a WHERE username = ?1 and password = ?2 and isActive =?3", + // username, + // hashed, "1") + // .singleResult(); + // if (entity == null) { + // return new AppUserDTO(false, "Username or password is incorrect", null); + // } else { + // Regional regional = entity.getRegional(); + // Posko posko = entity.getPosko(); + // Uid uid = entity.getUid(); + // Ulp ulp = entity.getUlp(); + // Up3 up3 = entity.getUp3(); + // Integer level = 0; + // if (posko != null && ulp == null && up3 == null && uid == null && regional == null) { + // level = 5; + // } else if (posko == null && ulp != null && up3 == null && uid == null && regional == null) { + // level = 4; + // } else if (posko == null && ulp == null && up3 != null && uid == null && regional == null) { + // level = 3; + // } else if (posko == null && ulp == null && up3 == null && uid != null && regional == null) { + // level = 2; + // } else if (posko == null && ulp == null && up3 == null && uid == null && regional != null) { + // level = 1; + + // } + // if (level == 5) { + // System.out.println("Level 5"); + // posko = entity.getPosko(); + // ulp = entity.getPosko().getUlp(); + // up3 = entity.getPosko().getUlp().getUp3(); + // uid = entity.getPosko().getUlp().getUp3().getUid(); + // regional = entity.getPosko().getUlp().getUp3().getUid().getRegional(); + // } else if (level == 4) { + // System.out.println("Level 4"); + // posko = new Posko(); + // posko.setId(0L); + // posko.setNama(""); + // ulp = entity.getUlp(); + // up3 = entity.getUlp().getUp3(); + // uid = entity.getUlp().getUp3().getUid(); + // regional = entity.getUlp().getUp3().getUid().getRegional(); + // } else if (level == 3) { + // System.out.println("Level 3"); + + // posko = new Posko(); + // posko.setId(0L); + // posko.setNama(""); + // ulp = new Ulp(); + // ulp.setId(0L); + // ulp.setNama(""); + // up3 = entity.getUp3(); + // uid = entity.getUp3().getUid(); + // regional = entity.getUp3().getUid().getRegional(); + // } else if (level == 2) { + // System.out.println("Level 2"); + + // posko = new Posko(); + // posko.setId(0L); + // posko.setNama(""); + // ulp = new Ulp(); + // ulp.setId(0L); + // ulp.setNama(""); + // up3 = new Up3(); + // up3.setId(0L); + // up3.setNama(""); + // uid = entity.getUid(); + // regional = entity.getUid().getRegional(); + // } else if (level == 1) { + // System.out.println("Level 1"); + // posko = new Posko(); + // posko.setId(0L); + // posko.setNama(""); + // ulp = new Ulp(); + // ulp.setId(0L); + // ulp.setNama(""); + // up3 = new Up3(); + // up3.setId(0L); + // up3.setNama(""); + // uid = new Uid(); + // uid.setId(0L); + // uid.setNama(""); + // regional = entity.getRegional(); + // } + // AppUser.update("isLogin", 1); + // UserDTO userDTO = new UserDTO(entity.getUserId(), + // entity.getUsername(), entity.getEmployeeName(), + // entity.getNip(), entity.getAddress(), + // entity.getPhone(), entity.getMobile(), + // entity.getEmail(), + // entity.getPosition().getNama(), entity.getUnitId(), + // entity.getIsActive(), entity.getPicture(), + // null, + // posko.getId(), posko.getNama(), + // up3.getId(), up3.getNama(), + // uid.getId(), uid.getNama(), + // ulp.getId(), ulp.getNama(), + // regional.getId(), regional.getNama()); + + // return new AppUserDTO(true, "Login success", userDTO); + // } + + // } catch (NoSuchAlgorithmException e) { + // e.printStackTrace(); + // System.out.println("Error: " + e.getMessage()); + // return new AppUserDTO(false, "Error: " + e.getMessage(), null); + // } + + // } + + // public String hashToMD5(String password) throws NoSuchAlgorithmException { + // try { + + // MessageDigest md = MessageDigest.getInstance("MD5"); + + // // Update message digest with input string + // md.update(password.getBytes()); + + // // Generate MD5 hash bytes + // byte[] hashBytes = md.digest(); + + // // Encode MD5 hash bytes to Base64 + // String base64Hash = Base64.getEncoder().encodeToString(hashBytes); + // return base64Hash; + // } catch (NoSuchAlgorithmException e) { + // e.printStackTrace(); + // return null; + // } + // } +} diff --git a/src/main/java/org/sadigit/repository/entity/referensi/MaterialRepository.java b/src/main/java/org/sadigit/repository/entity/referensi/MaterialRepository.java new file mode 100644 index 0000000..76cd14e --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/referensi/MaterialRepository.java @@ -0,0 +1,24 @@ +package org.sadigit.repository.entity.referensi; + +import jakarta.enterprise.context.ApplicationScoped; +import lombok.Data; + +import java.util.List; + +import org.sadigit.entity.referensi.Material; + +import io.quarkus.hibernate.orm.panache.PanacheRepository; + +@Data +@ApplicationScoped +public class MaterialRepository implements PanacheRepository { + + public List findAllMaterial() { + return Material.listAll(); + } + + public List findMaterialByPoskoId(Long poskoId) { + return Material.find("posko.id", poskoId).list(); + } + +} diff --git a/src/main/java/org/sadigit/repository/entity/referensi/PoskoRepository.java b/src/main/java/org/sadigit/repository/entity/referensi/PoskoRepository.java new file mode 100644 index 0000000..2f8e60c --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/referensi/PoskoRepository.java @@ -0,0 +1,17 @@ +package org.sadigit.repository.entity.referensi; + +import jakarta.enterprise.context.ApplicationScoped; + +import java.util.List; + +import org.sadigit.entity.referensi.Posko; + +import io.quarkus.hibernate.orm.panache.PanacheRepository; + +@ApplicationScoped +public class PoskoRepository implements PanacheRepository { + + public List findByIdUp3(Long idup3) { + return this.find("SELECT p.id,p.nama FROM Posko p WHERE p.ulp.idUp3 = ?1", idup3).list(); + } +} \ No newline at end of file diff --git a/src/main/java/org/sadigit/repository/entity/referensi/PulauRepository.java b/src/main/java/org/sadigit/repository/entity/referensi/PulauRepository.java new file mode 100644 index 0000000..d1d786b --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/referensi/PulauRepository.java @@ -0,0 +1,18 @@ +package org.sadigit.repository.entity.referensi; + +import jakarta.enterprise.context.ApplicationScoped; + +import java.util.List; + +import org.sadigit.entity.referensi.Pulau; + +import io.quarkus.hibernate.orm.panache.PanacheRepository; + +@ApplicationScoped +public class PulauRepository implements PanacheRepository { + + public List findAllPulau() { + return this.listAll(); + } + +} diff --git a/src/main/java/org/sadigit/repository/entity/referensi/RegionalRepository.java b/src/main/java/org/sadigit/repository/entity/referensi/RegionalRepository.java new file mode 100644 index 0000000..e832b0e --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/referensi/RegionalRepository.java @@ -0,0 +1,17 @@ +package org.sadigit.repository.entity.referensi; + +import jakarta.enterprise.context.ApplicationScoped; +import lombok.Data; +import java.util.List; +import org.sadigit.entity.referensi.Regional; +import io.quarkus.hibernate.orm.panache.PanacheRepository; + +@Data +@ApplicationScoped +public class RegionalRepository implements PanacheRepository { + + public List findAllRegional() { + return this.listAll(); + } + +} diff --git a/src/main/java/org/sadigit/repository/entity/referensi/SubFasilitasRepository.java b/src/main/java/org/sadigit/repository/entity/referensi/SubFasilitasRepository.java new file mode 100644 index 0000000..46c941e --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/referensi/SubFasilitasRepository.java @@ -0,0 +1,15 @@ +package org.sadigit.repository.entity.referensi; + +import java.util.List; +import org.sadigit.entity.referensi.SubFasilitas; +import io.quarkus.hibernate.orm.panache.PanacheRepository; +import jakarta.enterprise.context.ApplicationScoped; + +@ApplicationScoped +public class SubFasilitasRepository implements PanacheRepository { + + public List findSubFasilitasByFasilitasId(Long fasilitasId) { + return SubFasilitas.find("fasilitas.id", fasilitasId).list(); + } + +} diff --git a/src/main/java/org/sadigit/repository/entity/referensi/SubKelompokRepository.java b/src/main/java/org/sadigit/repository/entity/referensi/SubKelompokRepository.java new file mode 100644 index 0000000..5e2c983 --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/referensi/SubKelompokRepository.java @@ -0,0 +1,16 @@ +package org.sadigit.repository.entity.referensi; + +import java.util.List; + +import org.sadigit.entity.referensi.Kelompok; + +import io.quarkus.hibernate.orm.panache.PanacheRepository; +import jakarta.enterprise.context.ApplicationScoped; + +@ApplicationScoped +public class SubKelompokRepository implements PanacheRepository { + + public List findSubKelompokByIdKelompok(Long id_kelompok) { + return Kelompok.find("id_kelompok", id_kelompok).firstResult(); + } +} diff --git a/src/main/java/org/sadigit/repository/entity/referensi/SubTipeKeluhanRepository.java b/src/main/java/org/sadigit/repository/entity/referensi/SubTipeKeluhanRepository.java new file mode 100644 index 0000000..b41f415 --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/referensi/SubTipeKeluhanRepository.java @@ -0,0 +1,16 @@ +package org.sadigit.repository.entity.referensi; + +import jakarta.enterprise.context.ApplicationScoped; +import java.util.List; +import org.sadigit.entity.referensi.SubTipeKeluhan; +import io.quarkus.hibernate.orm.panache.PanacheRepository; + +@ApplicationScoped +public class SubTipeKeluhanRepository implements PanacheRepository { + + public List getSubTipeKeluhanByTipeKeluhanId(Long issuedtypeid) { + + return list("tipeKeluhan.issuetypeid", issuedtypeid); + } + +} diff --git a/src/main/java/org/sadigit/repository/entity/referensi/UidRepository.java b/src/main/java/org/sadigit/repository/entity/referensi/UidRepository.java new file mode 100644 index 0000000..272af35 --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/referensi/UidRepository.java @@ -0,0 +1,23 @@ +package org.sadigit.repository.entity.referensi; + +import jakarta.enterprise.context.ApplicationScoped; +import lombok.Data; + +import java.util.List; + +import org.sadigit.entity.referensi.Uid; + +import io.quarkus.hibernate.orm.panache.PanacheRepository; + +@Data +@ApplicationScoped +public class UidRepository implements PanacheRepository{ + + public List findAllUid() { + return Uid.listAll(); + } + + public List findByIdPulau(Long pulauId) { + return Uid.find("idPulau", pulauId).list(); + } +} diff --git a/src/main/java/org/sadigit/repository/entity/referensi/UlpRepository.java b/src/main/java/org/sadigit/repository/entity/referensi/UlpRepository.java new file mode 100644 index 0000000..e97aea7 --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/referensi/UlpRepository.java @@ -0,0 +1,17 @@ +package org.sadigit.repository.entity.referensi; + +import jakarta.enterprise.context.ApplicationScoped; + +import java.util.List; + +import org.sadigit.entity.referensi.Ulp; + +import io.quarkus.hibernate.orm.panache.PanacheRepository; + +@ApplicationScoped +public class UlpRepository implements PanacheRepository{ + + public List findUlpByUp3(Long id_up3) { + return Ulp.find("idUp3", id_up3).list(); + } +} diff --git a/src/main/java/org/sadigit/repository/entity/referensi/Up3Repository.java b/src/main/java/org/sadigit/repository/entity/referensi/Up3Repository.java new file mode 100644 index 0000000..a5f8b01 --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/referensi/Up3Repository.java @@ -0,0 +1,17 @@ +package org.sadigit.repository.entity.referensi; + +import jakarta.enterprise.context.ApplicationScoped; + +import java.util.List; + +import org.sadigit.entity.referensi.Up3; + +import io.quarkus.hibernate.orm.panache.PanacheRepository; + +@ApplicationScoped +public class Up3Repository implements PanacheRepository{ + + public List findUp3ByUid(Long uid) { + return this.find("idUid", uid).list(); + } +} diff --git a/src/main/java/org/sadigit/repository/entity/saidisaifi/masterjaringan/MasterGarduDistribusiRepository.java b/src/main/java/org/sadigit/repository/entity/saidisaifi/masterjaringan/MasterGarduDistribusiRepository.java new file mode 100644 index 0000000..3c6a384 --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/saidisaifi/masterjaringan/MasterGarduDistribusiRepository.java @@ -0,0 +1,29 @@ +package org.sadigit.repository.entity.saidisaifi.masterjaringan; + +import java.util.List; + +import org.sadigit.entity.referensi.SystemParameter; +import org.sadigit.entity.saidisaifi.masterJaringan.MasterGarduDistribusi; +import io.quarkus.hibernate.orm.panache.PanacheRepository; +import jakarta.enterprise.context.ApplicationScoped; + +@ApplicationScoped +public class MasterGarduDistribusiRepository implements PanacheRepository{ + + @SuppressWarnings("unchecked") + public List findByGeomRadius(Double longitude, Double latitude) { + String nativeQuery = """ + select * + from master_gardu_distribusi + where ST_DWithin(point\\:\\:geography, ST_SetSRID(POINT(:longitude :latitude)),4326)\\::geography, :radius) + where + """; + + SystemParameter systemParameter = SystemParameter.find("id", 78).firstResult(); + return this.getEntityManager().createNativeQuery(nativeQuery, MasterGarduDistribusi.class) + .setParameter("longitude", longitude) + .setParameter("latitude", latitude) + .setParameter("radius", systemParameter.getValue()) + .getResultList(); + } +} diff --git a/src/main/java/org/sadigit/repository/entity/transaksi/GangguanFotoRepository.java b/src/main/java/org/sadigit/repository/entity/transaksi/GangguanFotoRepository.java new file mode 100644 index 0000000..3c0cf84 --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/transaksi/GangguanFotoRepository.java @@ -0,0 +1,17 @@ +package org.sadigit.repository.entity.transaksi; + +import jakarta.enterprise.context.ApplicationScoped; +import java.util.List; + +import org.sadigit.entity.transaksi.GangguanFoto; + +import io.quarkus.hibernate.orm.panache.PanacheRepository; + +@ApplicationScoped +public class GangguanFotoRepository implements PanacheRepository { + + public List getGangguanFotoByNoLaporan(String noLaporan) { + return this.find("gangguan.no_laporan", noLaporan).list(); + } + +} \ No newline at end of file diff --git a/src/main/java/org/sadigit/repository/entity/transaksi/GangguanRepository.java b/src/main/java/org/sadigit/repository/entity/transaksi/GangguanRepository.java new file mode 100644 index 0000000..90ecf8e --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/transaksi/GangguanRepository.java @@ -0,0 +1,297 @@ +package org.sadigit.repository.entity.transaksi; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.transaction.Transactional; + +import org.locationtech.jts.geom.Point; +import org.locationtech.jts.io.ParseException; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.Month; +import java.time.format.DateTimeFormatter; +import java.util.Map; + +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.sadigit.control.exception.CustomException; +import org.sadigit.model.request.CreateGangguanRequest; +import org.sadigit.model.request.CreateGangguanV2Request; +import org.sadigit.model.response.CreateGangguanResponse; +import org.sadigit.model.response.base.ResponseModel; +import org.sadigit.entity.masterYantek.Unit; +import org.sadigit.entity.referensi.MasterKelurahan; +import org.sadigit.entity.referensi.Media; +import org.sadigit.entity.referensi.TipePermasalahan; +import org.sadigit.entity.referensi.Uid; +import org.sadigit.entity.transaksi.Gangguan; +import org.sadigit.entity.transaksi.GangguanLaporUlang; +import org.sadigit.entity.transaksi.GangguanTransaksi; +import org.sadigit.utils.GeomUtils; + +import io.quarkus.hibernate.orm.panache.PanacheRepository; + +@ApplicationScoped +public class GangguanRepository implements PanacheRepository { + + @Inject + Session session; + + private String generateNoLaporan(Long id_uid) { + // select unitcode from unit + Unit unit = Unit.find("unitid", id_uid).firstResult(); + if (unit == null) { + throw new CustomException("Unit tidak ditemukan"); + } + String unitCode = unit.getUnitcode(); + String noLaporan = ""; + String prefix = "G"; + Gangguan gangguan = Gangguan.find("unit =?1 and date(created_date)=?2 order by created_date desc", id_uid, LocalDate.now()) + .firstResult(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMMdd"); + if (gangguan != null) { + String lastNoLaporan = gangguan.getNo_laporan(); + String currentDate = LocalDate.now().format(formatter); + String lastNoLaporanNumber = lastNoLaporan.substring(lastNoLaporan.length() - 4); + int lastNoLaporanNumberInt = Integer.parseInt(lastNoLaporanNumber); + int newNoLaporanNumber = lastNoLaporanNumberInt + 1; + String newNoLaporanNumberString = String.format("%05d", newNoLaporanNumber); + noLaporan = prefix + unitCode + currentDate + newNoLaporanNumberString; + System.out.println("Generated no laporan: " + noLaporan); + + return noLaporan; + } else { + LocalDate date = LocalDate.now(); // Get current date directly + System.out.println("Parsed date: " + date); + // Format the LocalDate object to a string using the formatter + String formattedDate = date.format(formatter); + System.out.println("Formatted date: " + formattedDate); + noLaporan = prefix + unitCode + formattedDate + "0001"; + System.out.println("Generated no laporan: " + noLaporan); + return noLaporan; + } + } + + @Transactional + public CreateGangguanResponse create(CreateGangguanRequest prmt) { + + if (prmt.getIn_idpel() != null) { + LocalDateTime now = LocalDateTime.now(); + LocalDateTime earlier = now.minusHours(3); + Gangguan gangguanExist = Gangguan.find("id_pelanggan_no_meter = ?1 and created_date between ?2 and ?3", prmt.getIn_idpel(), earlier, now).firstResult(); + if (gangguanExist != null) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Pengaduan anda sedang di proses. Anda dapat melakukan pengaduan ulang, 3 jam dari pengaduan sebelumnya.")) + .build(); + throw new CustomException(null, error); + } + } + + try { + + int sourceSrid = 4326; + Gangguan gangguan = new Gangguan(); + Media media = Media.findById(10); + GangguanTransaksi gangguanTransaksi = new GangguanTransaksi(); + String noLaporan = ""; + Point point = null; + + try { + point = GeomUtils.wktToPoint(prmt.getIn_long(), prmt.getIn_lat(), sourceSrid); + } catch (ParseException e) { + throw new CustomException("Invalid WKT format: " + e.getMessage()); + } + + MasterKelurahan kelurahan = MasterKelurahan.find("nama_kelurahan", prmt.getIn_kel()).firstResult(); + TipePermasalahan tipePermasalahan = TipePermasalahan.findById(Long.valueOf(prmt.getIn_tipe_keluhan())); + Uid uid = Uid.findById(prmt.getIn_unitup()); + + if (uid == null) { + throw new CustomException("Unit tidak ditemukan"); + } + + if (tipePermasalahan == null) { + throw new CustomException("Tipe Permasalahan tidak ditemukan"); + } + + if (prmt.getIn_kel() != null && kelurahan == null) { + throw new CustomException("Kelurahan tidak ditemukan"); + } + if (prmt.getIn_idpel() != null) { + gangguan.setId_pelanggan_no_meter(Long.valueOf(prmt.getIn_idpel())); + } + + gangguan.setTipePermasalahan(tipePermasalahan); + gangguan.setMaster_kelurahan(kelurahan); + noLaporan = generateNoLaporan(Long.valueOf(prmt.getIn_unitup())); + gangguan.setNo_laporan(noLaporan); + gangguan.setNama_pelapor(prmt.getIn_nama()); + gangguan.setTelepon_pelapor(prmt.getIn_hp()); + gangguan.setHp_pelapor(prmt.getIn_hp()); + gangguan.setAlamat_pelapor(prmt.getIn_alamat()); + + gangguan.setMedia(media.getKeterangan()); + gangguan.setWaktu_lapor(LocalDateTime.now()); + + gangguan.setLokasi(point); + gangguan.setKeterangan(prmt.getIn_keterangan()); + gangguan.setCreated_date(LocalDateTime.now()); + gangguan.setCreated_by(99999L); + gangguan.setStatus_akhir("lapor"); + gangguan.setUnit(Long.valueOf(prmt.getIn_unitup())); + gangguan.setPermasalahan(tipePermasalahan.getNama()); + gangguan.setCreated_date(LocalDateTime.now()); + gangguan.persist(); + + gangguanTransaksi.setGangguan(gangguan); + gangguanTransaksi.setJenis("lapor"); + gangguanTransaksi.setWaktu(LocalDateTime.now()); + gangguanTransaksi.setCreated_date(LocalDateTime.now()); + gangguanTransaksi.setCreated_by(99999L); + GangguanTransaksi.persist(gangguanTransaksi); + + if (!isPersistent(gangguan)) { + Gangguan.delete("no_laporan", gangguan.getNo_laporan()); + throw new CustomException("Gangguan tidak berhasil disimpan"); + } + + return new CreateGangguanResponse(noLaporan); + } catch (HibernateException e) { + throw new CustomException("Terjadi kesalahan dalam proses menyimpan data : " + e.getMessage()); + } + } + + public CreateGangguanResponse createV2(CreateGangguanV2Request prmt) { + + if (prmt.getIn_idpel() != null) { + LocalDateTime now = LocalDateTime.now(); + LocalDateTime earlier = now.minusHours(3); + Gangguan gangguanExist = Gangguan.find("id_pelanggan_no_meter = ?1 and created_date between ?2 and ?3", prmt.getIn_idpel(), earlier, now).firstResult(); + if (gangguanExist != null) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Pengaduan anda sedang di proses. Anda dapat melakukan pengaduan ulang, 3 jam dari pengaduan sebelumnya.", + "result", "0" + )) + .build(); + throw new CustomException(null, error); + } + } + + try { + int sourceSrid = 4326; + Gangguan gangguan = new Gangguan(); + Media media = Media.findById(10); + GangguanTransaksi gangguanTransaksi = new GangguanTransaksi(); + String noLaporan = ""; + + try { + Point point = GeomUtils.wktToPoint(prmt.getIn_long(), prmt.getIn_lat(), sourceSrid); + MasterKelurahan kelurahan = MasterKelurahan.find("nama_kelurahan", prmt.getIn_kel()).firstResult(); + TipePermasalahan tipePermasalahan = TipePermasalahan.findById(Long.valueOf(prmt.getIn_tipe_keluhan())); + noLaporan = generateNoLaporan(Long.valueOf(prmt.getIn_unitup())); + Uid uid = Uid.findById(prmt.getIn_unitup()); + if (uid == null) { + throw new CustomException("Unit tidak ditemukan"); + } + + if (tipePermasalahan == null) { + throw new CustomException("Tipe Permasalahan tidak ditemukan"); + } + + if (kelurahan == null) { + throw new CustomException("Kelurahan tidak ditemukan"); + } + if (prmt.getIn_idpel() != null) { + gangguan.setId_pelanggan_no_meter(Long.valueOf(prmt.getIn_idpel())); + } + + gangguan.setTipePermasalahan(tipePermasalahan); + gangguan.setMaster_kelurahan(kelurahan); + + if (prmt.getIn_laporanulang_ref() != null) { + Gangguan gangguanExist = Gangguan.find("no_laporan = ?1", prmt.getIn_laporanulang_ref()).firstResult(); + if (gangguanExist == null) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Referensi no laporan tidak ditemukan", + "result", "0" + )) + .build(); + throw new CustomException(null, error); + } + + Long gangguanLaporUlang = GangguanLaporUlang.find("no_laporan_referensi", prmt.getIn_laporanulang_ref()).count(); + GangguanLaporUlang newGangguanLaporUlang = new GangguanLaporUlang(); + newGangguanLaporUlang.setLaporan_ke(gangguanLaporUlang); + newGangguanLaporUlang.setNo_laporan_referensi(prmt.getIn_laporanulang_ref()); + newGangguanLaporUlang.setNo_laporan_baru(noLaporan); + newGangguanLaporUlang.setGangguan(gangguanExist); + GangguanLaporUlang.persist(newGangguanLaporUlang); + } + + if (prmt.getIn_tgl_konfirmasi() != null) { + + if (prmt.getIn_tgl_konfirmasi().length() < 12) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Panjang tgl Konfirmasi kurang dari 12 karakter", + "result", "0" + )).build(); + throw new CustomException(null, error); + } + + int tahun = Integer.valueOf(prmt.getIn_tgl_konfirmasi().substring(0,4)); + int bulan = Integer.valueOf(prmt.getIn_tgl_konfirmasi().substring(4,6)); + int tanggal = Integer.valueOf(prmt.getIn_tgl_konfirmasi().substring(6,8)); + int jam = Integer.valueOf(prmt.getIn_tgl_konfirmasi().substring(8, 10)); + int menit = Integer.valueOf(prmt.getIn_tgl_konfirmasi().substring(10, 12)); + + LocalDateTime tglKonfirmasi = LocalDateTime.of(tahun, Month.of(bulan), tanggal, jam, menit); + gangguan.setWaktu_konfirmasi(tglKonfirmasi); + } + + gangguan.setNo_laporan(noLaporan); + gangguan.setNama_pelapor(prmt.getIn_nama()); + gangguan.setTelepon_pelapor(prmt.getIn_hp()); + gangguan.setHp_pelapor(prmt.getIn_hp()); + gangguan.setAlamat_pelapor(prmt.getIn_alamat()); + + gangguan.setMedia(media.getKeterangan()); + gangguan.setWaktu_lapor(LocalDateTime.now()); + + gangguan.setLokasi(point); + gangguan.setKeterangan(prmt.getIn_keterangan()); + gangguan.setCreated_date(LocalDateTime.now()); + gangguan.setCreated_by(99999L); + gangguan.setStatus_akhir("LAPOR"); + gangguan.setUnit(Long.valueOf(prmt.getIn_unitup())); + gangguan.setPermasalahan(tipePermasalahan.getNama()); + gangguan.setCreated_date(LocalDateTime.now()); + gangguan.persist(); + + gangguanTransaksi.setGangguan(gangguan); + gangguanTransaksi.setJenis("LAPOR"); + gangguanTransaksi.setWaktu(LocalDateTime.now()); + gangguanTransaksi.setCreated_date(LocalDateTime.now()); + gangguanTransaksi.setCreated_by(99999L); + + GangguanTransaksi.persist(gangguanTransaksi); + + if (!isPersistent(gangguan)) { + Gangguan.delete("no_laporan", gangguan.getNo_laporan()); + throw new CustomException("Gangguan tidak berhasil disimpan"); + } + + } catch (ParseException e) { + System.err.println("Invalid WKT format: " + e.getMessage()); + throw new CustomException("Invalid WKT format: " + e.getMessage()); + } + + return new CreateGangguanResponse(noLaporan); + } catch (HibernateException e) { + throw new CustomException("Terjadi kesalahan dalam proses menyimpan data : " + e.getMessage()); + } + } + +} diff --git a/src/main/java/org/sadigit/repository/entity/transaksi/GangguanTMTransaksiRepository.java b/src/main/java/org/sadigit/repository/entity/transaksi/GangguanTMTransaksiRepository.java new file mode 100644 index 0000000..1f9ccf6 --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/transaksi/GangguanTMTransaksiRepository.java @@ -0,0 +1,72 @@ +package org.sadigit.repository.entity.transaksi; + +import java.util.List; + +import org.sadigit.control.exception.CustomException; +import org.sadigit.entity.transaksi.GangguanTMTransaksi; +import io.quarkus.hibernate.orm.panache.PanacheRepository; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.transaction.Transactional; +import lombok.extern.slf4j.Slf4j; + +@ApplicationScoped +@Slf4j +public class GangguanTMTransaksiRepository implements PanacheRepository { + + public List getGangguanTMNotFlagged(Integer limit) { + String query = "(notif_flag = false or notif_flag is null) and jenis = 'Selesai' and cast(created_date as Date) = cast(CURRENT_DATE as Date)"; + + try { + return limit == null + ? this.find(query).list() + : this.find(query).page(0, limit).list(); + } catch (Exception e) { + log.info("Error: {}", e.getMessage()); + throw new CustomException(e.getMessage()); + } + + } + + @Transactional + public GangguanTMTransaksi flagTransaksi(String noLaporan) { + StringBuilder queryKe1 = new StringBuilder(); + queryKe1.append("waktu_read = CURRENT_DATE and ") + .append("notif_flag = 1 where ") + .append("cast(created_date as Date) < cast(CURRENT_DATE as date) and ") + .append("waktu_read is null"); + + this.update(queryKe1.toString()); + + StringBuilder queryKe2 = new StringBuilder(); + queryKe2.append("waktu_read = CURRENT_DATE and ") + .append("notif_flag = 1 where ") + .append("gangguanTm.noGangguanTm = ?1 and ") + .append("(flag = 0 or flag is null) and ") + .append("(waktu_read) in ") + .append("(select min(c.waktu_read) from GangguanTMTransaksi c where c.gangguanTm.noGangguanTm = ?1 and (c.notif_flag = 0 or c.notif_flag is null) and cast(c.created_date as Date) = cast(CURRENT_DATE as date))"); + + this.update(queryKe2.toString(), noLaporan); + + return this.find("gangguanTm.noGangguanTm = ?1 and cast(created_date as Date) = cast(CURRENT_DATE as Date)", noLaporan).firstResult(); + } + + public List getGangguanTMNotFlaggedNotSelesai(Integer limit) { + + StringBuilder sb = new StringBuilder(); + sb.append("jenis != 'Selesai' and ") + .append("(notif_flag = false or notif_flag is null) and ") + .append("cast(created_date as Date) = cast(CURRENT_DATE as Date) and ") + .append("(gangguanTm.noGangguanTm, created_date) in ") + .append("(select c.gangguanTm.noGangguanTm, min(c.created_date) from GangguanTMTransaksi c where c.jenis != 'Selesai' and (c.notif_flag = false or c.notif_flag is null) and cast(c.created_date as Date) = cast(current_date as Date) group by c.gangguanTm.noGangguanTm)"); + + try { + return limit == null + ? this.find(sb.toString()).list() + : this.find(sb.toString()).page(0, limit).list(); + } catch (Exception e) { + log.info("Error: {}", e.getMessage()); + throw new CustomException(e.getMessage()); + } + + } +} diff --git a/src/main/java/org/sadigit/repository/entity/transaksi/KeluhanRepository.java b/src/main/java/org/sadigit/repository/entity/transaksi/KeluhanRepository.java new file mode 100644 index 0000000..860c9d9 --- /dev/null +++ b/src/main/java/org/sadigit/repository/entity/transaksi/KeluhanRepository.java @@ -0,0 +1,279 @@ +package org.sadigit.repository.entity.transaksi; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.transaction.Transactional; + +import org.locationtech.jts.geom.Point; +import org.locationtech.jts.io.ParseException; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Map; + +import org.hibernate.HibernateException; +import org.sadigit.control.exception.CustomException; +import org.sadigit.model.request.CreateKeluhanRequest; +import org.sadigit.model.request.CreateKeluhanV2Request; +import org.sadigit.model.response.base.ResponseModel; +import org.sadigit.entity.masterYantek.Unit; +import org.sadigit.entity.referensi.MasterKelurahan; +import org.sadigit.entity.referensi.Media; +import org.sadigit.entity.referensi.SubTipeKeluhan; +import org.sadigit.entity.referensi.TipeKeluhan; +import org.sadigit.entity.referensi.Uid; +import org.sadigit.entity.transaksi.Keluhan; +import org.sadigit.entity.transaksi.KeluhanLaporUlang; +import org.sadigit.entity.transaksi.KeluhanTransaksi; +import org.sadigit.utils.GeomUtils; + +import io.quarkus.hibernate.orm.panache.PanacheRepository; + +@ApplicationScoped +public class KeluhanRepository implements PanacheRepository { + + private String generateNoLaporan(Long id_uid) { + // select unitcode from unit + Unit unit = Unit.find("unitid", id_uid).firstResult(); + if (unit == null) { + throw new CustomException("Unit tidak ditemukan"); + } + String unitCode = unit.getUnitcode(); + String noLaporan = ""; + String prefix = "K"; + Keluhan keluhan = Keluhan.find("unit =?1 and date(created_date)=?2 order by created_date desc", id_uid, LocalDate.now()) + .firstResult(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMMdd"); + if (keluhan != null) { + String lastNoLaporan = keluhan.getNo_laporan(); + String currentDate = LocalDate.now().format(formatter); + String lastNoLaporanNumber = lastNoLaporan.substring(lastNoLaporan.length() - 4); + int lastNoLaporanNumberInt = Integer.parseInt(lastNoLaporanNumber); + int newNoLaporanNumber = lastNoLaporanNumberInt + 1; + String newNoLaporanNumberString = String.format("%05d", newNoLaporanNumber); + noLaporan = prefix + unitCode + currentDate + newNoLaporanNumberString; + System.out.println("Generated no laporan: " + noLaporan); + + return noLaporan; + } else { + LocalDate date = LocalDate.now(); // Get current date directly + System.out.println("Parsed date: " + date); + // Format the LocalDate object to a string using the formatter + String formattedDate = date.format(formatter); + System.out.println("Formatted date: " + formattedDate); + noLaporan = prefix + unitCode + formattedDate + "0001"; + System.out.println("Generated no laporan: " + noLaporan); + return noLaporan; + } + } + + @Transactional + public ResponseModel> create(CreateKeluhanRequest prms) { + + if (prms.getIn_idpel() != null) { + LocalDateTime now = LocalDateTime.now(); + LocalDateTime earlier = now.minusHours(3); + Keluhan keluhanExist = Keluhan.find("id_pelanggan_no_meter = ?1 and created_date between ?2 and ?3", prms.getIn_idpel(), earlier, now).firstResult(); + if (keluhanExist != null) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Pengaduan anda sedang di proses. Anda dapat melakukan pengaduan ulang, 3 jam dari pengaduan sebelumnya.")) + .build(); + throw new CustomException(null, error); + } + } + + try { + int sourceSrid = 4326; + Keluhan keluhan = new Keluhan(); + KeluhanTransaksi keluhanTransaksi = new KeluhanTransaksi(); + Media media = Media.findById(10); + String noLaporan = ""; + + try { + + Point point = GeomUtils.wktToPoint(prms.getIn_long(), prms.getIn_lat(), sourceSrid); + Uid uid = Uid.findById(prms.getIn_unitup()); + MasterKelurahan kelurahan = MasterKelurahan.find("nama_kelurahan", prms.getIn_kel()).firstResult(); + TipeKeluhan tipeKeluhan = TipeKeluhan.findById(prms.getIn_tipe_keluhan()); + SubTipeKeluhan subTipeKeluhan = SubTipeKeluhan.findById(prms.getIn_subtipe_keluhan()); + + if (uid == null) { + throw new CustomException("Unit tidak ditemukan"); + } + if (tipeKeluhan == null) { + throw new CustomException("Tipe Keluhan tidak ditemukan"); + } + if (subTipeKeluhan == null) { + throw new CustomException("Sub Tipe Keluhan tidak ditemukan"); + } + if (kelurahan == null) { + throw new CustomException("Kelurahan tidak ditemukan"); + } + if (prms.getIn_idpel() != null) { + keluhan.setId_pelanggan_no_meter(Long.valueOf(prms.getIn_idpel())); + } + + keluhan.setKelurahan(kelurahan); + noLaporan = generateNoLaporan(Long.valueOf(prms.getIn_unitup())); + keluhan.setNo_laporan(noLaporan); + keluhan.setNama_pelapor(prms.getIn_nama()); + keluhan.setTelepon_pelapor(prms.getIn_hp()); + keluhan.setHp_pelapor(prms.getIn_hp()); + keluhan.setAlamat_pelapor(prms.getIn_alamat()); + keluhan.setMedia(media.getKeterangan()); + + keluhan.setLokasi(point); + keluhan.setKeterangan(prms.getIn_keterangan()); + keluhan.setCreated_date(LocalDateTime.now()); + keluhan.setCreated_by(99999L); + keluhan.setStatus_akhir("Lapor"); + keluhan.setUnit(Long.valueOf(prms.getIn_unitup())); + keluhan.setTipe_keluhan(tipeKeluhan.getIssuetypeid()); + keluhan.setTipe_sub_keluhan(subTipeKeluhan.getSubissuetypeid()); + + keluhan.setPermasalahan(tipeKeluhan.getIssuetypename()); + keluhan.setCreated_date(LocalDateTime.now()); + keluhan.setKelurahan(kelurahan); + keluhan.persist(); + + keluhanTransaksi.setKeluhan(keluhan); + keluhanTransaksi.setJenis("Lapor"); + keluhanTransaksi.setWaktu(LocalDateTime.now()); + keluhanTransaksi.setCreated_date(LocalDateTime.now()); + keluhanTransaksi.setCreated_by(99999L); + KeluhanTransaksi.persist(keluhanTransaksi); + + if (!isPersistent(keluhan)) { + Keluhan.delete("no_laporan", keluhan.getNo_laporan()); + throw new CustomException("keluhan tidak berhasil disimpan"); + } + + } catch (ParseException e) { + System.err.println("Invalid WKT format: " + e.getMessage()); + throw new CustomException("Invalid WKT format: " + e.getMessage()); + } + + ResponseModel> responseModel = new ResponseModel<>(); + responseModel.setData(Map.of("reportnumber", noLaporan)); + return responseModel; + + } catch (HibernateException e) { + throw new CustomException("Terjadi kesalahan dalam proses menyimpan data : " + e.getMessage()); + } + } + + @Transactional + public ResponseModel> createV2(CreateKeluhanV2Request prms) { + + if (prms.getIn_idpel() != null) { + LocalDateTime now = LocalDateTime.now(); + LocalDateTime earlier = now.minusHours(3); + Keluhan keluhanExist = Keluhan.find("id_pelanggan_no_meter = ?1 and created_date between ?2 and ?3", prms.getIn_idpel(), earlier, now).firstResult(); + if (keluhanExist != null) { + var error = ResponseModel.builder() + .data(Map.of("msg", "Pengaduan anda sedang di proses. Anda dapat melakukan pengaduan ulang, 3 jam dari pengaduan sebelumnya.")) + .build(); + throw new CustomException(null, error); + } + } + + try { + int sourceSrid = 4326; + Keluhan keluhan = new Keluhan(); + KeluhanTransaksi keluhanTransaksi = new KeluhanTransaksi(); + Media media = Media.findById(10); + String noLaporan = ""; + + try { + Point point = GeomUtils.wktToPoint(prms.getIn_long(), prms.getIn_lat(), sourceSrid); + Uid uid = Uid.findById(prms.getIn_unitup()); + MasterKelurahan kelurahan = MasterKelurahan.find("nama_kelurahan", prms.getIn_kel()).firstResult(); + TipeKeluhan tipeKeluhan = TipeKeluhan.findById(prms.getIn_tipe_keluhan()); + SubTipeKeluhan subTipeKeluhan = SubTipeKeluhan.findById(prms.getIn_subtipe_keluhan()); + + if (uid == null) { + throw new CustomException("Unit tidak ditemukan"); + } + if (tipeKeluhan == null) { + throw new CustomException("Tipe Keluhan tidak ditemukan"); + } + if (subTipeKeluhan == null) { + throw new CustomException("Sub Tipe Keluhan tidak ditemukan"); + } + if (kelurahan == null) { + throw new CustomException("Kelurahan tidak ditemukan"); + } + if (prms.getIn_idpel() != null) { + keluhan.setId_pelanggan_no_meter(Long.valueOf(prms.getIn_idpel())); + } + + if (prms.getIn_laporanulang_ref() != null) { + Keluhan gangguanExist = Keluhan.find("no_laporan = ?1", prms.getIn_laporanulang_ref()).firstResult(); + if (gangguanExist == null) { + var error = ResponseModel.builder() + .data(Map.of( + "msg", "Referensi no laporan tidak ditemukan", + "result", "0" + )) + .build(); + throw new CustomException(null, error); + } + + Long jumlahLaporUlang = KeluhanLaporUlang.find("no_laporan_referensi", prms.getIn_laporanulang_ref()).count(); + KeluhanLaporUlang newKeluhanLaporUlang = new KeluhanLaporUlang(); + newKeluhanLaporUlang.setLaporan_ke(jumlahLaporUlang); + newKeluhanLaporUlang.setNo_laporan_referensi(prms.getIn_laporanulang_ref()); + newKeluhanLaporUlang.setNo_laporan_baru(noLaporan); + newKeluhanLaporUlang.setKeluhan(gangguanExist); + KeluhanLaporUlang.persist(newKeluhanLaporUlang); + } + + keluhan.setKelurahan(kelurahan); + noLaporan = generateNoLaporan(Long.valueOf(prms.getIn_unitup())); + keluhan.setNo_laporan(noLaporan); + keluhan.setNama_pelapor(prms.getIn_nama()); + keluhan.setTelepon_pelapor(prms.getIn_hp()); + keluhan.setHp_pelapor(prms.getIn_hp()); + keluhan.setAlamat_pelapor(prms.getIn_alamat()); + keluhan.setMedia(media.getKeterangan()); + + keluhan.setLokasi(point); + keluhan.setKeterangan(prms.getIn_keterangan()); + keluhan.setCreated_date(LocalDateTime.now()); + keluhan.setCreated_by(99999L); + keluhan.setStatus_akhir("LAPOR"); + keluhan.setUnit(Long.valueOf(prms.getIn_unitup())); + keluhan.setTipe_keluhan(tipeKeluhan.getIssuetypeid()); + keluhan.setTipe_sub_keluhan(subTipeKeluhan.getSubissuetypeid()); + + keluhan.setPermasalahan(tipeKeluhan.getIssuetypename()); + keluhan.setCreated_date(LocalDateTime.now()); + keluhan.setKelurahan(kelurahan); + keluhan.persist(); + + keluhanTransaksi.setKeluhan(keluhan); + keluhanTransaksi.setJenis("LAPOR"); + keluhanTransaksi.setWaktu(LocalDateTime.now()); + keluhanTransaksi.setCreated_date(LocalDateTime.now()); + keluhanTransaksi.setCreated_by(99999L); + KeluhanTransaksi.persist(keluhanTransaksi); + + if (!isPersistent(keluhan)) { + Keluhan.delete("no_laporan", keluhan.getNo_laporan()); + throw new CustomException("keluhan tidak berhasil disimpan"); + } + + } catch (ParseException e) { + System.err.println("Invalid WKT format: " + e.getMessage()); + throw new CustomException("Invalid WKT format: " + e.getMessage()); + } + + ResponseModel> responseModel = new ResponseModel<>(); + responseModel.setData(Map.of("reportnumber", noLaporan)); + return responseModel; + + } catch (HibernateException e) { + throw new CustomException("Terjadi kesalahan dalam proses menyimpan data : " + e.getMessage()); + } + } + +} diff --git a/src/main/java/org/sadigit/repository/service/PlnMobileServiceRepository.java b/src/main/java/org/sadigit/repository/service/PlnMobileServiceRepository.java new file mode 100644 index 0000000..01275ce --- /dev/null +++ b/src/main/java/org/sadigit/repository/service/PlnMobileServiceRepository.java @@ -0,0 +1,61 @@ +package org.sadigit.repository.service; + +import java.util.List; + +import org.hibernate.Session; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.persistence.Tuple; + +@ApplicationScoped +public class PlnMobileServiceRepository { + + @Inject + Session session; + + public List get10PengaduanTerbaruByIdPel(String idpel) { + + // log.info("idpel: {}", idpel); + String query = """ + ( + select + g.id_pelanggan_no_meter as idpel, + g.no_laporan as noLaporan, + g.alamat_pelapor as alamatPelapor, + g.created_date as createdDate, + g.nama_pelapor as namaPelapor, + r1.nama as namaRegu, + g.keterangan as keterangan + from + Gangguan g + left join MasterRegu r1 on g.regu.id = r1.id + where + g.id_pelanggan_no_meter = :idpel and + g.created_date is not null + union all + select + k.id_pelanggan_no_meter as idpel, + k.no_laporan as noLaporan, + k.alamat_pelapor as alamatPelapor, + k.created_date as createdDate, + k.nama_pelapor as namaPelapor, + r2.nama as namaRegu, + k.keterangan as keterangan + from + Keluhan k + left join MasterRegu r2 on k.regu.id = r2.id + where + k.id_pelanggan_no_meter = :idpel and + k.created_date is not null + ) + order by createdDate asc + """; + + return session.createQuery(query, Tuple.class) + .setParameter("idpel", idpel) + .setMaxResults(10) + .getResultList(); + } + +} diff --git a/src/main/java/org/sadigit/service/api/v1/PlnMobileService.java b/src/main/java/org/sadigit/service/api/v1/PlnMobileService.java new file mode 100644 index 0000000..f0ccefa --- /dev/null +++ b/src/main/java/org/sadigit/service/api/v1/PlnMobileService.java @@ -0,0 +1,602 @@ +package org.sadigit.service.api.v1; + +import java.time.ZoneOffset; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.hibernate.HibernateException; +import org.sadigit.control.exception.CustomException; +import org.sadigit.control.exception.GetDataGarduV2Exception; +import org.sadigit.entity.referensi.Kecamatan; +import org.sadigit.entity.referensi.MasterKelurahan; +import org.sadigit.entity.referensi.Provinsi; +import org.sadigit.entity.referensi.RatingPln; +import org.sadigit.entity.referensi.SubTipePermasalahan; +import org.sadigit.entity.referensi.TipeKeluhan; +import org.sadigit.entity.saidisaifi.masterJaringan.MasterGarduIndukTransaksi; +import org.sadigit.entity.transaksi.Gangguan; +import org.sadigit.entity.transaksi.GangguanFoto; +import org.sadigit.entity.transaksi.GangguanKodeCTT; +import org.sadigit.entity.transaksi.Keluhan; +import org.sadigit.model.request.CreateGangguanRequest; +import org.sadigit.model.request.CreateGangguanV2Request; +import org.sadigit.model.request.CreateKeluhanRequest; +import org.sadigit.model.request.CreateKeluhanV2Request; +import org.sadigit.model.request.GetCancelRequest; +import org.sadigit.model.request.GetCttRequest; +import org.sadigit.model.request.GetDataGarduV2Request; +import org.sadigit.model.request.GetDataRequest; +import org.sadigit.model.request.GetRatingPlgnRequest; +import org.sadigit.model.response.CreateGangguanResponse; +import org.sadigit.model.response.DetailPengaduanFlowResponse; +import org.sadigit.model.response.DetailPengaduanResponse; +import org.sadigit.model.response.GarduNyalaResponse; +import org.sadigit.model.response.GarduNyalaV2Response; +import org.sadigit.model.response.GetCttResponse; +import org.sadigit.model.response.GetDataKode4Response; +import org.sadigit.model.response.GetDataKeteranganLokasi; +import org.sadigit.model.response.GetDataResponse; +import org.sadigit.model.response.GarduPadamResponse; +import org.sadigit.model.response.GarduPadamV2Response; +import org.sadigit.model.response.GarduRencanaResponse; +import org.sadigit.model.response.GarduRencanaV2Response; +import org.sadigit.model.response.GetFotoResponse; +import org.sadigit.model.response.GetHistoByIdpelResponse; +import org.sadigit.model.response.GetHistoriGangguanByIdResponse; +import org.sadigit.model.response.GetMasterJenisPengaduanResponse; +import org.sadigit.model.response.GetMasterJenisPengaduanResponseV2; +import org.sadigit.model.response.GetRatingPlnResponse; +import org.sadigit.model.response.base.ResponseModel; +import org.sadigit.model.response.base.ResponseModelGardu; +import org.sadigit.model.response.base.ResponseModelGarduV2; +import org.sadigit.model.response.base.ResponseModelOutReturn; +import org.sadigit.model.response.base.ResponseModelWithFlow; +import org.sadigit.repository.entity.saidisaifi.masterjaringan.MasterGarduDistribusiRepository; +import org.sadigit.repository.entity.transaksi.GangguanRepository; +import org.sadigit.repository.entity.transaksi.GangguanTMTransaksiRepository; +import org.sadigit.repository.entity.transaksi.KeluhanRepository; +import org.sadigit.repository.service.PlnMobileServiceRepository; +import io.quarkus.panache.common.Parameters; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.persistence.Tuple; +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * @author Tias Mardiansyah + */ +@ApplicationScoped +@RequiredArgsConstructor +@Slf4j +public class PlnMobileService { + + private final GangguanRepository gangguanRepository; + private final KeluhanRepository keluhanRepository; + private final MasterGarduDistribusiRepository masterGarduDistribusiRepository; + private final GangguanTMTransaksiRepository gangguanTMTransaksiRepository; + private final PlnMobileServiceRepository plnMobileServiceRepository; + + public ResponseModel getHistoriGangguanById(String in_data) { + + ResponseModel response = new ResponseModel<>(); + switch (in_data.substring(0, 1)) { + case "K" : { + Keluhan keluhan = Keluhan.find("no_laporan", in_data).firstResult(); + response.setData(GetHistoriGangguanByIdResponse.fromKeluhan(keluhan)); + } break; + case "G" : { + Gangguan gangguan = Gangguan.find("no_laporan", in_data).firstResult(); + response.setData(GetHistoriGangguanByIdResponse.fromGangguan(gangguan)); + } break; + default: throw new CustomException(null, ResponseModel.builder().message("DATA TIDAK DITEMUKAN").build()); + } + + if (response.getData() != null) { + response.setMessage("DATA DITEMUKAN"); + } else { + response.setMessage("DATA TIDAK DITEMUKAN"); + } + + return response; + } + + public ResponseModelWithFlow getDetailPengaduan(String in_data) { + String prefix = in_data.substring(0, 1); + + ResponseModelWithFlow response = new ResponseModelWithFlow<>(); + List detailPengaduan = new ArrayList<>(); + List detailPengaduanFlow = new ArrayList<>(); + + try { + switch (prefix) { + // keluhan + case "K": { + response.setData(detailPengaduan); + response.setFlow(detailPengaduanFlow); + response.setMessage("Belum dapat mencari berdasarkan keluhan"); + } + break; + // Gangguan + case "G": { + log.info("MASUK"); + List gangguanList = Gangguan.find("no_laporan", in_data).list(); + + gangguanList.forEach(gangguan -> { + DetailPengaduanResponse detail = DetailPengaduanResponse.fromGangguanEntity(gangguan); + List flow = DetailPengaduanFlowResponse.fromGangguan(gangguan); + detailPengaduan.add(detail); + detailPengaduanFlow.addAll(flow); + }); + + response.setData(detailPengaduan); + response.setFlow(detailPengaduanFlow); + } + break; + default: { + // throw something for not founded code + } + break; + } + + if (detailPengaduan.isEmpty()) { + response.setMessage("DATA TIDAK DITEMUKAN"); + } else { + response.setMessage("DATA DITEMUKAN"); + } + } catch (Exception e) { + e.printStackTrace(); + log.info(e.getMessage()); + throw new CustomException("TERJADI KESALAHAN SAAT MENGAMBIL DATA"); + } + + return response; + } + + public ResponseModel> getHistoriGangguanByIdpel(String in_data) { + + ResponseModel> response = new ResponseModel<>(); + List histo = plnMobileServiceRepository.get10PengaduanTerbaruByIdPel(in_data); + List historiPengaduan = histo.stream().map(GetHistoByIdpelResponse::fromTuple).collect(Collectors.toList()); + + response.setMessage("DATA DITEMUKAN"); + response.setData(historiPengaduan); + return response; + } + + public ResponseModel> getRating(GetRatingPlgnRequest params) { + List ratingPln = RatingPln.find("noLaporan = ?1 AND nilai = ?2 AND keterangan = ?3", + params.getP_reportnumber(), params.getP_nilai(), params.getP_keterangan()).list(); + List ratingList = new ArrayList<>(); + + ratingPln.forEach(rating -> { + GetRatingPlnResponse ratingResponse = GetRatingPlnResponse.builder() + .no_laporan(rating.getNoLaporan()) + .nilai(rating.getNilai()) + .keterangan(rating.getKeterangan()) + .createddate(rating.getCreateDate()) + .build(); + + ratingList.add(ratingResponse); + }); + + ResponseModel> response = new ResponseModel<>(); + if (ratingList.isEmpty()) { + response.setMessage("DATA TIDAK DITEMUKAN"); + } else { + response.setMessage("DATA DITEMUKAN"); + } + response.setData(new ArrayList<>()); + + return response; + } + + public CreateGangguanResponse createGangguan(CreateGangguanRequest params) { + return gangguanRepository.create(params); + } + + public CreateGangguanResponse createGangguanV2(CreateGangguanV2Request params) { + return gangguanRepository.createV2(params); + } + + public GetFotoResponse>> getFoto(String p_reportnumber) { + + List gangguanFoto = GangguanFoto.find("gangguan.no_laporan", p_reportnumber).list(); + GetFotoResponse>> response = new GetFotoResponse<>(); + + response.setOut_return(new ArrayList<>()); + gangguanFoto.forEach(foto -> { + String urlFoto = "http://10.1.50.173:32172/yantek/" + foto.getFoto(); + response.getOut_return().add(Map.of("image.base64", urlFoto)); + }); + + response.setOut_message("FOTO DITEMUKAN"); + return response; + + } + + public ResponseModel> getCtt(GetCttRequest params) { + + StringBuilder sb = new StringBuilder(); + Parameters queryParams = new Parameters(); + + sb.append("gangguan.no_laporan = :reportnumber "); + queryParams.and("reportnumber", params.getP_reportnumber()); + + sb.append("AND gangguan.id_pelanggan_no_meter = :idpel "); + queryParams.and("idpel", Long.valueOf(params.getP_idpel())); + + sb.append("AND kode_41 = :kode41 "); + queryParams.and("kode41", params.getP_kode41()); + + sb.append("AND kode_44 = :kode44 "); + queryParams.and("kode44", params.getP_kode44()); + + sb.append("AND kode_37 = :kode37 "); + queryParams.and("kode37", params.getP_kode37()); + + sb.append("AND kode_47 = :kode47 "); + queryParams.and("kode47", params.getP_kode47()); + + if (params.getP_kode08() != null) { + sb.append("AND kode_08 = :kode08 "); + queryParams.and("kode08", params.getP_kode08()); + } + + if (params.getP_kode70() != null) { + sb.append("AND kode_70 = :kode70 "); + queryParams.and("kode70", params.getP_kode70()); + } + + if (params.getP_kode71() != null) { + sb.append("AND kode_71 = :kode71 "); + queryParams.and("kode71", params.getP_kode71()); + } + + if (params.getP_kode37() != null) { + sb.append("AND kode_37 = :kode37 "); + queryParams.and("kode37", params.getP_kode37()); + } + + if (params.getP_kode45() != null) { + sb.append("AND kode_45 = :kode45 "); + queryParams.and("kode45", params.getP_kode45()); + } + + // remove the last AND if it's present + if (sb.toString().endsWith(" AND ")) { + sb.setLength(sb.length() - 4); + } + + List gangguanKodeCttList = GangguanKodeCTT.find(sb.toString(), queryParams).list(); + ResponseModel> response = new ResponseModel<>(); + response.setData(new ArrayList<>()); + + log.info("params: {}", params.toString()); + log.info("query: {}", sb.toString()); + log.info("gangguanKodeCttList: {}", gangguanKodeCttList.size()); + gangguanKodeCttList.forEach(ctt -> { + var data = GetCttResponse.builder() + .id(ctt.getId()) + .idpel(ctt.getGangguan().getId_pelanggan_no_meter().toString()) + .reportnumber(ctt.getGangguan().getNo_laporan()) + .tglcatat(ctt.getCreated_date() == null ? null : ctt.getCreated_date()) + .createdate(ctt.getCreated_date() == null ? null + : ctt.getCreated_date().atZone(ZoneOffset.ofHours(7)).toInstant().toEpochMilli()) + .kode08(ctt.getKode_08()) + .kode70(ctt.getKode_70()) + .kode71(ctt.getKode_71()) + .kode41(ctt.getKode_41()) + .kode44(ctt.getKode_44()) + .kode45(ctt.getKode_45()) + .kode46(ctt.getKode_46()) + .kode37(ctt.getKode_37()) + .kode47(ctt.getKode_47()) + .kode08_result(ctt.getKode_08_hasil()) + .kode70_result(ctt.getKode_70_hasil()) + .kode71_result(ctt.getKode_71_hasil()) + .kode41_result(ctt.getKode_41_hasil()) + .kode44_result(ctt.getKode_44_hasil()) + .kode45_result(ctt.getKode_45_hasil()) + .kode46_result(ctt.getKode_46_hasil()) + .kode37_result(ctt.getKode_37_hasil()) + .kode47_result(ctt.getKode_47_hasil()) + .build(); + + response.getData().add(data); + }); + + response.setMessage("DATA DITEMUKAN"); + return response; + } + + public ResponseModel getData(GetDataRequest params) { + + ResponseModel response = new ResponseModel<>(); + switch(params.getP_kode()) { + case "1" : { + try { + + List data = params.getP_input().equals("ALL") + ? gangguanTMTransaksiRepository.getGangguanTMNotFlagged(null).stream().map(GetDataResponse::fromGangguanTM).collect(Collectors.toList()) + : gangguanTMTransaksiRepository.getGangguanTMNotFlagged(Integer.valueOf(params.getP_input())).stream().map(GetDataResponse::fromGangguanTM).collect(Collectors.toList()); + + String message = Integer.valueOf(params.getP_input()) > 0 + ? "BERHASIL BATAS = " + params.getP_input() + : "BERHASIL"; + + response.setData(data); + response.setMessage(message); + } catch(NumberFormatException e) { + log.info("Error: {}", e.getMessage()); + throw new CustomException(null, ResponseModel.builder().message("P_INPUT TIDAK SESUAI").build()); + } + + } break; + case "2" : { + GetDataResponse data = GetDataResponse.fromGangguanTM(gangguanTMTransaksiRepository.flagTransaksi(params.getP_input())); + response.setData(data); + response.setMessage("BERHASIL"); + } break; + case "3" : { + try { + List data = params.getP_input().equals("ALL") + ? gangguanTMTransaksiRepository.getGangguanTMNotFlaggedNotSelesai(null).stream().map(GetDataResponse::fromGangguanTM).collect(Collectors.toList()) + : gangguanTMTransaksiRepository.getGangguanTMNotFlaggedNotSelesai(Integer.valueOf(params.getP_input())).stream().map(GetDataResponse::fromGangguanTM).collect(Collectors.toList()); + + String message = Integer.valueOf(params.getP_input()) > 0 + ? "BERHASIL BATAS = " + params.getP_input() + : "BERHASIL"; + + response.setData(data); + response.setMessage(message); + } catch(Exception e) { + log.info("Error: {}", e.getMessage()); + } + } break; + case "4" : { + Double latitude; + Double longitude; + + try { + String[] koordinat = params.getP_input().split("#"); + longitude = Double.parseDouble(koordinat[0]); + latitude = Double.parseDouble(koordinat[1]); + } catch (NumberFormatException | NullPointerException e) { + throw new CustomException(null, ResponseModel.builder().message("KOORDINAT TIDAK VALID").build()); + } + + log.info("LAT: {}",latitude); + log.info("LONG: {}", longitude); + response.setData(masterGarduDistribusiRepository.findByGeomRadius(longitude, latitude).stream().map(GetDataKode4Response::fromGarduIndukDistribusi).collect(Collectors.toList())); + response.setMessage("BERHASIL"); + } break; + + //what is this mess!! + case "getMasterProvinsi" : { + List listProvinsi = Provinsi.findAll().list(); + response.setData(listProvinsi.stream().map(GetDataKeteranganLokasi::fromMasterProvinsi).collect(Collectors.toList())); + response.setMessage("Data master"); + } break; + case "getMasterKabupatenByKdProv" : { + List listProvinsi = Provinsi.find("id_provinsi", params.getP_input()).list(); + response.setData(listProvinsi.stream().map(GetDataKeteranganLokasi::fromMasterProvinsi).collect(Collectors.toList())); + response.setMessage("Data master"); + } break; + case "getMasterkecamatanByKdKab" : { + List listKecamatan = Kecamatan.find("id_kota_kabupaten", params.getP_input()).list(); + response.setData(listKecamatan.stream().map(GetDataKeteranganLokasi::fromMasterKecamatan).collect(Collectors.toList())); + response.setMessage("Data master"); + } break; + case "getMasterDesaByKdKec" : { + List data = MasterKelurahan.find("id_kecamatan", params.getP_input()).list(); + response.setData(data.stream().map(GetDataKeteranganLokasi::fromMasterKelurahan).collect(Collectors.toList())); + response.setMessage("Data master"); + } break; + case "getMasterPemda" : { + // response.setData(Unit.find()) + response.setMessage("Data master"); + } break; + case "getSubKeluhanEV" : { + response.setData(SubTipePermasalahan.find("tipeKeluhan.issuetypeid", 52).list()); + response.setMessage("Data master"); + } break; + default: throw new CustomException(null, ResponseModel.builder().message("KODE TIDAK DITEMUKAN").build()); + } + + return response; + } + + public ResponseModel> createKeluhan(CreateKeluhanRequest params) { + return keluhanRepository.create(params); + } + + public ResponseModel> createKeluhanV2(CreateKeluhanV2Request params) { + return keluhanRepository.createV2(params); + } + + public ResponseModel> getMasterJenisPengaduan() { + + List jenisPengaduan = new ArrayList<>(); + ResponseModel> response = new ResponseModel<>(); + + List tipeKeluhan = TipeKeluhan.find("projectid in (1,2) and issuetypeid between 1 and 32").list(); + tipeKeluhan.forEach(tipe -> { + List subTipeKeluhan = tipe.getSubTipeKeluhan().stream().map(GetMasterJenisPengaduanResponse::fromSubTipeKeluhan).collect(Collectors.toList()); + jenisPengaduan.addAll(subTipeKeluhan); + }); + + response.setMessage("BERHASIL"); + response.setData(jenisPengaduan); + return response; + } + + public ResponseModel> getMasterJenisPengaduanV2() { + + List jenisPengaduan = new ArrayList<>(); + ResponseModel> response = new ResponseModel<>(); + + List tipeKeluhan = TipeKeluhan.find("projectid = 1 and isactive = 1").list(); + tipeKeluhan.forEach(tipe -> { + List subTipeKeluhan = tipe.getSubTipeKeluhan().stream().map(GetMasterJenisPengaduanResponseV2::fromSubTipeKeluhan).collect(Collectors.toList()); + jenisPengaduan.addAll(subTipeKeluhan); + }); + + response.setMessage("BERHASIL"); + response.setData(jenisPengaduan); + return response; + } + + public ResponseModelOutReturn batalkanPengaduan(GetCancelRequest params) { + try { + Gangguan gangguan = Gangguan.find("no_laporan = ?1 and id_pelanggan_no_meter = ?2", params.getP_reportnumber(), params.getP_userid()).firstResult(); + gangguan.setStatus_akhir("batal"); + gangguan.getGangguan_transaksi().forEach(transaksi -> transaksi.setJenis("batal")); + } catch (Exception e) { + e.printStackTrace(); + log.error(e.getMessage()); + throw new CustomException("GAGAL MEMBATALKAN PENGADUAN"); + } + + ResponseModelOutReturn response = new ResponseModelOutReturn<>(); + response.setOutreturn("true"); + response.setOutmessage("Berhasil Dilakukan pembatalan"); + return response; + } + + @Transactional + public ResponseModelGardu getDataGardu() { + + List garduIndukPadamAllList = MasterGarduIndukTransaksi.findAll().list(); + + List garduPadamList = new ArrayList<>(); + List garduNyalaList = new ArrayList<>(); + List garduRencanaList = new ArrayList<>(); + List garduPadamNewList = new ArrayList<>(); + + List readedGarduId = new ArrayList<>(); + + garduIndukPadamAllList.forEach(gardu -> { + switch(gardu.getStatus()) { + case "padam": { + if (gardu.getIs_read() == false) { + garduPadamNewList.add(GarduPadamResponse.fromMasterGarduIndukTransaksi(gardu)); + readedGarduId.add(gardu.getId().toString()); + } else { + garduPadamList.add(GarduPadamResponse.fromMasterGarduIndukTransaksi(gardu)); + } + } break; + case "nyala": { + garduNyalaList.add(GarduNyalaResponse.fromMasterGarduIndukTransaksi(gardu)); + } break; + case "rencana": { + garduRencanaList.add(GarduRencanaResponse.fromMasterGarduIndukTransaksi(gardu)); + } break; + } + }); + + readedGarduId.forEach( d -> { + log.info("readed gardu id: {}", d); + }); + + if (readedGarduId.size() > 0) { + log.info("readed gardu id: {}", readedGarduId.toArray()); + MasterGarduIndukTransaksi.update("is_read = true where id in ?1", readedGarduId.toArray()); + } + + ResponseModelGardu response = new ResponseModelGardu<>(); + response.setDesc("BERHASIL"); + response.setOut_data(garduPadamList); + response.setOut_data_padam(garduPadamNewList); + response.setOut_data_nyala(garduNyalaList); + response.setOut_data_rencana(garduRencanaList); + + return response; + } + + @Transactional + public ResponseModelGarduV2 getDataGarduV2(GetDataGarduV2Request params) { + + ResponseModelGarduV2 response = new ResponseModelGarduV2<>(); + + switch (params.getP_kode()) { + //melihat jumlah event tersedia + case 1: { + Long eventCount = 0L; + switch (params.getP_jenis()) { + case 1: eventCount = MasterGarduIndukTransaksi.count("status", "PADAM"); break; + case 2: eventCount = MasterGarduIndukTransaksi.count("status", "NYALA"); break; + case 3: eventCount = MasterGarduIndukTransaksi.count("status", "PERENCANAAN"); break; + default : throw new GetDataGarduV2Exception("99","GAGAL !! p_jenis HARUS 1/2/3"); + } + + response.setP_return(Map.of("jumlah", eventCount)); + } break; + + // untuk mengambil data event tersedia + case 2: { + switch (params.getP_jenis()) { + case 1: { + List gardu = (params.getP_jumlah() != null && params.getP_jumlah() > 0) + ? MasterGarduIndukTransaksi.find("status = ?1 and (is_read = false or is_read is NULL)", "PADAM").page(0, params.getP_jumlah()).list() + : MasterGarduIndukTransaksi.find("status = ?1 and (is_read = false or is_read is NULL)", "PADAM").list(); + + var garduPadam = gardu.stream().map(GarduPadamV2Response::fromMasterGarduIndukTransaksi).collect(Collectors.toList()); + response.setP_return(garduPadam); + }; break; + case 2: { + List gardu = (params.getP_jumlah() != null && params.getP_jumlah() > 0) + ? MasterGarduIndukTransaksi.find("status = ?1 and (is_read = false or is_read is NULL)", "NYALA").page(0, params.getP_jumlah()).list() + : MasterGarduIndukTransaksi.find("status = ?1 and (is_read = false or is_read is NULL)", "NYALA").list(); + + List garduPadam = gardu.stream().map(GarduNyalaV2Response::fromMasterGarduIndukTransaksi).collect(Collectors.toList()); + response.setP_return(garduPadam); + }; break; + case 3: { + List gardu = (params.getP_jumlah() != null && params.getP_jumlah() > 0) + ? MasterGarduIndukTransaksi.find("status = ?1 and (is_read = false or is_read is NULL)", "PERENCANAAN").page(0, params.getP_jumlah()).list() + : MasterGarduIndukTransaksi.find("status = ?1 and (is_read = false or is_read is NULL)", "PERENCANAAN").list(); + + List garduPadam = gardu.stream().map(GarduRencanaV2Response::fromMasterGarduIndukTransaksi).collect(Collectors.toList()); + response.setP_return(garduPadam); + }; break; + default : throw new GetDataGarduV2Exception("99","GAGAL !! p_jenis HARUS 1/2/3"); + } + } break; + + // flagging data yang telah terambil + case 3: { + try { + if (params.getP_nolaporan() == null || params.getP_nolaporan().isEmpty()) { + throw new GetDataGarduV2Exception("99","NOMOR LAPORAN TIDAK BOLEH KOSONG"); + } + + if (params.getP_kodegardu() == null || params.getP_kodegardu().isEmpty()) { + throw new GetDataGarduV2Exception("99","KODE GARDU TIDAK BOLEH KOSONG"); + } + + String status = ""; + switch (params.getP_jenis()) { + case 1: status = "PADAM"; break; + case 2: status = "NYALA"; break; + case 3: status = "PERENCANAAN"; break; + default : throw new GetDataGarduV2Exception("99","GAGAL !! p_jenis HARUS 1/2/3"); + } + + int updatedRow = MasterGarduIndukTransaksi.update("is_read = true where status = ?1 and no_laporan = ?2 and garduInduk.kode = ?3", status, params.getP_nolaporan(), params.getP_kodegardu()); + log.info("Updated: {}", updatedRow); + + response.setP_return(Map.of("info", "Berhasil Flagging, no_laporan:" + params.getP_nolaporan() + ", kode_gardu:" + params.getP_kodegardu())); + } catch (HibernateException e) { + throw new GetDataGarduV2Exception("99","GAGAL !! "+e.getMessage()); + } + } break; + default: throw new GetDataGarduV2Exception("99","GAGAL !! p_kode HARUS 1/2/3"); + } + + return response; + } + +} diff --git a/src/main/java/org/sadigit/utils/DateUtils.java b/src/main/java/org/sadigit/utils/DateUtils.java new file mode 100644 index 0000000..5ca83a3 --- /dev/null +++ b/src/main/java/org/sadigit/utils/DateUtils.java @@ -0,0 +1,11 @@ +package org.sadigit.utils; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class DateUtils { + public static LocalDateTime convertStringToLocalDateTime(String date) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); + return LocalDateTime.parse(date, formatter); + } +} diff --git a/src/main/java/org/sadigit/utils/GeomUtils.java b/src/main/java/org/sadigit/utils/GeomUtils.java new file mode 100644 index 0000000..f36766b --- /dev/null +++ b/src/main/java/org/sadigit/utils/GeomUtils.java @@ -0,0 +1,29 @@ +package org.sadigit.utils; + +import org.locationtech.jts.geom.GeometryFactory; +import org.locationtech.jts.geom.Point; +import org.locationtech.jts.io.ParseException; +import org.locationtech.jts.io.WKTReader; +import org.locationtech.jts.io.WKTWriter; + +public class GeomUtils { + + // Convert Point to WKT string + public static String pointToWkt(Point point) { + WKTWriter writer = new WKTWriter(); + return writer.write(point); + } + + public static Point wktToPoint(String wkt, int srid) throws ParseException { + GeometryFactory geometryFactory = new GeometryFactory(); + WKTReader reader = new WKTReader(geometryFactory); + Point point = (Point) reader.read(wkt); + point.setSRID(srid); + return point; + } + + public static Point wktToPoint(String lon, String lat, int srid) throws ParseException { + String point = "POINT(" + lon + " " + lat + ")"; + return wktToPoint(point, srid); + } +} diff --git a/src/main/java/org/sadigit/utils/MyJsonbFormatConfig.java b/src/main/java/org/sadigit/utils/MyJsonbFormatConfig.java new file mode 100644 index 0000000..1a946ec --- /dev/null +++ b/src/main/java/org/sadigit/utils/MyJsonbFormatConfig.java @@ -0,0 +1,13 @@ +package org.sadigit.utils; + +import io.quarkus.jsonb.JsonbConfigCustomizer; +import jakarta.inject.Singleton; +import jakarta.json.bind.JsonbConfig; + +@Singleton +public class MyJsonbFormatConfig implements JsonbConfigCustomizer { + + public void customize(JsonbConfig config) { + config.withNullValues(true); + } +} diff --git a/src/main/java/org/sadigit/utils/XmlToJsonConverter.java b/src/main/java/org/sadigit/utils/XmlToJsonConverter.java new file mode 100644 index 0000000..842fa1c --- /dev/null +++ b/src/main/java/org/sadigit/utils/XmlToJsonConverter.java @@ -0,0 +1,21 @@ +package org.sadigit.utils; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.xml.XmlMapper; + +public class XmlToJsonConverter { + public static String convertXmlToJson(String xmlString) throws Exception { + // Create an XML mapper + XmlMapper xmlMapper = new XmlMapper(); + + // Read XML string into JSON + JsonNode jsonNode = xmlMapper.readTree(xmlString.getBytes()); + + // Create an Object Mapper + ObjectMapper objectMapper = new ObjectMapper(); + + // Convert JSON node to JSON string + return objectMapper.writeValueAsString(jsonNode); + } +} diff --git a/src/main/resources/META-INF/resources/index.html b/src/main/resources/META-INF/resources/index.html new file mode 100644 index 0000000..4bc099a --- /dev/null +++ b/src/main/resources/META-INF/resources/index.html @@ -0,0 +1,284 @@ + + + + + ap2t-api - 1.0.0 + + + +
+
+
+ + + + + quarkus_logo_horizontal_rgb_1280px_reverse + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+

You just made a Quarkus application.

+

This page is served by Quarkus.

+ Visit the Dev UI +

This page: src/main/resources/META-INF/resources/index.html

+

App configuration: src/main/resources/application.properties

+

Static assets: src/main/resources/META-INF/resources/

+

Code: src/main/java

+

Generated starter code:

+
    +
  • + RESTEasy Reactive Easily start your Reactive RESTful Web Services +
    @Path: /hello +
    Related guide +
  • + +
+
+
+

Selected extensions

+
    +
  • Hibernate Reactive with Panache
  • +
  • RESTEasy Reactive (guide)
  • +
+
Documentation
+

Practical step-by-step guides to help you achieve a specific goal. Use them to help get your work + done.

+
Set up your IDE
+

Everyone has a favorite IDE they like to use to code. Learn how to configure yours to maximize your + Quarkus productivity.

+
+
+
+ + diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 73a6799..757615f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,7 +1,35 @@ -quarkus.native.resources.includes=mock-data/** +# Smallrye Health +quarkus.smallrye-health.ui.enable=true +quarkus.smallrye-health.ui.always-include=true -# Database configuration +# Database connection +quarkus.datasource.jdbc.url=jdbc:postgresql://10.1.50.173:30257/apkt?sslmode=require +quarkus.datasource.db-kind=postgresql quarkus.datasource.username=adminapkt quarkus.datasource.password=adm-apkt@2024! -quarkus.datasource.jdbc.url=jdbc:postgresql://10.1.50.173:30257/apkt?sslmode=require -quarkus.hibernate-orm.log.sql=true \ No newline at end of file +quarkus.hibernate-orm.jdbc.timezone=Asia/Jakarta + +# HTTP Configuration +quarkus.http.cors.origins=* +quarkus.http.cors=true +quarkus.http.cors.access-control-allow-credentials=true +quarkus.http.host=0.0.0.0 +quarkus.http.port=8080 + +# Additional Hibernate properties +quarkus.hibernate-orm.dialect=org.hibernate.dialect.PostgreSQLDialect +# quarkus.hibernate-orm.statistics=true + +# Dev-UI +quarkus.dev-ui.cors.enabled=false + +# Smallrye Cors +quarkus.smallrye.cors.allow-credentials=true +quarkus.smallrye.cors.enabled=true +quarkus.smallrye.cors.allow-origin=* + +# Swagger Configuration Production +quarkus.smallrye-openapi.info-title=API APKT-PLNMOBILE +quarkus.smallrye-openapi.info-version=1.0.0 +quarkus.smallrye-openapi.info-description=API APKT-PLNMOBILE +