bookAction.java 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686
  1. package com.happy.action;
  2. import com.baidubce.model.User;
  3. import com.happy.Model.*;
  4. import com.happy.Model.weixin.Users;
  5. import com.happy.Until.*;
  6. import com.happy.Until.Enum.TempEnum;
  7. import com.happy.Until.Excel.toExcel;
  8. import com.happy.common.http.Message;
  9. import com.happy.dto.BookTypeEto;
  10. import com.happy.dto.IPage;
  11. import com.happy.service.*;
  12. import com.opensymphony.xwork2.ActionSupport;
  13. import net.sf.json.JSONObject;
  14. import org.apache.struts2.ServletActionContext;
  15. import org.apache.struts2.interceptor.ServletRequestAware;
  16. import javax.annotation.Resource;
  17. import javax.servlet.http.HttpServletRequest;
  18. import javax.servlet.http.HttpServletResponse;
  19. import java.math.BigDecimal;
  20. import java.text.ParseException;
  21. import java.time.LocalDate;
  22. import java.time.LocalDateTime;
  23. import java.time.format.DateTimeFormatter;
  24. import java.util.*;
  25. import java.util.concurrent.atomic.AtomicInteger;
  26. import java.util.stream.Collectors;
  27. public class bookAction extends ActionSupport implements ServletRequestAware {
  28. private HttpServletRequest request;
  29. public HttpServletResponse response;
  30. @Resource
  31. public BookService bookService;
  32. @Resource
  33. public UserService userService;
  34. @Resource
  35. public HotelDictService hotelDictService;
  36. @Resource
  37. public AdminManagerService adminManagerService;
  38. @Resource
  39. public HouseNumberStatusService houseNumberStatusService;
  40. @Resource
  41. public HouseNumberService houseNumberService;
  42. public int page; // 当前页
  43. public int rows;// 每页显示的行数rows
  44. public Integer id;
  45. public Integer type;
  46. public String orderStatus;//订单状态
  47. public String managerId;//商户Id
  48. public String payStartTime;//支付开始时间
  49. public String payEndTime;//支付结束时间
  50. public String ledgerParam;//台账列表查询参数
  51. public String hotelTownship;//所属乡镇
  52. public String minTotalPrice;//最小订单总价
  53. public String maxTotalPrice;//最大订单总价
  54. public String houseNumberIds; // 房间号ids
  55. public HttpServletRequest getRequest() {
  56. return request;
  57. }
  58. public void setRequest(HttpServletRequest request) {
  59. this.request = request;
  60. }
  61. public void setServletRequest(HttpServletRequest request) {
  62. this.request = request;
  63. }
  64. public HttpServletResponse getResponse() {
  65. return response;
  66. }
  67. public void setResponse(HttpServletResponse response) {
  68. this.response = response;
  69. }
  70. /**
  71. * 描述:修改订单状态接单、入住、退房
  72. * @return
  73. */
  74. public String updateBookStatus(){
  75. JSONObject resultJson = new JSONObject();
  76. if (id == null) {
  77. resultJson.put("message", "请传入订单id");
  78. resultJson.put("code", 500);
  79. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  80. return null;
  81. }
  82. //根据id获取当前订单信息
  83. Booking book = bookService.getById(id);
  84. if(book==null){
  85. resultJson.put("message", "未查询到订单");
  86. resultJson.put("code", 500);
  87. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  88. return null;
  89. }
  90. //获取用户openId
  91. Users user = userService.queryByUserId(book.getCreateUserid());
  92. if(user.getOpenid()==null){
  93. resultJson.put("message", "用户openId为空,请该订单用户授权才能操作。");
  94. resultJson.put("code", 502);
  95. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  96. return null;
  97. }
  98. String msg = "";
  99. String sendMsg = "";
  100. try{
  101. switch (type){
  102. case 1://接单
  103. if(!"2".equals(book.getOrderStatus())){
  104. resultJson.put("message", "已支付状态才能接单");
  105. resultJson.put("code", 502);
  106. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  107. return null;
  108. }
  109. book.setOrderStatus("3");
  110. book.setUpdateTime(UUIDUtil.getNewDate());
  111. msg = "接单";
  112. sendMsg = "商家已接单";
  113. //验证民宿房态表
  114. List<HouseNumber> houseNumbers = houseNumberService.queryHouseStatus(book);
  115. List<HouseNumber> houseNumberList = houseNumberService.queryByHouseId(book.getHouseId());
  116. List<String> Ids = new ArrayList<>();
  117. AtomicInteger i = new AtomicInteger();
  118. if (houseNumbers != null){
  119. houseNumberList.forEach(houseNumber -> {
  120. //添加的房间不在不可添加的房间当中并且数量小于订房总数
  121. if (!houseNumbers.contains(houseNumber) && i.get() < book.getHouseOrderNumber()){
  122. Ids.add(houseNumber.getId());
  123. i.getAndIncrement();
  124. }
  125. });
  126. }else {
  127. //所有房间都可以预定
  128. houseNumberList.forEach(houseNumber -> {
  129. //添加的房间不在不可添加的房间当中并且数量小于订房总数
  130. if (i.get() < book.getHouseOrderNumber()){
  131. Ids.add(houseNumber.getId());
  132. i.getAndIncrement();
  133. }
  134. });
  135. }
  136. //添加民宿房态表
  137. List<HouseNumberStatus> list = handleHouseStatus(Ids, 5, book);
  138. int m = houseNumberStatusService.saveBatch(list);
  139. if (m == 0){
  140. resultJson.put("message", "确认失败");
  141. resultJson.put("code", 502);
  142. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  143. return null;
  144. }
  145. break;
  146. case 2://入住
  147. if(!"3".equals(book.getOrderStatus())){
  148. resultJson.put("message", "待入住状态才能办理入住");
  149. resultJson.put("code", 502);
  150. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  151. return null;
  152. }
  153. if(houseNumberIds == null || "".equals(houseNumberIds)){
  154. resultJson.put("message", "请分配房间号");
  155. resultJson.put("code", 502);
  156. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  157. return null;
  158. }
  159. List<String> ids = Arrays.asList(houseNumberIds.split(","));
  160. if(book.getHouseOrderNumber() != ids.size()){
  161. resultJson.put("message", "房间数不一致");
  162. resultJson.put("code", 502);
  163. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  164. return null;
  165. }
  166. List<HouseNumber> houseNumbers1 = houseNumberService.queryHouseStatus(book);
  167. if (houseNumbers1!=null){
  168. for (String id: ids){
  169. for (HouseNumber houseNumber: houseNumbers1){
  170. if (houseNumber.getStatus() != null && houseNumber.getStatus()==3 && id.equals(houseNumber.getId())){
  171. resultJson.put("message", "选择的房间该时间段已有预定!请重新选择房间!");
  172. resultJson.put("code", 502);
  173. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  174. return null;
  175. }
  176. }
  177. }
  178. }
  179. //删除 预定房态
  180. int a = houseNumberStatusService.updateHouseNumberStatus(String.valueOf(id));
  181. if (a == 0){
  182. resultJson.put("message", "确认失败");
  183. resultJson.put("code", 502);
  184. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  185. return null;
  186. }
  187. //写入 入住数据
  188. List<HouseNumberStatus> list1 = handleHouseStatus(ids, 6, book);
  189. int n = houseNumberStatusService.saveBatch(list1);
  190. if (n == 0){
  191. resultJson.put("message", "确认失败");
  192. resultJson.put("code", 502);
  193. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  194. return null;
  195. }
  196. book.setOrderStatus("4");
  197. book.setLiveTime(UUIDUtil.getNewDate());
  198. book.setUpdateTime(UUIDUtil.getNewDate());
  199. userService.addhotelAndUsers(book.getHotelId(),book.getCreateUserid(), TempEnum.住过); // 办理入住,则将信息写入用户入住过的酒店 editor by xieli
  200. msg = "入住办理";
  201. break;
  202. case 3://退房
  203. if(!"4".equals(book.getOrderStatus())){
  204. resultJson.put("message", "已入住状态才能办理退房");
  205. resultJson.put("code", 502);
  206. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  207. return null;
  208. }
  209. //房态删除
  210. String sql = " and booking_id = " + id;
  211. List<HouseNumberStatus> houseNumberStatuse = houseNumberStatusService.getList(sql);
  212. int i1 = houseNumberStatusService.updateHouseNumberStatus(String.valueOf(id));
  213. if (i1 == 0){
  214. resultJson.put("message", "退房失败");
  215. resultJson.put("code", 502);
  216. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  217. return null;
  218. }
  219. //房间设为脏房
  220. String numberIds = houseNumberStatuse.stream().map(HouseNumberStatus::getNumberId).distinct().collect(Collectors.joining());
  221. int i2 = houseNumberService.updateHouseStatus(numberIds);
  222. if (i2 == 0){
  223. resultJson.put("message", "退房失败");
  224. resultJson.put("code", 502);
  225. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  226. return null;
  227. }
  228. book.setCheckOutTime(UUIDUtil.getNewDate());//退房时间
  229. book.setUpdateTime(UUIDUtil.getNewDate());
  230. book.setOrderStatus("5");
  231. msg = "退房";
  232. break;
  233. // case 4://退单
  234. // if(!"2".equals(book.getOrderStatus())){
  235. // resultJson.put("message", "已支付状态才能退单");
  236. // resultJson.put("code", 502);
  237. // ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  238. // return null;
  239. // }
  240. // book.setOrderStatus("8");
  241. // book.setUpdateTime(UUIDUtil.getNewDate());
  242. // msg = "退单";
  243. // sendMsg = "商家已退单";
  244. // break;
  245. }
  246. int m = bookService.updateBooking(book);
  247. if (m > 0) {
  248. //推送信息
  249. if(!"".equals(sendMsg)){
  250. String liveTime = book.getOrderStartTime()!=null ? book.getOrderStartTime().substring(0,10):"";
  251. String endTime = book.getOrderEndTime()!=null ? book.getOrderEndTime().substring(0,10):"";
  252. String errmsg = Message.wxErrorMsg(Message.send(user.getOpenid(),book.getHotelName(),book.getOrderStatus(),liveTime,endTime,book.getHouseName()));
  253. if("请求成功".equals(errmsg)){
  254. resultJson.put("message", msg+"成功");
  255. resultJson.put("code", 200);
  256. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  257. return null;
  258. }
  259. resultJson.put("message", msg+"成功"+",推送消息失败,原因:"+errmsg);
  260. resultJson.put("code", 500);
  261. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  262. return null;
  263. }
  264. resultJson.put("message", msg+"成功");
  265. resultJson.put("code", 200);
  266. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  267. return null;
  268. } else {
  269. resultJson.put("message", msg+"失败");
  270. resultJson.put("code", 502);
  271. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  272. return null;
  273. }
  274. }catch (Exception e){
  275. e.printStackTrace();
  276. }
  277. resultJson.put("message", "未知异常");
  278. resultJson.put("code", 205);
  279. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  280. return null;
  281. }
  282. /**
  283. * 根据传入传入房间号写入状态
  284. */
  285. private List<HouseNumberStatus> handleHouseStatus(List<String> Ids,int status,Booking book) throws ParseException {
  286. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  287. DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  288. LocalDateTime str = LocalDateTime.parse(book.getOrderStartTime(), inputFormatter);
  289. LocalDateTime end = LocalDateTime.parse(book.getOrderEndTime(), inputFormatter);
  290. String a = str.format(formatter);
  291. String B = end.format(formatter);
  292. LocalDate strDate = LocalDate.parse(a, formatter);
  293. LocalDate endDate = LocalDate.parse(B, formatter);
  294. List<HouseNumberStatus> list = new ArrayList<>();
  295. Date now = DateUtil.formateDate(DateUtil.getCurrentDate(), DateUtil.Time_Formatter_Second);
  296. for (String number : Ids){
  297. for (LocalDate date = strDate;!date.isAfter(endDate.minusDays(1));date = date.plusDays(1)){
  298. HouseNumberStatus houseNumberStatus = new HouseNumberStatus();
  299. houseNumberStatus.setNumberId(number);
  300. houseNumberStatus.setId(String.valueOf(UUID.randomUUID()));
  301. houseNumberStatus.setCreateDate(now);
  302. houseNumberStatus.setModifyDate(now);
  303. houseNumberStatus.setRemark("");
  304. houseNumberStatus.setBookingId(String.valueOf(book.getId()));
  305. houseNumberStatus.setSetDate(date.format(formatter));
  306. houseNumberStatus.setStatus(status);//状态(0删除 1.正常 2.关房 3.脏房 4.净房 5.预定 6.入住)
  307. list.add(houseNumberStatus);
  308. }
  309. }
  310. return list;
  311. }
  312. /**
  313. * 描述:分页查询订单
  314. * @return
  315. */
  316. public String quearyBookPage(){
  317. JSONObject resultJson = new JSONObject();
  318. StringBuilder s1 = new StringBuilder("");
  319. if(managerId!=null){
  320. s1.append(" and hotel_manager_id = '").append(managerId).append("'");
  321. }
  322. if (ledgerParam!=null){
  323. s1.append(" and (order_num like '%").append(ledgerParam).append("%'")
  324. .append(" or user_name like '%").append(ledgerParam).append("%'")
  325. .append(" or user_phone like '%").append(ledgerParam).append("%')");
  326. }
  327. if(orderStatus!=null){
  328. s1.append(" and order_status = ").append(orderStatus);
  329. }
  330. if(payStartTime!=null && payEndTime!=null){
  331. s1.append(" and DATE_FORMAT(pay_time,'%Y-%m-%d') >= '").append(payStartTime).append("'")
  332. .append(" and DATE_FORMAT(pay_time,'%Y-%m-%d') <= '").append(payEndTime).append("'");
  333. }
  334. IPage<Booking> bookIPage = bookService.queryPage(s1.toString(),page,rows,"create_time");
  335. //获取订单汇总信息
  336. BookTypeEto bookTypeEto = bookService.getBookStatusSum(s1.toString());
  337. bookTypeEto.setSumAccount(new BigDecimal(bookTypeEto.getSumAccount()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
  338. bookTypeEto.setBookIPage(bookIPage);
  339. if(bookTypeEto!=null && !"".equals(bookTypeEto)){
  340. resultJson.put("message", "查询分页成功");
  341. resultJson.put("code", 200);
  342. resultJson.put("data", bookTypeEto);
  343. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  344. }else{
  345. resultJson.put("message", "查询分页失败");
  346. resultJson.put("code", 500);
  347. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  348. }
  349. return null;
  350. }
  351. /**
  352. * 描述:导出订单
  353. * @return
  354. */
  355. public String toBookExcel() {
  356. JSONObject resultJson = new JSONObject();
  357. StringBuilder s1 = new StringBuilder("");
  358. s1.append(" and hotel_manager_id = '").append(managerId).append("'");
  359. if(managerId==null){
  360. resultJson.put("code", 500);
  361. resultJson.put("message", "managerId禁止为空");
  362. ResponseUtil.writeJson(ServletActionContext.getResponse(),
  363. resultJson.toString());
  364. }
  365. if (ledgerParam!=null){
  366. s1.append(" and (order_num like '%").append(ledgerParam).append("%'")
  367. .append(" or user_name like '%").append(ledgerParam).append("%'")
  368. .append(" or user_phone like '%").append(ledgerParam).append("%')");
  369. }
  370. if(orderStatus!=null){
  371. s1.append(" and order_status = ").append(orderStatus);
  372. }
  373. if(payStartTime!=null && payEndTime!=null){
  374. s1.append(" and DATE_FORMAT(pay_time,'%Y-%m-%d') >= '").append(payStartTime).append("'")
  375. .append(" and DATE_FORMAT(pay_time,'%Y-%m-%d') <= '").append(payEndTime).append("'");
  376. }
  377. List<Booking> list = bookService.queryList(s1.toString()); // 查询分页
  378. List<Vector> vectorsList = new ArrayList<>();
  379. if(list==null){
  380. resultJson.put("code", 500);
  381. resultJson.put("message", "无数据无法导出");
  382. ResponseUtil.writeJson(ServletActionContext.getResponse(),
  383. resultJson.toString());
  384. }
  385. for(Booking book:list){
  386. Vector columnValue = new Vector();
  387. columnValue.add(book.getOrderNum());
  388. columnValue.add(book.getOrderName());
  389. columnValue.add(book.getUserName());//用户名称
  390. columnValue.add(book.getUserPhone());//用户电话
  391. columnValue.add(book.getHouseName());//房型名称
  392. columnValue.add(book.getHouseOrderNumber());//订房数量
  393. columnValue.add(book.getHouseTotalPrice());//总价
  394. columnValue.add(book.getPayTime());
  395. vectorsList.add(columnValue);
  396. }
  397. // 项目路径地址
  398. String path = request.getSession().getServletContext()
  399. .getRealPath("/download/");// File.separator
  400. try{
  401. Vector columnName = new Vector();
  402. columnName.add("订单号");
  403. columnName.add("状态");
  404. columnName.add("预定人");
  405. columnName.add("手机号");
  406. columnName.add("预定房型");
  407. columnName.add("房间数");
  408. columnName.add("订单金额(元)");
  409. columnName.add("支付时间");
  410. String filePathName ="订单信息" + UUIDUtil.generateID() +"Report.xls";
  411. // 导出文件
  412. new toExcel().book(vectorsList, path + filePathName,
  413. "sheet1", columnName);
  414. String url = "https://chtech.ncjti.edu.cn/hotelReservation/mhotel";
  415. resultJson.put("downurl", url + "/download/" + filePathName);
  416. resultJson.put("code", 200);
  417. resultJson.put("message", "导出成功");
  418. ResponseUtil.writeJson(ServletActionContext.getResponse(),
  419. resultJson.toString());
  420. } catch (Exception e){
  421. e.printStackTrace();
  422. }
  423. return null;
  424. }
  425. /**
  426. * 描述:分页查询台账(查询以消费订单数据)
  427. * @return
  428. */
  429. public String quearyLedgerPage(){
  430. JSONObject resultJson = new JSONObject();
  431. StringBuilder s1 = new StringBuilder("");
  432. s1.append(" and order_status = 5");
  433. if(managerId!=null){
  434. s1.append(" and hotel_manager_id = '").append(managerId).append("'");
  435. }
  436. if (ledgerParam!=null){
  437. s1.append(" and (order_num like '%").append(ledgerParam).append("%'")
  438. .append(" or user_name like '%").append(ledgerParam).append("%'")
  439. .append(" or user_phone like '%").append(ledgerParam).append("%')");
  440. }
  441. if(payStartTime!=null && payEndTime!=null){
  442. s1.append(" and DATE_FORMAT(pay_time,'%Y-%m-%d') >= '").append(payStartTime).append("'")
  443. .append(" and DATE_FORMAT(pay_time,'%Y-%m-%d') <= '").append(payEndTime).append("'");
  444. }
  445. if(hotelTownship!=null){
  446. s1.append(" and hotel_township = '").append(hotelTownship).append("'");
  447. }
  448. if(minTotalPrice!=null){
  449. s1.append(" and house_total_price >= '").append(minTotalPrice).append("'");
  450. }
  451. if(maxTotalPrice!=null){
  452. s1.append(" and house_total_price <= '").append(maxTotalPrice).append("'");
  453. }
  454. IPage<Booking> bookIPage = bookService.queryPage(s1.toString(),page,rows, "check_out_time");
  455. //获取订单汇总信息
  456. BookTypeEto bookTypeEto = bookService.getBookStatusSum(s1.toString());
  457. bookTypeEto.setBookIPage(bookIPage);
  458. if(bookTypeEto!=null && !"".equals(bookTypeEto)){
  459. resultJson.put("message", "查询分页成功");
  460. resultJson.put("code", 200);
  461. resultJson.put("data", bookTypeEto);
  462. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  463. }else{
  464. resultJson.put("message", "查询分页失败");
  465. resultJson.put("code", 500);
  466. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  467. }
  468. return null;
  469. }
  470. /**
  471. * 描述:根据Id查询订单详细
  472. * @return
  473. */
  474. public String getById(){
  475. JSONObject resultJson = new JSONObject();
  476. if (id == null) {
  477. resultJson.put("message", "请传入id");
  478. resultJson.put("code", 500);
  479. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  480. return null;
  481. }
  482. Booking book = bookService.getById(id);
  483. List<HouseNumber> houseNumbers = houseNumberService.queryHouseStatus(book);
  484. book.setHouseNumbers(houseNumbers);
  485. if (book != null) {
  486. resultJson.put("message", "查询成功");
  487. resultJson.put("code", 200);
  488. resultJson.put("data", book);
  489. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  490. return null;
  491. }else{
  492. resultJson.put("message", "未查到用户信息");
  493. resultJson.put("code", 500);
  494. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  495. return null;
  496. }
  497. }
  498. /**
  499. * 描述:导出台账
  500. * @return
  501. */
  502. public String toLedgerExcel() {
  503. JSONObject resultJson = new JSONObject();
  504. StringBuilder s1 = new StringBuilder("");
  505. s1.append(" and order_status = 5");
  506. s1.append(" and hotel_manager_id = '").append(managerId).append("'");
  507. if (ledgerParam!=null){
  508. s1.append(" and (order_num like '%").append(ledgerParam).append("%'")
  509. .append(" or user_name like '%").append(ledgerParam).append("%'")
  510. .append(" or user_phone like '%").append(ledgerParam).append("%')");
  511. }
  512. if(payStartTime!=null && payEndTime!=null){
  513. s1.append(" and DATE_FORMAT(pay_time,'%Y-%m-%d') >= '").append(payStartTime).append("'")
  514. .append(" and DATE_FORMAT(pay_time,'%Y-%m-%d') <= '").append(payEndTime).append("'");
  515. }
  516. if(hotelTownship!=null){
  517. s1.append(" and hotel_township = '").append(payStartTime).append("'");
  518. }
  519. if(minTotalPrice!=null){
  520. s1.append(" and house_total_price >= '").append(minTotalPrice).append("'");
  521. }
  522. if(maxTotalPrice!=null){
  523. s1.append(" and house_total_price <= '").append(maxTotalPrice).append("'");
  524. }
  525. List<Booking> list = bookService.queryList(s1.toString()); // 查询列表
  526. if(list==null){
  527. resultJson.put("code", 500);
  528. resultJson.put("message", "无数据无法导出");
  529. ResponseUtil.writeJson(ServletActionContext.getResponse(),
  530. resultJson.toString());
  531. }
  532. List<Vector> vectorsList = new ArrayList<>();
  533. for(Booking book:list){
  534. Vector columnValue = new Vector();
  535. columnValue.add(book.getOrderNum());
  536. columnValue.add(book.getUserName());
  537. columnValue.add(book.getUserPhone());
  538. columnValue.add(book.getHouseOrderNumber());
  539. columnValue.add(book.getPayAccount());
  540. columnValue.add(book.getPayTime());
  541. vectorsList.add(columnValue);
  542. }
  543. // 项目路径地址
  544. String path = request.getSession().getServletContext()
  545. .getRealPath("/download/");;// File.separator
  546. try{
  547. Vector columnName = new Vector();
  548. columnName.add("订单号");
  549. columnName.add("预定人");
  550. columnName.add("手机号");
  551. columnName.add("房间数");
  552. columnName.add("订单金额");
  553. columnName.add("退房时间");
  554. String filePathName ="台账信息" + UUIDUtil.generateID() +"Report.xls";
  555. // 导出文件
  556. new toExcel().book(vectorsList, path + filePathName,
  557. "sheet1", columnName);
  558. String url = "https://chtech.ncjti.edu.cn/hotelReservation/mhotel";
  559. resultJson.put("downurl", url + "/download/" + filePathName);
  560. resultJson.put("code", 200);
  561. resultJson.put("message", "导出成功");
  562. ResponseUtil.writeJson(ServletActionContext.getResponse(),
  563. resultJson.toString());
  564. } catch (Exception e){
  565. e.printStackTrace();
  566. }
  567. return null;
  568. }
  569. /**
  570. * 描述:导出台账 管理端
  571. * @return
  572. */
  573. public String toLedgerAdmimnExcel() {
  574. JSONObject resultJson = new JSONObject();
  575. StringBuilder s1 = new StringBuilder("");
  576. s1.append(" and order_status = 5");
  577. if (ledgerParam!=null){
  578. s1.append(" and (order_num like '%").append(ledgerParam).append("%'")
  579. .append(" or user_name like '%").append(ledgerParam).append("%'")
  580. .append(" or user_phone like '%").append(ledgerParam).append("%')");
  581. }
  582. if(payStartTime!=null && payEndTime!=null){
  583. s1.append(" and DATE_FORMAT(pay_time,'%Y-%m-%d') >= '").append(payStartTime).append("'")
  584. .append(" and DATE_FORMAT(pay_time,'%Y-%m-%d') <= '").append(payEndTime).append("'");
  585. }
  586. if(hotelTownship!=null){
  587. s1.append(" and hotel_township = '").append(payStartTime).append("'");
  588. }
  589. if(minTotalPrice!=null){
  590. s1.append(" and house_total_price >= '").append(minTotalPrice).append("'");
  591. }
  592. if(maxTotalPrice!=null){
  593. s1.append(" and house_total_price <= '").append(maxTotalPrice).append("'");
  594. }
  595. List<Booking> list = bookService.queryList(s1.toString()); // 查询列表
  596. List<HotelDict> hotelDicts = hotelDictService.queryList("and code = 10");
  597. Map<Integer, String> dictMap = null;
  598. if(hotelDicts!=null && hotelDicts.size()>0){
  599. dictMap = hotelDicts.stream().collect(Collectors.toMap(HotelDict::getId, HotelDict::getName, (key1, key2) -> key1 ));
  600. }else{
  601. resultJson.put("message", "未查到民宿乡镇信息");
  602. resultJson.put("code", 500);
  603. ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  604. return null;
  605. }
  606. List<Vector> vectorsList = new ArrayList<>();
  607. for(Booking book:list){
  608. Vector columnValue = new Vector();
  609. AdminManager adminManager = adminManagerService.getById(book.getHotelManagerId());
  610. if(adminManager!=null){
  611. columnValue.add(dictMap.get(Integer.valueOf(adminManager.getHotelTownship())));//所属乡镇
  612. columnValue.add(adminManager.getHotelName());//乡宿名称
  613. }else{
  614. columnValue.add("");//所属乡镇
  615. columnValue.add("");//乡宿名称
  616. }
  617. columnValue.add(book.getOrderNum());//订单号
  618. columnValue.add(book.getPayAccount());//订单金额
  619. columnValue.add(book.getPayTime());//退房时间
  620. vectorsList.add(columnValue);
  621. }
  622. // 项目路径地址
  623. String path = request.getSession().getServletContext()
  624. .getRealPath("/download/");// File.separator
  625. try{
  626. Vector columnName = new Vector();
  627. columnName.add("所属乡镇");
  628. columnName.add("民宿名称");
  629. columnName.add("订单号");
  630. columnName.add("订单金额(元)");
  631. columnName.add("退房时间");
  632. String filePathName ="台账信息" + UUIDUtil.generateID() +"Report.xls";
  633. // 导出文件
  634. new toExcel().book(vectorsList, path + filePathName,
  635. "sheet1", columnName);
  636. String url = "https://chtech.ncjti.edu.cn/hotelReservation/mhotel";
  637. resultJson.put("downurl", url + "/download/" + filePathName);
  638. resultJson.put("code", 200);
  639. resultJson.put("message", "导出成功");
  640. ResponseUtil.writeJson(ServletActionContext.getResponse(),
  641. resultJson.toString());
  642. } catch (Exception e){
  643. e.printStackTrace();
  644. }
  645. return null;
  646. }
  647. /**
  648. * 定时任务
  649. */
  650. public void setBookStatus(){
  651. int i = bookService.updateBookStatus();
  652. }
  653. }