CM works overall dashboard integrate with gcc_office_portal
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

166 lines
6.4 KiB

package in.gov.chennaicorporation.gccoffice.cmdashboard.service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import javax.transaction.Transactional;
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;
@Service
public class CmDashboardService {
private JdbcTemplate jdbcTemplate;
@Autowired
public void setDataSourcemysql(@Qualifier("mysqlAppDataSource") DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
@Transactional
public List<Map<String, Object>> getCombinedCmDashboardReports(String zonename) {
String sqlQuery;
Object[] params;
if (zonename != null && !zonename.equalsIgnoreCase("all")) {
sqlQuery = "SELECT cm.schemename AS name, " + "COUNT(*) AS count, " + "'Scheme' AS type "
+ "FROM gcc_apps.mytable cm " + "WHERE cm.zonename = ? " + "GROUP BY cm.schemename " + "UNION ALL "
+ "SELECT cm.typeofwork AS name, " + "COUNT(*) AS count, " + "'TypeOfWork' AS type "
+ "FROM gcc_apps.mytable cm " + "WHERE cm.zonename = ? " + "GROUP BY cm.typeofwork";
params = new Object[] { zonename, zonename };
} else {
sqlQuery = "SELECT cm.schemename AS name, " + "COUNT(*) AS count, " + "'Scheme' AS type "
+ "FROM gcc_apps.mytable cm " + "GROUP BY cm.schemename " + "UNION ALL "
+ "SELECT cm.typeofwork AS name, " + "COUNT(*) AS count, " + "'TypeOfWork' AS type "
+ "FROM gcc_apps.mytable cm " + "GROUP BY cm.typeofwork";
params = new Object[] {};
}
return jdbcTemplate.queryForList(sqlQuery, params);
}
@Transactional
public List<Map<String, Object>> getRegionCounts() {
String sqlQuery = "SELECT regionname, COUNT(*) AS region_count FROM gcc_apps.mytable GROUP BY regionname";
return jdbcTemplate.queryForList(sqlQuery);
}
@Transactional
public List<Map<String, Object>> getZoneCounts() {
String sqlQuery = "SELECT zonename, COUNT(*) AS zone_count FROM gcc_apps.mytable GROUP BY zonename";
return jdbcTemplate.queryForList(sqlQuery);
}
@Transactional
public Map<String, Object> getRegionDetails(String regionname) {
String sqlQuery = "SELECT SUM(cm.valueofwork) AS totalValueOfWork, COUNT(*) AS totalWorkCounts "
+ "FROM gcc_apps.mytable cm " + "WHERE cm.regionname = ? ";
Object[] params = new Object[] { regionname };
Map<String, Object> regiondetails = jdbcTemplate.queryForMap(sqlQuery, params);
String sqlQueryRegionZone = "SELECT zonename AS name, " +
"COUNT(*) AS regionszones_count, " +
"SUM(valueofwork) AS totalValueOfWork, " +
"COUNT(*) AS totalWorkCounts " +
"FROM gcc_apps.mytable " +
"WHERE regionname = ? " +
"GROUP BY zonename;";
List<Map<String, Object>> regionzonedetails = jdbcTemplate.queryForList(sqlQueryRegionZone, params);
regiondetails.put("regionzonedetails", regionzonedetails);
return regiondetails;
}
@Transactional
public Map<String, Object> getSchemeDetails(String schemename, String zonename) {
String sqlQuery = "SELECT SUM(cm.valueofwork) AS totalValueOfWork, COUNT(*) AS totalWorkCounts "
+ "FROM gcc_apps.mytable cm " + "WHERE cm.schemename = ? "
+ (zonename != null && !zonename.equalsIgnoreCase("all") ? " AND cm.zonename = ?" : "");
Object[] params = zonename != null && !zonename.equalsIgnoreCase("all") ? new Object[] { schemename, zonename }
: new Object[] { schemename };
Map<String, Object> schemeDetails = jdbcTemplate.queryForMap(sqlQuery, params);
String sqlQueryTypeOfWork = "SELECT cm.typeofwork AS name, COUNT(*) AS count, SUM(cm.valueofwork) AS totalValueOfWork "
+ "FROM gcc_apps.mytable cm " + "WHERE cm.schemename = ? "
+ (zonename != null && !zonename.equalsIgnoreCase("all") ? " AND cm.zonename = ?" : "")
+ "GROUP BY cm.typeofwork";
List<Map<String, Object>> typeOfWorkDetails = jdbcTemplate.queryForList(sqlQueryTypeOfWork, params);
schemeDetails.put("typeOfWorkDetails", typeOfWorkDetails);
return schemeDetails;
}
@Transactional
public Map<String, Object> getTypeOfWorkDetails(String typeofwork, String zonename) {
String sqlQuery = "SELECT SUM(cm.valueofwork) AS totalValueOfWork, COUNT(*) AS totalWorkCounts "
+ "FROM gcc_apps.mytable cm " + "WHERE cm.typeofwork = ? "
+ (zonename != null && !zonename.equalsIgnoreCase("all") ? " AND cm.zonename = ?" : "");
Object[] params = zonename != null && !zonename.equalsIgnoreCase("all") ? new Object[] { typeofwork, zonename }
: new Object[] { typeofwork };
Map<String, Object> typeOfWorkDetail = jdbcTemplate.queryForMap(sqlQuery, params);
String sqlQueryTypeOfWork = "SELECT cm.schemename AS name, COUNT(*) AS count, SUM(cm.valueofwork) AS totalValueOfWork "
+ "FROM gcc_apps.mytable cm " + "WHERE cm.typeofwork = ? "
+ (zonename != null && !zonename.equalsIgnoreCase("all") ? " AND cm.zonename = ?" : "")
+ "GROUP BY cm.schemename";
List<Map<String, Object>> schemeNameDetails = jdbcTemplate.queryForList(sqlQueryTypeOfWork, params);
typeOfWorkDetail.put("schemeNameDetails", schemeNameDetails);
return typeOfWorkDetail;
}
public List<Map<String, Object>> getCmDashboardAllReports() {
String sqlQuery = "SELECT * FROM gcc_apps.mytable";
List<Map<String, Object>> result = jdbcTemplate.queryForList(sqlQuery);
return result;
}
public Map<String, Object> getCMDetails(int id) {
String sql = "SELECT * FROM gcc_apps.mytable WHERE data_id = ?";
return jdbcTemplate.queryForMap(sql, id);
}
@Transactional
public List<Map<String, Object>> getCmDashboardAllReportsFiltered(String zonename, String schemename, String typeofwork) {
String sqlQuery = "SELECT * FROM gcc_apps.mytable WHERE 1=1";
List<Object> params = new ArrayList<>();
if (zonename != null && !zonename.equalsIgnoreCase("all")) {
sqlQuery += " AND zonename = ?";
params.add(zonename);
}
if (schemename != null && !schemename.equalsIgnoreCase("all")) {
sqlQuery += " AND schemename = ?";
params.add(schemename);
}
if (typeofwork != null && !typeofwork.equalsIgnoreCase("all")) {
sqlQuery += " AND typeofwork = ?";
params.add(typeofwork);
}
return jdbcTemplate.queryForList(sqlQuery, params.toArray());
}
}