Ver código fonte

房价管理

gqx 2 anos atrás
pai
commit
fa4dc387ee

+ 205 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/controller/CesRoomLayoutPriceDateController.java

@@ -0,0 +1,205 @@
+package org.jeecg.modules.rooms.controller;
+
+import java.util.*;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.date.DateUtil;
+import org.apache.commons.lang3.ObjectUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecg.modules.business.entity.BusMemberCard;
+import org.jeecg.modules.rooms.entity.CesRoomLayoutPriceDate;
+import org.jeecg.modules.rooms.service.ICesRoomLayoutPriceDateService;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: ces_room_layout_price_date
+ * @Author: jeecg-boot
+ * @Date:   2023-03-23
+ * @Version: V1.0
+ */
+@Api(tags="ces_room_layout_price_date")
+@RestController
+@RequestMapping("/rooms/cesRoomLayoutPriceDate")
+@Slf4j
+public class CesRoomLayoutPriceDateController extends JeecgController<CesRoomLayoutPriceDate, ICesRoomLayoutPriceDateService> {
+	@Autowired
+	private ICesRoomLayoutPriceDateService cesRoomLayoutPriceDateService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param cesRoomLayoutPriceDate
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "ces_room_layout_price_date-分页列表查询")
+	@ApiOperation(value="ces_room_layout_price_date-分页列表查询", notes="ces_room_layout_price_date-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<CesRoomLayoutPriceDate>> queryPageList(CesRoomLayoutPriceDate cesRoomLayoutPriceDate,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CesRoomLayoutPriceDate> queryWrapper = QueryGenerator.initQueryWrapper(cesRoomLayoutPriceDate, req.getParameterMap());
+		Page<CesRoomLayoutPriceDate> page = new Page<CesRoomLayoutPriceDate>(pageNo, pageSize);
+		IPage<CesRoomLayoutPriceDate> pageList = cesRoomLayoutPriceDateService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	 /**
+	  * 房价列表
+	  * @param cesRoomLayoutPriceDate
+	  * @param pageNo
+	  * @param pageSize
+	  * @param startTime
+	  * @param endTime
+	  * @param hotelIds
+	  * @param req
+	  * @return
+	  */
+	 @ApiOperation(value="ces_room_layout_price_date-分页列表查询", notes="ces_room_layout_price_date-分页列表查询")
+	 @GetMapping(value = "/pageList")
+	 public Result<IPage<HashMap<String,Object>>> pageList(CesRoomLayoutPriceDate cesRoomLayoutPriceDate,
+														   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+														   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+														   @RequestParam(name="startTime",required = true) String startTime,
+														   @RequestParam(name="endTime",required = true) String endTime,
+														   @RequestParam(name="hotelIds[]",required = true) ArrayList<String> hotelIds,
+														   HttpServletRequest req) {
+		 Page<HashMap<String,Object>> page = new Page<HashMap<String,Object>>(pageNo, pageSize);
+		 IPage<HashMap<String,Object>> pageList = cesRoomLayoutPriceDateService.pageList(page,hotelIds, DateUtil.parseDate(startTime),DateUtil.parseDate(endTime));
+		 return Result.OK(pageList);
+	 }
+	
+	/**
+	 *   添加
+	 *
+	 * @param cesRoomLayoutPriceDate
+	 * @return
+	 */
+	@AutoLog(value = "ces_room_layout_price_date-添加")
+	@ApiOperation(value="ces_room_layout_price_date-添加", notes="ces_room_layout_price_date-添加")
+	//@RequiresPermissions("rooms:ces_room_layout_price_date:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody CesRoomLayoutPriceDate cesRoomLayoutPriceDate) {
+		cesRoomLayoutPriceDateService.save(cesRoomLayoutPriceDate);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param cesRoomLayoutPriceDate
+	 * @return
+	 */
+	@AutoLog(value = "ces_room_layout_price_date-编辑")
+	@ApiOperation(value="ces_room_layout_price_date-编辑", notes="ces_room_layout_price_date-编辑")
+	//@RequiresPermissions("rooms:ces_room_layout_price_date:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CesRoomLayoutPriceDate cesRoomLayoutPriceDate) {
+		cesRoomLayoutPriceDateService.updateById(cesRoomLayoutPriceDate);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "ces_room_layout_price_date-通过id删除")
+	@ApiOperation(value="ces_room_layout_price_date-通过id删除", notes="ces_room_layout_price_date-通过id删除")
+	//@RequiresPermissions("rooms:ces_room_layout_price_date:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		cesRoomLayoutPriceDateService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "ces_room_layout_price_date-批量删除")
+	@ApiOperation(value="ces_room_layout_price_date-批量删除", notes="ces_room_layout_price_date-批量删除")
+	//@RequiresPermissions("rooms:ces_room_layout_price_date:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.cesRoomLayoutPriceDateService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "ces_room_layout_price_date-通过id查询")
+	@ApiOperation(value="ces_room_layout_price_date-通过id查询", notes="ces_room_layout_price_date-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<CesRoomLayoutPriceDate> queryById(@RequestParam(name="id",required=true) String id) {
+		CesRoomLayoutPriceDate cesRoomLayoutPriceDate = cesRoomLayoutPriceDateService.getById(id);
+		if(cesRoomLayoutPriceDate==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(cesRoomLayoutPriceDate);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param cesRoomLayoutPriceDate
+    */
+    //@RequiresPermissions("rooms:ces_room_layout_price_date:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CesRoomLayoutPriceDate cesRoomLayoutPriceDate) {
+        return super.exportXls(request, cesRoomLayoutPriceDate, CesRoomLayoutPriceDate.class, "ces_room_layout_price_date");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("rooms:ces_room_layout_price_date:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CesRoomLayoutPriceDate.class);
+    }
+
+}

+ 59 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/entity/CesRoomLayoutPriceDate.java

@@ -0,0 +1,59 @@
+package org.jeecg.modules.rooms.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: ces_room_layout_price_date
+ * @Author: jeecg-boot
+ * @Date:   2023-03-23
+ * @Version: V1.0
+ */
+@Data
+@TableName("ces_room_layout_price_date")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="ces_room_layout_price_date对象", description="ces_room_layout_price_date")
+public class CesRoomLayoutPriceDate implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+	/**房型价格ID*/
+	@Excel(name = "房型价格ID", width = 15)
+    @ApiModelProperty(value = "房型价格ID")
+    private String roomLayoutPriceId;
+	/**日期*/
+	@Excel(name = "日期", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "日期")
+    private Date date;
+	/**现价*/
+	@Excel(name = "现价", width = 15)
+    @ApiModelProperty(value = "现价")
+    private BigDecimal price;
+	/**创建时间*/
+	@Excel(name = "创建时间", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private Date createDate;
+}

