2 Commits

Author SHA1 Message Date
Balaji cb9977f5da New modules added 2 years ago
Balaji 195d45d74e nulm module and Fine Module added 2 years ago
  1. BIN
      .DS_Store
  2. 1
      .gitignore
  3. BIN
      mobileservice/.DS_Store
  4. BIN
      mobileservice/gcc_mobile_service_uploads/.DS_Store
  5. BIN
      mobileservice/gcc_mobile_service_uploads/app_icon/.DS_Store
  6. BIN
      mobileservice/gcc_mobile_service_uploads/app_icon/menu/.DS_Store
  7. BIN
      mobileservice/gcc_mobile_service_uploads/app_icon/menu/1.png
  8. BIN
      mobileservice/gcc_mobile_service_uploads/app_icon/menu/1_1.png
  9. BIN
      mobileservice/gcc_mobile_service_uploads/app_icon/menu/1_2.png
  10. BIN
      mobileservice/gcc_mobile_service_uploads/app_icon/menu/2.png
  11. BIN
      mobileservice/gcc_mobile_service_uploads/app_icon/menu/2_3.png
  12. BIN
      mobileservice/gcc_mobile_service_uploads/app_icon/menu/2_4.png
  13. BIN
      mobileservice/gcc_mobile_service_uploads/app_icon/menu/2_5.png
  14. BIN
      mobileservice/gcc_mobile_service_uploads/app_icon/menu/3.png
  15. BIN
      mobileservice/gcc_mobile_service_uploads/app_icon/menu/3_1.png
  16. BIN
      mobileservice/gcc_mobile_service_uploads/app_icon/menu/3_2.png
  17. BIN
      mobileservice/gcc_mobile_service_uploads/app_icon/menu/3_3.png
  18. BIN
      mobileservice/gcc_mobile_service_uploads/asset_activity/.DS_Store
  19. BIN
      mobileservice/gcc_mobile_service_uploads/asset_images/.DS_Store
  20. BIN
      mobileservice/gcc_mobile_service_uploads/brr_activity_images/.DS_Store
  21. BIN
      mobileservice/gcc_mobile_service_uploads/sos_rescue_activity_images/.DS_Store
  22. 6
      mobileservice/pom.xml
  23. BIN
      mobileservice/src/.DS_Store
  24. BIN
      mobileservice/src/main/.DS_Store
  25. BIN
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/1_approved.jpg
  26. BIN
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/1_rejected.jpg
  27. 4
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/MobileServiceApplication.java
  28. 9
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/configuration/AppConfig.java
  29. 108
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/configuration/DataSourceConfig.java
  30. 10
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/controller/APIOfficialController.java
  31. 11
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/controller/MainController.java
  32. 13
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccactivity/controller/APIActivityController.java
  33. 130
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccactivity/service/Activity.java
  34. 8
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccactivity/service/MassClearn.java
  35. 909
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/controller/ParksController.java
  36. 1
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/controller/package-info.java
  37. 1
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/package-info.java
  38. 30
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/service/ErrorResponse.java
  39. 45
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/service/GlobalExceptionHandler.java
  40. 8
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/service/NoDataException.java
  41. 2000
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/service/ParksService.java
  42. 1
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/service/package-info.java
  43. 934
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccschools/controller/SchoolUserController.java
  44. 1
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccschools/controller/package-info.java
  45. 1
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccschools/package-info.java
  46. 1063
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccschools/service/SchoolUserActivity.java
  47. 1
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccschools/service/package-info.java
  48. 51
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccsos/controller/APIOfficerController.java
  49. 9
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccsos/controller/APIUserController.java
  50. 361
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccsos/service/OfficerActivity.java
  51. 37
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccsos/service/UserActivity.java
  52. 869
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccstraydogs/controller/UserApiController.java
  53. 1
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccstraydogs/controller/package-info.java
  54. 1
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccstraydogs/package-info.java
  55. 1317
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccstraydogs/service/UserService.java
  56. 1
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccstraydogs/service/package-info.java
  57. 3
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/nulm/service/NULMOfficerActivity.java
  58. 113
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/penalty/controller/APICattleCatchController.java
  59. 6
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/penalty/controller/APIPenaltyController.java
  60. 96
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/penalty/controller/APIPenaltyControllerPOS.java
  61. 781
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/penalty/service/CattleCatchService.java
  62. 112
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/penalty/service/PenaltyService.java
  63. 649
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/penalty/service/PenaltyServicePOS.java
  64. 30
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/service/MainService.java
  65. 38
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/service/OfficialAPIService.java
  66. 76
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/swmbwg/controller/APIController.java
  67. 1
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/swmbwg/controller/package-info.java
  68. 1
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/swmbwg/package-info.java
  69. 324
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/swmbwg/service/activity.java
  70. 1
      mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/swmbwg/service/package-info.java
  71. 9
      mobileservice/src/main/resources/application.properties

BIN
.DS_Store

1
.gitignore

@ -0,0 +1 @@
.DS_Store

BIN
mobileservice/.DS_Store

BIN
mobileservice/gcc_mobile_service_uploads/.DS_Store

BIN
mobileservice/gcc_mobile_service_uploads/app_icon/.DS_Store

BIN
mobileservice/gcc_mobile_service_uploads/app_icon/menu/.DS_Store

BIN
mobileservice/gcc_mobile_service_uploads/app_icon/menu/1.png

Before

Width: 43  |  Height: 43  |  Size: 1.9 KiB

BIN
mobileservice/gcc_mobile_service_uploads/app_icon/menu/1_1.png

Before

Width: 41  |  Height: 40  |  Size: 1.3 KiB

BIN
mobileservice/gcc_mobile_service_uploads/app_icon/menu/1_2.png

Before

Width: 40  |  Height: 40  |  Size: 1.2 KiB

BIN
mobileservice/gcc_mobile_service_uploads/app_icon/menu/2.png

Before

Width: 40  |  Height: 40  |  Size: 3.1 KiB

BIN
mobileservice/gcc_mobile_service_uploads/app_icon/menu/2_3.png

Before

Width: 40  |  Height: 40  |  Size: 981 B

BIN
mobileservice/gcc_mobile_service_uploads/app_icon/menu/2_4.png

Before

Width: 40  |  Height: 40  |  Size: 2.3 KiB

BIN
mobileservice/gcc_mobile_service_uploads/app_icon/menu/2_5.png

Before

Width: 40  |  Height: 40  |  Size: 1.6 KiB

BIN
mobileservice/gcc_mobile_service_uploads/app_icon/menu/3.png

Before

Width: 40  |  Height: 40  |  Size: 2.9 KiB

BIN
mobileservice/gcc_mobile_service_uploads/app_icon/menu/3_1.png

Before

Width: 40  |  Height: 40  |  Size: 2.5 KiB

BIN
mobileservice/gcc_mobile_service_uploads/app_icon/menu/3_2.png

Before

Width: 40  |  Height: 40  |  Size: 2.3 KiB

BIN
mobileservice/gcc_mobile_service_uploads/app_icon/menu/3_3.png

Before

Width: 40  |  Height: 40  |  Size: 1.6 KiB

BIN
mobileservice/gcc_mobile_service_uploads/asset_activity/.DS_Store

BIN
mobileservice/gcc_mobile_service_uploads/asset_images/.DS_Store

BIN
mobileservice/gcc_mobile_service_uploads/brr_activity_images/.DS_Store

BIN
mobileservice/gcc_mobile_service_uploads/sos_rescue_activity_images/.DS_Store

6
mobileservice/pom.xml

@ -109,6 +109,12 @@
<version>1.5.7</version> <!-- Use the latest version available -->
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version> <!-- or the latest version -->
</dependency>
</dependencies>
<build>

BIN
mobileservice/src/.DS_Store

BIN
mobileservice/src/main/.DS_Store

BIN
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/1_approved.jpg

After

Width: 1280  |  Height: 720  |  Size: 388 KiB

BIN
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/1_rejected.jpg

After

Width: 1280  |  Height: 720  |  Size: 550 KiB

4
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/MobileServiceApplication.java

@ -1,5 +1,7 @@
package in.gov.chennaicorporation.mobileservice;
import java.util.TimeZone;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@ -7,6 +9,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
public class MobileServiceApplication {
public static void main(String[] args) {
// Set the timezone to Asia/Kolkata
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Kolkata"));
SpringApplication.run(MobileServiceApplication.class, args);
}

9
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/configuration/AppConfig.java

@ -7,10 +7,10 @@ import org.springframework.web.client.RestTemplate;
@Configuration
public class AppConfig {
public String qrAssetFeedback = "http://localhost:8063";
public String mtm = "http://localhost:8060";
public String petRegistration = "http://localhost:8061";
public String garbageCollection = "http://localhost:8067"; //117.232.67.158
public String qrAssetFeedback = "http://117.232.67.158:8063";
public String mtm = "http://117.232.67.158:8060";
public String petRegistration = "http://117.232.67.158:8061";
public String garbageCollection = "http://117.232.67.158:8067"; //117.232.67.158
public String gccappsMysqlPassword = "";
@ -18,5 +18,4 @@ public class AppConfig {
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

108
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/configuration/DataSourceConfig.java

@ -20,14 +20,14 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement
public class DataSourceConfig {
private static String host = "localhost:3306";
//private static String host = "localhost:3306";
//private static String dbpassword = "";
//private static String dbpassword = "gccroot";
private static String dbpassword = "gccroot";
//private static String dbpassword = "";
// AWS
//private static String host = "gcc-facial-db-instance-1.cf48eqcciziq.ap-south-1.rds.amazonaws.com:3306";
//private static String dbpassword = "gcc-facial";
private static String host = "gcc-facial-db-instance-1.cf48eqcciziq.ap-south-1.rds.amazonaws.com:3306";
private static String dbpassword = "gcc-facial-password";
//////////////////////////////(For GCC APP) ////////////////////////
@Configuration
@ -74,17 +74,28 @@ public class DataSourceConfig {
//////////////////////////////(For GCC Activity Master) ////////////////////////
@Bean(name = "mysqlActivityDataSource")
public DataSource mysqlActivityDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/gcc_activity");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/gcc_activity");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
return dataSource;
}
//////////////////////////////(For Penalty Master) ////////////////////////
@Bean(name = "mysqlPenaltyDataSource")
public DataSource mysqlPenaltyDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/gcc_penalty_pos");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
return dataSource;
}
//////////////////////////////(For Cattle Catch Master) ////////////////////////
@Bean(name = "mysqlCattleCatchDataSource")
public DataSource mysqlCattleCatchDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/gcc_penalty");
@ -93,51 +104,85 @@ public class DataSourceConfig {
return dataSource;
}
//////////////////////////////(For PGR Master) ////////////////////////
@Bean(name = "mysqlPGRMasterDataSource")
public DataSource mysqlPGRMasterDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/erp_pgr");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/erp_pgr");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
return dataSource;
}
//////////////////////////////(For PGR Master) ////////////////////////
@Bean(name = "mysqlGCCUserDataSource")
public DataSource mysqlGCCUserDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/gcc_users");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/gcc_users");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
return dataSource;
}
//////////////////////////////(For PGR Master) ////////////////////////
@Bean(name = "mysqlGccSOSDataSource")
public DataSource mysqlGccSOSDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/gcc_sos");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/gcc_sos");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
return dataSource;
}
//////////////////////////////(For NULM Staff) ////////////////////////
@Bean(name = "mysqlNulmDataSource")
public DataSource mysqlNulmDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/gcc_nulm");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/gcc_nulm");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
return dataSource;
}
//////////////////////////////(For Stray Dog (veterinary)) ////////////////////////
@Bean(name = "mysqlGccStraydogsDataSource")
public DataSource mysqlGccStraydogsDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/gcc_stray_dogs");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
return dataSource;
}
//////////////////////////////(For Schools) ////////////////////////
@Bean(name = "mysqlGccSchoolsDataSource")
public DataSource mysqlGccSchoolsDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/gcc_schools");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
return dataSource;
}
//////////////////////////////(For Parks and Playground) ////////////////////////
@Bean(name = "mysqlGccParksDataSource")
public DataSource mysqlGccParksDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/gcc_parks_playground");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
return dataSource;
}
////////////////////////////// ORACLE ////////////////////////
@Bean(name = "oracleERPDataSource")
public DataSource oracleERPDataSource() {
@ -148,4 +193,5 @@ public class DataSourceConfig {
dataSource.setPassword("FAS");
return dataSource;
}
}

10
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/controller/APIOfficialController.java

