From 5367efaedd595cd71e978febd62cb5bd72f8fcdb Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 16 Jun 2026 17:43:42 +0530 Subject: [PATCH 1/2] fix duplicate ben id issue --- .../repo/rmnch/RMNCHBenDetailsRepo.java | 3 +- .../repo/rmnch/RMNCHHouseHoldDetailsRepo.java | 6 ++- .../rmnch/RmnchDataSyncServiceImpl.java | 50 +++++++++++-------- 3 files changed, 36 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBenDetailsRepo.java b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBenDetailsRepo.java index 104fe902..1bc948a3 100644 --- a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBenDetailsRepo.java +++ b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBenDetailsRepo.java @@ -22,6 +22,7 @@ package com.iemr.common.identity.repo.rmnch; import java.math.BigInteger; +import java.util.List; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; @@ -38,5 +39,5 @@ public RMNCHMBeneficiarydetail getByIdAndVanID(@Param("vanSerialNo") BigInteger @Query(" SELECT t FROM RMNCHMBeneficiarydetail t WHERE t.id = " + "(SELECT m.benDetailsId from RMNCHMBeneficiarymapping m where m.benRegId = :beneficiaryRegID)") - public RMNCHMBeneficiarydetail getByBenRegID(@Param("beneficiaryRegID") BigInteger beneficiaryRegID); + public List getByBenRegID(@Param("beneficiaryRegID") BigInteger beneficiaryRegID); } diff --git a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHHouseHoldDetailsRepo.java b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHHouseHoldDetailsRepo.java index 4aed3c87..76490cbd 100644 --- a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHHouseHoldDetailsRepo.java +++ b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHHouseHoldDetailsRepo.java @@ -28,11 +28,13 @@ import com.iemr.common.identity.data.rmnch.RMNCHHouseHoldDetails; +import java.util.List; + @Repository public interface RMNCHHouseHoldDetailsRepo extends CrudRepository { @Query(" SELECT t FROM RMNCHHouseHoldDetails t WHERE t.id = :vanSerialNo AND t.VanID = :vanID") public RMNCHHouseHoldDetails getByIdAndVanID(@Param("vanSerialNo") long vanSerialNo, @Param("vanID") int vanID); - @Query(" SELECT t FROM RMNCHHouseHoldDetails t WHERE t.houseoldId =:houseoldId ") - public RMNCHHouseHoldDetails getByHouseHoldID(@Param("houseoldId") long houseoldId); + @Query("SELECT t FROM RMNCHHouseHoldDetails t WHERE t.houseoldId = :houseoldId") + List getByHouseHoldID(@Param("houseoldId") long houseoldId); } diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index 568d4c1a..8b1e73da 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -167,20 +167,22 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { } obj.setRelatedBeneficiaryIdsDB(sb.toString()); } - RMNCHMBeneficiarydetail rmnchmBeneficiarydetail = - rMNCHBenDetailsRepo.getByBenRegID(obj.getBenRegId()); - if (rmnchmBeneficiarydetail != null) { - rmnchmBeneficiarydetail.setFirstName(obj.getFirstName()); - rmnchmBeneficiarydetail.setLastName(obj.getLastName()); - rmnchmBeneficiarydetail.setFatherName(obj.getFatherName()); - rmnchmBeneficiarydetail.setMotherName(obj.getMotherName()); - rmnchmBeneficiarydetail.setDob(obj.getDob()); - rmnchmBeneficiarydetail.setSpousename(obj.getSpousename()); - rmnchmBeneficiarydetail.setGender(obj.getGender()); - rmnchmBeneficiarydetail.setGenderId(obj.getGenderId()); - rmnchmBeneficiarydetail.setMaritalstatus(obj.getMaritalstatus()); - rmnchmBeneficiarydetail.setMaritalstatusId(obj.getMaritalstatusId()); - benDetailsList.add(rmnchmBeneficiarydetail); + if(!rMNCHBenDetailsRepo.getByBenRegID(obj.getBenRegId()).isEmpty()){ + RMNCHMBeneficiarydetail rmnchmBeneficiarydetail = + rMNCHBenDetailsRepo.getByBenRegID(obj.getBenRegId()).get(0); + if (rmnchmBeneficiarydetail != null) { + rmnchmBeneficiarydetail.setFirstName(obj.getFirstName()); + rmnchmBeneficiarydetail.setLastName(obj.getLastName()); + rmnchmBeneficiarydetail.setFatherName(obj.getFatherName()); + rmnchmBeneficiarydetail.setMotherName(obj.getMotherName()); + rmnchmBeneficiarydetail.setDob(obj.getDob()); + rmnchmBeneficiarydetail.setSpousename(obj.getSpousename()); + rmnchmBeneficiarydetail.setGender(obj.getGender()); + rmnchmBeneficiarydetail.setGenderId(obj.getGenderId()); + rmnchmBeneficiarydetail.setMaritalstatus(obj.getMaritalstatus()); + rmnchmBeneficiarydetail.setMaritalstatusId(obj.getMaritalstatusId()); + benDetailsList.add(rmnchmBeneficiarydetail); + } } } @@ -239,10 +241,14 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { List houseHoldList = Arrays.asList(objArr3); for (RMNCHHouseHoldDetails obj : houseHoldList) { - RMNCHHouseHoldDetails temp = rMNCHHouseHoldDetailsRepo - .getByHouseHoldID(obj.getHouseoldId()); - if (temp != null) - obj.setHouseHoldDetailsId(temp.getHouseHoldDetailsId()); + if(!rMNCHHouseHoldDetailsRepo + .getByHouseHoldID(obj.getHouseoldId()).isEmpty()){ + RMNCHHouseHoldDetails temp = rMNCHHouseHoldDetailsRepo + .getByHouseHoldID(obj.getHouseoldId()).get(0); + if (temp != null) + obj.setHouseHoldDetailsId(temp.getHouseHoldDetailsId()); + } + } houseHoldList = (ArrayList) rMNCHHouseHoldDetailsRepo .saveAll(houseHoldList); @@ -438,8 +444,12 @@ private String getMappingsForAddressIDs(List addressLi // 20-09-2021,end if (benDetailsRMNCHOBJ != null && benDetailsRMNCHOBJ.getHouseoldId() != null) - benHouseHoldRMNCHROBJ = rMNCHHouseHoldDetailsRepo - .getByHouseHoldID(benDetailsRMNCHOBJ.getHouseoldId()); + if(!rMNCHHouseHoldDetailsRepo + .getByHouseHoldID(benDetailsRMNCHOBJ.getHouseoldId()).isEmpty()){ + benHouseHoldRMNCHROBJ = rMNCHHouseHoldDetailsRepo + .getByHouseHoldID(benDetailsRMNCHOBJ.getHouseoldId()).get(0); + } + } if (benDetailsRMNCHOBJ == null) From 53af32eb7cc991d7033a0014037570c56a766128 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 14 Oct 2026 12:47:00 +0530 Subject: [PATCH 2/2] remove gps column --- .../data/rmnch/RMNCHBeneficiaryDetailsRmnch.java | 12 +----------- .../data/rmnch/RMNCHHouseHoldDetails.java | 16 ++-------------- .../com/iemr/common/identity/domain/Address.java | 6 ++---- .../service/rmnch/RmnchDataSyncServiceImpl.java | 12 +++--------- 4 files changed, 8 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHBeneficiaryDetailsRmnch.java b/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHBeneficiaryDetailsRmnch.java index b41c7ecc..06022622 100644 --- a/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHBeneficiaryDetailsRmnch.java +++ b/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHBeneficiaryDetailsRmnch.java @@ -611,22 +611,12 @@ public class RMNCHBeneficiaryDetailsRmnch { @Transient private Double temperature; // stored as "temperatureValue" in otherFields to match getBeneficiaryData key - @Expose - @Column(name = "gpsLatitude") - private Double gpsLatitude; - - @Expose - @Column(name = "gpsLongitude") - private Double gpsLongitude; @Expose @Column(name = "digipin") private String digipin; - @Expose - @Column(name = "gpsTimestamp") - @JsonAdapter(GpsTimestampAdapter.class) - private Timestamp gpsTimestamp; + @Expose @Column(name = "isGpsUnavailable", nullable = false, columnDefinition = "TINYINT(1) DEFAULT 0") diff --git a/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHHouseHoldDetails.java b/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHHouseHoldDetails.java index 471bdaa6..32afd975 100644 --- a/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHHouseHoldDetails.java +++ b/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHHouseHoldDetails.java @@ -379,25 +379,13 @@ public class RMNCHHouseHoldDetails { @Expose @Column(name = "mohallaName") private String mohallaName; - - @Expose - @SerializedName("latitude") - @Column(name = "gpsLatitude") - private Double gpsLatitude; - - @Expose - @SerializedName("longitude") - @Column(name = "gpsLongitude") - private Double gpsLongitude; + @Expose @Column(name = "digipin") private String digipin; - @Expose - @Column(name = "gpsTimestamp") - @JsonAdapter(GpsTimestampAdapter.class) - private Timestamp gpsTimestamp; + @Expose @Column(name = "isGpsUnavailable", nullable = false, columnDefinition = "TINYINT(1) DEFAULT 0") diff --git a/src/main/java/com/iemr/common/identity/domain/Address.java b/src/main/java/com/iemr/common/identity/domain/Address.java index f355cbc8..7f7e716b 100644 --- a/src/main/java/com/iemr/common/identity/domain/Address.java +++ b/src/main/java/com/iemr/common/identity/domain/Address.java @@ -56,11 +56,9 @@ private Integer vanID; private Integer parkingPlaceID; - private Double gpsLatitude; - private Double gpsLongitude; + private String digipin; - @JsonAdapter(GpsTimestampAdapter.class) - private Timestamp gpsTimestamp; + private Boolean isGpsUnavailable; private String gpsUnavailableReason; } diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index 6201d6a3..715458e0 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -212,14 +212,10 @@ public String syncDataToAmrit(String requestOBJ, String authorization) throws Ex // Extract GPS from i_bendemographics JsonObject demog = benGpsMap.get(obj.getBenficieryid()); if (demog != null) { - if (demog.has("latitude") && !demog.get("latitude").isJsonNull()) - obj.setGpsLatitude(demog.get("latitude").getAsDouble()); - if (demog.has("longitude") && !demog.get("longitude").isJsonNull()) - obj.setGpsLongitude(demog.get("longitude").getAsDouble()); + if (demog.has("digipin") && !demog.get("digipin").isJsonNull()) obj.setDigipin(demog.get("digipin").getAsString()); - if (demog.has("gpsTimestamp") && !demog.get("gpsTimestamp").isJsonNull()) - obj.setGpsTimestamp(new Timestamp(demog.get("gpsTimestamp").getAsLong())); + if (demog.has("isGpsUnavailable") && !demog.get("isGpsUnavailable").isJsonNull()) obj.setIsGpsUnavailable(demog.get("isGpsUnavailable").getAsBoolean()); // STOP-444 followup fix: same source object, previously never read for @@ -331,7 +327,6 @@ public String syncDataToAmrit(String requestOBJ, String authorization) throws Ex rmnchmBeneficiarydetail.setMaritalstatusId(obj.getMaritalstatusId()); rmnchmBeneficiarydetail.setPlaceOfCurrentLiving(obj.getPlaceOfCurrentLiving()); rmnchmBeneficiarydetail.setOtherPlaceOfCurrentLiving(obj.getOtherPlaceOfCurrentLiving()); - rmnchmBeneficiarydetail.setInstitutionName(obj.getInstitutionName()); // STOP-444 followup fix: these were previously never re-synced on an edit of an // existing beneficiary, so any change to them from the app was silently dropped. if (obj.getCommunity() != null) { @@ -506,8 +501,7 @@ public String syncDataToAmrit(String requestOBJ, String authorization) throws Ex .getByHouseHoldID(obj.getHouseoldId()).get(0); if (temp != null) obj.setHouseHoldDetailsId(temp.getHouseHoldDetailsId()); - if (hhTimestampMap.containsKey(obj.getHouseoldId())) - obj.setGpsTimestamp(new Timestamp(hhTimestampMap.get(obj.getHouseoldId()))); + } // Set VanID/ParkingPlaceID for both NEW and existing households — this must // stay OUTSIDE the "household already exists" block above (it's regressed