Commit 1b695f4b authored by 164003836@qq.con's avatar 164003836@qq.con

增加车辆管理项目

parent a1e289a4
...@@ -131,6 +131,19 @@ ...@@ -131,6 +131,19 @@
<version>1.1.10</version> <version>1.1.10</version>
</dependency> </dependency>
<!-- 引用缓存开源项目 -->
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-cache</artifactId>
<version>0.0.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
......
package com.xinxincaravan.caravan.vehicle; package com.xinxincaravan.caravan.vehicle;
import com.ace.cache.EnableAceCache;
import com.github.wxiaoqi.security.auth.client.EnableAceAuthClient; import com.github.wxiaoqi.security.auth.client.EnableAceAuthClient;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication @SpringBootApplication
@EnableDiscoveryClient @EnableDiscoveryClient
//@EnableScheduling @EnableScheduling
//@EnableAceAuthClient @EnableAceAuthClient
//@EnableFeignClients({"com.github.wxiaoqi.security.auth.client.feign"}) @EnableFeignClients({"com.github.wxiaoqi.security.auth.client.feign"})
@EnableAceCache
@MapperScan("com.xinxincaravan.caravan.vehicle.mapper") @MapperScan("com.xinxincaravan.caravan.vehicle.mapper")
public class VehicleApplication { public class VehicleApplication {
......
package com.xinxincaravan.caravan.vehicle.biz; package com.xinxincaravan.caravan.vehicle.biz;
import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.xinxincaravan.caravan.vehicle.constant.RedisKey;
import com.xinxincaravan.caravan.vehicle.entity.BranchCompany; import com.xinxincaravan.caravan.vehicle.entity.BranchCompany;
import com.xinxincaravan.caravan.vehicle.mapper.BranchCompanyMapper; import com.xinxincaravan.caravan.vehicle.mapper.BranchCompanyMapper;
import com.xinxincaravan.caravan.vehicle.vo.BranchCompanyVo; import com.xinxincaravan.caravan.vehicle.vo.BranchCompanyVo;
import com.xinxincaravan.caravan.vehicle.vo.PageDataVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import java.util.List; import java.util.List;
...@@ -48,6 +55,26 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany ...@@ -48,6 +55,26 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany
return branchCompanyVoList; return branchCompanyVoList;
} }
public PageDataVo<BranchCompany> getAll(Integer page,Integer limit,Integer addrProvince, Integer addrCity,
Integer addrTown){
Example example = new Example(BranchCompany.class);
Example.Criteria criteria = example.createCriteria();
if(addrProvince!=null) {
criteria.andCondition(" addr_province = '" + addrProvince + "'");
}
if(addrCity!=null) {
criteria.andCondition(" addr_city = '" + addrCity + "'");
}
if(addrTown!=null) {
criteria.andCondition(" addr_town = '" + addrTown + "'");
}
example.setOrderByClause("`id` asc");
PageHelper.startPage(page,limit);
PageInfo<BranchCompany> branchCompanyPageInfo = new PageInfo<>(mapper.selectByExample(example));
return PageDataVo.pageInfo(branchCompanyPageInfo);
}
@Cache(key= RedisKey.BRANCH_COMPANY_CACHE_ALL)
public List<BranchCompany> getAll(){ public List<BranchCompany> getAll(){
return mapper.selectAll(); return mapper.selectAll();
} }
...@@ -57,6 +84,7 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany ...@@ -57,6 +84,7 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany
* @param branchCompanyVo * @param branchCompanyVo
* @return * @return
*/ */
@CacheClear(key= RedisKey.BRANCH_COMPANY_CACHE_ALL)
public Integer add(BranchCompanyVo branchCompanyVo){ public Integer add(BranchCompanyVo branchCompanyVo){
BranchCompany branchCompany = new BranchCompany(); BranchCompany branchCompany = new BranchCompany();
BeanUtils.copyProperties(branchCompanyVo,branchCompany); BeanUtils.copyProperties(branchCompanyVo,branchCompany);
...@@ -64,6 +92,7 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany ...@@ -64,6 +92,7 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany
return branchCompany.getId(); return branchCompany.getId();
} }
@CacheClear(key= RedisKey.BRANCH_COMPANY_CACHE_ALL)
public void del(Integer id){ public void del(Integer id){
mapper.deleteByPrimaryKey(id); mapper.deleteByPrimaryKey(id);
} }
...@@ -73,6 +102,7 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany ...@@ -73,6 +102,7 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany
* @param branchCompany * @param branchCompany
* @return * @return
*/ */
@CacheClear(key= RedisKey.BRANCH_COMPANY_CACHE_ALL)
public Integer update(BranchCompany branchCompany){ public Integer update(BranchCompany branchCompany){
return mapper.updateByPrimaryKeySelective(branchCompany); return mapper.updateByPrimaryKeySelective(branchCompany);
} }
......
...@@ -19,7 +19,6 @@ import org.joda.time.DateTime; ...@@ -19,7 +19,6 @@ import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.task.TaskExecutor; import org.springframework.core.task.TaskExecutor;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -34,7 +33,7 @@ import java.util.concurrent.TimeUnit; ...@@ -34,7 +33,7 @@ import java.util.concurrent.TimeUnit;
public class ConstantBiz extends BaseBiz<ConstantMapper,Constant> { public class ConstantBiz extends BaseBiz<ConstantMapper,Constant> {
@Autowired @Autowired
private RedisTemplate redisTemplate; private RedisTemplate customRedisTemplate;
@Autowired @Autowired
private TaskExecutor customTaskExecutor; private TaskExecutor customTaskExecutor;
/** /**
...@@ -70,7 +69,7 @@ public class ConstantBiz extends BaseBiz<ConstantMapper,Constant> { ...@@ -70,7 +69,7 @@ public class ConstantBiz extends BaseBiz<ConstantMapper,Constant> {
* @return * @return
*/ */
public List<ConstantVo> getAllConstantByType(Integer type) { public List<ConstantVo> getAllConstantByType(Integer type) {
String cacheConstantsJsonStr = String.valueOf(redisTemplate.opsForValue().get(getConstantRedisKey(type))); String cacheConstantsJsonStr = String.valueOf(customRedisTemplate.opsForValue().get(getConstantRedisKey(type)));
Map<String,Object> constantMap = new HashMap<>(); Map<String,Object> constantMap = new HashMap<>();
if(StringUtils.isNotBlank(cacheConstantsJsonStr)){ if(StringUtils.isNotBlank(cacheConstantsJsonStr)){
constantMap = JSON.parseObject(cacheConstantsJsonStr); constantMap = JSON.parseObject(cacheConstantsJsonStr);
...@@ -131,18 +130,18 @@ public class ConstantBiz extends BaseBiz<ConstantMapper,Constant> { ...@@ -131,18 +130,18 @@ public class ConstantBiz extends BaseBiz<ConstantMapper,Constant> {
log.info("刷新类型【"+type+"】常量数据任务开始"); log.info("刷新类型【"+type+"】常量数据任务开始");
//redis方式实现乐观锁 //redis方式实现乐观锁
String redisLockKey = RedisKey.CONSTANT_REFRESH_LOCK_PREFIX +type+":"+(DateTime.now().getMinuteOfDay()/5);//同一日每5分钟只刷新一次 String redisLockKey = RedisKey.CONSTANT_REFRESH_LOCK_PREFIX +type+":"+(DateTime.now().getMinuteOfDay()/5);//同一日每5分钟只刷新一次
Boolean suc = redisTemplate.opsForValue().setIfAbsent(redisLockKey, String.valueOf(DateTime.now().getMillis())); Boolean suc = customRedisTemplate.opsForValue().setIfAbsent(redisLockKey, String.valueOf(DateTime.now().getMillis()));
if(!suc){ if(!suc){
continue; continue;
} }
redisTemplate.expire(redisLockKey,5, TimeUnit.MINUTES);//5分钟内过期 customRedisTemplate.expire(redisLockKey,5, TimeUnit.MINUTES);//5分钟内过期
List<ConstantVo> constantVoList = getAllConstantByTypeNoCache(type); List<ConstantVo> constantVoList = getAllConstantByTypeNoCache(type);
if(CollectionUtils.isNotEmpty(constantVoList)){ if(CollectionUtils.isNotEmpty(constantVoList)){
Map<String,String> constantMap = new HashMap<>(); Map<String,String> constantMap = new HashMap<>();
for(ConstantVo constantVo:constantVoList){ for(ConstantVo constantVo:constantVoList){
constantMap.put(String.valueOf(constantVo.getCode()),constantVo.getVal()); constantMap.put(String.valueOf(constantVo.getCode()),constantVo.getVal());
} }
redisTemplate.opsForValue().set(getConstantRedisKey(type), JSON.toJSONString(constantMap)); customRedisTemplate.opsForValue().set(getConstantRedisKey(type), JSON.toJSONString(constantMap));
} }
log.info("刷新类型【"+type+"】常量数据任务完成"); log.info("刷新类型【"+type+"】常量数据任务完成");
} }
......
...@@ -7,33 +7,26 @@ import com.google.common.collect.Lists; ...@@ -7,33 +7,26 @@ import com.google.common.collect.Lists;
import com.xinxincaravan.caravan.vehicle.common.CustomIllegalParamException; import com.xinxincaravan.caravan.vehicle.common.CustomIllegalParamException;
import com.xinxincaravan.caravan.vehicle.constant.RedisKey; import com.xinxincaravan.caravan.vehicle.constant.RedisKey;
import com.xinxincaravan.caravan.vehicle.constant.RegionType; import com.xinxincaravan.caravan.vehicle.constant.RegionType;
import com.xinxincaravan.caravan.vehicle.entity.Constant;
import com.xinxincaravan.caravan.vehicle.entity.SysRegion; import com.xinxincaravan.caravan.vehicle.entity.SysRegion;
import com.xinxincaravan.caravan.vehicle.mapper.SysRegionMapper; import com.xinxincaravan.caravan.vehicle.mapper.SysRegionMapper;
import com.xinxincaravan.caravan.vehicle.vo.ConstantVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.task.TaskExecutor; import org.springframework.core.task.TaskExecutor;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@Service @Service
@Slf4j @Slf4j
public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> { public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> {
@Autowired @Autowired
private RedisTemplate redisTemplate;//todo redis需要改为多实例 private RedisTemplate customRedisTemplate;//todo redis需要改为多实例
@Autowired @Autowired
private TaskExecutor customTaskExecutor; private TaskExecutor customTaskExecutor;
...@@ -42,6 +35,35 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> { ...@@ -42,6 +35,35 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> {
*/ */
private static final Long PARENT_ID_NONE = 0l; private static final Long PARENT_ID_NONE = 0l;
public List<SysRegion> getRegionsByCodes(List<Long> ids){
List<String> redisCacheKeys = Lists.newArrayList();
if(CollectionUtils.isEmpty(ids)){
throw new CustomIllegalParamException("empty id list");
}
for(Long id:ids){
redisCacheKeys.add(RedisKey.SYS_REGION_CACHE_PREFIX+id);
}
List<String> cachedRegionStrList = customRedisTemplate.opsForValue().multiGet(redisCacheKeys);
List<SysRegion> rs = Lists.newArrayList();
Boolean hasCache = Boolean.TRUE;
for(String cachedRegionStr:cachedRegionStrList){
if(StringUtils.isBlank(cachedRegionStr)){
hasCache = Boolean.FALSE;
continue;
}else{
rs.add(JSONObject.parseObject(cachedRegionStr,SysRegion.class));
}
}
if(!hasCache){//从db读
rs = mapper.getByIdList(ids);
}
return rs;
}
//获取相应地区类型对应在id的位数,作为对应parent查找其下地区的redis key组成部分 //获取相应地区类型对应在id的位数,作为对应parent查找其下地区的redis key组成部分
private String getPrefixOfAgencyId(Integer type,Long parentId){ private String getPrefixOfAgencyId(Integer type,Long parentId){
switch(type){ switch(type){
...@@ -91,7 +113,7 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> { ...@@ -91,7 +113,7 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> {
*/ */
private String getCacheRedisKey(Long parentId){ private String getCacheRedisKey(Long parentId){
//获取相应地区类型对应在agencyId的位数 //获取相应地区类型对应在agencyId的位数
return RedisKey.SYS_REGION_CACHE_PREFIX +getPrefixOfAgencyId(parentId); return RedisKey.SYS_REGION_SONS_CACHE_PREFIX +getPrefixOfAgencyId(parentId);
} }
/** /**
...@@ -102,7 +124,7 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> { ...@@ -102,7 +124,7 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> {
public List<SysRegion> getSonRegion(Long id){ public List<SysRegion> getSonRegion(Long id){
//从缓存中查询 //从缓存中查询
String redisKey = getCacheRedisKey(id); String redisKey = getCacheRedisKey(id);
String sysRegionListJson = String.valueOf(redisTemplate.opsForValue().get(redisKey)); String sysRegionListJson = String.valueOf(customRedisTemplate.opsForValue().get(redisKey));
List<SysRegion> sysRegions = null; List<SysRegion> sysRegions = null;
if(StringUtils.isNotBlank(sysRegionListJson)){ if(StringUtils.isNotBlank(sysRegionListJson)){
sysRegions = JSONObject.parseArray(sysRegionListJson,SysRegion.class); sysRegions = JSONObject.parseArray(sysRegionListJson,SysRegion.class);
...@@ -140,12 +162,14 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> { ...@@ -140,12 +162,14 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> {
List<SysRegion> sonRegions = getSonRegionNoCache(id); List<SysRegion> sonRegions = getSonRegionNoCache(id);
//把当前节点的子节点数据缓存 //把当前节点的子节点数据缓存
String redisKey = getCacheRedisKey(id); String redisKey = getCacheRedisKey(id);
redisTemplate.opsForValue().set(redisKey,JSON.toJSON(sonRegions).toString()); customRedisTemplate.opsForValue().set(redisKey,JSON.toJSON(sonRegions).toString());
log.info("完成地区【"+id+"】的子地区数据缓存"); log.info("完成地区【"+id+"】的子地区数据缓存");
if(CollectionUtils.isEmpty(sonRegions) || getTypeFromId(id).equals(RegionType.CITY.getCode())){ if(CollectionUtils.isEmpty(sonRegions) || getTypeFromId(id).equals(RegionType.CITY.getCode())){
return; return;
} }
for(SysRegion sonRegion:sonRegions){ for(SysRegion sonRegion:sonRegions){
//缓存每个地区
customRedisTemplate.opsForValue().set(RedisKey.SYS_REGION_CACHE_PREFIX+sonRegion.getId(),JSON.toJSON(sonRegion).toString());
refreshCacheRegionAndSon(sonRegion.getId()); refreshCacheRegionAndSon(sonRegion.getId());
} }
} }
...@@ -157,7 +181,7 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> { ...@@ -157,7 +181,7 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> {
public void refreshCache(){ public void refreshCache(){
String redisLockKey = RedisKey.SYS_REGION_REFRESH_LOCK +(DateTime.now().getMinuteOfDay()/5);//同一日每5分钟只刷新一次 String redisLockKey = RedisKey.SYS_REGION_REFRESH_LOCK +(DateTime.now().getMinuteOfDay()/5);//同一日每5分钟只刷新一次
Boolean suc = redisTemplate.opsForValue().setIfAbsent(redisLockKey, String.valueOf(DateTime.now().getMillis())); Boolean suc = customRedisTemplate.opsForValue().setIfAbsent(redisLockKey, String.valueOf(DateTime.now().getMillis()));
if(!suc){ if(!suc){
log.info("刷新地区数据:获取乐观锁失败,不执行任务"); log.info("刷新地区数据:获取乐观锁失败,不执行任务");
return; return;
......
...@@ -18,10 +18,7 @@ import com.xinxincaravan.caravan.vehicle.entity.VehicleBookRecord; ...@@ -18,10 +18,7 @@ import com.xinxincaravan.caravan.vehicle.entity.VehicleBookRecord;
import com.xinxincaravan.caravan.vehicle.mapper.VehicleBookInfoMapper; import com.xinxincaravan.caravan.vehicle.mapper.VehicleBookInfoMapper;
import com.xinxincaravan.caravan.vehicle.mapper.VehicleBookRecordMapper; import com.xinxincaravan.caravan.vehicle.mapper.VehicleBookRecordMapper;
import com.xinxincaravan.caravan.vehicle.mapper.VehicleMapper; import com.xinxincaravan.caravan.vehicle.mapper.VehicleMapper;
import com.xinxincaravan.caravan.vehicle.vo.AddOrUpdateVehicleVo; import com.xinxincaravan.caravan.vehicle.vo.*;
import com.xinxincaravan.caravan.vehicle.vo.BookVehicleVo;
import com.xinxincaravan.caravan.vehicle.vo.PageDataVo;
import com.xinxincaravan.caravan.vehicle.vo.VehiclePageQueryVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.beanutils.PropertyUtils;
...@@ -81,6 +78,25 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -81,6 +78,25 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
return CollectionUtils.isEmpty(vehicleBookInfoList)?null:vehicleBookInfoList.get(0); return CollectionUtils.isEmpty(vehicleBookInfoList)?null:vehicleBookInfoList.get(0);
} }
/**
* 获取相关预订记录
* @param vehicle
* @return
*/
public List<VehicleBookInfo> getByVehicleIdAndYearMonth(String vehicle){
Map<String,Object> params = Maps.newHashMap();
params.put("vehicle",vehicle);
params.put("yearMonths",
Lists.newArrayList(
DateTime.now().toString(YEARMONTH_DATE_TIME_FORMATTER),
DateTime.now().plusMonths(1).toString(YEARMONTH_DATE_TIME_FORMATTER),
DateTime.now().plusMonths(2).toString(YEARMONTH_DATE_TIME_FORMATTER)
)
);
List<VehicleBookInfo> vehicleBookInfoList = vehicleBookInfoMapper.getByVehicleIdAndYearMonths(params);
return vehicleBookInfoList;
}
/** /**
* 检查常量是否合法 * 检查常量是否合法
*/ */
...@@ -190,7 +206,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -190,7 +206,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
* @param bookVehicleVo * @param bookVehicleVo
* @return * @return
*/ */
public RestResponse applyVehicle4Employee(Integer userId,BookVehicleVo bookVehicleVo){ public RestResponse applyVehicle4Employee(Integer userId,BookVehicleVo bookVehicleVo,String userName){
//检查车辆信息是否合法 //检查车辆信息是否合法
checkIfVehicleExists(bookVehicleVo.getVehicle()); checkIfVehicleExists(bookVehicleVo.getVehicle());
//提取日期和相应的预定目标日期 //提取日期和相应的预定目标日期
...@@ -214,6 +230,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -214,6 +230,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
vehicleBookRecord.setBookType(BookType.EMPLOYEE_APPLY.getCode()); vehicleBookRecord.setBookType(BookType.EMPLOYEE_APPLY.getCode());
vehicleBookRecord.setStatus(VehicleBookRecordStatus.APPLY.getCode()); vehicleBookRecord.setStatus(VehicleBookRecordStatus.APPLY.getCode());
vehicleBookRecord.setBookUser(userId); vehicleBookRecord.setBookUser(userId);
vehicleBookRecord.setBookUserName(userName);
vehicleBookRecord.setBookStartDate(DateTime. vehicleBookRecord.setBookStartDate(DateTime.
parse(bookVehicleVo.getBookStartDate(),DEFAULT_DATE_TIME_FORMATTER).toDate()); parse(bookVehicleVo.getBookStartDate(),DEFAULT_DATE_TIME_FORMATTER).toDate());
vehicleBookRecord.setBookEndDate(DateTime. vehicleBookRecord.setBookEndDate(DateTime.
...@@ -234,10 +251,10 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -234,10 +251,10 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
//位操作确定目标日期是否可预订 //位操作确定目标日期是否可预订
Map<String,Object> params = Maps.newHashMap(); Map<String,Object> params = Maps.newHashMap();
Map<String,List<String>> yearMonthAndDate = new HashMap<>(); Map<String,List<String>> yearMonthAndDate = new HashMap<>();
yearMonthAndDate.put(vehicleBookInfo.getYearMonth(),bookedDates); yearMonthAndDate.put(yearMonth,bookedDates);
fillBookedDateSearchParam(params,null,yearMonthAndDate);//转换为查询对应日期未预定的条件 fillBookedDateSearchParam(params,null,yearMonthAndDate);//转换为查询对应日期未预定的条件
Map<String,Map<String,Integer>> yearMonthAndParam = (Map<String,Map<String,Integer>>)params.get("yearMonthAndParam"); Map<String,Map<String,Integer>> yearMonthAndParam = (Map<String,Map<String,Integer>>)params.get("yearMonthAndParam");
Map<String,Integer> andOpratorParam = yearMonthAndParam.get(vehicleBookInfo.getYearMonth()); Map<String,Integer> andOpratorParam = yearMonthAndParam.get(yearMonth);
Integer andOperationFactor = andOpratorParam.get("andOperationFactor"); Integer andOperationFactor = andOpratorParam.get("andOperationFactor");
Integer andOperationRs = andOpratorParam.get("andOperationRs"); Integer andOperationRs = andOpratorParam.get("andOperationRs");
if(vehicleBookInfo!=null&&vehicleBookInfo.getBookedDate()!=null && if(vehicleBookInfo!=null&&vehicleBookInfo.getBookedDate()!=null &&
...@@ -255,7 +272,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -255,7 +272,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
* @return * @return
*/ */
@Transactional @Transactional
public RestResponse<Integer> reviewVehicleBooking(Integer operatorId, Long bookRecordId,Integer rsStatus) throws Exception{ public RestResponse<Integer> reviewVehicleBooking(Integer operatorId, Long bookRecordId,Integer rsStatus,String userName) throws Exception{
//获取相关申请记录 //获取相关申请记录
VehicleBookRecord vehicleBookRecord = vehicleBookRecordMapper.selectByPrimaryKey(bookRecordId); VehicleBookRecord vehicleBookRecord = vehicleBookRecordMapper.selectByPrimaryKey(bookRecordId);
//申请记录验证 //申请记录验证
...@@ -282,6 +299,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -282,6 +299,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
updateParam.put("id",bookRecordId); updateParam.put("id",bookRecordId);
updateParam.put("status",rsStatus); updateParam.put("status",rsStatus);
updateParam.put("reviewerApply",operatorId); updateParam.put("reviewerApply",operatorId);
updateParam.put("reviewerNameApply",userName);
updateParam.put("statusCondition",VehicleBookRecordStatus.APPLY.getCode()); updateParam.put("statusCondition",VehicleBookRecordStatus.APPLY.getCode());
Integer effected = vehicleBookRecordMapper.changeRecordStatus(updateParam); Integer effected = vehicleBookRecordMapper.changeRecordStatus(updateParam);
if(effected == 0){//修改失败,手动回滚 if(effected == 0){//修改失败,手动回滚
...@@ -296,7 +314,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -296,7 +314,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
* @return * @return
*/ */
@Transactional @Transactional
public RestResponse unbookVehicle4Employee(Integer operatorId,Long bookRecordId) throws Exception{ public RestResponse unbookVehicle4Employee(Integer operatorId,Long bookRecordId,String userName) throws Exception{
//获取相关申请记录 //获取相关申请记录
VehicleBookRecord vehicleBookRecord = vehicleBookRecordMapper.selectByPrimaryKey(bookRecordId); VehicleBookRecord vehicleBookRecord = vehicleBookRecordMapper.selectByPrimaryKey(bookRecordId);
//申请记录验证 //申请记录验证
...@@ -323,6 +341,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -323,6 +341,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
updateParam.put("id",bookRecordId); updateParam.put("id",bookRecordId);
updateParam.put("status",VehicleBookRecordStatus.CANCEL_APPLY.getCode()); updateParam.put("status",VehicleBookRecordStatus.CANCEL_APPLY.getCode());
updateParam.put("reviewerCancel",operatorId); updateParam.put("reviewerCancel",operatorId);
updateParam.put("reviewerNameCancel",userName);
updateParam.put("statusCondition",VehicleBookRecordStatus.APPROVE.getCode()); updateParam.put("statusCondition",VehicleBookRecordStatus.APPROVE.getCode());
Integer effected = vehicleBookRecordMapper.changeRecordStatus(updateParam); Integer effected = vehicleBookRecordMapper.changeRecordStatus(updateParam);
if(effected == 0){//修改失败,手动回滚 if(effected == 0){//修改失败,手动回滚
...@@ -719,17 +738,17 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -719,17 +738,17 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
* @return * @return
* @throws Exception * @throws Exception
*/ */
public PageDataVo<Vehicle> getByPage(VehiclePageQueryVo vehiclePageQueryVo) throws Exception{ public PageDataVo<QueryVehicleVo> getByPage(VehiclePageQueryVo vehiclePageQueryVo) throws Exception{
Map<String, Object> params = PropertyUtils.describe(vehiclePageQueryVo); Map<String, Object> params = PropertyUtils.describe(vehiclePageQueryVo);
Integer pageSize = (Integer) params.get("pageSize"); Integer pageSize = (Integer) params.get("limit");
params.remove("pageSize"); params.remove("pageSize");
Integer pageNo = (Integer) params.get("pageNo"); Integer pageNo = (Integer) params.get("page");
params.remove("pageNo"); params.remove("pageNo");
//处理预定日期相关参数 //处理预定日期相关参数
adjustBookedInfoParam(params,vehiclePageQueryVo); adjustBookedInfoParam(params,vehiclePageQueryVo);
PageHelper.startPage(pageNo,pageSize); PageHelper.startPage(pageNo,pageSize);
List<Vehicle> vehicles = mapper.getByPage(params); List<QueryVehicleVo> vehicles = mapper.getByPage(params);
PageInfo<Vehicle> vehiclePageInfo = new PageInfo<>(vehicles); PageInfo<QueryVehicleVo> vehiclePageInfo = new PageInfo<>(vehicles);
return PageDataVo.pageInfo(vehiclePageInfo); return PageDataVo.pageInfo(vehiclePageInfo);
} }
......
...@@ -31,7 +31,7 @@ public class VehicleBookInfoBiz extends BaseBiz<VehicleBookInfoMapper, VehicleBo ...@@ -31,7 +31,7 @@ public class VehicleBookInfoBiz extends BaseBiz<VehicleBookInfoMapper, VehicleBo
public static final Integer COPY_BATCH_SIZE = 100; public static final Integer COPY_BATCH_SIZE = 100;
@Autowired @Autowired
private RedisTemplate redisTemplate; private RedisTemplate customRedisTemplate;
/** /**
* 迁移数据到历史表 * 迁移数据到历史表
...@@ -60,9 +60,9 @@ public class VehicleBookInfoBiz extends BaseBiz<VehicleBookInfoMapper, VehicleBo ...@@ -60,9 +60,9 @@ public class VehicleBookInfoBiz extends BaseBiz<VehicleBookInfoMapper, VehicleBo
String lastMonthStr = now.plusMonths(-1).toString(YEARMONTH_DATE_TIME_FORMATTER); String lastMonthStr = now.plusMonths(-1).toString(YEARMONTH_DATE_TIME_FORMATTER);
String redisKey = RedisKey.DEL_BOOK_INFO_LOCK_PREFIX +lastMonthStr; String redisKey = RedisKey.DEL_BOOK_INFO_LOCK_PREFIX +lastMonthStr;
Boolean hasSuc = redisTemplate.opsForValue().setIfAbsent(redisKey,String.valueOf(DateTime.now().getMillis())); Boolean hasSuc = customRedisTemplate.opsForValue().setIfAbsent(redisKey,String.valueOf(DateTime.now().getMillis()));
if(hasSuc){//设置1天后过期 if(hasSuc){//设置1天后过期
redisTemplate.expire(redisKey,1, TimeUnit.DAYS); customRedisTemplate.expire(redisKey,1, TimeUnit.DAYS);
}else{ }else{
log.info("[预定信息迁移]乐观锁获取失败,该线程不执行任务。"); log.info("[预定信息迁移]乐观锁获取失败,该线程不执行任务。");
return Boolean.FALSE; return Boolean.FALSE;
......
package com.xinxincaravan.caravan.vehicle.biz; package com.xinxincaravan.caravan.vehicle.biz;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.xinxincaravan.caravan.vehicle.common.CustomIllegalParamException;
import com.xinxincaravan.caravan.vehicle.constant.RedisKey; import com.xinxincaravan.caravan.vehicle.constant.RedisKey;
import com.xinxincaravan.caravan.vehicle.entity.VehicleBookRecord; import com.xinxincaravan.caravan.vehicle.entity.VehicleBookRecord;
import com.xinxincaravan.caravan.vehicle.mapper.VehicleBookRecordMapper; import com.xinxincaravan.caravan.vehicle.mapper.VehicleBookRecordMapper;
import com.xinxincaravan.caravan.vehicle.vo.PageDataVo;
import com.xinxincaravan.caravan.vehicle.vo.QueryVehicleBookRecordVo;
import com.xinxincaravan.caravan.vehicle.vo.VehicleBookRecordQueryVo;
import com.xinxincaravan.caravan.vehicle.vo.VehiclePageQueryVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.DateTimeFormatter;
...@@ -16,6 +25,7 @@ import org.springframework.scheduling.annotation.Scheduled; ...@@ -16,6 +25,7 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -25,13 +35,46 @@ import java.util.concurrent.TimeUnit; ...@@ -25,13 +35,46 @@ import java.util.concurrent.TimeUnit;
public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, VehicleBookRecord> { public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, VehicleBookRecord> {
public static final String TB_NAME_PREFIX = "vehicle_book_record_his_"; public static final String TB_NAME_PREFIX = "vehicle_book_record_his_";
public static final String TB_NAME_REAL = "vehicle_book_record";//实际表名
public static final DateTimeFormatter YEAR_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy"); public static final DateTimeFormatter YEAR_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy");
public static final DateTimeFormatter YEARMONTH_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM"); public static final DateTimeFormatter YEARMONTH_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM");
public static final Integer DEL_BATCH_SIZE = 1000; public static final Integer DEL_BATCH_SIZE = 1000;
public static final Integer COPY_BATCH_SIZE = 100; public static final Integer COPY_BATCH_SIZE = 100;
@Autowired @Autowired
private RedisTemplate redisTemplate; private RedisTemplate customRedisTemplate;
/**
* 按页查询
* @param vehicleBookRecordQueryVo
* @return
* @throws Exception
*/
public PageDataVo<QueryVehicleBookRecordVo> page(VehicleBookRecordQueryVo vehicleBookRecordQueryVo) throws Exception{
Map<String, Object> params = PropertyUtils.describe(vehicleBookRecordQueryVo);
String selectedMonth = (String)params.get("selectedMonth");
if(StringUtils.isBlank(selectedMonth)){
throw new CustomIllegalParamException(" no month selected ");
}
params.put("tbName",TB_NAME_REAL);
DateTime selectedMonthDate = DateTime.parse(selectedMonth,YEARMONTH_DATE_TIME_FORMATTER);
if(selectedMonthDate.compareTo(DateTime.now().plusMonths(-1).withDayOfMonth(1).withMillisOfDay(0)) < 0){
params.put("tbName",getTbName(String.valueOf(selectedMonthDate.getYear())));
}
params.put("bookedStartDate",selectedMonthDate.withDayOfMonth(1).toString());
params.put("bookedEndDate",selectedMonthDate.plusMonths(1).withDayOfMonth(1).toDate());
Integer pageSize = (Integer) params.get("limit");
params.remove("pageSize");
Integer pageNo = (Integer) params.get("page");
params.remove("pageNo");
PageHelper.startPage(pageNo,pageSize);
List<QueryVehicleBookRecordVo> bookRecordAndVehicleInfo = mapper.getByPage(params);
PageInfo<QueryVehicleBookRecordVo> vehiclePageInfo = new PageInfo<>(bookRecordAndVehicleInfo);
return PageDataVo.pageInfo(vehiclePageInfo);
}
/** /**
* 迁移数据到历史表 * 迁移数据到历史表
...@@ -61,9 +104,9 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic ...@@ -61,9 +104,9 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic
String lastMonthStr = now.plusMonths(-1).toString(YEARMONTH_DATE_TIME_FORMATTER); String lastMonthStr = now.plusMonths(-1).toString(YEARMONTH_DATE_TIME_FORMATTER);
String redisKey = RedisKey.DEL_BOOK_RECORD_LOCK_PREFIX +lastMonthStr; String redisKey = RedisKey.DEL_BOOK_RECORD_LOCK_PREFIX +lastMonthStr;
Boolean hasSuc = redisTemplate.opsForValue().setIfAbsent(redisKey,String.valueOf(DateTime.now().getMillis())); Boolean hasSuc = customRedisTemplate.opsForValue().setIfAbsent(redisKey,String.valueOf(DateTime.now().getMillis()));
if(hasSuc){//设置1天后过期 if(hasSuc){//设置1天后过期
redisTemplate.expire(redisKey,1, TimeUnit.DAYS); customRedisTemplate.expire(redisKey,1, TimeUnit.DAYS);
}else{ }else{
log.info("[预定记录迁移]乐观锁获取失败,该线程不执行任务。"); log.info("[预定记录迁移]乐观锁获取失败,该线程不执行任务。");
return Boolean.FALSE; return Boolean.FALSE;
...@@ -136,6 +179,15 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic ...@@ -136,6 +179,15 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic
return TB_NAME_PREFIX+ DateTime.now().toString(YEAR_DATE_TIME_FORMATTER); return TB_NAME_PREFIX+ DateTime.now().toString(YEAR_DATE_TIME_FORMATTER);
} }
/**
* 获取历史表名称
* @param year
* @return
*/
private String getTbName(String year){
return TB_NAME_PREFIX+ year;
}
/** /**
* 创建当年相关表格 * 创建当年相关表格
*/ */
......
...@@ -24,7 +24,7 @@ import org.springframework.data.redis.serializer.StringRedisSerializer; ...@@ -24,7 +24,7 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
public class RedisConfiguration { public class RedisConfiguration {
@Bean @Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { public RedisTemplate<String, Object> customRedisTemplate(RedisConnectionFactory factory) {
RedisTemplate redisTemplate = new RedisTemplate(); RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(factory); redisTemplate.setConnectionFactory(factory);
RedisSerializer<String> stringSerializer = new StringRedisSerializer(); RedisSerializer<String> stringSerializer = new StringRedisSerializer();
......
...@@ -3,6 +3,7 @@ package com.xinxincaravan.caravan.vehicle.config; ...@@ -3,6 +3,7 @@ package com.xinxincaravan.caravan.vehicle.config;
import com.github.wxiaoqi.security.auth.client.interceptor.ServiceAuthRestInterceptor; import com.github.wxiaoqi.security.auth.client.interceptor.ServiceAuthRestInterceptor;
import com.github.wxiaoqi.security.auth.client.interceptor.UserAuthRestInterceptor; import com.github.wxiaoqi.security.auth.client.interceptor.UserAuthRestInterceptor;
import com.github.wxiaoqi.security.common.handler.GlobalExceptionHandler; import com.github.wxiaoqi.security.common.handler.GlobalExceptionHandler;
import com.xinxincaravan.caravan.vehicle.interceptor.CorsInterceptor;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Primary;
...@@ -26,27 +27,34 @@ public class WebConfiguration implements WebMvcConfigurer { ...@@ -26,27 +27,34 @@ public class WebConfiguration implements WebMvcConfigurer {
} }
// /** /**
// * 加入拦截器,介入相关权限验证(服务+用户) * 加入拦截器,介入相关权限验证(服务+用户)
// * @param registry * @param registry
// */ */
// @Override @Override
// public void addInterceptors(InterceptorRegistry registry) { public void addInterceptors(InterceptorRegistry registry) {
// registry.addInterceptor(getServiceAuthRestInterceptor()).
// addPathPatterns(getIncludePathPatterns()); registry.addInterceptor(getCorsInterceptor()).addPathPatterns("/**");
// registry.addInterceptor(getUserAuthRestInterceptor()). registry.addInterceptor(getServiceAuthRestInterceptor()).
// addPathPatterns(getIncludePathPatterns()); addPathPatterns(getIncludePathPatterns());
// } registry.addInterceptor(getUserAuthRestInterceptor()).
// addPathPatterns(getIncludePathPatterns());
// @Bean }
// ServiceAuthRestInterceptor getServiceAuthRestInterceptor() {
// return new ServiceAuthRestInterceptor(); @Bean
// } ServiceAuthRestInterceptor getServiceAuthRestInterceptor() {
// return new ServiceAuthRestInterceptor();
// @Bean }
// UserAuthRestInterceptor getUserAuthRestInterceptor() {
// return new UserAuthRestInterceptor(); @Bean
// } CorsInterceptor getCorsInterceptor() {
return new CorsInterceptor();
}
@Bean
UserAuthRestInterceptor getUserAuthRestInterceptor() {
return new UserAuthRestInterceptor();
}
/** /**
* 需要用户和服务认证判断的路径 * 需要用户和服务认证判断的路径
...@@ -55,7 +63,8 @@ public class WebConfiguration implements WebMvcConfigurer { ...@@ -55,7 +63,8 @@ public class WebConfiguration implements WebMvcConfigurer {
private ArrayList<String> getIncludePathPatterns() { private ArrayList<String> getIncludePathPatterns() {
ArrayList<String> list = new ArrayList<>(); ArrayList<String> list = new ArrayList<>();
String[] urls = { String[] urls = {
"/vehicleInfo/**" "/vehicleInfo/**",
"/branchCompany/**"
}; };
Collections.addAll(list, urls); Collections.addAll(list, urls);
return list; return list;
......
...@@ -8,7 +8,12 @@ public class RedisKey { ...@@ -8,7 +8,12 @@ public class RedisKey {
public static final String CONSTANT_CACHE_PREFIX ="cache:constant:"; public static final String CONSTANT_CACHE_PREFIX ="cache:constant:";
/** /**
* 地区常量缓存key前缀 * 地区常量缓存key前缀(子读取列表)
*/
public static final String SYS_REGION_SONS_CACHE_PREFIX ="cache:sysRegion:sons:";
/**
* 地区常量缓存key前缀(子读取列表)
*/ */
public static final String SYS_REGION_CACHE_PREFIX ="cache:sysRegion:"; public static final String SYS_REGION_CACHE_PREFIX ="cache:sysRegion:";
...@@ -30,4 +35,11 @@ public class RedisKey { ...@@ -30,4 +35,11 @@ public class RedisKey {
* 迁移预定记录rediseky * 迁移预定记录rediseky
*/ */
public static final String DEL_BOOK_RECORD_LOCK_PREFIX ="lock:del:bookRecord:"; public static final String DEL_BOOK_RECORD_LOCK_PREFIX ="lock:del:bookRecord:";
/**
* 子公司列表缓存key前缀
*/
public static final String BRANCH_COMPANY_CACHE_ALL ="cache:bracnCompany:all";
} }
...@@ -6,6 +6,7 @@ import javax.persistence.Column; ...@@ -6,6 +6,7 @@ import javax.persistence.Column;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.Table; import javax.persistence.Table;
import java.util.Date;
@Table(name = "branch_company") @Table(name = "branch_company")
@Data @Data
...@@ -60,7 +61,9 @@ public class BranchCompany { ...@@ -60,7 +61,9 @@ public class BranchCompany {
@Column(name = "addr_detail") @Column(name = "addr_detail")
private String addrDetail; private String addrDetail;
private Date createTime;
private Date updateTime;
} }
\ No newline at end of file
...@@ -31,11 +31,17 @@ public class VehicleBookRecord { ...@@ -31,11 +31,17 @@ public class VehicleBookRecord {
private Integer bookType; private Integer bookType;
/** /**
* 预定用户id,对应menberinfo表中的id * 预定用户id
*/ */
@Column(name = "book_user") @Column(name = "book_user")
private Integer bookUser; private Integer bookUser;
/**
* 预定用户姓名
*/
@Column(name = "book_user_name")
private String bookUserName;
/** /**
* 联系信息,比如电话、联系人姓名等(json) * 联系信息,比如电话、联系人姓名等(json)
*/ */
...@@ -74,11 +80,23 @@ public class VehicleBookRecord { ...@@ -74,11 +80,23 @@ public class VehicleBookRecord {
private Integer reviewerApply; private Integer reviewerApply;
/** /**
* 申请审核人,-1代表系统 * 申请审核人姓名
*/
@Column(name = "reviewer_name_apply")
private String reviewerNameApply;
/**
* 归还审核人,-1代表系统
*/ */
@Column(name = "reviewer_return") @Column(name = "reviewer_return")
private Integer reviewerReturn; private Integer reviewerReturn;
/**
* 归还审核人姓名
*/
@Column(name = "reviewer_name_return")
private String reviewerNameReturn;
/** /**
* 取消人,-1代表系统 * 取消人,-1代表系统
...@@ -86,6 +104,12 @@ public class VehicleBookRecord { ...@@ -86,6 +104,12 @@ public class VehicleBookRecord {
@Column(name = "reviewer_cancel") @Column(name = "reviewer_cancel")
private Integer reviewerCancel; private Integer reviewerCancel;
/**
* 取消人姓名
*/
@Column(name = "reviewer_name_cancel")
private String reviewerNameCancel;
/** /**
* 申请结束日期 * 申请结束日期
*/ */
......
package com.xinxincaravan.caravan.vehicle.interceptor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.cors.CorsUtils;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by ace on 2017/9/12.
*/
public class CorsInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (request.getHeader(HttpHeaders.ORIGIN) != null) {
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Credentials", "true");
response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT, HEAD");
response.addHeader("Access-Control-Allow-Headers", "Content-Type,authorization");
response.addHeader("Access-Control-Max-Age", "3600");
}
if(CorsUtils.isPreFlightRequest(request)){//是否跨域前option请求,使得话不执行后面拦截器
return Boolean.FALSE;
}
return super.preHandle(request, response, handler);
}
}
package com.xinxincaravan.caravan.vehicle.mapper; package com.xinxincaravan.caravan.vehicle.mapper;
import com.xinxincaravan.caravan.vehicle.entity.Constant;
import com.xinxincaravan.caravan.vehicle.entity.SysRegion; import com.xinxincaravan.caravan.vehicle.entity.SysRegion;
import org.springframework.data.repository.query.Param;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List; import java.util.List;
...@@ -9,7 +9,7 @@ import java.util.Map; ...@@ -9,7 +9,7 @@ import java.util.Map;
public interface SysRegionMapper extends Mapper<SysRegion> { public interface SysRegionMapper extends Mapper<SysRegion> {
public List<Integer> getAllByPage(Map<String,Object> params); public List<SysRegion> getAllByPage(Map<String,Object> params);
public List<SysRegion> getByIdList(List<Long> idList);
} }
...@@ -14,6 +14,13 @@ public interface VehicleBookInfoMapper extends Mapper<VehicleBookInfo> { ...@@ -14,6 +14,13 @@ public interface VehicleBookInfoMapper extends Mapper<VehicleBookInfo> {
*/ */
public List<VehicleBookInfo> getByVehicleIdAndYearMonth(Map<String,Object> params); public List<VehicleBookInfo> getByVehicleIdAndYearMonth(Map<String,Object> params);
/**
* 根据车辆id和对应年月查询预定记录
* @param params
* @return
*/
public List<VehicleBookInfo> getByVehicleIdAndYearMonths(Map<String,Object> params);
/** /**
* 不存在插入、存在更新 * 不存在插入、存在更新
* @param vehicleBookInfo * @param vehicleBookInfo
......
package com.xinxincaravan.caravan.vehicle.mapper; package com.xinxincaravan.caravan.vehicle.mapper;
import com.xinxincaravan.caravan.vehicle.entity.VehicleBookRecord; import com.xinxincaravan.caravan.vehicle.entity.VehicleBookRecord;
import com.xinxincaravan.caravan.vehicle.vo.QueryVehicleBookRecordVo;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List; import java.util.List;
...@@ -17,4 +18,6 @@ public interface VehicleBookRecordMapper extends Mapper<VehicleBookRecord> { ...@@ -17,4 +18,6 @@ public interface VehicleBookRecordMapper extends Mapper<VehicleBookRecord> {
public Integer del4YearMoth(Map<String,Object> params); public Integer del4YearMoth(Map<String,Object> params);
public void createTbIfNotExists(String tbName); public void createTbIfNotExists(String tbName);
public List<QueryVehicleBookRecordVo> getByPage(Map<String,Object> params);
} }
\ No newline at end of file
package com.xinxincaravan.caravan.vehicle.mapper; package com.xinxincaravan.caravan.vehicle.mapper;
import com.xinxincaravan.caravan.vehicle.entity.Vehicle; import com.xinxincaravan.caravan.vehicle.entity.Vehicle;
import com.xinxincaravan.caravan.vehicle.vo.QueryVehicleVo;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List; import java.util.List;
...@@ -8,7 +9,7 @@ import java.util.Map; ...@@ -8,7 +9,7 @@ import java.util.Map;
public interface VehicleMapper extends Mapper<Vehicle> { public interface VehicleMapper extends Mapper<Vehicle> {
public List<Vehicle> getByPage(Map<String,Object> params); public List<QueryVehicleVo> getByPage(Map<String,Object> params);
public int updateStatusById(Map<String,Object> params); public int updateStatusById(Map<String,Object> params);
} }
\ No newline at end of file
...@@ -6,6 +6,7 @@ import com.xinxincaravan.caravan.vehicle.common.BaseController; ...@@ -6,6 +6,7 @@ import com.xinxincaravan.caravan.vehicle.common.BaseController;
import com.xinxincaravan.caravan.vehicle.common.RestResponse; import com.xinxincaravan.caravan.vehicle.common.RestResponse;
import com.xinxincaravan.caravan.vehicle.entity.BranchCompany; import com.xinxincaravan.caravan.vehicle.entity.BranchCompany;
import com.xinxincaravan.caravan.vehicle.vo.BranchCompanyVo; import com.xinxincaravan.caravan.vehicle.vo.BranchCompanyVo;
import com.xinxincaravan.caravan.vehicle.vo.PageDataVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -18,6 +19,14 @@ import java.util.List; ...@@ -18,6 +19,14 @@ import java.util.List;
public class BranchCompanyController extends BaseController<BranchCompanyBiz> { public class BranchCompanyController extends BaseController<BranchCompanyBiz> {
@RequestMapping(value ="/page",method = RequestMethod.GET)
public RestResponse<PageDataVo<BranchCompany>> page(@RequestParam Integer page, @RequestParam Integer limit,
@RequestParam(required = false) Integer addrProvince, @RequestParam(required = false) Integer addrCity,
@RequestParam(required = false) Integer addrTown) {
return RestResponse.data(baseBiz.getAll(page,limit,addrProvince, addrCity,
addrTown));
}
@RequestMapping(value ="",method = RequestMethod.GET) @RequestMapping(value ="",method = RequestMethod.GET)
public RestResponse<List<BranchCompany>> getAll() { public RestResponse<List<BranchCompany>> getAll() {
return RestResponse.data(baseBiz.getAll()); return RestResponse.data(baseBiz.getAll());
......
package com.xinxincaravan.caravan.vehicle.rest; package com.xinxincaravan.caravan.vehicle.rest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONException;
import com.alibaba.nacos.client.logger.json.JSONArray;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken; import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.xinxincaravan.caravan.vehicle.biz.SysRegionBiz; import com.xinxincaravan.caravan.vehicle.biz.SysRegionBiz;
import com.xinxincaravan.caravan.vehicle.common.BaseController; import com.xinxincaravan.caravan.vehicle.common.BaseController;
import com.xinxincaravan.caravan.vehicle.common.CustomIllegalParamException;
import com.xinxincaravan.caravan.vehicle.common.RestResponse; import com.xinxincaravan.caravan.vehicle.common.RestResponse;
import com.xinxincaravan.caravan.vehicle.constant.ConstantType; import com.xinxincaravan.caravan.vehicle.constant.ConstantType;
import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode; import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode;
...@@ -28,5 +32,16 @@ public class SysRegionController extends BaseController<SysRegionBiz> { ...@@ -28,5 +32,16 @@ public class SysRegionController extends BaseController<SysRegionBiz> {
return RestResponse.data(baseBiz.getSonRegion(id)); return RestResponse.data(baseBiz.getSonRegion(id));
} }
@RequestMapping(value ="",method = RequestMethod.GET)
public RestResponse<List<SysRegion>> getRegion(@RequestParam String idListJson){
try {
List<Long> ids = JSON.parseArray(idListJson,Long.class);
return RestResponse.data(baseBiz.getRegionsByCodes(ids));
} catch (JSONException ex) {
return RestResponse.code(ResCode.INVALID_REST_REQ_PARAM.getCode());
} catch (CustomIllegalParamException ex){
return RestResponse.code(ResCode.INVALID_REST_REQ_PARAM.getCode());
}
}
} }
...@@ -9,6 +9,7 @@ import com.github.wxiaoqi.security.auth.common.util.jwt.JWTHelper; ...@@ -9,6 +9,7 @@ import com.github.wxiaoqi.security.auth.common.util.jwt.JWTHelper;
import com.github.wxiaoqi.security.common.context.BaseContextHandler; import com.github.wxiaoqi.security.common.context.BaseContextHandler;
import com.github.wxiaoqi.security.common.msg.auth.TokenForbiddenResponse; import com.github.wxiaoqi.security.common.msg.auth.TokenForbiddenResponse;
import com.xinxincaravan.caravan.vehicle.biz.VehicleBiz; import com.xinxincaravan.caravan.vehicle.biz.VehicleBiz;
import com.xinxincaravan.caravan.vehicle.biz.VehicleBookRecordBiz;
import com.xinxincaravan.caravan.vehicle.common.BaseController; import com.xinxincaravan.caravan.vehicle.common.BaseController;
import com.xinxincaravan.caravan.vehicle.common.CustomIllegalParamException; import com.xinxincaravan.caravan.vehicle.common.CustomIllegalParamException;
import com.xinxincaravan.caravan.vehicle.common.RestResponse; import com.xinxincaravan.caravan.vehicle.common.RestResponse;
...@@ -16,10 +17,7 @@ import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode; ...@@ -16,10 +17,7 @@ import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode;
import com.xinxincaravan.caravan.vehicle.constant.VehicleBookRecordStatus; import com.xinxincaravan.caravan.vehicle.constant.VehicleBookRecordStatus;
import com.xinxincaravan.caravan.vehicle.entity.Vehicle; import com.xinxincaravan.caravan.vehicle.entity.Vehicle;
import com.xinxincaravan.caravan.vehicle.entity.VehicleBookInfo; import com.xinxincaravan.caravan.vehicle.entity.VehicleBookInfo;
import com.xinxincaravan.caravan.vehicle.vo.AddOrUpdateVehicleVo; import com.xinxincaravan.caravan.vehicle.vo.*;
import com.xinxincaravan.caravan.vehicle.vo.PageDataVo;
import com.xinxincaravan.caravan.vehicle.vo.BookVehicleVo;
import com.xinxincaravan.caravan.vehicle.vo.VehiclePageQueryVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -32,6 +30,8 @@ import java.util.List; ...@@ -32,6 +30,8 @@ import java.util.List;
@IgnoreClientToken @IgnoreClientToken
public class VehicleController extends BaseController<VehicleBiz> { public class VehicleController extends BaseController<VehicleBiz> {
@Autowired
private VehicleBookRecordBiz vehicleBookRecordBiz;
@RequestMapping(value ="/{id}",method = RequestMethod.GET) @RequestMapping(value ="/{id}",method = RequestMethod.GET)
public RestResponse<Vehicle> get(@PathVariable String id) { public RestResponse<Vehicle> get(@PathVariable String id) {
...@@ -53,10 +53,8 @@ public class VehicleController extends BaseController<VehicleBiz> { ...@@ -53,10 +53,8 @@ public class VehicleController extends BaseController<VehicleBiz> {
return baseBiz.discard(idList); return baseBiz.discard(idList);
} }
@RequestMapping(value ="/page",method = RequestMethod.GET) @RequestMapping(value ="/page",method = RequestMethod.GET)
public RestResponse<PageDataVo<Vehicle>> getByPage(@RequestParam String vehiclePageQueryVoJson) throws Exception{ public RestResponse<PageDataVo<QueryVehicleVo>> getByPage(@RequestParam String vehiclePageQueryVoJson) throws Exception{
VehiclePageQueryVo vehiclePageQueryVo = null; VehiclePageQueryVo vehiclePageQueryVo = null;
try { try {
vehiclePageQueryVo = JSON.parseObject(vehiclePageQueryVoJson,VehiclePageQueryVo.class); vehiclePageQueryVo = JSON.parseObject(vehiclePageQueryVoJson,VehiclePageQueryVo.class);
...@@ -73,6 +71,11 @@ public class VehicleController extends BaseController<VehicleBiz> { ...@@ -73,6 +71,11 @@ public class VehicleController extends BaseController<VehicleBiz> {
return RestResponse.data(baseBiz.getByVehicleIdAndYearMonth(vehicleId,yearMonth)); return RestResponse.data(baseBiz.getByVehicleIdAndYearMonth(vehicleId,yearMonth));
} }
@RequestMapping(value ="/bookedInfo/{vehicleId}",method = RequestMethod.GET)
public RestResponse<List<VehicleBookInfo>> getBookedInfo(@PathVariable String vehicleId) {
return RestResponse.data(baseBiz.getByVehicleIdAndYearMonth(vehicleId));
}
/** /**
* 申请预定车辆 * 申请预定车辆
* @param bookVehicleVo * @param bookVehicleVo
...@@ -80,9 +83,9 @@ public class VehicleController extends BaseController<VehicleBiz> { ...@@ -80,9 +83,9 @@ public class VehicleController extends BaseController<VehicleBiz> {
*/ */
@RequestMapping(value ="/book/4employee",method = RequestMethod.POST) @RequestMapping(value ="/book/4employee",method = RequestMethod.POST)
public RestResponse<Integer> applyVehicle(@RequestBody BookVehicleVo bookVehicleVo){ public RestResponse<Integer> applyVehicle(@RequestBody BookVehicleVo bookVehicleVo){
// Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID()); Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID());
Integer operatorId = -1; String userName = BaseContextHandler.getName();
return baseBiz.applyVehicle4Employee(operatorId,bookVehicleVo); return baseBiz.applyVehicle4Employee(operatorId,bookVehicleVo,userName);
} }
/** /**
...@@ -92,9 +95,9 @@ public class VehicleController extends BaseController<VehicleBiz> { ...@@ -92,9 +95,9 @@ public class VehicleController extends BaseController<VehicleBiz> {
*/ */
@RequestMapping(value ="/book/4employee/prove/{bookRecordId}",method = RequestMethod.PUT) @RequestMapping(value ="/book/4employee/prove/{bookRecordId}",method = RequestMethod.PUT)
public RestResponse<Integer> proveVehicleBooking(@PathVariable Long bookRecordId) throws Exception{ public RestResponse<Integer> proveVehicleBooking(@PathVariable Long bookRecordId) throws Exception{
// Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID()); Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID());
Integer operatorId = -1; String userName = BaseContextHandler.getName();
return baseBiz.reviewVehicleBooking(operatorId, bookRecordId, VehicleBookRecordStatus.APPROVE.getCode()); return baseBiz.reviewVehicleBooking(operatorId, bookRecordId, VehicleBookRecordStatus.APPROVE.getCode(),userName);
} }
/** /**
...@@ -104,9 +107,9 @@ public class VehicleController extends BaseController<VehicleBiz> { ...@@ -104,9 +107,9 @@ public class VehicleController extends BaseController<VehicleBiz> {
*/ */
@RequestMapping(value ="/book/4employee/reject/{bookRecordId}",method = RequestMethod.PUT) @RequestMapping(value ="/book/4employee/reject/{bookRecordId}",method = RequestMethod.PUT)
public RestResponse<Integer> rejectVehicleBooking(@PathVariable Long bookRecordId) throws Exception{ public RestResponse<Integer> rejectVehicleBooking(@PathVariable Long bookRecordId) throws Exception{
// Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID()); Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID());
Integer operatorId = -1; String userName = BaseContextHandler.getName();
return baseBiz.reviewVehicleBooking(operatorId, bookRecordId, VehicleBookRecordStatus.REJECTED.getCode()); return baseBiz.reviewVehicleBooking(operatorId, bookRecordId, VehicleBookRecordStatus.REJECTED.getCode(),userName);
} }
// /** // /**
...@@ -130,10 +133,24 @@ public class VehicleController extends BaseController<VehicleBiz> { ...@@ -130,10 +133,24 @@ public class VehicleController extends BaseController<VehicleBiz> {
*/ */
@RequestMapping(value ="/unbook/4employee/{bookRecordId}",method = RequestMethod.DELETE) @RequestMapping(value ="/unbook/4employee/{bookRecordId}",method = RequestMethod.DELETE)
public RestResponse<Integer> unbookVehicle(@PathVariable Long bookRecordId) throws Exception{ public RestResponse<Integer> unbookVehicle(@PathVariable Long bookRecordId) throws Exception{
//此处待加入获取当前操作用户id信息以及相关权限验证 Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID());
// Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID()); String userName = BaseContextHandler.getName();
Integer operatorId = -1; return baseBiz.unbookVehicle4Employee(operatorId,bookRecordId,userName);
return baseBiz.unbookVehicle4Employee(operatorId,bookRecordId); }
@RequestMapping(value ="/bookedRecord",method = RequestMethod.GET)
public RestResponse<PageDataVo<QueryVehicleBookRecordVo>> getBookedRecord(@RequestParam String vehicleBookRecordQueryVoJson) throws Exception{
VehicleBookRecordQueryVo vehicleBookRecordQueryVo = null;
try {
vehicleBookRecordQueryVo = JSON.parseObject(vehicleBookRecordQueryVoJson,VehicleBookRecordQueryVo.class);
return RestResponse.data(vehicleBookRecordBiz.page(vehicleBookRecordQueryVo));
} catch (JSONException ex) {
return RestResponse.code(ResCode.INVALID_REST_REQ_PARAM.getCode());
} catch (CustomIllegalParamException ex){
return RestResponse.code(ResCode.INVALID_REST_REQ_PARAM.getCode());
}
} }
} }
package com.xinxincaravan.caravan.vehicle.vo;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@Data
public class QueryVehicleBookRecordVo {
/**
* 主键
*/
private Long id;
/**
* 车辆id
*/
private String vehicle;
/**
* 申请状态:1-申请中 2-已通过 3-已归还 4-拒绝 5-逾期归还
*/
private Integer status;
/**
* 预定类型,1-用户租赁、2-分公司使用、3-维修
*/
private Integer bookType;
/**
* 预定用户id
*/
private Integer bookUser;
/**
* 预定用户名称
*/
private String bookUserName;
/**
* 联系信息,比如电话、联系人姓名等(json)
*/
private String contactInfo;
/**
* 申请开始日期
*/
private Date bookStartDate;
/**
* 提车地点(经纬度)
*/
private String liftLocation;
/**
* 提车地址
*/
private String liftAddr;
private String remark;
/**
* 目的地
*/
private String destination;
/**
* 申请审核人,-1代表系统
*/
private Integer reviewerApply;
/**
* 归还审核人,-1代表系统
*/
private Integer reviewerReturn;
/**
* 取消人,-1代表系统
*/
private Integer reviewerCancel;
/**
* 申请审核人姓名
*/
private String reviewerNameApply;
/**
* 归还审核人姓名
*/
private String reviewerNameReturn;
/**
* 取消人姓名
*/
private String reviewerNameCancel;
/**
* 申请结束日期
*/
private Date bookEndDate;
/**
* 实际开始日期
*/
private Date actualStartDate;
/**
* 实际结束日期
*/
private Date actualEndDate;
/**
* 车辆编号,0-没有
*/
private Integer vehicleCode;
/**
* 车牌号,空字符串-没有
*/
private String numberPlate;
/**
* 所属分支机构(id)
*/
private Integer subordinateBranch;
/**
* 所属分支机构(名称)
*/
private String subBranchName;
/**
* 当前月份预定记录
*/
private Integer bookedDate;
}
\ No newline at end of file
package com.xinxincaravan.caravan.vehicle.vo;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import java.util.Date;
@Data
public class QueryVehicleVo {
/**
* 主键(uuid)
*/
private String id;
/**
* 车辆编号,0-没有
*/
private Integer code;
/**
* 车辆状态: 1-正常运行 2-维修 3-报废
*/
private Integer status;
/**
* 车牌号,空字符串-没有
*/
private String numberPlate;
/**
* 品牌(编码,对应关系见相关常量),0-未填写
*/
private Integer brand;
/**
* 所属分支机构(id)
*/
private Integer subordinateBranch;
/**
* 所属分支机构(名称)
*/
private String subBranchName;
/**
* 用途类型:租赁房车(1)、展车等,对应关系见车辆常量表
*/
private Integer useType;
/**
* 备注信息
*/
private String remark;
private Date createTime;
private Date updateTime;
}
\ No newline at end of file
package com.xinxincaravan.caravan.vehicle.vo;
import lombok.Data;
import java.util.Date;
@Data
public class VehicleBookRecordQueryVo {
/**
* 车辆编号,0-没有
*/
private Integer vehicleCode;
/**
* 车牌号,空字符串-没有
*/
private String numberPlate;
/**
* 所属分支机构(id)
*/
private Integer subordinateBranch;
/**
* 查询月份 yyyy-MM
*/
private String selectedMonth;
/**
* 申请状态
*/
private Integer status;
private Integer page;
private Integer limit;
}
\ No newline at end of file
...@@ -52,8 +52,8 @@ public class VehiclePageQueryVo { ...@@ -52,8 +52,8 @@ public class VehiclePageQueryVo {
*/ */
private String notBookedEndDate; private String notBookedEndDate;
private Integer pageNo; private Integer page;
private Integer pageSize; private Integer limit;
} }
...@@ -6,5 +6,11 @@ ...@@ -6,5 +6,11 @@
select `id`, parent_id, `name`, `type`, agency_id from sys_region limit #{pageStart},${pageSize} select `id`, parent_id, `name`, `type`, agency_id from sys_region limit #{pageStart},${pageSize}
</select> </select>
<select id="getByIdList" parameterType="java.util.List" resultType="com.xinxincaravan.caravan.vehicle.entity.SysRegion">
select `id`, parent_id, `name`, `type`, agency_id from sys_region where id in
<foreach collection="list" index="i" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -17,6 +17,15 @@ ...@@ -17,6 +17,15 @@
select id, vehicle, `year_month`, booked_date from vehicle_book_info where vehicle = #{vehicle} and `year_month`=#{yearMonth} select id, vehicle, `year_month`, booked_date from vehicle_book_info where vehicle = #{vehicle} and `year_month`=#{yearMonth}
</select> </select>
<select id="getByVehicleIdAndYearMonths" resultType="com.xinxincaravan.caravan.vehicle.entity.VehicleBookInfo" parameterType="java.util.Map">
select id, vehicle, `year_month`, booked_date from vehicle_book_info
where vehicle = #{vehicle}
and `year_month` in
<foreach collection="yearMonths" index="i" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
<insert id="insertIgnore" parameterType="com.xinxincaravan.caravan.vehicle.entity.VehicleBookInfo"> <insert id="insertIgnore" parameterType="com.xinxincaravan.caravan.vehicle.entity.VehicleBookInfo">
insert ignore into vehicle_book_info ( vehicle, `year_month`, booked_date) insert ignore into vehicle_book_info ( vehicle, `year_month`, booked_date)
......
...@@ -27,14 +27,23 @@ liftLocation" jdbcType="VARCHAR" /> ...@@ -27,14 +27,23 @@ liftLocation" jdbcType="VARCHAR" />
<update id="changeRecordStatus" parameterType="java.util.Map"> <update id="changeRecordStatus" parameterType="java.util.Map">
update vehicle_book_record set update vehicle_book_record set
<if test="reviewerApply != null"> <if test="reviewerApply != null ">
reviewer_apply =#{reviewerApply}, reviewer_apply =#{reviewerApply},
</if> </if>
<if test="reviewerReturn != null"> <if test="reviewerNameApply != null and reviewerNameApply !=''">
reviewer_name_apply =#{reviewerNameApply},
</if>
<if test="reviewerReturn != null ">
reviewer_return =#{reviewerReturn}, reviewer_return =#{reviewerReturn},
</if> </if>
<if test="reviewerNameReturn != null and reviewerNameReturn !=''">
reviewer_name_return =#{reviewerNameReturn},
</if>
<if test="reviewerCancel != null"> <if test="reviewerCancel != null">
reviewer_cancel =#{reviewerCancel}, reviewer_cancel =#{reviewerCancel},
</if>
<if test="reviewerNameCancel != null and reviewerNameCancel !=''">
reviewer_name_cancel =#{reviewerNameCancel},
</if> </if>
`status` = #{status} `status` = #{status}
where id = #{id} and `status` = #{statusCondition} where id = #{id} and `status` = #{statusCondition}
...@@ -51,6 +60,7 @@ liftLocation" jdbcType="VARCHAR" /> ...@@ -51,6 +60,7 @@ liftLocation" jdbcType="VARCHAR" />
`status`, `status`,
`book_type`, `book_type`,
`book_user`, `book_user`,
`book_user_name`,
`contact_info`, `contact_info`,
`book_start_date`, `book_start_date`,
`book_end_date`, `book_end_date`,
...@@ -59,8 +69,11 @@ liftLocation" jdbcType="VARCHAR" /> ...@@ -59,8 +69,11 @@ liftLocation" jdbcType="VARCHAR" />
`remark`, `remark`,
`destination`, `destination`,
`reviewer_apply`, `reviewer_apply`,
`reviewer_name_apply`,
`reviewer_return`, `reviewer_return`,
`reviewer_name_return`,
`reviewer_cancel`, `reviewer_cancel`,
`reviewer_name_cancel`,
`actual_start_date`, `actual_start_date`,
`actual_end_date` `actual_end_date`
) )
...@@ -70,6 +83,7 @@ liftLocation" jdbcType="VARCHAR" /> ...@@ -70,6 +83,7 @@ liftLocation" jdbcType="VARCHAR" />
#{status}, #{status},
#{bookType}, #{bookType},
#{bookUser}, #{bookUser},
#{bookUserName},
#{contactInfo}, #{contactInfo},
#{bookStartDate}, #{bookStartDate},
#{bookEndDate}, #{bookEndDate},
...@@ -78,8 +92,11 @@ liftLocation" jdbcType="VARCHAR" /> ...@@ -78,8 +92,11 @@ liftLocation" jdbcType="VARCHAR" />
#{remark}, #{remark},
#{destination}, #{destination},
#{reviewerApply}, #{reviewerApply},
#{reviewerNameApply},
#{reviewerReturn}, #{reviewerReturn},
#{reviewerNameReturn},
#{reviewerCancel}, #{reviewerCancel},
#{reviewerNameCancel},
#{actualStartDate}, #{actualStartDate},
#{actualEndDate} #{actualEndDate}
); );
...@@ -92,6 +109,7 @@ liftLocation" jdbcType="VARCHAR" /> ...@@ -92,6 +109,7 @@ liftLocation" jdbcType="VARCHAR" />
`status`, `status`,
`book_type`, `book_type`,
`book_user`, `book_user`,
`book_user_name`,
`contact_info`, `contact_info`,
`book_start_date`, `book_start_date`,
`book_end_date`, `book_end_date`,
...@@ -102,8 +120,11 @@ liftLocation" jdbcType="VARCHAR" /> ...@@ -102,8 +120,11 @@ liftLocation" jdbcType="VARCHAR" />
`update_time`, `update_time`,
`destination`, `destination`,
`reviewer_apply`, `reviewer_apply`,
`reviewer_name_apply`,
`reviewer_return`, `reviewer_return`,
`reviewer_name_return`,
`reviewer_cancel`, `reviewer_cancel`,
`reviewer_name_cancel`,
`actual_start_date`, `actual_start_date`,
`actual_end_date` `actual_end_date`
from from
...@@ -114,6 +135,65 @@ liftLocation" jdbcType="VARCHAR" /> ...@@ -114,6 +135,65 @@ liftLocation" jdbcType="VARCHAR" />
limit #{pageStart},#{pageSize} limit #{pageStart},#{pageSize}
</select> </select>
<select id="getByPage" parameterType="java.util.Map" resultType="com.xinxincaravan.caravan.vehicle.vo.QueryVehicleBookRecordVo">
select
vbr.`id`,
vbr.`vehicle`,
vbr.`status`,
vbr.`book_type`,
vbr.`book_user`,
vbr.`book_user_name`,
vbr.`contact_info`,
vbr.`book_start_date`,
vbr.`book_end_date`,
vbr.`lift_location`,
vbr.`lift_addr`,
vbr.`remark`,
vbr.`create_time`,
vbr.`update_time`,
vbr.`destination`,
vbr.`reviewer_apply`,
vbr.`reviewer_name_apply`,
vbr.`reviewer_return`,
vbr.`reviewer_name_return`,
vbr.`reviewer_cancel`,
vbr.`reviewer_name_cancel`,
vbr.`actual_start_date`,
vbr.`actual_end_date`,
v.`code` as vehicleCode,
v.number_plate as numberPlate,
v.subordinate_branch,
bc.name as subBranchName,
vbf.booked_date as bookedDate
from
${tbName} vbr left join
vehicle v on vbr.vehicle = v.id left join
branch_company bc on bc.id = v.subordinate_branch left join
vehicle_book_info vbf on vbf.vehicle = vbr.vehicle and vbf.year_month = #{selectedMonth}
where
1=1
<if test="numberPlate !=null and numberPlate !=''">
and v.number_plate = #{numberPlate}
</if>
<if test="vehicleCode !=null and vehicleCode !=''">
and v.code = #{vehicleCode}
</if>
<if test="status !=null ">
and vbr.status = #{status}
</if>
<if test="subordinateBranch !=null">
and v.subordinate_branch = #{subordinateBranch}
</if>
<if test="bookedStartDate !=null">
and vbr.book_start_date &gt;= #{bookedStartDate}
</if>
<if test="bookedEndDate !=null">
and vbr.book_end_date &lt;= #{bookedEndDate}
</if>
order by vbr.id desc
</select>
<insert id="createTbIfNotExists" parameterType="java.lang.String"> <insert id="createTbIfNotExists" parameterType="java.lang.String">
CREATE TABLE IF NOT EXISTS ${_parameter} ( CREATE TABLE IF NOT EXISTS ${_parameter} (
...@@ -121,7 +201,8 @@ liftLocation" jdbcType="VARCHAR" /> ...@@ -121,7 +201,8 @@ liftLocation" jdbcType="VARCHAR" />
`vehicle` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '车辆id', `vehicle` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '车辆id',
`status` int(255) NULL DEFAULT NULL COMMENT '申请状态:1-申请中 2-已通过 3-已归还 4-拒绝 5-逾期归还 6-已取消', `status` int(255) NULL DEFAULT NULL COMMENT '申请状态:1-申请中 2-已通过 3-已归还 4-拒绝 5-逾期归还 6-已取消',
`book_type` int(11) NOT NULL COMMENT '预定类型,1-用户租赁、2-内部员工申请 3-维修', `book_type` int(11) NOT NULL COMMENT '预定类型,1-用户租赁、2-内部员工申请 3-维修',
`book_user` int(11) NOT NULL COMMENT '预定用户id,对应menberinfo表中的id', `book_user` int(11) NOT NULL COMMENT '预定用户id',
`book_user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '申请人姓名',
`contact_info` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '联系信息,比如电话、联系人姓名等(json)', `contact_info` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '联系信息,比如电话、联系人姓名等(json)',
`book_start_date` datetime(0) NOT NULL COMMENT '申请开始日期', `book_start_date` datetime(0) NOT NULL COMMENT '申请开始日期',
`book_end_date` datetime(0) NOT NULL COMMENT '申请结束日期', `book_end_date` datetime(0) NOT NULL COMMENT '申请结束日期',
...@@ -132,8 +213,11 @@ liftLocation" jdbcType="VARCHAR" /> ...@@ -132,8 +213,11 @@ liftLocation" jdbcType="VARCHAR" />
`update_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0), `update_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
`destination` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '目的地', `destination` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '目的地',
`reviewer_apply` int(10) NULL DEFAULT NULL COMMENT '申请审核人,-1代表系统', `reviewer_apply` int(10) NULL DEFAULT NULL COMMENT '申请审核人,-1代表系统',
`reviewer_name_apply` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '申请审核人姓名',
`reviewer_return` int(10) NULL DEFAULT NULL COMMENT '归还审核人,-1代表系统', `reviewer_return` int(10) NULL DEFAULT NULL COMMENT '归还审核人,-1代表系统',
`reviewer_name_return` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '归还审核人姓名',
`reviewer_cancel` int(10) NULL DEFAULT NULL COMMENT '取消人,-1代表系统', `reviewer_cancel` int(10) NULL DEFAULT NULL COMMENT '取消人,-1代表系统',
`reviewer_name_cancel` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '取消预定人姓名',
`actual_start_date` datetime(0) NULL DEFAULT NULL COMMENT '实际开始日期', `actual_start_date` datetime(0) NULL DEFAULT NULL COMMENT '实际开始日期',
`actual_end_date` datetime(0) NULL DEFAULT NULL COMMENT '实际结束日期', `actual_end_date` datetime(0) NULL DEFAULT NULL COMMENT '实际结束日期',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
......
...@@ -25,15 +25,18 @@ ...@@ -25,15 +25,18 @@
</update> </update>
<select id="getByPage" parameterType="java.util.Map" resultType="com.xinxincaravan.caravan.vehicle.entity.Vehicle"> <select id="getByPage" parameterType="java.util.Map" resultType="com.xinxincaravan.caravan.vehicle.vo.QueryVehicleVo">
select v.`id`, select v.`id`,
v.`code`, v.`code`,
v.`status`, v.`status`,
v.number_plate, v.number_plate,
v.brand, v.brand,
v.subordinate_branch, v.subordinate_branch,
bc.name as subBranchName,
v.use_type, v.use_type,
v.remark v.remark,
v.create_time,
v.update_time
<if test=" yearMonthAndParam !=null "> <if test=" yearMonthAndParam !=null ">
,vbi.booked_date ,vbi.booked_date
</if> </if>
...@@ -42,6 +45,7 @@ ...@@ -42,6 +45,7 @@
left join left join
vehicle_book_info vbi on v.`id` = vbi.vehicle vehicle_book_info vbi on v.`id` = vbi.vehicle
</if> </if>
left join branch_company bc on v.`subordinate_branch` = bc.id
where where
1=1 1=1
<if test="subordinateBranch !=null"> <if test="subordinateBranch !=null">
...@@ -71,7 +75,7 @@ ...@@ -71,7 +75,7 @@
) )
</foreach> </foreach>
</if> </if>
order by v.id order by v.code
</select> </select>
</mapper> </mapper>
\ No newline at end of file
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