@ -30,6 +30,16 @@ public class APIOfficialController {
return "Invalid Url";
}
@GetMapping({"/versionCheck"}) // Template
public List <?> versionCheck() {
return officialAPIService.versionCheck();
}
@GetMapping({"/nammaVersionCheck"}) // Template
public List <?> nammaVersionCheck() {
return officialAPIService.nammaVersionCheck();
}
// API FOR TOTHER APP
@GetMapping(value="/sendOTP")
public List sendOTP(HttpServletRequest request,

11
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/controller/MainController.java

@ -1,16 +1,25 @@
package in.gov.chennaicorporation.mobileservice.controller;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import in.gov.chennaicorporation.mobileservice.service.MainService;
import in.gov.chennaicorporation.mobileservice.service.OfficialAPIService;
@RequestMapping("/gccofficialapp")
@Controller("mainController")
public class MainController {
@Autowired
private MainService mainService;
private final Environment environment;
@Autowired
@ -26,7 +35,7 @@ public class MainController {
return "error";
}
@GetMapping({"support"})
@GetMapping({"/support"})
public String support(Model model) {
String assetsBaseUrl = environment.getProperty("assets.base-url");
model.addAttribute("assetsBaseUrl", assetsBaseUrl);

13
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccactivity/controller/APIActivityController.java

@ -100,6 +100,19 @@ public class APIActivityController {
return activity.filterReportsByDate(assetTypeId, fromDate, toDate, fromDate, toDate, streetid, loginId);
}
@GetMapping(value = "/asset/dashboardFiletReport")
public List<Map<String, Object>> dashboardFiletReport(
@RequestParam(value = "assetTypeId", required = false) String assetTypeId,
@RequestParam(value = "fromDate", required = false) String fromDate,
@RequestParam(value = "toDate", required = false) String toDate,
@RequestParam(value = "zone", required = false) String zone,
@RequestParam(value = "ward", required = false) String ward,
@RequestParam(value = "streetid", required = false) String streetid,
@RequestParam(value = "loginId", required = false) String loginId
){
return activity.dashboardFiletReport(assetTypeId, fromDate, toDate, zone, ward, streetid, loginId);
}
@GetMapping("/sendwhatsapp")
public String fetchApi() {
String url="https://media.smsgupshup.com/GatewayAPI/rest?userid=2000233507&password=h2YjFNcJ&send_to=7845014181&v=1.1&format=json&msg_type=TEXT&method=SENDMESSAGE&msg=Welcome to GCC%21+%0A%0AYour+OTP+for+GCC+Community+Centre+is+36837+.";

130
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccactivity/service/Activity.java

@ -48,7 +48,7 @@ public class Activity {
private JdbcTemplate jdbcActivityTemplate;
private DateTimeUtil dateTimeUtil;
private final Environment environment;
private String fileBaseUrl;
@Autowired
public void setDataSource(@Qualifier("mysqlActivityDataSource") DataSource activityDataSource) {
this.jdbcActivityTemplate = new JdbcTemplate(activityDataSource);
@ -57,6 +57,7 @@ public class Activity {
@Autowired
public Activity(Environment environment) {
this.environment = environment;
this.fileBaseUrl=environment.getProperty("fileBaseUrl");
}
private byte[] compressImage(BufferedImage image, float quality) throws IOException {
@ -178,6 +179,7 @@ public String assetFileUpload(String catId, MultipartFile file) {
uploadDirectory = uploadDirectory + serviceFolderName + catId;
try {
System.out.println("file-size: "+file.getBytes().toString());
// Create directory if it doesn't exist
Path directoryPath = Paths.get(uploadDirectory);
if (!Files.exists(directoryPath)) {
@ -219,7 +221,7 @@ public String assetFileUpload(String catId, MultipartFile file) {
String serviceFolderName = environment.getProperty("activity_new_asset_foldername");
String filePath=serviceFolderName + assetTypeId+"/";
//String sqlQuery = "SELECT *,CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files/"+filePath+"', image) AS imageUrl FROM `asset_list` WHERE `category_id`=? AND `streetid`=?";
String sqlQuery="SELECT al.*, CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files/', al.image) AS imageUrl, "
String sqlQuery="SELECT al.*, CONCAT('"+fileBaseUrl+"/gccofficialapp/files/', al.image) AS imageUrl, "
+ "af.feedback_date AS lastfeedbackdate FROM asset_list al "
+ "LEFT JOIN ( SELECT af1.*, af2.latest_feedback_date FROM activity_feedback af1 "
+ "INNER JOIN ( SELECT asset_id, MAX(feedback_date) AS latest_feedback_date FROM activity_feedback GROUP BY asset_id ) af2 "
@ -519,7 +521,7 @@ public String assetFileUpload(String catId, MultipartFile file) {
String serviceFolderName = environment.getProperty("activity_foldername");
String filePath=serviceFolderName + catId+"/";
String sqlQuery3 = "SELECT *,CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files/"+filePath+"', filename) AS imageUrl "
String sqlQuery3 = "SELECT *,CONCAT('"+fileBaseUrl+"/gccofficialapp/files/"+filePath+"', filename) AS imageUrl "
+ "FROM `activity_feedback_file` WHERE feedback_id=? or feedback_id=?";
List<Map<String, Object>> result3 = jdbcActivityTemplate.queryForList(sqlQuery3, feedback_id, feedback_id_before);
@ -556,7 +558,7 @@ public String assetFileUpload(String catId, MultipartFile file) {
//uploadDirectory = uploadDirectory + serviceFolderName + catId;
String serviceFolderName = environment.getProperty("activity_foldername");
String filePath=serviceFolderName + catId+"/";
String sqlQuery3 = "SELECT *,CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files/"+filePath+"', filename) AS imageUrl FROM `activity_feedback_file` WHERE feedback_id=?";
String sqlQuery3 = "SELECT *,CONCAT('"+fileBaseUrl+"/gccofficialapp/files/"+filePath+"', filename) AS imageUrl FROM `activity_feedback_file` WHERE feedback_id=?";
List<Map<String, Object>> result3 = jdbcActivityTemplate.queryForList(sqlQuery3, feedback_id);
// Add the result2 and result3 to the main result map
@ -590,7 +592,7 @@ public String assetFileUpload(String catId, MultipartFile file) {
//uploadDirectory = uploadDirectory + serviceFolderName + catId;
String serviceFolderName = environment.getProperty("activity_foldername");
String filePath=serviceFolderName + catId+"/";
String sqlQuery3 = "SELECT *,CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files/"+filePath+"', filename) AS imageUrl FROM `activity_feedback_file` WHERE feedback_id=?";
String sqlQuery3 = "SELECT *,CONCAT('"+fileBaseUrl+"/gccofficialapp/files/"+filePath+"', filename) AS imageUrl FROM `activity_feedback_file` WHERE feedback_id=?";
List<Map<String, Object>> result3 = jdbcActivityTemplate.queryForList(sqlQuery3, feedback_id);
// Add the result2 and result3 to the main result map
@ -680,12 +682,22 @@ public String assetFileUpload(String catId, MultipartFile file) {
// Group by zone
sqlQuery.append(" GROUP BY "+groupQuery);
// Add HAVING clause to filter out rows where total_started and total_completed are both zero
sqlQuery.append(" HAVING (COALESCE(SUM(CASE WHEN aff.fileaction = 'before' THEN 1 ELSE 0 END), 0) > 0 OR "
+ "COALESCE(SUM(CASE WHEN aff.fileaction = 'after' THEN 1 ELSE 0 END), 0) > 0)");
// Prepare parameters
List<Object> params = new ArrayList<>();
if (fromDate != null && toDate != null) {
System.out.println("filterReports:");
System.out.println("From Date:" + fromDate);
System.out.println("To Date:" + toDate);
fromDate = convertDateFormat(fromDate,0);
toDate = convertDateFormat(toDate,1);
toDate = convertDateFormat(toDate,0);
fromDate = fromDate + " 00:00:00";
toDate = toDate + " 23:59:59";
params.add(fromDate);
params.add(toDate);
@ -734,7 +746,7 @@ public String assetFileUpload(String catId, MultipartFile file) {
sqlQueryOverall.append(" AND feedback_date BETWEEN ? AND ?");
}
sqlQueryOverall.append(" GROUP BY asset_id) latest_feedback_dates "
sqlQueryOverall.append(" GROUP BY asset_id) latest_feedback_dates "
+ " ON "
+ " af.asset_id = latest_feedback_dates.asset_id "
+ " AND af.feedback_date = latest_feedback_dates.latest_feedback_date "
@ -757,6 +769,10 @@ public String assetFileUpload(String catId, MultipartFile file) {
sqlQueryOverall.append(" AND al.category_id = ?");
}
// Add HAVING clause to filter out rows where total_started and total_completed are both zero
sqlQueryOverall.append(" HAVING (COALESCE(SUM(CASE WHEN aff.fileaction = 'before' THEN 1 ELSE 0 END), 0) > 0 OR "
+ "COALESCE(SUM(CASE WHEN aff.fileaction = 'after' THEN 1 ELSE 0 END), 0) > 0)");
// Execute overall query
List<Map<String, Object>> overallResult = jdbcActivityTemplate.queryForList(sqlQueryOverall.toString(), params.toArray());
@ -812,6 +828,7 @@ public String assetFileUpload(String catId, MultipartFile file) {
+ "GROUP BY "
+ " `asset_list`.`id`";
System.out.println(sqlQueryForTasks);
// Execute the query to get the tasks
List<Map<String, Object>> taskResult = jdbcActivityTemplate.queryForList(sqlQueryForTasks, fromDate, toDate, assetType, streetid);
@ -840,7 +857,7 @@ public String assetFileUpload(String catId, MultipartFile file) {
// Query to get feedback files for the feedback_id
String serviceFolderName = environment.getProperty("activity_foldername");
String filePath = serviceFolderName + catId + "/";
String sqlQueryForFeedbackFiles = "SELECT *,CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files/" + filePath + "', filename) "
String sqlQueryForFeedbackFiles = "SELECT *,CONCAT('"+fileBaseUrl+"/gccofficialapp/files/" + filePath + "', filename) "
+ "AS imageUrl FROM `activity_feedback_file` WHERE feedback_id IN (" + feedbackIds + ")";
List<Map<String, Object>> feedbackFileResult = jdbcActivityTemplate.queryForList(sqlQueryForFeedbackFiles);
System.out.println(sqlQueryForFeedbackFiles + feedbackIds);
@ -853,6 +870,103 @@ public String assetFileUpload(String catId, MultipartFile file) {
return taskResult;
}
@Transactional
public List<Map<String, Object>> dashboardFiletReport(
String assetType,
String fromDate,
String toDate,
String zone,
String ward,
String streetid,
String loginId) {
// Step 1: Generate all dates within the specified month and year
StringBuilder sqlQuery = new StringBuilder("SELECT "
+ " `asset_list`.`id`,"
+ " `asset_list`.`category_id`, "
+ " `asset_list`.`image`, "
+ " `asset_list`.`latitude`, "
+ " `asset_list`.`longitude`, "
+ " `asset_list`.`zone`, "
+ " `asset_list`.`ward`, "
+ " `asset_list`.`streetid`, "
+ " `asset_list`.`streetname`, "
+ " `asset_list`.`cdate`, "
+ " `asset_list`.`cby`, "
+ " `asset_list`.`isactive`, "
+ " `asset_list`.`isdelete`, "
+ " `asset_list`.`gis_id`, "
+ " GROUP_CONCAT(`activity_feedback`.`id`) AS feedback_ids "
+ "FROM "
+ " `activity_feedback` "
+ "JOIN "
+ " `asset_list` ON `asset_list`.`id` = `activity_feedback`.`asset_id` "
+ "WHERE 1=1 ");
// Add additional filters if provided
if (fromDate != null && toDate != null) {
sqlQuery.append(" AND activity_feedback.feedback_date BETWEEN '"+fromDate+"' AND '"+toDate+"' ");
}
if (zone != null && !zone.isEmpty() && !zone.isBlank()) {
sqlQuery.append(" AND asset_list.zone = '"+zone+"'");
}
if (ward != null && !ward.isEmpty() && !ward.isBlank()) {
sqlQuery.append(" AND asset_list.ward = '"+zone+"'");
}
if (streetid != null && !streetid.isEmpty() && !streetid.isBlank()) {
sqlQuery.append(" AND asset_list.streetid = '"+streetid+"'");
}
if (assetType != null && !assetType.isEmpty() && !assetType.isBlank()) {
sqlQuery.append(" AND asset_list.category_id = '"+assetType+"'");
}
sqlQuery.append(" AND (`asset_list`.`isactive`=1 AND `asset_list`.`isdelete`=0) GROUP BY `asset_list`.`id`");
System.out.println(sqlQuery);
// Execute the query to get the tasks
List<Map<String, Object>> taskResult = jdbcActivityTemplate.queryForList(sqlQuery.toString());
// Step 2: For each task, load the detailed feedback similar to loadAssetFeedback method
for (Map<String, Object> task : taskResult) {
String assetId = task.get("id").toString();
String catId = task.get("category_id").toString();
String feedbackIds = task.get("feedback_ids").toString();
// Query to get the last feedback by user for the given asset
String sqlQueryForFeedback = "SELECT * FROM `activity_feedback` WHERE (`isactive`=1 AND `isdelete`=0) "
+ "AND (`asset_id`="+assetId+" AND id IN ("+feedbackIds+")) ORDER BY `feedback_date` DESC LIMIT 1";
// Execute the query and get the feedback result
List<Map<String, Object>> feedbackResult = jdbcActivityTemplate.queryForList(sqlQueryForFeedback);
if (!feedbackResult.isEmpty()) {
String feedback_id = feedbackResult.get(0).get("id").toString();
// Query to get feedback data for the feedback_id
String sqlQueryForFeedbackData = "SELECT *,`activity_questions`.english,`activity_questions`.tamil FROM `activity_feedback_data`, `activity_questions` WHERE feedback_id=? "
+ "AND `activity_questions`.qid = `activity_feedback_data`.`qid`";
List<Map<String, Object>> feedbackDataResult = jdbcActivityTemplate.queryForList(sqlQueryForFeedbackData, feedback_id);
// Query to get feedback files for the feedback_id
String serviceFolderName = environment.getProperty("activity_foldername");
String filePath = serviceFolderName + catId + "/";
String sqlQueryForFeedbackFiles = "SELECT *,CONCAT('"+fileBaseUrl+"/gccofficialapp/files/" + filePath + "', filename) "
+ "AS imageUrl FROM `activity_feedback_file` WHERE feedback_id IN (" + feedbackIds + ")";
List<Map<String, Object>> feedbackFileResult = jdbcActivityTemplate.queryForList(sqlQueryForFeedbackFiles);
System.out.println(sqlQueryForFeedbackFiles + feedbackIds);
// Add feedback data and files to the task result
task.put("feedback_value", feedbackDataResult);
task.put("feedback_file", feedbackFileResult);
}
}
return taskResult;
}
/*
@Transactional
public List<Map<String, Object>> filterReportsByDate(

8
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccactivity/service/MassClearn.java

@ -39,6 +39,7 @@ import org.springframework.web.multipart.MultipartFile;
public class MassClearn {
private JdbcTemplate jdbcActivityTemplate;
private final Environment environment;
private String fileBaseUrl;
@Autowired
public void setDataSource(@Qualifier("mysqlActivityDataSource") DataSource activityDataSource) {
@ -48,6 +49,7 @@ public class MassClearn {
@Autowired
public MassClearn(Environment environment) {
this.environment = environment;
this.fileBaseUrl=environment.getProperty("fileBaseUrl");
}
private byte[] compressImage(BufferedImage image, float quality) throws IOException {
@ -242,7 +244,7 @@ public class MassClearn {
return result;
}else {
String sqlQuery3 = "SELECT *,CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files', filepath) AS imageUrl "
String sqlQuery3 = "SELECT *,CONCAT('"+fileBaseUrl+"/gccofficialapp/files', filepath) AS imageUrl "
+ "FROM `brr_task_activity_log` WHERE taskid=? ORDER BY `id` DESC";
List<Map<String, Object>> result2 = jdbcActivityTemplate.queryForList(sqlQuery3, taskId);
@ -672,7 +674,7 @@ public class MassClearn {
String sqlQuery2 = "("
+ " SELECT "
+ " *,"
+ " CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files', filepath) AS imageUrl,"
+ " CONCAT('"+fileBaseUrl+"/gccofficialapp/files', filepath) AS imageUrl,"
+ " 0 AS activity_id "
+ " FROM "
+ " `brr_task_activity_log` "
@ -686,7 +688,7 @@ public class MassClearn {
+ "( "
+ " SELECT "
+ " *,"
+ " CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files', filepath) AS imageUrl, "
+ " CONCAT('"+fileBaseUrl+"/gccofficialapp/files', filepath) AS imageUrl, "
+ " (SELECT id FROM brr_task_activity_log bl WHERE bl.taskid = brr_task_activity_log.taskid AND bl.before_after = 'before' ORDER BY id DESC LIMIT 1) AS activity_id "
+ " FROM "
+ " `brr_task_activity_log` "

909
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/controller/ParksController.java

@ -0,0 +1,909 @@
package in.gov.chennaicorporation.mobileservice.gccparks.controller;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import in.gov.chennaicorporation.mobileservice.gccparks.service.NoDataException;
import in.gov.chennaicorporation.mobileservice.gccparks.service.ParksService;
@RequestMapping("/gccofficialapp/api/parks")
@RestController("gccofficalapparksrest")
public class ParksController {
@Autowired
private ParksService parksService;
@GetMapping("/saveAssets")
public List<?> saveAssets(@RequestParam MultiValueMap<String, String> formData,
@RequestParam(value = "categoryId", required = false) String categoryId,
@RequestParam(value = "assetTypeId", required = false) String assetTypeId,
@RequestParam(value = "latitude", required = false) String latitude,
@RequestParam(value = "longitude", required = false) String longitude,
@RequestParam(value = "zone", required = false) String zone,
@RequestParam(value = "ward", required = false) String ward,
@RequestParam(value = "streeId", required = false) String streeId,
@RequestParam(value = "streetName", required = false) String streetName,
@RequestParam(value = "loginId", required = false) String loginId,
@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "file", required = false) MultipartFile file) {
return parksService.saveAsset(formData, categoryId, assetTypeId, latitude, longitude, zone, ward, streeId,
streetName, loginId, name, file);
}
@GetMapping("/filterAssets")
public List<?> getAssets(@RequestParam MultiValueMap<String, String> formData,
@RequestParam(value = "categoryId", required = false) String categoryId,
@RequestParam(value = "assetTypeId", required = false) String assetTypeId,
@RequestParam(value = "latitude", required = false) String latitude,
@RequestParam(value = "longitude", required = false) String longitude) {
return parksService.loadAssetByFilter(categoryId, assetTypeId, latitude, longitude);
}
// ----------------------------------------------Enumeration
// API------------------------------------------------
@PostMapping("/centerMedianEnumeration")
public ResponseEntity<String> centerMedianEnumeration(@RequestParam("EnterParkName") String EnterParkName,
@RequestParam("maintained_By") int maintained_By, @RequestParam("Enu_Area_Meters") Double Enu_Area_Meters,
@RequestParam("TypeofCenterMedian") int TypeofCenterMedian, // ask
@RequestParam("latitude") String latitude, @RequestParam("longitude") String longitude,
@RequestParam("zone") String zone, @RequestParam("ward") String ward,
@RequestParam(value = "location", required = false) String location, @RequestParam("UserId") String UserId,
@RequestParam("Enumeration_Image") MultipartFile photo,
@RequestParam("enumeration_type") String enumeration_type
) throws Exception {
int centerMedianEnumeration = parksService.centerMedianEnumeration(EnterParkName, maintained_By,
Enu_Area_Meters, TypeofCenterMedian, latitude, longitude, zone, ward, location, UserId, photo,
enumeration_type);
if (centerMedianEnumeration == 0 || centerMedianEnumeration == -1) {
return ResponseEntity.ok("Failed to save the details");
}
return ResponseEntity.ok("Details were saved successfully");
}
@PostMapping("/trafficIslandEnumeration")
public ResponseEntity<String> trafficIslandEnumeration(
@RequestParam("maintained_By") int maintained_By, @RequestParam("Enu_Area_Meters") Double Enu_Area_Meters,
@RequestParam("TypeofCenterMedian") int Type_of_Traffic_Island, // ask
@RequestParam("latitude") String latitude, @RequestParam("longitude") String longitude,
@RequestParam("zone") String zone, @RequestParam("ward") String ward,
@RequestParam(value = "location", required = false) String location, @RequestParam("UserId") String UserId,
@RequestParam("Enumeration_Image") MultipartFile photo,
@RequestParam("enumeration_type") String enumeration_type) throws Exception {
int trafficIslandEnumeration = parksService.trafficIslandEnumeration(maintained_By, Enu_Area_Meters,
Type_of_Traffic_Island, latitude, longitude, zone, ward, location, UserId, photo, enumeration_type);
if (trafficIslandEnumeration == 0 || trafficIslandEnumeration == -1) {
return ResponseEntity.ok("Failed to save the details");
}
return ResponseEntity.ok("Details were saved successfully");
}
@PostMapping("/parkEnumeration")
public ResponseEntity<String> parkEnumeration(@RequestParam("EnterParkName") String EnterParkName,
@RequestParam("maintained_By") int maintained_By, @RequestParam("latitude") String latitude,
@RequestParam("longitude") String longitude, @RequestParam("zone") String zone,
@RequestParam("ward") String ward, @RequestParam(value = "location", required = false) String location,
@RequestParam("UserId") String UserId, @RequestParam("Zone_Available") String Zone_Available, // reading zone
@RequestParam("Enumeration_Image") MultipartFile photo,
@RequestParam("enumeration_type") String enumeration_type) throws Exception {
int parkEnumeration = parksService.parkEnumeration(EnterParkName, maintained_By, latitude, longitude, zone,
ward, location, UserId, photo, Zone_Available, enumeration_type);
if (parkEnumeration == 0 || parkEnumeration == -1) {
return ResponseEntity.ok("Failed to save the details");
}
return ResponseEntity.ok("Details were saved successfully");
}
@PostMapping("/beautificationRoadEnumeration")
public ResponseEntity<String> beautificationRoad(
// @RequestParam("Area") String Area,//location
@RequestParam("latitude") String latitude, @RequestParam("longitude") String longitude,
@RequestParam("zone") String zone, @RequestParam("ward") String ward,
@RequestParam(value = "location", required = false) String location, @RequestParam("UserId") String UserId,
@RequestParam("Enumeration_Image") MultipartFile photo,
@RequestParam("enumeration_type") String enumeration_type) throws Exception {
int beautificationRoad = parksService.beautificationRoad(latitude, longitude, zone, ward, location, UserId,
photo, enumeration_type);
if (beautificationRoad == 0 || beautificationRoad == -1) {
return ResponseEntity.ok("Failed to save the details");
}
return ResponseEntity.ok("Details were saved successfully");
}
@PostMapping("/readingZoneEnumeration")
public ResponseEntity<String> readingZone(
@RequestParam("latitude") String latitude, @RequestParam("longitude") String longitude,
@RequestParam("zone") String zone, @RequestParam("ward") String ward,
@RequestParam(value = "location", required = false) String location, @RequestParam("UserId") String UserId,
// @RequestParam("Zone_Available_name") String Zone_Available_name,//reading zone
@RequestParam("Enumeration_Image") MultipartFile photo,
@RequestParam("enumeration_type") String enumeration_type, @RequestParam("park_name") String park_name // name
) throws Exception {
int readingZone = parksService.readingZone(latitude, longitude, zone, ward, location, UserId, photo,
enumeration_type, park_name);
if (readingZone == 0 || readingZone == -1) {
return ResponseEntity.ok("Failed to save the details");
}
return ResponseEntity.ok("Details were saved successfully");
}
@PostMapping("/miyawakiNewEnumeration")
public ResponseEntity<String> miyawakiNew(@RequestParam("latitude") String latitude,
@RequestParam("longitude") String longitude, @RequestParam("zone") String zone,
@RequestParam("ward") String ward, @RequestParam(value = "location", required = false) String location,
@RequestParam("UserId") String UserId, @RequestParam("Type_of_place") String Type_of_place, // reading zone
@RequestParam("Enumeration_Image") MultipartFile photo,
@RequestParam("enumeration_type") String enumeration_type) throws Exception {
int miyawakiNew = parksService.miyawakiNew(Type_of_place, latitude, longitude, zone, ward, location, UserId,
photo, enumeration_type);
if (miyawakiNew == 0 || miyawakiNew == -1) {
return ResponseEntity.ok("Failed to save the details");
}
return ResponseEntity.ok("Details were saved successfully");
}
@PostMapping("/miyawakiExistingEnumeration")
public ResponseEntity<String> miyawakiExisting(@RequestParam("latitude") String latitude,
@RequestParam("longitude") String longitude, @RequestParam("zone") String zone,
@RequestParam("ward") String ward, @RequestParam(value = "location", required = false) String location,
@RequestParam("UserId") String UserId, @RequestParam("maintained_By") int maintained_By,
@RequestParam("Enumeration_Image") MultipartFile photo,
@RequestParam("enumeration_type") String enumeration_type) throws Exception {
int miyawakiExisting = parksService.miyawakiExisting(maintained_By, latitude, longitude, zone, ward, location,
UserId, photo, enumeration_type);
if (miyawakiExisting == 0 || miyawakiExisting == -1) {
return ResponseEntity.ok("Failed to save the details");
}
return ResponseEntity.ok("Details were saved successfully");
}
// To fetch park name within 500 meter radius
@GetMapping("/location")
public ResponseEntity<List<Map<String, Object>>> location(@RequestParam("latitude") String latitude,
@RequestParam("longitude") String longitude, @RequestParam("enumeration_type") String enumeration_type) throws Exception {
List<Map<String, Object>> dataByLocation = parksService.getDateByLocation(latitude, longitude,enumeration_type);
if (dataByLocation == null || dataByLocation.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(dataByLocation);
}
/*
* // To fetch park name with reading zone available
*
* @PostMapping("/parkname") public ResponseEntity<List<Map<String, Object>>>
* parkname() throws Exception { List<Map<String, Object>> parkName =
* parksService.parkName();
*
* return ResponseEntity.ok(parkName); }
*/
@GetMapping("/parkname")
public ResponseEntity<List<Map<String, Object>>> parkname(@RequestParam("latitude") String latitude,
@RequestParam("longitude") String longitude) throws Exception {
List<Map<String, Object>> dataByLocation = parksService.getReadingZoneParkByLocation(latitude, longitude,
latitude);
return ResponseEntity.ok(dataByLocation);
}
// -----------------------------------------------Feedback
// API-----------------------------------------------------------------
@PostMapping("/centerMedianFeedback")
public ResponseEntity<String> centerMedian(@RequestParam("irrigationProperlyQa") String irrigationProperlyQa,
@RequestParam("irrigationProperlyAns") String irrigationProperlyAns,
@RequestParam("trimmingProperlyQa") String trimmingProperlyQa,
@RequestParam("trimmingProperlyAns") String trimmingProperlyAns,
@RequestParam("weedingQa") String weedingQa, @RequestParam("weedingans") String weedingAns,
@RequestParam("HandRailingQa") String HandRailingQa, @RequestParam("HandRailingAns") String HandRailingAns,
@RequestParam("latitude") String latitude, @RequestParam("longitude") String longitude,
@RequestParam("zone") String zone, @RequestParam("ward") String ward,
@RequestParam("location") String location, @RequestParam("enumeration_id") String enumeration_id,
@RequestParam("enumeration_type") String enumeration_type, @RequestParam("userId") String userId,
@RequestParam("centerMedian_Image") MultipartFile photo) throws Exception {
int centerMedian = parksService.centerMedian(irrigationProperlyQa, irrigationProperlyAns, trimmingProperlyQa,
trimmingProperlyAns, weedingQa, weedingAns, HandRailingQa, HandRailingAns, latitude, longitude, zone,
ward, location, enumeration_type, userId, enumeration_id, photo);
if (centerMedian == 0 || centerMedian == -1) {
return ResponseEntity.ok("Failed to save the details");
}
return ResponseEntity.ok("Details were saved successfully");
}
/*// Patch 23-11-2024
@PostMapping("/trafficIslandFeedback")
public ResponseEntity<String> trafficIsland(
// gap filling meter
@RequestParam("irrigationProperlyQa") String irrigationProperlyQa,
@RequestParam("irrigationProperlyAns") String irrigationProperlyAns,
@RequestParam("trimmingProperlyQa") String trimmingProperlyQa,
@RequestParam("trimmingProperlyAns") String trimmingProperlyAns,
@RequestParam("weedingQa") String weedingQa, @RequestParam("weedingans") String weedingans,
@RequestParam("HandRailingQa") String HandRailingQa, @RequestParam("HandRailingAns") String HandRailingAns,
@RequestParam("latitude") String latitude, @RequestParam("longitude") String longitude,
@RequestParam("zone") String zone, @RequestParam("ward") String ward,
@RequestParam("location") String location, @RequestParam("userId") String userId,
@RequestParam("enumerationi_id") String enumerationi_id,
@RequestParam("enumeration_type") String enumeration_type, @RequestParam("gapFilingQa") String gapFillingQa,
@RequestParam("gapFilingAns") String gapFilingAns, @RequestParam("improvementQa") String improvementQa, // ask
@RequestParam("improvementAns") String improvementAns, // ask
@RequestParam("trafficIsland_Image") MultipartFile photo
) throws Exception {
int trafficIsland = parksService.trafficIsland(irrigationProperlyQa, irrigationProperlyAns, trimmingProperlyQa,
trimmingProperlyAns, weedingQa, weedingans, HandRailingQa, HandRailingAns, latitude, longitude, zone,
ward, location, userId, enumeration_type, enumerationi_id, gapFillingQa, gapFilingAns, improvementQa,
improvementAns, photo);
if (trafficIsland == 0 || trafficIsland == -1) {
return ResponseEntity.ok("Failed to save the details");
}
return ResponseEntity.ok("Details were saved successfully");
}
*/
@PostMapping("/trafficIslandFeedback")
public ResponseEntity<String> trafficIsland(
// gap filling meter
@RequestParam("irrigationProperlyQa") String irrigationProperlyQa,
@RequestParam("irrigationProperlyAns") String irrigationProperlyAns,
@RequestParam("trimmingProperlyQa") String trimmingProperlyQa,
@RequestParam("trimmingProperlyAns") String trimmingProperlyAns,
@RequestParam("weedingQa") String weedingQa, @RequestParam("weedingans") String weedingans,
@RequestParam("HandRailingQa") String HandRailingQa, @RequestParam("HandRailingAns") String HandRailingAns,
@RequestParam("latitude") String latitude, @RequestParam("longitude") String longitude,
@RequestParam("zone") String zone, @RequestParam("ward") String ward,
@RequestParam("location") String location, @RequestParam("userId") String userId,
@RequestParam("enumerationi_id") String enumerationi_id,
@RequestParam("enumeration_type") String enumeration_type, @RequestParam("gapFilingQa") String gapFillingQa,
@RequestParam("gapFilingAns") String gapFilingAns, @RequestParam("improvementQa") String improvementQa, // ask
@RequestParam("improvementAns") String improvementAns, // ask
@RequestParam("fountainAvailableQa") String fountainAvailableQa,
@RequestParam("fountainAvailableAns") String fountainAvailableAns,
@RequestParam("fountainWorkingQa") String fountainWorkingQa, // ask
@RequestParam("fountainWorkingAns") String fountainWorkingAns,
@RequestParam("trafficIsland_Image") MultipartFile photo
) throws Exception {
int trafficIsland = parksService.trafficIsland(irrigationProperlyQa, irrigationProperlyAns, trimmingProperlyQa,
trimmingProperlyAns, weedingQa, weedingans, HandRailingQa, HandRailingAns, latitude, longitude, zone,
ward, location, userId, enumeration_type, enumerationi_id, gapFillingQa, gapFilingAns, improvementQa,
improvementAns, fountainAvailableQa, fountainAvailableAns,fountainWorkingQa,fountainWorkingAns, photo);
if (trafficIsland == 0 || trafficIsland == -1) {
return ResponseEntity.ok("Failed to save the details");
}
return ResponseEntity.ok("Details were saved successfully");
}
@PostMapping("/beautificationFeedback")
public ResponseEntity<String> beautification(
@RequestParam("irrigationProperlyQa") String irrigationProperlyQa,
@RequestParam("irrigationProperlyAns") String irrigationProperlyAns,
@RequestParam("trimmingProperlyQa") String trimmingProperlyQa,
@RequestParam("trimmingProperlyAns") String trimmingProperlyAns,
@RequestParam("weedingQa") String weedingQa, @RequestParam("weedingans") String weedingans,
@RequestParam("gapFillingQa") String gapFillingQa, @RequestParam("gapFillingAns") String gapFillingAns,
@RequestParam("improvementQa") String improvementQa, @RequestParam("improvementAns") String improvementAns,
@RequestParam("latitude") String latitude, @RequestParam("longitude") String longitude,
@RequestParam("zone") String zone, @RequestParam("ward") String ward,
@RequestParam("location") String location, @RequestParam("beautification_Image") MultipartFile photo, // image
@RequestParam("enumerationi_id") String enumerationi_id, @RequestParam("userId") String userId,
@RequestParam("enumeration_type") String enumeration_type) throws Exception {
int beautification = parksService.beautification(irrigationProperlyQa, irrigationProperlyAns,
trimmingProperlyQa, trimmingProperlyAns, weedingQa, weedingans, gapFillingQa, gapFillingAns,
improvementQa, improvementAns, latitude, longitude, zone, ward, location, enumerationi_id, userId,
enumeration_type, photo);
if (beautification == 0 || beautification == -1) {
return ResponseEntity.ok("Failed to save the details");
}
return ResponseEntity.ok("Details were saved successfully");
}
@PostMapping("/parkInspectionFeedback")
public ResponseEntity<String> prakInspection(@RequestParam("openedQa") String openedQa,
@RequestParam("openedAns") String openedAns,
@RequestParam("irrigationProperlyQa") String irrigationProperlyQa,
@RequestParam("irrigationProperlyAns") String irrigationProperlyAns,
@RequestParam("trimmingProperlyQa") String trimmingProperlyQa,
@RequestParam("trimmingProperlyAns") String trimmingProperlyAns,
@RequestParam("weedingQa") String weedingQa, @RequestParam("weedingans") String weedingans,
@RequestParam("gapFillingQa") String gapFillingQa, @RequestParam("gapFillingAns") String gapFillingAns,
@RequestParam("playandGymQa") String playandGymQa, @RequestParam("playandGymAns") String playandGymAns,
@RequestParam("overAllQa") String overAllQa, @RequestParam("overAllans") String overAllAns,
@RequestParam("properLightQa") String properLightQa, @RequestParam("properLightAns") String properLightAns,
@RequestParam("debrisRemovalQa") String debrisRemovalQa,
@RequestParam("debrisRemovalAns") String debrisRemovalAns, @RequestParam("ToiletQA") String ToiletAQA,
@RequestParam("ToiletAns") String ToiletAns, @RequestParam("latitude") String latitude,
@RequestParam("longitude") String longitude, @RequestParam("zone") String zone,
@RequestParam("ward") String ward, @RequestParam("location") String location,
@RequestParam("enumerationi_id") String enumerationi_id, @RequestParam("userId") String userId,
@RequestParam("enumeration_type") String enumeration_type,
@RequestParam("prakInspection_Image") MultipartFile photo, @RequestParam("CivilWorkQa") String CivilWorkQa,
@RequestParam("CivilWorkAns") String CivilWorkAns, // type
@RequestParam("NoWatchmenQa") String NoWatchmenQa, @RequestParam("NoWatchmenAns") String NoWatchmenAns, // type
@RequestParam("NoSweeperQa") String NoSweeperQa, @RequestParam("NoSweeperAns") String NoSweeperAns
) throws Exception {
int prakInspection = parksService.parkInspection(openedQa, openedAns, irrigationProperlyQa,
irrigationProperlyAns, trimmingProperlyQa, trimmingProperlyAns, weedingQa, weedingans, gapFillingQa,
gapFillingAns, playandGymQa, playandGymAns, overAllQa, overAllAns, properLightQa, properLightAns,
debrisRemovalQa, debrisRemovalAns, ToiletAQA, ToiletAns, latitude, longitude, zone, ward, location,
userId, enumeration_type, enumerationi_id, CivilWorkQa, CivilWorkAns, NoWatchmenQa, NoWatchmenAns,
NoSweeperQa, NoSweeperAns, photo);
if (prakInspection == 0 || prakInspection == -1) {
return ResponseEntity.ok("Failed to save the details");
}
return ResponseEntity.ok("Details were saved successfully");
}
@PostMapping("/readingZoneFeedback")
public ResponseEntity<String> readingZone(
@RequestParam("openedOrNotQa") String openedOrNotQa, @RequestParam("openedOrNotAns") String openedOrNotAns,
@RequestParam("bookAvailableQa") String bookAvailableQa,
@RequestParam("bookAvailableAns") String bookAvailableAns,
@RequestParam("NewsapaperAvailableQa") String NewsapaperAvailableQa,
@RequestParam("NewsapaperAvailableAns") String NewsapaperAvailableAns,
@RequestParam("latitude") String latitude, @RequestParam("longitude") String longitude,
@RequestParam("zone") String zone, @RequestParam("ward") String ward,
@RequestParam("location") String location, @RequestParam("enumerationi_id") String enumerationi_id,
@RequestParam("userId") String userId, @RequestParam("enumeration_type") String enumeration_type,
@RequestParam("readingZone_Image") MultipartFile photo,
@RequestParam("improvementQa") String improvementQa, // type
@RequestParam("improvementAns") String improvementAns// type
) throws Exception {
int readingZone = parksService.readingZone(openedOrNotQa, openedOrNotAns, bookAvailableQa, bookAvailableAns,
NewsapaperAvailableQa, NewsapaperAvailableAns, latitude, longitude, zone, ward, location, userId,
enumeration_type, enumerationi_id, improvementQa, improvementAns, photo);
if (readingZone == 0 || readingZone == -1) {
return ResponseEntity.ok("Failed to save the details");
}
return ResponseEntity.ok("Details were saved successfully");
}
@PostMapping("/miyawakiNewFeedback")
public ResponseEntity<String> miyawakiNew(
@RequestParam("debrisCleaningQa") String debrisCleaningQa,
@RequestParam("debrisCleaningAns") String debrisCleaningAns,
@RequestParam("landpreprarationQa") String landpreprarationQa,
@RequestParam("landpreprarationAns") String landpreprarationAns,
@RequestParam("plantingDoneQa") String plantingDoneQa,
@RequestParam("plantingDoneAns") String plantingDoneAns, @RequestParam("cctvQa") String cctvQa,
@RequestParam("cctvAns") String cctvAns, @RequestParam("latitude") String latitude,
@RequestParam("longitude") String longitude, @RequestParam("zone") String zone,
@RequestParam("ward") String ward, @RequestParam("location") String location,
@RequestParam("enumerationi_id") String enumerationi_id, @RequestParam("userId") String userId,
@RequestParam("enumeration_type") String enumeration_type,
@RequestParam("SaplingAvailbilityQa") String saplingAvailQa,
@RequestParam("SaplingAvailbilityAns") String saplingAvailAns,
@RequestParam("fencingAvailbilityQa") String fencingAvailbilityQa,
@RequestParam("fencingAvailbilityAns") String fencingAvailbilityAns,
@RequestParam("sourcaOfIrrigationQa") String sourcaOfIrrigationQa, // type
@RequestParam("sourcaOfIrrigationAns") String sourcaOfIrrigationAns, // type
@RequestParam("miyawakiNew_Image") MultipartFile photo) throws Exception {
int miyawakiNew = parksService.miyawakiNew(debrisCleaningQa, debrisCleaningAns, landpreprarationQa,
landpreprarationAns, plantingDoneQa, plantingDoneAns, cctvQa, cctvAns, latitude, longitude, zone, ward,
location, userId, enumeration_type, enumerationi_id, saplingAvailQa, saplingAvailAns,
fencingAvailbilityQa, fencingAvailbilityAns, sourcaOfIrrigationQa, sourcaOfIrrigationAns, photo);
if (miyawakiNew == 0 || miyawakiNew == -1) {
return ResponseEntity.ok("Failed to save the detailse");
}
return ResponseEntity.ok("Details were saved successfully");
}
@PostMapping("/miyawakiExisitingFeedback")
public ResponseEntity<String> miyawakiExisiting(
@RequestParam("weedingQa") String weedingQa, @RequestParam("weedingAns") String weedingAns,
@RequestParam("purningQa") String purningQa, @RequestParam("purningans") String purningans,
@RequestParam("gapFillingQa") String gapFillingQa, @RequestParam("gapFillingAns") String gapFillingAns,
@RequestParam("latitude") String latitude, @RequestParam("longitude") String longitude,
@RequestParam("zone") String zone, @RequestParam("ward") String ward,
@RequestParam("location") String location, @RequestParam("enumerationi_id") String enumerationi_id,
@RequestParam("userId") String userId, @RequestParam("enumeration_type") String enumeration_type,
@RequestParam("improvmetReqQa") String improvmetReqQa,
@RequestParam("improvmetReqAns") String improvmetReqAns,
@RequestParam("sourceOfirrigationQa") String sourceOfirrigationQa,
@RequestParam("sourceOfirrigationAns") String sourceOfirrigationAns,
@RequestParam("miyawakiExisiting_Image") MultipartFile photo) throws Exception {
int miyawakiExisiting = parksService.miyawakiExisiting(weedingQa, weedingAns, purningQa, purningans,
gapFillingQa, gapFillingAns, latitude, longitude, zone, ward, location, userId, enumeration_type,
enumerationi_id, improvmetReqQa, improvmetReqAns, sourceOfirrigationQa, sourceOfirrigationAns, photo);
if (miyawakiExisiting == 0 || miyawakiExisiting == -1) {
return ResponseEntity.ok("Failed to save the details");
}
return ResponseEntity.ok("Details were saved successfully");
}
// To fetch Category ID and Name for reports
@GetMapping("/enuumerationType")
public ResponseEntity<List<Map<String, Object>>> enuumerationType() {
List<Map<String, Object>> parkName = parksService.categoryType();
return ResponseEntity.ok(parkName);
}
// To fetch master category type based on enumeration type
@GetMapping("/masterCategoryType")
public ResponseEntity<List<Map<String, Object>>> masterCategoryType(
@RequestParam("enumeration_type_id") String Cat_enumeration_id) {
List<Map<String, Object>> parkName = parksService.masterCategoryType(Cat_enumeration_id);
return ResponseEntity.ok(parkName);
}
// To fetch sub category type based on master category type
@GetMapping("/subCategoryType")
public ResponseEntity<List<Map<String, Object>>> subCategoryType(
@RequestParam("master_category_id") String masterCategory) {
List<Map<String, Object>> parkName = parksService.subCategoryType(masterCategory);
return ResponseEntity.ok(parkName);
}
// ------------------------------------------Tree Feedback
// API-----------------------------------------------------
@PostMapping("/treeDetails")
public ResponseEntity<Map<String, Object>> SaveTreeDetailes(
@RequestParam("No_of_trees_required") int No_of_trees_required,
@RequestParam("enumeration_type") String enumeration_type, @RequestParam("tree_Image") MultipartFile tree_Image,
@RequestParam("latitude") String latitude, @RequestParam("longitude") String longitude,
@RequestParam("zone") String zone, @RequestParam("ward") String ward,
@RequestParam("location") String location, @RequestParam("parkname") String parkname,
// @RequestParam(value = "painting_status", required = false) String painting_status,
@RequestParam("userId") String userId) throws IOException {
Map<String, Object> saveTreeDetailes = parksService.SaveTreeDetailes(No_of_trees_required, enumeration_type,
latitude, longitude, zone, ward, location, parkname, userId, tree_Image);
return ResponseEntity.ok(saveTreeDetailes);
}
@PostMapping("/SaveTreeimage")
public ResponseEntity<Map<String, Object>> SaveTreeimage(@RequestParam("tree_id") int tree_id,
@RequestParam("enumeration_type") String enumeration_type, @RequestParam("tree_Image") MultipartFile tree_Image,
@RequestParam("latitude") String latitude, @RequestParam("longitude") String longitude,
// @RequestParam("enumeration_type") String enumeration_type,
@RequestParam("userId") String userId) throws Exception {
Map<String, Object> saveTreeDetailes = parksService.SaveimageDetailes(enumeration_type, latitude, longitude,
userId, tree_Image, tree_id);
return ResponseEntity.ok(saveTreeDetailes);
}
// ------------------------------------------Enumeration Report
// API-----------------------------------------------------
@GetMapping("/zoneCount")
public ResponseEntity<List<Map<String, Object>>> getZoneCount(@RequestParam("fromdate") String fromdate,
@RequestParam("todate") String todate, @RequestParam("enumeration_type") String enumeration_type,
@RequestParam("userId") String userId) throws Exception {
List<Map<String, Object>> zoneCountData = parksService.getZoneCount(fromdate, todate, enumeration_type, userId);
if (zoneCountData == null || zoneCountData.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(zoneCountData);
}
@GetMapping("/wardCount")
public ResponseEntity<List<Map<String, Object>>> getwardCount(@RequestParam("zone") String zone,
@RequestParam("userId") String userId, @RequestParam("fromdate") String fromdate,
@RequestParam("todate") String todate, @RequestParam("enumeration_type") String enumeration_type)
throws Exception {
List<Map<String, Object>> wardCountData = parksService.getwardCount(zone, fromdate, todate, enumeration_type, userId);
if (wardCountData == null || wardCountData.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(wardCountData);
}
@GetMapping("/activityCount")
public ResponseEntity<List<Map<String, Object>>> getActivityCount(@RequestParam("ward") String ward,
@RequestParam("fromdate") String fromdate, @RequestParam("todate") String todate,
@RequestParam("enumeration_type") String enumeration_type) throws Exception {
List<Map<String, Object>> activityByWard = parksService.getActivityCount(ward, fromdate, todate,
enumeration_type);
if (activityByWard == null || activityByWard.isEmpty()) {
throw new NoDataException("No Activity is performed ");
}
return ResponseEntity.ok(activityByWard);
}
@GetMapping("/activityDetails")
public ResponseEntity<List<Map<String, Object>>> getActivityDetails(@RequestParam("ward") String ward,
@RequestParam("fromdate") String fromdate, @RequestParam("todate") String todate,
@RequestParam("enumeration_type") String enumeration_type,
@RequestParam("enumerationId") String enumerationId) throws Exception {
List<Map<String, Object>> activityDetailsByWard = parksService.getActivityDetails(ward, fromdate, todate,
enumeration_type, enumerationId);
if (activityDetailsByWard == null || activityDetailsByWard.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(activityDetailsByWard);
}
@GetMapping("/getInspectionDetails")
public ResponseEntity<List<List<Map<String, Object>>>> getInspectionDetails(
@RequestParam("activityId") String activityId, @RequestParam("fromdate") String fromdate,
@RequestParam("todate") String todate, @RequestParam("enumerationId") String enumerationId)
throws Exception {
List<List<Map<String, Object>>> activityDetailsByWard = parksService.getInspectionDetails(activityId, fromdate,
todate, enumerationId);
if (activityDetailsByWard == null || activityDetailsByWard.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(activityDetailsByWard);
}
// tofxcvbn
@GetMapping("/getParkCount")
public ResponseEntity<List<Map<String, Object>>> getParkCount(@RequestParam("fromdate") String fromdate,
@RequestParam("todate") String todate, @RequestParam("ward") String ward,
@RequestParam("userId") String userId, @RequestParam("enumeration_type") String enumeration_type)
throws Exception {
try {
List<Map<String, Object>> dateByLocation = parksService.getParkCount(ward, fromdate, todate,
enumeration_type);
if (dateByLocation == null || dateByLocation.isEmpty()) {
throw new NoDataException("no data ");
} else {
return ResponseEntity.ok(dateByLocation);
}
} catch (NoDataException e) {
// TODO Auto-generated catch block
throw new NoDataException("no data");
}
}
@GetMapping("/getParkDetails")
public ResponseEntity<List<List<Map<String, Object>>>> getParkDetails(
@RequestParam(value = "enumeration_type", required = false) String enumeration_type,
@RequestParam("userId") String userId, @RequestParam("fromdate") String fromdate,
@RequestParam("todate") String todate) throws Exception {
List<List<Map<String, Object>>> dateByLocation = parksService.getParkDetails(enumeration_type, fromdate, todate, userId);
if (dateByLocation == null || dateByLocation.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(dateByLocation);
}
//////////////////// ------------------------------tree-------------------///////////////////////////
@GetMapping("/treeWishZoneCount")
public ResponseEntity<List<Map<String, Object>>> getWishtreeZoneCount(@RequestParam("fromdate") String fromdate,
@RequestParam("todate") String todate, @RequestParam("enumeration_type") String enumeration_type,
@RequestParam("userId") String userId) throws Exception {
List<Map<String, Object>> dateByLocation = parksService.getWishtreeZoneCount(fromdate, todate,
enumeration_type);
if (dateByLocation == null || dateByLocation.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(dateByLocation);
}
// to
@GetMapping("/treeWardCount")
public ResponseEntity<List<Map<String, Object>>> getTreewardCount(@RequestParam("fromdate") String fromdate,
@RequestParam("todate") String todate, @RequestParam("zone") String zone,
@RequestParam("userId") String userId, @RequestParam("enumeration_type") String enumeration_type)
throws Exception {
List<Map<String, Object>> dateByLocation = parksService.getTreewardCount(zone, fromdate, todate,
enumeration_type);
if (dateByLocation == null || dateByLocation.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(dateByLocation);
}
@GetMapping("/wardWishTreedata")
public ResponseEntity<List<Map<String, Object>>> getwardWishTreedata(@RequestParam("ward") String ward,
@RequestParam("userId") String userId) throws Exception {
List<Map<String, Object>> dateByLocation = parksService.getwardWishTreedata(ward);
if (dateByLocation == null || dateByLocation.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(dateByLocation);
}
@GetMapping("/getTreeWardWiseCountDetails")
public ResponseEntity<List<Map<String, Object>>> getTreeWardWiseCountDetails(@RequestParam("ward") String ward,
@RequestParam("enumeration_type") String enumeration_type,@RequestParam("fromdate") String fromdate,
@RequestParam("todate") String todate) throws Exception {
List<Map<String, Object>> treeCountByWard = parksService.getTreeWardWiseCountDetails(ward,enumeration_type,fromdate,todate);
if (treeCountByWard == null || treeCountByWard.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(treeCountByWard);
}
@GetMapping("/getTreeImageDetails")
public ResponseEntity<List<Map<String, Object>>> getTreeImageDetails(@RequestParam("tree_Id") String tree_Id,
@RequestParam("enumeration_type") String enumeration_type, @RequestParam("fromdate") String fromdate,
@RequestParam("todate") String todate) throws Exception {
List<Map<String, Object>> treeImageDetails = parksService.getTreeImageDetails(tree_Id,enumeration_type, fromdate, todate);
if (treeImageDetails == null || treeImageDetails.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(treeImageDetails);
}
@GetMapping("/getTreeDetails")
public ResponseEntity<List<Map<String, Object>>> getTreeDetails(@RequestParam("tree_Id") String tree_Id,
@RequestParam("userId") String userId) throws Exception {
List<Map<String, Object>> dateByLocation = parksService.getTreeDetails(tree_Id);
if (dateByLocation == null || dateByLocation.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(dateByLocation);
}
// feedback
@GetMapping("/enumerationFeedback")
public ResponseEntity<List<Map<String, Object>>> getEnumerationFeedback(
@RequestParam("enumerationId") String enumerationId,
@RequestParam("enumeration_type") String enumeration_type) throws Exception {
List<Map<String, Object>> feedbackData = parksService.getEnumeration_feedback(enumerationId, enumeration_type);
if (feedbackData == null || feedbackData.isEmpty()) {
throw new NoDataException("No feedback data found.");
}
return ResponseEntity.ok(feedbackData);
}
// To Get Brief Report
@GetMapping("/getBriefReport")
public ResponseEntity<List<Map<String, Object>>> getBriefReport(@RequestParam("fromdate") String fromdate,
@RequestParam("todate") String todate, @RequestParam("enumeration_type") String category,
@RequestParam("division") String divison, @RequestParam("zone") String zone,
@RequestParam("park_name") String park_name) throws Exception {
List<Map<String, Object>> briefReport = parksService.getBriefReport(fromdate, todate, category, divison, zone,
park_name);
if (briefReport == null || briefReport.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(briefReport);
}
@GetMapping("/getUserBasedEnumAndStatus")
public ResponseEntity<List<Map<String, Object>>> getUserBasedEnum(@RequestParam("userId") String tree_user_id,
@RequestParam("latitude") String tree_latitude, @RequestParam("longitude") String tree_longitude,
@RequestParam("Status") String tree_Status, @RequestParam("enumeration_type") String enumeration_type) throws Exception {
List<Map<String, Object>> userBasedEnum = parksService.getUserBasedEnum(tree_user_id, tree_latitude,
tree_longitude, tree_Status, enumeration_type);
if (userBasedEnum == null || userBasedEnum.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(userBasedEnum);
}
// @GetMapping("/getEnumByRadiusAndStatus")
// public ResponseEntity<List<Map<String, Object>>> getUserBasedEnum(
// @RequestParam("latitude") String tree_latitude,@RequestParam("longitude") String tree_longitude,@RequestParam("Status") String tree_Status
// )
// {
//
// List<Map<String, Object>> userBasedEnum = parksService.getUserBasedEnum(tree_latitude,tree_longitude,tree_Status);
//
// if (userBasedEnum == null || userBasedEnum.isEmpty()) {
// throw new NoDataException("no data ");
// }
// return ResponseEntity.ok(userBasedEnum);
// }
@GetMapping("/getparkNameByRadius")
public ResponseEntity<List<Map<String, Object>>> getparkNameByRadius(@RequestParam("latitude") String tree_latitude,
@RequestParam("longitude") String tree_longitude) {
List<Map<String, Object>> getparkNameByRadius = parksService.getparkNameByRadius(tree_latitude, tree_longitude);
if (getparkNameByRadius == null || getparkNameByRadius.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(getparkNameByRadius);
}
@GetMapping("/getTreeDetailsBasedonLocation")
public ResponseEntity<List<Map<String, Object>>> getTreeDetailsBasedonLocation(
@RequestParam("parkName") String parkName, @RequestParam("location") String location,
@RequestParam("ward") String ward) throws Exception {
List<Map<String, Object>> treeDataByLocation = parksService.getTreeDetailsBasedonLocation(parkName, location,
ward);
if (treeDataByLocation == null || treeDataByLocation.isEmpty()) {
throw new NoDataException("no data ");
}
return ResponseEntity.ok(treeDataByLocation);
}
// flowering and Non Flowering API
@GetMapping("/getparkNameByEnumType")
public ResponseEntity<List<Map<String,Object>>> getparkNameByEnumType(@RequestParam("enum_Type") int enum_Type,
@RequestParam("latitude") String latitude, @RequestParam("longitude") String longitude){
List<Map<String,Object>> parkNameByEnum = parksService.getparkNameByEnumType(enum_Type,latitude,longitude);
if(parkNameByEnum == null || parkNameByEnum.isEmpty())
{
throw new NoDataException("No Data found");
}else {
return ResponseEntity.ok(parkNameByEnum);
}
}
@PostMapping("/saveFloweringandNonFlowering")
public ResponseEntity<String> saveFloweringandNonFlowering(
@RequestParam("enumType") String enumType,@RequestParam("parkname") String parkname, @RequestParam("userId") String userId,
@RequestParam("enumerationId") int enumerationId, @RequestParam(value="floweringPlantCount", required = false) int floweringPlantCount,
@RequestParam(value="nonFloweringPlantCount", required = false) int nonFloweringPlantCount,
@RequestParam(value="floweringImage", required = false) MultipartFile floweringImg,
@RequestParam(value="nonFloweringImage", required = false) MultipartFile nonFloweringImg) throws Exception {
int flowringData = parksService.saveFlowringandNonFlowringDetails(enumerationId, enumType,parkname, floweringPlantCount, floweringImg,
nonFloweringPlantCount, nonFloweringImg, userId);
if (flowringData == 0 || flowringData == -1) {
return ResponseEntity.ok("Failed to save the details");
}
return ResponseEntity.ok("Details were saved successfully");
}
@GetMapping("/getFlowringZoneCount")
public ResponseEntity<List<Map<String,Object>>> getFlowringZoneData(@RequestParam("enumeration_type") String enumeration_type,
@RequestParam("fromdate") String fromdate, @RequestParam("todate") String todate,
@RequestParam(value="userId", required = false) String userId){
List<Map<String, Object>> floweringZoneCount = parksService.getFloweringZoneCount(enumeration_type,fromdate,todate,userId);
if(floweringZoneCount == null || floweringZoneCount.isEmpty()) {
throw new NoDataException("No data found");
}
return ResponseEntity.ok(floweringZoneCount);
}
@GetMapping("/getFlowringWardCount")
public ResponseEntity<List<Map<String,Object>>> getFlowringWardData(@RequestParam("enumeration_type") String enumeration_type,
@RequestParam("fromdate") String fromdate, @RequestParam("todate") String todate,
@RequestParam(value="userId", required = false) String userId, @RequestParam("zone") String zone){
List<Map<String, Object>> floweringWardCount = parksService.getFloweringWardCount(zone, fromdate, todate, enumeration_type, userId);
if (floweringWardCount == null || floweringWardCount.isEmpty()) {
throw new NoDataException("No data found");
}
return ResponseEntity.ok(floweringWardCount);
}
@GetMapping("/getFloweringDetails")
public ResponseEntity<List<Map<String,Object>>> getFloweringDetails(@RequestParam("enumeration_type") String enumeration_type,
@RequestParam("zone") String zone, @RequestParam("ward") String ward, @RequestParam("fromdate") String fromdate,
@RequestParam("todate") String todate, @RequestParam(value="userId" , required = false) String userId,
@RequestParam("parkname") String parkname){
List<Map<String,Object>> floweringDetails = parksService.getFloweringDetails(enumeration_type, zone, ward, fromdate, todate, userId, parkname);
if(floweringDetails == null || floweringDetails.isEmpty())
{
throw new NoDataException( "No data found");
}
return ResponseEntity.ok(floweringDetails);
}
@GetMapping("/getParkwiseFloweringCount")
public ResponseEntity<List<Map<String,Object>>> getParkwiseFloweringCount(@RequestParam("enumeration_type") String enumeration_type,
@RequestParam("zone") String zone, @RequestParam("ward") String ward, @RequestParam("fromdate") String fromdate,
@RequestParam("todate") String todate, @RequestParam(value="userId", required = false) String userId){
List<Map<String,Object>> parkwiseCount = parksService.getParkwiseFloweringCount(enumeration_type, zone, ward, fromdate, todate, userId);
if(parkwiseCount == null || parkwiseCount.isEmpty())
{
throw new NoDataException( "No data found");
}
return ResponseEntity.ok(parkwiseCount);
}
}

1
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/controller/package-info.java

@ -0,0 +1 @@
package in.gov.chennaicorporation.mobileservice.gccparks.controller;

1
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/package-info.java

@ -0,0 +1 @@
package in.gov.chennaicorporation.mobileservice.gccparks;

30
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/service/ErrorResponse.java

@ -0,0 +1,30 @@
package in.gov.chennaicorporation.mobileservice.gccparks.service;
public class ErrorResponse {
private int statusCode;
private String message;
// Constructor, getters, and setters
public ErrorResponse(int statusCode, String message) {
this.statusCode = statusCode;
this.message = message;
}
public int getStatusCode() {
return statusCode;
}
public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}

45
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/service/GlobalExceptionHandler.java

@ -0,0 +1,45 @@
package in.gov.chennaicorporation.mobileservice.gccparks.service;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.NoHandlerFoundException;
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(NoHandlerFoundException.class)
public ResponseEntity<String> handlePageNotFoundException(NoHandlerFoundException ex) {
// Log the exception
ex.printStackTrace();
// Get the requested URL from the exception
String requestedUrl = ex.getRequestURL();
// Create an error message with the requested URL
String errorMessage = "Page not found: " + requestedUrl;
// Return a ResponseEntity with a 404 Not Found status code and error message
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(errorMessage);
}
@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleException(Exception ex) {
// Log the exception
ex.printStackTrace();
// Create an error response object
ErrorResponse errorResponse = new ErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), "An error occurred: " + ex.getMessage());
// Return a ResponseEntity with an appropriate HTTP status code and error response object
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorResponse);
}
@ExceptionHandler(NoDataException.class)
public ResponseEntity<ErrorResponse> noDataException(NoDataException ex){
ErrorResponse errorResponse = new ErrorResponse(HttpStatus.NOT_FOUND.value(),ex.getMessage());
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(errorResponse);
}
}

8
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/service/NoDataException.java

@ -0,0 +1,8 @@
package in.gov.chennaicorporation.mobileservice.gccparks.service;
public class NoDataException extends RuntimeException {
public NoDataException(String msg){
super(msg);
}
}

2000
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/service/ParksService.java
File diff suppressed because it is too large
View File

1
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccparks/service/package-info.java

@ -0,0 +1 @@
package in.gov.chennaicorporation.mobileservice.gccparks.service;

934
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccschools/controller/SchoolUserController.java

@ -0,0 +1,934 @@
package in.gov.chennaicorporation.mobileservice.gccschools.controller;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import in.gov.chennaicorporation.mobileservice.gccschools.service.SchoolUserActivity;
//import in.gov.chennaicorporation.mobileservice.gccsos.service.UserActivity;
@RequestMapping("/gccofficialapp/api/gccschools/user/")
@RestController("gccofficialappUserSchoolsRest")
public class SchoolUserController {
@Autowired
private JdbcTemplate jdbcSchoolsTemplate;
@Autowired
private SchoolUserActivity schoolUserActivity;
@PostMapping("/saveschool")
public ResponseEntity<String> saveSchool(
@RequestParam String latitude,
@RequestParam String longitude,
@RequestParam(required = false) MultipartFile photo,
@RequestParam Integer schoolType,
@RequestParam String schoolName,
@RequestParam String earmark,
@RequestParam String zone,
@RequestParam String division,
@RequestParam String user_id
) {
try {
// Save school details if type is valid
schoolUserActivity.saveSchool(latitude, longitude, photo, schoolType, schoolName, earmark, zone, division, user_id);
return new ResponseEntity<>("School details saved successfully.", HttpStatus.OK);
} catch (IllegalArgumentException e) {
return new ResponseEntity<>("Failed to save school details: " + e.getMessage(), HttpStatus.BAD_REQUEST);
} catch (Exception e) {
return new ResponseEntity<>("Failed to save school details: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PostMapping("/savetype")
public ResponseEntity<Integer> saveSchoolType(@RequestParam String schoolType) {
Integer schoolTypeId = schoolUserActivity.saveSchoolType(schoolType);
return ResponseEntity.ok(schoolTypeId);
}
@GetMapping("/getCategoryWithQuestions")
public ResponseEntity<Map<String, Object>> getCategoryWithQuestions(
@RequestParam int categoryId
) {
try {
Map<String, Object> categoryDetails = schoolUserActivity.getCategoryWithQuestions(categoryId);
return ResponseEntity.ok(categoryDetails);
} catch (Exception e) {
return ResponseEntity.status(500).body(Map.of("error", "Failed to retrieve category details: " + e.getMessage()));
}
}
@GetMapping("/getFeedback")
public ResponseEntity<?> getFeedback(@RequestParam int catQuestionId) {
try {
// Call the service method to fetch feedback
List<Map<String, Object>> feedbackDetails = schoolUserActivity.getFeedbackByQuestionId(catQuestionId);
// Check if feedback exists for the given catQuestionId
if (feedbackDetails.isEmpty()) {
return new ResponseEntity<>("No feedback found for the provided category question ID.", HttpStatus.NOT_FOUND);
}
return new ResponseEntity<>(feedbackDetails, HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>("Failed to retrieve feedback: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@GetMapping("/getSchools")
public ResponseEntity<?> getSchools(
@RequestParam String latitude,
@RequestParam String longitude
) {
try {
// Validate latitude and longitude
double lat = Double.parseDouble(latitude);
double lon = Double.parseDouble(longitude);
if (lat < -90 || lat > 90 || lon < -180 || lon > 180) {
return ResponseEntity.badRequest()
.body(Collections.singletonList("Latitude must be between -90 and 90, and longitude between -180 and 180."));
}
//String latitude1=latitude;
// Get schools based on location
List<Map<String, Object>> schools = schoolUserActivity.getSchoolsByLocationAndType(latitude, longitude);
if (schools.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(Collections.singletonList("No schools found for the specified location."));
}
return ResponseEntity.ok(schools);
} catch (NumberFormatException e) {
return ResponseEntity.badRequest()
.body(Collections.singletonList("Invalid latitude or longitude format."));
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Collections.singletonList("Failed to retrieve schools: " + e.getMessage()));
}
}
@PostMapping("/savechennaiboard")
public ResponseEntity<?> saveChennaiBoard(
@RequestParam int categoryId,
@RequestParam String newboardconstructQa,
@RequestParam String newboardconstructAns,
@RequestParam String SchoolunderConstructQa,
@RequestParam String SchoolunderConstructAns,
@RequestParam(required = false) MultipartFile feedPhoto, // file is optional
@RequestParam(required = false) int school_details_id, // school_details_id is optional
@RequestParam String zone,
@RequestParam String division,
@RequestParam double latitude,
@RequestParam double longitude,
@RequestParam String user_id ) {
try {
// Save feedback for both questions
schoolUserActivity.saveChennaiSchoolBoard(categoryId, newboardconstructQa, newboardconstructAns,
SchoolunderConstructQa, SchoolunderConstructAns, feedPhoto, school_details_id, zone, division,latitude,longitude,user_id);
return new ResponseEntity<>("Feedback saved successfully.", HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>("Failed to save feedback: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PostMapping("/saveDrinkingWater")
public ResponseEntity<?> saveDrinkingWater(
@RequestParam int categoryId,
@RequestParam String MetroWaterFacilitiesQa,
@RequestParam String MetroWaterFacilitiesAns,
@RequestParam String SumpFacilitiesAvailableQa,
@RequestParam String SumpFacilitiesAvailableAns,
@RequestParam String SumpGoodConditionQa,
@RequestParam String SumpGoodConditionAns,
@RequestParam String ROFacilitiesAvailableQa,
@RequestParam String ROFacilitiesAvailableAns,
@RequestParam String ROGoodConditionQa,
@RequestParam String ROGoodConditionAns,//Drinking water facilities available or not
@RequestParam String DrinkingwaterfacilitiesQa,
@RequestParam String DrinkingwaterfacilitiesAns,
@RequestParam String typeoffacilitiesQa,
@RequestParam String typeoffacilitiesAns,
@RequestParam(required = false) MultipartFile feedPhoto,
@RequestParam(required = false) int school_details_id,
@RequestParam String zone,
@RequestParam String division,
@RequestParam double latitude,
@RequestParam double longitude,
@RequestParam String user_id
) {
try {
// Call the service method to save feedback
schoolUserActivity.savewaterfd(categoryId, MetroWaterFacilitiesQa, MetroWaterFacilitiesAns,
SumpFacilitiesAvailableQa, SumpFacilitiesAvailableAns,
SumpGoodConditionQa, SumpGoodConditionAns,
ROFacilitiesAvailableQa, ROFacilitiesAvailableAns,
ROGoodConditionQa, ROGoodConditionAns,DrinkingwaterfacilitiesQa,DrinkingwaterfacilitiesAns,
typeoffacilitiesQa,typeoffacilitiesAns,
feedPhoto, school_details_id, zone, division,latitude,longitude,user_id);
return new ResponseEntity<>("Feedback saved successfully.", HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>("Failed to save feedback: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PostMapping("/FirstAidKit")
public ResponseEntity<?> FirstAidKit(
@RequestParam int categoryId,
@RequestParam String FirstAidKitAvailableQa,
@RequestParam String FirstAidKitAvailableAns,
@RequestParam(required = false) MultipartFile feedPhoto,
@RequestParam(required = false) int school_details_id,
@RequestParam String zone,
@RequestParam String division ,
@RequestParam double latitude,
@RequestParam double longitude,
@RequestParam String user_id) {
try {
// Call the service method to save feedback
schoolUserActivity.saveFirstAidKitFeedback(categoryId, FirstAidKitAvailableQa, FirstAidKitAvailableAns,
feedPhoto, school_details_id, zone, division, latitude,longitude,user_id);
return new ResponseEntity<>("Feedback saved successfully.", HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>("Failed to save feedback: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PostMapping("/Cleaning")
public ResponseEntity<?> Cleaning(
@RequestParam int categoryId,
@RequestParam String ToiletsAvailableQa,
@RequestParam String ToiletsAvailableAns,
@RequestParam String UrinariesAvailableQa,
@RequestParam String UrinariesAvailableAns,
@RequestParam String SweepersAvailableQa,
@RequestParam String SweepersAvailableAns,
@RequestParam String SewagesAvailableQa,
@RequestParam String SewagesAvailableAns,
@RequestParam String RoomsAvailableQa,
@RequestParam String RoomsAvailableAns,
@RequestParam String PlaygroundAvailableQa,
@RequestParam String PlaygroundAvailableAns,
@RequestParam String DrainageAvailableQa,
@RequestParam String DrainageAvailableAns,
@RequestParam(required = false) MultipartFile toiletfeedPhoto,
@RequestParam(required = false) MultipartFile RoomsfeedPhoto,
@RequestParam(required = false) MultipartFile PlaygroundfeedPhoto,
@RequestParam(required = false) int school_details_id,
@RequestParam String zone,
@RequestParam String division,
@RequestParam double latitude,
@RequestParam double longitude,
@RequestParam String user_id) {
try {
// Call the service method to save feedback
schoolUserActivity.saveCleaningFeedback(
categoryId,
ToiletsAvailableQa, ToiletsAvailableAns,
UrinariesAvailableQa, UrinariesAvailableAns,
SweepersAvailableQa, SweepersAvailableAns,
SewagesAvailableQa, SewagesAvailableAns,
RoomsAvailableQa, RoomsAvailableAns,
PlaygroundAvailableQa, PlaygroundAvailableAns,
DrainageAvailableQa, DrainageAvailableAns,
toiletfeedPhoto, RoomsfeedPhoto, PlaygroundfeedPhoto,
school_details_id, zone, division, latitude, longitude,user_id
);
return new ResponseEntity<>("Feedback saved successfully.", HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>("Failed to save feedback: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PostMapping("/NoonMealKitchenCenter")
public ResponseEntity<?> NoonMealKitchenCenter(
@RequestParam int categoryId,
@RequestParam String NoonMealKitchenAvailableQa,
@RequestParam String NoonMealKitchenAvailableAns,
@RequestParam String GasStoveQa,
@RequestParam String GasStoveAns,
@RequestParam String StoreRoomAvailableQa,
@RequestParam String StoreRoomAvailableAns,
@RequestParam String UtensilsAvailableQa,
@RequestParam String UtensilsAvailableAns,
@RequestParam String SufficientNumberQa,
@RequestParam String SufficientNumberAns,
@RequestParam String BlockageInWashAreaQa,
@RequestParam String BlockageInWashAreaAns,
@RequestParam String SeepageQa,
@RequestParam String SeepageAns,
@RequestParam(required = false) MultipartFile feedPhoto,
@RequestParam(required = false) int school_details_id,
@RequestParam String zone,
@RequestParam String division,
@RequestParam Double latitude,
@RequestParam Double longitude,
@RequestParam String user_id) {
try {
// Call the service method to save feedback
schoolUserActivity.saveNoonMealFeedback(
categoryId,
NoonMealKitchenAvailableQa, NoonMealKitchenAvailableAns,
GasStoveQa, GasStoveAns,
StoreRoomAvailableQa, StoreRoomAvailableAns,
UtensilsAvailableQa, UtensilsAvailableAns,
SufficientNumberQa, SufficientNumberAns,
BlockageInWashAreaQa, BlockageInWashAreaAns,
SeepageQa, SeepageAns,
feedPhoto, school_details_id, zone, division,latitude,longitude,user_id
);
return new ResponseEntity<>("Feedback saved successfully.", HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>("Failed to save feedback: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PostMapping("/Electricity")
public ResponseEntity<?> Electricity(
@RequestParam int categoryId,
@RequestParam String FansAvailableQa,
@RequestParam String FansAvailableAns,
@RequestParam String FansNotAvailableQa,
@RequestParam String FansNotAvailableAns,
@RequestParam String LightsAvailableQa,
@RequestParam String LightsAvailableAns,
@RequestParam String LightsNotAvailableQa,
@RequestParam String LightsNotAvailableAns,
@RequestParam String SwitchBoardQa,
@RequestParam String SwitchBoardAns,
@RequestParam String GenSetQa,
@RequestParam String GenSetAns,
@RequestParam String GenSetconditionQa,
@RequestParam String GenSetconditionAns,
@RequestParam(required = false) MultipartFile feedPhoto,
@RequestParam(required = false) int school_details_id,
@RequestParam String zone,
@RequestParam String division,
@RequestParam double latitude ,
@RequestParam double longitude,
@RequestParam String user_id) {
try {
// Call the service method to save feedback
schoolUserActivity.saveElectricityFeedback(
categoryId,
FansAvailableQa, FansAvailableAns, FansNotAvailableQa, FansNotAvailableAns,
LightsAvailableQa, LightsAvailableAns, LightsNotAvailableQa, LightsNotAvailableAns,
SwitchBoardQa, SwitchBoardAns,
GenSetQa, GenSetAns,GenSetconditionQa,GenSetconditionAns,
feedPhoto, school_details_id, zone, division,latitude,longitude,user_id
);
return new ResponseEntity<>("Feedback saved successfully.", HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>("Failed to save feedback: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PostMapping("/ITAssets")
public ResponseEntity<?> ITAssets(
@RequestParam int categoryId,
@RequestParam String SystemAvailableQa,
@RequestParam String SystemAvailableAns,
@RequestParam String SystemNotAvailableQa,
@RequestParam String SystemNotAvailableAns,
@RequestParam String PrinterAvailableQa,
@RequestParam String PrinterAvailableAns,
@RequestParam String PrinterNotAvailableQa,
@RequestParam String PrinterNotAvailableAns,
@RequestParam String UPSAvailableQa,
@RequestParam String UPSAvailableAns,
@RequestParam String UPSNotAvailableQa,
@RequestParam String UPSNotAvailableAns,
@RequestParam String NetworkAvailableQa,
@RequestParam String NetworkAvailableAns,
@RequestParam String projectorgoodconditionQa,
@RequestParam String projectorgoodconditionAns,
@RequestParam String smartboardgoodconditionQa,
@RequestParam String smartboardgoodconditionAns,
@RequestParam(required = false) MultipartFile feedPhoto,
@RequestParam(required = false) int school_details_id,
@RequestParam String zone,
@RequestParam String division,
@RequestParam Double latitude,
@RequestParam double longitude,
@RequestParam String user_id) {
try {
// Call the service method to save feedback
schoolUserActivity.saveITAssetsFeedback(
categoryId,
SystemAvailableQa, SystemAvailableAns, SystemNotAvailableQa, SystemNotAvailableAns,
PrinterAvailableQa, PrinterAvailableAns, PrinterNotAvailableQa, PrinterNotAvailableAns,
UPSAvailableQa, UPSAvailableAns, UPSNotAvailableQa, UPSNotAvailableAns,
NetworkAvailableQa, NetworkAvailableAns,
projectorgoodconditionQa, projectorgoodconditionAns,
smartboardgoodconditionQa, smartboardgoodconditionAns,
feedPhoto, school_details_id, zone, division,latitude,longitude,user_id
);
return new ResponseEntity<>("Feedback saved successfully.", HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>("Failed to save feedback: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PostMapping("/SeepageSchool")
public ResponseEntity<?> SeepageSchool(
@RequestParam int categoryId,
@RequestParam String SeepageinSchoolQa,
@RequestParam String SeepageinSchoolAns,
@RequestParam String HowmanyLocationsQa,
@RequestParam String HowmanyLocationsAns,
//@RequestParam(required = false) MultipartFile feedPhoto,
@RequestParam(required = false) int school_details_id,
@RequestParam String zone,
@RequestParam String division,
@RequestParam(required = false) Double latitude,
@RequestParam Double longitude,
@RequestParam String user_id) { // Add latitude parameter
try {
// Call the service method to save feedback
schoolUserActivity.saveSeepageSchoolFeedback(
categoryId,
SeepageinSchoolQa, SeepageinSchoolAns,
HowmanyLocationsQa, HowmanyLocationsAns,
school_details_id, zone, division,
latitude,longitude,user_id // Pass latitude to the service
);
return new ResponseEntity<>("Feedback saved successfully.", HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>("Failed to save feedback: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@GetMapping("/subCategories")
public ResponseEntity<List<Map<String, Object>>> getAllSubCategories() {
List<Map<String, Object>> subCategories = schoolUserActivity.getAllSubCategories();
if (subCategories.isEmpty()) {
return ResponseEntity.status(404).body(null); // or use a different response if needed
}
return ResponseEntity.ok(subCategories);
}
@GetMapping("/getschooltype")
public ResponseEntity<Map<String, Object>> getSchoolType(@RequestParam int id) {
Map<String, Object> schoolType = schoolUserActivity.getSchoolTypeById(id);
return ResponseEntity.ok(schoolType);
}
@GetMapping("/get")
public ResponseEntity<List<Map<String, Object>>> getSchoolTypes() {
List<Map<String, Object>> schoolTypes = schoolUserActivity.getAllSchoolTypes();
return ResponseEntity.ok(schoolTypes);
}
@GetMapping("/getcountsdivision")
public ResponseEntity<?> getFeedbackCountByDivision(@RequestParam String division) {
try {
List<Map<String, Object>> feedbackCount = schoolUserActivity.getFeedbackCountByDivision(division);
return ResponseEntity.ok(feedbackCount);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Collections.singletonList("Failed to retrieve feedback count: " + e.getMessage()));
}
}
@GetMapping("/overallreport")
public Map<String, Object> getFeedbackBySchoolId(
@RequestParam int schoolId,
@RequestParam String division,
@RequestParam String zone,
@RequestParam int categoryId,
@RequestParam String fromDate,
@RequestParam String toDate,
@RequestParam String user_id) {
return schoolUserActivity.getFeedbackBySchoolId(schoolId, division, zone, categoryId, fromDate, toDate, user_id);
}
@GetMapping("/feedbackdetails")
public Map<String, Object> getFeedbackByFeedRef(
@RequestParam String feedref,
@RequestParam String user_id) {
return schoolUserActivity.getFeedbackByFeedRef(feedref, user_id);
}
/*
* @GetMapping("/overallreport")
public ResponseEntity<?> getFeedbackBySchoolId(
@RequestParam int schoolId,
@RequestParam String division,
@RequestParam String zone,
@RequestParam int categoryId,
@RequestParam String fromDate,
@RequestParam String toDate,
@RequestParam (required = false) String user_id
) {
try {
List<Map<String, Object>> feedbackList = schoolUserActivity.getFeedbackBySchoolId(schoolId, division, zone, categoryId, fromDate, toDate, user_id);
if (feedbackList.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(Collections.singletonList("No feedback found for the specified parameters."));
}
// Initialize response structure
List<Map<String, Object>> responseList = new ArrayList<>();
// Create a map to store the last inserted data for each question
Map<String, Map<String, Object>> lastInsertedData = new HashMap<>();
// Create a map to store the common data
Map<String, Object> commonData = feedbackList.get(0);
// Retrieve the schoolId from the feedbackList
Integer schoolIdValue = (Integer) feedbackList.get(0).get("schoolId");
// Create a map to store the grouped feedbacks
Map<String, List<Map<String, Object>>> groupedFeedbacks = new HashMap<>();
// Create a set to store the common photos
Set<String> commonPhotos = new HashSet<>();
for (Map<String, Object> feedback : feedbackList) {
String[] questions = ((String) feedback.get("category_questions")).split(",");
String feedbackResponse = (String) feedback.get("feedback");
String feedbackPhotos = (String) feedback.get("feedbackphotos");
if (feedbackPhotos != null && !feedbackPhotos.isEmpty()) {
String[] photos = feedbackPhotos.split(",");
for (String photo : photos) {
commonPhotos.add(photo.trim());
}
}
for (String question : questions) {
question = question.trim();
// Check if the question already exists in the last inserted data map
if (lastInsertedData.containsKey(question)) {
Map<String, Object> existingEntry = lastInsertedData.get(question);
existingEntry.put("feedback", feedbackResponse);
existingEntry.put("feedback_photos", new ArrayList<>(commonPhotos));
} else {
Map<String, Object> newEntry = new HashMap<>();
newEntry.put("feedback", feedbackResponse);
newEntry.put("category_question", question);
newEntry.put("feedback_photos", new ArrayList<>(commonPhotos));
lastInsertedData.put(question, newEntry);
}
}
}
// Create a key for the common data
String key = commonData.get("division") + "_" + commonData.get("cdate") + "_" + commonData.get("zone") + "_" + commonData.get("schoolId") + "_" + commonData.get("school_name") + "_" + commonData.get("category");
// Add the feedbacks to the grouped feedbacks map
if (!groupedFeedbacks.containsKey(key)) {
groupedFeedbacks.put(key, new ArrayList<>());
}
for (Map<String, Object> entry : lastInsertedData.values()) {
groupedFeedbacks.get(key).add(entry);
}
// Create the response list with the grouped feedbacks
for (Map.Entry<String, List<Map<String, Object>>> entry : groupedFeedbacks.entrySet()) {
Map<String, Object> response = new HashMap<>();
String[] parts = entry.getKey().split("_");
response.put("division", parts[0]);
response.put("cdate", parts[1]);
response.put("zone", parts[2]);
response.put("school_details_id", schoolId);
response.put("school_name", parts[4]);
response.put("category", parts[5]);
response.put("feedbacks", entry.getValue());
// Add the common photos to the response
for (Map<String, Object> feedback : (List<Map<String, Object>>) response.get("feedbacks")) {
feedback.put("feedback_photos", new ArrayList<>(commonPhotos));
}
responseList.add(response);
}
// Find which photo belongs to which question
List<String> questions = new ArrayList<>();
for (Map<String, Object> feedback : feedbackList) {
String[] questionArray = ((String) feedback.get("category_questions")).split(",");
questions.addAll(Arrays.asList(questionArray));
}
Map<String, List<String>> questionPhotos = new HashMap<>();
for (String question : questions) {
List<String> photos = getPhotosForQuestion(question, lastInsertedData);
questionPhotos.put(question, photos);
}
return ResponseEntity.ok(responseList);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Collections.singletonList(" Failed to retrieve feedback: " + e.getMessage()));
}
}
*/
private List<String> getPhotosForQuestion(String question, Map<String, Map<String, Object>> lastInsertedData) {
List<String> photos = new ArrayList<>();
for (Map<String, Object> entry : lastInsertedData.values()) {
if (entry.get("category_question").equals(question)) {
photos.addAll((List<String>) entry.get("feedback_photos"));
}
}
return photos;
}
@GetMapping("/categories")
public ResponseEntity<?> getCategories() {
try {
List<Map<String, Object>> categories = schoolUserActivity.getActiveCategories();
return ResponseEntity.ok(categories);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Collections.singletonList("Failed to retrieve categories: " + e.getMessage()));
}
}
@GetMapping("/categorydates")
public ResponseEntity<?> getFeedbackCountByCategoryAndDate(
@RequestParam int categoryId,
@RequestParam String startDate, // Change to String
@RequestParam String endDate,
@RequestParam (required = false) String user_id) { // Change to String
try {
// Define the date formatter
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate start = LocalDate.parse(startDate, formatter);
LocalDate end = LocalDate.parse(endDate, formatter);
List<Map<String, Object>> feedbackCounts = schoolUserActivity.getFeedbackCountByCategoryAndDate(categoryId, start, end, user_id);
if (feedbackCounts.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(Collections.singletonList("No feedback found for the specified category and date range."));
}
return ResponseEntity.ok(feedbackCounts);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Collections.singletonList("Failed to retrieve feedback count: " + e.getMessage()));
}
}
@GetMapping("/divisionschools")
public ResponseEntity<?> getFeedbackCountByDivisionAndSchool(
@RequestParam String division,
@RequestParam String categoryId, // Add categoryId parameter
@RequestParam String fromDate,
@RequestParam String toDate,
@RequestParam (required = false) String user_id
) {
try {
// Define the date formatter
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate from = LocalDate.parse(fromDate, formatter);
LocalDate to = LocalDate.parse(toDate, formatter);
List<Map<String, Object>> feedbackCounts = schoolUserActivity.getFeedbackCountByDivisionAndSchool(division, categoryId, from, to, user_id);
if (feedbackCounts.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(Collections.singletonList("No feedback found for the specified division and date range."));
}
return ResponseEntity.ok(feedbackCounts);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Collections.singletonList("Failed to retrieve feedback count: " + e.getMessage()));
}
}
@GetMapping("/divisionschoolslist")
public ResponseEntity<?> getFeedbackCountByDivisionAndSchoolList(
@RequestParam String schoolId,
@RequestParam String division,
@RequestParam String categoryId, // Add categoryId parameter
@RequestParam String fromDate,
@RequestParam String toDate,
@RequestParam (required = false) String user_id
) {
try {
// Define the date formatter
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate from = LocalDate.parse(fromDate, formatter);
LocalDate to = LocalDate.parse(toDate, formatter);
List<Map<String, Object>> feedbackCounts = schoolUserActivity.getFeedbackCountByDivisionAndSchoolList(division, schoolId, categoryId, from, to, user_id);
if (feedbackCounts.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(Collections.singletonList("No feedback found for the specified division and date range."));
}
return ResponseEntity.ok(feedbackCounts);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Collections.singletonList("Failed to retrieve feedback count: " + e.getMessage()));
}
}
@GetMapping("/myreportlist")
public ResponseEntity<?> getMyReportList(
@RequestParam String categoryId, // Add categoryId parameter
@RequestParam String fromDate,
@RequestParam String toDate,
@RequestParam (required = true) String user_id
) {
try {
// Define the date formatter
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate from = LocalDate.parse(fromDate, formatter);
LocalDate to = LocalDate.parse(toDate, formatter);
List<Map<String, Object>> feedbackCounts = schoolUserActivity.getFeedbackCountSchoolListByUserId(categoryId, from, to, user_id);
if (feedbackCounts.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(Collections.singletonList("No feedback found for the specified division and date range."));
}
return ResponseEntity.ok(feedbackCounts);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Collections.singletonList("Failed to retrieve feedback count: " + e.getMessage()));
}
}
@GetMapping("/zonecatschool")
public ResponseEntity<List<Map<String, Object>>> getFeedbackCountByZoneCat(
@RequestParam String zone,
@RequestParam int categoryId,
@RequestParam String fromDate,
@RequestParam String toDate,
@RequestParam(required = false) String user_id) {
// Parse the date strings to LocalDate
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate from = LocalDate.parse(fromDate, formatter);
LocalDate to = LocalDate.parse(toDate, formatter);
// Call the service method
List<Map<String, Object>> feedbackCounts = schoolUserActivity.getFeedbackCountByZoneCat(zone, categoryId, from, to, user_id);
return ResponseEntity.ok(feedbackCounts);
}
/*
@GetMapping("/zonecatschool")
public ResponseEntity<?> getFeedbackCountByZoneCat(
@RequestParam String zone,
@RequestParam int categoryId,
@RequestParam String fromDate, // Change to String
@RequestParam String toDate,
@RequestParam (required = false) String user_id) { // Change to String
try {
// Define the date formatter for dd-MM-yyyy
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate from = LocalDate.parse(fromDate, formatter);
LocalDate to = LocalDate.parse(toDate, formatter);
List<Map<String, Object>> feedbackCounts = schoolUserActivity.getFeedbackCountByZoneCat(zone, categoryId, from, to, user_id);
if (feedbackCounts.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(Collections.singletonList("No feedback found for the specified zone and date range."));
}
// Assuming all feedback counts have the same division, extract it
String division = feedbackCounts.get(0).get("division").toString();
// Build the response
Map<String, Object> response = new HashMap<>();
response.put("division", division);
// Sum up feedback counts as Long
long totalFeedbackCount = feedbackCounts.stream()
.mapToLong(feedback -> ((Number) feedback.get("feedback_count")).longValue())
.sum();
response.put("feedback_count", totalFeedbackCount);
// Wrap the response in a list
return ResponseEntity.ok(Collections.singletonList(response));
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Collections.singletonList("Failed to retrieve feedback count: " + e.getMessage()));
}
}
*/
@GetMapping("/divisioncatschool")
public ResponseEntity<?> getFeedbackCountByDivCat(
@RequestParam String division,
@RequestParam int categoryId,
@RequestParam String fromDate, // Change to String
@RequestParam String toDate,
@RequestParam (required = false) String user_id) { // Change to String
try {
// Define the date formatter for dd-MM-yyyy
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate from = LocalDate.parse(fromDate, formatter);
LocalDate to = LocalDate.parse(toDate, formatter);
List<Map<String, Object>> feedbackCounts = schoolUserActivity.getFeedbackCountByDivCat(division, categoryId, from, to);
if (feedbackCounts.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(Collections.singletonList("No feedback found for the specified division."));
}
// Create a map to aggregate feedback counts by division
Map<String, Long> aggregatedCounts = new HashMap<>();
for (Map<String, Object> feedback : feedbackCounts) {
String div = (String) feedback.get("division");
Long count = (Long) feedback.get("feedback_count");
// Aggregate feedback counts
aggregatedCounts.put(div, aggregatedCounts.getOrDefault(div, 0L) + count);
}
// Build the response
List<Map<String, Object>> response = new ArrayList<>();
for (Map.Entry<String, Long> entry : aggregatedCounts.entrySet()) {
Map<String, Object> divisionData = new HashMap<>();
divisionData.put("division", entry.getKey());
divisionData.put("feedback_count", entry.getValue());
response.add(divisionData);
}
return ResponseEntity.ok(response);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Collections.singletonList("Failed to retrieve feedback count: " + e.getMessage()));
}
}
@PostMapping("/saveCmSheme")
public ResponseEntity<?> CmSheme(
@RequestParam int categoryId,
@RequestParam String BreakFastQualityQa,
@RequestParam String BreakFastQualityAns,
@RequestParam String CMBFhelpersPresentSchoolQa,
@RequestParam String CMBFhelpersPresentSchoolAns,
@RequestParam String DinningAreaKeptQa,
@RequestParam String DinningAreaKeptAns,
@RequestParam String IsschoolhygienicallyQa,
@RequestParam String IsschoolhygienicallyAns,
@RequestParam(required = false) MultipartFile feedPhoto,
@RequestParam(required = false) int school_details_id,
@RequestParam String zone,
@RequestParam String division,
@RequestParam Double latitude,
@RequestParam double longitude,
@RequestParam String user_id,
@RequestParam (required = false) String question_id
) {
try {
// Call the service method to save feedback
schoolUserActivity.saveCmSheme(
categoryId,
BreakFastQualityQa, BreakFastQualityAns,
CMBFhelpersPresentSchoolQa, CMBFhelpersPresentSchoolAns,
DinningAreaKeptQa, DinningAreaKeptAns,
IsschoolhygienicallyQa, IsschoolhygienicallyAns,
feedPhoto, school_details_id, zone, division,latitude,longitude,user_id,question_id
);
return new ResponseEntity<>("Feedback saved successfully.", HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>("Failed to save feedback: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PostMapping("/saveClusterKitchen")
public ResponseEntity<?> ClusterKitchen(
@RequestParam int categoryId,
@RequestParam String ClusterKitchencleanandneatQa,
@RequestParam String ClusterKitchencleanandneatAns,
@RequestParam String SampleoffoodmaintainedQa,
@RequestParam String SampleoffoodmaintainedAns,
@RequestParam String cookingstaffwearingQa,
@RequestParam String cookingstaffwearingAns,
@RequestParam String fooditemsmatchwiththestockQa ,
@RequestParam String fooditemsmatchwiththestockAns,
@RequestParam String FooditemsusedofgoodqualityQa ,
@RequestParam String FooditemsusedofgoodqualityAns,
@RequestParam(required = false) MultipartFile feedPhoto,
@RequestParam(required = false) int school_details_id,
@RequestParam String zone,
@RequestParam String division,
@RequestParam Double latitude,
@RequestParam double longitude,
@RequestParam String user_id,
@RequestParam (required = false) String question_id
) {
try {
// Call the service method to save feedback
schoolUserActivity.saveClusterKitchen(
categoryId,
ClusterKitchencleanandneatQa, ClusterKitchencleanandneatAns,
SampleoffoodmaintainedQa, SampleoffoodmaintainedAns,
cookingstaffwearingQa, cookingstaffwearingAns,
fooditemsmatchwiththestockQa, fooditemsmatchwiththestockAns,
FooditemsusedofgoodqualityQa,FooditemsusedofgoodqualityAns,
feedPhoto, school_details_id, zone, division,latitude,longitude,user_id,question_id
);
return new ResponseEntity<>("Feedback saved successfully.", HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>("Failed to save feedback: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}

1
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccschools/controller/package-info.java

@ -0,0 +1 @@
package in.gov.chennaicorporation.mobileservice.gccschools.controller;

1
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccschools/package-info.java

@ -0,0 +1 @@
package in.gov.chennaicorporation.mobileservice.gccschools;

1063
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccschools/service/SchoolUserActivity.java
File diff suppressed because it is too large
View File

1
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccschools/service/package-info.java

@ -0,0 +1 @@
package in.gov.chennaicorporation.mobileservice.gccschools.service;

51
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccsos/controller/APIOfficerController.java

@ -118,4 +118,55 @@ public class APIOfficerController {
return officerActivity.getRequestDataById(rescue_id);
}
@GetMapping(value="/getFloodGrandData")
public List<?> getFloodGrandData(
@RequestParam(value="", required = true) String fromDate,
@RequestParam(value="", required = true) String toDate
){
return officerActivity.getFloodGrandData(fromDate,toDate);
}
@GetMapping(value="/getFloodAbsData")
public List<?> getFloodAbsData(
@RequestParam(value="", required = true) String fromDate,
@RequestParam(value="", required = true) String toDate
){
return officerActivity.getFloodAbsData(fromDate,toDate);
}
@GetMapping(value="/getFloodZoneData")
public List<?> getFloodZoneData(
@RequestParam(value="", required = true) String fromDate,
@RequestParam(value="", required = true) String toDate,
@RequestParam(value="", required = true) String categorie,
@RequestParam(value="", required = true) String mode,
@RequestParam(value="", required = false) String status
){
return officerActivity.getFloodZoneData(fromDate,toDate,categorie,mode,status);
}
@GetMapping(value="/getFloodWardData")
public List<?> getFloodWardData(
@RequestParam(value="", required = true) String fromDate,
@RequestParam(value="", required = true) String toDate,
@RequestParam(value="", required = true) String categorie,
@RequestParam(value="", required = true) String mode,
@RequestParam(value="", required = true) String zone,
@RequestParam(value="", required = false) String status
){
return officerActivity.getFloodWardData(fromDate,toDate,categorie,mode,zone,status);
}
@GetMapping(value="/getFloodData")
public List<?> getFloodData(
@RequestParam(value="", required = true) String fromDate,
@RequestParam(value="", required = true) String toDate,
@RequestParam(value="", required = true) String categorie,
@RequestParam(value="", required = true) String mode,
@RequestParam(value="", required = true) String zone,
@RequestParam(value="", required = true) String ward,
@RequestParam(value="", required = false) String status
){
return officerActivity.getFloodData(fromDate,toDate,categorie,mode,zone,ward,status);
}
}

9
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccsos/controller/APIUserController.java

@ -34,12 +34,13 @@ public class APIUserController {
@RequestParam(value="if_any", required = false) String if_any,
@RequestParam(value="land_mark", required = false) String land_mark,
@RequestParam(value="remarks", required = false) String remarks,
@RequestParam(value="loginId", required = false) String loginId
@RequestParam(value="loginId", required = false) String loginId,
@RequestParam(value="mode", required = false) String mode
){
return userActivity.saveRequest(contact_name, contact_number,
latitude, longitude, zone, ward, streetid, streetname,
location_details, request_type, no_of_count, if_any,
land_mark, remarks, loginId);
land_mark, remarks, loginId,mode);
}
@GetMapping(value="/getMyRequest")
@ -57,4 +58,8 @@ public class APIUserController {
return userActivity.getRequestDataById(rescue_id);
}
@GetMapping(value="/getAlert")
public List<?> getAlert(){
return userActivity.getAlert();
}
}

361
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccsos/service/OfficerActivity.java

@ -31,15 +31,16 @@ import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import in.gov.chennaicorporation.mobileservice.gccactivity.service.DateTimeUtil;
@Service
@Service("gccofficialappOfficerActivity")
public class OfficerActivity {
private JdbcTemplate jdbcSOSTemplate;
private final Environment environment;
private String fileBaseUrl;
@Autowired
public void setDataSource(@Qualifier("mysqlGccSOSDataSource") DataSource sosDataSource) {
@ -49,6 +50,7 @@ public class OfficerActivity {
@Autowired
public OfficerActivity(Environment environment) {
this.environment = environment;
this.fileBaseUrl=environment.getProperty("fileBaseUrl");
}
private byte[] compressImage(BufferedImage image, float quality) throws IOException {
@ -635,7 +637,7 @@ public class OfficerActivity {
return result;
}else {
String sqlQuery2 = "SELECT *,CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files', filepath) AS imageUrl "
String sqlQuery2 = "SELECT *,CONCAT('"+fileBaseUrl+"/gccofficialapp/files', filepath) AS imageUrl "
+ "FROM `rescue_officer_update` WHERE rescue_id='"+rescue_id+"'";
List<Map<String, Object>> result2 = jdbcSOSTemplate.queryForList(sqlQuery2);
System.out.println(sqlQuery2);
@ -647,4 +649,357 @@ public class OfficerActivity {
response.put("Data", result);
return Collections.singletonList(response);
}
@Transactional
public List<Map<String, Object>> getFloodGrandData(
String fromDate,
String toDate){
String sqlQuery = "SELECT IFNULL(SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END), 0) AS Pending, "
+ "IFNULL(SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END), 0) AS Completed, "
+ "IFNULL(COUNT(id), 0) AS Register FROM rescue "
+ "WHERE DATE(cdate) BETWEEN STR_TO_DATE('"+fromDate+"', '%d-%m-%Y') AND STR_TO_DATE('"+toDate+"', '%d-%m-%Y')";
List<Map<String, Object>> result = jdbcSOSTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", "success");
response.put("message", "Request Information");
response.put("Data", result);
return Collections.singletonList(response);
}
@Transactional
public List<Map<String, Object>> getFloodAbsData(String fromDate, String toDate) {
String sqlQuery = "SELECT IFNULL(SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END), 0) AS Pending, "
+ "IFNULL(SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END), 0) AS Completed, "
+ "IFNULL(COUNT(id), 0) AS Requested "
+ "FROM rescue "
+ "WHERE DATE(cdate) BETWEEN STR_TO_DATE('" + fromDate + "', '%d-%m-%Y') AND STR_TO_DATE('" + toDate + "', '%d-%m-%Y')";
List<Map<String, Object>> result = jdbcSOSTemplate.queryForList(sqlQuery);
if (result.isEmpty()) {
return result;
}
Map<String, Object> response = new HashMap<>();
Map<String, Object> dataMap = new HashMap<>();
dataMap.putAll(result.get(0));
// Categories: Medical, Food, Rescue
String[] categories = {"Medical", "Food", "Rescue"};
String[] modes = {"1913", "whatsapp", "nca"};
for (String category : categories) {
Map<String, List<Map<String, Object>>> categoryData = new HashMap<>();
int categoryTotalPending = 0;
int categoryTotalCompleted = 0;
int categoryTotalRequested = 0;
for (String mode : modes) {
String sqlCategoryQuery = "SELECT IFNULL(SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END), 0) AS Pending, "
+ "IFNULL(SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END), 0) AS Completed, "
+ "IFNULL(COUNT(id), 0) AS Requested "
+ "FROM rescue WHERE `modeofcomplient` = '" + mode + "' AND `request_type` = '" + category + "' "
+ "AND DATE(cdate) BETWEEN STR_TO_DATE('" + fromDate + "', '%d-%m-%Y') AND STR_TO_DATE('" + toDate + "', '%d-%m-%Y')";
List<Map<String, Object>> modeResult = jdbcSOSTemplate.queryForList(sqlCategoryQuery);
//categoryData.put(mode, modeResult);
if (!modeResult.isEmpty()) {
Map<String, Object> modeData = modeResult.get(0);
categoryData.put(mode, Collections.singletonList(modeData));
// Update totals for the category
categoryTotalPending += ((Number) modeData.get("Pending")).intValue();
categoryTotalCompleted += ((Number) modeData.get("Completed")).intValue();
categoryTotalRequested += ((Number) modeData.get("Requested")).intValue();
}else {
// If there's no data for the current mode, add a default entry
Map<String, Object> defaultModeData = new HashMap<>();
defaultModeData.put("Pending", 0);
defaultModeData.put("Completed", 0);
defaultModeData.put("Requested", 0);
categoryData.put(mode, Collections.singletonList(defaultModeData));
}
}
// Add the total data for the current category
Map<String, Object> totalData = new HashMap<>();
totalData.put("Pending", categoryTotalPending);
totalData.put("Completed", categoryTotalCompleted);
totalData.put("Requested", categoryTotalRequested);
categoryData.put("Total", Collections.singletonList(totalData));
dataMap.put(category, categoryData);
}
response.put("status", "success");
response.put("message", "Request Information");
response.put("fromDate", fromDate);
response.put("toDate", toDate);
response.put("Data", Collections.singletonList(dataMap));
return Collections.singletonList(response);
}
/*
@Transactional
public List<Map<String, Object>> getFloodZoneData(
String fromDate,
String toDate,
String categorie,
String mode) {
String sqlQuery = "SELECT zone, "
+ "IFNULL(SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END), 0) AS Pending, "
+ "IFNULL(SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END), 0) AS Completed, "
+ "IFNULL(COUNT(id), 0) AS Register "
+ "FROM rescue "
+ "WHERE `request_type` = ? "
+ "AND `modeofcomplient` = ? "
+ "AND DATE(cdate) BETWEEN STR_TO_DATE(?, '%d-%m-%Y') AND STR_TO_DATE(?, '%d-%m-%Y') "
+ "GROUP BY zone";
List<Map<String, Object>> result = jdbcSOSTemplate.queryForList(
sqlQuery, new Object[]{categorie, mode, fromDate, toDate});
Map<String, Object> response = new HashMap<>();
if (result.isEmpty()) {
response.put("Data", Collections.emptyList());
} else {
response.put("Data", result);
}
response.put("status", "success");
response.put("message", "Request Information");
response.put("fromDate", fromDate);
response.put("toDate", toDate);
response.put("categorie", categorie);
response.put("mode", mode);
return Collections.singletonList(response);
}
*/
@Transactional
public List<Map<String, Object>> getFloodZoneData(
String fromDate,
String toDate,
String categorie,
String mode,
String status) {
String whereStatus="";
String whereMode="";
// Check if the status is provided and is either "0" or "1"
if ("0".equals(status) || "1".equals(status)) {
whereStatus = "AND `status` = '"+status+"' ";
}
if ("Total".equals(mode) || "Total".equals(mode)) {
whereMode = "AND `modeofcomplient` <> ? ";
}
else {
whereMode = "AND `modeofcomplient` = ? ";
}
String sqlQuery = "SELECT zone, "
+ "IFNULL(SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END), 0) AS Pending, "
+ "IFNULL(SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END), 0) AS Completed, "
+ "IFNULL(COUNT(id), 0) AS Register "
+ "FROM rescue "
+ "WHERE `request_type` = ? "
+ whereMode
+ "AND DATE(cdate) BETWEEN STR_TO_DATE(?, '%d-%m-%Y') AND STR_TO_DATE(?, '%d-%m-%Y') "
+ whereStatus
+ "GROUP BY zone";
List<Map<String, Object>> result = jdbcSOSTemplate.queryForList(
sqlQuery, new Object[]{categorie, mode, fromDate, toDate});
Map<String, Object> response = new HashMap<>();
int totalPending = 0;
int totalCompleted = 0;
int totalRegister = 0;
if (!result.isEmpty()) {
for (Map<String, Object> zoneData : result) {
totalPending += ((Number) zoneData.get("Pending")).intValue();
totalCompleted += ((Number) zoneData.get("Completed")).intValue();
totalRegister += ((Number) zoneData.get("Register")).intValue();
}
}
// Add totals
Map<String, Object> totalData = new HashMap<>();
totalData.put("Pending", totalPending);
totalData.put("Completed", totalCompleted);
totalData.put("Register", totalRegister);
response.put("Data", result);
response.put("Total", totalData);
response.put("status", "success");
response.put("message", "Request Information");
response.put("fromDate", fromDate);
response.put("toDate", toDate);
response.put("categorie", categorie);
response.put("mode", mode);
return Collections.singletonList(response);
}
/*
@Transactional
public List<Map<String, Object>> getFloodWardData(
String fromDate,
String toDate,
String categorie,
String mode,
String zone) {
String sqlQuery = "SELECT ward, "
+ "IFNULL(SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END), 0) AS Pending, "
+ "IFNULL(SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END), 0) AS Completed, "
+ "IFNULL(COUNT(id), 0) AS Register "
+ "FROM rescue "
+ "WHERE `request_type` = ? "
+ "AND `modeofcomplient` = ? "
+ "AND `zone` = ? "
+ "AND DATE(cdate) BETWEEN STR_TO_DATE(?, '%d-%m-%Y') AND STR_TO_DATE(?, '%d-%m-%Y') "
+ "GROUP BY ward";
List<Map<String, Object>> result = jdbcSOSTemplate.queryForList(
sqlQuery, new Object[]{categorie, mode, zone, fromDate, toDate});
Map<String, Object> response = new HashMap<>();
if (result.isEmpty()) {
response.put("Data", Collections.emptyList());
} else {
response.put("Data", result);
}
response.put("status", "success");
response.put("message", "Request Information");
response.put("fromDate", fromDate);
response.put("toDate", toDate);
response.put("categorie", categorie);
response.put("mode", mode);
response.put("zone", zone);
return Collections.singletonList(response);
}*/
@Transactional
public List<Map<String, Object>> getFloodWardData(
String fromDate,
String toDate,
String categorie,
String mode,
String zone,
String status) {
String whereStatus="";
String whereMode="";
// Check if the status is provided and is either "0" or "1"
if ("0".equals(status) || "1".equals(status)) {
whereStatus = "AND `status` = '"+status+"' ";
}
if ("Total".equals(mode) || "Total".equals(mode)) {
whereMode = "AND `modeofcomplient` <> ? ";
}
else {
whereMode = "AND `modeofcomplient` = ? ";
}
String sqlQuery = "SELECT ward, "
+ "IFNULL(SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END), 0) AS Pending, "
+ "IFNULL(SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END), 0) AS Completed, "
+ "IFNULL(COUNT(id), 0) AS Register "
+ "FROM rescue "
+ "WHERE `request_type` = ? "
+ whereMode
+ "AND `zone` = ? "
+ "AND DATE(cdate) BETWEEN STR_TO_DATE(?, '%d-%m-%Y') AND STR_TO_DATE(?, '%d-%m-%Y') "
+ whereStatus
+ "GROUP BY ward";
List<Map<String, Object>> result = jdbcSOSTemplate.queryForList(
sqlQuery, new Object[]{categorie, mode, zone, fromDate, toDate});
Map<String, Object> response = new HashMap<>();
int totalPending = 0;
int totalCompleted = 0;
int totalRegister = 0;
if (!result.isEmpty()) {
for (Map<String, Object> wardData : result) {
totalPending += ((Number) wardData.get("Pending")).intValue();
totalCompleted += ((Number) wardData.get("Completed")).intValue();
totalRegister += ((Number) wardData.get("Register")).intValue();
}
}
// Add totals
Map<String, Object> totalData = new HashMap<>();
totalData.put("Pending", totalPending);
totalData.put("Completed", totalCompleted);
totalData.put("Register", totalRegister);
response.put("Data", result);
response.put("Total", totalData);
response.put("status", "success");
response.put("message", "Request Information");
response.put("fromDate", fromDate);
response.put("toDate", toDate);
response.put("categorie", categorie);
response.put("mode", mode);
response.put("zone", zone);
return Collections.singletonList(response);
}
@Transactional
public List<Map<String, Object>> getFloodData(
String fromDate,
String toDate,
String categorie,
String mode,
String zone,
String ward,
String status) {
String whereStatus="";
String whereMode="";
// Check if the status is provided and is either "0" or "1"
if ("0".equals(status) || "1".equals(status)) {
whereStatus = "AND `status` = '"+status+"' ";
}
if ("Total".equals(mode) || "Total".equals(mode)) {
whereMode = "AND `modeofcomplient` <> ? ";
}
else {
whereMode = "AND `modeofcomplient` = ? ";
}
String sqlQuery = "SELECT * "
+ "FROM rescue "
+ "WHERE `request_type` = ? "
+ whereMode
+ "AND `zone` = ? "
+ "AND `ward` = ? "
+ whereStatus
+ "AND DATE(cdate) BETWEEN STR_TO_DATE(?, '%d-%m-%Y') AND STR_TO_DATE(?, '%d-%m-%Y') ";
List<Map<String, Object>> result = jdbcSOSTemplate.queryForList(
sqlQuery, new Object[]{categorie, mode, zone, ward ,fromDate, toDate});
Map<String, Object> response = new HashMap<>();
if (result.isEmpty()) {
response.put("Data", Collections.emptyList());
} else {
response.put("Data", result);
}
response.put("status", "success");
response.put("message", "Request Information");
response.put("fromDate", fromDate);
response.put("toDate", toDate);
response.put("categorie", categorie);
response.put("mode", mode);
response.put("zone", zone);
response.put("ward", ward);
return Collections.singletonList(response);
}
}

37
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccsos/service/UserActivity.java

@ -43,6 +43,7 @@ public class UserActivity {
private JdbcTemplate jdbcSOSTemplate;
private final Environment environment;
private String fileBaseUrl;
@Autowired
public void setDataSource(@Qualifier("mysqlGccSOSDataSource") DataSource sosDataSource) {
@ -52,6 +53,7 @@ public class UserActivity {
@Autowired
public UserActivity(Environment environment) {
this.environment = environment;
this.fileBaseUrl=environment.getProperty("fileBaseUrl");
}
private byte[] compressImage(BufferedImage image, float quality) throws IOException {
@ -75,6 +77,31 @@ public class UserActivity {
return byteArrayOutputStream.toByteArray();
}
@Transactional
public List<Map<String, Object>> getAlert(){
String alertQuery ="";
alertQuery="SELECT "
+ " `id`,"
+ " `name`,"
+ " `color`,"
+ " DATE_FORMAT(`fromdate`, '%d-%m-%Y') AS `fromdate`,"
+ " DATE_FORMAT(`todate`, '%d-%m-%Y') AS `todate`,"
+ " `isactive`,"
+ " `isdelete` "
+ "FROM "
+ " `alerts` "
+ "WHERE isactive=1 AND isdelete=0 LIMIT 1";
List<Map<String, Object>> result = jdbcSOSTemplate.queryForList(alertQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", "success");
response.put("message", "Request Information");
response.put("Data", result);
return Collections.singletonList(response);
}
@Transactional
public List<Map<String, Object>> saveRequest(
String contact_name,
@ -91,7 +118,8 @@ public class UserActivity {
String if_any,
String land_mark,
String remarks,
String loginId
String loginId,
String mode
) {
List<Map<String, Object>> result=null;
Map<String, Object> response = new HashMap<>();
@ -99,8 +127,8 @@ public class UserActivity {
String sqlQuery = "INSERT INTO `rescue`(`contact_name`, `contact_number`, `latitude`, `longitude`, `zone`, `ward`, "
+ "`streetid`, `streetname`, `location_details`, `request_type`, `no_of_count`, `if_any`, `land_mark`, "
+ "`remarks`, `user_id`) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
+ "`remarks`, `user_id`,`modeofcomplient`) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
@ -124,6 +152,7 @@ public class UserActivity {
ps.setString(13, land_mark);
ps.setString(14, remarks);
ps.setString(15, loginId);
ps.setString(16, mode);
return ps;
}
}, keyHolder);
@ -208,7 +237,7 @@ public class UserActivity {
return result;
}else {
String sqlQuery2 = "SELECT *,CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files', filepath) AS imageUrl "
String sqlQuery2 = "SELECT *,CONCAT('"+fileBaseUrl+"/gccofficialapp/files', filepath) AS imageUrl "
+ "FROM `rescue_officer_update` WHERE rescue_id='"+rescue_id+"'";
List<Map<String, Object>> result2 = jdbcSOSTemplate.queryForList(sqlQuery2);
System.out.println(sqlQuery2);

869
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccstraydogs/controller/UserApiController.java

@ -0,0 +1,869 @@
package in.gov.chennaicorporation.mobileservice.gccstraydogs.controller;
import jakarta.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Map;
import org.hibernate.internal.build.AllowSysOut;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.InputStreamResource;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import in.gov.chennaicorporation.mobileservice.gccstraydogs.service.UserService;
@RequestMapping("/gccofficialapp/api/gccstraydogs/user/")
@RestController("gccofficialappUserStraydogRest")
public class UserApiController {
@Autowired
private UserService userService;
@PostMapping("/step1")
public ResponseEntity<Map<String, Object>> saveStep1(@RequestParam("qr_id") String qr_id,
@RequestParam("userid_1") String userid_1, @RequestParam("date1") String date1,
@RequestParam("lat_1") String lat_1, @RequestParam("long_1") String long_1,
@RequestParam("location_1") String location_1, @RequestParam("zone_1") String zone_1,
@RequestParam("ward_1") String ward_1, @RequestParam("streetid_1") String streetid_1,
@RequestParam(value = "streetname_1", required = false, defaultValue = "-") String streetname_1,
@RequestParam("photo1") MultipartFile photo1, @RequestParam("sex_1") String sex_1,
@RequestParam("contraception_1") boolean contraception_1,
@RequestParam("flow_location") boolean flow_location) {
try {
int stage = 1;
Timestamp date_1 = Timestamp.valueOf(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(date1)));
Map<String, Object> response = new HashMap<>();
String result = userService.checkQrId(qr_id);
if (result.equalsIgnoreCase("false")) {
String step = userService.saveStep1(qr_id, userid_1, date_1, lat_1, long_1, location_1, zone_1, ward_1,
streetid_1, streetname_1, photo1, sex_1, contraception_1, stage, flow_location);
response.put("status", "OK");
response.put("QR_id", qr_id);
response.put("Step", step);
} else {
response.put("Message", "Provided QRID = " + qr_id + " already exists");
response.put("QR_id", qr_id);
}
return ResponseEntity.ok(response);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("status", "ERROR", "message", "Error saving Step_1: " + e.getMessage()));
}
}
@GetMapping(value = "/getABCCenter")
public List<?> getAlert(@RequestParam(value = "latitude", required = false) String latitude,
@RequestParam(value = "longitude", required = false) String longitude) {
return userService.getABCCenter(latitude, longitude);
}
@GetMapping(value = "/getABCCenterList")
public List<?> getABCCenterList() {
return userService.getABCCenterList();
}
@PostMapping("/step2")
public ResponseEntity<Map<String, Object>> saveStep2(@RequestParam("qr_id") String qr_id,
@RequestParam("userid_2") String userid_2, @RequestParam("date2") String date2,
@RequestParam("lat_2") String lat_2, @RequestParam("long_2") String long_2,
@RequestParam("location_2") String location_2,
@RequestParam(value = "zone_2", required = false, defaultValue = "-") String zone_2,
@RequestParam(value = "ward_2", required = false, defaultValue = "-") String ward_2,
@RequestParam(value = "streetid_2", required = false, defaultValue = "-") String streetid_2,
@RequestParam(value = "streetname_2", required = false, defaultValue = "-") String streetname_2,
@RequestParam("abc_center_2") String abc_center_2, @RequestParam("photo2") MultipartFile photo2,
@RequestParam("sex_2") String sex_2, @RequestParam("contraception_2") boolean contraception_2) {
try {
int stage = 2;
Timestamp date_2 = Timestamp.valueOf(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(date2)));
// String photo_2 = photo2.getOriginalFilename();
String step = userService.saveStep2(qr_id, userid_2, date_2, lat_2, long_2, location_2, zone_2, ward_2,
streetid_2, streetname_2, abc_center_2, photo2, sex_2, contraception_2, stage);
// Prepare and return the response
Map<String, Object> response = new HashMap<>();
response.put("status", "OK");
response.put("QR_id", qr_id);
response.put("Step", step);
return ResponseEntity.ok(response);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("status", "ERROR", "message", "Error saving Step_2: " + e.getMessage()));
}
}
@PostMapping("/step3")
public ResponseEntity<Map<String, Object>> saveStep3(@RequestParam("qr_id") String qr_id,
@RequestParam("rf_id") String rf_id, @RequestParam("userid_3") String userid_3,
@RequestParam("sex_3") String sex_3, @RequestParam("body_weight_3") String body_weight_3,
@RequestParam("temperature_3") String temperature_3,
@RequestParam("surgery_fitness_3") boolean surgery_fitness_3,
@RequestParam("surgery_type_3") String surgery_type_3) {
int stage = 0;
String step = "";
String qrid = "";
Timestamp surgery_date = new Timestamp(new Date().getTime()); // Current timestamp
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formattedDate = sdf.format(surgery_date);
// Fetch logs using rf_id
List<Map<String, Object>> data = userService.getlogsrfid(rf_id);
Map<String, Object> response = new HashMap<>();
if (data != null && !data.isEmpty()) {
for (Map<String, Object> map : data) {
if (map.get("date_5") != null) {
int days = userService.getVaccineDue(rf_id, formattedDate);
if (days == 99999) {
} else if (days <= 10) {
stage = 5;
step = userService.updateStage(rf_id, qr_id, stage);
} else {
stage = 6;
step = userService.updateStage(rf_id, qr_id, stage);
}
// response.put("ARV_Expiry", Integer.toString(days));
// response.put("DHPPI_Expiry", Integer.toString(days));
}
}
String qrIDD = userService.updateStage3(rf_id, qr_id);
} else {
if (surgery_fitness_3) {
stage = 4;
} else {
stage = 5;
}
step = userService.updateStage(rf_id, qr_id, stage);
qrid = userService.saveStep3(qr_id, rf_id, userid_3, sex_3, body_weight_3, temperature_3,
surgery_fitness_3, surgery_type_3, surgery_date);
}
// Create response
response.put("QR_id", qr_id);
response.put("RF_id", rf_id);
response.put("Step", step);
response.put("status", "OK");
return ResponseEntity.ok(response);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("status", "ERROR", "message", "Error saving Step_3: " + e.getMessage()));
}
}
@PostMapping("/step4")
public ResponseEntity<Map<String, Object>> saveStep4(@RequestParam("rf_id") String rf_id,
@RequestParam("qr_id") String qr_id, @RequestParam("userid_4") String userid_4,
@RequestParam("surgery_complication_4") boolean surgery_complication_4,
@RequestParam("complication_type_4") String complication_type_4,
@RequestParam("ready_to_release_4") boolean ready_to_release_4) {
try {
int stage = 0;
if (ready_to_release_4) {
stage = 5; // Assuming stage is hardcoded to 5 for Step 4
} else {
stage = 0;
}
String qrid = userService.saveStep4(qr_id, rf_id, userid_4, surgery_complication_4, complication_type_4,
ready_to_release_4);
String step = userService.updateStage(rf_id, qr_id, stage);
// Prepare response
Map<String, Object> response = new HashMap<>();
response.put("QR_id", qrid);
response.put("RF_id", rf_id);
response.put("Step", step);
response.put("status", "OK");
return ResponseEntity.ok(response);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("status", "ERROR", "message", "Error saving Step 4: " + e.getMessage()));
}
}
@PostMapping("/step5")
public ResponseEntity<Map<String, Object>> saveStep5(@RequestParam("rf_id") String rf_id,
@RequestParam("qr_id") String qr_id, @RequestParam("userid_5") String userid_5,
@RequestParam("arv_5") boolean arv_5, @RequestParam("dhppi_5") boolean dhppi_5,
@RequestParam("photo_5") MultipartFile photo_5, @RequestParam("lat_5") String lat_5,
@RequestParam("long_5") String long_5, @RequestParam("location_5") String location_5,
@RequestParam("zone_5") String zone_5, @RequestParam("ward_5") String ward_5,
@RequestParam(value = "streetid_5", required = false, defaultValue = "-") String streetid_5,
@RequestParam(value = "streetname_5", required = false, defaultValue = "-") String streetname_5,
@RequestParam("date_5") String date_5) {
try {
int stage = 6; // Assuming stage is set to 6 for Step 5
Timestamp date5 = parseDate(date_5);
int days = userService.getVaccineDue(rf_id, date5.toString());
Map<String, Object> response = new HashMap<>();
String qrid;
String step;
if (days <= 10 && days != 99999) {
qrid = userService.saveNewStep5(rf_id, qr_id, userid_5, arv_5, dhppi_5, photo_5, lat_5, long_5,
location_5, zone_5, ward_5, streetid_5, date5);
step = userService.updateStage(rf_id, qr_id, stage);
response.put("status", "OK");
response.put("Qr_id", qrid);
response.put("Step", step);
} else if (days > 10 && days != 99999) {
qrid = userService.saveUpdateStep5(rf_id, qr_id, userid_5, arv_5, dhppi_5, photo_5, lat_5, long_5,
location_5, zone_5, ward_5, streetid_5, streetname_5, date5);
step = userService.updateStage(rf_id, qr_id, stage);
response.put("status", "OK");
response.put("Qr_id", qrid);
response.put("Step", step);
} else if (days == 99999) {
response.put("status", "Provided RFID = " + rf_id + " is wrong");
response.put("Rf_id", rf_id);
}
return ResponseEntity.ok(response);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("status", "ERROR", "message", "Error saving Step 5: " + e.getMessage()));
}
}
private Timestamp parseDate(String dateStr) throws ParseException {
SimpleDateFormat inputFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = inputFormat.parse(dateStr);
return Timestamp.valueOf(outputFormat.format(date));
}
@PostMapping("/step6")
public ResponseEntity<Map<String, Object>> saveStep6(@RequestParam("qr_id") String qr_id,
@RequestParam("userid_6") String userid_6, @RequestParam("lat_6") String lat_6,
@RequestParam("long_6") String long_6, @RequestParam("location_6") String location_6,
@RequestParam("zone_6") String zone_6, @RequestParam("ward_6") String ward_6,
@RequestParam("streetid_6") String streetid_6,
@RequestParam(value = "streetname_6", required = false, defaultValue = "-") String streetname_6,
@RequestParam("date_6") String date_6, @RequestParam("photo_6") MultipartFile photo_6) {
try {
int stage = 0; // Assuming stage 0 is a valid value, adjust as needed
Timestamp date6 = parseDate(date_6);
// String photoFilename = photo_6.getOriginalFilename(); // Retrieve the
// filename of the uploaded photo
String step = userService.saveStep6(qr_id, userid_6, lat_6, long_6, location_6, zone_6, ward_6, streetid_6,
streetname_6, date6, photo_6, stage);
Map<String, Object> response = new HashMap<>();
response.put("status", "OK");
response.put("Qr_id", qr_id);
response.put("Step", step);
return ResponseEntity.ok(response);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("status", "ERROR", "message", "Error saving Step 6: " + e.getMessage()));
}
}
private Timestamp parseDate1(String dateStr) throws ParseException {
SimpleDateFormat inputFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = inputFormat.parse(dateStr);
return Timestamp.valueOf(outputFormat.format(date));
}
@GetMapping("/getMasterData")
public ResponseEntity<Map<String, Object>> getMasterData(@RequestParam String rf_id) {
try {
List<Map<String, Object>> data = userService.getMasterData(rf_id);
Map<String, Object> response = new HashMap<>();
Timestamp surgery_date = new Timestamp(new Date().getTime()); // Current timestamp
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formattedDate = sdf.format(surgery_date);
int days = userService.getVaccineDue(rf_id, formattedDate);
if (!data.isEmpty() && days != 99999) {
for (Map<String, Object> map : data) {
map.put("ARV_Expiry", days);
map.put("DHPPI_Expiry", days);
}
response.put("status", "OK");
response.put("data", data);
} else {
response.put("status", "Failed");
response.put("message", "No Data Found");
}
return ResponseEntity.ok(response);
} catch (Exception e) {
// Log the exception details for debugging
e.printStackTrace();
// Provide a user-friendly error message
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("status", "Error", "message", "Error getting data: " + e.getMessage()));
}
}
@GetMapping("/getLogData")
public ResponseEntity<Map<String, Object>> getLogData(@RequestParam String qr_id) {
try {
List<Map<String, Object>> data = userService.getLogData(qr_id);
Map<String, Object> response = new HashMap<>();
if (data.size() != 0) {
response.put("status", "OK");
response.put("data", data);
} else {
// response.put("status", "Failed");
// response.put("data", "No Data Found");
}
return ResponseEntity.ok(response);
} catch (Exception e) {
// Log the exception details for debugging
e.printStackTrace();
// Provide a user-friendly error message
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("status", "Error", "message", "Error getting data: " + e.getMessage()));
}
}
// Get Overall Data
@GetMapping("getoveralldata")
public ResponseEntity<Map<String, Object>> getOverallData(@RequestParam String fromDate,
@RequestParam String toDate) {
Map<String, Object> response = new HashMap<>();
List<Map<String, Object>> result = userService.getOverallData(fromDate, toDate);
if (!result.isEmpty()) {
response.put("Message", "success");
response.put("Data", result);
} else {
response.put("Message", "Failed");
}
return ResponseEntity.ok().body(response);
}
// Get Overall Catched Data
@GetMapping("getoverallcatcheddata")
public List<Map<String, Object>> getoverallcatcheddata(@RequestParam String fromDate, @RequestParam String toDate) {
return userService.getoverallcatcheddata(fromDate, toDate);
}
// Get Overall Released Data
@GetMapping("getoverallreleaseddata")
public List<Map<String, Object>> getoverallreleaseddata(@RequestParam String fromDate,
@RequestParam String toDate) {
return userService.getoverallreleaseddata(fromDate, toDate);
}
// Get AbcCenterwiseData
@GetMapping("getAbcCenterwiseData")
public ResponseEntity<Map<String, Object>> getAbcCenterwiseData(@RequestParam String fromDate,
@RequestParam String toDate, @RequestParam String abcCenter) {
Map<String, Object> response = new HashMap<>();
List<Map<String, Object>> result = userService.getAbcCenterwiseData(fromDate, toDate, abcCenter);
if (!result.isEmpty()) {
response.put("Message", "success");
response.put("Data", result);
} else {
response.put("Message", "Failed");
}
return ResponseEntity.ok().body(response);
}
// Unstrelized
//Get Unstrelized zone breakup
@GetMapping("getUnstrelizedZoneBreakup")
public List<Map<String, Object>> getUnstrelizedZoneBreakup(@RequestParam String fromDate,
@RequestParam String toDate, @RequestParam String abcCenter) {
return userService.getUnstrelizedZoneBreakup(fromDate, toDate, abcCenter);
}
// Get Unstrelized division breakup
@GetMapping("getUnstrelizedDivisionBreakup")
public List<Map<String, Object>> getUnstrelizedDivisionBreakup(@RequestParam String fromDate,
@RequestParam String toDate, @RequestParam String abcCenter, @RequestParam String zone) {
return userService.getUnstrelizedDivisionBreakup(fromDate, toDate, abcCenter, zone);
}
// Get Unstrelized street breakup
@GetMapping("getUnstrelizedStreetBreakup")
public List<Map<String, Object>> getUnstrelizedStreetBreakup(@RequestParam String fromDate,
@RequestParam String toDate, @RequestParam String abcCenter, @RequestParam String ward,
@RequestParam String zone) {
return userService.getUnstrelizedStreetBreakup(ward, fromDate, toDate, abcCenter, zone);
}
// Get Unstrelized dogs breakup
@GetMapping("getUnstrelizedDogsBreakup")
public Map<String, Object> getUnstrelizedDogsBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter, @RequestParam String ward, @RequestParam String zone,
@RequestParam String streetID, @RequestParam String sex) {
Map<String, Object> response = new LinkedHashMap<>();
try {
List<Map<String, Object>> data = userService.getUnstrelizedDogsBreakup(ward, fromDate, toDate, abcCenter,
zone, streetID, sex);
Map<String, List<Map<String, Object>>> groupedData = new LinkedHashMap<>();
for (Map<String, Object> record : data) {
String rfId = (String) record.get("rf_id");
groupedData.putIfAbsent(rfId, new ArrayList<>());
groupedData.get(rfId).add(record);
}
List<Map<String, Object>> list1 = new ArrayList<>();
for (Map.Entry<String, List<Map<String, Object>>> entry : groupedData.entrySet()) {
Map<String, Object> object1 = new LinkedHashMap<>();
object1.put("rfid", entry.getKey());
object1.put("rfid_data", entry.getValue());
list1.add(object1);
}
response.put("message", "success");
response.put("data", list1);
return response;
} catch (Exception e) {
e.printStackTrace();
response.put("message", "Error");
response.put("data", "No Data Found");
return response;
}
}
// Strelized
// Get Strelized zone breakup
@GetMapping("getStrelizedZoneBreakup")
public List<Map<String, Object>> geStrelizedZoneBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter) {
return userService.getStrelizedZoneBreakup(fromDate, toDate, abcCenter);
}
// Get Strelized division breakup
@GetMapping("getStrelizedDivisionBreakup")
public List<Map<String, Object>> getStrelizedDivisionBreakup(@RequestParam String fromDate,
@RequestParam String toDate, @RequestParam String abcCenter, @RequestParam String zone) {
return userService.getStrelizedDivisionBreakup(fromDate, toDate, abcCenter, zone);
}
// Get Strelized street breakup
@GetMapping("getStrelizedStreetBreakup")
public List<Map<String, Object>> getStrelizedStreetBreakup(@RequestParam String fromDate,
@RequestParam String toDate, @RequestParam String abcCenter, @RequestParam String ward,
@RequestParam String zone) {
return userService.getStrelizedStreetBreakup(ward, fromDate, toDate, abcCenter, zone);
}
// Get Strelized dogs breakup
@GetMapping("getStrelizedDogsBreakup")
public Map<String, Object> getStrelizedDogsBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter, @RequestParam String ward, @RequestParam String zone,
@RequestParam String streetID, @RequestParam String sex) {
Map<String, Object> response = new LinkedHashMap<>();
try {
List<Map<String, Object>> data = userService.getStrelizedDogsBreakup(ward, fromDate, toDate, abcCenter,
zone, streetID, sex);
Map<String, List<Map<String, Object>>> groupedData = new LinkedHashMap<>();
for (Map<String, Object> record : data) {
String rfId = (String) record.get("rf_id");
groupedData.putIfAbsent(rfId, new ArrayList<>());
groupedData.get(rfId).add(record);
}
List<Map<String, Object>> list1 = new ArrayList<>();
for (Map.Entry<String, List<Map<String, Object>>> entry : groupedData.entrySet()) {
Map<String, Object> object1 = new LinkedHashMap<>();
object1.put("rfid", entry.getKey());
object1.put("rfid_data", entry.getValue());
list1.add(object1);
}
response.put("message", "success");
response.put("data", list1);
return response;
} catch (Exception e) {
e.printStackTrace();
response.put("message", "Error");
response.put("data", "No Data Found");
return response;
}
}
//Unfit
// Get Unfit zone breakup
@GetMapping("getUnfitZoneBreakup")
public List<Map<String, Object>> getUnfitZoneBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter) {
return userService.getUnfitZoneBreakup(fromDate, toDate, abcCenter);
}
// Get Unfit division breakup
@GetMapping("getUnfitDivisionBreakup")
public List<Map<String, Object>> getUnfitDivisionBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter, @RequestParam String zone) {
return userService.getUnfitDivisionBreakup(fromDate, toDate, abcCenter, zone);
}
// Get Unfit street breakup
@GetMapping("getUnfitStreetBreakup")
public List<Map<String, Object>> getUnfitStreetBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter, @RequestParam String ward, @RequestParam String zone) {
return userService.getUnfitStreetBreakup(ward, zone, fromDate, toDate, abcCenter);
}
// Get Unfit dogs breakup
@GetMapping("getUnfitDogsBreakup")
public Map<String, Object> getUnfitDogsBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter, @RequestParam String ward, @RequestParam String zone,
@RequestParam String streetID, @RequestParam String sex) {
Map<String, Object> response = new LinkedHashMap<>();
try {
List<Map<String, Object>> data = userService.getUnfitDogsBreakup(ward, fromDate, toDate, abcCenter, zone,
streetID, sex);
Map<String, List<Map<String, Object>>> groupedData = new LinkedHashMap<>();
for (Map<String, Object> record : data) {
String rfId = (String) record.get("rf_id");
groupedData.putIfAbsent(rfId, new ArrayList<>());
groupedData.get(rfId).add(record);
}
List<Map<String, Object>> list1 = new ArrayList<>();
for (Map.Entry<String, List<Map<String, Object>>> entry : groupedData.entrySet()) {
Map<String, Object> object1 = new LinkedHashMap<>();
object1.put("rfid", entry.getKey());
object1.put("rfid_data", entry.getValue());
list1.add(object1);
}
response.put("message", "success");
response.put("data", list1);
return response;
} catch (Exception e) {
e.printStackTrace();
response.put("message", "Error");
response.put("data", "No Data Found");
return response;
}
}
//Surgery
//Get Surgery zone breakup
@GetMapping("getSurgeryZoneBreakup")
public List<Map<String, Object>> getSurgeryZoneBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter) {
return userService.getSurgeryZoneBreakup(fromDate, toDate, abcCenter);
}
//Get Surgery division breakup
@GetMapping("getSurgeryDivisionBreakup")
public List<Map<String, Object>> getSurgeryDivisionBreakup(@RequestParam String fromDate,
@RequestParam String toDate, @RequestParam String abcCenter, @RequestParam String zone) {
return userService.getSurgeryDivisionBreakup(fromDate, toDate, abcCenter, zone);
}
//Get Surgery street breakup
@GetMapping("getSurgeryStreetBreakup")
public List<Map<String, Object>> getSurgeryStreetBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter, @RequestParam String ward, @RequestParam String zone) {
return userService.getSurgeryStreetBreakup(ward, zone, fromDate, toDate, abcCenter);
}
// Get Surgery dogs breakup
@GetMapping("getSurgeryDogsBreakup")
public Map<String, Object> getSurgeryDogsBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter, @RequestParam String ward, @RequestParam String zone,
@RequestParam String streetID, @RequestParam String sex) {
Map<String, Object> response = new LinkedHashMap<>();
try {
List<Map<String, Object>> data = userService.getSurgeryDogsBreakup(ward, fromDate, toDate, abcCenter, zone,
streetID, sex);
Map<String, List<Map<String, Object>>> groupedData = new LinkedHashMap<>();
for (Map<String, Object> record : data) {
String rfId = (String) record.get("rf_id");
groupedData.putIfAbsent(rfId, new ArrayList<>());
groupedData.get(rfId).add(record);
}
List<Map<String, Object>> list1 = new ArrayList<>();
for (Map.Entry<String, List<Map<String, Object>>> entry : groupedData.entrySet()) {
Map<String, Object> object1 = new LinkedHashMap<>();
object1.put("rfid", entry.getKey());
object1.put("rfid_data", entry.getValue());
list1.add(object1);
}
response.put("message", "success");
response.put("data", list1);
return response;
} catch (Exception e) {
e.printStackTrace();
response.put("message", "Error");
response.put("data", "No Data Found");
return response;
}
}
//Died
//Get Died zone breakup
@GetMapping("getDiedZoneBreakup")
public List<Map<String, Object>> getDiedZoneBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter) {
return userService.getDiedZoneBreakup(fromDate, toDate, abcCenter);
}
//Get Died division breakup
@GetMapping("getDiedDivisionBreakup")
public List<Map<String, Object>> getDiedDivisionBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter, @RequestParam String zone) {
return userService.getDiedDivisionBreakup(fromDate, toDate, abcCenter, zone);
}
//Get Died street breakup
@GetMapping("getDiedStreetBreakup")
public List<Map<String, Object>> getDiedStreetBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter, @RequestParam String ward, @RequestParam String zone) {
return userService.getDiedStreetBreakup(ward, zone, fromDate, toDate, abcCenter);
}
// Get Died dogs breakup
@GetMapping("getDiedDogsBreakup")
public Map<String, Object> getDiedDogsBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter, @RequestParam String ward, @RequestParam String zone,
@RequestParam String streetID, @RequestParam String sex) {
Map<String, Object> response = new LinkedHashMap<>();
try {
List<Map<String, Object>> data = userService.getDiedDogsBreakup(ward, fromDate, toDate, abcCenter, zone,
streetID, sex);
Map<String, List<Map<String, Object>>> groupedData = new LinkedHashMap<>();
for (Map<String, Object> record : data) {
String rfId = (String) record.get("rf_id");
groupedData.putIfAbsent(rfId, new ArrayList<>());
groupedData.get(rfId).add(record);
}
List<Map<String, Object>> list1 = new ArrayList<>();
for (Map.Entry<String, List<Map<String, Object>>> entry : groupedData.entrySet()) {
Map<String, Object> object1 = new LinkedHashMap<>();
object1.put("rfid", entry.getKey());
object1.put("rfid_data", entry.getValue());
list1.add(object1);
}
response.put("message", "success");
response.put("data", list1);
return response;
} catch (Exception e) {
e.printStackTrace();
response.put("message", "Error");
response.put("data", "No Data Found");
return response;
}
}
//Released
//Get Released zone breakup
@GetMapping("getReleasedZoneBreakup")
public List<Map<String, Object>> getReleasedZoneBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter) {
return userService.getReleasedZoneBreakup(fromDate, toDate, abcCenter);
}
//Get Released division breakup
@GetMapping("getReleasedDivisionBreakup")
public List<Map<String, Object>> getReleasedDivisionBreakup(@RequestParam String fromDate,
@RequestParam String toDate, @RequestParam String abcCenter, @RequestParam String zone) {
return userService.getReleasedDivisionBreakup(fromDate, toDate, abcCenter, zone);
}
//Get Released street breakup
@GetMapping("getReleasedStreetBreakup")
public List<Map<String, Object>> getReleasedStreetBreakup(@RequestParam String fromDate,
@RequestParam String toDate, @RequestParam String abcCenter, @RequestParam String ward,
@RequestParam String zone) {
return userService.getReleasedStreetBreakup(ward, zone, fromDate, toDate, abcCenter);
}
// Get Released dogs breakup
@GetMapping("getReleasedDogsBreakup")
public Map<String, Object> getReleasedDogsBreakup(@RequestParam String fromDate, @RequestParam String toDate,
@RequestParam String abcCenter, @RequestParam String ward, @RequestParam String zone,
@RequestParam String streetID, @RequestParam String sex) {
Map<String, Object> response = new LinkedHashMap<>();
try {
List<Map<String, Object>> data = userService.getReleasedDogsBreakup(ward, fromDate, toDate, abcCenter, zone,
streetID, sex);
Map<String, List<Map<String, Object>>> groupedData = new LinkedHashMap<>();
for (Map<String, Object> record : data) {
String rfId = (String) record.get("rf_id");
groupedData.putIfAbsent(rfId, new ArrayList<>());
groupedData.get(rfId).add(record);
}
List<Map<String, Object>> list1 = new ArrayList<>();
for (Map.Entry<String, List<Map<String, Object>>> entry : groupedData.entrySet()) {
Map<String, Object> object1 = new LinkedHashMap<>();
object1.put("rfid", entry.getKey());
object1.put("rfid_data", entry.getValue());
list1.add(object1);
}
response.put("message", "success");
response.put("data", list1);
return response;
} catch (Exception e) {
e.printStackTrace();
response.put("message", "Error");
response.put("data", "No Data Found");
return response;
}
}
// Get List of Zone
@GetMapping("getZoneList")
public ResponseEntity<Map<String, Object>> getZoneList() {
Map<String, Object> response = new HashMap<>();
List<Map<String, Object>> result = userService.getZoneList();
if (!result.isEmpty()) {
response.put("Message", "success");
response.put("Data", result);
} else {
response.put("Message", "Failed");
}
return ResponseEntity.ok().body(response);
}
@GetMapping("/overallExcelReport")
public ResponseEntity<InputStreamResource> overallExcelReport(@RequestParam String fromDate,
@RequestParam String toDate) {
ByteArrayInputStream reportStream = userService.overallExcelReport(fromDate, toDate);
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment; filename=Zonewise_Overall_Report.xlsx");
return ResponseEntity.ok().headers(headers).contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(new InputStreamResource(reportStream));
}
@GetMapping("/abcCenterExcelReport")
public ResponseEntity<InputStreamResource> abcCenterExcelReport(@RequestParam String fromDate,
@RequestParam String toDate, @RequestParam String abcCenter) {
ByteArrayInputStream reportStream = userService.abcCenterExcelReport(fromDate, toDate, abcCenter);
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment; filename=ABC_Centerwise_Report.xlsx");
return ResponseEntity.ok().headers(headers).contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(new InputStreamResource(reportStream));
}
@PostMapping("/saveBuildings")
public ResponseEntity<Map<String, Object>> saveBuildings(@RequestParam("location") String location,
@RequestParam("latitude") String latitude, @RequestParam("longitude") String longitude,
@RequestParam(value = "street_id", required = false) String street_id,
@RequestParam(value = "street_name", required = false) String street_name) {
Map<String, Object> response = new HashMap<>();
try {
if (street_id.equals("") || street_id == null && street_name.equals("") || street_name == null) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
String dateTime = LocalDateTime.now().format(formatter);
street_id = "L_" + dateTime;
street_name = location;
String data = userService.saveBuildings(location, latitude, longitude, street_id, street_name);
} else {
String data = userService.saveBuildings(location, latitude, longitude, street_id, street_name);
}
response.put("Status", "Sucess");
response.put("Message", "Saved Sucessfuly");
return ResponseEntity.ok(response);
} catch (Exception e) {
e.printStackTrace();
response.put("Status", "Error");
response.put("Message", "Failed to Save");
return ResponseEntity.ok(response);
}
}
@GetMapping(value = "/getBuildings")
public List<?> getBuildings(@RequestParam(value = "latitude", required = false) String latitude,
@RequestParam(value = "longitude", required = false) String longitude) {
return userService.getBuildings(latitude, longitude);
}
}

1
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccstraydogs/controller/package-info.java

@ -0,0 +1 @@
package in.gov.chennaicorporation.mobileservice.gccstraydogs.controller;

1
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccstraydogs/package-info.java

@ -0,0 +1 @@
package in.gov.chennaicorporation.mobileservice.gccstraydogs;

1317
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccstraydogs/service/UserService.java
File diff suppressed because it is too large
View File

1
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/gccstraydogs/service/package-info.java

@ -0,0 +1 @@
package in.gov.chennaicorporation.mobileservice.gccstraydogs.service;

3
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/nulm/service/NULMOfficerActivity.java

@ -39,6 +39,7 @@ import in.gov.chennaicorporation.mobileservice.gccactivity.service.DateTimeUtil;
public class NULMOfficerActivity {
private JdbcTemplate jdbcNULMTemplate;
private final Environment environment;
private String fileBaseUrl;
@Autowired
public void setDataSource(@Qualifier("mysqlNulmDataSource") DataSource sosDataSource) {
@ -48,6 +49,7 @@ public class NULMOfficerActivity {
@Autowired
public NULMOfficerActivity(Environment environment) {
this.environment = environment;
this.fileBaseUrl=environment.getProperty("fileBaseUrl");
}
private byte[] compressImage(BufferedImage image, float quality) throws IOException {
@ -206,6 +208,7 @@ public class NULMOfficerActivity {
Map<String, Object> response = new HashMap<>();
int lastQueryId = 0;
String datetimetxt = DateTimeUtil.getCurrentDateTimeMysql(); // Current timestamp
try {

113
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/penalty/controller/APICattleCatchController.java

@ -4,10 +4,14 @@ import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import in.gov.chennaicorporation.mobileservice.penalty.service.CattleCatchService;
@ -17,8 +21,111 @@ public class APICattleCatchController {
@Autowired
private CattleCatchService cattleCatchService;
@GetMapping(value="/getpenaltytypes")
public List<Map<String, Object>> getPenaltyTypes() {
return cattleCatchService.getPenaltyTypeList();
@PostMapping(value="/step1") // Cattle Catch Step 1
public List<?> step1(@RequestParam MultiValueMap<String, String> formData,
@RequestParam(value = "categoryId", required = false) String categoryId,
@RequestParam(value = "latitude", required = false) String latitude,
@RequestParam(value = "longitude", required = false) String longitude,
@RequestParam(value = "zone", required = false) String zone,
@RequestParam(value = "ward", required = false) String ward,
@RequestParam(value = "streeId", required = false) String streeId,
@RequestParam(value = "streetName", required = false) String streetName,
@RequestParam(value = "loginId", required = false) String loginId,
@RequestParam(value = "remarks", required = false) String remarks,
//@RequestParam(value = "isviolatorAvailable", required = false) String isviolatorAvailable,
//@RequestParam(value = "violatorName", required = false) String violatorName,
//@RequestParam(value = "violatorPhone", required = false) String violatorPhone,
//@RequestParam(value = "ton", required = false) String ton,
@RequestParam(value = "file", required = false) MultipartFile file
) {
return cattleCatchService.step1(formData, categoryId, latitude, longitude, zone, ward, streeId,
streetName, loginId,remarks,file);
}
@GetMapping("/step1list")
public List<?> step1list(@RequestParam MultiValueMap<String, String> formData,
@RequestParam(value = "orderid", required = false) String loginId) {
return cattleCatchService.step1list(formData,loginId);
}
@PostMapping(value="/step2") // Move Catched cattle to depot
public List<?> step2(@RequestParam MultiValueMap<String, String> formData,
@RequestParam(value = "cinfoid", required = false) String cinfoid,
@RequestParam(value = "depotid", required = false) String depotid,
@RequestParam(value = "latitude", required = false) String latitude,
@RequestParam(value = "longitude", required = false) String longitude,
@RequestParam(value = "zone", required = false) String zone,
@RequestParam(value = "ward", required = false) String ward,
@RequestParam(value = "streeId", required = false) String streeId,
@RequestParam(value = "streetName", required = false) String streetName,
@RequestParam(value = "loginId", required = false) String loginId,
@RequestParam(value = "remarks", required = false) String remarks,
@RequestParam(value = "file", required = false) MultipartFile file
) {
return cattleCatchService.step2(formData, cinfoid, depotid,latitude, longitude, zone, ward, streeId,
streetName, loginId,remarks,file);
}
@GetMapping("/step2list")
public List<?> step2list(@RequestParam MultiValueMap<String, String> formData,
@RequestParam(value = "orderid", required = false) String orderid) {
return cattleCatchService.step2list(formData,orderid);
}
@PostMapping(value="/step3") // Generate Fine Chellan when Violator is Available
public List<?> generateChallan(@RequestParam MultiValueMap<String, String> formData,
@RequestParam(value = "cinfoids", required = false) String cinfoids,
@RequestParam(value = "latitude", required = false) String latitude,
@RequestParam(value = "longitude", required = false) String longitude,
@RequestParam(value = "zone", required = false) String zone,
@RequestParam(value = "ward", required = false) String ward,
@RequestParam(value = "streeId", required = false) String streeId,
@RequestParam(value = "streetName", required = false) String streetName,
@RequestParam(value = "loginId", required = false) String loginId,
@RequestParam(value = "remarks", required = false) String remarks,
//@RequestParam(value = "isviolatorAvailable", required = false) String isviolatorAvailable,
@RequestParam(value = "violatorName", required = false) String violatorName,
@RequestParam(value = "violatorPhone", required = false) String violatorPhone,
@RequestParam(value = "fineAmount", required = false) String fineAmount,
@RequestParam(value = "file", required = false) MultipartFile file
) {
return cattleCatchService.step3(formData, cinfoids, latitude, longitude, zone, ward, streeId,
streetName, loginId,remarks,violatorName,violatorPhone,fineAmount,file);
}
@GetMapping("/getChallanPOSData")
public List<?> getChallanPOSData(@RequestParam MultiValueMap<String, String> formData,
@RequestParam(value = "orderid", required = false) String orderid,
@RequestParam(value = "loginid", required = true) String loginid) {
return cattleCatchService.getChallanPOSData(formData,orderid,loginid);
}
@PostMapping("/storeBankTransaction")
public List<?> storeBankTransaction(@RequestBody Map<String, Object> transactionData) {
return cattleCatchService.storeBankTransaction(transactionData);
}
@GetMapping("/step3list")
public List<?> step3list(@RequestParam MultiValueMap<String, String> formData,
@RequestParam(value = "loginid", required = true) String loginid) {
return cattleCatchService.step3list(formData,loginid);
}
@PostMapping(value="/step4") // Cattle Catch Step 1
public List<?> generateChallan(@RequestParam MultiValueMap<String, String> formData,
@RequestParam(value = "cinfoid", required = false) String cinfoid,
@RequestParam(value = "latitude", required = false) String latitude,
@RequestParam(value = "longitude", required = false) String longitude,
@RequestParam(value = "zone", required = false) String zone,
@RequestParam(value = "ward", required = false) String ward,
@RequestParam(value = "streeId", required = false) String streeId,
@RequestParam(value = "streetName", required = false) String streetName,
@RequestParam(value = "loginId", required = false) String loginId,
@RequestParam(value = "remarks", required = false) String remarks,
@RequestParam(value = "file", required = false) MultipartFile file
) {
return cattleCatchService.step4(formData, cinfoid, latitude, longitude, zone, ward, streeId,
streetName, loginId,remarks,file);
}
}

6
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/penalty/controller/APIPenaltyController.java

@ -21,8 +21,8 @@ public class APIPenaltyController {
private PenaltyService penaltyService;
@GetMapping(value="/getpenaltytypes")
public List<Map<String, Object>> getPenaltyTypes() {
return penaltyService.getPenaltyTypeList();
public List<Map<String, Object>> getPenaltyTypes(@RequestParam(value = "departmentId", required = false) String departmentId) {
return penaltyService.getPenaltyTypeList(departmentId);
}
@PostMapping(value="/generateChallan")
@ -65,7 +65,7 @@ public class APIPenaltyController {
@RequestParam(value = "file", required = false) MultipartFile file
) {
return penaltyService.updateViolateInfo(formData, challanId, categoryId, latitude, longitude, zone, ward, streeId,
streetName, loginId,remarks,isviolatorAvailable,violatorName,violatorPhone,ton,file);
streetName, loginId, remarks, isviolatorAvailable, violatorName, violatorPhone, ton, file);
}
@GetMapping(value = "/getOfficerChallanList")

96
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/penalty/controller/APIPenaltyControllerPOS.java

@ -0,0 +1,96 @@
package in.gov.chennaicorporation.mobileservice.penalty.controller;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import in.gov.chennaicorporation.mobileservice.penalty.service.PenaltyServicePOS;
@RequestMapping("/gccofficialapp/api/penalty/pos")
@RestController("apiPenaltyPOSRest")
public class APIPenaltyControllerPOS {
@Autowired
private PenaltyServicePOS penaltyServicePOS;
@GetMapping(value="/getPenaltyDepartment")
public List<Map<String, Object>> getPenaltyDepartment(
@RequestParam(value = "loginId", required = false) String loginId
) {
return penaltyServicePOS.getPenaltyDepartment();
}
@GetMapping(value="/getPenaltytypes")
public List<Map<String, Object>> getPenaltyTypes(
@RequestParam(value = "departmentId", required = false) String departmentId,
@RequestParam(value = "loginId", required = false) String loginId) {
return penaltyServicePOS.getPenaltyTypeList(departmentId);
}
@GetMapping(value="/getPenaltyAmount")
public List<Map<String, Object>> getPenaltyAmount(
@RequestParam(value = "categoryId", required = false) String categoryId,
@RequestParam(value = "ton", required = false) String ton,
@RequestParam(value = "loginId", required = false) String loginId
) {
return penaltyServicePOS.getPenaltyAmount(categoryId,ton);
}
@GetMapping(value="/getOfflineModeTypes")
public List<Map<String, Object>> getOfflineModeTypes() {
return penaltyServicePOS.getOfflineModeTypes();
}
@GetMapping(value="/getBankList")
public List<Map<String, Object>> getBankList() {
return penaltyServicePOS.getBankList();
}
@PostMapping(value="/generateChallanPOS")
public List<?> generateChallan(@RequestParam MultiValueMap<String, String> formData,
@RequestParam(value = "categoryId", required = false) String categoryId,
@RequestParam(value = "latitude", required = false) String latitude,
@RequestParam(value = "longitude", required = false) String longitude,
@RequestParam(value = "zone", required = false) String zone,
@RequestParam(value = "ward", required = false) String ward,
@RequestParam(value = "loginId", required = false) String loginId,
@RequestParam(value = "violatorName", required = false) String violatorName,
@RequestParam(value = "violatorPhone", required = false) String violatorPhone,
@RequestParam(value = "ton", required = false) String ton,
@RequestParam(value = "amount", required = false) String amount,
@RequestParam(value = "file", required = false) MultipartFile file
) {
return penaltyServicePOS.generateChallanPOS(formData, categoryId, latitude, longitude, zone, ward,loginId,violatorName,violatorPhone,ton,amount,file);
}
@PostMapping("/storeBankTransaction")
public List<?> storeBankTransaction(@RequestBody Map<String, Object> transactionData) {
return penaltyServicePOS.storeBankTransaction(transactionData);
}
@PostMapping(value="/storeOfflineTransaction")
public List<?> generateChallan(@RequestParam MultiValueMap<String, String> formData,
@RequestParam(value = "transactionResponseStatus", required = false) String transactionResponseStatus,
@RequestParam(value = "bankName", required = false) String bankName,
@RequestParam(value = "transactionAmount", required = false) String transactionAmount,
@RequestParam(value = "txnDate", required = false) String txnDate,
@RequestParam(value = "txnTime", required = false) String txnTime,
@RequestParam(value = "branchname", required = false) String branchname,
@RequestParam(value = "extraInfo", required = false) String extraInfo,
@RequestParam(value = "extraInfo2", required = false) String extraInfo2,
@RequestParam(value = "extraInfo3", required = false) String extraInfo3,
@RequestParam(value = "txnMode", required = false) String txnMode,
@RequestParam(value = "txnId", required = false) String txnId,
@RequestParam(value = "file", required = false) MultipartFile file
) {
return penaltyServicePOS.storeOfflineTransaction(formData, transactionResponseStatus, bankName, transactionAmount, txnDate, txnTime,branchname,extraInfo,extraInfo2,extraInfo3,txnMode,txnId,file);
}
}

781
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/penalty/service/CattleCatchService.java

@ -1,29 +1,800 @@
package in.gov.chennaicorporation.mobileservice.penalty.service;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.SecureRandom;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.env.Environment;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.MultiValueMap;
import org.springframework.web.multipart.MultipartFile;
import in.gov.chennaicorporation.mobileservice.gccactivity.service.DateTimeUtil;
@Service
public class CattleCatchService {
private JdbcTemplate jdbcPenaltyTemplate;
private final Environment environment;
private String fileBaseUrl;
private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
private static final int STRING_LENGTH = 15;
private static final Random RANDOM = new SecureRandom();
@Autowired
public void setDataSource(@Qualifier("mysqlPenaltyDataSource") DataSource penaltyDataSource) {
public void setDataSource(@Qualifier("mysqlCattleCatchDataSource") DataSource penaltyDataSource) {
this.jdbcPenaltyTemplate = new JdbcTemplate(penaltyDataSource);
}
@Autowired
public CattleCatchService(Environment environment) {
this.environment = environment;
this.fileBaseUrl=environment.getProperty("fileBaseUrl");
}
public static String generateRandomString() {
StringBuilder result = new StringBuilder(STRING_LENGTH);
for (int i = 0; i < STRING_LENGTH; i++) {
result.append(CHARACTERS.charAt(RANDOM.nextInt(CHARACTERS.length())));
}
return result.toString();
}
// Function to convert date string from dd-MM-yyyy to yyyy-MM-dd
public static String convertDateFormat(String inputDate, int add) {
// Check if the inputDate is not null or blank
if (inputDate != null && !inputDate.isBlank()) {
try {
// Define the input and output date formats
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// Parse the input date string to LocalDate
LocalDate date = LocalDate.parse(inputDate, inputFormatter);
// Add the specified number of days to the date if 'add' is greater than 0
if (add > 0) {
date = date.plusDays(add);
}
// Format the date to the new format
return date.format(outputFormatter);
} catch (DateTimeParseException e) {
// Handle the case where the input date is invalid
System.out.println("Invalid date format: " + inputDate);
return "";
}
} else {
return "";
}
}
private byte[] compressImage(BufferedImage image, float quality) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream(byteArrayOutputStream);
ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
writer.setOutput(imageOutputStream);
ImageWriteParam param = writer.getDefaultWriteParam();
if (param.canWriteCompressed()) {
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(quality);
}
writer.write(null, new javax.imageio.IIOImage(image, null, null), param);
writer.dispose();
imageOutputStream.close();
return byteArrayOutputStream.toByteArray();
}
public String fileUpload(String name, String id, MultipartFile file) {
int lastInsertId = 0;
// Set the file path where you want to save it
String uploadDirectory = environment.getProperty("file.upload.directory");
String serviceFolderName = environment.getProperty("cattlecatch_foldername");
var year =DateTimeUtil.getCurrentYear();
var month =DateTimeUtil.getCurrentMonth();
uploadDirectory = uploadDirectory + serviceFolderName + year +"/"+month+"/";
try {
// Create directory if it doesn't exist
Path directoryPath = Paths.get(uploadDirectory);
if (!Files.exists(directoryPath)) {
Files.createDirectories(directoryPath);
}
// Datetime string
String datetimetxt = DateTimeUtil.getCurrentDateTime();
// File name
String fileName = name+ "_" +id + "_" + datetimetxt + "_" + file.getOriginalFilename();
fileName = fileName.replaceAll("\\s+", ""); // Remove space on filename
String filePath = uploadDirectory + "/" + fileName;
String filepath_txt = "/"+serviceFolderName + year +"/"+month+"/"+fileName;
// Create a new Path object
Path path = Paths.get(filePath);
// Get the bytes of the file
byte[] bytes = file.getBytes();
// Compress the image
BufferedImage image = ImageIO.read(new ByteArrayInputStream(bytes));
byte[] compressedBytes = compressImage(image, 0.5f); // Compress with 50% quality
// Write the bytes to the file
Files.write(path, compressedBytes);
System.out.println(filePath);
return filepath_txt;
} catch (IOException e) {
e.printStackTrace();
return "Failed to save file " + file.getOriginalFilename();
}
}
@Transactional
public List<Map<String, Object>> step1(
MultiValueMap<String, String> formData,
String category_id,
String latitude,
String longitude,
String zone,
String ward,
String streeId,
String streetName,
String loginId,
String remarks,
//String isviolatorAvailable,
//String violatorName,
//String violatorPhone,
//String ton,
MultipartFile file) {
Map<String, Object> response = new HashMap<>();
int lastInsertId = 0;
String image = fileUpload("cc_step1",category_id,file);
String sqlQuery = "INSERT INTO `cc_step1`(`category_id`, `image`, `latitude`, `longitude`, "
+ "`zone`, `ward`, `streetid`, `streetname`, `catch_by`,`remarks`) "
//+ "`violator_info`, `violator_name`, `violator_phone`, `ton`) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
try {
int affectedRows = jdbcPenaltyTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[]{"id"});
ps.setString(1, category_id);
ps.setString(2, image);
ps.setString(3, latitude);
ps.setString(4, longitude);
ps.setString(5, zone);
ps.setString(6, ward);
ps.setString(7, streeId);
ps.setString(8, streetName);
ps.setString(9, loginId);
ps.setString(10, remarks);
//ps.setString(11, isviolatorAvailable);
//ps.setString(12, violatorName);
//ps.setString(13, violatorPhone);
//ps.setString(14, ton);
return ps;
}
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
lastInsertId = (generatedId != null) ? generatedId.intValue() : 0;
response.put("insertId", lastInsertId);
response.put("status", "success");
response.put("message", "Cattle caught successfully!");
System.out.println("Cattle caught successfully! Insert ID: " + generatedId);
} else {
response.put("status", "error");
response.put("message", "Failed to insert a new Penalty (Chellan).");
}
} catch (DataAccessException e) {
System.out.println("Data Access Exception:");
Throwable rootCause = e.getMostSpecificCause();
if (rootCause instanceof SQLException) {
SQLException sqlException = (SQLException) rootCause;
System.out.println("SQL State: " + sqlException.getSQLState());
System.out.println("Error Code: " + sqlException.getErrorCode());
System.out.println("Message: " + sqlException.getMessage());
response.put("status", "error");
response.put("message", sqlException.getMessage());
response.put("sqlState", sqlException.getSQLState());
response.put("errorCode", sqlException.getErrorCode());
} else {
System.out.println("Message: " + rootCause.getMessage());
response.put("status", "error");
response.put("message", rootCause.getMessage());
}
}
return Collections.singletonList(response);
}
@Transactional
public List<Map<String, Object>> getPenaltyTypeList() {
String SqlQuery = "SELECT `id`, `name`, `display_name` FROM `penalty_types` WHERE `isdelete`=0 AND `isactive`=1";
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(SqlQuery);
return result;
public List<Map<String, Object>> step1list(
MultiValueMap<String, String> formData,
String loginid) {
String sqlQuery = "SELECT *, "
+ "CONCAT('"+fileBaseUrl+"/gccofficialapp/files',`image`) as imageurl "
+ " From `cc_step1` WHERE (`isactive`=1 AND `isdelete`=0)";
if(loginid!=null && !loginid.isEmpty() && !loginid.isBlank()) {
sqlQuery= sqlQuery +" AND `catch_by`='"+loginid+"'";
}
sqlQuery = sqlQuery + " LIMIT 1";
//System.out.println(sqlQuery);
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", 200);
response.put("message", "Challan Details");
response.put("data", result);
return result;
}
@Transactional
public List<Map<String, Object>> step2(
MultiValueMap<String, String> formData,
String cinfoid,
String depotid,
String latitude,
String longitude,
String zone,
String ward,
String streeId,
String streetName,
String loginId,
String remarks,
MultipartFile file) {
Map<String, Object> response = new HashMap<>();
int lastInsertId = 0;
String image = fileUpload("cc_step2",cinfoid,file);
String sqlQuery = "INSERT INTO `cc_step2`(`cinfoid`,`image`, `latitude`, `longitude`, "
+ "`zone`, `ward`, `streetid`, `streetname`, `in_by`,`remarks`,`depotid`) "
//+ "`violator_info`, `violator_name`, `violator_phone`, `ton`) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
try {
int affectedRows = jdbcPenaltyTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[]{"id"});
ps.setString(1, cinfoid);
ps.setString(2, image);
ps.setString(3, latitude);
ps.setString(4, longitude);
ps.setString(5, zone);
ps.setString(6, ward);
ps.setString(7, streeId);
ps.setString(8, streetName);
ps.setString(9, loginId);
ps.setString(10, remarks);
ps.setString(11, depotid);
//ps.setString(11, isviolatorAvailable);
//ps.setString(12, violatorName);
//ps.setString(13, violatorPhone);
//ps.setString(14, ton);
return ps;
}
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
lastInsertId = (generatedId != null) ? generatedId.intValue() : 0;
response.put("insertId", lastInsertId);
response.put("status", "success");
response.put("message", "Cattle successfully checked into the depot!");
System.out.println("Cattle successfully checked into the depot! Insert ID: " + generatedId);
} else {
response.put("status", "error");
response.put("message", "Failed to checked into the depot");
}
} catch (DataAccessException e) {
System.out.println("Data Access Exception:");
Throwable rootCause = e.getMostSpecificCause();
if (rootCause instanceof SQLException) {
SQLException sqlException = (SQLException) rootCause;
System.out.println("SQL State: " + sqlException.getSQLState());
System.out.println("Error Code: " + sqlException.getErrorCode());
System.out.println("Message: " + sqlException.getMessage());
response.put("status", "error");
response.put("message", sqlException.getMessage());
response.put("sqlState", sqlException.getSQLState());
response.put("errorCode", sqlException.getErrorCode());
} else {
System.out.println("Message: " + rootCause.getMessage());
response.put("status", "error");
response.put("message", rootCause.getMessage());
}
}
return Collections.singletonList(response);
}
@Transactional
public List<Map<String, Object>> step2list(
MultiValueMap<String, String> formData,
String orderid) {
String sqlQuery = "SELECT *, "
+ "CONCAT('"+fileBaseUrl+"/gccofficialapp/files',`image`) as imageurl "
+ " From `cc_step2` WHERE (`isactive`=1 AND `isdelete`=0) AND `status`='in'";
if(orderid!=null && !orderid.isEmpty() && !orderid.isBlank()) {
sqlQuery= sqlQuery +" ";
}
//sqlQuery = sqlQuery + " LIMIT 1";
System.out.println(sqlQuery);
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", 200);
response.put("message", "Challan Details");
response.put("data", result);
return result;
}
@Transactional
public List<Map<String, Object>> step3(
MultiValueMap<String, String> formData,
String cinfoids,
String latitude,
String longitude,
String zone,
String ward,
String streeId,
String streetName,
String loginId,
String remarks,
//String isviolatorAvailable,
String violatorName,
String violatorPhone,
String fineAmount,
MultipartFile file) {
Map<String, Object> response = new HashMap<>();
int lastInsertId = 0;
String image = "";
/*fileUpload("cc_step2",cinfoid,file);*/
String orderid = generateRandomString();
String sqlQuery = "INSERT INTO `cc_step3`(`cinfoids`, `image`, `latitude`, `longitude`, "
+ "`zone`, `ward`, `streetid`, `streetname`, `challan_by`,`remarks`, "
+ " `violator_name`, `violator_phone`,`fine_amount`,`orderid`) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
try {
int affectedRows = jdbcPenaltyTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[]{"id"});
ps.setString(1, String.join(",", cinfoids));
ps.setString(2, image);
ps.setString(3, latitude);
ps.setString(4, longitude);
ps.setString(5, zone);
ps.setString(6, ward);
ps.setString(7, streeId);
ps.setString(8, streetName);
ps.setString(9, loginId);
ps.setString(10, remarks);
ps.setString(11, violatorName);
ps.setString(12, violatorPhone);
ps.setString(13, fineAmount);
ps.setString(14, orderid);
return ps;
}
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
lastInsertId = (generatedId != null) ? generatedId.intValue() : 0;
response.put("insertId", lastInsertId);
response.put("status", "success");
response.put("message", "A new Penalty (Chellan) was generated successfully!");
System.out.println("A new Penalty (Chellan) was generated successfully! Insert ID: " + generatedId);
updateStep2(String.join(",", cinfoids),"challan");
} else {
response.put("status", "error");
response.put("message", "Failed to insert a new Penalty (Chellan).");
}
} catch (DataAccessException e) {
System.out.println("Data Access Exception:");
Throwable rootCause = e.getMostSpecificCause();
if (rootCause instanceof SQLException) {
SQLException sqlException = (SQLException) rootCause;
System.out.println("SQL State: " + sqlException.getSQLState());
System.out.println("Error Code: " + sqlException.getErrorCode());
System.out.println("Message: " + sqlException.getMessage());
response.put("status", "error");
response.put("message", sqlException.getMessage());
response.put("sqlState", sqlException.getSQLState());
response.put("errorCode", sqlException.getErrorCode());
} else {
System.out.println("Message: " + rootCause.getMessage());
response.put("status", "error");
response.put("message", rootCause.getMessage());
}
}
return Collections.singletonList(response);
}
public String updateStep2(String cinfoid, String status) {
String sqlQuery = "UPDATE cc_step2 SET status = ? WHERE cinfoid IN ("+cinfoid+")";
//System.out.println(sqlQuery);
jdbcPenaltyTemplate.update(sqlQuery, status);
return "success";
}
@Transactional
public List<Map<String, Object>> getChallanPOSData(
MultiValueMap<String, String> formData,
String orderid,
String loginid) {
String sqlQuery = "SELECT `cinfoids`,"
//+ "CONCAT('"+fileBaseUrl+"/gccofficialapp/files',`image`) as imageurl, "
+ "`latitude`, `longitude`, `zone`, `ward`, "
+ "`challan_by`, `violator_name`, `violator_phone`, "
+ "`fine_amount`,`orderid`,`status` From `cc_step3` WHERE (`isactive`=1 AND `isdelete`=0) AND `status`='unpaid'";
if(orderid!=null && !orderid.isEmpty() && !orderid.isBlank()) {
sqlQuery= sqlQuery +" AND `orderid`='"+orderid+"'";
}
if(loginid!=null && !loginid.isEmpty() && !loginid.isBlank()) {
sqlQuery= sqlQuery +" AND `challan_by`='"+loginid+"'";
}
//sqlQuery = sqlQuery + " LIMIT 1";
//System.out.println(sqlQuery);
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", 200);
response.put("message", "Challan Details");
response.put("data", result);
return result;
}
@Transactional
public List<Map<String, Object>> storeBankTransaction(Map<String, Object> transactionData) {
Map<String, Object> response = new HashMap<>();
int lastInsertId = 0;
// Extract data from the JSON object
String transactionResponseStatus = (String) transactionData.get("transactionResponseStatus");
// Check if the transaction was successful
if ("Transaction success".equalsIgnoreCase(transactionResponseStatus)) {
String mid = (String) transactionData.get("mid");
String tid = (String) transactionData.get("tid");
String txnId = (String) transactionData.get("txnId");
// Fetch nested transaction response data
Map<String, Object> txnResponseData = (Map<String, Object>) transactionData.get("txnResponseData");
String bankName = (String) txnResponseData.get("bankName");
String batchNumber = (String) txnResponseData.get("batchNumber");
String transactionTitle = (String) txnResponseData.get("transactionTitle");
String txnAID = (String) txnResponseData.get("txnAID");
String txnApprCode = (String) txnResponseData.get("txnApprCode");
String txnCardNo = (String) txnResponseData.get("txnCardNo");
String txnCardType = (String) txnResponseData.get("txnCardType");
String txnDate = (String) txnResponseData.get("txnDate");
String txnInvoice = (String) txnResponseData.get("txnInvoice");
String txnMode = (String) txnResponseData.get("txnMode");
String txnRefNo = (String) txnResponseData.get("txnRefNo");
String txnTC = (String) txnResponseData.get("txnTC");
String txnTSI = (String) txnResponseData.get("txnTSI");
String txnTVR = (String) txnResponseData.get("txnTVR");
String txnTime = (String) txnResponseData.get("txnTime");
// Convert transaction amount properly
Double transactionAmount = Double.valueOf((String) txnResponseData.get("transactionAmount"));
String sqlQuery = "INSERT INTO bank_transactions (mid, tid, txnId, bankName, batchNumber, transactionAmount, "
+ "transactionTitle, txnAID, txnApprCode, txnCardNo, txnCardType, txnDate, txnInvoice, txnMode, txnRefNo, "
+ "txnTC, txnTSI, txnTVR, txnTime) "
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
try {
int affectedRows = jdbcPenaltyTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[]{"id"});
ps.setString(1, mid);
ps.setString(2, tid);
ps.setString(3, txnId);
ps.setString(4, bankName);
ps.setString(5, batchNumber);
ps.setDouble(6, transactionAmount);
ps.setString(7, transactionTitle);
ps.setString(8, txnAID);
ps.setString(9, txnApprCode);
ps.setString(10, txnCardNo);
ps.setString(11, txnCardType);
ps.setString(12, txnDate);
ps.setString(13, txnInvoice);
ps.setString(14, txnMode);
ps.setString(15, txnRefNo);
ps.setString(16, txnTC);
ps.setString(17, txnTSI);
ps.setString(18, txnTVR);
ps.setString(19, txnTime);
return ps;
}
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
lastInsertId = (generatedId != null) ? generatedId.intValue() : 0;
updatePaymentStatus(txnId, transactionResponseStatus);
// Fetch inserted data for response, joining `penalty_challan` and `bank_transactions`
String sqlQuery_joined = "SELECT pc.category_id, CONCAT('" + fileBaseUrl + "/gccofficialapp/files', pc.image) as imageurl, "
+ "pc.latitude, pc.longitude, pc.zone, pc.ward, pc.challan_by, "
+ "pc.violator_name, pc.violator_phone, pc.fine_amount, pc.orderid, pc.status, "
+ "bt.mid, bt.tid, bt.txnId, bt.bankName, bt.batchNumber, bt.transactionAmount, bt.transactionTitle, "
+ "bt.txnCardNo, bt.txnDate, bt.txnInvoice, bt.txnMode, bt.txnRefNo "
+ "FROM cc_step3 pc "
+ "LEFT JOIN bank_transactions bt ON pc.orderid = bt.txnId "
+ "WHERE pc.isactive = 1 AND pc.isdelete = 0 AND bt.id = ? LIMIT 1";
System.out.println(sqlQuery_joined);
// Execute the query
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery_joined, lastInsertId);
response.put("status", 200);
response.put("message", "Transaction stored successfully!");
response.put("data", result);
} else {
response.put("status", 201);
response.put("message", "Failed to store the transaction.");
response.put("data", "");
}
} catch (DataAccessException e) {
response.put("status", 500);
response.put("message", "Database error while storing transaction.");
response.put("error", e.getMessage());
e.printStackTrace(); // This will give you more detail in logs
}
} else {
response.put("status", 400);
response.put("message", "Transaction failed or invalid status.");
}
return Collections.singletonList(response);
}
public String updatePaymentStatus(String orderid, String status) {
String sqlQuery = "UPDATE cc_step3 SET status = ? WHERE orderid = ? LIMIT 1";
jdbcPenaltyTemplate.update(sqlQuery, status, orderid);
return "success";
}
@Transactional
public List<Map<String, Object>> step3list(
MultiValueMap<String, String> formData,
String loginid) {
String sqlQuery = "SELECT *, "
+ "CONCAT('"+fileBaseUrl+"/gccofficialapp/files',`image`) as imageurl "
+ " From `cc_step3` WHERE (`isactive`=1 AND `isdelete`=0) AND `status`<>'unpaid'";
if(loginid!=null && !loginid.isEmpty() && !loginid.isBlank()) {
sqlQuery= sqlQuery +" AND `challan_by`='"+loginid+"'";
}
//sqlQuery = sqlQuery + " LIMIT 1";
//System.out.println(sqlQuery);
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", 200);
response.put("message", "Challan Details");
response.put("data", result);
return result;
}
@Transactional
public List<Map<String, Object>> step4(
MultiValueMap<String, String> formData,
String cinfoid,
String latitude,
String longitude,
String zone,
String ward,
String streeId,
String streetName,
String loginId,
String remarks,
MultipartFile file) {
Map<String, Object> response = new HashMap<>();
int lastInsertId = 0;
String image = fileUpload("cc_step2",cinfoid,file);
String sqlQuery = "INSERT INTO `cc_step4`(`cinfoid`,`image`, `latitude`, `longitude`, "
+ "`zone`, `ward`, `streetid`, `streetname`, `out_by`,`remarks`) "
//+ "`violator_info`, `violator_name`, `violator_phone`, `ton`) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
try {
int affectedRows = jdbcPenaltyTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[]{"id"});
ps.setString(1, cinfoid);
ps.setString(2, image);
ps.setString(3, latitude);
ps.setString(4, longitude);
ps.setString(5, zone);
ps.setString(6, ward);
ps.setString(7, streeId);
ps.setString(8, streetName);
ps.setString(9, loginId);
ps.setString(10, remarks);
//ps.setString(11, isviolatorAvailable);
//ps.setString(12, violatorName);
//ps.setString(13, violatorPhone);
//ps.setString(14, ton);
return ps;
}
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
lastInsertId = (generatedId != null) ? generatedId.intValue() : 0;
response.put("insertId", lastInsertId);
response.put("status", "success");
response.put("message", "Cattle successfully checked out from the depot!");
System.out.println("Cattle successfully checked out from the depot! Insert ID: " + generatedId);
} else {
response.put("status", "error");
response.put("message", "Failed to checked out from the depot");
}
} catch (DataAccessException e) {
System.out.println("Data Access Exception:");
Throwable rootCause = e.getMostSpecificCause();
if (rootCause instanceof SQLException) {
SQLException sqlException = (SQLException) rootCause;
System.out.println("SQL State: " + sqlException.getSQLState());
System.out.println("Error Code: " + sqlException.getErrorCode());
System.out.println("Message: " + sqlException.getMessage());
response.put("status", "error");
response.put("message", sqlException.getMessage());
response.put("sqlState", sqlException.getSQLState());
response.put("errorCode", sqlException.getErrorCode());
} else {
System.out.println("Message: " + rootCause.getMessage());
response.put("status", "error");
response.put("message", rootCause.getMessage());
}
}
return Collections.singletonList(response);
}
@Transactional
public List<Map<String, Object>> zoneReport(
MultiValueMap<String, String> formData,
String fromDate,
String toDate,
String loginid) {
String sqlQuery = "SELECT zone, COUNT(*) AS zone_count FROM `cc_step1` WHERE "
+ "DATE(catch_date) BETWEEN ? AND ? GROUP BY zone ORDER BY zone";
if(loginid!=null && !loginid.isEmpty() && !loginid.isBlank()) {
sqlQuery= sqlQuery +" AND `challan_by`='"+loginid+"'";
}
//System.out.println(sqlQuery);
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery,fromDate,toDate);
Map<String, Object> response = new HashMap<>();
response.put("status", 200);
response.put("message", "Challan Details");
response.put("data", result);
return result;
}
@Transactional
public List<Map<String, Object>> wardReport(
MultiValueMap<String, String> formData,
String zone,
String fromDate,
String toDate,
String loginid) {
String sqlQuery = "SELECT ward, COUNT(*) AS zone_count FROM `cc_step1` WHERE "
+ "zone=? AND DATE(catch_date) BETWEEN ? AND ? GROUP BY ward ORDER BY ward";
if(loginid!=null && !loginid.isEmpty() && !loginid.isBlank()) {
sqlQuery= sqlQuery +" AND `challan_by`='"+loginid+"'";
}
//System.out.println(sqlQuery);
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery,zone,fromDate,toDate);
Map<String, Object> response = new HashMap<>();
response.put("status", 200);
response.put("message", "Challan Details");
response.put("data", result);
return result;
}
}

112
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/penalty/service/PenaltyService.java

@ -44,6 +44,7 @@ import in.gov.chennaicorporation.mobileservice.gccactivity.service.DateTimeUtil;
public class PenaltyService {
private JdbcTemplate jdbcPenaltyTemplate;
private final Environment environment;
private String fileBaseUrl;
@Autowired
public void setDataSource(@Qualifier("mysqlActivityDataSource") DataSource penaltyDataSource) {
@ -53,6 +54,7 @@ public class PenaltyService {
@Autowired
public PenaltyService(Environment environment) {
this.environment = environment;
this.fileBaseUrl=environment.getProperty("fileBaseUrl");
}
// Function to convert date string from dd-MM-yyyy to yyyy-MM-dd
@ -145,7 +147,7 @@ public class PenaltyService {
byte[] compressedBytes = compressImage(image, 0.5f); // Compress with 50% quality
// Write the bytes to the file
Files.write(path, bytes);
Files.write(path, compressedBytes);
System.out.println(filePath);
return filepath_txt;
@ -157,9 +159,17 @@ public class PenaltyService {
}
@Transactional
public List<Map<String, Object>> getPenaltyTypeList() {
String sqlQuery = "SELECT `id`, `name`,`iconurl` FROM `penalty_category` WHERE `isdelete`=0 AND `isactive`=1 ORDER BY `name`";
public List<Map<String, Object>> getPenaltyTypeList(String departmentId) {
//String sqlQuery = "SELECT `id`, `name`,`iconurl` FROM `penalty_category` WHERE `isdelete`=0 AND `isactive`=1 ORDER BY `name`";
//List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery);
String sqlQuery = "SELECT * FROM `penalty_category` WHERE (`isactive`=1 AND `isdelete`=0) ";
if(departmentId!=null && !departmentId.isEmpty() && !departmentId.isBlank()) {
sqlQuery= sqlQuery +" AND `mappingid`='"+departmentId+"'";
}
sqlQuery = sqlQuery + " ORDER BY `display_order`, `name` ASC";
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery);
return result;
}
@ -343,7 +353,7 @@ public class PenaltyService {
+ "DATE_FORMAT(challan_date, '%d-%m-%Y %r') AS formatted_challan_datetime, "
+ "DATE_FORMAT(challan_date, '%d-%m-%Y') AS formatted_challan_date, "
+ "DATE_FORMAT(challan_date, '%r') AS formatted_challan_time, "
+ "CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files', image) AS imageUrl, "
+ "CONCAT('"+fileBaseUrl+"/gccofficialapp/files', image) AS imageUrl, "
+ "CASE "
+ " WHEN status = 1 THEN 'Generated'"
+ " WHEN status = 2 THEN 'User Action Takened'"
@ -374,11 +384,13 @@ public class PenaltyService {
String loginId,
String isviolatorAvailable
) {
System.out.println(fileBaseUrl);
StringBuilder sqlQuery = new StringBuilder("SELECT pc.*, "
+ "DATE_FORMAT(pc.challan_date, '%d-%m-%Y %r') AS formatted_challan_datetime, "
+ "DATE_FORMAT(pc.challan_date, '%d-%m-%Y') AS formatted_challan_date, "
+ "DATE_FORMAT(pc.challan_date, '%r') AS formatted_challan_time, "
+ "CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files', pc.image) AS imageUrl, "
+ "CONCAT('"+fileBaseUrl+"/gccofficialapp/files', pc.image) AS imageUrl, "
// Conditional formatting for fineissued_date fields
+ "CASE WHEN pc.fineissued = 1 THEN DATE_FORMAT(pc.fineissued_date, '%d-%m-%Y %r') ELSE '-' END AS formatted_fineissue_datetime, "
+ "CASE WHEN pc.fineissued = 1 THEN DATE_FORMAT(pc.fineissued_date, '%d-%m-%Y') ELSE '-' END AS formatted_fineissue_date, "
@ -394,9 +406,13 @@ public class PenaltyService {
+ " ELSE 'Unknown' "
+ "END AS status_name, "
+ "DATE_FORMAT(pc.challan_date, '%d-%m-%Y %H:%i:%s') AS challan_date, "
+ "penalty_category.name AS penalty_category_name "
+ "penalty_category.name AS penalty_category_name, "
+ "p.amount AS payment_amount, "
+ "p.paymentStatus AS payment_status, "
+ "DATE_FORMAT(p.paymentdate, '%d-%m-%Y %r') AS formatted_payment_datetime "
+ "FROM penalty_challan pc "
+ "JOIN penalty_category ON pc.category_id = penalty_category.id "
+ "LEFT JOIN `Payment` p ON p.uniqueid = pc.id "
+ "WHERE (pc.isdelete = 0 AND pc.isactive = 1) AND pc.challan_by = '" + loginId + "' ");
// Add additional filters if provided
@ -566,7 +582,6 @@ public class PenaltyService {
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
lastInsertId = (generatedId != null) ? generatedId.intValue() : 0;
response.put("insertId", lastInsertId);
@ -621,4 +636,87 @@ public class PenaltyService {
return result;
}
//// POS ////
@Transactional
public List<Map<String, Object>> generateChallanPOS(
MultiValueMap<String, String> formData,
String category_id,
String latitude,
String longitude,
String zone,
String ward,
String loginId,
String violatorName,
String violatorPhone,
String ton,
String amount,
MultipartFile file) {
Map<String, Object> response = new HashMap<>();
int lastInsertId = 0;
String image = fileUpload("challan",category_id,file);
String sqlQuery = "INSERT INTO `penalty_challan_pos`(`category_id`, `image`, `latitude`, `longitude`, "
+ "`zone`, `ward`, `challan_by`"
+ " `violator_name`, `violator_phone`, `ton`,`amount`) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
try {
int affectedRows = jdbcPenaltyTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[]{"id"});
ps.setString(1, category_id);
ps.setString(2, image);
ps.setString(3, latitude);
ps.setString(4, longitude);
ps.setString(5, zone);
ps.setString(6, ward);
ps.setString(7, loginId);
ps.setString(8, violatorName);
ps.setString(9, violatorPhone);
ps.setString(10, ton);
ps.setString(11, amount);
return ps;
}
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
lastInsertId = (generatedId != null) ? generatedId.intValue() : 0;
response.put("insertId", lastInsertId);
response.put("status", "success");
response.put("message", "A new Penalty (Chellan) was generated successfully!");
System.out.println("A new Penalty (Chellan) was generated successfully! Insert ID: " + generatedId);
} else {
response.put("status", "error");
response.put("message", "Failed to insert a new Penalty (Chellan).");
}
} catch (DataAccessException e) {
System.out.println("Data Access Exception:");
Throwable rootCause = e.getMostSpecificCause();
if (rootCause instanceof SQLException) {
SQLException sqlException = (SQLException) rootCause;
System.out.println("SQL State: " + sqlException.getSQLState());
System.out.println("Error Code: " + sqlException.getErrorCode());
System.out.println("Message: " + sqlException.getMessage());
response.put("status", "error");
response.put("message", sqlException.getMessage());
response.put("sqlState", sqlException.getSQLState());
response.put("errorCode", sqlException.getErrorCode());
} else {
System.out.println("Message: " + rootCause.getMessage());
response.put("status", "error");
response.put("message", rootCause.getMessage());
}
}
return Collections.singletonList(response);
}
}

649
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/penalty/service/PenaltyServicePOS.java

@ -0,0 +1,649 @@
package in.gov.chennaicorporation.mobileservice.penalty.service;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.SecureRandom;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.env.Environment;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.MultiValueMap;
import org.springframework.web.multipart.MultipartFile;
import in.gov.chennaicorporation.mobileservice.gccactivity.service.DateTimeUtil;
@Service
public class PenaltyServicePOS {
private JdbcTemplate jdbcPenaltyTemplate;
private final Environment environment;
private String fileBaseUrl;
private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
private static final int STRING_LENGTH = 15;
private static final Random RANDOM = new SecureRandom();
@Autowired
public void setDataSource(@Qualifier("mysqlPenaltyDataSource") DataSource penaltyDataSource) {
this.jdbcPenaltyTemplate = new JdbcTemplate(penaltyDataSource);
}
@Autowired
public PenaltyServicePOS(Environment environment) {
this.environment = environment;
this.fileBaseUrl=environment.getProperty("fileBaseUrl");
}
public static String generateRandomString() {
StringBuilder result = new StringBuilder(STRING_LENGTH);
for (int i = 0; i < STRING_LENGTH; i++) {
result.append(CHARACTERS.charAt(RANDOM.nextInt(CHARACTERS.length())));
}
return result.toString();
}
// Function to convert date string from dd-MM-yyyy to yyyy-MM-dd
public static String convertDateFormat(String inputDate, int add) {
// Check if the inputDate is not null or blank
if (inputDate != null && !inputDate.isBlank()) {
try {
// Define the input and output date formats
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// Parse the input date string to LocalDate
LocalDate date = LocalDate.parse(inputDate, inputFormatter);
// Add the specified number of days to the date if 'add' is greater than 0
if (add > 0) {
date = date.plusDays(add);
}
// Format the date to the new format
return date.format(outputFormatter);
} catch (DateTimeParseException e) {
// Handle the case where the input date is invalid
System.out.println("Invalid date format: " + inputDate);
return "";
}
} else {
return "";
}
}
private byte[] compressImage(BufferedImage image, float quality) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream(byteArrayOutputStream);
ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
writer.setOutput(imageOutputStream);
ImageWriteParam param = writer.getDefaultWriteParam();
if (param.canWriteCompressed()) {
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(quality);
}
writer.write(null, new javax.imageio.IIOImage(image, null, null), param);
writer.dispose();
imageOutputStream.close();
return byteArrayOutputStream.toByteArray();
}
public String fileUpload(String name, String id, MultipartFile file) {
int lastInsertId = 0;
// Set the file path where you want to save it
String uploadDirectory = environment.getProperty("file.upload.directory");
String serviceFolderName = environment.getProperty("penalty_foldername");
var year =DateTimeUtil.getCurrentYear();
var month =DateTimeUtil.getCurrentMonth();
uploadDirectory = uploadDirectory + serviceFolderName +"pos/"+ year +"/"+month+"/";
try {
// Create directory if it doesn't exist
Path directoryPath = Paths.get(uploadDirectory);
if (!Files.exists(directoryPath)) {
Files.createDirectories(directoryPath);
}
// Datetime string
String datetimetxt = DateTimeUtil.getCurrentDateTime();
// File name
String fileName = name+ "_" +id + "_" + datetimetxt + "_" + file.getOriginalFilename();
fileName = fileName.replaceAll("\\s+", ""); // Remove space on filename
String filePath = uploadDirectory + "/" + fileName;
String filepath_txt = "/"+serviceFolderName +"pos/"+ year +"/"+month+"/"+fileName;
// Create a new Path object
Path path = Paths.get(filePath);
// Get the bytes of the file
byte[] bytes = file.getBytes();
// Compress the image
BufferedImage image = ImageIO.read(new ByteArrayInputStream(bytes));
byte[] compressedBytes = compressImage(image, 0.5f); // Compress with 50% quality
// Write the bytes to the file
Files.write(path, bytes);
System.out.println(filePath);
return filepath_txt;
} catch (IOException e) {
e.printStackTrace();
return "Failed to save file " + file.getOriginalFilename();
}
}
//// POS ////
@Transactional
public List<Map<String, Object>> getPenaltyDepartment() {
String sqlQuery = "SELECT * FROM `penalty_department` WHERE (`isactive`=1 AND `isdelete`=0) ";
sqlQuery = sqlQuery + " ORDER BY `display_order`, `name` ASC";
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", 200);
response.put("message", "Department list");
response.put("data", result);
return Collections.singletonList(response);
}
@Transactional
public List<Map<String, Object>> getPenaltyTypeList(String departmentId) {
String sqlQuery = "SELECT * FROM `penalty_category` WHERE (`isactive`=1 AND `isdelete`=0) ";
if(departmentId!=null && !departmentId.isEmpty() && !departmentId.isBlank()) {
sqlQuery= sqlQuery +" AND `mappingid`='"+departmentId+"'";
}
//sqlQuery = sqlQuery + " ORDER BY `display_order`, `name` ASC";
sqlQuery = sqlQuery + " ORDER BY `display_order` ASC";
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", 200);
response.put("message", "Penalty category list");
response.put("data", result);
return Collections.singletonList(response);
}
@Transactional
public List<Map<String, Object>> getPenaltyAmount(String categoryId, String ton) {
String sqlQuery = "SELECT * FROM `penalty_amount` WHERE (`isactive`=1 AND `isdelete`=0) ";
if(categoryId!=null && !categoryId.isEmpty() && !categoryId.isBlank()) {
sqlQuery= sqlQuery +" AND `category_id`='"+categoryId+"'";
}
if(ton!=null && !ton.isEmpty() && !ton.isBlank()) {
sqlQuery= sqlQuery +" AND `ton`='"+ton+"'";
}
sqlQuery = sqlQuery + "";
System.out.println(sqlQuery);
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", 200);
response.put("message", "Penalty amount details");
response.put("data", result);
return Collections.singletonList(response);
}
@Transactional
public List<Map<String, Object>> getBankList() {
String sqlQuery = "SELECT `id`, `code`, `name`, `narration` FROM `bank_list` WHERE `isactive`=1 AND `isdelete`=0";
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", 200);
response.put("message", "Bank list");
response.put("data", result);
return Collections.singletonList(response);
}
@Transactional
public List<Map<String, Object>> getOfflineModeTypes() {
String sqlQuery = "SELECT `id`, `name` FROM `offline_mode_type` WHERE `isactive`=1 AND `isdelete`=0";
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", 200);
response.put("message", "Offline mode types");
response.put("data", result);
return Collections.singletonList(response);
}
@Transactional
public List<Map<String, Object>> generateChallanPOS(
MultiValueMap<String, String> formData,
String category_id,
String latitude,
String longitude,
String zone,
String ward,
String loginId,
String violatorName,
String violatorPhone,
String ton,
String amount,
MultipartFile file) {
Map<String, Object> response = new HashMap<>();
int lastInsertId = 0;
String orderid = generateRandomString();
String image = fileUpload("challan",category_id,file);
String sqlQuery = "INSERT INTO `penalty_challan`(`category_id`, `image`, `latitude`, `longitude`, "
+ "`zone`, `ward`, `challan_by`, "
+ "`violator_name`, `violator_phone`, `ton`, `fine_amount`,`orderid`) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
try {
int affectedRows = jdbcPenaltyTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[]{"id"});
ps.setString(1, category_id);
ps.setString(2, image);
ps.setString(3, latitude);
ps.setString(4, longitude);
ps.setString(5, zone);
ps.setString(6, ward);
ps.setString(7, loginId);
ps.setString(8, violatorName);
ps.setString(9, violatorPhone);
ps.setString(10, ton);
ps.setString(11, amount);
ps.setString(12, orderid);
return ps;
}
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
lastInsertId = (generatedId != null) ? generatedId.intValue() : 0;
//CONCAT('"+fileBaseUrl+"/gccofficialapp/files', cp.photo_url) AS photos,
String sqlQuery_txt = "SELECT `category_id`,CONCAT('"+fileBaseUrl+"/gccofficialapp/files',`image`) as imageurl, `latitude`, `longitude`, `zone`, `ward`, "
+ "`challan_by`, `violator_name`, `violator_phone`, `ton`, "
+ "`fine_amount`,`orderid` From `penalty_challan` WHERE id='"+lastInsertId+"' LIMIT 1";
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery_txt);
//response.put("insertid", lastInsertId);
response.put("status", 200);
response.put("message", "A new Penalty (Chellan) was generated successfully!");
//response.put("orderid", orderid);
response.put("data", result);
System.out.println("A new Penalty (Chellan) was generated successfully! Insert ID: " + generatedId);
} else {
response.put("status", 201);
response.put("message", "Failed to insert a new Penalty (Chellan).");
response.put("data", "");
}
} catch (DataAccessException e) {
System.out.println("Data Access Exception:");
Throwable rootCause = e.getMostSpecificCause();
if (rootCause instanceof SQLException) {
SQLException sqlException = (SQLException) rootCause;
System.out.println("SQL State: " + sqlException.getSQLState());
System.out.println("Error Code: " + sqlException.getErrorCode());
System.out.println("Message: " + sqlException.getMessage());
response.put("status", 500);
response.put("message", "Database error while storing new Penalty (Chellan).");
response.put("error", e.getMessage());
} else {
System.out.println("Message: " + rootCause.getMessage());
response.put("status", 400);
response.put("message", "Failed to insert a new Penalty (Chellan).");
}
}
return Collections.singletonList(response);
}
@Transactional
public List<Map<String, Object>> getChallanPOSData(
MultiValueMap<String, String> formData,
String orderid,
String id) {
String sqlQuery = "SELECT `category_id`,CONCAT('"+fileBaseUrl+"/gccofficialapp/files',`image`) as imageurl, `latitude`, `longitude`, `zone`, `ward`, "
+ "`challan_by`, `violator_name`, `violator_phone`, `ton`, "
+ "`fine_amount`,`orderid`,`status` From `penalty_challan` WHERE (`isactive`=1 AND `isdelete`=0) ";
if(orderid!=null && !orderid.isEmpty() && !orderid.isBlank()) {
sqlQuery= sqlQuery +" AND `orderid`='"+orderid+"'";
}
if(id!=null && !id.isEmpty() && !id.isBlank()) {
sqlQuery= sqlQuery +" AND `id`='"+id+"'";
}
sqlQuery = sqlQuery + " LIMIT 1";
//System.out.println(sqlQuery);
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", 200);
response.put("message", "Challan Details");
response.put("data", result);
return result;
}
/*
@Transactional
public List<Map<String, Object>> updateOrderDetails(
MultiValueMap<String, String> formData,
String orderid,
String id) {
String paymentStatus = "paid";
String sqlQuery = "UPDATE `penalty_challan` SET `status`='"+paymentStatus+"'";
if(orderid!=null && !orderid.isEmpty() && !orderid.isBlank()) {
sqlQuery= sqlQuery +" AND `orderid`='"+orderid+"'";
}
sqlQuery = sqlQuery + " LIMIT 1";
System.out.println(sqlQuery);
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
//response.put("insertid", lastInsertId);
response.put("status", 200);
response.put("message", "Payment Status updated successfully!");
response.put("orderid", orderid);
response.put("data", result);
return result;
}
*/
@Transactional
public List<Map<String, Object>> storeBankTransaction(Map<String, Object> transactionData) {
Map<String, Object> response = new HashMap<>();
int lastInsertId = 0;
// Extract data from the JSON object
String transactionResponseStatus = (String) transactionData.get("transactionResponseStatus");
// Check if the transaction was successful
if ("Transaction success".equalsIgnoreCase(transactionResponseStatus)) {
String mid = (String) transactionData.get("mid");
String tid = (String) transactionData.get("tid");
String txnId = (String) transactionData.get("txnId");
// Fetch nested transaction response data
Map<String, Object> txnResponseData = (Map<String, Object>) transactionData.get("txnResponseData");
String bankName = (String) txnResponseData.get("bankName");
String batchNumber = (String) txnResponseData.get("batchNumber");
String transactionTitle = (String) txnResponseData.get("transactionTitle");
String txnAID = (String) txnResponseData.get("txnAID");
String txnApprCode = (String) txnResponseData.get("txnApprCode");
String txnCardNo = (String) txnResponseData.get("txnCardNo");
String txnCardType = (String) txnResponseData.get("txnCardType");
String txnDate = (String) txnResponseData.get("txnDate");
String txnInvoice = (String) txnResponseData.get("txnInvoice");
String txnMode = (String) txnResponseData.get("txnMode");
String txnRefNo = (String) txnResponseData.get("txnRefNo");
String txnTC = (String) txnResponseData.get("txnTC");
String txnTSI = (String) txnResponseData.get("txnTSI");
String txnTVR = (String) txnResponseData.get("txnTVR");
String txnTime = (String) txnResponseData.get("txnTime");
// Convert transaction amount properly
Double transactionAmount = Double.valueOf((String) txnResponseData.get("transactionAmount"));
String sqlQuery = "INSERT INTO bank_transactions (mid, tid, txnId, bankName, batchNumber, transactionAmount, "
+ "transactionTitle, txnAID, txnApprCode, txnCardNo, txnCardType, txnDate, txnInvoice, txnMode, txnRefNo, "
+ "txnTC, txnTSI, txnTVR, txnTime) "
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
try {
int affectedRows = jdbcPenaltyTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[]{"id"});
ps.setString(1, mid);
ps.setString(2, tid);
ps.setString(3, txnId);
ps.setString(4, bankName);
ps.setString(5, batchNumber);
ps.setDouble(6, transactionAmount);
ps.setString(7, transactionTitle);
ps.setString(8, txnAID);
ps.setString(9, txnApprCode);
ps.setString(10, txnCardNo);
ps.setString(11, txnCardType);
ps.setString(12, txnDate);
ps.setString(13, txnInvoice);
ps.setString(14, txnMode);
ps.setString(15, txnRefNo);
ps.setString(16, txnTC);
ps.setString(17, txnTSI);
ps.setString(18, txnTVR);
ps.setString(19, txnTime);
return ps;
}
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
lastInsertId = (generatedId != null) ? generatedId.intValue() : 0;
updatePaymentStatus(txnId, transactionResponseStatus);
// Fetch inserted data for response, joining `penalty_challan` and `bank_transactions`
String sqlQuery_joined = "SELECT pc.category_id, CONCAT('" + fileBaseUrl + "/gccofficialapp/files', pc.image) as imageurl, "
+ "pc.latitude, pc.longitude, pc.zone, pc.ward, pc.challan_by, "
+ "pc.violator_name, pc.violator_phone, pc.ton, pc.fine_amount, pc.orderid, pc.status, "
+ "bt.mid, bt.tid, bt.txnId, bt.bankName, bt.batchNumber, bt.transactionAmount, bt.transactionTitle, "
+ "bt.txnCardNo, bt.txnDate, bt.txnInvoice, bt.txnMode, bt.txnRefNo "
+ "FROM penalty_challan pc "
+ "LEFT JOIN bank_transactions bt ON pc.orderid = bt.txnId "
+ "WHERE pc.isactive = 1 AND pc.isdelete = 0 AND bt.id = ? LIMIT 1";
System.out.println(sqlQuery_joined);
// Execute the query
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery_joined, lastInsertId);
/*
// Fetch inserted data for response
String sqlQuery_challan = "SELECT `category_id`,CONCAT('"+fileBaseUrl+"/gccofficialapp/files',`image`) as imageurl, `latitude`, `longitude`, `zone`, `ward`, "
+ "`challan_by`, `violator_name`, `violator_phone`, `ton`, "
+ "`fine_amount`, `orderid`, `status` From `penalty_challan` WHERE (`isactive`=1 AND `isdelete`=0) "
+ "AND `orderid`='"+txnId+"' LIMIT 1";
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery_challan, lastInsertId);
// Fetch inserted data for response
String sqlQuery_txt = "SELECT mid, tid, txnId, bankName, batchNumber, transactionAmount, "
+ "transactionTitle, txnCardNo, txnDate, txnInvoice, txnMode, txnRefNo "
+ "FROM bank_transactions WHERE id = ? LIMIT 1";
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery_txt, lastInsertId);
*/
response.put("status", 200);
response.put("message", "Transaction stored successfully!");
response.put("data", result);
} else {
response.put("status", 201);
response.put("message", "Failed to store the transaction.");
response.put("data", "");
}
} catch (DataAccessException e) {
response.put("status", 500);
response.put("message", "Database error while storing transaction.");
response.put("error", e.getMessage());
e.printStackTrace(); // This will give you more detail in logs
}
} else {
response.put("status", 400);
response.put("message", "Transaction failed or invalid status.");
}
return Collections.singletonList(response);
}
public String updatePaymentStatus(String orderid, String status) {
String sqlQuery = "UPDATE penalty_challan SET status = ? WHERE orderid = ? LIMIT 1";
jdbcPenaltyTemplate.update(sqlQuery, status, orderid);
return "success";
}
@Transactional
public List<Map<String, Object>> storeOfflineTransaction(
MultiValueMap<String, String> formData,
String transactionResponseStatus,
String bankName,
String transactionAmount,
String txnDate,
String txnTime,
String branchname,
String extraInfo,
String extraInfo2,
String extraInfo3,
String txnMode,
String txnId,
MultipartFile file) {
Map<String, Object> response = new HashMap<>();
int lastInsertId = 0;
String orderid = generateRandomString();
String image = fileUpload("offline",extraInfo,file);
// Convert transaction amount properly
Double transactionAmount_d = Double.valueOf(transactionAmount); // Corrected line
String sqlQuery = "INSERT INTO `bank_transactions`(`transactionResponseStatus`, `bankName`, `transactionAmount`, "
+ "`txnDate`, `txnTime`, `branchname`,`extraInfo`,`extraInfo2`, `extraInfo3`,`txnMode`, `txnId`,`file`) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
try {
int affectedRows = jdbcPenaltyTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[]{"id"});
ps.setString(1, transactionResponseStatus);
ps.setString(2, bankName);
ps.setString(3, transactionAmount);
ps.setString(4, txnDate);
ps.setString(5, txnTime);
ps.setString(6, branchname);
ps.setString(7, extraInfo);
ps.setString(8, extraInfo2);
ps.setString(9, extraInfo3);
ps.setString(10, txnMode);
ps.setString(11, txnId);
ps.setString(12, image);
return ps;
}
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
lastInsertId = (generatedId != null) ? generatedId.intValue() : 0;
updatePaymentStatus(txnId, transactionResponseStatus);
// Fetch inserted data for response, joining `penalty_challan` and `bank_transactions`
String sqlQuery_joined = "SELECT pc.category_id, CONCAT('" + fileBaseUrl + "/gccofficialapp/files', pc.image) as imageurl, "
+ "pc.latitude, pc.longitude, pc.zone, pc.ward, pc.challan_by, "
+ "pc.violator_name, pc.violator_phone, pc.ton, pc.fine_amount, pc.orderid, pc.status, "
+ "bt.mid, bt.tid, bt.txnId, bt.bankName, bt.batchNumber, bt.transactionAmount, bt.transactionTitle, "
+ "bt.txnCardNo, bt.txnDate, bt.txnInvoice, bt.txnMode, bt.txnRefNo, "
+ "bt.branchname, bt.extraInfo, bt.extraInfo2, bt.extraInfo3, CONCAT('" + fileBaseUrl + "/gccofficialapp/files', bt.file) as offlineimageurl "
+ "FROM penalty_challan pc "
+ "LEFT JOIN bank_transactions bt ON pc.orderid = bt.txnId "
+ "WHERE pc.isactive = 1 AND pc.isdelete = 0 AND bt.id = ? LIMIT 1";
System.out.println(sqlQuery_joined);
// Execute the query
List<Map<String, Object>> result = jdbcPenaltyTemplate.queryForList(sqlQuery_joined, lastInsertId);
//response.put("insertid", lastInsertId);
response.put("status", 200);
response.put("message", "A new Penalty (Chellan) was generated successfully!");
//response.put("orderid", orderid);
response.put("data", result);
System.out.println("Transaction stored successfully!");
} else {
response.put("status", 201);
response.put("message", "Failed to store the transaction.");
response.put("data", "");
}
} catch (DataAccessException e) {
System.out.println("Data Access Exception:");
Throwable rootCause = e.getMostSpecificCause();
if (rootCause instanceof SQLException) {
SQLException sqlException = (SQLException) rootCause;
System.out.println("SQL State: " + sqlException.getSQLState());
System.out.println("Error Code: " + sqlException.getErrorCode());
System.out.println("Message: " + sqlException.getMessage());
response.put("status", 500);
response.put("message", "Database error while storing transaction.");
response.put("error", e.getMessage());
} else {
System.out.println("Message: " + rootCause.getMessage());
response.put("status", 400);
response.put("message", "Transaction failed or invalid status.");
}
}
return Collections.singletonList(response);
}
}

30
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/service/MainService.java

@ -0,0 +1,30 @@
package in.gov.chennaicorporation.mobileservice.service;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class MainService {
private JdbcTemplate jdbcMainTemplate;
@Autowired
public void setDataSource(
@Qualifier("mysqlActivityDataSource") DataSource activityDataSource) {
this.jdbcMainTemplate = new JdbcTemplate(activityDataSource);
}
/*
@Transactional
public List<Map<String, Object>> versionCheck() {
String sqlQuery = "SELECT * FROM `app_version` WHERE `isactive`=1 LIMIT 1";
List<Map<String, Object>> result = jdbcMainTemplate.queryForList(sqlQuery);
return result;
}
*/
}

38
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/service/OfficialAPIService.java

@ -44,6 +44,20 @@ public class OfficialAPIService {
this.jdbcActivityTemplate = new JdbcTemplate(activityDataSource);
}
@Transactional
public List<Map<String, Object>> versionCheck() {
String sqlQuery = "SELECT * FROM `app_version` WHERE `isactive`=1 LIMIT 1";
List<Map<String, Object>> result = jdbcActivityTemplate.queryForList(sqlQuery);
return result;
}
@Transactional
public List<Map<String, Object>> nammaVersionCheck() {
String sqlQuery = "SELECT * FROM `nammachennai_app_version` WHERE `isactive`=1 LIMIT 1";
List<Map<String, Object>> result = jdbcActivityTemplate.queryForList(sqlQuery);
return result;
}
public List<Map<String, Object>> sendOTP(HttpServletRequest request,
@RequestParam("MobileNo") String MobileNo,
@RequestParam("generatedToken") String OTP) {
@ -195,8 +209,8 @@ public class OfficialAPIService {
SqlQuery="SELECT `groups` FROM `user_mapping_details` WHERE `userid`=?";
System.out.println(SqlQuery);
System.out.println("loginId : "+loginId);
//System.out.println(SqlQuery);
//System.out.println("loginId : "+loginId);
List<Map<String, Object>> result = jdbcUserTemplate.queryForList(SqlQuery,loginId);
return result;
@ -220,7 +234,7 @@ public class OfficialAPIService {
groups = (String) firstEntry.get("groups");
// Do something with the groups value
System.out.println("Groups: " + groups);
//System.out.println("Groups: " + groups);
} else {
System.out.println("The 'groups' key is not present.");
}
@ -254,7 +268,7 @@ public class OfficialAPIService {
groups = (String) firstEntry.get("groups");
// Do something with the groups value
System.out.println("Groups: " + groups);
//System.out.println("Groups: " + groups);
} else {
System.out.println("The 'groups' key is not present.");
}
@ -289,7 +303,7 @@ public class OfficialAPIService {
menus = (String) firstEntry.get("module_ids");
// Do something with the groups value
System.out.println("Menus: " + menus);
//System.out.println("Menus: " + menus);
} else {
System.out.println("The 'module_ids' key is not present.");
}
@ -325,7 +339,7 @@ public class OfficialAPIService {
mainmenus = (String) firstEntry.get("department_ids");
// Do something with the groups value
System.out.println("MainMenus: " + mainmenus);
//System.out.println("MainMenus: " + mainmenus);
} else {
System.out.println("The 'department_ids' key is not present.");
}
@ -333,7 +347,7 @@ public class OfficialAPIService {
System.out.println("No data found in moduleids.");
}
SqlQuery="SELECT *,CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files/app_icon/menu/', icon_url) "
SqlQuery="SELECT *,CONCAT('https://gccservices.in/gccofficialapp/files/app_icon/menu/', icon_url) "
+ "AS iconUrl FROM `department` WHERE `ISACTIVE`=1 AND `id` IN ("+mainmenus+") ORDER BY `orderby`, `name` ASC";
List<Map<String, Object>> result = jdbcActivityTemplate.queryForList(SqlQuery);
return result;
@ -361,7 +375,7 @@ public class OfficialAPIService {
menus = (String) firstEntry.get("module_ids");
// Do something with the groups value
System.out.println("Menus: " + menus);
//System.out.println("Menus: " + menus);
} else {
System.out.println("The 'module_ids' key is not present.");
}
@ -369,7 +383,7 @@ public class OfficialAPIService {
System.out.println("No data found in moduleids.");
}
SqlQuery="SELECT *,CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files/app_icon/menu/', icon_url) "
SqlQuery="SELECT *,CONCAT('https://gccservices.in/gccofficialapp/files/app_icon/menu/', icon_url) "
+ "AS iconUrl FROM `modules` WHERE `ISACTIVE`=1 AND `id` IN ("+menus+") ";
if(departmentId!=null && !departmentId.isEmpty() && !departmentId.isBlank()) {
SqlQuery=SqlQuery+" AND `departmentId_id`='"+departmentId+"'";
@ -401,7 +415,7 @@ public class OfficialAPIService {
menuitem = (String) firstEntry.get("menuitem_ids");
// Do something with the groups value
System.out.println("MenuItems: " + menuitem);
//System.out.println("MenuItems: " + menuitem);
} else {
System.out.println("The 'menuitem_ids' key is not present.");
}
@ -409,7 +423,7 @@ public class OfficialAPIService {
System.out.println("No data found in menuitem_ids.");
}
SqlQuery="SELECT *,CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files/app_icon/menu/', icon_url) "
SqlQuery="SELECT *,CONCAT('https://gccservices.in/gccofficialapp/files/app_icon/menu/', icon_url) "
+ "AS iconUrl FROM `menuitem` WHERE `ISACTIVE`=1 AND `module_id`=? AND `id` IN ("+menuitem+")";
System.out.println(SqlQuery);
@ -422,7 +436,7 @@ public class OfficialAPIService {
String SqlQuery = "";
SqlQuery="SELECT *,CONCAT('https://gccservices.chennaicorporation.gov.in/gccofficialapp/files/app_icon/menu/', icon_url) AS iconUrl FROM `submenuitem` WHERE `ISACTIVE`=1 AND `module_id`=? AND `menuitem_id`=?";
SqlQuery="SELECT *,CONCAT('https://gccservices.in/gccofficialapp/files/app_icon/menu/', icon_url) AS iconUrl FROM `submenuitem` WHERE `ISACTIVE`=1 AND `module_id`=? AND `menuitem_id`=?";
List<Map<String, Object>> result = jdbcActivityTemplate.queryForList(SqlQuery,menuId,submenuId);
return result;

76
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/swmbwg/controller/APIController.java

@ -0,0 +1,76 @@
package in.gov.chennaicorporation.mobileservice.swmbwg.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import in.gov.chennaicorporation.mobileservice.swmbwg.service.activity;
@RequestMapping("/gccofficialapp/api/swmbwg/")
@RestController("gccofficialappswmbwg")
public class APIController {
@Autowired
private activity activity;
@GetMapping(value="/getClass")
public List<?> getAllClass(){
return activity.getAllClass();
}
@GetMapping(value="/getBWGTypes")
public List<?> getBWGTypes(){
return activity.getBWGTypes();
}
@GetMapping(value="/getServiceProviderList")
public List<?> getServiceProviderList(){
return activity.getServiceProviderList();
}
@PostMapping(value="/saveRequest")
public List<?> saveRequest(
@RequestParam(value="latitude", required = false) String latitude,
@RequestParam(value="longitude", required = false) String longitude,
@RequestParam(value="zone", required = false) String zone,
@RequestParam(value="ward", required = false) String ward,
@RequestParam(value="streetid", required = false) String streetid,
@RequestParam(value="streetname", required = false) String streetname,
@RequestParam(value="location", required = false) String location,
@RequestParam(value="classid", required = false) String classid,
@RequestParam(value="typeid", required = false) String typeid,
@RequestParam(value="qtyofwaste", required = false) String qtyofwaste,
@RequestParam(value="onsiteprocessing", required = false) String onsiteprocessing,
@RequestParam(value="serviceprovider", required = false) String serviceprovider,
@RequestParam(value="serviceproviderid", required = false) String serviceproviderid,
@RequestParam(value="loginId", required = false) String cby,
@RequestParam(value = "image", required = false) MultipartFile filedata
){
return activity.saveRequest(latitude, longitude,
zone, ward, streetid, streetname, location, classid,
typeid, qtyofwaste, onsiteprocessing, serviceprovider,
serviceproviderid, cby, filedata);
}
@GetMapping(value="/getZoneWiseCount")
public List<?> getZoneWiseCount(){
return activity.getZoneWiseCount();
}
@GetMapping(value="/getWardWiseCount")
public List<?> getWardWiseCount(@RequestParam(value="zone", required = true) String zone){
return activity.getWardWiseCount(zone);
}
@GetMapping(value="/getReport")
public List<?> getReport(@RequestParam(value="ward", required = true) String ward){
return activity.getReport(ward);
}
}

1
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/swmbwg/controller/package-info.java

@ -0,0 +1 @@
package in.gov.chennaicorporation.mobileservice.swmbwg.controller;

1
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/swmbwg/package-info.java

@ -0,0 +1 @@
package in.gov.chennaicorporation.mobileservice.swmbwg;

324
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/swmbwg/service/activity.java

@ -0,0 +1,324 @@
package in.gov.chennaicorporation.mobileservice.swmbwg.service;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.SecureRandom;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.env.Environment;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.MultiValueMap;
import org.springframework.web.multipart.MultipartFile;
import in.gov.chennaicorporation.mobileservice.gccactivity.service.DateTimeUtil;
@Service("gccofficialappswmbwgactivity")
public class activity {
private JdbcTemplate jdbcBWGTemplate;
private final Environment environment;
private String fileBaseUrl;
private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
private static final int STRING_LENGTH = 15;
private static final Random RANDOM = new SecureRandom();
@Autowired
public void setDataSource(@Qualifier("mysqlActivityDataSource") DataSource bwgDataSource) {
this.jdbcBWGTemplate = new JdbcTemplate(bwgDataSource);
}
@Autowired
public activity(Environment environment) {
this.environment = environment;
this.fileBaseUrl=environment.getProperty("fileBaseUrl");
}
public static String generateRandomString() {
StringBuilder result = new StringBuilder(STRING_LENGTH);
for (int i = 0; i < STRING_LENGTH; i++) {
result.append(CHARACTERS.charAt(RANDOM.nextInt(CHARACTERS.length())));
}
return result.toString();
}
private byte[] compressImage(BufferedImage image, float quality) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream(byteArrayOutputStream);
ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
writer.setOutput(imageOutputStream);
ImageWriteParam param = writer.getDefaultWriteParam();
if (param.canWriteCompressed()) {
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(quality);
}
writer.write(null, new javax.imageio.IIOImage(image, null, null), param);
writer.dispose();
imageOutputStream.close();
return byteArrayOutputStream.toByteArray();
}
public String fileUpload(String name, String id, MultipartFile file) {
int lastInsertId = 0;
// Set the file path where you want to save it
String uploadDirectory = environment.getProperty("file.upload.directory");
String serviceFolderName = environment.getProperty("swm_bwg_foldername");
var year = DateTimeUtil.getCurrentYear();
var month = DateTimeUtil.getCurrentMonth();
uploadDirectory = uploadDirectory + serviceFolderName + year + "/" + month;
try {
// Create directory if it doesn't exist
Path directoryPath = Paths.get(uploadDirectory);
if (!Files.exists(directoryPath)) {
Files.createDirectories(directoryPath);
}
// Datetime string
String datetimetxt = DateTimeUtil.getCurrentDateTime();
// File name
String fileName = name + "_" + id + "_" + datetimetxt + "_" + file.getOriginalFilename();
fileName = fileName.replaceAll("\\s+", ""); // Remove space on filename
String filePath = uploadDirectory + "/" + fileName;
String filepath_txt = "/" + serviceFolderName + year + "/" + month + "/" + fileName;
// Create a new Path object
Path path = Paths.get(filePath);
// Get the bytes of the file
byte[] bytes = file.getBytes();
// Compress the image
BufferedImage image = ImageIO.read(new ByteArrayInputStream(bytes));
byte[] compressedBytes = compressImage(image, 0.5f); // Compress with 50% quality
// Write the bytes to the file
Files.write(path, compressedBytes);
System.out.println(filePath);
return filepath_txt;
} catch (IOException e) {
e.printStackTrace();
return "Failed to save file " + file.getOriginalFilename();
}
}
public List<Map<String, Object>> getAllClass(){
String sqlQuery = "SELECT `cid`, `name` "
+ "FROM `swm_bwg_class` "
+ "WHERE `isactive`=1 AND `isdelete`=0";
List<Map<String, Object>> result = jdbcBWGTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", "Success");
response.put("message", "SWM - BWG Class List");
response.put("data", result);
return Collections.singletonList(response);
}
public List<Map<String, Object>> getBWGTypes(){
String sqlQuery = "SELECT `tid`, `name` "
+ "FROM `swm_bwg_types` "
+ "WHERE `isactive`=1 AND `isdelete`=0";
List<Map<String, Object>> result = jdbcBWGTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", "Success");
response.put("message", "SWM - BWG Type List");
response.put("data", result);
return Collections.singletonList(response);
}
public List<Map<String, Object>> getServiceProviderList(){
String sqlQuery = "SELECT `splid`, `name` "
+ "FROM `swm_bwg_service_provider_list` "
+ "WHERE `isactive`=1 AND `isdelete`=0";
List<Map<String, Object>> result = jdbcBWGTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", "Success");
response.put("message", "SWM - BWG Service Provider List");
response.put("data", result);
return Collections.singletonList(response);
}
@Transactional
public List<Map<String, Object>> saveRequest(String latitude,
String longitude, String zone, String ward, String streetid, String streetname, String location,
String classtxt, String type, String qtyofwaste, String onsiteprocessing,
String serviceprovider, String serviceproviderid, String cby, MultipartFile file) {
List<Map<String, Object>> result = null;
Map<String, Object> response = new HashMap<>();
int lastInsertId = 0;
String image = "";
// Handle file upload if a file is provided
if (file != null && !file.isEmpty()) {
var year = DateTimeUtil.getCurrentYear();
var month = DateTimeUtil.getCurrentMonth();
image = fileUpload(year, month, file);
}
String processingimg = image;
String sqlQuery = "INSERT INTO `swm_bwg_data`"
+ "(`latitude`, `longitude`, `zone`, `ward`, `streetid`, "
+ "`streetname`, `location`, `class`, `type`, `qtyofwaste`, `onsiteprocessing`, "
+ "`processingimg`, `serviceprovider`, `serviceproviderid`, `cby`) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
try {
int affectedRows = jdbcBWGTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[] { "id" });
ps.setString(1, latitude);
ps.setString(2, longitude);
ps.setString(3, zone);
ps.setString(4, ward);
ps.setString(5, streetid);
ps.setString(6, streetname);
ps.setString(7, location);
ps.setString(8, classtxt);
ps.setString(9, type);
ps.setString(10, qtyofwaste);
ps.setString(11, onsiteprocessing);
ps.setString(12, processingimg);
ps.setString(13, serviceprovider);
ps.setString(14, serviceproviderid);
ps.setString(15, cby);
return ps;
}
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
lastInsertId = (generatedId != null) ? generatedId.intValue() : 0;
response.put("insertId", lastInsertId);
response.put("status", "success");
response.put("message", "A new asset was inserted successfully!");
System.out.println("A new asset was inserted successfully! Insert ID: " + generatedId);
} else {
response.put("status", "error");
response.put("message", "Failed to insert a new asset.");
}
} catch (DataAccessException e) {
System.out.println("Data Access Exception:");
Throwable rootCause = e.getMostSpecificCause();
if (rootCause instanceof SQLException) {
SQLException sqlException = (SQLException) rootCause;
System.out.println("SQL State: " + sqlException.getSQLState());
System.out.println("Error Code: " + sqlException.getErrorCode());
System.out.println("Message: " + sqlException.getMessage());
response.put("status", "error");
response.put("message", sqlException.getMessage());
response.put("sqlState", sqlException.getSQLState());
response.put("errorCode", sqlException.getErrorCode());
} else {
System.out.println("Message: " + rootCause.getMessage());
response.put("status", "error");
response.put("message", rootCause.getMessage());
}
}
return Collections.singletonList(response);
}
public List<Map<String, Object>> getZoneWiseCount(){
String sqlQuery = "SELECT sbd.zone, count(sbd.did) totalcount FROM `swm_bwg_data` sbd "
+ "WHERE isactive=1 and isdelete=0 GROUP BY sbd.zone ORDER BY sbd.zone";
List<Map<String, Object>> result = jdbcBWGTemplate.queryForList(sqlQuery);
Map<String, Object> response = new HashMap<>();
response.put("status", "Success");
response.put("message", "Zone wise count List");
response.put("data", result);
return Collections.singletonList(response);
}
public List<Map<String, Object>> getWardWiseCount(String zone){
String sqlQuery = "SELECT sbd.ward, count(sbd.did) totalcount "
+ "FROM "
+ "`swm_bwg_data` sbd "
+ "WHERE (isactive=1 and isdelete=0) and zone=? GROUP BY sbd.ward ORDER BY sbd.ward";
List<Map<String, Object>> result = jdbcBWGTemplate.queryForList(sqlQuery,zone);
Map<String, Object> response = new HashMap<>();
response.put("status", "Success");
response.put("message", "Ward wise count List");
response.put("zone", zone);
response.put("data", result);
return Collections.singletonList(response);
}
public List<Map<String, Object>> getReport(String ward){
String sqlQuery = "SELECT sbd.*,"
+ "CONCAT('"+fileBaseUrl+"/gccofficialapp/files', sbd.processingimg) AS photos, "
+ "sbc.name as classname, "
+ "sbt.name as typename, "
+ "spl.name as serviceprovidername "
+ "FROM "
+ "`swm_bwg_data` sbd, "
+ "`swm_bwg_class` sbc, "
+ "`swm_bwg_types` sbt, "
+ "`swm_bwg_service_provider_list` spl "
+ "WHERE (sbd.class=sbc.cid AND sbd.type=sbt.tid AND sbd.serviceproviderid=spl.splid) AND ward=?";
List<Map<String, Object>> result = jdbcBWGTemplate.queryForList(sqlQuery,ward);
Map<String, Object> response = new HashMap<>();
response.put("status", "Success");
response.put("message", "SWM - BWG List");
response.put("data", result);
return Collections.singletonList(response);
}
}

1
mobileservice/src/main/java/in/gov/chennaicorporation/mobileservice/swmbwg/service/package-info.java

@ -0,0 +1 @@
package in.gov.chennaicorporation.mobileservice.swmbwg.service;

9
mobileservice/src/main/resources/application.properties

@ -18,6 +18,7 @@ server.error.include-stacktrace= on_param
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
spring.jackson.time-zone=Asia/Kolkata
# Maximum file size
spring.servlet.multipart.max-file-size=20MB
@ -26,6 +27,8 @@ spring.servlet.multipart.max-file-size=20MB
spring.servlet.multipart.max-request-size=20MB
fileBaseUrl=https://gccservices.in
file.upload.directory=${user.dir}/gcc_mobile_service_uploads/
activity_foldername = asset_activity/
@ -33,3 +36,9 @@ activity_new_asset_foldername = asset_images/
brr_activity_foldername= brr_activity_images/
sos_activity_foldername= sos_rescue_activity_images/
penalty_foldername=penalty_activity/
straydogs_foldername=stray_dogs/
gccschools_foldername=schools_images/
parks_playground_foldername=parks_playground_images/
swm_bwg_foldername=swm_bwg/
cattlecatch_foldername=cattlecatch_activity/
Loading…
Cancel
Save