Browse Source

订单办理入住、退房功能修改

lijie 2 years ago
parent
commit
ce6bb6bb8d

+ 88 - 25
mhotel/src/com/happy/action/bookAction.java

@@ -18,6 +18,7 @@ import org.apache.struts2.interceptor.ServletRequestAware;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.text.ParseException;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -146,31 +147,7 @@ public class bookAction extends ActionSupport implements ServletRequestAware {
                         });
                     }
                     //添加民宿房态表
-                    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-                    DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-                    LocalDateTime str = LocalDateTime.parse(book.getOrderStartTime(), inputFormatter);
-                    LocalDateTime end = LocalDateTime.parse(book.getOrderEndTime(), inputFormatter);
-                    String a = str.format(formatter);
-                    String B = end.format(formatter);
-                    LocalDate strDate = LocalDate.parse(a, formatter);
-                    LocalDate endDate = LocalDate.parse(B, formatter);
-                    List<HouseNumberStatus> list = new ArrayList<>();
-                    Date now = DateUtil.formateDate(DateUtil.getCurrentDate(), DateUtil.Time_Formatter_Second);
-                    for (String number : Ids){
-                        for (LocalDate date = strDate;!date.isAfter(endDate.minusDays(1));date = date.plusDays(1)){
-                            HouseNumberStatus houseNumberStatus = new HouseNumberStatus();
-                            houseNumberStatus.setNumberId(number);
-                            houseNumberStatus.setId(String.valueOf(UUID.randomUUID()));
-                            houseNumberStatus.setCreateDate(now);
-                            houseNumberStatus.setModifyDate(now);
-                            houseNumberStatus.setRemark("");
-                            houseNumberStatus.setBookingId(String.valueOf(book.getId()));
-                            houseNumberStatus.setSetDate(date.format(formatter));
-                            houseNumberStatus.setStatus(5);//状态(0删除 1.正常 2.关房 3.脏房 4.净房 5.预定 6.入住)
-                            list.add(houseNumberStatus);
-                        }
-                    }
-
+                    List<HouseNumberStatus> list = handleHouseStatus(Ids, 5, book);
                     int m = houseNumberStatusService.saveBatch(list);
                     if (m == 0){
                         resultJson.put("message", "确认失败");
@@ -186,6 +163,43 @@ public class bookAction extends ActionSupport implements ServletRequestAware {
                         ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
                         return null;
                     }
+                    if(houseNumberIds == null || "".equals(houseNumberIds)){
+                        resultJson.put("message", "请分配房间号");
+                        resultJson.put("code", 502);
+                        ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                        return null;
+                    }
+                    List<HouseNumber> houseNumbers1 = houseNumberService.queryHouseStatus(book);
+                    List<String> ids = Arrays.asList(houseNumberIds.split(","));
+                    if (houseNumbers1!=null){
+                        for (String id: ids){
+                            for (HouseNumber houseNumber: houseNumbers1){
+                                if (houseNumber.getStatus() != null && houseNumber.getStatus()==3 && id.equals(houseNumber.getId())){
+                                    resultJson.put("message", "选择的房间该时间段已有预定!请重新选择房间!");
+                                    resultJson.put("code", 502);
+                                    ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                                    return null;
+                                }
+                            }
+                        }
+                    }
+                    //删除 预定房态
+                    int a = houseNumberStatusService.updateHouseNumberStatus(String.valueOf(id));
+                    if (a == 0){
+                        resultJson.put("message", "确认失败");
+                        resultJson.put("code", 502);
+                        ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                        return null;
+                    }
+                    //写入 入住数据
+                    List<HouseNumberStatus> list1 = handleHouseStatus(ids, 6, book);
+                    int n = houseNumberStatusService.saveBatch(list1);
+                    if (n == 0){
+                        resultJson.put("message", "确认失败");
+                        resultJson.put("code", 502);
+                        ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                        return null;
+                    }
                     book.setOrderStatus("4");
                     book.setLiveTime(UUIDUtil.getNewDate());
                     book.setUpdateTime(UUIDUtil.getNewDate());
@@ -199,6 +213,25 @@ public class bookAction extends ActionSupport implements ServletRequestAware {
                         ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
                         return null;
                     }
+                    //房态删除
+                    String sql = " and booking_id = " + id;
+                    List<HouseNumberStatus> houseNumberStatuse = houseNumberStatusService.getList(sql);
+                    int i1 = houseNumberStatusService.updateHouseNumberStatus(String.valueOf(id));
+                    if (i1 == 0){
+                        resultJson.put("message", "退房失败");
+                        resultJson.put("code", 502);
+                        ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                        return null;
+                    }
+                    //房间设为脏房
+                    String numberIds = houseNumberStatuse.stream().map(HouseNumberStatus::getNumberId).distinct().collect(Collectors.joining());
+                    int i2 = houseNumberService.updateHouseStatus(numberIds);
+                    if (i2 == 0){
+                        resultJson.put("message", "退房失败");
+                        resultJson.put("code", 502);
+                        ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                        return null;
+                    }
                     book.setCheckOutTime(UUIDUtil.getNewDate());//退房时间
                     book.setUpdateTime(UUIDUtil.getNewDate());
                     book.setOrderStatus("5");
@@ -255,6 +288,36 @@ public class bookAction extends ActionSupport implements ServletRequestAware {
     }
 
     /**
+     * 根据传入传入房间号写入状态
+     */
+    private List<HouseNumberStatus> handleHouseStatus(List<String> Ids,int status,Booking book) throws ParseException {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDateTime str = LocalDateTime.parse(book.getOrderStartTime(), inputFormatter);
+        LocalDateTime end = LocalDateTime.parse(book.getOrderEndTime(), inputFormatter);
+        String a = str.format(formatter);
+        String B = end.format(formatter);
+        LocalDate strDate = LocalDate.parse(a, formatter);
+        LocalDate endDate = LocalDate.parse(B, formatter);
+        List<HouseNumberStatus> list = new ArrayList<>();
+        Date now = DateUtil.formateDate(DateUtil.getCurrentDate(), DateUtil.Time_Formatter_Second);
+        for (String number : Ids){
+            for (LocalDate date = strDate;!date.isAfter(endDate.minusDays(1));date = date.plusDays(1)){
+                HouseNumberStatus houseNumberStatus = new HouseNumberStatus();
+                houseNumberStatus.setNumberId(number);
+                houseNumberStatus.setId(String.valueOf(UUID.randomUUID()));
+                houseNumberStatus.setCreateDate(now);
+                houseNumberStatus.setModifyDate(now);
+                houseNumberStatus.setRemark("");
+                houseNumberStatus.setBookingId(String.valueOf(book.getId()));
+                houseNumberStatus.setSetDate(date.format(formatter));
+                houseNumberStatus.setStatus(status);//状态(0删除 1.正常 2.关房 3.脏房 4.净房 5.预定 6.入住)
+                list.add(houseNumberStatus);
+            }
+        }
+        return list;
+    }
+    /**
      * 描述:分页查询订单
      * @return
      */

+ 7 - 0
mhotel/src/com/happy/dao/HouseNumberDao.java

@@ -25,4 +25,11 @@ public interface HouseNumberDao {
 
     List<HouseNumber> queryByHouseId(String houseId);
 
+    /**
+     * 退房批量置脏
+     * @param ids 房间ids
+     * @return 影响行数
+     */
+    int updateHouseStatus(String ids);
+
 }

+ 4 - 0
mhotel/src/com/happy/dao/HouseNumberStatusDao.java

@@ -8,6 +8,8 @@ import java.util.List;
 public interface HouseNumberStatusDao {
     int saveBatch(List<HouseNumberStatus> list);
 
+    int updateHouseNumberStatus(String bookId);
+
     List<HouseNumberStatusDto> queryList(HouseNumberStatusDto houseNumberStatusDto);
 
     void updateStatus(HouseNumberStatusDto houseNumberStatusDto);
@@ -16,4 +18,6 @@ public interface HouseNumberStatusDao {
      * 通过订单id集合查询订单表的一些信息集合
      */
     List<HouseNumberStatusDto> queryOrderSomeColumnListByIds(List<String> ids);
+
+    List<HouseNumberStatus> getList(String sqlx);
 }

+ 16 - 1
mhotel/src/com/happy/dao/impl/HouseNumberImplDao.java

@@ -80,9 +80,10 @@ public class HouseNumberImplDao implements HouseNumberDao {
     public List<HouseNumber> queryHouseStatus(Booking book) {
         String sql = "select `id`,`house_id`,`number_name`,`create_id`,`create_date`,`modify_date`,IF(b.number_id is not null, 3, `status`) as `status` from \n" +
                 "(select * from house_number where house_id = :house_id and status != 0) a\n" +
-                "left join (select number_id from house_number_status where DATE_FORMAT(set_date,'%Y-%m-%d') >= :order_start_time and DATE_FORMAT(set_date,'%Y-%m-%d') <= :order_end_time and `status` != 1 group by number_id) b on a.id = b.number_id";
+                "left join (select number_id from house_number_status where DATE_FORMAT(set_date,'%Y-%m-%d') >= :order_start_time and DATE_FORMAT(set_date,'%Y-%m-%d') <= :order_end_time and booking_id != :booking_id and `status` != 1 group by number_id) b on a.id = b.number_id";
         MapSqlParameterSource sps = new MapSqlParameterSource();
         sps.addValue("house_id", book.getHouseId());
+        sps.addValue("booking_id", book.getId());
         sps.addValue("order_start_time", book.getOrderStartTime().substring(0, 10));
         sps.addValue("order_end_time", book.getOrderEndTime().substring(0, 10));
         List<HouseNumber> list = new ArrayList<>();
@@ -124,4 +125,18 @@ public class HouseNumberImplDao implements HouseNumberDao {
             addValue("houseId", houseId);
         }}, new BeanPropertyRowMapper<>(HouseNumber.class));
     }
+
+    @Override
+    public int updateHouseStatus(String ids) {
+        String delSql = "update `house_number` set house_status=2 where id in (:ids)";
+        MapSqlParameterSource sps = new MapSqlParameterSource();
+        sps.addValue("ids", ids);
+        int num = 0;
+        try {
+            num = namedParameterJdbcTemplate.update(delSql, sps);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return num;
+    }
 }

+ 34 - 0
mhotel/src/com/happy/dao/impl/HouseNumberStatusImplDao.java

@@ -1,8 +1,10 @@
 package com.happy.dao.impl;
 
+import com.happy.Model.Booking;
 import com.happy.Model.HouseNumber;
 import com.happy.Model.HouseNumberStatus;
 import com.happy.Until.BeanMapTool;
+import com.happy.Until.SqlUtil;
 import com.happy.Until.UUIDUtil;
 import com.happy.dao.HouseNumberDao;
 import com.happy.dao.HouseNumberStatusDao;
@@ -46,6 +48,24 @@ public class HouseNumberStatusImplDao implements HouseNumberStatusDao {
     }
 
     @Override
+    public int updateHouseNumberStatus(String bookId) {
+        StringBuffer stringBuffer =  new StringBuffer("update house_number_status set status = :status, modify_date = :modifyDate");
+        MapSqlParameterSource sps = new MapSqlParameterSource();
+        stringBuffer.append("  where booking_id=:booking_id  ");
+        sps.addValue("status",0);
+        sps.addValue("booking_id",bookId);
+        sps.addValue("modifyDate", UUIDUtil.getNewDate());
+        int num = 0;
+        try{
+            num = namedParameterJdbcTemplate.update(stringBuffer.toString(), sps);
+        }
+        catch(Exception e){
+            e.printStackTrace();
+        }
+        return num;
+    }
+
+    @Override
     public void updateStatus(HouseNumberStatusDto houseNumberStatusDto) {
         StringBuilder sql = new StringBuilder("update house_number_status set status = :status, modify_date = :modifyDate");
         if (StringUtils.isNotBlank(houseNumberStatusDto.getRemark())) {
@@ -75,6 +95,20 @@ public class HouseNumberStatusImplDao implements HouseNumberStatusDao {
         }}, new BeanPropertyRowMapper<>(HouseNumberStatusDto.class));
     }
 
