IDCImplDao.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package com.happy.dao.impl;
  2. import com.happy.Model.House;
  3. import com.happy.Until.SqlUtil;
  4. import com.happy.dao.IDCDao;
  5. import com.happy.dto.IDCBookStatusEto;
  6. import com.happy.dto.IDCHotelEto;
  7. import com.happy.dto.IDCRankEto;
  8. import com.happy.dto.IDCSum;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  11. import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
  12. import org.springframework.stereotype.Repository;
  13. import java.util.List;
  14. @Repository("IDCDao")
  15. public class IDCImplDao implements IDCDao {
  16. @Autowired
  17. private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
  18. public NamedParameterJdbcTemplate getNamedParameterJdbcTemplate() {
  19. return namedParameterJdbcTemplate;
  20. }
  21. public void setNamedParameterJdbcTemplate(
  22. NamedParameterJdbcTemplate namedParameterJdbcTemplate) {
  23. this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;
  24. }
  25. @Override
  26. public List<IDCBookStatusEto> getBookStatusData() {
  27. String sql = "select a.*,ROUND(a.status_num/b.sum,2) proportion from (select order_status,case when order_status=1 then '待支付' when order_status=2 then '已支付' when order_status=3 then '待入住' when order_status=4 then '已入住' when order_status=5 then '已消费' when order_status=6 then '支付超时' when order_status=7 then '已取消' when order_status=8 then '已退单' when order_status=9 then '已退款' else '无状态' end order_status_name,count(1) status_num from booking where status_del='1' group by order_status order by order_status) a left join (select count(1) sum from booking where status_del='1') b on 1=1 order by proportion desc";
  28. List<IDCBookStatusEto> list = null;
  29. try{
  30. list = namedParameterJdbcTemplate.query(sql, new BeanPropertyRowMapper<>(IDCBookStatusEto.class));
  31. }catch (Exception e){
  32. e.printStackTrace();
  33. }
  34. if(list != null && list.size()>0) return list;
  35. return null;
  36. }
  37. @Override
  38. public List<IDCHotelEto> getHotelData() {
  39. String sql = "select a.NAME hposition,sum(case when ifnull(c.id,0)=0 then 0 else 1 end) hotelNum from hotel_dict a\n" +
  40. "left join (select * from admin_manager where status=1) b on b.hotel_township = a.id\n" +
  41. "left join (select * from hotel where status=1) c on c.manager_id = b.id\n" +
  42. "where a.code=10 group by a.id order by sum(case when ifnull(c.id,0)=0 then 0 else 1 end) DESC";
  43. List<IDCHotelEto> list = null;
  44. try{
  45. list = namedParameterJdbcTemplate.query(sql, new BeanPropertyRowMapper<>(IDCHotelEto.class));
  46. }catch (Exception e){
  47. e.printStackTrace();
  48. }
  49. if(list != null && list.size()>0) return list;
  50. return null;
  51. }
  52. @Override
  53. public List<IDCRankEto> getRankBookNumData(String sqlx) {
  54. SqlUtil.filterKeyword(sqlx);
  55. String sql = "select a.*,@curRank := @curRank + 1 AS rank from (select hotel_name,count(1) book_num from booking where order_status=2 " +sqlx + " group by hotel_id ORDER BY count(1) DESC) a,(SELECT @curRank := 0) r";
  56. List<IDCRankEto> list = null;
  57. try{
  58. list = namedParameterJdbcTemplate.query(sql, new BeanPropertyRowMapper<>(IDCRankEto.class));
  59. }catch (Exception e){
  60. e.printStackTrace();
  61. }
  62. if(list != null && list.size()>0) return list;
  63. return null;
  64. }
  65. @Override
  66. public List<IDCRankEto> getRankSalesAmountData(String sqlx) {
  67. SqlUtil.filterKeyword(sqlx);
  68. String sql = "select a.*,@curRank := @curRank + 1 AS rank from (select hotel_name,sum(pay_account) salesAmount from booking where order_status=2 "+sqlx+" group by hotel_id ORDER BY sum(pay_account) DESC) a,(SELECT @curRank := 0) r";
  69. List<IDCRankEto> list = null;
  70. try{
  71. list = namedParameterJdbcTemplate.query(sql, new BeanPropertyRowMapper<>(IDCRankEto.class));
  72. }catch (Exception e){
  73. e.printStackTrace();
  74. }
  75. if(list != null && list.size()>0) return list;
  76. return null;
  77. }
  78. @Override
  79. public IDCSum getSumData(){
  80. String sql = "select *,bookNumDay-bookNumyDay bookNumGrowth,salesAmountDay-salesAmountyDay salesAmountGrowth from (\n" +
  81. "\t(select count(1) bookNumDay from booking where order_status = 2 and DATE_FORMAT(pay_time,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')) a,\n" +
  82. "\t(select count(1) bookNumyDay from booking where order_status = 2 and DATE_FORMAT(pay_time,'%Y-%m-%d') = DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 DAY),'%Y-%m-%d')) b,\n" +
  83. "\t(select sum(pay_account) salesAmountDay from booking where order_status = 2 and DATE_FORMAT(pay_time,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')) c,\n" +
  84. "\t(select sum(pay_account) salesAmountyDay from booking where order_status = 2 and DATE_FORMAT(pay_time,'%Y-%m-%d') = DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 DAY),'%Y-%m-%d')) d,\n" +
  85. "\t(select count(1) hotelSum from admin_manager where status = 1 and level=2) e\n" +
  86. ")";
  87. List<IDCSum> list = null;
  88. try{
  89. list = namedParameterJdbcTemplate.query(sql, new BeanPropertyRowMapper<>(IDCSum.class));
  90. }catch (Exception e){
  91. e.printStackTrace();
  92. }
  93. if(list != null && list.size()>0) return list.get(0);
  94. return null;
  95. }
  96. }