| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- package com.happy.service.impl;
- import com.alibaba.fastjson.JSONObject;
- import com.happy.Model.House;
- import com.happy.Model.HousePrice;
- import com.happy.Until.DateUtil;
- import com.happy.Until.Excel.toExcel;
- import com.happy.Until.Func;
- import com.happy.Until.ResponseUtil;
- import com.happy.Until.UUIDUtil;
- import com.happy.dao.HouseDao;
- import com.happy.dao.HousePriceDao;
- import com.happy.dto.HousePriceDto;
- import com.happy.dto.IPage;
- import com.happy.service.HousePriceService;
- import lombok.SneakyThrows;
- import org.apache.commons.lang.StringUtils;
- import org.apache.struts2.ServletActionContext;
- import org.springframework.beans.BeanUtils;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import java.util.*;
- import java.util.stream.Collectors;
- @Service("housePriceService")
- public class HousePriceServiceImpl implements HousePriceService {
- @Resource(name = "housePriceDao")
- private HousePriceDao housePriceDao;
- @Resource(name = "HouseDao")
- private HouseDao houseDao;
- @SneakyThrows
- @Override
- public void modifyPriceBatch(List<String> dateList, List<HousePrice> priceList) {
- List<HousePrice> housePriceList = new ArrayList<>();
- Date now = DateUtil.formateDate(DateUtil.getCurrentDate(), DateUtil.Time_Formatter_Second);
- priceList.forEach(item -> {
- item.setCreateDate(now);
- item.setStatus(1);
- dateList.forEach(date -> {
- HousePrice housePrice = new HousePrice();
- BeanUtils.copyProperties(item, housePrice);
- housePrice.setId(Func.newGuid());
- housePrice.setSetDate(date);
- housePriceList.add(housePrice);
- });
- });
- housePriceDao.insertBatch(housePriceList);
- }
- @SneakyThrows
- @Override
- public void modifyPrice(HousePriceDto housePriceDto) {
- Date now = DateUtil.formateDate(DateUtil.getCurrentDate(), DateUtil.Time_Formatter_Second);
- housePriceDto.setId(Func.newGuid());
- housePriceDto.setCreateDate(now);
- housePriceDto.setStatus(1);
- housePriceDao.insertBatch(Collections.singletonList(housePriceDto));
- }
- @Override
- public JSONObject queryPage(HousePriceDto housePriceDto, Integer pageNumber, Integer pageSize) {
- List<JSONObject> pageJsonObjectList = new ArrayList<>(Collections.emptyList());
- int total = housePriceDao.queryTotalOne(housePriceDto);
- if (total != 0) {
- List<HousePriceDto> pageList = housePriceDao.queryListOne(housePriceDto, pageNumber, pageSize);
- String startDateStr = housePriceDto.getSetDate();
- Date startDate = DateUtil.parseDateOnly(startDateStr);
- Date endDate = DateUtil.addDate(startDate, Calendar.DATE, 20);
- //region 周期内的改价记录
- housePriceDto.setSetDate(String.format("%s,%s", startDateStr, DateUtil.parseDateToStr(endDate, DateUtil.Time_Formatter_Day)));
- List<String> houseIdList = pageList.stream().map(HousePriceDto::getHouseId).collect(Collectors.toList());
- housePriceDto.setHouseIdList(houseIdList);
- List<HousePriceDto> housePriceDtoList = housePriceDao.queryListTwo(housePriceDto);
- //endregion
- List<Date> dateListBetween = DateUtil.getDateListBetween(startDate, endDate);
- pageList.forEach(item -> {
- JSONObject jsonObject = new JSONObject(new LinkedHashMap<>());
- jsonObject.put("id", item.getHouseId());
- jsonObject.put("houseName", item.getHouseName());
- dateListBetween.forEach(date -> jsonObject.put(DateUtil.parseDateToStr(date, DateUtil.Time_Formatter_Day), getPrice(date, item, housePriceDtoList)));
- pageJsonObjectList.add(jsonObject);
- });
- }
- JSONObject result = new JSONObject();
- result.put("pageList", pageJsonObjectList);
- result.put("page", pageNumber);
- result.put("rows", pageSize);
- result.put("total", total);
- result.put("totalPage", (int) Math.ceil((double) total / pageSize));
- return result;
- }
- @Override
- public IPage<HousePriceDto> queryPageHistory(HousePriceDto housePriceDto, Integer pageNumber, Integer pageSize) {
- List<HousePriceDto> pageList = Collections.emptyList();
- int total = housePriceDao.queryTotalThree(housePriceDto);
- if (total != 0) {
- pageList = housePriceDao.queryListThree(housePriceDto, pageNumber, pageSize);
- }
- IPage<HousePriceDto> result = new IPage<>();
- result.setPageList(pageList);
- result.setPage(pageNumber);
- result.setRows(pageSize);
- result.setTotal(total);
- result.setTotalPage((int) Math.ceil((double) total / pageSize));
- return result;
- }
- @Override
- public List<House> queryHouseListByManagerId(String managerId) {
- if (StringUtils.isBlank(managerId)) return Collections.emptyList();
- String sqlx = String.format(" and manager_id = %s %s", managerId, " order by create_date desc");
- return houseDao.queryList(sqlx);
- }
- @Override
- public void exportHistory(HousePriceDto housePriceDto) {
- if (StringUtils.isBlank(housePriceDto.getManagerId())) return;
- List<HousePriceDto> list = housePriceDao.queryListThree(housePriceDto, null, null);
- if (list == null || list.isEmpty()) return;
- // List<Vector<Object>> vectorsList = new ArrayList<>();
- List<Vector> vectorsList = new ArrayList<>();
- list.forEach(housePrice -> {
- Vector columnValue = new Vector<>();
- columnValue.add(housePrice.getHouseName());
- columnValue.add(housePrice.getSetDate());
- columnValue.add(housePrice.getPrice());
- columnValue.add(housePrice.getOperationName());
- columnValue.add(housePrice.getOperationTime());
- vectorsList.add(columnValue);
- });
- // 项目路径地址
- String path = ServletActionContext.getRequest().getSession().getServletContext()
- .getRealPath("/download/");// File.separator
- Vector<String> columnName = new Vector<>();
- columnName.add("房型");
- columnName.add("价格日期");
- columnName.add("修改后价格");
- columnName.add("操作人");
- columnName.add("操作时间");
- String filePathName = "改价记录" + UUIDUtil.generateID() + "Report.xls";
- // 导出文件
- new toExcel().book(vectorsList, path + filePathName,
- "sheet1", columnName);
- String url = "https://chtech.ncjti.edu.cn/hotelReservation/mhotel";
- JSONObject result = new JSONObject();
- result.put("downurl", url + "/download/" + filePathName);
- result.put("code", 200);
- result.put("message", "导出成功");
- ResponseUtil.writeJson(ServletActionContext.getResponse(),
- result.toString());
- }
- /**
- * 获取房型指定日期的价格
- *
- * @return 原价 or 周日内最新一条改价记录的价格
- */
- private Double getPrice(Date dateIn, HousePriceDto housePriceDto, List<HousePriceDto> housePriceDtoList) {
- Double price = housePriceDto.getOriginalPrice();
- if (housePriceDtoList == null || housePriceDtoList.isEmpty()) return price;
- for (HousePriceDto priceDto : housePriceDtoList) {
- String[] date = priceDto.getSetDate().split(",");
- Date startDate = DateUtil.parseDateOnly(date[0]);
- Date endDate = DateUtil.parseDateOnly(date[1]);
- assert startDate != null;
- boolean flag = DateUtil.isEffectiveDate(dateIn, startDate, endDate) && housePriceDto.getHouseId().equals(priceDto.getHouseId());
- if (flag) {
- price = priceDto.getPrice();
- break;
- }
- }
- return price;
- }
- }
|