+    @Override
+    public List<HouseNumberStatus> getList(String sqlx) {
+        SqlUtil.filterKeyword(sqlx);
+        String sql = "select id, number_id, booking_id, close_type, remark, date_format(set_date, '%Y-%m-%d') as set_date, create_id, date_format(create_date, '%Y-%m-%d %H:%i:%s') as create_date, date_format(modify_date, '%Y-%m-%d %H:%i:%s') as modify_date, status from house_number_status where 1 = 1 and status != 0" + sqlx;
+        List<HouseNumberStatus> list = null;
+        try{
+            list = namedParameterJdbcTemplate.query(sql, new BeanPropertyRowMapper<>(HouseNumberStatus.class));
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        if(list != null && list.size()>0) return list;
+        return null;
+    }
+
     private StringBuilder buildSql(String sqlHead, String sqlTail, HouseNumberStatusDto houseNumberStatusDto) {
         StringBuilder sql = new StringBuilder(sqlHead);
         if (StringUtils.isNotBlank(houseNumberStatusDto.getNumberId())) {

+ 6 - 0
mhotel/src/com/happy/service/HouseNumberService.java

@@ -23,6 +23,12 @@ public interface HouseNumberService {
      * @return 印象行数
      */
     int updateBatch(List<HouseNumber> list);
+    /**
+     * 退房批量置脏
+     * @param ids 房间ids
+     * @return 影响行数
+     */
+    int updateHouseStatus(String ids);
 
     /**
      * 描述:查询可添加的房间

+ 3 - 0
mhotel/src/com/happy/service/HouseNumberStatusService.java

@@ -9,6 +9,9 @@ import java.util.List;
 public interface HouseNumberStatusService {
     int saveBatch(List<HouseNumberStatus> list);
 
+    int updateHouseNumberStatus(String bookId);
+
+    List<HouseNumberStatus> getList(String sqlx);
     /**
      * 表格数据 房态管理-房态管理
      */

+ 5 - 0
mhotel/src/com/happy/service/impl/HouseNumberImplService.java

@@ -29,6 +29,11 @@ public class HouseNumberImplService implements HouseNumberService {
     }
 
     @Override
+    public int updateHouseStatus(String ids) {
+        return houseNumberDao.updateHouseStatus(ids);
+    }
+
+    @Override
     public List<HouseNumber> queryHouseStatus(Booking book) {
         return houseNumberDao.queryHouseStatus(book);
     }

+ 10 - 0
mhotel/src/com/happy/service/impl/HouseNumberStatusImplService.java

@@ -44,6 +44,16 @@ public class HouseNumberStatusImplService implements HouseNumberStatusService {
     }
 
     @Override
+    public int updateHouseNumberStatus(String bookId) {
+        return houseNumberStatusDao.updateHouseNumberStatus(bookId);
+    }
+
+    @Override
+    public List<HouseNumberStatus> getList(String sqlx) {
+        return houseNumberStatusDao.getList(sqlx);
+    }
+
+    @Override
     public JSONObject queryData(HouseNumberStatusDto houseNumberStatusDto) {
         String managerId = houseNumberStatusDto.getManagerId();
         Integer showType = houseNumberStatusDto.getShowType();