+ 43 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/mapper/CesRoomLayoutPriceDateMapper.java

@@ -0,0 +1,43 @@
+package org.jeecg.modules.rooms.mapper;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Select;
+import org.jeecg.modules.business.entity.BusMarketMealCouponsUsed;
+import org.jeecg.modules.rooms.entity.CesRoomLayoutPriceDate;
+
+/**
+ * @Description: ces_room_layout_price_date
+ * @Author: jeecg-boot
+ * @Date:   2023-03-23
+ * @Version: V1.0
+ */
+public interface CesRoomLayoutPriceDateMapper extends BaseMapper<CesRoomLayoutPriceDate> {
+
+    /**
+     * 房价列表
+     * @param page
+     * @param hotelIds
+     * @return
+     */
+    @Select("<script>select SUBSTR(MD5(RAND()),1,16) as id,max(h.name) as hotel_name,max(layout.name) as layout_name,max(price.name) as price_name\n" +
+            "<foreach item='item' index='index' collection='dates' open=',' separator=',' close=' '>"+
+            "ifnull(max(case date.date when '${item}' then date.price else null end),price.price) as '${item}' "+
+            "</foreach>"+
+            " from ces_room_layout layout inner join ces_room_layout_price price on price.layoutId=layout.id\n" +
+            "left join ces_room_layout_price_date date on date.room_layout_price_id=price.id\n" +
+            "left join bus_hotel_info h on h.id=layout.hotel_id\n"+
+            "where price.invalid=0\n" +
+            "<if test='hotelIds != null'> and layout.hotel_id in </if>"+
+            "<foreach item='item' index='index' collection='hotelIds' open='(' separator=',' close=')'>"+
+            " '${item}' "+
+            "</foreach>"+
+            "group by price.id </script>")
+    public List<HashMap<String,Object>> pageList(Page<HashMap<String,Object>> page, @Param("dates") ArrayList<String> dates, @Param("hotelIds") ArrayList<String> hotelIds);
+
+}

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/mapper/xml/CesRoomLayoutPriceDateMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.demo.rooms.mapper.CesRoomLayoutPriceDateMapper">
+
+</mapper>

