Commit 6a49dda9 authored by libin's avatar libin

车型日历假日设置

parent c614865b
package com.xxfc.platform.vehicle.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/18 17:29
*/
@Data
@Table(name = "festival")
@NoArgsConstructor
@AllArgsConstructor
public class Festival {
@Id
@GeneratedValue(generator = "JDBC")
private Integer id;
private String name;
@Column(name = "crt_time")
private Date crtTime;
}
......@@ -36,7 +36,8 @@ public class VehicleModelHolidayPrice implements Serializable {
/**
* 节假日
*/
private String festival;
@Column(name = "festival_id")
private Integer festivalId;
/**
* 倍数
*/
......
......@@ -20,5 +20,6 @@ import java.util.Date;
@NoArgsConstructor
public class VehicleModelHolidayPriceFindDTO extends PageParam {
private String festival;
private Date date;
private String date;
private Integer year;
}
......@@ -6,6 +6,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
......@@ -20,13 +21,16 @@ import java.util.List;
@NoArgsConstructor
public class VehicleModelHolidayPriceSaveDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
/**
* 节假日id
*/
private Integer id;
/**
* 节假日日期
*/
private String date;
private List<Date> date;
/**
* 节假日
* 节假日名称
*/
private String festival;
/**
......
package com.xxfc.platform.vehicle.biz;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.vehicle.entity.Festival;
import com.xxfc.platform.vehicle.mapper.FestivalMapper;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/18 17:31
*/
@Transactional(rollbackFor = Exception.class)
@Service
public class FestivalBiz extends BaseBiz<FestivalMapper,Festival> {
public void add(Festival festival){
if (Objects.isNull(festival.getId())){
festival.setCrtTime(new Date());
mapper.insertSelective(festival);
}else {
mapper.updateByPrimaryKey(festival);
}
}
public void deleteById(Integer festivalId){
Festival festival = new Festival();
festival.setId(festivalId);
mapper.deleteByPrimaryKey(festival);
}
public Map<Integer, Festival> findFestivalsByIds(List<Integer> festivalIds) {
Map<Integer,Festival> festivalMap = new HashMap<>(20);
List<Festival> festivals = mapper.selectByIdList(festivalIds);
if (CollectionUtils.isNotEmpty(festivalIds)){
festivalMap = festivals.stream().collect(Collectors.toMap(Festival::getId, Function.identity()));
}
return festivalMap;
}
}
......@@ -2,15 +2,18 @@ package com.xxfc.platform.vehicle.biz;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.xxfc.platform.vehicle.entity.Festival;
import com.xxfc.platform.vehicle.entity.VehicleModelHolidayPrice;
import com.xxfc.platform.vehicle.mapper.VehicleModelHolidayPriceMapper;
import com.xxfc.platform.vehicle.pojo.dto.VehicleModelHolidayPriceDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehicleModelHolidayPriceFindDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehicleModelHolidayPriceSaveDTO;
import com.xxfc.platform.vehicle.pojo.vo.VehicleModelHolidayPriceVo;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
......@@ -19,10 +22,8 @@ import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author libin
......@@ -32,9 +33,10 @@ import java.util.Objects;
*/
@Transactional(rollbackFor = Exception.class)
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class VehicleModelHolidayPriceBiz extends BaseBiz<VehicleModelHolidayPriceMapper, VehicleModelHolidayPrice> {
private final FestivalBiz festivalBiz;
/**
* 保存
......@@ -43,23 +45,36 @@ public class VehicleModelHolidayPriceBiz extends BaseBiz<VehicleModelHolidayPric
* @param userId
*/
public void addVehicleModelHolidayPrice(VehicleModelHolidayPriceSaveDTO vehicleModelHolidayPriceSaveDTO, Integer userId) {
VehicleModelHolidayPrice vehicleModelHolidayPrice = new VehicleModelHolidayPrice();
List<VehicleModelHolidayPrice> vehicleModelHolidayPriceList = new ArrayList<>();
VehicleModelHolidayPrice vehicleModelHolidayPrice;
List<Date> dates = vehicleModelHolidayPriceSaveDTO.getDate();
for (Date date : dates) {
vehicleModelHolidayPrice = new VehicleModelHolidayPrice();
BeanUtils.copyProperties(vehicleModelHolidayPriceSaveDTO, vehicleModelHolidayPrice);
vehicleModelHolidayPrice.setFestivalDay(Date.from(LocalDate.parse(vehicleModelHolidayPriceSaveDTO.getDate()).atStartOfDay(ZoneId.systemDefault()).toInstant()));
date = Date.from(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().atStartOfDay(ZoneId.systemDefault()).toInstant());
vehicleModelHolidayPrice.setFestivalDay(date);
vehicleModelHolidayPriceList.add(vehicleModelHolidayPrice);
}
//编辑
if (Objects.nonNull(vehicleModelHolidayPriceSaveDTO.getId())) {
vehicleModelHolidayPrice.setUpdTime(new Date());
vehicleModelHolidayPrice.setUpdUserId(userId);
int effect = mapper.updateByPrimaryKeySelective(vehicleModelHolidayPrice);
if (effect < 1) {
throw new BaseException("车型节假日设置失败");
Example example = new Example(VehicleModelHolidayPrice.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("festivalId", vehicleModelHolidayPriceSaveDTO.getId());
for (VehicleModelHolidayPrice modelHolidayPrice : vehicleModelHolidayPriceList) {
modelHolidayPrice.setUpdUserId(userId);
modelHolidayPrice.setUpdTime(new Date());
mapper.updateByExample(modelHolidayPrice, example);
}
} else {
vehicleModelHolidayPrice.setCrtTime(new Date());
vehicleModelHolidayPrice.setCrtUserId(userId);
int effect = mapper.insertSelective(vehicleModelHolidayPrice);
if (effect < 1) {
throw new BaseException("车型节假日保存失败");
Festival festival = new Festival();
festival.setName(vehicleModelHolidayPriceSaveDTO.getFestival());
festivalBiz.add(festival);
for (VehicleModelHolidayPrice modelHolidayPrice : vehicleModelHolidayPriceList) {
modelHolidayPrice.setCrtTime(new Date());
modelHolidayPrice.setCrtUserId(userId);
modelHolidayPrice.setFestivalId(festival.getId());
mapper.insertSelective(modelHolidayPrice);
}
}
}
......@@ -75,7 +90,7 @@ public class VehicleModelHolidayPriceBiz extends BaseBiz<VehicleModelHolidayPric
vehicleModelHolidayPrice.setFreeDays(freeDays);
Example example = new Example(VehicleModelHolidayPrice.class);
Example.Criteria criteria = example.createCriteria();
setCondtionDate(configDate, criteria);
setCondtionDate(configDate, null, criteria);
int effect = mapper.updateByExampleSelective(vehicleModelHolidayPrice, example);
if (effect < 1) {
throw new BaseException("车型节假日更新失败");
......@@ -92,7 +107,11 @@ public class VehicleModelHolidayPriceBiz extends BaseBiz<VehicleModelHolidayPric
List<VehicleModelHolidayPriceVo> vehicleModelHolidayPriceVos = new ArrayList<>();
Example example = new Example(VehicleModelHolidayPrice.class);
Example.Criteria criteria = example.createCriteria();
setCondtionDate(vehicleModelHolidayPriceFindDTO.getDate(), criteria);
Date date = null;
if (StringUtils.isNotEmpty(vehicleModelHolidayPriceFindDTO.getDate()) && vehicleModelHolidayPriceFindDTO.getDate().trim().length() > 0) {
date = Date.from(LocalDate.parse(vehicleModelHolidayPriceFindDTO.getDate()).atStartOfDay(ZoneId.systemDefault()).toInstant());
}
setCondtionDate(date, vehicleModelHolidayPriceFindDTO.getYear(), criteria);
if (StringUtils.isNotEmpty(vehicleModelHolidayPriceFindDTO.getFestival()) && vehicleModelHolidayPriceFindDTO.getFestival().trim().length() > 0) {
criteria.andLike("festival", String.format("%%%s%%", vehicleModelHolidayPriceFindDTO.getFestival()));
}
......@@ -100,10 +119,13 @@ public class VehicleModelHolidayPriceBiz extends BaseBiz<VehicleModelHolidayPric
if (CollectionUtils.isEmpty(holidayPrices)) {
return vehicleModelHolidayPriceVos;
}
List<Integer> festivalIds = holidayPrices.stream().map(VehicleModelHolidayPrice::getFestivalId).collect(Collectors.toList());
Map<Integer,Festival> festivalMap = festivalBiz.findFestivalsByIds(festivalIds);
VehicleModelHolidayPriceVo vehicleModelHolidayPriceVo;
for (VehicleModelHolidayPrice holidayPrice : holidayPrices) {
vehicleModelHolidayPriceVo = new VehicleModelHolidayPriceVo();
BeanUtils.copyProperties(holidayPrice, vehicleModelHolidayPriceVo);
vehicleModelHolidayPriceVo.setFestival(festivalMap==null?"":festivalMap.get(holidayPrice.getFestivalId()).getName());
vehicleModelHolidayPriceVos.add(vehicleModelHolidayPriceVo);
}
return vehicleModelHolidayPriceVos;
......@@ -125,10 +147,13 @@ public class VehicleModelHolidayPriceBiz extends BaseBiz<VehicleModelHolidayPric
if (CollectionUtils.isEmpty(modelHolidayPrices)) {
return vehicleModelHolidayPriceDTOS;
}
List<Integer> festivalIds = modelHolidayPrices.stream().map(VehicleModelHolidayPrice::getFestivalId).collect(Collectors.toList());
Map<Integer,Festival> festivalMap = festivalBiz.findFestivalsByIds(festivalIds);
VehicleModelHolidayPriceDTO vehicleModelHolidayPriceDTO;
for (VehicleModelHolidayPrice modelHolidayPrice : modelHolidayPrices) {
vehicleModelHolidayPriceDTO = new VehicleModelHolidayPriceDTO();
BeanUtils.copyProperties(modelHolidayPrice, vehicleModelHolidayPriceDTO);
vehicleModelHolidayPriceDTO.setFestival(festivalMap==null?"":festivalMap.get(modelHolidayPrice.getFestivalId()).getName());
vehicleModelHolidayPriceDTOS.add(vehicleModelHolidayPriceDTO);
}
return vehicleModelHolidayPriceDTOS;
......@@ -138,14 +163,20 @@ public class VehicleModelHolidayPriceBiz extends BaseBiz<VehicleModelHolidayPric
* @param id
* @return
*/
public VehicleModelHolidayPriceSaveDTO findVehicleModelHolidayPriceById(Long id) {
VehicleModelHolidayPrice vehicleModelHolidayPrice = mapper.selectByPrimaryKey(id);
if (Objects.isNull(vehicleModelHolidayPrice)) {
public VehicleModelHolidayPriceSaveDTO findVehicleModelHolidayPriceFestivalId(Long id) {
VehicleModelHolidayPriceSaveDTO modelHolidayPriceSaveDTO = new VehicleModelHolidayPriceSaveDTO();
Example example = new Example(VehicleModelHolidayPrice.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("festivalId",id);
List<VehicleModelHolidayPrice> vehicleModelHolidayPrices = mapper.selectByExample(example);
if (CollectionUtils.isEmpty(vehicleModelHolidayPrices)) {
throw new BaseException("数据不存在");
}
VehicleModelHolidayPriceSaveDTO vehicleModelHolidayPriceSaveDTO = new VehicleModelHolidayPriceSaveDTO();
BeanUtils.copyProperties(vehicleModelHolidayPrice, vehicleModelHolidayPriceSaveDTO);
return vehicleModelHolidayPriceSaveDTO;
List<Date> dates = vehicleModelHolidayPrices.stream().map(VehicleModelHolidayPrice::getFestivalDay).collect(Collectors.toList());
VehicleModelHolidayPrice vehicleModelHolidayPrice = vehicleModelHolidayPrices.get(0);
BeanUtils.copyProperties(vehicleModelHolidayPrice, modelHolidayPriceSaveDTO);
modelHolidayPriceSaveDTO.setDate(dates);
return modelHolidayPriceSaveDTO;
}
/**
......@@ -154,15 +185,24 @@ public class VehicleModelHolidayPriceBiz extends BaseBiz<VehicleModelHolidayPric
* @param conditionDate
* @param criteria
*/
private void setCondtionDate(Date conditionDate, Example.Criteria criteria) {
LocalDate localDate = LocalDate.from(conditionDate.toInstant());
private void setCondtionDate(Date conditionDate, Integer year, Example.Criteria criteria) {
//开始日期
Instant startInstant = localDate.withDayOfMonth(1).atStartOfDay(ZoneId.systemDefault()).toInstant();
Instant startInstant = null;
//结束日期
Instant endInstant = null;
if (Objects.nonNull(year) && Objects.isNull(conditionDate)) {
startInstant = LocalDate.of(year, 1, 1).atStartOfDay(ZoneId.systemDefault()).toInstant();
endInstant = LocalDate.of(year, 12, 31).atStartOfDay(ZoneId.systemDefault()).toInstant();
}
if (Objects.nonNull(conditionDate)) {
LocalDate localDate = conditionDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
startInstant = localDate.withDayOfMonth(1).atStartOfDay(ZoneId.systemDefault()).toInstant();
LocalDate endLocalDate = localDate.with(TemporalAdjusters.lastDayOfMonth());
Instant endInstant = endLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
endInstant = endLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
}
if (Objects.nonNull(startInstant) && Objects.nonNull(endInstant)) {
criteria.andBetween("festivalDay", Date.from(startInstant), Date.from(endInstant));
}
}
}
package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.Festival;
import tk.mybatis.mapper.additional.idlist.SelectByIdListMapper;
import tk.mybatis.mapper.common.Mapper;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/18 17:33
*/
public interface FestivalMapper extends Mapper<Festival>, SelectByIdListMapper<Festival,Integer> {
}
package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.VehicleModelHolidayPrice;
import tk.mybatis.mapper.additional.insert.InsertListMapper;
import tk.mybatis.mapper.common.Mapper;
/**
......@@ -9,5 +10,5 @@ import tk.mybatis.mapper.common.Mapper;
* @description
* @data 2019/10/14 17:32
*/
public interface VehicleModelHolidayPriceMapper extends Mapper<VehicleModelHolidayPrice> {
public interface VehicleModelHolidayPriceMapper extends Mapper<VehicleModelHolidayPrice>, InsertListMapper<VehicleModelHolidayPrice> {
}
......@@ -11,14 +11,11 @@ import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
......
......@@ -36,7 +36,7 @@ public class VehicleModelHolidayPriceAdminController {
@GetMapping("/{id}")
public ObjectRestResponse<VehicleModelHolidayPriceSaveDTO> findVehicleModelHolidayPrice(@PathVariable(value = "id") Long id){
VehicleModelHolidayPriceSaveDTO vehicleModelHolidayPriceSaveDTO = vehicleModelHolidayPriceBiz.findVehicleModelHolidayPriceById(id);
VehicleModelHolidayPriceSaveDTO vehicleModelHolidayPriceSaveDTO = vehicleModelHolidayPriceBiz.findVehicleModelHolidayPriceFestivalId(id);
return ObjectRestResponse.succ(vehicleModelHolidayPriceSaveDTO);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment