Browse Source

implemented boat service

master
AJITHKUMAR12 2 months ago
parent
commit
a2cb726d81
  1. 11
      src/main/java/com/gcc/commissionerreview/configuration/DataSourceConfig.java
  2. 68
      src/main/java/com/gcc/commissionerreview/controller/BoatServiceReportController.java
  3. 5
      src/main/java/com/gcc/commissionerreview/controller/MainController.java
  4. 165
      src/main/java/com/gcc/commissionerreview/service/BoatServiceReportService.java
  5. 1764
      src/main/resources/templates/modules/boatreport.html

11
src/main/java/com/gcc/commissionerreview/configuration/DataSourceConfig.java

@ -268,4 +268,15 @@ public class DataSourceConfig {
return dataSource; return dataSource;
} }
////////// boatservice //////////////////////
@Bean(name = "mysqlbootDataSource")
public DataSource mysqlbootDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://" + host + "/boat_service");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
return dataSource;
}
} }

68
src/main/java/com/gcc/commissionerreview/controller/BoatServiceReportController.java

@ -0,0 +1,68 @@
package com.gcc.commissionerreview.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
import com.gcc.commissionerreview.service.AttendanceService;
import com.gcc.commissionerreview.service.BoatServiceReportService;
@RestController
@RequestMapping("/commissionerreview/api/boatController")
public class BoatServiceReportController {
@Autowired
private BoatServiceReportService boatServiceReportService;
@GetMapping("/report")
public ResponseEntity<?> getBoatServiceReport(
@RequestParam String fromDate,
@RequestParam String toDate) {
try {
List<Map<String, Object>> report = boatServiceReportService
.getBoatServiceReport(
fromDate,
toDate);
return ResponseEntity.ok(report);
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity
.internalServerError()
.body("Failed to load Boat Service Report");
}
}
@GetMapping("/summary")
public ResponseEntity<?> getBoatSummary() {
try {
Map<String, Object> summary = boatServiceReportService.getBoatSummary();
return ResponseEntity.ok(summary);
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity
.internalServerError()
.body("Unable to fetch boat summary");
}
}
}

5
src/main/java/com/gcc/commissionerreview/controller/MainController.java

@ -383,4 +383,9 @@ public class MainController {
return "modules/swimmingpoolreport"; return "modules/swimmingpoolreport";
} }
@GetMapping("/boatreport")
public String bootreport(Model model) {
return "modules/boatreport";
}
} }

165
src/main/java/com/gcc/commissionerreview/service/BoatServiceReportService.java

@ -0,0 +1,165 @@
package com.gcc.commissionerreview.service;
import javax.sql.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 java.sql.Date;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@Service
public class BoatServiceReportService {
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
public void setDataSource(@Qualifier("mysqlbootDataSource") DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public List<Map<String, Object>> getBoatServiceReport(
String fromDate,
String toDate) {
String sql = """
SELECT
sl.zone AS zone,
sl.name AS location,
DATE(tkt.ticketdatetime)
AS report_date,
tkt.boat_name
AS boat_name,
COALESCE(
SUM(tkt.adult_count),
0
) AS no_of_adults,
COALESCE(
SUM(tkt.child_count),
0
) AS no_of_kids,
COUNT(tkt.ticketid)
AS total_bookings,
COALESCE(
SUM(tkt.ticket_amount),
0
) AS total_collection
FROM tickets tkt
LEFT JOIN
service_location sl
ON tkt.lid = sl.lid
WHERE tkt.status = 'Transaction success'
AND
tkt.ticketdatetime >= ?
AND
tkt.ticketdatetime < ?
GROUP BY
sl.zone,
sl.name,
DATE(tkt.ticketdatetime),
tkt.boat_name
ORDER BY
sl.zone,
sl.name,
DATE(tkt.ticketdatetime),
tkt.boat_name
""";
return jdbcTemplate.queryForList(
sql,
fromDate,
toDate);
}
public Map<String, Object> getBoatSummary() {
Map<String, Object> response = new HashMap<>();
// ==========================================
// 1. Total Bookings & Total Revenue
// ==========================================
String summarySql = "SELECT " +
"COUNT(ticketid) AS totalbooking, " +
"COALESCE(SUM(ticket_amount), 0) AS totalamount " +
"FROM tickets";
Map<String, Object> summary = jdbcTemplate.queryForMap(summarySql);
// ==========================================
// 2. Boat Price
// ==========================================
String priceSql = "SELECT " +
"bcid, " +
"name, " +
"adult_price, " +
"child_price " +
"FROM boat_config " +
"WHERE bcid IN (1, 3) " +
"ORDER BY bcid";
List<Map<String, Object>> boatPrices = jdbcTemplate.queryForList(priceSql);
// ==========================================
// Add both responses
// ==========================================
response.put("totalbooking",
summary.get("totalbooking"));
response.put("totalamount",
summary.get("totalamount"));
response.put("boatPrices",
boatPrices);
return response;
}
}

1764
src/main/resources/templates/modules/boatreport.html
File diff suppressed because it is too large
View File

Loading…
Cancel
Save