bookAction.java 31 KB

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