|
@@ -5,6 +5,8 @@ import com.happy.Model.FileInfo;
|
|
|
import com.happy.Model.Hotel;
|
|
import com.happy.Model.Hotel;
|
|
|
import com.happy.Model.House;
|
|
import com.happy.Model.House;
|
|
|
import com.happy.Model.weixin.Users;
|
|
import com.happy.Model.weixin.Users;
|
|
|
|
|
+import com.happy.Until.DateUtil;
|
|
|
|
|
+import com.happy.Until.Enum.OrderEnum;
|
|
|
import com.happy.Until.Enum.PayEnum;
|
|
import com.happy.Until.Enum.PayEnum;
|
|
|
import com.happy.Until.Func;
|
|
import com.happy.Until.Func;
|
|
|
import com.happy.dao.BookDao;
|
|
import com.happy.dao.BookDao;
|
|
@@ -126,9 +128,12 @@ public class AppHomePageImplService implements AppHomePageService {
|
|
|
// 数据字典写入hotel
|
|
// 数据字典写入hotel
|
|
|
List<String> hlist = new ArrayList<>();
|
|
List<String> hlist = new ArrayList<>();
|
|
|
List houseDicList = new ArrayList();
|
|
List houseDicList = new ArrayList();
|
|
|
|
|
+ Map<String,House> houseMap = new HashMap<>();
|
|
|
for (House house:houseList) {
|
|
for (House house:houseList) {
|
|
|
if (house == null || Func.checkNull(Func.parseStr(house.getNumber())))
|
|
if (house == null || Func.checkNull(Func.parseStr(house.getNumber())))
|
|
|
continue;
|
|
continue;
|
|
|
|
|
+
|
|
|
|
|
+ houseMap.put(Func.parseStr(house.getId()),house);
|
|
|
// “,”号分逗开来
|
|
// “,”号分逗开来
|
|
|
hlist = Arrays.asList(house.gethConfig().split(","));
|
|
hlist = Arrays.asList(house.gethConfig().split(","));
|
|
|
houseDicList = new ArrayList();
|
|
houseDicList = new ArrayList();
|
|
@@ -144,10 +149,10 @@ public class AppHomePageImplService implements AppHomePageService {
|
|
|
// 判断是否有房间,对每个房型进行标识
|
|
// 判断是否有房间,对每个房型进行标识
|
|
|
StringBuffer strSqlBook = new StringBuffer();
|
|
StringBuffer strSqlBook = new StringBuffer();
|
|
|
strSqlBook.append(" and hotel_manager_id = '").append(hotel.getManagerId()).append(" ' ");
|
|
strSqlBook.append(" and hotel_manager_id = '").append(hotel.getManagerId()).append(" ' ");
|
|
|
- if (!Func.checkNull(queryStartTime))
|
|
|
|
|
- strSqlBook.append(" and order_start_time >= '").append(queryStartTime).append(" 00:00:00 ' ");
|
|
|
|
|
- if (!Func.checkNull(queryEndTime))
|
|
|
|
|
- strSqlBook.append(" and order_end_time < '").append(queryEndTime).append(" 23:59:59 ' ");
|
|
|
|
|
|
|
+// if (!Func.checkNull(queryStartTime))
|
|
|
|
|
+// strSqlBook.append(" and order_start_time <= '").append(queryStartTime).append(" 00:00:00 ' ");
|
|
|
|
|
+// if (!Func.checkNull(queryEndTime))
|
|
|
|
|
+// strSqlBook.append(" and order_end_time >= '").append(queryEndTime).append(" 00:00:00 ' ");
|
|
|
|
|
|
|
|
|
|
|
|
|
//1待支付,2已支付,3待入住,4已入住,5已消费,6支付超时,7已取消,8已退单,9已退款
|
|
//1待支付,2已支付,3待入住,4已入住,5已消费,6支付超时,7已取消,8已退单,9已退款
|
|
@@ -157,34 +162,34 @@ public class AppHomePageImplService implements AppHomePageService {
|
|
|
strSqlBook.append(" or order_status = '").append(PayEnum.已入住.getNum()).append(" ' ) ");
|
|
strSqlBook.append(" or order_status = '").append(PayEnum.已入住.getNum()).append(" ' ) ");
|
|
|
List<Booking> bookList = bookService.queryList(strSqlBook.toString());
|
|
List<Booking> bookList = bookService.queryList(strSqlBook.toString());
|
|
|
|
|
|
|
|
- // 订房数据字典Map<houseid, 订房数量>
|
|
|
|
|
- Map<String, Integer> houseBookingMap = new HashMap();
|
|
|
|
|
- if (bookList != null && bookList.size() > 0)
|
|
|
|
|
- {
|
|
|
|
|
- Integer numberTemp = new Integer(0);
|
|
|
|
|
- for (Booking booking: bookList) {
|
|
|
|
|
- if (Func.checkNull(booking.getHouseId()))
|
|
|
|
|
- continue;
|
|
|
|
|
-
|
|
|
|
|
- if (houseBookingMap.containsKey(booking.getHouseId()))
|
|
|
|
|
- {
|
|
|
|
|
- numberTemp = houseBookingMap.get(booking.getHouseId());
|
|
|
|
|
- int i = Func.parseInt(numberTemp) + booking.getHouseOrderNumber();
|
|
|
|
|
- houseBookingMap.put(booking.getHouseId(),i);
|
|
|
|
|
- }else {
|
|
|
|
|
- houseBookingMap.put(booking.getHouseId(),booking.getHouseOrderNumber());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
|
|
+// // 订房数据字典Map<houseid, 订房数量>
|
|
|
|
|
+// Map<String, Integer> houseBookingMap = new HashMap();
|
|
|
|
|
+// if (bookList != null && bookList.size() > 0)
|
|
|
|
|
+// {
|
|
|
|
|
+// Integer numberTemp = new Integer(0);
|
|
|
|
|
+// for (Booking booking: bookList) {
|
|
|
|
|
+// if (Func.checkNull(booking.getHouseId()))
|
|
|
|
|
+// continue;
|
|
|
|
|
+//
|
|
|
|
|
+// if (houseBookingMap.containsKey(booking.getHouseId()))
|
|
|
|
|
+// {
|
|
|
|
|
+// numberTemp = houseBookingMap.get(booking.getHouseId());
|
|
|
|
|
+// int i = Func.parseInt(numberTemp) + booking.getHouseOrderNumber();
|
|
|
|
|
+// houseBookingMap.put(booking.getHouseId(),i);
|
|
|
|
|
+// }else {
|
|
|
|
|
+// houseBookingMap.put(booking.getHouseId(),booking.getHouseOrderNumber());
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+ Map<String,Integer> houseBookingMap = assignHouseRemainRooms(bookList,queryStartTime,queryEndTime,houseMap); // 每个房间留存房间数量Map<房间id,数量>
|
|
|
|
|
|
|
|
for (House house:houseList) {
|
|
for (House house:houseList) {
|
|
|
if (house == null)
|
|
if (house == null)
|
|
|
continue;
|
|
continue;
|
|
|
|
|
|
|
|
-
|
|
|
|
|
- // 将房间图片,写入房型对象中
|
|
|
|
|
|
|
+ // 将房间的图片,写入房型对象中
|
|
|
StringBuilder fileSqlx = new StringBuilder("");
|
|
StringBuilder fileSqlx = new StringBuilder("");
|
|
|
fileSqlx.append(" and link_id = '").append(house.getId()).append("'");
|
|
fileSqlx.append(" and link_id = '").append(house.getId()).append("'");
|
|
|
List<FileInfo> fileInfoList = fileService.queryList(fileSqlx.toString());
|
|
List<FileInfo> fileInfoList = fileService.queryList(fileSqlx.toString());
|
|
@@ -204,4 +209,105 @@ public class AppHomePageImplService implements AppHomePageService {
|
|
|
hotel.setHouseList(houseList);
|
|
hotel.setHouseList(houseList);
|
|
|
return hotel;
|
|
return hotel;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 在时间区间下进行验证每个房间的剩余数据,取最小数量作为留存房间的数量
|
|
|
|
|
+ * @param bookList 所有的订单列表
|
|
|
|
|
+ * @param startDate 查询开始时间
|
|
|
|
|
+ * @param endDate 查询结束时间
|
|
|
|
|
+ * @param houseMap Map<房间id, House>
|
|
|
|
|
+ * @return Map<房间id,数量>
|
|
|
|
|
+ */
|
|
|
|
|
+ public Map assignHouseRemainRooms(List<Booking> bookList, String startDate, String endDate ,Map<String, House> houseMap) {
|
|
|
|
|
+ if (bookList == null || Func.checkNull(startDate) || Func.checkNull(endDate) || houseMap == null)
|
|
|
|
|
+ return new HashMap();
|
|
|
|
|
+
|
|
|
|
|
+ // 将时间统一转化为 yyyy-MM-dd
|
|
|
|
|
+ String startTime = DateUtil.parseDateToStr((Func.parseDate(startDate)), DateUtil.Time_Formatter_Day);
|
|
|
|
|
+ String endTime = DateUtil.parseDateToStr((Func.parseDate(endDate)), DateUtil.Time_Formatter_Day);
|
|
|
|
|
+
|
|
|
|
|
+ Map<String, List<Booking>> bookMap = new HashMap<>(); // map<houseId, liset<Booking>>
|
|
|
|
|
+ List<Booking> bList = new ArrayList<>();
|
|
|
|
|
+ for (Booking b :bookList) {
|
|
|
|
|
+ if (Func.checkNull(b.getHouseId()))
|
|
|
|
|
+ continue;
|
|
|
|
|
+
|
|
|
|
|
+ if (bookMap.containsKey(b.getHouseId()))
|
|
|
|
|
+ {
|
|
|
|
|
+ bookMap.get(b.getHouseId()).add(b);
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ bList = new ArrayList<>();
|
|
|
|
|
+ bList.add(b);
|
|
|
|
|
+ bookMap.put(b.getHouseId(),bList);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Set<String> dayQuerySet = new HashSet<>();
|
|
|
|
|
+ // 遍历查询的每一天当做一个列表数据
|
|
|
|
|
+ int dayQuerys = DateUtil.getDayDiff(startTime, endTime);
|
|
|
|
|
+ for (int i = 0; i < dayQuerys; i++) {
|
|
|
|
|
+ String time = DateUtil.parseDateToStr(DateUtil.addDate(DateUtil.parseDateOnly(startTime), Calendar.DATE, i), DateUtil.Time_Formatter_Day);
|
|
|
|
|
+ dayQuerySet.add(time);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Map<String, Integer> houseBookingMap = new HashMap<>();
|
|
|
|
|
+ List<Booking> bookHouseList = new ArrayList<>(); // 相同房型的订单汇总
|
|
|
|
|
+ Map<String, Integer> bookingTimeMap = new HashMap(); // map<时间,天数>进行累加 订单中的房间数量
|
|
|
|
|
+ String houseId = null; // 房间id
|
|
|
|
|
+ String timeTemp = null; // 日期 例2023-08-23
|
|
|
|
|
+
|
|
|
|
|
+ for (Map.Entry<String, List<Booking>> entry : bookMap.entrySet())
|
|
|
|
|
+ {
|
|
|
|
|
+ houseId = entry.getKey();
|
|
|
|
|
+ bookHouseList = entry.getValue(); // 相同房型的订单汇总
|
|
|
|
|
+
|
|
|
|
|
+ bookingTimeMap = new HashMap(); // map<时间,天数>进行累加 单个房型的订单中房间的数量
|
|
|
|
|
+ for (Booking booking : bookHouseList) {
|
|
|
|
|
+ if (Func.checkNull(booking.getHouseId()))
|
|
|
|
|
+ continue;
|
|
|
|
|
+
|
|
|
|
|
+ int day = DateUtil.getDayDiff(booking.getOrderStartTime(), booking.getOrderEndTime());
|
|
|
|
|
+ for (int i = 0; i < day; i++) {
|
|
|
|
|
+ timeTemp = DateUtil.parseDateToStr(DateUtil.addDate(DateUtil.parseDateOnly(booking.getOrderStartTime()), Calendar.DATE, i), DateUtil.Time_Formatter_Day);
|
|
|
|
|
+ if (!dayQuerySet.contains(timeTemp)) // 不在查询范围内,不作记录
|
|
|
|
|
+ continue;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ if (!bookingTimeMap.containsKey(timeTemp)) {
|
|
|
|
|
+ bookingTimeMap.put(timeTemp, booking.getHouseOrderNumber());
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ bookingTimeMap.put(timeTemp, booking.getHouseOrderNumber() + Func.parseInt(bookingTimeMap.get(timeTemp)));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ houseBookingMap.put(houseId,getMaxNum(bookingTimeMap));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return houseBookingMap;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 一个房间的所有日期当中,取单日最大值房间数量,当做留存数
|
|
|
|
|
+ * @param bookingTimeMap
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public Integer getMaxNum(Map<String, Integer> bookingTimeMap)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (bookingTimeMap == null || bookingTimeMap.isEmpty())
|
|
|
|
|
+ return 0;
|
|
|
|
|
+
|
|
|
|
|
+ List<Integer> numbersTemp = new ArrayList<Integer>(); // 临时数值
|
|
|
|
|
+ for (Map.Entry<String,Integer> entry : bookingTimeMap.entrySet())
|
|
|
|
|
+ {
|
|
|
|
|
+ numbersTemp.add(entry.getValue());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return numbersTemp.stream ().reduce (Integer::max).get ();// 得到最大值
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|