From e652b6d1b0119970ec90408bcebdf4182c4f79be Mon Sep 17 00:00:00 2001 From: nehaniua Date: Mon, 2 Sep 2024 12:59:41 +0530 Subject: [PATCH] obpas changes decimal points, toilet. risk type computation changes in frontend and bpa service. --- .../edcr/feature/ToiletDetailsExtract.java | 103 ++++----- .../org/egov/edcr/feature/HeightOfRoom.java | 8 +- .../java/org/egov/edcr/feature/Kitchen.java | 4 +- .../java/org/egov/edcr/feature/Parking.java | 5 +- .../org/egov/edcr/feature/ToiletDetails.java | 207 +++++++----------- .../egov/edcr/service/PlanReportService.java | 90 ++++---- .../libraries/src/utils/obps/index.js | 13 +- .../org/egov/bpa/service/EDCRService.java | 12 +- .../egov/bpa/service/EnrichmentService.java | 11 +- 9 files changed, 198 insertions(+), 255 deletions(-) diff --git a/edcr/service/egov/egov-edcr-extract/src/main/java/org/egov/edcr/feature/ToiletDetailsExtract.java b/edcr/service/egov/egov-edcr-extract/src/main/java/org/egov/edcr/feature/ToiletDetailsExtract.java index dee6deda210..eedfdc5119b 100644 --- a/edcr/service/egov/egov-edcr-extract/src/main/java/org/egov/edcr/feature/ToiletDetailsExtract.java +++ b/edcr/service/egov/egov-edcr-extract/src/main/java/org/egov/edcr/feature/ToiletDetailsExtract.java @@ -39,80 +39,53 @@ public PlanDetail validate(PlanDetail planDetail) { @Override public PlanDetail extract(PlanDetail planDetail) { - List toiletMeasurements = null; - List toiletVentilationMeasurements = null; - List roomMeasurements = null; - List roomHeights; - List roomHeightsList; - - - - - for (Block block : planDetail.getBlocks()) - if (block.getBuilding() != null && block.getBuilding().getFloors() != null) + for (Block block : planDetail.getBlocks()) { + if (block.getBuilding() != null && block.getBuilding().getFloors() != null) { for (Floor f : block.getBuilding().getFloors()) { - List toilets = new ArrayList<>(); + List toilets = new ArrayList<>(); String layerName = String.format(layerNames.getLayerName("LAYER_NAME_BLK_FLR_TOILET"), block.getNumber(), f.getNumber(), "+\\d"); - - List names = Util.getLayerNamesLike(planDetail.getDoc(), layerName); - - - for (String toiletLayer : names) { - toiletMeasurements = Util.getPolyLinesByLayer(planDetail.getDoc(), toiletLayer); - - if (!toiletMeasurements.isEmpty()) { - Toilet toiletObj = new Toilet(); - List toiletMeasurementList = new ArrayList<>(); - toiletMeasurements.forEach(toilet -> { - - Measurement measurementToilet = new MeasurementDetail(toilet, true); - toiletMeasurementList.add(measurementToilet); - - - }); - - toiletObj.setToilets(toiletMeasurementList); - toilets.add(toiletObj); - } - - + List names = Util.getLayerNamesLike(planDetail.getDoc(), layerName); + + for (String toiletLayer : names) { + List toiletMeasurements = Util.getPolyLinesByLayer(planDetail.getDoc(), toiletLayer); + + if (!toiletMeasurements.isEmpty()) { + Toilet toiletObj = new Toilet(); + List toiletMeasurementList = new ArrayList<>(); + toiletMeasurements.forEach(toilet -> { + Measurement measurementToilet = new MeasurementDetail(toilet, true); + toiletMeasurementList.add(measurementToilet); + }); + + toiletObj.setToilets(toiletMeasurementList); + toilets.add(toiletObj); } - - - - String toiletVentilationLayer = String.format(layerNames.getLayerName("LAYER_NAME_BLK_FLR_TOILET_VENTILATION"), block.getNumber(), - f.getNumber(), "+\\d"); - List ventilationList = Util.getLayerNamesLike(planDetail.getDoc(), toiletVentilationLayer); + } - List ventilation = new ArrayList<>(); - - for (String ventilationHeightLayer : ventilationList) { - toiletVentilationMeasurements = Util.getPolyLinesByLayer(planDetail.getDoc(), ventilationHeightLayer); - String windowHeight = Util.getMtextByLayerName(planDetail.getDoc(), ventilationHeightLayer); - - Toilet toiletObj = new Toilet(); - BigDecimal windowHeight1 = windowHeight != null - ? BigDecimal.valueOf( - Double.valueOf(windowHeight.replaceAll("WINDOW_HT_M=", ""))) - : BigDecimal.ZERO; - - - - toiletObj.setToiletVentilation(windowHeight1); - toilets.add(toiletObj); - + String toiletVentilationLayer = String.format(layerNames.getLayerName("LAYER_NAME_BLK_FLR_TOILET_VENTILATION"), block.getNumber(), + f.getNumber(), "+\\d"); + List ventilationList = Util.getLayerNamesLike(planDetail.getDoc(), toiletVentilationLayer); + + for (String ventilationHeightLayer : ventilationList) { + List toiletVentilationMeasurements = Util.getPolyLinesByLayer(planDetail.getDoc(), ventilationHeightLayer); + String windowHeight = Util.getMtextByLayerName(planDetail.getDoc(), ventilationHeightLayer); - - + BigDecimal windowHeight1 = windowHeight != null + ? BigDecimal.valueOf(Double.parseDouble(windowHeight.replaceAll("WINDOW_HT_M=", ""))) + : BigDecimal.ZERO; + + for (Toilet toiletObj : toilets) { + toiletObj.setToiletVentilation(windowHeight1); } - f.setToilet(toilets); - } - + + f.setToilet(toilets); + } + } + } return planDetail; } - -} +} \ No newline at end of file diff --git a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/HeightOfRoom.java b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/HeightOfRoom.java index b48bb98cff4..4fe82c30efa 100644 --- a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/HeightOfRoom.java +++ b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/HeightOfRoom.java @@ -506,7 +506,7 @@ else if (roomAreas.size() > 1) { && floor.getNonaHabitationalDoors().size() > 0) { for (Door door : floor.getNonaHabitationalDoors()) { if (door != null) { - BigDecimal doorHeight = door.getNonHabitationDoorHeight(); + BigDecimal doorHeight = door.getNonHabitationDoorHeight().setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal doorWidth = door.getNonHabitationDoorWidth(); // BigDecimal minDoorHeight = BigDecimal.valueOf(2.0); BigDecimal minDoorWidth = BigDecimal.valueOf(0.75); @@ -533,7 +533,7 @@ else if (roomAreas.size() > 1) { // // Calculation For Windows Added by Neha if (floor.getWindows() != null && floor.getWindows().size() > 0) { for (Window window : floor.getWindows()) { - BigDecimal windowHeight = window.getWindowHeight(); + BigDecimal windowHeight = window.getWindowHeight().setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal windowWidth = window.getWindowWidth(); BigDecimal minWindowHeight = BigDecimal.valueOf(.50); BigDecimal minWindowWidth = BigDecimal.valueOf(.50); @@ -628,7 +628,7 @@ else if (roomAreas.size() > 1) { // Now perform the check for each window against the minimum dimensions if (room.getWindows() != null && !room.getWindows().isEmpty()) { for (Window window : room.getWindows()) { - BigDecimal windowHeight = window.getWindowHeight(); + BigDecimal windowHeight = window.getWindowHeight().setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal windowWidth = window.getWindowWidth(); // Check each window's dimensions @@ -696,7 +696,7 @@ else if (roomAreas.size() > 1) { // Now perform the check for each Door against the minimum dimensions if (room.getDoors() != null && !room.getDoors().isEmpty()) { for (Door door : room.getDoors()) { - BigDecimal doorHeight = door.getDoorHeight(); + BigDecimal doorHeight = door.getDoorHeight().setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal doorWidth = door.getDoorWidth(); System.out.println("rum number" + room.getNumber()); diff --git a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/Kitchen.java b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/Kitchen.java index acb97ff7869..6eef89babc3 100644 --- a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/Kitchen.java +++ b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/Kitchen.java @@ -199,7 +199,7 @@ public Plan process(Plan pl) { subRule = SUBRULE_41_III; if (!kitchenAreas.isEmpty()) { - totalArea = kitchenAreas.stream().reduce(BigDecimal.ZERO, BigDecimal::add); + totalArea = kitchenAreas.stream().reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP); minimumHeight = MINIMUM_AREA_5; subRuleDesc = String.format(SUBRULE_41_III_AREA_DESC, KITCHEN); @@ -216,7 +216,7 @@ public Plan process(Plan pl) { boolean isTypicalRepititiveFloor = false; Map typicalFloorValues = ProcessHelper.getTypicalFloorValues(block, floor, isTypicalRepititiveFloor); - BigDecimal minRoomWidth = kitchenWidths.stream().reduce(BigDecimal::min).get(); + BigDecimal minRoomWidth = kitchenWidths.stream().reduce(BigDecimal::min).get().setScale(2, BigDecimal.ROUND_HALF_UP); minWidth = MINIMUM_WIDTH_1_8; subRuleDesc = String.format(SUBRULE_41_III_TOTAL_WIDTH, KITCHEN); buildResult(pl, floor, minWidth, subRule, subRuleDesc, minRoomWidth, valid, typicalFloorValues); diff --git a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/Parking.java b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/Parking.java index ef2886c4971..99b39ec34b9 100644 --- a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/Parking.java +++ b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/Parking.java @@ -349,8 +349,9 @@ else if (plotArea != null && plotArea.doubleValue() >= 100 && plotArea.doubleVal BigDecimal requiredVisitorParkingArea = Util.roundOffTwoDecimal(BigDecimal.valueOf(requiredVisitorParkArea)); BigDecimal providedVisitorParkingArea = Util.roundOffTwoDecimal(providedVisitorParkArea); - double totalECS = roundedValueOpen + roundedValueCover + roundedValueBsmnt + roundedValueStilt; - + BigDecimal totalECS = new BigDecimal(roundedValueOpen + roundedValueCover + roundedValueBsmnt + roundedValueStilt) + .setScale(2, BigDecimal.ROUND_HALF_UP); + if (totalProvidedCarParkArea.doubleValue() == 0) { pl.addError(RULE__DESCRIPTION, getLocaleMessage("msg.error.not.defined", RULE__DESCRIPTION)); diff --git a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/ToiletDetails.java b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/ToiletDetails.java index 900f8f417e8..7e208e945c2 100644 --- a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/ToiletDetails.java +++ b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/ToiletDetails.java @@ -43,9 +43,7 @@ * or trademarks of eGovernments Foundation. * * In case of any queries, you can reach eGovernments Foundation at contact@egovernments.org. - */ - -package org.egov.edcr.feature; + */package org.egov.edcr.feature; import java.math.BigDecimal; import java.math.RoundingMode; @@ -58,13 +56,10 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.egov.common.entity.edcr.Block; -import org.egov.common.entity.edcr.Door; import org.egov.common.entity.edcr.Floor; import org.egov.common.entity.edcr.Measurement; import org.egov.common.entity.edcr.Plan; import org.egov.common.entity.edcr.Result; -import org.egov.common.entity.edcr.Room; -import org.egov.common.entity.edcr.RoomHeight; import org.egov.common.entity.edcr.ScrutinyDetail; import org.egov.common.entity.edcr.Toilet; import org.springframework.stereotype.Service; @@ -72,128 +67,80 @@ @Service public class ToiletDetails extends FeatureProcess { - private static final Logger LOG = LogManager.getLogger(ToiletDetails.class); - private static final String RULE_41_IV = "5.5.2"; - - public static final String BATHROOM_DESCRIPTION = "Toilet"; - - @Override - public Plan validate(Plan pl) { - - return pl; - } - - @Override - public Plan process(Plan pl) { - - ScrutinyDetail scrutinyDetail = new ScrutinyDetail(); - scrutinyDetail.setKey("Common_Toilet"); - scrutinyDetail.addColumnHeading(1, RULE_NO); - scrutinyDetail.addColumnHeading(2, DESCRIPTION); - //scrutinyDetail.addColumnHeading(3, NUMBER); - scrutinyDetail.addColumnHeading(4, REQUIRED); - scrutinyDetail.addColumnHeading(5, PROVIDED); - scrutinyDetail.addColumnHeading(6, STATUS); - - Map details = new HashMap<>(); - // String toiletNumber = ""; - - details.put(RULE_NO, RULE_41_IV); - details.put(DESCRIPTION, BATHROOM_DESCRIPTION); - - BigDecimal minHeight = BigDecimal.ZERO, area = BigDecimal.ZERO, minWidth = BigDecimal.ZERO; - BigDecimal width = BigDecimal.ZERO; - BigDecimal height = BigDecimal.ZERO; - BigDecimal ventilationHeight = BigDecimal.ZERO; - - - - - for (Block b : pl.getBlocks()) { - if (b.getBuilding() != null && b.getBuilding().getFloors() != null - && !b.getBuilding().getFloors().isEmpty()) { - - for (Floor f : b.getBuilding().getFloors()) { - if(!f.getToilet().isEmpty() && f.getToilet() != null) { - - for (Toilet toilet : f.getToilet()) { - if(toilet.getToilets() != null && !toilet.getToilets().isEmpty()) - - for( Measurement toiletMeasurements : toilet.getToilets()) { - area = toiletMeasurements.getArea().setScale(2, RoundingMode.HALF_UP); - width = toiletMeasurements.getWidth().setScale(2, RoundingMode.HALF_UP); - // toiletNumber = toiletMeasurements.getRoomNumber(); - - } - - if(toilet.getToiletVentilation() != null) { - ventilationHeight = toilet.getToiletVentilation().setScale(2, RoundingMode.HALF_UP); - - - }} - - } - -// if (f.getToilet() != null && f.getToilet() != null -// -// && !f.getToilet().getHeights().isEmpty() && f.getToilet().getRooms() != null -// && !f.getToilet().getRooms().isEmpty()) { -// -// if (f.getToilet().getHeights() != null && !f.getToilet().getHeights().isEmpty()) { -// minHeight = f.getToilet().getHeights().get(0).getHeight(); -// for (RoomHeight rh : f.getToilet().getHeights()) { -// if (rh.getHeight().compareTo(minHeight) < 0) { -// minHeight = rh.getHeight(); -// } -// } -// } -// -// if (f.getToilet().getRooms() != null && !f.getToilet().getRooms().isEmpty()) { -// minWidth = f.getToilet().getRooms().get(0).getWidth(); -// for (Measurement m : f.getToilet().getRooms()) { -// totalArea = totalArea.add(m.getArea()); -// if (m.getWidth().compareTo(minWidth) < 0) { -// minWidth = m.getWidth(); -// } -// } -// } -// details.put(NUMBER, toiletNumber); - - if( - // (minHeight.compareTo(new BigDecimal(2.4)) >= 0 - // && - area.compareTo(new BigDecimal(1.8)) >= 0 - && width.compareTo(new BigDecimal(1.2)) >= 0 && ventilationHeight.compareTo(new BigDecimal(0.3)) >= 0) { - - details.put(REQUIRED," Total Area >= 1.8, Width >= 1.2, Ventilation >= 0.3 "); - details.put(PROVIDED, " Total Area >= " + area - + ", width >= " + width + " Ventilation Height >= " + ventilationHeight ); - details.put(STATUS, Result.Accepted.getResultVal()); - scrutinyDetail.getDetail().add(details); - pl.getReportOutput().getScrutinyDetails().add(scrutinyDetail); - - } else { - details.put(REQUIRED," Total Area >= 1.8, Width >= 1.2, Ventilation >= 0.3"); - details.put(PROVIDED, " Total Area >= " + area - + ", Width >= " + width + " Ventilation Height >= " + ventilationHeight ); - details.put(STATUS, Result.Not_Accepted.getResultVal()); - scrutinyDetail.getDetail().add(details); - pl.getReportOutput().getScrutinyDetails().add(scrutinyDetail); - } - - } - - }} - - - //} - - return pl; - } - - @Override - public Map getAmendments() { - return new LinkedHashMap<>(); - } - + private static final Logger LOG = LogManager.getLogger(ToiletDetails.class); + private static final String RULE_41_IV = "5.5.2"; + public static final String BATHROOM_DESCRIPTION = "Toilet"; + + @Override + public Plan validate(Plan pl) { + return pl; + } + + @Override + public Plan process(Plan pl) { + + ScrutinyDetail scrutinyDetail = new ScrutinyDetail(); + scrutinyDetail.setKey("Common_Toilet"); + scrutinyDetail.addColumnHeading(1, RULE_NO); + scrutinyDetail.addColumnHeading(2, DESCRIPTION); + scrutinyDetail.addColumnHeading(3, FLOOR_NO); + scrutinyDetail.addColumnHeading(4, REQUIRED); + scrutinyDetail.addColumnHeading(5, PROVIDED); + scrutinyDetail.addColumnHeading(6, STATUS); + + for (Block b : pl.getBlocks()) { + if (b.getBuilding() != null && b.getBuilding().getFloors() != null && !b.getBuilding().getFloors().isEmpty()) { + for (Floor f : b.getBuilding().getFloors()) { + if (f.getToilet() != null && !f.getToilet().isEmpty()) { + for (Toilet toilet : f.getToilet()) { + if (toilet.getToilets() != null && !toilet.getToilets().isEmpty()) { + for (Measurement toiletMeasurements : toilet.getToilets()) { + Map details = new HashMap<>(); + details.put(RULE_NO, RULE_41_IV); + details.put(DESCRIPTION, BATHROOM_DESCRIPTION); + details.put(FLOOR_NO, "" + f.getNumber()); + + BigDecimal area = toiletMeasurements.getArea().setScale(2, RoundingMode.HALF_UP); + BigDecimal width = toiletMeasurements.getWidth().setScale(2, RoundingMode.HALF_UP); + + BigDecimal ventilationHeight = toilet.getToiletVentilation() != null + ? toilet.getToiletVentilation().setScale(2, RoundingMode.HALF_UP) + : BigDecimal.ZERO; + + + + if (area.compareTo(new BigDecimal(1.8)) >= 0 + && width.compareTo(new BigDecimal(1.2)) >= 0 + && ventilationHeight.compareTo(new BigDecimal(0.3)) >= 0) { + + details.put(REQUIRED, "Total Area >= 1.8, Width >= 1.2, Ventilation >= 0.3"); + details.put(PROVIDED, "Total Area = " + area + + ", Width = " + width + ", Ventilation Height = " + ventilationHeight); + details.put(STATUS, Result.Accepted.getResultVal()); + + } else { + details.put(REQUIRED, "Total Area >= 1.8, Width >= 1.2, Ventilation >= 0.3"); + details.put(PROVIDED, "Total Area = " + area + + ", Width = " + width + ", Ventilation Height = " + ventilationHeight); + details.put(STATUS, Result.Not_Accepted.getResultVal()); + } + + scrutinyDetail.getDetail().add(details); + } + } + } + } + } + } + } + + pl.getReportOutput().getScrutinyDetails().add(scrutinyDetail); + + return pl; + } + + @Override + public Map getAmendments() { + return new LinkedHashMap<>(); + } } diff --git a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/service/PlanReportService.java b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/service/PlanReportService.java index 80e6f6bdd42..f817a515f97 100644 --- a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/service/PlanReportService.java +++ b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/service/PlanReportService.java @@ -1151,45 +1151,57 @@ private List buildBlockWiseProposedInfo(Plan plan) { if (!occupancies.isEmpty()) { - for (Occupancy occupancy : occupancies) { - String occupancyName = ""; - if (occupancy.getTypeHelper() != null) - if (occupancy.getTypeHelper().getSubtype() != null) - occupancyName = occupancy.getTypeHelper().getSubtype().getName(); - else { - if (occupancy.getTypeHelper().getType() != null) - occupancyName = occupancy.getTypeHelper().getType().getName(); - } - DcrReportFloorDetail dcrReportFloorDetail = new DcrReportFloorDetail(); - String floorNo; - if (floor.getTerrace()) - floorNo = "Terrace"; - else if (occupancy.getIsMezzanine()) - floorNo = floor.getNumber() + " (Mezzanine " + floor.getNumber() + ")"; - else - floorNo = String.valueOf(floor.getNumber()); - dcrReportFloorDetail.setFloorNo(floorNo); - dcrReportFloorDetail.setOccupancy(occupancyName); - dcrReportFloorDetail.setBuiltUpArea( - occupancy.getExistingBuiltUpArea().compareTo(BigDecimal.ZERO) > 0 - ? occupancy.getBuiltUpArea() - .subtract(occupancy.getExistingBuiltUpArea()) - : occupancy.getBuiltUpArea()); - dcrReportFloorDetail.setFloorArea( - occupancy.getExistingFloorArea().compareTo(BigDecimal.ZERO) > 0 - ? occupancy.getFloorArea() - .subtract(occupancy.getExistingFloorArea()) - : occupancy.getFloorArea()); - dcrReportFloorDetail.setBuiltUpDeductionArea(occupancy.getDeduction() == null ? BigDecimal.ZERO : occupancy.getDeduction()); -// dcrReportFloorDetail.setCarpetArea( -// occupancy.getExistingCarpetArea().compareTo(BigDecimal.ZERO) > 0 -// ? occupancy.getCarpetArea() -// .subtract(occupancy.getExistingCarpetArea()) -// : occupancy.getCarpetArea()); - if (dcrReportFloorDetail.getBuiltUpArea().compareTo(BigDecimal.ZERO) > 0) { - dcrReportFloorDetails.add(dcrReportFloorDetail); - } - } + for (Occupancy occupancy : occupancies) { + String occupancyName = ""; + if (occupancy.getTypeHelper() != null) { + if (occupancy.getTypeHelper().getSubtype() != null) { + occupancyName = occupancy.getTypeHelper().getSubtype().getName(); + } else { + if (occupancy.getTypeHelper().getType() != null) { + occupancyName = occupancy.getTypeHelper().getType().getName(); + } + } + } + + DcrReportFloorDetail dcrReportFloorDetail = new DcrReportFloorDetail(); + String floorNo; + if (floor.getTerrace()) { + floorNo = "Terrace"; + } else if (occupancy.getIsMezzanine()) { + floorNo = floor.getNumber() + " (Mezzanine " + floor.getNumber() + ")"; + } else { + floorNo = String.valueOf(floor.getNumber()); + } + dcrReportFloorDetail.setFloorNo(floorNo); + dcrReportFloorDetail.setOccupancy(occupancyName); + + // Built-up Area + BigDecimal builtUpArea = occupancy.getExistingBuiltUpArea().compareTo(BigDecimal.ZERO) > 0 + ? occupancy.getBuiltUpArea().subtract(occupancy.getExistingBuiltUpArea()) + : occupancy.getBuiltUpArea(); + dcrReportFloorDetail.setBuiltUpArea(builtUpArea.setScale(2, BigDecimal.ROUND_HALF_UP)); + + // Floor Area + BigDecimal floorArea = occupancy.getExistingFloorArea().compareTo(BigDecimal.ZERO) > 0 + ? occupancy.getFloorArea().subtract(occupancy.getExistingFloorArea()) + : occupancy.getFloorArea(); + dcrReportFloorDetail.setFloorArea(floorArea.setScale(2, BigDecimal.ROUND_HALF_UP)); + + // Built-up Deduction Area + BigDecimal builtUpDeductionArea = occupancy.getDeduction() == null ? BigDecimal.ZERO : occupancy.getDeduction(); + dcrReportFloorDetail.setBuiltUpDeductionArea(builtUpDeductionArea.setScale(2, BigDecimal.ROUND_HALF_UP)); + + // Optionally process Carpet Area if required + // dcrReportFloorDetail.setCarpetArea( + // occupancy.getExistingCarpetArea().compareTo(BigDecimal.ZERO) > 0 + // ? occupancy.getCarpetArea().subtract(occupancy.getExistingCarpetArea()) + // : occupancy.getCarpetArea()); + + if (dcrReportFloorDetail.getBuiltUpArea().compareTo(BigDecimal.ZERO) > 0) { + dcrReportFloorDetails.add(dcrReportFloorDetail); + } + } + } diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/libraries/src/utils/obps/index.js b/frontend/micro-ui/web/micro-ui-internals/packages/libraries/src/utils/obps/index.js index e1da9d150c6..b1ea1ec903b 100644 --- a/frontend/micro-ui/web/micro-ui-internals/packages/libraries/src/utils/obps/index.js +++ b/frontend/micro-ui/web/micro-ui-internals/packages/libraries/src/utils/obps/index.js @@ -1,19 +1,22 @@ export const calculateRiskType = (riskTypes, plotArea, blocks) => { const buildingHeight = blocks?.reduce((acc, block) => { - return Math.max(acc, block.building.buildingHeight) + return Math.max(acc, block.building.buildingHeightExcludingMP) }, Number.NEGATIVE_INFINITY); + // Removing plot area condition for the calculation of riskType because punjab only + //needs building height to calculate riskType + const risk = riskTypes?.find(riskType => { - if (riskType.riskType === "HIGH" && (plotArea > riskType?.fromPlotArea || buildingHeight >= riskType?.fromBuildingHeight)) { + if (riskType.riskType === "HIGH" && buildingHeight >= riskType?.fromBuildingHeight) { return true; } - if (riskType.riskType === "MEDIUM" && ((plotArea >= riskType?.fromPlotArea && plotArea <= riskType?.toPlotArea) || - (buildingHeight >= riskType?.fromBuildingHeight && buildingHeight <= riskType?.toBuildingHeight))) { + if (riskType.riskType === "MEDIUM" && + (buildingHeight >= riskType?.fromBuildingHeight && buildingHeight <= riskType?.toBuildingHeight)) { return true; } - if (riskType?.riskType === "LOW" && plotArea < riskType.toPlotArea && buildingHeight < riskType.toBuildingHeight) { + if (riskType?.riskType === "LOW" && buildingHeight < riskType.toBuildingHeight) { return true; } diff --git a/municipal-services/bpa-services/src/main/java/org/egov/bpa/service/EDCRService.java b/municipal-services/bpa-services/src/main/java/org/egov/bpa/service/EDCRService.java index e5dcd94ca5d..9641ab5be61 100755 --- a/municipal-services/bpa-services/src/main/java/org/egov/bpa/service/EDCRService.java +++ b/municipal-services/bpa-services/src/main/java/org/egov/bpa/service/EDCRService.java @@ -151,7 +151,7 @@ public Map validateEdcrPlan(BPARequest request, Object mdmsData) additionalDetails.put(BPAConstants.PERMIT_NO, permitNumber.get(0)); } List plotAreas = context.read("edcrDetail.*.planDetail.plot.area", typeRef); - List buildingHeights = context.read("edcrDetail.*.planDetail.blocks.*.building.buildingHeight", + List buildingHeights = context.read("edcrDetail.*.planDetail.blocks.*.building.buildingHeightExcludingMP", typeRef); if (CollectionUtils.isEmpty(edcrStatus) || !edcrStatus.get(0).equalsIgnoreCase("Accepted")) { @@ -182,9 +182,13 @@ private void validateOCEdcr(List OccupancyTypes, List plotAreas, // the list Double plotArea = plotAreas.get(0); List jsonOutput = JsonPath.read(masterData, BPAConstants.RISKTYPE_COMPUTATION); - String filterExp = "$.[?((@.fromPlotArea < " + plotArea + " && @.toPlotArea >= " + plotArea - + ") || ( @.fromBuildingHeight < " + buildingHeight + " && @.toBuildingHeight >= " - + buildingHeight + " ))].riskType"; +// String filterExp = "$.[?((@.fromPlotArea < " + plotArea + " && @.toPlotArea >= " + plotArea +// + ") || ( @.fromBuildingHeight < " + buildingHeight + " && @.toBuildingHeight >= " +// + buildingHeight + " ))].riskType"; +// + String filterExp = "$.[?(@.fromBuildingHeight < " + buildingHeight + + " && @.toBuildingHeight >= " + buildingHeight + ")].riskType"; + List riskTypes = JsonPath.read(jsonOutput, filterExp); diff --git a/municipal-services/bpa-services/src/main/java/org/egov/bpa/service/EnrichmentService.java b/municipal-services/bpa-services/src/main/java/org/egov/bpa/service/EnrichmentService.java index 6179f0afa2d..0690d97602a 100755 --- a/municipal-services/bpa-services/src/main/java/org/egov/bpa/service/EnrichmentService.java +++ b/municipal-services/bpa-services/src/main/java/org/egov/bpa/service/EnrichmentService.java @@ -258,14 +258,17 @@ public void postStatusEnrichment(BPARequest bpaRequest) { DocumentContext context = JsonPath.using(Configuration.defaultConfiguration()).parse(jsonString); Object plot = context.read("edcrDetail[0].planDetail.planInformation.plotArea"); Double plotArea = Double.valueOf(String.valueOf(plot)); - Object bldgHgt = context.read("edcrDetail[0].planDetail.blocks[0].building.buildingHeight"); + Object bldgHgt = context.read("edcrDetail[0].planDetail.blocks[0].building.buildingHeightExcludingMP"); Double buildingHeight = Double.valueOf(String.valueOf(bldgHgt)); List jsonOutput = JsonPath.read(masterData, BPAConstants.RISKTYPE_COMPUTATION); - String filterExp = "$.[?((@.fromPlotArea < " + plotArea + " && @.toPlotArea >= " + plotArea - + ") || ( @.fromBuildingHeight < " + buildingHeight + " && @.toBuildingHeight >= " - + buildingHeight + " ))].riskType"; +// String filterExp = "$.[?((@.fromPlotArea < " + plotArea + " && @.toPlotArea >= " + plotArea +// + ") || ( @.fromBuildingHeight < " + buildingHeight + " && @.toBuildingHeight >= " +// + buildingHeight + " ))].riskType"; +// + String filterExp = "$.[?(@.fromBuildingHeight < " + buildingHeight + "" + + " && @.toBuildingHeight >= " + buildingHeight + ")].riskType"; List riskTypes = JsonPath.read(jsonOutput, filterExp);