Commit 7410d447 authored by hezhen's avatar hezhen

Merge branch 'dev' of http://113.105.137.151:22280/youjj/cloud-platform into dev

parents dde94c9b 4fd1b0f4
...@@ -58,4 +58,10 @@ public class WalletDetailListDTO { ...@@ -58,4 +58,10 @@ public class WalletDetailListDTO {
@ApiModelProperty(value = "操作时间", hidden = true ) @ApiModelProperty(value = "操作时间", hidden = true )
private Long crtTime; private Long crtTime;
@ApiModelProperty(value = "订单号")
private String orderNo;
@ApiModelProperty(value = "来源人")
private String sourceUserName;
} }
...@@ -49,6 +49,13 @@ public class WalletDetailAdminVo { ...@@ -49,6 +49,13 @@ public class WalletDetailAdminVo {
@ApiModelProperty(value = "操作时间", hidden = true ) @ApiModelProperty(value = "操作时间", hidden = true )
private Long crtTime; private Long crtTime;
@ApiModelProperty(value = "来源")
private String sourceName; private String sourceName;
@ApiModelProperty(value = "订单号")
private String orderNo;
@ApiModelProperty(value = "来源人")
private String sourceUserName;
} }
...@@ -254,5 +254,19 @@ public class AppUserRest { ...@@ -254,5 +254,19 @@ public class AppUserRest {
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
@ApiModelProperty("检查手机号验证码")
@GetMapping("/unauth/checkMobilecode")
public ObjectRestResponse checkMobilecode(@RequestParam(value = "phone") String phone,
@RequestParam(value = "mobilecode") String mobilecode){
if (StringUtils.isBlank(phone)||StringUtils.isBlank(mobilecode)){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数为空");
}
String redisKey=appPermissionService.checkCodeByUsername(phone,mobilecode);
if (StringUtils.isBlank(redisKey)){
return ObjectRestResponse.createFailedResult(ResultCode.NOTEXIST_CODE, "验证码错误");
}
return ObjectRestResponse.succ();
}
} }
...@@ -18,7 +18,9 @@ ...@@ -18,7 +18,9 @@
ausw.price, ausw.price,
ausw.extract, ausw.extract,
ausw.waiting, ausw.waiting,
ausw.title ausw.title,
ausw.order_no,
ausw.sourceUserName
FROM FROM
(select id,user_id,source,amount,cono,itype,activity_id,activity_name,`crt_time` FROM `my_wallet_detail` <if test="sourceType != null"> (select id,user_id,source,amount,cono,itype,activity_id,activity_name,`crt_time` FROM `my_wallet_detail` <if test="sourceType != null">
WHERE `source`=#{sourceType} WHERE `source`=#{sourceType}
...@@ -29,7 +31,7 @@ FROM ...@@ -29,7 +31,7 @@ FROM
INNER JOIN (SELECT userid,nickname,realname FROM `app_user_detail`<if test="userName != null and userName != ''"> INNER JOIN (SELECT userid,nickname,realname FROM `app_user_detail`<if test="userName != null and userName != ''">
WHERE `nickname`=#{userName} OR `realname`=#{userName} WHERE `nickname`=#{userName} OR `realname`=#{userName}
</if>) AS `aud` ON aud.userid = aul.id </if>) AS `aud` ON aud.userid = aul.id
LEFT JOIN (SELECT DISTINCT order_id,id,price,extract,waiting,title FROM `app_user_selling_water`) AS `ausw` ON ausw.order_id = wd.cono LEFT JOIN (SELECT DISTINCT order_id,au.id,order_no,IFNULL(d.realname,d.nickname) AS `sourceUserName`,price,extract,waiting,title FROM `app_user_selling_water` AS `au` INNER JOIN `app_user_detail` AS `d` ON d.userid=au.source_id) AS `ausw` ON ausw.order_id = wd.cono
ORDER BY `crtTime` DESC ORDER BY `crtTime` DESC
</select> </select>
......
...@@ -3,6 +3,7 @@ package com.xxfc.platform.order.feign; ...@@ -3,6 +3,7 @@ package com.xxfc.platform.order.feign;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.vo.GoodDataVO; import com.github.wxiaoqi.security.common.vo.GoodDataVO;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.vehicle.common.RestResponse; import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.entity.*; import com.xxfc.platform.vehicle.entity.*;
import com.xxfc.platform.vehicle.pojo.*; import com.xxfc.platform.vehicle.pojo.*;
...@@ -21,4 +22,7 @@ import java.util.Set; ...@@ -21,4 +22,7 @@ import java.util.Set;
public interface OrderFeign { public interface OrderFeign {
@GetMapping("/baseOrder/count") @GetMapping("/baseOrder/count")
public ObjectRestResponse<Integer> baseOrderCount(@RequestParam("hasMemberRight") Integer hasMemberRight, @RequestParam("multiStatus") String multiStatus, @RequestParam("multiTypes") String multiTypes, @RequestParam("userId") Integer userId); public ObjectRestResponse<Integer> baseOrderCount(@RequestParam("hasMemberRight") Integer hasMemberRight, @RequestParam("multiStatus") String multiStatus, @RequestParam("multiTypes") String multiTypes, @RequestParam("userId") Integer userId);
@GetMapping("/count/list")
public ObjectRestResponse<List<OrderPageVO>> getOrderList(@RequestParam("dateTime")Long dateTime, @RequestParam("type")Integer type, @RequestParam("status")Integer status);
} }
...@@ -47,4 +47,10 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail ...@@ -47,4 +47,10 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail
* 创建用户 -1+后台用户id 后台系统 * 创建用户 -1+后台用户id 后台系统
*/ */
String crtUser; String crtUser;
/**
* 用途 1 租车
*/
@ApiModelProperty(hidden = true)
Integer useType = 1;
} }
package com.xxfc.platform.order.biz.rpc;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.mapper.BaseOrderMapper;
import com.xxfc.platform.order.pojo.order.OrderPageVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
@Service
public class OrderListBiz extends BaseBiz<BaseOrderMapper, BaseOrder> {
/**
*
* @param dateTime 筛选的时间
* @param type 筛选的类型, 1,租车,2,旅游
* @return
*/
public ObjectRestResponse<List<OrderPageVO>> getOrderList(Long dateTime, Integer type, Integer status) {
Map<String, Object> map = new HashMap<>();
if (dateTime != null) {
map.put("startTime", getDayStart(dateTime));
map.put("endTime", getDayStart(dateTime) + 3600 * 24 * 1000);
}
map.put("status", status);
if (type == OrderTypeEnum.RENT_VEHICLE.getCode()) { //租车
List<OrderPageVO> list = mapper.selectAllRentVehicleOrder(map);
return ObjectRestResponse.succ(list);
} else if (type == OrderTypeEnum.TOUR.getCode()) {
List<OrderPageVO> list = mapper.selectAllTourOrder(map);
return ObjectRestResponse.succ(list);
} else {
return ObjectRestResponse.succ();
}
}
public static Long getDayStart(Long datetime) {
long current = datetime;
long zero = current / (1000 * 3600 * 24) * (1000 * 3600 * 24) - TimeZone.getDefault().getRawOffset();
return zero;
}
}
...@@ -28,4 +28,8 @@ public interface BaseOrderMapper extends Mapper<BaseOrder> { ...@@ -28,4 +28,8 @@ public interface BaseOrderMapper extends Mapper<BaseOrder> {
public OrderPageVO getOrderDetail(String no); public OrderPageVO getOrderDetail(String no);
public List<OrderPageVO> selectAllRentVehicleOrder(Map<String, Object> paramMap);
public List<OrderPageVO> selectAllTourOrder(Map<String, Object> paramMap);
} }
...@@ -74,6 +74,8 @@ public class OrderRentVehicleController extends CommonBaseController { ...@@ -74,6 +74,8 @@ public class OrderRentVehicleController extends CommonBaseController {
bo.setAppUserDTO(userFeign.userDetailById(dto.getAppUserId()).getData()); bo.setAppUserDTO(userFeign.userDetailById(dto.getAppUserId()).getData());
bo.setCrtUser("-1"+ BaseContextHandler.getUserID()); bo.setCrtUser("-1"+ BaseContextHandler.getUserID());
//设置-1表示查询所有的车
bo.setUseType(-1);
orderRentVehicleService.createOrder(bo); orderRentVehicleService.createOrder(bo);
return ObjectRestResponse.succ(bo.getOrder()); return ObjectRestResponse.succ(bo.getOrder());
} }
......
package com.xxfc.platform.order.rest.background;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.order.biz.rpc.OrderListBiz;
import com.xxfc.platform.order.pojo.order.OrderPageVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping(value = "/count")
public class OrderListController {
@Autowired
OrderListBiz orderListBiz;
@GetMapping("/list")
public ObjectRestResponse<List<OrderPageVO>> getOrderList(@RequestParam("dateTime")Long dateTime, @RequestParam("type")Integer type, @RequestParam("status")Integer status) {
return orderListBiz.getOrderList(dateTime, type, status);
}
}
...@@ -459,6 +459,8 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -459,6 +459,8 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rentVehicleBookDTO.setOrderNo(detail.getOrder().getNo()); rentVehicleBookDTO.setOrderNo(detail.getOrder().getNo());
rentVehicleBookDTO.setNumberPlate(numberPlate); rentVehicleBookDTO.setNumberPlate(numberPlate);
rentVehicleBookDTO.setStatus(status); rentVehicleBookDTO.setStatus(status);
rentVehicleBookDTO.setUseType(detail.getUseType());
if(null != detail.getAccompanyItems()) { if(null != detail.getAccompanyItems()) {
rentVehicleBookDTO.setSelectedAccItem(detail.getAccompanyItems().parallelStream().collect(Collectors.toMap(OrderAccompanyDTO::getId, OrderAccompanyDTO::getNum))); rentVehicleBookDTO.setSelectedAccItem(detail.getAccompanyItems().parallelStream().collect(Collectors.toMap(OrderAccompanyDTO::getId, OrderAccompanyDTO::getNum)));
} }
......
...@@ -211,10 +211,16 @@ ...@@ -211,10 +211,16 @@
and r.end_time between #{startTime} and #{endTime} and r.end_time between #{startTime} and #{endTime}
</if> </if>
<if test="companyIds != null and companyIds.size > 0"> <if test="companyIds != null and companyIds.size > 0">
and r.start_company_id in and (r.start_company_id in
<foreach collection="companyIds" item="id" open="(" separator="," close=")"> <foreach collection="companyIds" item="id" open="(" separator="," close=")">
#{id} #{id}
</foreach> </foreach>
or
r.end_company_id in
<foreach collection="companyIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
)
</if> </if>
<if test="status == 4"> <if test="status == 4">
order by r.start_time order by r.start_time
...@@ -254,5 +260,26 @@ ...@@ -254,5 +260,26 @@
where no = #{no} where no = #{no}
</select> </select>
<select id="selectAllRentVehicleOrder" parameterType="Map" resultMap="orderPageMap">
select b.*
from base_order b
LEFT JOIN order_rent_vehicle_detail r on r.order_id = b.id
where b.type = 2 and b.status &gt;= 4
<if test="startTime != null and status == 1">
and r.start_time between #{startTime} and #{endTime}
</if>
<if test="startTime != null and status == 2">
and r.start_time between #{startTime} and #{endTime}
</if>
</select>
<select id="selectAllTourOrder" parameterType="Map" resultMap="orderPageMap">
select b.*
from base_order b
LEFT JOIN order_tour_detail r on r.order_id = b.id
where b.type = 2 and b.status &gt;= 4
<if test="startTime != null">
and r.start_time between #{startTime} and #{endTime}
</if>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
resultMap="order"> resultMap="order">
SELECT SELECT
<if test="type==2"> <if test="type==2">
DATE_FORMAT(date( FROM_UNIXTIME( a.account_time / 1000 ) ),'%Y-%v') AS period, DATE_FORMAT(date( FROM_UNIXTIME( a.account_time / 1000 ) ),'%x-%v') AS period,
</if> </if>
<if test="type==3"> <if test="type==3">
DATE_FORMAT(date( FROM_UNIXTIME( a.account_time / 1000 ) ),'%Y-%m') AS period, DATE_FORMAT(date( FROM_UNIXTIME( a.account_time / 1000 ) ),'%Y-%m') AS period,
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
</if> </if>
GROUP BY GROUP BY
<if test="type==2"> <if test="type==2">
DATE_FORMAT(date( FROM_UNIXTIME( a.account_time / 1000 ) ),'%Y-%v'), DATE_FORMAT(date( FROM_UNIXTIME( a.account_time / 1000 ) ),'%x-%v'),
</if> </if>
<if test="type==3"> <if test="type==3">
DATE_FORMAT(date( FROM_UNIXTIME( a.account_time / 1000 ) ),'%Y-%m'), DATE_FORMAT(date( FROM_UNIXTIME( a.account_time / 1000 ) ),'%Y-%m'),
......
...@@ -80,6 +80,11 @@ public class Activity { ...@@ -80,6 +80,11 @@ public class Activity {
@ApiModelProperty("活动场地(地址格式)") @ApiModelProperty("活动场地(地址格式)")
private String address; private String address;
@Column(name = "address_img")
@ApiModelProperty("地址图片")
private String addressImg;
@Column(name = "latitude") @Column(name = "latitude")
@ApiModelProperty("纬度(不展示") @ApiModelProperty("纬度(不展示")
private BigDecimal latitude; private BigDecimal latitude;
...@@ -88,9 +93,6 @@ public class Activity { ...@@ -88,9 +93,6 @@ public class Activity {
@ApiModelProperty("经度 (不展示)") @ApiModelProperty("经度 (不展示)")
private BigDecimal longitude; private BigDecimal longitude;
@Column(name = "content")
@ApiModelProperty("活动图文内容")
private String content;
@Column(name = "is_show") @Column(name = "is_show")
@ApiModelProperty("活动开关(1开,0关)") @ApiModelProperty("活动开关(1开,0关)")
...@@ -108,10 +110,22 @@ public class Activity { ...@@ -108,10 +110,22 @@ public class Activity {
@ApiModelProperty("0-默认;1-报名中,2-进行中;3-已结束") @ApiModelProperty("0-默认;1-报名中,2-进行中;3-已结束")
private Integer status; private Integer status;
@Column(name = "content")
@ApiModelProperty("活动图文内容(峰会主题)")
private String content;
@Column(name = "act_desc") @Column(name = "act_desc")
@ApiModelProperty("活动对象说明(不展示)") @ApiModelProperty("活动对象说明(诚邀莅临)")
private String actDesc; private String actDesc;
@Column(name = "company_desc")
@ApiModelProperty("公司简章")
private String companyDesc;
@Column(name = "vehicle_imgs")
@ApiModelProperty("房车介绍")
private String vehicleImgs;
@Column(name = "process_json") @Column(name = "process_json")
@ApiModelProperty("活动流程") @ApiModelProperty("活动流程")
private String processJson; private String processJson;
......
...@@ -24,13 +24,14 @@ public class ActivityShow { ...@@ -24,13 +24,14 @@ public class ActivityShow {
@ApiModelProperty("活动id") @ApiModelProperty("活动id")
private Integer activityId; private Integer activityId;
@Column(name = "type")
@ApiModelProperty("1-图片;2-视频")
private Integer type;
@Column(name = "path") @Column(name = "video_path")
@ApiModelProperty("图片或视频路径") @ApiModelProperty("视频路径(逗号分割)")
private String path; private String videoPath;
@Column(name = "picture_path")
@ApiModelProperty("图片路径(逗号分割)")
private String picturePath;
@Column(name = "crt_time") @Column(name = "crt_time")
@ApiModelProperty("创建时间") @ApiModelProperty("创建时间")
...@@ -41,4 +42,6 @@ public class ActivityShow { ...@@ -41,4 +42,6 @@ public class ActivityShow {
private Integer isDel; private Integer isDel;
} }
...@@ -13,6 +13,8 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -13,6 +13,8 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import javax.xml.crypto.Data;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -40,21 +42,20 @@ public class ActivityBiz extends BaseBiz<ActivityMapper, Activity> { ...@@ -40,21 +42,20 @@ public class ActivityBiz extends BaseBiz<ActivityMapper, Activity> {
criteria.andLike("title", String.format("%%%s%%", query.getTitle().trim())); criteria.andLike("title", String.format("%%%s%%", query.getTitle().trim()));
} }
if (query.getStartTime() != null) { if (query.getStartTime() != null) {
criteria.andLike("startTime", query.getStartTime() / 1000 + "%"); criteria.andLike("startTime", query.getStartTime()/(1000*60*60)+"%");
} }
if (query.getStatus() != null) { if (query.getStatus() != null) {
criteria.andEqualTo("status", query.getStatus()); criteria.andEqualTo("status", query.getStatus());
} }
if (query.getType() != null && AccessType.PUBLIC.getCode().equals(query.getType())) { if (query.getType() != null && AccessType.PUBLIC.getCode().equals(query.getType())) {
criteria.andEqualTo("isPublish", PUBLISHED); criteria.andEqualTo("isPublish", PUBLISHED);
} }
exa.orderBy("rank").asc().orderBy("startTime").desc(); exa.orderBy("rank").asc().orderBy("startTime").desc();
if (AccessType.PUBLIC.getCode().equals(query.getType())) { // if (AccessType.PUBLIC.getCode().equals(query.getType())) {
return mapper.selectByExample(exa); //// return mapper.selectByExample(exa);
} //// }
PageHelper.startPage(query.getPage(), query.getLimit()); PageHelper.startPage(query.getPage(), query.getLimit());
......
...@@ -24,6 +24,8 @@ public class ActivityShowBiz extends BaseBiz<ActivityShowMapper, ActivityShow> { ...@@ -24,6 +24,8 @@ public class ActivityShowBiz extends BaseBiz<ActivityShowMapper, ActivityShow> {
private ActivityBiz activityBiz; private ActivityBiz activityBiz;
public ActivityShowDto getOne(Integer activityId) { public ActivityShowDto getOne(Integer activityId) {
ActivityShow activityShow = new ActivityShow();
activityShow.setActivityId(activityId);
return mapper.getOne(activityId); return mapper.getOne(activityId);
} }
......
...@@ -2,7 +2,7 @@ package com.xxfc.platform.summit.config; ...@@ -2,7 +2,7 @@ package com.xxfc.platform.summit.config;
import com.github.wxiaoqi.security.common.handler.GlobalExceptionHandler; import com.github.wxiaoqi.security.common.handler.GlobalExceptionHandler;
import com.xxfc.platform.summit.interceptor.WeChatH5LoginInterceoptor; import com.xxfc.platform.summit.interceptor.WeChatH5LoginInterceptor;
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;
...@@ -27,8 +27,8 @@ public class WebConfiguration implements WebMvcConfigurer { ...@@ -27,8 +27,8 @@ public class WebConfiguration implements WebMvcConfigurer {
} }
@Bean @Bean
WeChatH5LoginInterceoptor getWeChatH5LoginRestInterceptor() { WeChatH5LoginInterceptor getWeChatH5LoginRestInterceptor() {
return new WeChatH5LoginInterceoptor(); return new WeChatH5LoginInterceptor();
} }
/** /**
...@@ -38,7 +38,7 @@ public class WebConfiguration implements WebMvcConfigurer { ...@@ -38,7 +38,7 @@ 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 = {
"/activity/**" "/auth/activity/**"
}; };
Collections.addAll(list, urls); Collections.addAll(list, urls);
return list; return list;
......
...@@ -5,6 +5,8 @@ import com.github.wxiaoqi.security.common.rest.BaseController; ...@@ -5,6 +5,8 @@ import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.summit.biz.ActivityBiz; import com.xxfc.platform.summit.biz.ActivityBiz;
import com.xxfc.platform.summit.entity.Activity; import com.xxfc.platform.summit.entity.Activity;
import com.xxfc.platform.summit.pojo.ActivityQuery; import com.xxfc.platform.summit.pojo.ActivityQuery;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
/** /**
...@@ -12,16 +14,19 @@ import org.springframework.web.bind.annotation.*; ...@@ -12,16 +14,19 @@ import org.springframework.web.bind.annotation.*;
*/ */
@RestController @RestController
@RequestMapping("/activity") @RequestMapping("/activity")
@Api(tags = "峰会")
public class ActivityController extends BaseController<ActivityBiz, Activity> { public class ActivityController extends BaseController<ActivityBiz, Activity> {
@PostMapping("/app/unauth/list") @PostMapping("/app/unauth/list")
@ApiOperation(value = "峰会列表",notes = "峰会列表")
public ObjectRestResponse getList(@RequestBody ActivityQuery query ){ public ObjectRestResponse getList(@RequestBody ActivityQuery query ){
return ObjectRestResponse.succ(baseBiz.getList(query)); return ObjectRestResponse.succ(baseBiz.getList(query));
} }
@Override @Override
@PutMapping ("/update") @PutMapping ("/update")
@ApiOperation(value = "修改",notes = "修改")
public ObjectRestResponse update(@RequestBody Activity activity ){ public ObjectRestResponse update(@RequestBody Activity activity ){
if (baseBiz.update(activity)) { if (baseBiz.update(activity)) {
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
...@@ -31,6 +36,7 @@ public class ActivityController extends BaseController<ActivityBiz, Activity> { ...@@ -31,6 +36,7 @@ public class ActivityController extends BaseController<ActivityBiz, Activity> {
@Override @Override
@PostMapping("/add") @PostMapping("/add")
@ApiOperation(value = "添加",notes = "添加")
public ObjectRestResponse add(@RequestBody Activity activity ){ public ObjectRestResponse add(@RequestBody Activity activity ){
if (baseBiz.add(activity)) { if (baseBiz.add(activity)) {
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
......
...@@ -17,8 +17,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -17,8 +17,7 @@ import org.springframework.web.bind.annotation.*;
public class ActivityShowController extends BaseController<ActivityShowBiz, ActivityShow> { public class ActivityShowController extends BaseController<ActivityShowBiz, ActivityShow> {
@GetMapping("/one/{activityId}") @GetMapping("/one/{activityId}")
public ObjectRestResponse getOne(@PathVariable Integer activityId){ public ObjectRestResponse getOne(@PathVariable Integer activityId){
return ObjectRestResponse.succ(baseBiz.getOne(activityId));
return ObjectRestResponse.succ( baseBiz.getOne(activityId));
} }
...@@ -29,4 +28,6 @@ public class ActivityShowController extends BaseController<ActivityShowBiz, Acti ...@@ -29,4 +28,6 @@ public class ActivityShowController extends BaseController<ActivityShowBiz, Acti
} }
return ObjectRestResponse.createDefaultFail(); return ObjectRestResponse.createDefaultFail();
} }
} }
...@@ -29,7 +29,7 @@ import java.util.concurrent.TimeUnit; ...@@ -29,7 +29,7 @@ import java.util.concurrent.TimeUnit;
* *
*/ */
@Slf4j @Slf4j
public class WeChatH5LoginInterceoptor extends HandlerInterceptorAdapter { public class WeChatH5LoginInterceptor extends HandlerInterceptorAdapter {
@Autowired @Autowired
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxfc.platform.summit.mapper.ActivityShowMapper"> <mapper namespace="com.xxfc.platform.summit.mapper.ActivityShowMapper">
<select id="getOne" parameterType="Integer" resultType="com.xxfc.platform.summit.entity.ActivityShow"> <select id="getOne" parameterType="Integer" resultType="com.xxfc.platform.summit.dto.ActivityShowDto">
SELECT SELECT
a.banner, a.banner,
s.* s.*
......
...@@ -8,7 +8,9 @@ import lombok.NoArgsConstructor; ...@@ -8,7 +8,9 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
public enum FileTypeEnum { public enum FileTypeEnum {
FILE_TYPE_ZIP("application/zip", ".zip"), FILE_TYPE_ZIP("application/zip", ".zip"),
FILE_TYPE_RAR("application/octet-stream", ".rar"); FILE_TYPE_RAR("application/octet-stream", ".rar"),
FILE_TYPE_X_ZIP("application/x-zip-compressed", ".zip");
public String type; public String type;
public String fileStufix; public String fileStufix;
......
...@@ -8,6 +8,7 @@ import com.xxfc.platform.universal.dto.ImgDTO; ...@@ -8,6 +8,7 @@ import com.xxfc.platform.universal.dto.ImgDTO;
import com.xxfc.platform.universal.dto.UploadImgDTO; import com.xxfc.platform.universal.dto.UploadImgDTO;
import com.xxfc.platform.universal.service.FileUploadService; import com.xxfc.platform.universal.service.FileUploadService;
import com.xxfc.platform.universal.service.UploadService; import com.xxfc.platform.universal.service.UploadService;
import com.xxfc.platform.universal.service.UploadZipService;
import com.xxfc.platform.universal.utils.ImgBase64Util; import com.xxfc.platform.universal.utils.ImgBase64Util;
import com.xxfc.platform.universal.utils.PublicMsg; import com.xxfc.platform.universal.utils.PublicMsg;
import com.xxfc.platform.universal.vo.Ueditor; import com.xxfc.platform.universal.vo.Ueditor;
...@@ -42,6 +43,8 @@ public class UploadController{ ...@@ -42,6 +43,8 @@ public class UploadController{
UploadService uploadService; UploadService uploadService;
@Autowired @Autowired
FileUploadService fileUploadService; FileUploadService fileUploadService;
@Autowired
UploadZipService uploadZipService;
private static Integer MAX_DRIVING_LICENSE_SIZE = 10 * 1024 * 1024;//10M private static Integer MAX_DRIVING_LICENSE_SIZE = 10 * 1024 * 1024;//10M
...@@ -177,5 +180,12 @@ public class UploadController{ ...@@ -177,5 +180,12 @@ public class UploadController{
@RequestParam(value = "prefix",defaultValue = "renovate")String prefix) throws Exception { @RequestParam(value = "prefix",defaultValue = "renovate")String prefix) throws Exception {
return fileUploadService.handlerUpload(upfile,null,prefix); return fileUploadService.handlerUpload(upfile,null,prefix);
} }
@PostMapping(value="/app/unauth/pictureZip")
public ObjectRestResponse pictureZip(
@RequestBody MultipartFile file,
@RequestBody String password) throws Exception {
return uploadZipService.uploadPictureZip(file,password);
}
} }
package com.xxfc.platform.universal.service;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import net.lingala.zip4j.exception.ZipException;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
public interface UploadZipService {
ObjectRestResponse uploadPictureZip(MultipartFile file, String password) throws IOException;
}
...@@ -29,6 +29,8 @@ public class FileUploadServiceImpl implements FileUploadService { ...@@ -29,6 +29,8 @@ public class FileUploadServiceImpl implements FileUploadService {
private static final String APK_SUFFIX=".apk"; private static final String APK_SUFFIX=".apk";
private static final String APK_NAME="xxfc.apk"; private static final String APK_NAME="xxfc.apk";
private static final String JPG=".jpg";
private static final String PNG=".png";
@Override @Override
public ObjectRestResponse handlerUpload(MultipartFile zipFile,String password,String prefix)throws Exception { public ObjectRestResponse handlerUpload(MultipartFile zipFile,String password,String prefix)throws Exception {
...@@ -100,7 +102,4 @@ public class FileUploadServiceImpl implements FileUploadService { ...@@ -100,7 +102,4 @@ public class FileUploadServiceImpl implements FileUploadService {
zin.closeEntry(); zin.closeEntry();
return path; return path;
} }
} }
package com.xxfc.platform.universal.service.impl;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.universal.constant.enumerate.FileTypeEnum;
import com.xxfc.platform.universal.service.UploadZipService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.Enumeration;
import java.util.Objects;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
@Slf4j
@Service
public class UploadZipServiceImpl implements UploadZipService {
@Value("${universal.uploadPath}")
private String uploadPath ;
@Value("${universal.url}")
private String xx_url ;
private static final String APK_SUFFIX=".apk";
private static final String APK_NAME="xxfc.apk";
private static final String JPG=".jpg";
private static final String PNG=".png";
@Override
public ObjectRestResponse uploadPictureZip(MultipartFile file, String password) throws IOException {
if (Objects.isNull(file)) {
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE,"请上传压缩文件!");
}
String fileContentType = file.getContentType();
//将压缩包保存在指定路径
String packFilePath = uploadPath + File.separator + file.getName();
if (FileTypeEnum.FILE_TYPE_ZIP.type.equals(fileContentType)||FileTypeEnum.FILE_TYPE_X_ZIP.type.equals(fileContentType)) {
//zip解压缩处理
packFilePath += FileTypeEnum.FILE_TYPE_ZIP.fileStufix;
} else {
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE,"上传的压缩包格式不正确,仅支持zip压缩文件!");
}
File fi = new File(packFilePath);
try {
file.transferTo(fi);
} catch (IOException e) {
log.error("zip file save to " + uploadPath + " error", e.getMessage(), e);
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE,"保存压缩文件到:" + uploadPath + " 失败!");
}
//zip压缩包
return unPackZip(fi, password, uploadPath);
}
public ObjectRestResponse unPackZip(File file, String password, String destPath) throws IOException {
ZipFile zipFile = new ZipFile(file);
Enumeration<? extends ZipEntry> entries = zipFile.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
if (entry.isDirectory()) {
destPath =destPath+File.separator+ entry.getName();
File dir = new File(destPath);
dir.mkdir();
}else {
}
}
return null;
}
}
package com.xxfc.platform.vehicle.constant;
import java.util.HashMap;
import java.util.Map;
public enum VehicleCountType {
RENT_VEHICLE(1, "租车用车"),
TOUR(2, "旅游用车"),
INNER(3, "内部用车"),
;
/**
* 编码
*/
private Integer code;
/**
* 类型描述
*/
private String desc;
public static Map<Integer, VehicleCountType> codeAndDesc = new HashMap<Integer, VehicleCountType>();
//Maps.newHashMap();
static{
for(VehicleCountType enumE : VehicleCountType.values()){
codeAndDesc.put(enumE.getCode(), enumE);
}
}
VehicleCountType(Integer code, String desc){
this.code=code;
this.desc=desc;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public static Boolean exists(Integer code){
return codeAndDesc.containsKey(code);
}
public static VehicleCountType get(Integer code) {
for(VehicleCountType enumE : VehicleCountType.values()) {
if (enumE.getCode().equals(code)) {
return enumE;
}
}
return null;
}
}
package com.xxfc.platform.vehicle.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import java.util.Date;
@Table(name = "vehicle_count_record")
@Data
public class VehicleCountRecord {
@Id
private Integer id;
private Integer type;
/**
* 应出车数量
*/
@Column(name = "departure_num")
private Integer departureNum;
/**
* 实际出车数量
*/
@Column(name = "actual_departure_num")
private Integer actualDepartureNum;
/**
* 延期交车数量
*/
@Column(name = "after_departure_num")
private Integer afterDepartureNum;
/**
* 提前交车数
*/
@Column(name = "before_departure_num")
private Integer beforeDepartureNum;
/**
* 应还车数量
*/
@Column(name = "arrival_num")
private Integer arrivalNum;
/**
* 未提前还车数量
*/
@Column(name = "actual_arrival_num")
private Integer actualArrivalNum;
/**
* 延后还车数量
*/
@Column(name = "after_arrival_num")
private Integer afterArrivalNum;
/**
* 提前还车数量
*/
@Column(name = "before_arrival_num")
private Integer beforeArrivalNum;
/**
* 统计日期 yyyy-MM-dd
*/
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(
pattern = "yyyy-MM-dd"
)
private Date countDate;
@Transient
private String startTime;
@Transient
private String endTime;
}
\ No newline at end of file
package com.xxfc.platform.vehicle.pojo;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import com.xxfc.platform.vehicle.entity.VehicleDepartureLog;
import lombok.Data;
@Data
public class DepartureLogVo extends VehicleDepartureLog {
VehicleBookRecord vehicleBookRecord;
}
package com.xxfc.platform.vehicle.pojo;
import lombok.Data;
import java.util.List;
@Data
public class ExcelParamDto {
List<Object[]> data;
String[] header;
String name;
String path;
}
...@@ -91,6 +91,12 @@ public class RentVehicleBookDTO extends PageParam { ...@@ -91,6 +91,12 @@ public class RentVehicleBookDTO extends PageParam {
@ApiModelProperty("扩展结束时间") @ApiModelProperty("扩展结束时间")
String endDateExtend; String endDateExtend;
/**
* 用途 1 租车
*/
@ApiModelProperty(hidden = true)
Integer useType = 1;
public void setBookStartDate(String bookStartDate) { public void setBookStartDate(String bookStartDate) {
this.bookStartDate = bookStartDate; this.bookStartDate = bookStartDate;
//首次设置 //首次设置
......
...@@ -57,6 +57,12 @@ public class UsableVeicleDTO extends PageParam { ...@@ -57,6 +57,12 @@ public class UsableVeicleDTO extends PageParam {
@ApiModelProperty(hidden = true) @ApiModelProperty(hidden = true)
Integer withoutRecordWhere = 1; Integer withoutRecordWhere = 1;
/**
* 用途 1 租车
*/
@ApiModelProperty(hidden = true)
Integer useType = 1;
public void setStartDateTamp(Long startDateTamp) { public void setStartDateTamp(Long startDateTamp) {
this.startDateTamp = startDateTamp; this.startDateTamp = startDateTamp;
this.startDate = DEFAULT_DATE_TIME_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(startDateTamp), ZoneOffset.ofHours(8))); this.startDate = DEFAULT_DATE_TIME_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(startDateTamp), ZoneOffset.ofHours(8)));
......
...@@ -40,4 +40,7 @@ public class VehicleBookRecordVo extends VehicleBookRecord { ...@@ -40,4 +40,7 @@ public class VehicleBookRecordVo extends VehicleBookRecord {
List<VehicleUpkeepItem> vehicleUpkeepItems; List<VehicleUpkeepItem> vehicleUpkeepItems;
private String userCompanyName;
} }
package com.xxfc.platform.vehicle.util.excel;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
/***
* 将文件内容响应到浏览器
*/
public class DownloadUtil {
// 字符编码格式
private static String charsetCode = "utf-8";
/**
* 文件的内容类型
*/
private static String getFileContentType(String name){
String result = "";
String fileType = name.toLowerCase();
if (fileType.endsWith(".png")) {
result = "image/png";
} else if (fileType.endsWith(".gif")) {
result = "image/gif";
} else if (fileType.endsWith(".jpg") || fileType.endsWith(".jpeg")) {
result = "image/jpeg";
} else if(fileType.endsWith(".svg")){
result = "image/svg+xml";
}else if (fileType.endsWith(".doc")) {
result = "application/msword";
} else if (fileType.endsWith(".xls")) {
result = "application/x-excel";
} else if (fileType.endsWith(".zip")) {
result = "application/zip";
} else if (fileType.endsWith(".pdf")) {
result = "application/pdf";
} else {
result = "application/octet-stream";
}
return result;
}
/**
* 下载文件
* @param path 文件的位置
* @param fileName 自定义下载文件的名称
* @param resp http响应
* @param req http请求
*/
public static void downloadFile(String path, String fileName, HttpServletResponse resp, HttpServletRequest req){
File file = new File(path);
try {
/**
* 中文乱码解决
*/
String type = req.getHeader("User-Agent").toLowerCase();
if(type.indexOf("firefox")>0 || type.indexOf("chrome")>0){
/**
* 谷歌或火狐
*/
fileName = new String(fileName.getBytes(charsetCode), "iso8859-1");
}else{
/**
* IE
*/
fileName = URLEncoder.encode(fileName, charsetCode);
}
// 设置响应的头部信息
resp.setHeader("content-disposition", "attachment;filename=" + fileName);
// 设置响应内容的类型
resp.setContentType(getFileContentType(fileName)+"; charset=" + charsetCode);
// 设置响应内容的长度
resp.setContentLength((int) file.length());
// 输出
outStream(new FileInputStream(file), resp.getOutputStream());
} catch (Exception e) {
System.out.println("执行downloadFile发生了异常:" + e.getMessage());
} finally {
if (file.exists()) {
file.delete();
}
}
}
/**
* 基础字节数组输出
*/
private static void outStream(InputStream is, OutputStream os) {
try {
byte[] buffer = new byte[10240];
int length = -1;
while ((length = is.read(buffer)) != -1) {
os.write(buffer, 0, length);
os.flush();
}
} catch (Exception e) {
System.out.println("执行 outStream 发生了异常:" + e.getMessage());
} finally {
try {
os.close();
} catch (IOException e) {
}
try {
is.close();
} catch (IOException e) {
}
}
}
}
\ No newline at end of file
...@@ -29,6 +29,11 @@ ...@@ -29,6 +29,11 @@
<artifactId>xx-universal-api</artifactId> <artifactId>xx-universal-api</artifactId>
<version>2.0-SNAPSHOT</version> <version>2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-order-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -1249,6 +1249,11 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR ...@@ -1249,6 +1249,11 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
} }
public PageDataVO<Vehicle> searchUsableVehicle(RentVehicleBookDTO dto) { public PageDataVO<Vehicle> searchUsableVehicle(RentVehicleBookDTO dto) {
//设置-1表示查询所有的车 由于null json序列化不会赋值过来
if(-1 == dto.getUseType()) {
dto.setUseType(null);
}
Map<String, Object> params = BeanUtil.beanToMap(dto); Map<String, Object> params = BeanUtil.beanToMap(dto);
List<String> notBookedDates = Lists.newArrayList(); List<String> notBookedDates = Lists.newArrayList();
if (StringUtils.isNotBlank(dto.getBookEndDate()) && if (StringUtils.isNotBlank(dto.getBookEndDate()) &&
......
...@@ -311,10 +311,24 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic ...@@ -311,10 +311,24 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic
} }
} }
} }
if (vehicleBookRecordVo.getBookUser() != null) {
UserDTO userDTO = userFeign.userinfoByUid(vehicleBookRecordVo.getBookUser()).getData();
if(userDTO != null) {
BranchCompany branchCompany = branchCompanyBiz.getById(userDTO.getCompanyId());
if (branchCompany != null) {
vehicleBookRecordVo.setUserCompanyName(branchCompany.getName());
}
}
}
} }
return vehicleBookRecordVos; return vehicleBookRecordVos;
} }
public ObjectRestResponse<List<VehicleBookRecordVo>> selectByIds(List<Long> ids) {
Map<String, Object> map = new HashMap<>();
map.put("ids", ids);
return ObjectRestResponse.succ(mapper.selectByIds(map));
}
public RestResponse<Integer> lift(Integer operatorId, String userName, LiftVehicleVo liftVehicleVo) throws Exception { public RestResponse<Integer> lift(Integer operatorId, String userName, LiftVehicleVo liftVehicleVo) throws Exception {
Map<String, Object> params = PropertyUtils.describe(liftVehicleVo); Map<String, Object> params = PropertyUtils.describe(liftVehicleVo);
...@@ -499,6 +513,13 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic ...@@ -499,6 +513,13 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic
} }
public ObjectRestResponse<List<VehicleBookRecordVo>> selectAllBookRecord(Date startTime, Date endTime, Integer status) {
Map<String, Object> map = new HashMap<>();
map.put("startTime", startTime);
map.put("endTime", endTime);
map.put("status", status);
return ObjectRestResponse.succ(mapper.selectAllBookRecord(map));
}
/** /**
* 获取上月数据,并复制到历史表 * 获取上月数据,并复制到历史表
......
package com.xxfc.platform.vehicle.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.entity.OrderTourDetail;
import com.xxfc.platform.order.feign.OrderFeign;
import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import com.xxfc.platform.vehicle.constant.VehicleCountType;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import com.xxfc.platform.vehicle.entity.VehicleCountRecord;
import com.xxfc.platform.vehicle.mapper.VehicleCountRecordMapper;
import com.xxfc.platform.vehicle.pojo.DepartureLogVo;
import com.xxfc.platform.vehicle.pojo.ExcelParamDto;
import com.xxfc.platform.vehicle.pojo.VehicleBookRecordVo;
import com.xxfc.platform.vehicle.util.excel.ExcelExport;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* 统计出车,交车数量
*/
@Service
public class VehicleCountRecordBiz extends BaseBiz<VehicleCountRecordMapper, VehicleCountRecord> {
public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd");
public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
@Autowired
VehicleBookRecordBiz vehicleBookRecordBiz;
@Autowired
VehicleDepartureService vehicleDepartureService;
@Autowired
OrderFeign orderFeign;
/**
* 获取统计出车记录
*
* @param vehicleCountRecord
* @return
*/
public ObjectRestResponse countDepartureVehicle(VehicleCountRecord vehicleCountRecord) {
Map<String, Object> map = new HashMap<>();
if (vehicleCountRecord.getType() != null) {
map.put("type", vehicleCountRecord.getType());
}
if (StringUtils.isNotBlank(vehicleCountRecord.getStartTime())) {
if (StringUtils.isBlank(vehicleCountRecord.getEndTime())) {
vehicleCountRecord.setEndTime(vehicleCountRecord.getStartTime());
}
map.put("startTime", DateTime.parse(vehicleCountRecord.getStartTime(), DEFAULT_DATE_TIME_FORMATTER).getMillis());
map.put("endTime", DateTime.parse(vehicleCountRecord.getEndTime(), DEFAULT_DATE_TIME_FORMATTER).getMillis());
}
if (MapUtils.isNotEmpty(map)) {
List<VehicleCountRecord> list = mapper.selectByTypeAndTime(map);
if (list == null) {
return ObjectRestResponse.createFailedResult(ResCode.FIND_DATA_NOT_EXIST.getCode(), ResCode.FIND_DATA_NOT_EXIST.getDesc());
}
return ObjectRestResponse.succ(list);
}
return ObjectRestResponse.succ(new ArrayList<>());
}
public ObjectRestResponse selectByTime(VehicleCountRecord vehicleCountRecord) {
Map<String, Object> map = new HashMap<>();
if (vehicleCountRecord.getType() != null) {
map.put("type", vehicleCountRecord.getType());
}
if (StringUtils.isNotBlank(vehicleCountRecord.getStartTime())) {
if (StringUtils.isBlank(vehicleCountRecord.getEndTime())) {
vehicleCountRecord.setEndTime(vehicleCountRecord.getStartTime());
}
map.put("startTime", DateTime.parse(vehicleCountRecord.getStartTime(), DEFAULT_DATE_TIME_FORMATTER).toDate());
map.put("endTime", DateTime.parse(vehicleCountRecord.getEndTime(), DEFAULT_DATE_TIME_FORMATTER).toDate());
}
if (MapUtils.isNotEmpty(map)) {
List<VehicleCountRecord> list = mapper.selectByTime(map);
if (list == null) {
return ObjectRestResponse.createFailedResult(ResCode.FIND_DATA_NOT_EXIST.getCode(), ResCode.FIND_DATA_NOT_EXIST.getDesc());
}
return ObjectRestResponse.succ(list);
}
return ObjectRestResponse.succ(new ArrayList<>());
}
/**
* 添加统计记录
*
* @return
*/
public void addAll() {
Long nowTime = getDayStart();
Long lastTime = nowTime + 24 * 3600 * 1000 - 1;
Date startTime = new Date();
startTime.setTime(nowTime);
Date endTime = new Date();
endTime.setTime(lastTime);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String startDate = null;
String endDate = null;
try {
startDate = simpleDateFormat.format(startTime);
endDate = simpleDateFormat.format(endTime);
} catch (Exception e) {
e.printStackTrace();
}
DateTime startDay = DateTime.parse(startDate, DEFAULT_DATE_TIME_FORMATTER);
DateTime endDay = DateTime.parse(endDate, DEFAULT_DATE_TIME_FORMATTER);
int i = 0;
for (DateTime curDate = startDay; i < 30; curDate = curDate.minusDays(1)) {
i++;
nowTime = curDate.getMillis();
lastTime = nowTime + 24 * 3600 * 1000 - 1;
startTime.setTime(nowTime);
endTime.setTime(lastTime);
Date nowDate = curDate.toDate();
VehicleCountRecord vehicleCountRecord = new VehicleCountRecord();
VehicleCountRecord tourCountRecord = new VehicleCountRecord();
VehicleCountRecord innerCountRecord = new VehicleCountRecord();
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
startDate = simpleDateFormat1.format(startTime);
endDate = simpleDateFormat1.format(endTime);
} catch (Exception e) {
e.printStackTrace();
}
//租车应出车数量
List<OrderPageVO> vehicleDepartureList = orderFeign.getOrderList(nowTime, OrderTypeEnum.RENT_VEHICLE.getCode(), 1).getData();
if (vehicleDepartureList != null && vehicleDepartureList.size() > 0) {
vehicleCountRecord.setDepartureNum(vehicleDepartureList.size());
}
Map<String, Object> param = new HashMap<>();
param.put("startTime", DateTime.parse(startDate, DATE_TIME_FORMATTER).toDate());
param.put("endTime", DateTime.parse(endDate, DATE_TIME_FORMATTER).toDate());
//1代表出车 2代表还车
param.put("status", 1);
param.put("bookUser", -2);
//1代表正常出车,2代表提前出车,3代表延期出车
param.put("type", 2);
//租车提前出车数量
Integer beforeDepartureNum = vehicleDepartureService.selectAllDepartureLog(param);
if(beforeDepartureNum != null && beforeDepartureNum > 0) {
vehicleCountRecord.setBeforeDepartureNum(beforeDepartureNum);
}
//租车正常出车数量
param.put("type", 1);
Integer normalDepartureNum = vehicleDepartureService.selectAllDepartureLog(param);
if(normalDepartureNum != null && normalDepartureNum > 0) {
vehicleCountRecord.setActualDepartureNum(normalDepartureNum);
}
//租车延期出车数量
param.put("type", 3);
Integer afterDepartureNum = vehicleDepartureService.selectAllDepartureLog(param);
if(afterDepartureNum != null && afterDepartureNum > 0) {
vehicleCountRecord.setAfterDepartureNum(afterDepartureNum);
}
vehicleCountRecord.setType(VehicleCountType.RENT_VEHICLE.getCode());
//旅游应出车数量
List<OrderPageVO> tourDepartureList = orderFeign.getOrderList(nowTime, OrderTypeEnum.TOUR.getCode(), 1).getData();
if (tourDepartureList != null && tourDepartureList.size() > 0) {
tourCountRecord.setDepartureNum(tourDepartureList.size());
tourCountRecord.setActualDepartureNum(tourDepartureList.size());
}
tourCountRecord.setType(VehicleCountType.TOUR.getCode());
//内部用车应出车数量
List<VehicleBookRecordVo> vehicleDepartureBookRecordList = vehicleBookRecordBiz.selectAllBookRecord(startTime, endTime, 1).getData();
if (vehicleDepartureBookRecordList != null && vehicleDepartureBookRecordList.size() > 0) {
innerCountRecord.setDepartureNum(vehicleDepartureBookRecordList.size());
}
//1代表出车 2代表还车
param.put("status", 1);
param.remove("bookUser");
//1代表正常出车,2代表提前出车,3代表延期出车
param.put("type", 2);
//内部用车提前出车数量
Integer innerBeforeDepartureNum = vehicleDepartureService.selectAllDepartureLog(param);
if(innerBeforeDepartureNum != null && innerBeforeDepartureNum > 0) {
innerCountRecord.setBeforeDepartureNum(innerBeforeDepartureNum);
}
param.put("type", 1);
//内部用车正常出车数量
Integer innerNormalDepartureNum = vehicleDepartureService.selectAllDepartureLog(param);
if(innerNormalDepartureNum != null && innerNormalDepartureNum > 0) {
innerCountRecord.setActualDepartureNum(innerNormalDepartureNum);
}
param.put("type", 3);
//内部用车提前出车数量
Integer innerAfterDepartureNum = vehicleDepartureService.selectAllDepartureLog(param);
if(innerAfterDepartureNum != null && innerAfterDepartureNum > 0) {
innerCountRecord.setAfterDepartureNum(innerAfterDepartureNum);
}
innerCountRecord.setType(VehicleCountType.INNER.getCode());
//租车应还车数量
List<OrderPageVO> vehicleArrivalList = orderFeign.getOrderList(nowTime, OrderTypeEnum.RENT_VEHICLE.getCode(), 2).getData();
if (vehicleArrivalList != null && vehicleArrivalList.size() > 0) {
vehicleCountRecord.setArrivalNum(vehicleArrivalList.size());
}
//1代表出车 2代表还车
param.put("status", 2);
param.put("bookUser", -2);
//1代表正常出车,2代表提前出车,3代表延期出车
param.put("type", 2);
//租车提前还车数量
Integer beforeArrivalNum = vehicleDepartureService.selectAllDepartureLog(param);
if(beforeArrivalNum != null && beforeArrivalNum > 0) {
vehicleCountRecord.setBeforeArrivalNum(beforeArrivalNum);
}
param.put("type", 1);
//租车正常还车数量
Integer normalArrivalNum = vehicleDepartureService.selectAllDepartureLog(param);
if(normalArrivalNum != null && normalArrivalNum > 0) {
vehicleCountRecord.setActualArrivalNum(normalArrivalNum);
}
param.put("type", 3);
//租车正常还车数量
Integer afterArrivalNum = vehicleDepartureService.selectAllDepartureLog(param);
if(afterArrivalNum != null && afterArrivalNum > 0) {
vehicleCountRecord.setAfterArrivalNum(afterArrivalNum);
}
//旅游应还车数量
List<OrderPageVO> tourArrivalList = orderFeign.getOrderList(nowTime, OrderTypeEnum.TOUR.getCode(), 2).getData();
if (tourArrivalList != null && tourArrivalList.size() > 0) {
tourCountRecord.setArrivalNum(tourArrivalList.size());
tourCountRecord.setActualArrivalNum(tourArrivalList.size());
}
//内部用车应还车数量
List<VehicleBookRecordVo> vehicleArrivalBookRecordList = vehicleBookRecordBiz.selectAllBookRecord(startTime, endTime, 2).getData();
if (vehicleArrivalBookRecordList != null && vehicleArrivalBookRecordList.size() > 0) {
innerCountRecord.setArrivalNum(vehicleArrivalBookRecordList.size());
}
//1代表出车 2代表还车
param.put("status", 2);
param.remove("bookUser");
//1代表正常出车,2代表提前出车,3代表延期出车
param.put("type", 2);
//内部用车提前出车数量
Integer innerBeforeArrivalNum = vehicleDepartureService.selectAllDepartureLog(param);
if(innerBeforeArrivalNum != null && innerBeforeArrivalNum > 0) {
innerCountRecord.setAfterArrivalNum(innerBeforeArrivalNum);
}
param.put("type", 1);
//内部用车正常出车数量
Integer innerNormalArrivalNum = vehicleDepartureService.selectAllDepartureLog(param);
if(innerNormalArrivalNum != null && innerNormalArrivalNum > 0) {
innerCountRecord.setActualArrivalNum(innerNormalArrivalNum);
}
param.put("type", 3);
//内部用车提前出车数量
Integer innerAfterArrivalNum = vehicleDepartureService.selectAllDepartureLog(param);
if(innerAfterArrivalNum != null && innerAfterArrivalNum > 0) {
innerCountRecord.setAfterArrivalNum(innerAfterArrivalNum);
}
innerCountRecord.setType(VehicleCountType.INNER.getCode());
vehicleCountRecord.setCountDate(nowDate);
tourCountRecord.setCountDate(nowDate);
innerCountRecord.setCountDate(nowDate);
save(vehicleCountRecord);
save(tourCountRecord);
save(innerCountRecord);
}
}
/**
* 添加统计记录
*
* @return
*/
@Scheduled(cron = "0 0 */2 * * *")
public void add() {
Long nowTime = getDayStart();
Long lastTime = nowTime + 24 * 3600 * 1000 - 1;
Date startTime = new Date();
startTime.setTime(nowTime);
Date endTime = new Date();
endTime.setTime(lastTime);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String startDate = null;
String endDate = null;
try {
startDate = simpleDateFormat.format(startTime);
endDate = simpleDateFormat.format(endTime);
} catch (Exception e) {
e.printStackTrace();
}
DateTime startDay = DateTime.parse(startDate, DEFAULT_DATE_TIME_FORMATTER);
Date nowDate = startDay.toDate();
VehicleCountRecord vehicleCountRecord = new VehicleCountRecord();
VehicleCountRecord tourCountRecord = new VehicleCountRecord();
VehicleCountRecord innerCountRecord = new VehicleCountRecord();
//租车应出车数量
List<OrderPageVO> vehicleDepartureList = orderFeign.getOrderList(nowTime, OrderTypeEnum.RENT_VEHICLE.getCode(), 1).getData();
if (vehicleDepartureList != null && vehicleDepartureList.size() > 0) {
vehicleCountRecord.setDepartureNum(vehicleDepartureList.size());
}
Map<String, Object> param = new HashMap<>();
param.put("startTime", DateTime.parse(startDate, DATE_TIME_FORMATTER).toDate());
param.put("endTime", DateTime.parse(endDate, DATE_TIME_FORMATTER).toDate());
//1代表出车 2代表还车
param.put("status", 1);
param.put("bookUser", -2);
//1代表正常出车,2代表提前出车,3代表延期出车
param.put("type", 2);
//租车提前出车数量
Integer beforeDepartureNum = vehicleDepartureService.selectAllDepartureLog(param);
if(beforeDepartureNum != null && beforeDepartureNum > 0) {
vehicleCountRecord.setBeforeDepartureNum(beforeDepartureNum);
}
//租车正常出车数量
param.put("type", 1);
Integer normalDepartureNum = vehicleDepartureService.selectAllDepartureLog(param);
if(normalDepartureNum != null && normalDepartureNum > 0) {
vehicleCountRecord.setActualDepartureNum(normalDepartureNum);
}
//租车延期出车数量
param.put("type", 3);
Integer afterDepartureNum = vehicleDepartureService.selectAllDepartureLog(param);
if(afterDepartureNum != null && afterDepartureNum > 0) {
vehicleCountRecord.setAfterDepartureNum(afterDepartureNum);
}
vehicleCountRecord.setType(VehicleCountType.RENT_VEHICLE.getCode());
//旅游应出车数量
List<OrderPageVO> tourDepartureList = orderFeign.getOrderList(nowTime, OrderTypeEnum.TOUR.getCode(), 1).getData();
if (tourDepartureList != null && tourDepartureList.size() > 0) {
tourCountRecord.setDepartureNum(tourDepartureList.size());
tourCountRecord.setActualDepartureNum(tourDepartureList.size());
}
tourCountRecord.setType(VehicleCountType.TOUR.getCode());
//内部用车应出车数量
List<VehicleBookRecordVo> vehicleDepartureBookRecordList = vehicleBookRecordBiz.selectAllBookRecord(startTime, endTime, 1).getData();
if (vehicleDepartureBookRecordList != null && vehicleDepartureBookRecordList.size() > 0) {
innerCountRecord.setDepartureNum(vehicleDepartureBookRecordList.size());
}
//1代表出车 2代表还车
param.put("status", 1);
param.remove("bookUser");
//1代表正常出车,2代表提前出车,3代表延期出车
param.put("type", 2);
//内部用车提前出车数量
Integer innerBeforeDepartureNum = vehicleDepartureService.selectAllDepartureLog(param);
if(innerBeforeDepartureNum != null && innerBeforeDepartureNum > 0) {
innerCountRecord.setBeforeDepartureNum(innerBeforeDepartureNum);
}
param.put("type", 1);
//内部用车正常出车数量
Integer innerNormalDepartureNum = vehicleDepartureService.selectAllDepartureLog(param);
if(innerNormalDepartureNum != null && innerNormalDepartureNum > 0) {
innerCountRecord.setActualDepartureNum(innerNormalDepartureNum);
}
param.put("type", 3);
//内部用车提前出车数量
Integer innerAfterDepartureNum = vehicleDepartureService.selectAllDepartureLog(param);
if(innerAfterDepartureNum != null && innerAfterDepartureNum > 0) {
innerCountRecord.setAfterDepartureNum(innerAfterDepartureNum);
}
innerCountRecord.setType(VehicleCountType.INNER.getCode());
//租车应还车数量
List<OrderPageVO> vehicleArrivalList = orderFeign.getOrderList(nowTime, OrderTypeEnum.RENT_VEHICLE.getCode(), 2).getData();
if (vehicleArrivalList != null && vehicleArrivalList.size() > 0) {
vehicleCountRecord.setArrivalNum(vehicleArrivalList.size());
}
//1代表出车 2代表还车
param.put("status", 2);
param.put("bookUser", -2);
//1代表正常出车,2代表提前出车,3代表延期出车
param.put("type", 2);
//租车提前还车数量
Integer beforeArrivalNum = vehicleDepartureService.selectAllDepartureLog(param);
if(beforeArrivalNum != null && beforeArrivalNum > 0) {
vehicleCountRecord.setBeforeArrivalNum(beforeArrivalNum);
}
param.put("type", 1);
//租车正常还车数量
Integer normalArrivalNum = vehicleDepartureService.selectAllDepartureLog(param);
if(normalArrivalNum != null && normalArrivalNum > 0) {
vehicleCountRecord.setActualArrivalNum(normalArrivalNum);
}
param.put("type", 3);
//租车正常还车数量
Integer afterArrivalNum = vehicleDepartureService.selectAllDepartureLog(param);
if(afterArrivalNum != null && afterArrivalNum > 0) {
vehicleCountRecord.setAfterArrivalNum(afterArrivalNum);
}
//旅游应还车数量
List<OrderPageVO> tourArrivalList = orderFeign.getOrderList(nowTime, OrderTypeEnum.TOUR.getCode(), 2).getData();
if (tourArrivalList != null && tourArrivalList.size() > 0) {
tourCountRecord.setArrivalNum(tourArrivalList.size());
tourCountRecord.setActualArrivalNum(tourArrivalList.size());
}
//内部用车应还车数量
List<VehicleBookRecordVo> vehicleArrivalBookRecordList = vehicleBookRecordBiz.selectAllBookRecord(startTime, endTime, 2).getData();
if (vehicleArrivalBookRecordList != null && vehicleArrivalBookRecordList.size() > 0) {
innerCountRecord.setArrivalNum(vehicleArrivalBookRecordList.size());
}
//1代表出车 2代表还车
param.put("status", 2);
param.remove("bookUser");
//1代表正常出车,2代表提前出车,3代表延期出车
param.put("type", 2);
//内部用车提前出车数量
Integer innerBeforeArrivalNum = vehicleDepartureService.selectAllDepartureLog(param);
if(innerBeforeArrivalNum != null && innerBeforeArrivalNum > 0) {
innerCountRecord.setAfterArrivalNum(innerBeforeArrivalNum);
}
param.put("type", 1);
//内部用车正常出车数量
Integer innerNormalArrivalNum = vehicleDepartureService.selectAllDepartureLog(param);
if(innerNormalArrivalNum != null && innerNormalArrivalNum > 0) {
innerCountRecord.setActualArrivalNum(innerNormalArrivalNum);
}
param.put("type", 3);
//内部用车提前出车数量
Integer innerAfterArrivalNum = vehicleDepartureService.selectAllDepartureLog(param);
if(innerAfterArrivalNum != null && innerAfterArrivalNum > 0) {
innerCountRecord.setAfterArrivalNum(innerAfterArrivalNum);
}
innerCountRecord.setType(VehicleCountType.INNER.getCode());
vehicleCountRecord.setCountDate(nowDate);
tourCountRecord.setCountDate(nowDate);
innerCountRecord.setCountDate(nowDate);
save(vehicleCountRecord);
save(tourCountRecord);
save(innerCountRecord);
}
public void save(VehicleCountRecord vehicleCountRecord) {
if (vehicleCountRecord != null) {
Map<String, Object> map = new HashMap<>();
map.put("type", vehicleCountRecord.getType());
map.put("startTime", vehicleCountRecord.getCountDate());
List<VehicleCountRecord> list = mapper.selectByTypeAndTime(map);
if (list != null && list.size() > 0) {
BeanUtil.copyProperties(vehicleCountRecord, list.get(0), CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
updateByIdRe(list.get(0));
} else {
insertSelective(vehicleCountRecord);
}
}
}
public ObjectRestResponse export(ExcelParamDto excelParamDto) {
ExcelExport ee1 = new ExcelExport();
ee1.addSheetByArray(excelParamDto.getName(), excelParamDto.getData(), excelParamDto.getHeader());
Properties properties = System.getProperties();
String osName = properties.getProperty("os.name");
String path = "";
if(osName.contains("Windows")) {
path = "d://"+ excelParamDto.getName() + ".xlsx";
} else {
path = "/data/temp/"+ excelParamDto.getName() + ".xlsx";
}
File file = new File(path);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
return ObjectRestResponse.createFailedResult(1024, "文件写入失败!");
}
}
OutputStream fis;
try {
fis = new FileOutputStream(path);
ee1.getWorkbook().write(fis);
} catch (FileNotFoundException e) {
e.printStackTrace();
return ObjectRestResponse.createFailedResult(1024, "文件不存在!");
} catch (IOException e) {
e.printStackTrace();
return ObjectRestResponse.createFailedResult(1024, "文件写入失败!");
}
return ObjectRestResponse.succ(path);
}
public void download(String path, HttpServletResponse response){
// 下载本地文件
String fileName = "export.xlsx".toString(); // 文件的默认保存名
// 读到流中
InputStream inStream = null;// 文件的存放路径
try {
inStream = new FileInputStream(path);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 设置输出的格式
response.reset();
response.setContentType("bin");
response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
// 循环取出流中的数据
byte[] b = new byte[100];
int len;
try {
while ((len = inStream.read(b)) > 0)
response.getOutputStream().write(b, 0, len);
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public Map<Integer, Integer> getDeparture(List<VehicleBookRecordVo> list, Integer type) {
Map<Integer, Integer> map = new HashMap<>();
Integer a = 0;
Integer b = 0;
Integer c = 0;
for (VehicleBookRecordVo vehicleBookRecordVo : list) {
//延后交车
if (type == 1) {
if (vehicleBookRecordVo.getVehicleDepartureLogVo() == null) {
a++;
//提前交车
} else if (vehicleBookRecordVo.getVehicleDepartureLogVo() != null && DateTime.parse(vehicleBookRecordVo.getVehicleDepartureLogVo().getDepartureTime(), DATE_TIME_FORMATTER).getMillis() < getDayStart(vehicleBookRecordVo.getBookStartDate().getTime())) {
b++;
//正常交车
} else if (vehicleBookRecordVo.getVehicleDepartureLogVo() != null && DateTime.parse(vehicleBookRecordVo.getVehicleDepartureLogVo().getDepartureTime(), DATE_TIME_FORMATTER).getMillis() >= getDayStart(vehicleBookRecordVo.getBookStartDate().getTime()) && DateTime.parse(vehicleBookRecordVo.getVehicleDepartureLogVo().getDepartureTime(), DATE_TIME_FORMATTER).getMillis() <= getDayStart(vehicleBookRecordVo.getBookStartDate().getTime()) + 24 * 3600 * 1000 - 1) {
c++;
}
} else if (type == 2) {
//延后还车
if (vehicleBookRecordVo.getVehicleDepartureLogVo() != null && vehicleBookRecordVo.getVehicleDepartureLogVo().getState() == 1 && DateTime.parse(vehicleBookRecordVo.getVehicleDepartureLogVo().getArrivalTime(), DATE_TIME_FORMATTER).getMillis() > getDayStart(vehicleBookRecordVo.getBookEndDate().getTime()) + 24 * 3600 * 1000 - 1) {
a++;
//提前还车
} else if (vehicleBookRecordVo.getVehicleDepartureLogVo() != null && vehicleBookRecordVo.getVehicleDepartureLogVo().getState() == 1 && DateTime.parse(vehicleBookRecordVo.getVehicleDepartureLogVo().getArrivalTime(), DATE_TIME_FORMATTER).getMillis() < getDayStart(vehicleBookRecordVo.getBookEndDate().getTime())) {
b++;
//正常还车
} else if (vehicleBookRecordVo.getVehicleDepartureLogVo() != null && vehicleBookRecordVo.getVehicleDepartureLogVo().getState() == 1 && DateTime.parse(vehicleBookRecordVo.getVehicleDepartureLogVo().getArrivalTime(), DATE_TIME_FORMATTER).getMillis() >= getDayStart(vehicleBookRecordVo.getBookEndDate().getTime()) && DateTime.parse(vehicleBookRecordVo.getVehicleDepartureLogVo().getArrivalTime(), DATE_TIME_FORMATTER).getMillis() <= getDayStart(vehicleBookRecordVo.getBookEndDate().getTime()) + 24 * 3600 * 1000 - 1) {
c++;
}
}
}
map.put(1, a);
map.put(2, b);
map.put(3, c);
return map;
}
public static Long getDayStart() {
long current = System.currentTimeMillis();
long zero = current / (1000 * 3600 * 24) * (1000 * 3600 * 24) - TimeZone.getDefault().getRawOffset();
return zero;
}
public static Long getDayStart(Long time) {
long current = time;
long zero = current / (1000 * 3600 * 24) * (1000 * 3600 * 24) - TimeZone.getDefault().getRawOffset();
return zero;
}
}
...@@ -12,6 +12,7 @@ import com.xxfc.platform.vehicle.entity.Vehicle; ...@@ -12,6 +12,7 @@ import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleDepartureLog; import com.xxfc.platform.vehicle.entity.VehicleDepartureLog;
import com.xxfc.platform.vehicle.mapper.VehicleDepartureLogMapper; import com.xxfc.platform.vehicle.mapper.VehicleDepartureLogMapper;
import com.xxfc.platform.vehicle.mapper.VehicleMapper; import com.xxfc.platform.vehicle.mapper.VehicleMapper;
import com.xxfc.platform.vehicle.pojo.DepartureLogVo;
import com.xxfc.platform.vehicle.pojo.VehicleDepartureLogVo; import com.xxfc.platform.vehicle.pojo.VehicleDepartureLogVo;
import com.xxfc.platform.vehicle.pojo.VehicleDepartureStatisticDataVo; import com.xxfc.platform.vehicle.pojo.VehicleDepartureStatisticDataVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -24,6 +25,7 @@ import tk.mybatis.mapper.weekend.WeekendSqls; ...@@ -24,6 +25,7 @@ import tk.mybatis.mapper.weekend.WeekendSqls;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
@Service @Service
@Slf4j @Slf4j
...@@ -103,6 +105,9 @@ public class VehicleDepartureService extends BaseBiz<VehicleDepartureLogMapper, ...@@ -103,6 +105,9 @@ public class VehicleDepartureService extends BaseBiz<VehicleDepartureLogMapper,
} }
public Integer selectAllDepartureLog(Map<String, Object> param) {
return mapper.selectAllDepartureLog(param);
}
public ObjectRestResponse findOne(Integer vid) throws Exception { public ObjectRestResponse findOne(Integer vid) throws Exception {
Example exm = Example.builder(VehicleDepartureLog.class) Example exm = Example.builder(VehicleDepartureLog.class)
......
...@@ -40,4 +40,7 @@ public interface VehicleBookRecordMapper extends Mapper<VehicleBookRecord> { ...@@ -40,4 +40,7 @@ public interface VehicleBookRecordMapper extends Mapper<VehicleBookRecord> {
public List<VehicleBookRecordVo> selectZeroHourRecord(Map<String, Object> param); public List<VehicleBookRecordVo> selectZeroHourRecord(Map<String, Object> param);
public List<VehicleBookRecordVo> selectAllBookRecord(Map<String, Object> param);
public List<VehicleBookRecordVo> selectByIds(Map<String, Object> param);
} }
\ No newline at end of file
package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.VehicleCountRecord;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
import java.util.Map;
public interface VehicleCountRecordMapper extends Mapper<VehicleCountRecord> {
List<VehicleCountRecord> countDepartureVehicle(VehicleCountRecord vehicleCountRecord);
List<VehicleCountRecord> selectByTypeAndTime(Map<String, Object> param);
List<VehicleCountRecord> selectByTime(Map<String, Object> param);
}
\ No newline at end of file
package com.xxfc.platform.vehicle.mapper; package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.VehicleDepartureLog; import com.xxfc.platform.vehicle.entity.VehicleDepartureLog;
import com.xxfc.platform.vehicle.pojo.DepartureLogVo;
import com.xxfc.platform.vehicle.pojo.VehicleDepartureLogVo; import com.xxfc.platform.vehicle.pojo.VehicleDepartureLogVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.BaseMapper; import tk.mybatis.mapper.common.BaseMapper;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List; import java.util.List;
import java.util.Map;
public interface VehicleDepartureLogMapper extends BaseMapper<VehicleDepartureLog>, Mapper<VehicleDepartureLog> { public interface VehicleDepartureLogMapper extends BaseMapper<VehicleDepartureLog>, Mapper<VehicleDepartureLog> {
...@@ -32,4 +34,5 @@ public interface VehicleDepartureLogMapper extends BaseMapper<VehicleDepartureLo ...@@ -32,4 +34,5 @@ public interface VehicleDepartureLogMapper extends BaseMapper<VehicleDepartureLo
String selectDayByVehicleId(String vehicleId); String selectDayByVehicleId(String vehicleId);
VehicleDepartureLogVo selectByBookRecordId(Long bookRecordId); VehicleDepartureLogVo selectByBookRecordId(Long bookRecordId);
Integer selectAllDepartureLog(Map<String, Object> param);
} }
...@@ -125,6 +125,27 @@ public class RentVehicleController extends BaseController<VehicleBiz> implements ...@@ -125,6 +125,27 @@ public class RentVehicleController extends BaseController<VehicleBiz> implements
return ObjectRestResponse.succ(vehicleBiz.searchUsableModel(dto)); return ObjectRestResponse.succ(vehicleBiz.searchUsableModel(dto));
} }
/**
* 后台查询可用车辆(车型)
*
* @param dto
* @return
*/
@ApiOperation("可用车辆查询")
@RequestMapping(value = "/rent/back-stage/usable-vehicle", method = RequestMethod.GET)
@IgnoreUserToken
public ObjectRestResponse<PageDataVO<UsableVehicleModelVO>> rentBgUsableVehicle(UsableVeicleDTO dto) throws Exception {
//根据时间 获得 可用车辆
//结合车型
if (StringUtils.isNotBlank(dto.getCatasStr())) {
dto.setCatas(vehiclePlatCataBiz.groupCatasByParent(dto.getCatasStr()));
}
//设置显示是否有车
dto.setYearNo4Where(Boolean.TRUE);
dto.setUseType(null);
return ObjectRestResponse.succ(vehicleBiz.searchUsableModel(dto));
}
/** /**
* 热门车型 * 热门车型
* *
......
package com.xxfc.platform.vehicle.rest;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.vehicle.biz.VehicleCountRecordBiz;
import com.xxfc.platform.vehicle.entity.VehicleCountRecord;
import com.xxfc.platform.vehicle.pojo.ExcelParamDto;
import com.xxfc.platform.vehicle.util.excel.DownloadUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
@Controller
@RequestMapping(value = "/vehicleCount")
public class VehicleCountRecordController {
@Autowired
VehicleCountRecordBiz vehicleCountRecordBiz;
@GetMapping("/app/unauth/test")
@ResponseBody
public ObjectRestResponse add() {
vehicleCountRecordBiz.addAll();
return ObjectRestResponse.succ();
}
@GetMapping("/app/unauth/get")
@ResponseBody
public ObjectRestResponse getByTypeAndDate(VehicleCountRecord vehicleCountRecord) {
return vehicleCountRecordBiz.selectByTime(vehicleCountRecord);
}
@PostMapping("/app/unauth/export")
@ResponseBody
public ObjectRestResponse export(@RequestBody ExcelParamDto excelParamDto) {
return vehicleCountRecordBiz.export(excelParamDto);
}
@GetMapping("/app/unauth/download")
public void download(ExcelParamDto excelParamDto, HttpServletRequest request,HttpServletResponse response) {
DownloadUtil.downloadFile(excelParamDto.getPath(), "export.xls", response,request);
}
@GetMapping("/app/unauth/selectByTime")
public ObjectRestResponse selectByTime(VehicleCountRecord vehicleCountRecord) {
return vehicleCountRecordBiz.selectByTime(vehicleCountRecord);
}
}
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
</plugin> </plugin>
<jdbcConnection driverClass="com.mysql.jdbc.Driver" <jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://10.5.52.3:3306/vehicle?useUnicode=true&amp;characterEncoding=UTF8" connectionURL="jdbc:mysql://10.5.52.3:3306/xxfc_vehicle?useUnicode=true&amp;characterEncoding=UTF8"
userId="root" userId="root"
password="sslcloud123*()"> password="sslcloud123*()">
</jdbcConnection> </jdbcConnection>
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
<!-- </table>--> <!-- </table>-->
<!-- <table tableName="branch_company_stock_info" domainObjectName="BranchCompanyStockInfo"></table>--> <!-- <table tableName="branch_company_stock_info" domainObjectName="BranchCompanyStockInfo"></table>-->
<!-- <table tableName="branch_company_stock_apply_info" domainObjectName="BranchCompanyStockApplyInfo"></table>--> <!-- <table tableName="branch_company_stock_apply_info" domainObjectName="BranchCompanyStockApplyInfo"></table>-->
<table tableName="vehicle_book_hour_info" domainObjectName="VehicleBookHourInfo"></table> <table tableName="vehicle_count_record" domainObjectName="VehicleCountRecord"></table>
<!-- <table tableName="vehicle_upkeep_log" domainObjectName="VehicleUpkeepLog"></table>--> <!-- <table tableName="vehicle_upkeep_log" domainObjectName="VehicleUpkeepLog"></table>-->
</context> </context>
</generatorConfiguration> </generatorConfiguration>
\ No newline at end of file
...@@ -516,6 +516,26 @@ ...@@ -516,6 +516,26 @@
order by create_time DESC order by create_time DESC
</select> </select>
<select id="selectAllBookRecord" resultMap="searchBookRecord" parameterType="Map">
select v1.* from vehicle_book_record v1
where v1.status not in (4,6,7,3)
<if test="startTime != null and status == 1">
and v1.book_start_date between #{startTime} and #{endTime}
</if>
<if test="startTime != null and status == 2">
and v1.book_end_date between #{startTime} and #{endTime}
</if>
</select>
<select id="selectByIds" resultMap="searchBookRecord" parameterType="Map">
select v1.* from vehicle_book_record v1
where v1.status not in (4,6,7,3)
<if test="ids != null and ids.size > 0">
and v1.id in
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</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} (
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.xxfc.platform.vehicle.mapper.VehicleCountRecordMapper" >
<resultMap id="BaseResultMap" type="com.xxfc.platform.vehicle.entity.VehicleCountRecord" >
<!--
WARNING - @mbg.generated
-->
<id column="id" property="id" jdbcType="INTEGER" />
<result column="type" property="type" jdbcType="INTEGER" />
<result column="departure_num" property="departureNum" jdbcType="INTEGER" />
<result column="actual_departure_num" property="actualDepartureNum" jdbcType="INTEGER" />
<result column="after_departure_num" property="afterDepartureNum" jdbcType="INTEGER" />
<result column="before_departure_num" property="beforeDepartureNum" jdbcType="INTEGER" />
<result column="arrival_num" property="arrivalNum" jdbcType="INTEGER" />
<result column="actual_arrival_num" property="actualArrivalNum" jdbcType="INTEGER" />
<result column="after_arrival_num" property="afterArrivalNum" jdbcType="INTEGER" />
<result column="before_arrival_num" property="beforeArrivalNum" jdbcType="INTEGER" />
<result column="count_date" property="countDate" jdbcType="DATE"/>
</resultMap>
<select id = "countDepartureVehicle" parameterType = "com.xxfc.platform.vehicle.entity.VehicleCountRecord" resultMap = "BaseResultMap">
select * from vehicle_count_record where count_date = #{time}
</select>
<select id="selectByTypeAndTime" parameterType = "Map" resultType="com.xxfc.platform.vehicle.entity.VehicleCountRecord">
select * from vehicle_count_record
<where>
<if test="type != null">
and type = #{type}
</if>
<if test="startTime != null">
and count_date = #{startTime}
</if>
</where>
order by id DESC
</select>
<select id="selectByTime" parameterType = "Map" resultType="com.xxfc.platform.vehicle.entity.VehicleCountRecord">
select * from vehicle_count_record
where count_date &gt;= #{startTime} and count_date &lt;= #{endTime}
<if test="type != null">
and type = #{type}
</if>
order by id DESC
</select>
</mapper>
\ No newline at end of file
...@@ -2,7 +2,11 @@ ...@@ -2,7 +2,11 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.xxfc.platform.vehicle.mapper.VehicleDepartureLogMapper" > <mapper namespace="com.xxfc.platform.vehicle.mapper.VehicleDepartureLogMapper" >
<resultMap id="searchBookRecord" type="com.xxfc.platform.vehicle.pojo.DepartureLogVo">
<result column="book_record_id" property="bookRecordId" jdbcType="INTEGER" javaType="java.lang.Integer"/>
<association property="vehicleBookRecord" column="id"
select="com.xxfc.platform.vehicle.mapper.VehicleBookRecordMapper.selectOne"/>
</resultMap>
<select id="selectLastByVehicleId" resultType="com.xxfc.platform.vehicle.entity.VehicleDepartureLog"> <select id="selectLastByVehicleId" resultType="com.xxfc.platform.vehicle.entity.VehicleDepartureLog">
select * from vehicle_departure_log select * from vehicle_departure_log
where vehicle_id = #{vehicleId} where vehicle_id = #{vehicleId}
...@@ -30,7 +34,55 @@ ...@@ -30,7 +34,55 @@
where vehicle_departure_log.book_record_id = #{id} where vehicle_departure_log.book_record_id = #{id}
order by create_time desc order by create_time desc
</select> </select>
<select id="selectAllDepartureLog" resultType="java.lang.Integer" parameterType="Map">
SELECT
count(*)
FROM
vehicle_departure_log v1
LEFT JOIN vehicle_book_record v2 on v1.book_record_id = v2.id
<where>
<if test="startTime != null and status == 1">
and (v1.departure_time between #{startTime} and #{endTime})
</if>
<if test="startTime != null and status == 2">
and (v1.arrival_time between #{startTime} and #{endTime})
</if>
<!--正常出车-->
<if test="startTime != null and status == 1 and type == 1">
and (v2.book_start_date between #{startTime} and #{endTime})
</if>
<!--提前出车-->
<if test="endTime != null and status == 1 and type == 2">
and v2.book_start_date &gt;= #{endTime}
</if>
<!--延期出车-->
<if test="startTime != null and status == 1 and type == 3">
and v2.book_start_date &lt;= #{startTime}
</if>
<!--正常还车-->
<if test="startTime != null and status == 2 and type == 1">
and (v2.book_start_date between #{startTime} and #{endTime})
</if>
<!--提前还车-->
<if test="endTime != null and status == 2 and type == 2">
and v2.book_start_date &gt;= #{endTime}
</if>
<!--延期还车-->
<if test="startTime != null and status == 2 and type == 3">
and v2.book_start_date &lt;= #{startTime}
</if>
<!--统计客户用车-->
<if test="bookUser != null">
and v2.book_user = #{bookUser}
</if>
<if test="bookUser == null">
and v2.book_user != -2
</if>
</where>
</select>
<select id="selectVoAll" resultType="com.xxfc.platform.vehicle.pojo.VehicleDepartureLogVo"> <select id="selectVoAll" resultType="com.xxfc.platform.vehicle.pojo.VehicleDepartureLogVo">
select vehicle_departure_log.*,vehicle.number_plate, select vehicle_departure_log.*,vehicle.number_plate,
/* IFNULL(DATEDIFF(vehicle_departure_log.arrival_time,vehicle_departure_log.departure_time),0)*/ /* IFNULL(DATEDIFF(vehicle_departure_log.arrival_time,vehicle_departure_log.departure_time),0)*/
......
...@@ -682,7 +682,9 @@ ...@@ -682,7 +682,9 @@
</if> </if>
and v.is_del = 0 and v.is_del = 0
and v.status != 3 and v.status != 3
and v.use_type = 1 <if test="useType != null">
and v.use_type = #{useType}
</if>
and bc.is_del = 0 and bc.is_del = 0
and bc.is_show = 1 and bc.is_show = 1
</where> </where>
......
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