Browse Source

implemented department side and enhancement for public form

master
AJITHKUMAR12 2 months ago
parent
commit
ab8d7a9e0c
  1. BIN
      gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025124945_bird.jpg
  2. BIN
      gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025124945_duck-7406987.jpg
  3. BIN
      gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025130138_bird.jpg
  4. BIN
      gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025130138_joban-khangura-hG8B9pKiilw-unsplash.jpg
  5. BIN
      gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025130247_bird.jpg
  6. BIN
      gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025130247_duck-7406987.jpg
  7. BIN
      gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025160944_sc1.jpeg
  8. BIN
      gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025161152_sc1.jpeg
  9. BIN
      gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025161603_sc1.jpeg
  10. BIN
      gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025161755_sc1.jpeg
  11. BIN
      gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025162323_sc1.jpeg
  12. BIN
      gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025162414_sc1.jpeg
  13. BIN
      gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_29122025110136_sc1.jpeg
  14. BIN
      gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_29122025112848_sc1.jpeg
  15. BIN
      gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_29122025113046_sc1.jpeg
  16. BIN
      gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_02012026134533_sample1.jpg
  17. BIN
      gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_02012026134650_sample1.jpg
  18. BIN
      gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_02012026165041_newuser.jpg
  19. BIN
      gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_02012026165137_newuser.jpg
  20. BIN
      gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_02012026165232_newuser.jpg
  21. BIN
      gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_12012026113726_MacBookPro14_-1.jpg
  22. BIN
      gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_12012026113726_sample1.jpg
  23. BIN
      gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_12012026115813_MacBookPro14_-1.jpg
  24. BIN
      gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_12012026115813_sample1.jpg
  25. BIN
      gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_12012026132432_MacBookPro14_-1.jpg
  26. BIN
      gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_12012026132432_sample1.jpg
  27. BIN
      gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_22012026125708_newuser.jpg
  28. BIN
      gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_22012026125832_newuser.jpg
  29. 149
      src/main/java/com/gcc/greencommitte/controller/Apicontroller.java
  30. 1404
      src/main/java/com/gcc/greencommitte/service/Greencommitteeservice.java
  31. 2
      src/main/resources/application.properties
  32. 2748
      src/main/resources/templates/modules/department/form.html
  33. 126
      src/main/resources/templates/modules/public/form.html

BIN
gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025124945_bird.jpg

Before

Width: 1280  |  Height: 897  |  Size: 191 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025124945_duck-7406987.jpg

Before

Width: 5401  |  Height: 3601  |  Size: 3.2 MiB

BIN
gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025130138_bird.jpg

Before

Width: 1280  |  Height: 897  |  Size: 191 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025130138_joban-khangura-hG8B9pKiilw-unsplash.jpg

Before

Width: 2400  |  Height: 3001  |  Size: 2.5 MiB

BIN
gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025130247_bird.jpg

Before

Width: 1280  |  Height: 897  |  Size: 191 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025130247_duck-7406987.jpg

Before

Width: 5401  |  Height: 3601  |  Size: 3.2 MiB

BIN
gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025160944_sc1.jpeg

Before

Width: 781  |  Height: 218  |  Size: 32 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025161152_sc1.jpeg

Before

Width: 781  |  Height: 218  |  Size: 32 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025161603_sc1.jpeg

Before

Width: 781  |  Height: 218  |  Size: 32 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025161755_sc1.jpeg

Before

Width: 781  |  Height: 218  |  Size: 32 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025162323_sc1.jpeg

Before

Width: 781  |  Height: 218  |  Size: 32 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_27122025162414_sc1.jpeg

Before

Width: 781  |  Height: 218  |  Size: 32 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_29122025110136_sc1.jpeg

Before

Width: 781  |  Height: 218  |  Size: 32 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_29122025112848_sc1.jpeg

Before

Width: 781  |  Height: 218  |  Size: 32 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2025/12/comp_image1_29122025113046_sc1.jpeg

Before

Width: 781  |  Height: 218  |  Size: 32 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_02012026134533_sample1.jpg

Before

Width: 1181  |  Height: 781  |  Size: 278 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_02012026134650_sample1.jpg

Before

Width: 1181  |  Height: 781  |  Size: 278 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_02012026165041_newuser.jpg

Before

Width: 1440  |  Height: 1482  |  Size: 102 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_02012026165137_newuser.jpg

Before

Width: 1440  |  Height: 1482  |  Size: 102 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_02012026165232_newuser.jpg

Before

Width: 1440  |  Height: 1482  |  Size: 102 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_12012026113726_MacBookPro14_-1.jpg

Before

