feat: Implement RekapGarduDistribusi resource and related DTOs
- Added RekapGarduDistribusiResource for handling data retrieval and synchronization. - Created RekapGarduDistribusiDTO to represent the data structure for distribution records. - Developed RekapGarduDistribusiResponse to encapsulate the response from the external API. - Introduced RekapGarduDistribusi entity to map to the database table. - Implemented GarduService for synchronizing data with external API. - Enhanced error handling and logging during data synchronization.
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
package id.co.iconpln.apkt.data309.service;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.math.BigDecimal;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import id.co.iconpln.apkt.data309.dto.Data309;
|
||||
import id.co.iconpln.apkt.data309.dto.Row;
|
||||
import id.co.iconpln.apkt.data309.entity.SS309;
|
||||
import id.co.iconpln.apkt.data309.entity.Ulp;
|
||||
import id.co.iconpln.apkt.data309.utils.XmlToJsonConverter;
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
|
||||
@ApplicationScoped
|
||||
public class GarduService {
|
||||
|
||||
public void syncronize(String unit, String thnbln) throws IOException, InterruptedException {
|
||||
HttpClient client = HttpClient.newHttpClient();
|
||||
HttpRequest request = HttpRequest.newBuilder()
|
||||
.uri(URI.create("http://10.1.81.64:8021/api/ap2t/eam/gardu/get-rekap-dil-gardu?blth=" + thnbln
|
||||
+ "&unitup="
|
||||
+ unit))
|
||||
.GET()
|
||||
.build();
|
||||
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
|
||||
String jsonString = response.body();
|
||||
|
||||
try {
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
objectMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
|
||||
objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
|
||||
objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
|
||||
objectMapper.configure(DeserializationFeature.FAIL_ON_TRAILING_TOKENS, true);
|
||||
objectMapper.configure(DeserializationFeature.FAIL_ON_MISSING_EXTERNAL_TYPE_ID_PROPERTY, true);
|
||||
ReportData reportData = objectMapper.readValue(jsonString, ReportData.class);
|
||||
String data = reportData.getData();
|
||||
RekapGarduDistribusiResponse dil = objectMapper.readValue(data, RekapGarduDistribusiResponse.class);
|
||||
if (dil.getData() != null) {
|
||||
for (RekapGarduDistribusiDTO newData : dil.getData()) {
|
||||
RekapGarduDistribusi rekapGarduDistribusi = RekapGarduDistribusi
|
||||
.find("unitUp = ?1 and unitAp = ?2 and unitUpi= ?3 and thbllap = ?3",
|
||||
newData.getUnitup(),
|
||||
newData.getUnitap(), newData.getUnitupi(), newData.getThbllap())
|
||||
.firstResult();
|
||||
if (rekapGarduDistribusi == null) {
|
||||
rekapGarduDistribusi = new RekapGarduDistribusi();
|
||||
}
|
||||
|
||||
rekapGarduDistribusi.setJmlplg1Fasa(newData.getJmlplg1Fasa());
|
||||
rekapGarduDistribusi.setUnitupi(newData.getUnitupi());
|
||||
rekapGarduDistribusi.setNamaupi(newData.getNamaupi());
|
||||
rekapGarduDistribusi.setKdgardu(newData.getKdgardu());
|
||||
rekapGarduDistribusi.setJmlplg3Fasa(newData.getJmlplg3Fasa());
|
||||
rekapGarduDistribusi.setNamaAp(newData.getNamaap());
|
||||
rekapGarduDistribusi.setKeteranganKdPembMeter(newData.getKeterangan_kdpembmeter());
|
||||
rekapGarduDistribusi.setUnitAp(newData.getUnitap());
|
||||
rekapGarduDistribusi.setJmlPlg(newData.getJmlplg());
|
||||
rekapGarduDistribusi.setJmlplg(newData.getJmlplg());
|
||||
rekapGarduDistribusi.setUnitup(newData.getUnitup());
|
||||
rekapGarduDistribusi.setKdpembmeter(newData.getKdpembmeter());
|
||||
rekapGarduDistribusi.setJmldaya(newData.getJmldaya());
|
||||
rekapGarduDistribusi.setNamaup(newData.getNamaup());
|
||||
rekapGarduDistribusi.setThbllap(newData.getThbllap());
|
||||
rekapGarduDistribusi.setNama_gardu(newData.getNama_gardu());
|
||||
|
||||
rekapGarduDistribusi.persist();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
Log.error("Error during synchronization: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user