diff --git a/src/main/java/com/gcc/commissionerreview/controller/FoodDistrubutionReportApiController.java b/src/main/java/com/gcc/commissionerreview/controller/FoodDistrubutionReportApiController.java index 0850325..8b21dba 100644 --- a/src/main/java/com/gcc/commissionerreview/controller/FoodDistrubutionReportApiController.java +++ b/src/main/java/com/gcc/commissionerreview/controller/FoodDistrubutionReportApiController.java @@ -53,12 +53,13 @@ public class FoodDistrubutionReportApiController { public ResponseEntity> getComplianceDetailedReport( @RequestParam(value = "date", required = false) String date, @RequestParam("hubId") Integer hubId, + @RequestParam(value = "shiftId", required = false) Integer shiftId, @RequestParam("qid") Integer qid, @RequestParam("statusFilter") String statusFilter) { Map response = new HashMap<>(); try { List> detailedData = fooddistributionservice.getComplianceDetailedReport(date, hubId, - qid, statusFilter); + shiftId, qid, statusFilter); response.put("status", "success"); response.put("data", detailedData); } catch (Exception e) { diff --git a/src/main/java/com/gcc/commissionerreview/service/Fooddistributionservice.java b/src/main/java/com/gcc/commissionerreview/service/Fooddistributionservice.java index fdc4ece..6bb3aee 100644 --- a/src/main/java/com/gcc/commissionerreview/service/Fooddistributionservice.java +++ b/src/main/java/com/gcc/commissionerreview/service/Fooddistributionservice.java @@ -27,10 +27,10 @@ public class Fooddistributionservice { public List> getQuestions() { String sql = "SELECT qcm.qcm_id, qcm.audit_category, pqm.qid, pqm.q_english " + - "FROM pmc_questions_master pqm " + - "JOIN questions_category_master qcm ON pqm.qcm_id = qcm.qcm_id " + - "WHERE pqm.isactive = 1 AND pqm.isdelete = 0 AND qcm.isactive = 1 AND qcm.isdelete = 0 " + - "ORDER BY qcm.orderby, pqm.orderby"; + "FROM pmc_questions_master pqm " + + "JOIN questions_category_master qcm ON pqm.qcm_id = qcm.qcm_id " + + "WHERE pqm.isactive = 1 AND pqm.isdelete = 0 AND qcm.isactive = 1 AND qcm.isdelete = 0 " + + "ORDER BY qcm.orderby, pqm.orderby"; return jdbcTemplate.queryForList(sql); } @@ -39,22 +39,28 @@ public class Fooddistributionservice { if (date != null && !date.trim().isEmpty()) { dateFilter = " AND DATE(pa.audit_date) = ? "; } - + String sql = "SELECT " + - "hm.id AS hub_id, hm.zone, hm.ward, hm.permanent_location, hm.si_name, " + - "qcm.qcm_id, qcm.audit_category, " + - "pqm.qid, pqm.q_english, " + - "pam.english_name AS answer_status, " + - "COUNT(pf.id) AS issue_count " + - "FROM hub_master hm " + - "LEFT JOIN pmc_audit pa ON pa.hub_id = hm.id AND pa.isactive = 1 AND pa.isdelete = 0 " + dateFilter + - "LEFT JOIN pmc_feedback pf ON pf.pmc_audit_id = pa.id AND pf.isactive = 1 AND pf.isdelete = 0 " + - "LEFT JOIN pmc_questions_master pqm ON pqm.qid = pf.questions AND pqm.isactive = 1 AND pqm.isdelete = 0 " + - "LEFT JOIN questions_category_master qcm ON qcm.qcm_id = pqm.qcm_id AND qcm.isactive = 1 AND qcm.isdelete = 0 " + - "LEFT JOIN pmc_answer_master pam ON pam.aid = pf.answer AND pam.isactive = 1 AND pam.isdelete = 0 " + - "WHERE hm.is_active = 1 AND hm.is_delete = 0 " + - "GROUP BY hm.id, hm.zone, hm.ward, hm.permanent_location, hm.si_name, qcm.qcm_id, qcm.audit_category, pqm.qid, pqm.q_english, pam.english_name " + - "ORDER BY hm.id, qcm.orderby, pqm.orderby"; + "hm.id AS hub_id, hm.zone, hm.ward, hm.permanent_location, hm.si_name, " + + "sm.shiftid, sm.name AS shift_name, " + + "qcm.qcm_id, qcm.audit_category, " + + "pqm.qid, pqm.q_english, " + + "pam.english_name AS answer_status, " + + "COUNT(pf.id) AS issue_count " + + "FROM hub_master hm " + + "CROSS JOIN shift_master sm " + + "LEFT JOIN pmc_audit pa ON pa.hub_id = hm.id AND pa.shiftid = sm.shiftid AND pa.isactive = 1 AND pa.isdelete = 0 " + + dateFilter + + "LEFT JOIN pmc_feedback pf ON pf.pmc_audit_id = pa.id AND pf.isactive = 1 AND pf.isdelete = 0 " + + "LEFT JOIN pmc_questions_master pqm ON pqm.qid = pf.questions AND pqm.isactive = 1 AND pqm.isdelete = 0 " + + + "LEFT JOIN questions_category_master qcm ON qcm.qcm_id = pqm.qcm_id AND qcm.isactive = 1 AND qcm.isdelete = 0 " + + + "LEFT JOIN pmc_answer_master pam ON pam.aid = pf.answer AND pam.isactive = 1 AND pam.isdelete = 0 " + + "WHERE hm.is_active = 1 AND hm.is_delete = 0 AND sm.isactive = 1 AND sm.isdelete = 0 " + + "GROUP BY hm.id, hm.zone, hm.ward, hm.permanent_location, hm.si_name, sm.shiftid, sm.name, qcm.qcm_id, qcm.audit_category, pqm.qid, pqm.q_english, pam.english_name " + + + "ORDER BY hm.id, sm.orderby, qcm.orderby, pqm.orderby"; if (date != null && !date.trim().isEmpty()) { return jdbcTemplate.queryForList(sql, date); @@ -63,45 +69,59 @@ public class Fooddistributionservice { } } - public List> getComplianceDetailedReport(String date, Integer hubId, Integer qid, String status) { + public List> getComplianceDetailedReport(String date, Integer hubId, Integer shiftId, + Integer qid, String status) { String dateFilter = ""; if (date != null && !date.trim().isEmpty()) { dateFilter = " AND DATE(pa.audit_date) = ? "; } - + String shiftFilter = ""; + if (shiftId != null && shiftId > 0) { + shiftFilter = " AND pa.shiftid = ? "; + } + String sql = "SELECT " + - "pf.id, " + - "DATE_FORMAT(pa.audit_date, '%d/%m/%y %H:%i') AS auditDate, " + - "pa.shiftid, " + // Assuming shiftid is used; update if shift_master exists - "hm.zone, " + - "hm.ward, " + - "pa.address, " + - "qcm.audit_category, " + - "pqm.q_english, " + - "pam.english_name, " + - "hm.si_name AS name, " + - "dl.name AS raisedBy, " + - "pf.remarks AS pmcRemarks, " + - "CONCAT('" + fileBaseUrl + "/gccofficialapp/files', pf.image) AS videoLink, " + - "pf.food_swing_sts AS fsStatus, " + - "dl2.name AS fsChallengedBy, " + - "pf.fs_remarks AS fsRemarks, " + - "CONCAT('" + fileBaseUrl + "/gccofficialapp/files', pf.fs_image) AS fsVideoLink " + - "FROM pmc_feedback pf " + - "JOIN pmc_audit pa ON pa.id = pf.pmc_audit_id AND pa.isactive = 1 AND pa.isdelete = 0 " + dateFilter + - "JOIN hub_master hm ON hm.id = pa.hub_id AND hm.id = ? " + - "JOIN pmc_questions_master pqm ON pqm.qid = pf.questions AND pqm.qid = ? " + - "JOIN questions_category_master qcm ON qcm.qcm_id = pf.qcmid " + - "JOIN pmc_answer_master pam ON pam.aid = pf.answer AND pam.english_name = ? " + - "LEFT JOIN driver_login dl ON pa.cby = dl.loginid " + - "LEFT JOIN driver_login dl2 ON pf.fs_cby = dl2.loginid " + - "WHERE pf.isactive = 1 AND pf.isdelete = 0 " + - "ORDER BY pf.id DESC"; + "pf.id, " + + "DATE_FORMAT(pa.audit_date, '%d/%m/%y %H:%i') AS auditDate, " + + "sm.name AS shift, " + + "hm.zone, " + + "hm.ward, " + + "pa.address, " + + "qcm.audit_category, " + + "pqm.q_english, " + + "pam.english_name, " + + "hm.si_name AS name, " + + "dl.name AS raisedBy, " + + "pf.remarks AS pmcRemarks, " + + "CONCAT('" + fileBaseUrl + "/gccofficialapp/files', pf.image) AS videoLink, " + + "pf.food_swing_sts AS fsStatus, " + + "dl2.name AS fsChallengedBy, " + + "pf.fs_remarks AS fsRemarks, " + + "CONCAT('" + fileBaseUrl + "/gccofficialapp/files', pf.fs_image) AS fsVideoLink " + + "FROM pmc_feedback pf " + + "JOIN pmc_audit pa ON pa.id = pf.pmc_audit_id AND pa.isactive = 1 AND pa.isdelete = 0 " + dateFilter + + shiftFilter + + "JOIN hub_master hm ON hm.id = pa.hub_id AND hm.id = ? " + + "LEFT JOIN shift_master sm ON sm.shiftid = pa.shiftid AND sm.isactive = 1 AND sm.isdelete = 0 " + + "JOIN pmc_questions_master pqm ON pqm.qid = pf.questions AND pqm.qid = ? " + + "JOIN questions_category_master qcm ON qcm.qcm_id = pf.qcmid " + + "JOIN pmc_answer_master pam ON pam.aid = pf.answer AND pam.english_name = ? " + + "LEFT JOIN driver_login dl ON pa.cby = dl.loginid " + + "LEFT JOIN driver_login dl2 ON pf.fs_cby = dl2.loginid " + + "WHERE pf.isactive = 1 AND pf.isdelete = 0 " + + "ORDER BY pf.id DESC"; + java.util.List params = new java.util.ArrayList<>(); if (date != null && !date.trim().isEmpty()) { - return jdbcTemplate.queryForList(sql, date, hubId, qid, status); - } else { - return jdbcTemplate.queryForList(sql, hubId, qid, status); + params.add(date); + } + if (shiftId != null && shiftId > 0) { + params.add(shiftId); } + params.add(hubId); + params.add(qid); + params.add(status); + + return jdbcTemplate.queryForList(sql, params.toArray()); } } diff --git a/src/main/resources/templates/modules/fooddistribution/fooddistributionreport.html b/src/main/resources/templates/modules/fooddistribution/fooddistributionreport.html index 527bc08..1c144ef 100644 --- a/src/main/resources/templates/modules/fooddistribution/fooddistributionreport.html +++ b/src/main/resources/templates/modules/fooddistribution/fooddistributionreport.html @@ -11,6 +11,7 @@ + @@ -122,421 +210,608 @@ -
- - - - - - - - - - - - - - - - - -
Zone - Kitchen Name / Address
+
+
+ + + + + + + + + + + + + + + + + + +
Zone + Kitchen Name / AddressShift
+
-
- - -