Width: 1512  |  Height: 982  |  Size: 515 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_12012026113726_sample1.jpg

Before

Width: 1181  |  Height: 781  |  Size: 278 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_12012026115813_MacBookPro14_-1.jpg

Before

Width: 1512  |  Height: 982  |  Size: 515 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_12012026115813_sample1.jpg

Before

Width: 1181  |  Height: 781  |  Size: 278 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_12012026132432_MacBookPro14_-1.jpg

Before

Width: 1512  |  Height: 982  |  Size: 515 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_12012026132432_sample1.jpg

Before

Width: 1181  |  Height: 781  |  Size: 278 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_22012026125708_newuser.jpg

Before

Width: 1440  |  Height: 1482  |  Size: 102 KiB

BIN
gcc_mobile_service_uploads/green_committee_files/2026/01/comp_image1_22012026125832_newuser.jpg

Before

Width: 1440  |  Height: 1482  |  Size: 102 KiB

149
src/main/java/com/gcc/greencommitte/controller/Apicontroller.java

@ -196,6 +196,7 @@ public class Apicontroller {
@RequestParam MultipartFile c1image,
@RequestParam MultipartFile c2image,
@RequestParam String comp_details,
@RequestParam String streetName,
@RequestParam String source) throws JsonMappingException, JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
@ -215,7 +216,7 @@ public class Apicontroller {
// System.out.println("======="+latitude+","+longitude);
String saveStatus = gcservice.savepublicform(p_name, ph_no, gender, address, latitude, longitude, zone, ward,
remarks, c1imagePath, c2imagePath, compList, totalTreeCount, source);
remarks, c1imagePath, c2imagePath, compList, totalTreeCount, source, streetName);
if (saveStatus == null || saveStatus.equals("error")) {
return ResponseEntity.ok(Map.of(
@ -352,6 +353,127 @@ public class Apicontroller {
}
}
@PostMapping("/savedeptpruningform")
public ResponseEntity<?> deptregisterComplaint(
@RequestParam(value = "p_name", required = false) String complainantName,
@RequestParam(value = "address", required = false) String complainantAddr,
@RequestParam(value = "ph_no", required = false) String mobileNo,
@RequestParam(value = "Email", required = false) String email,
@RequestParam(value = "ComplaintType", required = false) String complaintType,
@RequestParam(value = "ComplaintTitle", required = false) String complaintTitle,
@RequestParam(value = "remarks", required = false) String complaintDetails,
@RequestParam(value = "StreetId", required = false) String streetId,
@RequestParam(value = "c1image", required = false) MultipartFile compImage,
@RequestParam(value = "latitude", required = false) String latitude,
@RequestParam(value = "longitude", required = false) String longtitude,
@RequestParam(value = "Landmark", required = false) String landmark,
@RequestParam(value = "gender", required = false) String gender) {
complaintType = "454";
complaintTitle = "Tree Pruning";
System.out.println("========== DEPT Incoming Request ==========");
System.out.println("Complainant Name : " + complainantName);
System.out.println("Address : " + complainantAddr);
System.out.println("Mobile No : " + mobileNo);
System.out.println("Email : " + email);
System.out.println("Complaint Type : " + complaintType);
System.out.println("Complaint Title : " + complaintTitle);
System.out.println("Complaint Details: " + complaintDetails);
System.out.println("Street ID : " + streetId);
System.out.println("Latitude : " + latitude);
System.out.println("Longitude : " + longtitude);
System.out.println("Landmark : " + landmark);
System.out.println("Gender : " + gender);
String externalUrl = "https://erp.chennaicorporation.gov.in/pgr/external/mobileservice";
try {
URL url = new URL(externalUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setDoOutput(true);
// 1) Convert MultipartFile to Base64 string
String compImageBase64 = "";
if (compImage != null && !compImage.isEmpty()) {
byte[] bytes = compImage.getBytes();
compImageBase64 = Base64.getEncoder().encodeToString(bytes);
}
System.out.println("compImage.." + compImage);
String params = "serviceId=RegComplaint" +
"&ComplainantName=" + URLEncoder.encode(complainantName != null ? complainantName : "", "UTF-8") +
"&ComplainantAddr=" + URLEncoder.encode(complainantAddr != null ? complainantAddr : "", "UTF-8") +
"&MobileNo=" + URLEncoder.encode(mobileNo != null ? mobileNo : "", "UTF-8") +
"&Email=" + URLEncoder.encode(email != null ? email : "", "UTF-8") +
"&ComplaintType=" + URLEncoder.encode(complaintType != null ? complaintType : "", "UTF-8") +
"&ComplaintTitle=" + URLEncoder.encode(complaintTitle != null ? complaintTitle : "", "UTF-8") +
"&ComplaintDetails=" + URLEncoder.encode(complaintDetails != null ? complaintDetails : "", "UTF-8")
+
"&StreetId=" + URLEncoder.encode(streetId != null ? streetId : "", "UTF-8") +
"&Comp_Image=" + URLEncoder.encode(compImageBase64, "UTF-8") +
"&latitude=" + URLEncoder.encode(latitude != null ? latitude : "", "UTF-8") +
"&longtitude=" + URLEncoder.encode(longtitude != null ? longtitude : "", "UTF-8") +
"&Landmark=" + URLEncoder.encode(landmark != null ? landmark : "", "UTF-8") +
"&gender=" + URLEncoder.encode(gender != null ? gender : "", "UTF-8") +
"&compmode=1";
/*
* System.out.println("========================================");
* System.out.println("External URL : " + externalUrl);
*
* System.out.println("========================================");
*/
try (OutputStream os = conn.getOutputStream()) {
byte[] input = params.getBytes("UTF-8");
os.write(input, 0, input.length);
}
int responseCode = conn.getResponseCode();
System.out.println("responseCode" + responseCode);
BufferedReader reader;
if (responseCode == HttpURLConnection.HTTP_OK) {
reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
} else {
reader = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
}
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
System.out.println("response" + response);
}
reader.close();
// ✅ Parse and return only the complaint number
ObjectMapper mapper = new ObjectMapper();
Map<String, String> responseMap = mapper.readValue(response.toString(), Map.class);
System.out.println("responseMap" + responseMap);
String complaintNo = responseMap.getOrDefault("Complaint Number", "N/A");
System.out.println("complaintNo====" + complaintNo);
return ResponseEntity.ok(
Map.of(
"status", true,
"complaintNumber", complaintNo));
/*
* return ResponseEntity.ok()
* .contentType(MediaType.APPLICATION_JSON).body(Map.of("complaintNumber",
* complaintNo));
*/
} catch (IOException e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("error", "An error occurred while processing the request."));
}
}
@PostMapping("/savedeptform")
public ResponseEntity<?> savedeptform(
@RequestParam String dept_id,
@ -368,6 +490,8 @@ public class Apicontroller {
@RequestParam MultipartFile c1image,
@RequestParam MultipartFile c2image,
@RequestParam String comp_details,
@RequestParam String streetName,
@RequestParam String source) throws JsonMappingException, JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
@ -387,7 +511,7 @@ public class Apicontroller {
// System.out.println("======="+latitude+","+longitude);
String saveStatus = gcservice.savedeptform(dept_id, dept_name, ph_no, designation, govt_type, address, latitude,
longitude, zone, ward, remarks, c1imagePath, c2imagePath, compList, totalTreeCount, source);
longitude, zone, ward, remarks, c1imagePath, c2imagePath, compList, totalTreeCount, streetName, source);
if (saveStatus == null || saveStatus.equals("error")) {
return ResponseEntity.ok(Map.of(
@ -504,26 +628,21 @@ public class Apicontroller {
"description", "Application withdrawn successfully",
"ref_id", saveStatus));
}
//getpurninglist
// getpurninglist
@GetMapping("/getpurninglist")
public List<Map<String, Object>> getpurninglist() {
return gcservice.getpurninglist();
}
@PostMapping("/generatepgrcomplaints")
@ResponseBody
public ResponseEntity<?> generatepgrcomplaints(String refid){
public ResponseEntity<?> generatepgrcomplaints(String refid) {
return gcservice.generatepgrcomplaints(refid);
}
}

1404
src/main/java/com/gcc/greencommitte/service/Greencommitteeservice.java
File diff suppressed because it is too large
View File

2
src/main/resources/application.properties

@ -1,3 +1,3 @@
spring.application.name=greencommitte
spring.profiles.active=prod
spring.profiles.active=dev

2748
src/main/resources/templates/modules/department/form.html
File diff suppressed because it is too large
View File

126
src/main/resources/templates/modules/public/form.html

@ -479,10 +479,13 @@
<input type="text" class="form-control" id="ward" name="ward" readonly>
</div>
</div>
<div class="row mb-3">
<!-- Left Side -->
<div class="col-md-4">
<label class="form-label">
Details of Complaint<span class="text-danger">*</span>
Request Type<span class="text-danger">*</span>
</label>
<select id="complaintDropdown" class="form-control" required>
<option value="">Select Complaint</option>
@ -532,6 +535,15 @@
<!-- Dynamic input rows -->
<div id="naturecontainer"></div>
<div class="row mb-3">
<div class="col-md-6">
<label for="address">Location of Tree<span class="text-danger">*</span></label>
<!-- <input type="text" class="form-control" id="address" name="address" placeholder="Enter Address"
required>-->
<textarea class="form-control" id="address" name="address" placeholder="Type Tree Address Here"
required></textarea>
</div>
</div>
<div class="row mb-3">
<div class="col-md-12">
@ -748,23 +760,56 @@
let id = $(this).val();
let name = $("#complaintDropdown option:selected").data("name");
if (name && name.toLowerCase() === "pruning") {
if (!name) {
// Hide second image
$("#c2image").closest(".col-md-6").hide();
// Nothing selected
$("#c2image").closest(".col-md-6").show();
$("#c2image").prop("required", true);
$("#address").closest(".col-md-6").hide();
$("#address").prop("required", false).val("");
} else if (name.toLowerCase() === "pruning") {
// Remove required validation
// Pruning selected
$("#c2image").closest(".col-md-6").hide();
$("#c2image").prop("required", false).val("");
$("#address").closest(".col-md-6").hide();
$("#address").prop("required", false).val("");
} else {
// Show second image
// Any complaint other than pruning
$("#c2image").closest(".col-md-6").show();
// Existing workflow
$("#c2image").prop("required", true);
$("#address").closest(".col-md-6").show();
$("#address").prop("required", true);
}
/* if (name && name.toLowerCase() === "pruning") {
// Hide second image
$("#c2image").closest(".col-md-6").hide();
// Remove required validation
$("#c2image").prop("required", false).val("");
$("#address").closest(".col-md-6").hide();
$("#address").prop("required", false).val("");
} else {
// Show second image
$("#c2image").closest(".col-md-6").show();
// Existing workflow
$("#c2image").prop("required", true);
$("#address").closest(".col-md-6").show();
$("#address").prop("required", true);
}*/
if (!id) {
return;
}
@ -862,6 +907,7 @@
// Apply to all file inputs inside the form
$("#publicform input[type='file']").on("change", function () {
const fileInput = this;
console.log(" cehcking");
if (fileInput.files.length > 0) {
let file = fileInput.files[0];
@ -1178,7 +1224,7 @@
const name = $('#pname').val();
const streetName = $('#streetName option:selected').text();
const street_id = $('#streetId').val();
console.log("cfefefef");
// console.log("cfefefef");
console.log(streetName);
console.log("Streetid");
console.log(street_id);
@ -1254,7 +1300,10 @@
formData.append("p_name", name);
formData.append("source", "1");
formData.append("address", streetName)
//formData.append("address", streetName)
formData.set("streetName", streetName);
let address = $("#address").val().trim();
formData.append("address", address)
formData.append("c1image", c1image);
@ -1264,6 +1313,61 @@
let apiUrl = "/greencommittee/api/savepublicform";
if (complaintName &&
complaintName.trim().toLowerCase() === "pruning") {
if (name.length > 31) {
$('#pageLoader').hide();
$('#submitBtn').prop('disabled', false).text('Submit');
Swal.fire({
icon: "warning",
title: "Invalid Petitioner Name",
text: "Petitioner name cannot exceed 31 characters."
});
return; // Stop form submission
}
const file = $("#c1image")[0].files[0];
if (!file) {
$('#pageLoader').hide();
$('#submitBtn').prop('disabled', false).text('Submit');
Swal.fire({
icon: "warning",
title: "Image Required",
text: "Please upload Image 1."
});
return;
}
// Allow only JPG, JPEG, PNG
const allowedTypes = ["image/jpeg", "image/jpg", "image/png"];
if (!allowedTypes.includes(file.type)) {
$('#pageLoader').hide();
$('#submitBtn').prop('disabled', false).text('Submit');
Swal.fire({
icon: "warning",
title: "Invalid File",
text: "Only JPG, JPEG and PNG images are allowed."
});
$("#c1image").val("");
return;
}
// Maximum size: 1 MB
if (file.size > (1 * 1024 * 1024)) {
$('#pageLoader').hide();
$('#submitBtn').prop('disabled', false).text('Submit');
Swal.fire({
icon: "warning",
title: "File Too Large",
text: "Image size should not exceed 1 MB."
});
$("#c1image").val("");
return;
}
apiUrl = "/greencommittee/api/savepruningform";
formData.append("StreetId", street_id);
@ -1502,6 +1606,8 @@
}
$(document).ready(function () {
$("#address").closest(".col-md-6").hide();
$("#address").prop("required", false);
$('#sendOtpButton').click(function () {
// Get the entered mobile number

Loading…
Cancel
Save