+ 29 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/ICesRoomLayoutPriceDateService.java

@@ -0,0 +1,29 @@
+package org.jeecg.modules.rooms.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.rooms.entity.CesRoomLayoutPriceDate;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * @Description: ces_room_layout_price_date
+ * @Author: jeecg-boot
+ * @Date:   2023-03-23
+ * @Version: V1.0
+ */
+public interface ICesRoomLayoutPriceDateService extends IService<CesRoomLayoutPriceDate> {
+    /**
+     * 房价列表
+     * @param page
+     * @param hotelIds
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    public Page<HashMap<String,Object>> pageList(Page<HashMap<String,Object>> page, @Param("hotelIds") ArrayList<String> hotelIds, Date startDate, Date endDate);
+}

+ 55 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/impl/CesRoomLayoutPriceDateServiceImpl.java

@@ -0,0 +1,55 @@
+package org.jeecg.modules.rooms.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.business.entity.BusMarketMealCouponsUsed;
+import org.jeecg.modules.business.enums.CouponsStatusEnum;
+import org.jeecg.modules.business.mapper.BusMarketMealCouponsUsedMapper;
+import org.jeecg.modules.rooms.entity.CesRoomLayoutPriceDate;
+import org.jeecg.modules.rooms.mapper.CesRoomLayoutPriceDateMapper;
+import org.jeecg.modules.rooms.service.ICesRoomLayoutPriceDateService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import javax.annotation.Resource;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @Description: ces_room_layout_price_date
+ * @Author: jeecg-boot
+ * @Date:   2023-03-23
+ * @Version: V1.0
+ */
+@Service
+public class CesRoomLayoutPriceDateServiceImpl extends ServiceImpl<CesRoomLayoutPriceDateMapper, CesRoomLayoutPriceDate> implements ICesRoomLayoutPriceDateService {
+
+    @Resource
+    private CesRoomLayoutPriceDateMapper cesRoomLayoutPriceDateMapper;
+
+    /**
+     * 房价列表
+     * @param page
+     * @param hotelIds
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    public Page<HashMap<String,Object>> pageList(Page<HashMap<String,Object>> page, @Param("hotelIds") ArrayList<String> hotelIds, Date startDate, Date endDate) {
+        ArrayList<String> dates = new ArrayList<String>();
+        long getTime = endDate.getTime() - startDate.getTime();
+        long day = getTime / (1000 * 60 * 60 * 24);
+        DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar=new GregorianCalendar();
+        for (Integer i=0;i<=day;i++) {
+            calendar.setTime(startDate);
+            calendar.add(Calendar.DATE, i);
+            String dateString = formatter.format(calendar.getTime());
+            dates.add(dateString);
+        }
+        return page.setRecords(cesRoomLayoutPriceDateMapper.pageList(page, dates, hotelIds));
+    }
+}