diff --git a/edcr/service/egov/egov-commons/src/main/java/org/egov/common/entity/edcr/Door.java b/edcr/service/egov/egov-commons/src/main/java/org/egov/common/entity/edcr/Door.java index fd13e0864a4..2d9d36ab9ce 100644 --- a/edcr/service/egov/egov-commons/src/main/java/org/egov/common/entity/edcr/Door.java +++ b/edcr/service/egov/egov-commons/src/main/java/org/egov/common/entity/edcr/Door.java @@ -54,34 +54,86 @@ public class Door { private static final long serialVersionUID = 105L; - private String name; - - private List widths = new ArrayList<>(); - - private int colorCode; +private String name; + +private List widths = new ArrayList<>(); + +private BigDecimal doorWidth; + +private BigDecimal doorHeight; + +private List nonHabitationDoorWidths = new ArrayList<>(); + +private BigDecimal nonHabitationDoorWidth; + +private BigDecimal nonHabitationDoorHeight; + +private int colorCode; + +public String getName() { + return name; +} + +public void setName(String name) { + this.name = name; +} + +public List getNonHabitationDoorWidths() { + return nonHabitationDoorWidths; +} + +public void setNonHabitationDoorWidths(List nonHabitationDoorWidths) { + this.nonHabitationDoorWidths = nonHabitationDoorWidths; +} + +public List getWidths() { + return widths; +} + +public void setWidths(List widths) { + this.widths = widths; +} + + +public int getColorCode() { + return colorCode; +} + +public void setColorCode(int colorCode) { + this.colorCode = colorCode; +} + +public BigDecimal getDoorWidth() { + return doorWidth; +} - public String getName() { - return name; - } +public void setDoorWidth(BigDecimal doorWidth) { + this.doorWidth = doorWidth; +} - public void setName(String name) { - this.name = name; - } +public BigDecimal getDoorHeight() { + return doorHeight; +} - public List getWidths() { - return widths; - } +public void setDoorHeight(BigDecimal doorHeight) { + this.doorHeight = doorHeight; +} - public void setWidths(List widths) { - this.widths = widths; - } +public BigDecimal getNonHabitationDoorWidth() { + return nonHabitationDoorWidth; +} - public int getColorCode() { - return colorCode; - } +public void setNonHabitationDoorWidth(BigDecimal nonHabitationDoorWidth) { + this.nonHabitationDoorWidth = nonHabitationDoorWidth; +} - public void setColorCode(int colorCode) { - this.colorCode = colorCode; - } +public BigDecimal getNonHabitationDoorHeight() { + return nonHabitationDoorHeight; +} +public void setNonHabitationDoorHeight(BigDecimal nonHabitationDoorHeight) { + this.nonHabitationDoorHeight = nonHabitationDoorHeight; } + + +} \ No newline at end of file diff --git a/edcr/service/egov/egov-commons/src/main/java/org/egov/common/entity/edcr/Floor.java b/edcr/service/egov/egov-commons/src/main/java/org/egov/common/entity/edcr/Floor.java index 715d1916e70..fa1ba89fe70 100644 --- a/edcr/service/egov/egov-commons/src/main/java/org/egov/common/entity/edcr/Floor.java +++ b/edcr/service/egov/egov-commons/src/main/java/org/egov/common/entity/edcr/Floor.java @@ -84,6 +84,12 @@ public class Floor extends Measurement { private List regularRooms = new ArrayList<>(); private List habitationRooms = new ArrayList<>(); private List storeRooms = new ArrayList<>(); + // Doors for version 1.1.1 + private List doors = new ArrayList<>(); + private List nonaHabitationalDoors = new ArrayList<>(); + + private List windows = new ArrayList<>(); + private Room kitchen; private Room bathRoom; private Room waterClosets; @@ -106,8 +112,7 @@ public class Floor extends Measurement { private List constructedAreas = new ArrayList<>(); private List glassFacadeOpenings = new ArrayList<>(); - // Doors for version 1.1.1 - private List doors = new ArrayList<>(); + // From 2.0.0 version private List heightFromFloorToBottomOfBeam; @@ -174,6 +179,42 @@ public void addLifts(Lift lift) { public void addDaLifts(Lift daLift) { this.daLifts.add(daLift); } + + public List getNonaHabitationalDoors() { + return nonaHabitationalDoors; + } + + public void setNonaHabitationalDoors(List nonaHabitationalDoors) { + this.nonaHabitationalDoors = nonaHabitationalDoors; + } + + public void addNonaHabitationalDoors(Door nonaHabitationalDoors) { + this.nonaHabitationalDoors.add(nonaHabitationalDoors); + } + + public List getDoors() { + return doors; + } + + public void setDoors(List doors) { + this.doors = doors; + } + + public void addDoor(Door door) { + this.doors.add(door); + } + + public List getWindows() { + return windows; + } + + public void setWindows(List windows) { + this.windows = windows; + } + + public void addWindow(Window window) { + this.windows.add(window); + } public List getRamps() { return ramps; @@ -663,13 +704,7 @@ public void setGlassFacadeOpenings(List glassFacadeOpenings) this.glassFacadeOpenings = glassFacadeOpenings; } - public List getDoors() { - return doors; - } - - public void setDoors(List doors) { - this.doors = doors; - } + public List getHeightFromFloorToBottomOfBeam() { return heightFromFloorToBottomOfBeam; diff --git a/edcr/service/egov/egov-commons/src/main/java/org/egov/common/entity/edcr/Room.java b/edcr/service/egov/egov-commons/src/main/java/org/egov/common/entity/edcr/Room.java index ca56dc37c89..336bb6bd3dc 100644 --- a/edcr/service/egov/egov-commons/src/main/java/org/egov/common/entity/edcr/Room.java +++ b/edcr/service/egov/egov-commons/src/main/java/org/egov/common/entity/edcr/Room.java @@ -66,6 +66,9 @@ public class Room { private List mezzanineAreas = new ArrayList<>(); private List waterClosetVentialtion = new ArrayList<>(); + + private List windows = new ArrayList<>(); + public List getHeights() { return heightOfRooms; @@ -151,5 +154,17 @@ public List getMezzanineAreas() { public void setMezzanineAreas(List mezzanineAreas) { this.mezzanineAreas = mezzanineAreas; } + + public List getWindows() { + return windows; + } + + public void setWindows(List windows) { + this.windows = windows; + } + + public void addWindow(Window window) { + this.windows.add(window); + } } diff --git a/edcr/service/egov/egov-commons/src/main/java/org/egov/common/entity/edcr/Window.java b/edcr/service/egov/egov-commons/src/main/java/org/egov/common/entity/edcr/Window.java new file mode 100644 index 00000000000..33cb21db9f3 --- /dev/null +++ b/edcr/service/egov/egov-commons/src/main/java/org/egov/common/entity/edcr/Window.java @@ -0,0 +1,99 @@ +/* + * eGov SmartCity eGovernance suite aims to improve the internal efficiency,transparency, + * accountability and the service delivery of the government organizations. + * + * Copyright (C) <2019> eGovernments Foundation + * + * The updated version of eGov suite of products as by eGovernments Foundation + * is available at http://www.egovernments.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/ or + * http://www.gnu.org/licenses/gpl.html . + * + * In addition to the terms of the GPL license to be adhered to in using this + * program, the following additional terms are to be complied with: + * + * 1) All versions of this program, verbatim or modified must carry this + * Legal Notice. + * Further, all user interfaces, including but not limited to citizen facing interfaces, + * Urban Local Bodies interfaces, dashboards, mobile applications, of the program and any + * derived works should carry eGovernments Foundation logo on the top right corner. + * + * For the logo, please refer http://egovernments.org/html/logo/egov_logo.png. + * For any further queries on attribution, including queries on brand guidelines, + * please contact contact@egovernments.org + * + * 2) Any misrepresentation of the origin of the material is prohibited. It + * is required that all modified versions of this material be marked in + * reasonable ways as different from the original version. + * + * 3) This license does not grant any rights to any user of the program + * with regards to rights under trademark law for use of the trade names + * or trademarks of eGovernments Foundation. + * + * In case of any queries, you can reach eGovernments Foundation at contact@egovernments.org. + */ +package org.egov.common.entity.edcr; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class Window { + +private static final long serialVersionUID = 105L; + + private String name; + + private BigDecimal windowWidth; + + private BigDecimal windowHeight; + + private int colorCode; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public BigDecimal getWindowWidth() { + return windowWidth; + } + + public void setWindowWidth(BigDecimal windowWidth) { + this.windowWidth = windowWidth; + } + + public BigDecimal getWindowHeight() { + return windowHeight; + } + + public void setWindowHeight(BigDecimal windowHeight) { + this.windowHeight = windowHeight; + } + + public int getColorCode() { + return colorCode; + } + + public void setColorCode(int colorCode) { + this.colorCode = colorCode; + } + + + +} diff --git a/edcr/service/egov/egov-commons/src/main/resources/db/migration/main/V20240529133315__commons_dcr_door_window_layerrename.sql b/edcr/service/egov/egov-commons/src/main/resources/db/migration/main/V20240529133315__commons_dcr_door_window_layerrename.sql new file mode 100644 index 00000000000..9c3c87e54e3 --- /dev/null +++ b/edcr/service/egov/egov-commons/src/main/resources/db/migration/main/V20240529133315__commons_dcr_door_window_layerrename.sql @@ -0,0 +1,14 @@ +insert into state.egdcr_layername(id,key,value,createdby,createddate,lastmodifiedby,lastmodifieddate,version) +select nextval('state.seq_egdcr_layername'),'LAYER_NAME_DOOR','BLK_%s_FLR_%s_DOOR_%s',1,now(),1,now(),0 where not exists(select key from state.egdcr_layername where key='LAYER_NAME_DOOR'); + +insert into state.egdcr_layername(id,key,value,createdby,createddate,lastmodifiedby,lastmodifieddate,version) +select nextval('state.seq_egdcr_layername'),'LAYER_NAME_WINDOW','BLK_%s_FLR_%s_WINDOW_%s',1,now(),1,now(),0 where not exists(select key from state.egdcr_layername where key='LAYER_NAME_WINDOW'); + + +insert into state.egdcr_layername(id,key,value,createdby,createddate,lastmodifiedby,lastmodifieddate,version) +select nextval('state.seq_egdcr_layername'),'LAYER_NAME_NON_HABITATIONAL_DOOR','BLK_%s_FLR_%s_NON_HABITATIONAL_DOOR_%s',1,now(),1,now(),0 where not exists(select key from state.egdcr_layername where key='LAYER_NAME_NON_HABITATIONAL_DOOR'); + + +insert into state.egdcr_layername(id,key,value,createdby,createddate,lastmodifiedby,lastmodifieddate,version) +select nextval('state.seq_egdcr_layername'),'LAYER_NAME_WINDOW_ROOM','BLK_%s_FLR_%s_WINDOW_%s_ROOM_%s',1,now(),1,now(),0 where not exists(select key from state.egdcr_layername where key='LAYER_NAME_WINDOW'); + diff --git a/edcr/service/egov/egov-edcr-extract/src/main/java/org/egov/edcr/feature/HeightOfRoomExtract.java b/edcr/service/egov/egov-edcr-extract/src/main/java/org/egov/edcr/feature/HeightOfRoomExtract.java index f0be27dcdda..a0e34f429c3 100644 --- a/edcr/service/egov/egov-edcr-extract/src/main/java/org/egov/edcr/feature/HeightOfRoomExtract.java +++ b/edcr/service/egov/egov-edcr-extract/src/main/java/org/egov/edcr/feature/HeightOfRoomExtract.java @@ -12,17 +12,20 @@ import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; 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.Occupancy; import org.egov.common.entity.edcr.Room; import org.egov.common.entity.edcr.RoomHeight; import org.egov.common.entity.edcr.TypicalFloor; +import org.egov.common.entity.edcr.Window; import org.egov.edcr.entity.blackbox.MeasurementDetail; import org.egov.edcr.entity.blackbox.OccupancyDetail; import org.egov.edcr.entity.blackbox.PlanDetail; import org.egov.edcr.service.LayerNames; import org.egov.edcr.utility.Util; +import org.kabeja.dxf.DXFDimension; import org.kabeja.dxf.DXFLWPolyline; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -239,6 +242,152 @@ public PlanDetail extract(PlanDetail pl) { } } } + // Code Added by Neha for Doors extract + + String doorLayerName = String.format(layerNames.getLayerName("LAYER_NAME_DOOR"), + block.getNumber(), floor.getNumber(), "+\\d"); + + List doorLayers = Util.getLayerNamesLike(pl.getDoc(), doorLayerName); + + if (!doorLayers.isEmpty()) { + + for (String doorLayer : doorLayers) { + String doorHeight = Util.getMtextByLayerName(pl.getDoc(), doorLayer); + +// List doorPolyLines = Util.getPolyLinesByLayer(pl.getDoc(), +// doorLayer); + +// BigDecimal doorWidth=BigDecimal.ZERO; + + List dimensionList = Util.getDimensionsByLayer(pl.getDoc(), doorLayer); + if (dimensionList != null && !dimensionList.isEmpty()) { + Door door = new Door(); + BigDecimal doorHeight1 = doorHeight != null + ? BigDecimal + .valueOf(Double.valueOf(doorHeight.replaceAll("DOOR_HT_M=", ""))) + : BigDecimal.ZERO; + door.setDoorHeight(doorHeight1); + for (Object dxfEntity : dimensionList) { + DXFDimension dimension = (DXFDimension) dxfEntity; + List values = new ArrayList<>(); + Util.extractDimensionValue(pl, values, dimension, doorLayer); + + if (!values.isEmpty()) { + for (BigDecimal minDis : values) { +// doorWidth=minDis; + door.setDoorWidth(minDis); + } + } else { + door.setDoorWidth(BigDecimal.ZERO); + } + } + floor.addDoor(door); + } +// else { +// door.setDoorWidth(BigDecimal.ZERO); +// } + + } + } + + // Code Added by Neha for non-habitational Doors extract + + String nonHabitationaldoorLayer = String.format(layerNames.getLayerName("LAYER_NAME_NON_HABITATIONAL_DOOR"), + block.getNumber(), floor.getNumber(), "+\\d"); + + List nonHabitationaldoorLayers = Util.getLayerNamesLike(pl.getDoc(), nonHabitationaldoorLayer); + + if (!nonHabitationaldoorLayers.isEmpty()) { + + for (String doorLayer : nonHabitationaldoorLayers) { + String doorHeight = Util.getMtextByLayerName(pl.getDoc(), doorLayer); + +// List doorPolyLines = Util.getPolyLinesByLayer(pl.getDoc(), +// doorLayer); + +// BigDecimal doorWidth=BigDecimal.ZERO; + + List dimensionList = Util.getDimensionsByLayer(pl.getDoc(), doorLayer); + if (dimensionList != null && !dimensionList.isEmpty()) { + Door door = new Door(); + BigDecimal doorHeight1 = doorHeight != null + ? BigDecimal + .valueOf(Double.valueOf(doorHeight.replaceAll("NON_HABITATIONAL_DOOR_HT=", ""))) + : BigDecimal.ZERO; + door.setNonHabitationDoorHeight(doorHeight1); + for (Object dxfEntity : dimensionList) { + DXFDimension dimension = (DXFDimension) dxfEntity; + List values = new ArrayList<>(); + Util.extractDimensionValue(pl, values, dimension, doorLayer); + + if (!values.isEmpty()) { + for (BigDecimal minDis : values) { +// doorWidth=minDis; + door.setNonHabitationDoorWidth(minDis); + } + } else { + door.setNonHabitationDoorWidth(BigDecimal.ZERO); + } + } + floor.addNonaHabitationalDoors(door); + } +// else { +// door.setDoorWidth(BigDecimal.ZERO); +// } + + } + } +// + + // Code Added by Neha for windows extract + for (Room room : floor.getRegularRooms()) { + + String windowLayerName = String.format(layerNames.getLayerName("LAYER_NAME_WINDOW_ROOM"), + block.getNumber(), floor.getNumber(), room.getNumber(), "+\\d"); + + List windowLayers = Util.getLayerNamesLike(pl.getDoc(), windowLayerName); + + if (!windowLayers.isEmpty()) { + + for (String windowLayer : windowLayers) { + String windowHeight = Util.getMtextByLayerName(pl.getDoc(), windowLayer); + +// List doorPolyLines = Util.getPolyLinesByLayer(pl.getDoc(), +// doorLayer); + +// BigDecimal doorWidth=BigDecimal.ZERO; + + List dimensionList = Util.getDimensionsByLayer(pl.getDoc(), windowLayer); + if (dimensionList != null && !dimensionList.isEmpty()) { + Window window = new Window(); + BigDecimal windowHeight1 = windowHeight != null + ? BigDecimal.valueOf( + Double.valueOf(windowHeight.replaceAll("WINDOW_HT_M=", ""))) + : BigDecimal.ZERO; + window.setWindowHeight(windowHeight1); + for (Object dxfEntity : dimensionList) { + DXFDimension dimension = (DXFDimension) dxfEntity; + List values = new ArrayList<>(); + Util.extractDimensionValue(pl, values, dimension, windowLayer); + + if (!values.isEmpty()) { + for (BigDecimal minDis : values) { +// doorWidth=minDis; + window.setWindowWidth(minDis); + } + } else { + window.setWindowWidth(BigDecimal.ZERO); + } + } + room.addWindow(window); + } +// else { +// window.setWindowWidth(BigDecimal.ZERO); +// } + + } + } + } } if (LOG.isDebugEnabled()) LOG.debug("End of Height Of Room Extract......"); diff --git a/edcr/service/egov/egov-edcr-extract/src/main/java/org/egov/edcr/feature/SetBackServiceExtract.java b/edcr/service/egov/egov-edcr-extract/src/main/java/org/egov/edcr/feature/SetBackServiceExtract.java index e6fe8fbc446..060edc12027 100644 --- a/edcr/service/egov/egov-edcr-extract/src/main/java/org/egov/edcr/feature/SetBackServiceExtract.java +++ b/edcr/service/egov/egov-edcr-extract/src/main/java/org/egov/edcr/feature/SetBackServiceExtract.java @@ -82,14 +82,14 @@ private void extractSetBack(PlanDetail pl, DXFDocument doc) { + layerNames.getLayerName("LAYER_NAME_LEVEL_NAME_PREFIX") + setBack.getLevel() + "_" + layerNames.getLayerName("LAYER_NAME_REAR_YARD"); setRearYardDetails(pl, doc, setBack, yardName); -// yardName = layerNames.getLayerName("LAYER_NAME_BLOCK_NAME_PREFIX") + block.getName() + "_" -// + layerNames.getLayerName("LAYER_NAME_LEVEL_NAME_PREFIX") + setBack.getLevel() + "_" -// + layerNames.getLayerName("LAYER_NAME_SIDE_YARD_1"); - // setSideYard1Details(pl, doc, setBack, yardName); -// yardName = layerNames.getLayerName("LAYER_NAME_BLOCK_NAME_PREFIX") + block.getName() + "_" -// + layerNames.getLayerName("LAYER_NAME_LEVEL_NAME_PREFIX") + setBack.getLevel() + "_" -// + layerNames.getLayerName("LAYER_NAME_SIDE_YARD_2"); - // setSideYard2Details(pl, doc, yardName, setBack); + yardName = layerNames.getLayerName("LAYER_NAME_BLOCK_NAME_PREFIX") + block.getName() + "_" + + layerNames.getLayerName("LAYER_NAME_LEVEL_NAME_PREFIX") + setBack.getLevel() + "_" + + layerNames.getLayerName("LAYER_NAME_SIDE_YARD_1"); + setSideYard1Details(pl, doc, setBack, yardName); + yardName = layerNames.getLayerName("LAYER_NAME_BLOCK_NAME_PREFIX") + block.getName() + "_" + + layerNames.getLayerName("LAYER_NAME_LEVEL_NAME_PREFIX") + setBack.getLevel() + "_" + + layerNames.getLayerName("LAYER_NAME_SIDE_YARD_2"); + setSideYard2Details(pl, doc, yardName, setBack); } } pl.sortBlockByName(); @@ -167,14 +167,14 @@ private void extractBasementSetBacks(PlanDetail pl, DXFDocument doc, Block block + layerNames.getLayerName("LAYER_NAME_LEVEL_NAME_PREFIX") + setBack.getLevel() + "_" + layerNames.getLayerName("LAYER_NAME_BSMNT_REAR_YARD"); setRearYardDetails(pl, doc, setBack, bsmntYardName); -// bsmntYardName = layerNames.getLayerName("LAYER_NAME_BLOCK_NAME_PREFIX") + block.getNumber() + "_" -// + layerNames.getLayerName("LAYER_NAME_LEVEL_NAME_PREFIX") + setBack.getLevel() + "_" -// + layerNames.getLayerName("LAYER_NAME_BSMNT_SIDE_YARD_1"); - // setSideYard1Details(pl, doc, setBack, bsmntYardName); -// bsmntYardName = layerNames.getLayerName("LAYER_NAME_BLOCK_NAME_PREFIX") + block.getNumber() + "_" -// + layerNames.getLayerName("LAYER_NAME_LEVEL_NAME_PREFIX") + setBack.getLevel() + "_" -// + layerNames.getLayerName("LAYER_NAME_BSMNT_SIDE_YARD_2"); - // setSideYard2Details(pl, doc, bsmntYardName, setBack); + bsmntYardName = layerNames.getLayerName("LAYER_NAME_BLOCK_NAME_PREFIX") + block.getNumber() + "_" + + layerNames.getLayerName("LAYER_NAME_LEVEL_NAME_PREFIX") + setBack.getLevel() + "_" + + layerNames.getLayerName("LAYER_NAME_BSMNT_SIDE_YARD_1"); + setSideYard1Details(pl, doc, setBack, bsmntYardName); + bsmntYardName = layerNames.getLayerName("LAYER_NAME_BLOCK_NAME_PREFIX") + block.getNumber() + "_" + + layerNames.getLayerName("LAYER_NAME_LEVEL_NAME_PREFIX") + setBack.getLevel() + "_" + + layerNames.getLayerName("LAYER_NAME_BSMNT_SIDE_YARD_2"); + setSideYard2Details(pl, doc, bsmntYardName, setBack); } private void setSideYard1Details(PlanDetail pl, DXFDocument doc, SetBack setBack, String yardName) { diff --git a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/Balcony.java b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/Balcony.java index 0386521e7a3..416216052f6 100644 --- a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/Balcony.java +++ b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/Balcony.java @@ -71,7 +71,7 @@ public class Balcony extends FeatureProcess { private static final String FLOOR = "Floor"; private static final String RULE45_IV = "45-iv"; private static final String WIDTH_BALCONY_DESCRIPTION = "Minimum width for balcony %s"; - private static final BigDecimal ONE_POINTTWO = BigDecimal.valueOf(1.2); + private static final BigDecimal ONE_POINTNINEONE = BigDecimal.valueOf(0.91); @Override public Plan validate(Plan plan) { @@ -107,7 +107,7 @@ public Plan process(Plan plan) { BigDecimal minWidth = widths.isEmpty() ? BigDecimal.ZERO : widths.stream().reduce(BigDecimal::min).get(); minWidth = minWidth.setScale(DcrConstants.DECIMALDIGITS_MEASUREMENTS, DcrConstants.ROUNDMODE_MEASUREMENTS); - if (minWidth.compareTo(ONE_POINTTWO.setScale(DcrConstants.DECIMALDIGITS_MEASUREMENTS, + if (minWidth.compareTo(ONE_POINTNINEONE.setScale(DcrConstants.DECIMALDIGITS_MEASUREMENTS, DcrConstants.ROUNDMODE_MEASUREMENTS)) >= 0) { isAccepted = true; } @@ -119,12 +119,12 @@ public Plan process(Plan plan) { if (isAccepted) { setReportOutputDetailsFloorBalconyWise(plan, RULE45_IV, value, String.format(WIDTH_BALCONY_DESCRIPTION, balcony.getNumber()), - ONE_POINTTWO.toString(), + ONE_POINTNINEONE.toString(), String.valueOf(minWidth), Result.Accepted.getResultVal(), scrutinyDetailLanding); } else { setReportOutputDetailsFloorBalconyWise(plan, RULE45_IV, value, String.format(WIDTH_BALCONY_DESCRIPTION, balcony.getNumber()), - ONE_POINTTWO.toString(), + ONE_POINTNINEONE.toString(), String.valueOf(minWidth), Result.Not_Accepted.getResultVal(), scrutinyDetailLanding); } } diff --git a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/FeatureProcess.java b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/FeatureProcess.java index 3d0fb07603e..a5c6c688bfa 100644 --- a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/FeatureProcess.java +++ b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/FeatureProcess.java @@ -71,9 +71,11 @@ public abstract class FeatureProcess { public static final String DESCRIPTION = "Description"; public static final String RULE_NO = "Byelaw"; public static final String FLOOR_NO = "Floor"; + public static final String Room = "Room"; public static final String DISTANCE = "Distance"; public static final String VERIFIED = "Verified"; public static final String ACTION = "Action"; + public static final String LIFT_AREA = "Lift Area"; public static final String AREA_TYPE = "Area Type"; public static final String PLOT_AREA = "Plot Area"; public static final String MAX_PERMISSIBLE = "Max Permissible"; diff --git a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/GeneralStair.java b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/GeneralStair.java index 30e87da6cc3..feebec680da 100644 --- a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/GeneralStair.java +++ b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/GeneralStair.java @@ -122,7 +122,7 @@ public Plan process(Plan plan) { { validateFlight(plan, errors, block, scrutinyDetail2, scrutinyDetail3, scrutinyDetailRise, mostRestrictiveOccupancyType, floor, typicalFloorValues, - generalStair); + generalStair, generalStairCount); List landings = generalStair.getLandings(); if (!landings.isEmpty()) { @@ -130,9 +130,10 @@ public Plan process(Plan plan) { floor, typicalFloorValues, generalStair, landings, errors); } else { + if (floor.getNumber() != generalStairCount - 1) //This condition because in top most floor stairs are not mandatory for punjab, + //so removing the error if stairs are not defined in top mist floor errors.put( - "General Stair landing not defined in block " + block.getNumber() + " floor " - + floor.getNumber() + "General Stair landing not defined in block " + block.getNumber() + " floor " + floor.getNumber() + " stair " + generalStair.getNumber(), "General Stair landing not defined in block " + block.getNumber() + " floor " + floor.getNumber() @@ -180,6 +181,7 @@ private void validateLanding(Plan plan, Block block, ScrutinyDetail scrutinyDeta BigDecimal landingWidth = widths.stream().reduce(BigDecimal::min).get(); BigDecimal minWidth = BigDecimal.ZERO; boolean valid = false; + if (!(Boolean) typicalFloorValues.get("isTypicalRepititiveFloor")) { minWidth = Util.roundOffTwoDecimal(landingWidth); @@ -223,7 +225,7 @@ private void validateLanding(Plan plan, Block block, ScrutinyDetail scrutinyDeta private void validateFlight(Plan plan, HashMap errors, Block block, ScrutinyDetail scrutinyDetail2, ScrutinyDetail scrutinyDetail3, ScrutinyDetail scrutinyDetailRise, OccupancyTypeHelper mostRestrictiveOccupancyType, - Floor floor, Map typicalFloorValues, org.egov.common.entity.edcr.GeneralStair generalStair) { + Floor floor, Map typicalFloorValues, org.egov.common.entity.edcr.GeneralStair generalStair, int generalStairCount) { if (!generalStair.getFlights().isEmpty()) { for (Flight flight : generalStair.getFlights()) { List flightPolyLines = flight.getFlights(); @@ -231,7 +233,8 @@ private void validateFlight(Plan plan, HashMap errors, Block blo List flightWidths = flight.getWidthOfFlights(); BigDecimal noOfRises = flight.getNoOfRises(); Boolean flightPolyLineClosed = flight.getFlightClosed(); - + + BigDecimal minTread = BigDecimal.ZERO; BigDecimal minFlightWidth = BigDecimal.ZERO; String flightLayerName = String.format(DxfFileConstants.LAYER_STAIR_FLIGHT, @@ -267,6 +270,7 @@ private void validateFlight(Plan plan, HashMap errors, Block blo LOG.info("Denominator is zero"); } } else { + errors.put("Flight PolyLine length" + flightLayerName, FLIGHT_LENGTH_DEFINED_DESCRIPTION + flightLayerName); plan.addErrors(errors); @@ -301,10 +305,12 @@ private void validateFlight(Plan plan, HashMap errors, Block blo } } else { + if(floor.getNumber() != generalStairCount - 1) { //This condition because in top most floor stairs are not mandatory for punjab, + //so removing the error if stairs are not defined in top mist floor String error = String.format(FLIGHT_NOT_DEFINED_DESCRIPTION, block.getNumber(), floor.getNumber()); errors.put(error, error); plan.addErrors(errors); - } + }} } private BigDecimal validateWidth(Plan plan, ScrutinyDetail scrutinyDetail2, Floor floor, Block block, @@ -446,8 +452,8 @@ private BigDecimal getRequiredTread(OccupancyTypeHelper mostRestrictiveOccupancy && DxfFileConstants.A.equalsIgnoreCase(mostRestrictiveOccupancyType.getType().getCode())) { return BigDecimal.valueOf(0.25); } else { - // return BigDecimal.valueOf(0.3); - return null; + return BigDecimal.valueOf(0.3); + //return null; } } 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 56240a17143..963a27d7139 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 @@ -62,6 +62,7 @@ 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.OccupancyTypeHelper; @@ -70,6 +71,7 @@ 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.Window; import org.egov.edcr.constants.DxfFileConstants; import org.egov.edcr.service.ProcessHelper; import org.egov.edcr.utility.DcrConstants; @@ -92,13 +94,20 @@ public class HeightOfRoom extends FeatureProcess { public static final BigDecimal MINIMUM_HEIGHT_2_75 = BigDecimal.valueOf(2.75); public static final BigDecimal MINIMUM_HEIGHT_2_4 = BigDecimal.valueOf(2.4); public static final BigDecimal MINIMUM_AREA_9_5 = BigDecimal.valueOf(9.5); + public static final BigDecimal MINIMUM_AREA_9_2 = BigDecimal.valueOf(9.2); public static final BigDecimal MINIMUM_WIDTH_2_4 = BigDecimal.valueOf(2.4); + public static final BigDecimal MINIMUM_WIDTH_2_7 = BigDecimal.valueOf(2.7); public static final BigDecimal MINIMUM_WIDTH_2_1 = BigDecimal.valueOf(2.1); public static final BigDecimal MINIMUM_AREA_7_5 = BigDecimal.valueOf(7.5); public static final BigDecimal MAXIMUM_AREA_46_45 = BigDecimal.valueOf(46.45); + private static final BigDecimal VENTILATION_PERCENTAGE = BigDecimal.valueOf(20); // 20% ventilation requirement private static final String FLOOR = "Floor"; private static final String ROOM_HEIGHT_NOTDEFINED = "Room height is not defined in layer "; private static final String LAYER_ROOM_HEIGHT = "BLK_%s_FLR_%s_%s"; + + private static final BigDecimal MIN_WINDOW_HEIGHT = BigDecimal.valueOf(0.50); + private static final BigDecimal MIN_WINDOW_WIDTH = BigDecimal.valueOf(0.50); + private static final Logger LOG = LogManager.getLogger(HeightOfRoom.class); @Override @@ -140,6 +149,34 @@ public Plan process(Plan pl) { scrutinyDetail.addColumnHeading(6, STATUS); scrutinyDetail.setKey("Block_" + block.getNumber() + "_" + " Room Area"); + + ScrutinyDetail scrutinyDetail2 = new ScrutinyDetail(); + scrutinyDetail2.addColumnHeading(1, RULE_NO); + scrutinyDetail2.addColumnHeading(2, DESCRIPTION); + scrutinyDetail2.addColumnHeading(3, FLOOR); + scrutinyDetail2.addColumnHeading(4, REQUIRED); + scrutinyDetail2.addColumnHeading(5, PROVIDED); + scrutinyDetail2.addColumnHeading(6, STATUS); + scrutinyDetail2.setKey("Block_" + block.getNumber() + "_" + "Door"); + + ScrutinyDetail scrutinyDetail3 = new ScrutinyDetail(); + scrutinyDetail3.addColumnHeading(1, RULE_NO); + scrutinyDetail3.addColumnHeading(2, DESCRIPTION); + scrutinyDetail3.addColumnHeading(3, FLOOR); + scrutinyDetail3.addColumnHeading(4, REQUIRED); + scrutinyDetail3.addColumnHeading(5, PROVIDED); + scrutinyDetail3.addColumnHeading(6, STATUS); + scrutinyDetail3.setKey("Block_" + block.getNumber() + "_" + "Window"); + + ScrutinyDetail scrutinyDetail4 = new ScrutinyDetail(); + scrutinyDetail3.addColumnHeading(1, RULE_NO); + scrutinyDetail3.addColumnHeading(2, DESCRIPTION); + scrutinyDetail3.addColumnHeading(3, Room); + scrutinyDetail3.addColumnHeading(4, REQUIRED); + scrutinyDetail3.addColumnHeading(5, PROVIDED); + scrutinyDetail3.addColumnHeading(6, STATUS); + scrutinyDetail3.setKey("Block_" + block.getNumber() + "_" + "Window Ventilation"); + for (Floor floor : block.getBuilding().getFloors()) { @@ -149,9 +186,11 @@ public Plan process(Plan pl) { BigDecimal totalArea = BigDecimal.ZERO; BigDecimal minWidth = BigDecimal.ZERO; BigDecimal maxArea = BigDecimal.ZERO; - String subRule = null; - String subRuleDesc = null; + String subRule = "4.4.4"; + String subRuleDesc = "Minimum Area and Width of Room"; + String subRuleDesc1 = "Window Ventialtion"; String color = ""; + BigDecimal minimumArea = BigDecimal.ZERO; if (A.equalsIgnoreCase(mostRestrictiveOccupancy.getType().getCode())) color = DxfFileConstants.COLOR_RESIDENTIAL_ROOM; @@ -192,7 +231,7 @@ else if(G.equalsIgnoreCase(mostRestrictiveOccupancy.getType().getCode())) // Added by Bimal to check minimum height for residential rooms only if (!A.equalsIgnoreCase(mostRestrictiveOccupancy.getType().getCode())) { minimumHeight = MINIMUM_HEIGHT_2_75; - Log.info("Minimum Residential AC Room Height required is set to : "+MINIMUM_HEIGHT_2_75); + Log.info("Minimum Residential AC Room Height required is set to++++++ : "+MINIMUM_HEIGHT_2_75); } else minimumHeight = MINIMUM_HEIGHT_3; @@ -255,11 +294,36 @@ else if(G.equalsIgnoreCase(mostRestrictiveOccupancy.getType().getCode())) residentialRoomHeights.add(roomHeight.getHeight()); } } + BigDecimal roomArea = BigDecimal.ZERO; + BigDecimal roomWidth = BigDecimal.ZERO; for (Measurement room : rooms) { - if (heightOfRoomFeaturesColor.get(color) == room.getColorCode()) { - roomAreas.add(room.getArea()); - roomWidths.add(room.getWidth()); +// if (heightOfRoomFeaturesColor.get(color) == room.getColorCode()) { +// roomAreas.add(room.getArea()); +// roomWidths.add(room.getWidth()); +// +// } + minimumArea = MINIMUM_AREA_9_2; + minWidth = MINIMUM_WIDTH_2_7; + maxArea = MAXIMUM_AREA_46_45; + + roomArea = room.getArea().setScale(2, BigDecimal.ROUND_HALF_UP); + roomWidth = room.getWidth().setScale(2, BigDecimal.ROUND_HALF_UP); + + if (roomArea.compareTo(minimumArea) >= 0 && roomWidth.compareTo(minWidth) >= 0) { + setReportOutputDetails(pl, subRule, subRuleDesc, floor.getNumber().toString(), + "Area >= " + minimumArea + " , Width>= " + minWidth + "", "Area = " + roomArea + ", Width = " + roomWidth, + Result.Accepted.getResultVal(), scrutinyDetail); +// setReportOutputDetails(pl, subRule, subRuleDesc, floor.getNumber().toString(), +// minimumArea + DcrConstants.IN_METER, roomArea + DcrConstants.IN_METER, +// Result.Accepted.getResultVal(), scrutinyDetail1); + } else { + setReportOutputDetails(pl, subRule, subRuleDesc, floor.getNumber().toString(), + "Area >= " + minimumArea + " , Width>= " + minWidth + "", "Area = " + roomArea + ", Width = " + roomWidth, + Result.Not_Accepted.getResultVal(), scrutinyDetail); +// setReportOutputDetails(pl, subRule, subRuleDesc, floor.getNumber().toString(), +// minimumArea + DcrConstants.IN_METER, roomArea + DcrConstants.IN_METER, +// Result.Not_Accepted.getResultVal(), scrutinyDetail1); } } @@ -268,7 +332,8 @@ else if(G.equalsIgnoreCase(mostRestrictiveOccupancy.getType().getCode())) // Added by Bimal to check minimum height for residential rooms only if (A.equalsIgnoreCase(mostRestrictiveOccupancy.getType().getCode())) { minimumHeight = MINIMUM_HEIGHT_2_75; - Log.info("Minimum Residential Regular Room Height required is set to : "+MINIMUM_HEIGHT_2_75); + + Log.info("Minimum Residential Regular Room Height required is set to-------- : "+MINIMUM_HEIGHT_2_75); } else @@ -341,14 +406,14 @@ else if (roomAreas.size() > 1) { "Area >= " + minimumHeight + ", Width >=" + minWidth, "Area = " + roomAreas.get(0) + ", Width = " + roomWidths.get(0) + DcrConstants.IN_METER, - Result.Accepted.getResultVal(), scrutinyDetail1); + Result.Accepted.getResultVal(), scrutinyDetail); }else { setReportOutputDetails(pl, subRule, subRuleDesc, floor.getNumber().toString(), "Area >= " + minimumHeight + ", Width >=" + minWidth, "Area = " + roomAreas.get(0) + ", Width = " + roomWidths.get(0) + DcrConstants.IN_METER, - Result.Not_Accepted.getResultVal(), scrutinyDetail1); + Result.Not_Accepted.getResultVal(), scrutinyDetail); } } @@ -379,11 +444,137 @@ else if (roomAreas.size() > 1) { } } - } - } + + // Calculation For Doors + if (floor.getDoors() != null && floor.getDoors().size() > 0) { + for (Door door : floor.getDoors()) { + if (door != null) { + BigDecimal doorHeight = door.getDoorHeight(); + BigDecimal doorWidth = door.getDoorWidth(); + //BigDecimal minDoorHeight = BigDecimal.valueOf(2.0); + BigDecimal minDoorWidth = BigDecimal.valueOf(1); + subRule = SUBRULE_41_II_B; + subRuleDesc = SUBRULE_41_II_B; + if ( + doorWidth.compareTo(minDoorWidth) >= 0) { + setReportOutputDetails(pl, subRule, subRuleDesc, + floor.getNumber().toString(), + " Width >=" + minDoorWidth, + " Width = " + doorWidth + + DcrConstants.IN_METER, + Result.Accepted.getResultVal(), scrutinyDetail2); + } else { + setReportOutputDetails(pl, subRule, subRuleDesc, + floor.getNumber().toString(), + " Width >=" + minDoorWidth, + " Width = " + doorWidth + + DcrConstants.IN_METER, + Result.Not_Accepted.getResultVal(), scrutinyDetail2); + } + } + } + } + + // Calculation For non-habitational Doors + if (floor.getNonaHabitationalDoors() != null && floor.getNonaHabitationalDoors().size() > 0) { + for (Door door : floor.getNonaHabitationalDoors()) { + if (door != null) { + BigDecimal doorHeight = door.getNonHabitationDoorHeight(); + BigDecimal doorWidth = door.getNonHabitationDoorWidth(); + //BigDecimal minDoorHeight = BigDecimal.valueOf(2.0); + BigDecimal minDoorWidth = BigDecimal.valueOf(0.75); + subRule = SUBRULE_41_II_B; + subRuleDesc = SUBRULE_41_II_B; + if ( + doorWidth.compareTo(minDoorWidth) >= 0) { + setReportOutputDetails(pl, subRule, subRuleDesc, + floor.getNumber().toString(), + " Width >=" + minDoorWidth, + " Width = " + doorWidth + + DcrConstants.IN_METER, + Result.Accepted.getResultVal(), scrutinyDetail2); + } else { + setReportOutputDetails(pl, subRule, subRuleDesc, + floor.getNumber().toString(), + " Width >=" + minDoorWidth, + " Width = " + doorWidth + + DcrConstants.IN_METER, + Result.Not_Accepted.getResultVal(), scrutinyDetail2); + } + } + } + } + + // Calculation For Windows +// if (room.getWindows() != null && floor.getWindows().size() > 0) { +// for (Window window : floor.getWindows()) { + + + for (Room room : floor.getRegularRooms()) { + BigDecimal roomArea = BigDecimal.ZERO; + if (room.getRooms() != null && !room.getRooms().isEmpty()) { + for (Measurement measurement : room.getRooms()) { + roomArea = roomArea.add(measurement.getArea().setScale(2, BigDecimal.ROUND_HALF_UP)); + } + } + + BigDecimal requiredVentilationArea = roomArea.multiply(VENTILATION_PERCENTAGE).divide(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_HALF_UP); + + Map details2 = new HashMap<>(); + details2.put(RULE_NO, subRule); + details2.put(DESCRIPTION, subRuleDesc1); + + // Calculate total window area + BigDecimal totalWindowArea = BigDecimal.ZERO; + if (room.getWindows() != null && !room.getWindows().isEmpty()) { + for (Window window : room.getWindows()) { + BigDecimal windowHeight = window.getWindowHeight(); + BigDecimal windowWidth = window.getWindowWidth(); + + BigDecimal windowArea = windowHeight.multiply(windowWidth).setScale(2, BigDecimal.ROUND_HALF_UP); + totalWindowArea = totalWindowArea.add(windowArea); + + + // Check each window's dimensions + if (windowHeight.compareTo(MIN_WINDOW_HEIGHT) >= 0 && windowWidth.compareTo(MIN_WINDOW_WIDTH) >= 0) { + setReportOutputDetails(pl, subRule, subRuleDesc1, room.getNumber().toString(), + "Height >= " + MIN_WINDOW_HEIGHT + ", Width >= " + MIN_WINDOW_WIDTH, + "Height = " + windowHeight + ", Width = " + windowWidth, + Result.Accepted.getResultVal(), scrutinyDetail); + } else { + setReportOutputDetails(pl, subRule, subRuleDesc1, room.getNumber().toString(), + "Height >= " + MIN_WINDOW_HEIGHT + ", Width >= " + MIN_WINDOW_WIDTH, + "Height = " + windowHeight + ", Width = " + windowWidth, + Result.Not_Accepted.getResultVal(), scrutinyDetail); + } + + } + } + + // Compare total window area with required ventilation area + if (totalWindowArea.compareTo(requiredVentilationArea) >= 0) { + setReportOutputDetails(pl, subRule, subRuleDesc1, room.getNumber().toString(), + "Ventilation >= " + requiredVentilationArea, + "WindowArea = " + totalWindowArea, + Result.Accepted.getResultVal(), scrutinyDetail4); + } else { + setReportOutputDetails(pl, subRule, subRuleDesc1, room.getNumber().toString(), + "Ventilation >= " + requiredVentilationArea, + "WindowArea = " + totalWindowArea, + Result.Not_Accepted.getResultVal(), scrutinyDetail4); + } + } +// scrutinyDetail.getDetail().add(details); +// pl.getReportOutput().getScrutinyDetails().add(scrutinyDetail); + + + + + }}} } - } - } + } +// } +// } return pl; } diff --git a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/LiftService.java b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/LiftService.java index 869461ce424..b06426a5c71 100644 --- a/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/LiftService.java +++ b/edcr/service/egov/egov-edcr/src/main/java/org/egov/edcr/feature/LiftService.java @@ -122,7 +122,9 @@ public Plan process(Plan plan) { scrutinyDetail1.addColumnHeading(6, REMARKS); scrutinyDetail1.setKey("Block_" + block.getNumber() + "_" + "Lift - Minimum Dimension"); - if (block.getBuilding() != null && !block.getBuilding().getOccupancies().isEmpty()) { + if (block.getBuilding() != null && !block.getBuilding().getOccupancies().isEmpty() && block.getBuilding().getFloors().stream() + .anyMatch(floor -> floor.getLifts() != null && !floor.getLifts().isEmpty())) + { /* * if (Util.checkExemptionConditionForBuildingParts(block)) { continue blk; } */ @@ -135,9 +137,11 @@ public Plan process(Plan plan) { * To be added Rule 48 Lift shall be provided for buildings above 15 m. height in case of apartments, group * housing, commercial, institutional and office buildings */ - if (block.getBuilding().getIsHighRise() && - (DxfFileConstants.A_AF - .equals(plan.getVirtualBuilding().getMostRestrictiveFarHelper().getSubtype() + if ( + //block.getBuilding().getIsHighRise() && +// (DxfFileConstants.A_AF + (DxfFileConstants.A + .equals(plan.getVirtualBuilding().getMostRestrictiveFarHelper().getType() .getCode()) || DxfFileConstants.B .equals(plan.getVirtualBuilding().getMostRestrictiveFarHelper().getSubtype() 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 5be322be83a..0ff7999e702 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 @@ -774,7 +774,7 @@ public InputStream generateReport(Plan plan, EdcrApplication dcrApplication) { if (blkFeature.equals(FRONT_YARD_DESC)) { front = allMap.get(blkName + blkFeature); front.getDetail().get(0).put(SIDENUMBER_NAME, "Front"); - continue; + // continue; } if (blkFeature.equals(REAR_YARD_DESC)) { rear = allMap.get(blkName + blkFeature); @@ -783,15 +783,15 @@ public InputStream generateReport(Plan plan, EdcrApplication dcrApplication) { } side = allMap.get(blkName + blkFeature); - // List> detail = allMap.get(blkName + - // blkFeature).getDetail(); +// List> detail = allMap.get(blkName + +// blkFeature).getDetail(); List> detail = side.getDetail(); - - if (front != null) - detail.add(0, front.getDetail().get(0)); - if (rear != null) - detail.add(1, rear.getDetail().get(0)); - +// +// if (front != null) +// detail.add(0, front.getDetail().get(0)); +// if (rear != null) +// detail.add(1, rear.getDetail().get(0)); +// for (Map d : detail) { String sideNumber = d.get(SIDENUMBER); if (StringUtils.isNotBlank(sideNumber)) { @@ -801,7 +801,7 @@ public InputStream generateReport(Plan plan, EdcrApplication dcrApplication) { } side.addColumnHeading(2, SIDENUMBER_NAME); side.addColumnHeading(4, LEVEL); - // allMap.get(blkName + blkFeature).setHeading(SIDENUMBER_NMAE); + allMap.get(blkName + blkFeature).setHeading(SIDENUMBER_NAME); j++; drb.addConcatenatedReport(