Commit 9b9d5b28 authored by jiaorz's avatar jiaorz

新增押金记录,修改租车核销

parents 2b138687 e3fc6720
...@@ -12,7 +12,6 @@ import io.jsonwebtoken.ExpiredJwtException; ...@@ -12,7 +12,6 @@ import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.SignatureException; import io.jsonwebtoken.SignatureException;
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.context.ApplicationListener;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
...@@ -50,7 +49,6 @@ public class ServiceAuthUtil{ ...@@ -50,7 +49,6 @@ public class ServiceAuthUtil{
@Scheduled(cron = "0/30 * * * * ?") @Scheduled(cron = "0/30 * * * * ?")
public void refreshAllowedClient() { public void refreshAllowedClient() {
log.debug("refresh allowedClient.....");
BaseResponse resp = serviceAuthFeign.getAllowedClient(serviceAuthConfig.getClientId(), serviceAuthConfig.getClientSecret()); BaseResponse resp = serviceAuthFeign.getAllowedClient(serviceAuthConfig.getClientId(), serviceAuthConfig.getClientSecret());
if (resp.getStatus() == 200) { if (resp.getStatus() == 200) {
ObjectRestResponse<List<String>> allowedClient = (ObjectRestResponse<List<String>>) resp; ObjectRestResponse<List<String>> allowedClient = (ObjectRestResponse<List<String>>) resp;
......
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package com.ace.cache.parser.impl;
import com.ace.cache.constants.CacheScope;
import com.ace.cache.parser.IKeyGenerator;
import com.ace.cache.parser.IUserKeyGenerator;
import com.ace.cache.utils.ReflectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Service
public class DefaultKeyGenerator extends IKeyGenerator {
@Autowired(
required = false
)
private IUserKeyGenerator userKeyGenerator;
public DefaultKeyGenerator() {
}
public String buildKey(String key, CacheScope scope, Class<?>[] parameterTypes, Object[] arguments) {
boolean isFirst = true;
if (key.indexOf("{") > 0) {
key = key.replace("{", ":{");
Pattern pattern = Pattern.compile("\\d+\\.?[\\w]*");
Matcher matcher = pattern.matcher(key);
while(matcher.find()) {
String tmp = matcher.group();
String[] express = matcher.group().split("\\.");
String i = express[0];
int index = Integer.parseInt(i) - 1;
Object value = arguments[index];
if (parameterTypes[index].isAssignableFrom(List.class)) {
List result = (List)arguments[index];
if(null != result) {
value = result.get(0);
}
}
if (value == null || value.equals("null")) {
value = "";
}
if (express.length > 1) {
String field = express[1];
value = ReflectionUtils.getFieldValue(value, field);
}
if (isFirst) {
key = key.replace("{" + tmp + "}", value.toString());
} else {
key = key.replace("{" + tmp + "}", "_" + value.toString());
}
}
}
return key;
}
public IUserKeyGenerator getUserKeyGenerator() {
return this.userKeyGenerator;
}
}
...@@ -3,20 +3,15 @@ package com.github.wxiaoqi.security.admin.biz; ...@@ -3,20 +3,15 @@ package com.github.wxiaoqi.security.admin.biz;
import com.ace.cache.annotation.Cache; import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear; import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail; import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.mapper.AppUserDetailMapper; import com.github.wxiaoqi.security.admin.mapper.AppUserDetailMapper;
import com.github.wxiaoqi.security.admin.rpc.service.AppPermissionService; import com.github.wxiaoqi.security.admin.rpc.service.AppPermissionService;
import com.github.wxiaoqi.security.admin.vo.AppUserVo; import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.im.utils.StringUtil;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.time.Instant; import java.time.Instant;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
...@@ -36,8 +31,6 @@ import java.util.stream.Collectors; ...@@ -36,8 +31,6 @@ import java.util.stream.Collectors;
public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail> { public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail> {
@Autowired
AppUserLoginBiz userLoginBiz;
@Override @Override
...@@ -104,20 +97,16 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail ...@@ -104,20 +97,16 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
entity.setUpdatetime(Instant.now().toEpochMilli() / 1000L); entity.setUpdatetime(Instant.now().toEpochMilli() / 1000L);
super.updateSelectiveById(entity); super.updateSelectiveById(entity);
} }
Integer userid=entity.getUserid();
AppUserLogin appUserLogin=new AppUserLogin();
appUserLogin.setWxOpenid(userVo.getWxOpenid());
appUserLogin.setUnionid(userVo.getUnionid());
appUserLogin.setOpenid(userVo.getOpenid());
appUserLogin.setId(userid);
appUserLogin.setUsername(userVo.getUsername());
userLoginBiz.bindOpenid(appUserLogin);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
//更新用户信息
public Map<Integer, AppUserDetail> findUserIdAndUserDetailMapByMemberIds(List<Integer> memberIds) { public Map<Integer, AppUserDetail> findUserIdAndUserDetailMapByMemberIds(List<Integer> memberIds) {
......
...@@ -11,6 +11,7 @@ import com.github.wxiaoqi.security.admin.vo.InviteMemberVo; ...@@ -11,6 +11,7 @@ import com.github.wxiaoqi.security.admin.vo.InviteMemberVo;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.aop.framework.AopContext; import org.springframework.aop.framework.AopContext;
...@@ -33,6 +34,7 @@ import java.util.stream.Collectors; ...@@ -33,6 +34,7 @@ import java.util.stream.Collectors;
* @date 2019-07-03 16:36:44 * @date 2019-07-03 16:36:44
*/ */
@Service @Service
@Slf4j
public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRelation> { public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRelation> {
@Autowired @Autowired
...@@ -56,6 +58,10 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel ...@@ -56,6 +58,10 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
* @param parentId * @param parentId
*/ */
public void bindRelation(Integer userId,Integer parentId,Integer type){ public void bindRelation(Integer userId,Integer parentId,Integer type){
if (userId==parentId){
log.info("----userId==="+userId+"----parentId===="+parentId+"----自己不能成为自己的上线");
return;
}
AppUserRelation relation=getMyBiz().getRelationByUserId(parentId); AppUserRelation relation=getMyBiz().getRelationByUserId(parentId);
if(relation==null){ if(relation==null){
relation=new AppUserRelation(); relation=new AppUserRelation();
...@@ -265,9 +271,14 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel ...@@ -265,9 +271,14 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
} }
public void deleteByMemberIds(Collection<Integer> userIds) { public void deleteByMemberIds(Collection<Integer> userIds) {
Example example = new Example(AppUserRelation.class); Example example = new Example(AppUserRelation.class);
Example.Criteria criteria = example.createCriteria(); Example.Criteria criteria = example.createCriteria();
criteria.andIn("userId",userIds); criteria.andIn("parentId",userIds);
mapper.deleteByExample(example); mapper.deleteByExample(example);
Example example2 = new Example(AppUserRelation.class);
Example.Criteria criteria1 = example2.createCriteria();
criteria1.andIn("userId",userIds);
mapper.deleteByExample(example2);
} }
} }
\ No newline at end of file
...@@ -174,6 +174,16 @@ public class AppUserController extends CommonBaseController { ...@@ -174,6 +174,16 @@ public class AppUserController extends CommonBaseController {
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数为空"); return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数为空");
} }
userDetailBiz.updUuserInfoById(userVo); userDetailBiz.updUuserInfoById(userVo);
Integer userid=userVo.getUserid();
if (userid!=null){
AppUserLogin appUserLogin=new AppUserLogin();
appUserLogin.setWxOpenid(userVo.getWxOpenid());
appUserLogin.setUnionid(userVo.getUnionid());
appUserLogin.setOpenid(userVo.getOpenid());
appUserLogin.setId(userid);
appUserLogin.setUsername(userVo.getUsername());
appUserLoginBiz.bindOpenid(appUserLogin);
}
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
......
...@@ -16,9 +16,7 @@ import io.swagger.annotations.Api; ...@@ -16,9 +16,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.*;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
...@@ -26,6 +24,7 @@ import javax.servlet.http.HttpServletRequest; ...@@ -26,6 +24,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.List; import java.util.List;
/** /**
...@@ -72,19 +71,20 @@ public class UserMemberAdminController { ...@@ -72,19 +71,20 @@ public class UserMemberAdminController {
@ApiOperation("会员excel模板下载") @ApiOperation("会员excel模板下载")
@GetMapping(value = "/app/unauth/user/excel_model/dowload",produces = "application/vnd.ms-excel") @GetMapping(value = "/app/unauth/user/excel_model/dowload")
public ResponseEntity<byte[]> dowloadUserMemberExcelModel(HttpServletResponse response){ public ResponseEntity<byte[]> dowloadUserMemberExcelModel(){
// 重置response
response.reset();
response.setCharacterEncoding("utf-8");
// response.setContentType("application/vnd.ms-excel");
response.addHeader("Content-Disposition", "attachment;filename=usermember.xlsx"); HttpHeaders headers = new HttpHeaders();
// headers.add("Content-Disposition","attachment;filename=usermember.xlsx");
// headers.add("Content-Type","application/vnd.ms-excel");
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
headers.setContentDisposition(ContentDisposition.builder("attachment").filename("usermember.xlsx", Charset.forName("UTF-8")).build());
InputStream inputStream = AdminBootstrap.class.getClassLoader().getResourceAsStream("file/usermember.xlsx"); InputStream inputStream = AdminBootstrap.class.getClassLoader().getResourceAsStream("file/usermember.xlsx");
try { try {
response.setContentLength(inputStream.available()); headers.setContentLength(Long.valueOf(inputStream.available()));
byte[] bytes = IOUtils.toByteArray(inputStream); byte[] bytes = IOUtils.toByteArray(inputStream);
return ResponseEntity.ok(bytes); inputStream.close();
return new ResponseEntity<>(bytes,headers,HttpStatus.OK);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
......
package com.github.wxiaoqi.security.api.vo.config; package com.github.wxiaoqi.security.api.vo.config;
import feign.Logger;
import feign.RequestInterceptor; import feign.RequestInterceptor;
import feign.RequestTemplate; import feign.RequestTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
...@@ -22,22 +20,20 @@ public class HeaderConfig implements RequestInterceptor { ...@@ -22,22 +20,20 @@ public class HeaderConfig implements RequestInterceptor {
@Override @Override
public void apply(RequestTemplate template) { public void apply(RequestTemplate template) {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
if (requestAttributes instanceof ServletRequestAttributes){ if (requestAttributes instanceof ServletRequestAttributes) {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttributes; ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttributes;
HttpServletRequest request = servletRequestAttributes.getRequest(); HttpServletRequest request = servletRequestAttributes.getRequest();
//请求头设置 //请求头设置
Enumeration<String> headerNames = request.getHeaderNames(); Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames!=null){ if (headerNames != null) {
while (headerNames.hasMoreElements()){ while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement(); String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName); String headerValue = request.getHeader(headerName);
if("Authorization".equals(headerName)) { if ("Authorization".equals(headerName) || "authorization".equals(headerName)) {
template.header(headerName,headerValue); template.header("Authorization", headerValue);
} }
} }
} }
} }
} }
} }
...@@ -27,38 +27,43 @@ import java.util.Map; ...@@ -27,38 +27,43 @@ import java.util.Map;
* @date 2019-06-03 15:57:13 * @date 2019-06-03 15:57:13
*/ */
@Service @Service
public class CofigBiz extends BaseBiz<CofigMapper,Cofig> { public class CofigBiz extends BaseBiz<CofigMapper, Cofig> {
public List<Cofig> getConfigByType(List<Integer> list){ public List<Cofig> getConfigByType(List<Integer> list) {
return mapper.getAllByType(list); Example example = new Example(Cofig.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("isDel", 0);
criteria.andIn("type", list);
return mapper.selectByExample(example);
} }
/** /**
* 修改配置 * 修改配置
*
* @param cofig * @param cofig
* @return * @return
*/ */
@CacheClear(pre = "app:withdrawrule{1.type}") @CacheClear(pre = "app:withdrawrule{1.type}")
public int updateConfig(Cofig cofig) { public int updateConfig(Cofig cofig) {
EntityUtils.setUpdatedInfo(cofig); EntityUtils.setUpdatedInfo(cofig);
return mapper.updateByPrimaryKeySelective(cofig); return mapper.updateByPrimaryKeySelective(cofig);
} }
@Cache(key = "app:withdrawrule:88") @Cache(key = "app:withdrawrule:88")
public WithDrawRuleVo getWithDrawRule(){ public WithDrawRuleVo getWithDrawRule() {
WithDrawRuleVo withDrawRuleVo = new WithDrawRuleVo(); WithDrawRuleVo withDrawRuleVo = new WithDrawRuleVo();
Example example = new Example(Cofig.class); Example example = new Example(Cofig.class);
Example.Criteria criteria = example.createCriteria(); Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("type",88); criteria.andEqualTo("type", 88);
List<Cofig> cofigs = mapper.selectByExample(example); List<Cofig> cofigs = mapper.selectByExample(example);
if (CollectionUtils.isEmpty(cofigs)){ if (CollectionUtils.isEmpty(cofigs)) {
return withDrawRuleVo; return withDrawRuleVo;
} }
Cofig cofig = cofigs.get(0); Cofig cofig = cofigs.get(0);
withDrawRuleVo = JSON.parseObject(cofig.getParams(),WithDrawRuleVo.class); withDrawRuleVo = JSON.parseObject(cofig.getParams(), WithDrawRuleVo.class);
withDrawRuleVo.setDescription(cofig.getValue()); withDrawRuleVo.setDescription(cofig.getValue());
return withDrawRuleVo; return withDrawRuleVo;
} }
public void updateConfigStatus(int id) { public void updateConfigStatus(int id) {
...@@ -72,10 +77,10 @@ public class CofigBiz extends BaseBiz<CofigMapper,Cofig> { ...@@ -72,10 +77,10 @@ public class CofigBiz extends BaseBiz<CofigMapper,Cofig> {
Query query = new Query(params); Query query = new Query(params);
Example example = new Example(Cofig.class); Example example = new Example(Cofig.class);
Example.Criteria criteria = example.createCriteria(); Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("isDel",0); criteria.andEqualTo("isDel", 0);
PageDataVO<Cofig> cofigPage = PageDataVO.pageInfo(query.getPage(), query.getLimit(), () -> mapper.selectByExample(example)); PageDataVO<Cofig> cofigPage = PageDataVO.pageInfo(query.getPage(), query.getLimit(), () -> mapper.selectByExample(example));
return new TableResultResponse<>(cofigPage.getTotalCount(),cofigPage.getData()) ; return new TableResultResponse<>(cofigPage.getTotalCount(), cofigPage.getData());
} }
} }
\ No newline at end of file
...@@ -12,6 +12,7 @@ public enum ItemTypeEnum { ...@@ -12,6 +12,7 @@ public enum ItemTypeEnum {
TOUR_CHILD(202, "旅游儿童"), TOUR_CHILD(202, "旅游儿童"),
TOUR_INSURE(203, "旅游保险"), TOUR_INSURE(203, "旅游保险"),
MEMBER(301, "会员"), MEMBER(301, "会员"),
ACCOMPANY(104, "随车物品"),
; ;
/** /**
* 编码 * 编码
......
package com.xxfc.platform.order.entity;
import lombok.Data;
import javax.persistence.Column;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
@Data
public class DailyOrderStatistics {
@Column(name = "one_day")
private System oneDay;
@Column(name = "total_orders")
private BigInteger totalOrders;
@Column(name = "actual_total_income")
private BigDecimal actualTotalIncome;
}
package com.xxfc.platform.order.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.joda.time.DateTime;
import org.springframework.format.annotation.DateTimeFormat;
import tk.mybatis.mapper.annotation.KeySql;
import tk.mybatis.mapper.code.IdentityDialect;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
/**
* 每日租车订单统计
* @author Administrator
*/
@Data
@Table(name = "daily_vehicle_order_statistics")
public class DailyVehicleOrderStatistics {
@Id
@GeneratedValue(generator = "JDBC")
private Integer id;
/**
* 日期
*/
@Column(name = "one_day")
private String oneDay;
/**
* 成交总金额
*/
@Column(name = "gmv")
private BigDecimal gmv;
/**
* 预交押金总额
*/
@Column(name = "security_deposit")
private BigDecimal securityDeposit;
/**
* 退还押金总额
*/
@Column(name = "refund_security_deposit")
private BigDecimal refundSecurityDeposit;
/**
* 赔偿总额
*/
@Column(name = "compensation")
private BigDecimal compensation;
/**
* 违章总额
*/
@Column(name = "forfeit")
private BigDecimal violationMoney;
/**
* 取消订单总额
*/
@Column(name = "penal_sum")
private BigDecimal penalSum;
/**
* 延期总额
*/
@Column(name = "postpone")
private BigDecimal postpone;
/**
* 创建时间
*/
@Column(name = "crt_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date crtTime;
}
...@@ -57,4 +57,12 @@ public class DepositRefundRecord { ...@@ -57,4 +57,12 @@ public class DepositRefundRecord {
* 是否完成 * 是否完成
*/ */
private Boolean iscomplete; private Boolean iscomplete;
/**
* 违章记录
*/
@Transient
OrderViolation orderViolation;
@Transient
Long rentDepositAutoRefundTime;
} }
\ No newline at end of file
...@@ -4,6 +4,9 @@ import java.io.Serializable; ...@@ -4,6 +4,9 @@ import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import javax.persistence.*; import javax.persistence.*;
import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum;
import com.xxfc.platform.vehicle.constant.AccompanyingItemType;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -50,10 +53,10 @@ public class OrderItem implements Serializable { ...@@ -50,10 +53,10 @@ public class OrderItem implements Serializable {
private String name; private String name;
/** /**
* item 类型 1--租车车型 2--车损免赔 3--司机费用 4--旅游项目 5--旅游保险 6--会员 * item 类型 ,详见{@link ItemTypeEnum}
*/ */
@Column(name = "type") @Column(name = "type")
@ApiModelProperty(value = "item 类型 1--租车车型 2--车损免赔 3--司机费用 4--旅游项目 5--旅游保险 6--会员") @ApiModelProperty(value = "item 类型 1--租车车型 2--车损免赔 3--司机费用 4--旅游项目 5--旅游保险 6--会员 7--随车物品")
private Integer type; private Integer type;
/** /**
...@@ -126,6 +129,10 @@ public class OrderItem implements Serializable { ...@@ -126,6 +129,10 @@ public class OrderItem implements Serializable {
@ApiModelProperty(value = "订单id") @ApiModelProperty(value = "订单id")
private Integer orderId; private Integer orderId;
@Column(name = "detail")
@ApiModelProperty(value = "描述、详情")
private String detail;
public Integer getCalculateNum() { public Integer getCalculateNum() {
return buyNum - cutNum; return buyNum - cutNum;
......
package com.xxfc.platform.order.pojo; package com.xxfc.platform.order.pojo;
import com.xxfc.platform.activity.entity.ActivityPopularizeItem;
import com.xxfc.platform.vehicle.constant.AccompanyingItemType;
import com.xxfc.platform.vehicle.entity.AccompanyingItem;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -8,6 +11,8 @@ import java.time.Instant; ...@@ -8,6 +11,8 @@ import java.time.Instant;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.stream.Collectors;
@Data @Data
public class AddRentVehicleDTO extends AddOrderCommonDTO{ public class AddRentVehicleDTO extends AddOrderCommonDTO{
...@@ -100,6 +105,12 @@ public class AddRentVehicleDTO extends AddOrderCommonDTO{ ...@@ -100,6 +105,12 @@ public class AddRentVehicleDTO extends AddOrderCommonDTO{
@ApiModelProperty(value = "优惠卷卷号") @ApiModelProperty(value = "优惠卷卷号")
private String tickerNos; private String tickerNos;
@ApiModelProperty(value = "随车物品")
private List<String> accompanyStrs;
@ApiModelProperty(value = "随车物品", hidden = true)
private List<OrderAccompanyDTO> accompanyItems;
public void setStartTime(Long startTime) { public void setStartTime(Long startTime) {
this.startTime = startTime; this.startTime = startTime;
this.bookStartDate = DEFAULT_DATE_TIME_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(startTime), ZoneOffset.ofHours(8))); this.bookStartDate = DEFAULT_DATE_TIME_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(startTime), ZoneOffset.ofHours(8)));
...@@ -109,4 +120,20 @@ public class AddRentVehicleDTO extends AddOrderCommonDTO{ ...@@ -109,4 +120,20 @@ public class AddRentVehicleDTO extends AddOrderCommonDTO{
this.endTime = endTime; this.endTime = endTime;
this.bookEndDate = DEFAULT_DATE_TIME_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(endTime), ZoneOffset.ofHours(8))); this.bookEndDate = DEFAULT_DATE_TIME_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(endTime), ZoneOffset.ofHours(8)));
} }
public void setAccompanyStrs(List<String> accompanyStrs) {
this.accompanyStrs = accompanyStrs;
if(null != accompanyStrs) {
this.accompanyItems = this.accompanyStrs.parallelStream().map(str -> {
String[] strs = str.split(",");
if(strs.length < 2) {
return null;
}
OrderAccompanyDTO item = new OrderAccompanyDTO();
item.setId(Integer.valueOf(strs[0]));
item.setNum(Integer.valueOf(strs[1]));
return item;
}).collect(Collectors.toList());
}
}
} }
package com.xxfc.platform.order.pojo;
public class DepositeRefundRecordVo {
}
package com.xxfc.platform.order.pojo;
import com.xxfc.platform.vehicle.entity.AccompanyingItem;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class OrderAccompanyDTO {
/**
* 物品id
*/
private Integer id;
/**
* 物品名称
*/
private String name;
/**
* 物品数量
*/
private Integer num;
/**
* 物品单位
*/
private String unit;
/**
* 物品单价
*/
private BigDecimal unitPrice;
/**
* 物品总价
*/
private BigDecimal totalAmount;
}
...@@ -24,4 +24,7 @@ public class OrderAboutParamDTO { ...@@ -24,4 +24,7 @@ public class OrderAboutParamDTO {
@ApiModelProperty(value = "免赔费用") @ApiModelProperty(value = "免赔费用")
private BigDecimal damageSafe; private BigDecimal damageSafe;
// @ApiModelProperty(value = "违章保留金")
// private BigDecimal ;
} }
\ No newline at end of file
package com.xxfc.platform.order.pojo.order; package com.xxfc.platform.order.pojo.order;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.entity.OrderMemberDetail;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.entity.OrderTourDetail;
import com.xxfc.platform.vehicle.entity.VehicleUserLicense; import com.xxfc.platform.vehicle.entity.VehicleUserLicense;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map;
@Data @Data
public class OrderPageVO extends BaseOrder { public class OrderPageVO extends BaseOrder {
...@@ -24,8 +20,19 @@ public class OrderPageVO extends BaseOrder { ...@@ -24,8 +20,19 @@ public class OrderPageVO extends BaseOrder {
List<VehicleUserLicense> vehicleUserLicenses; List<VehicleUserLicense> vehicleUserLicenses;
/**
* 用户名
*/
private String username; private String username;
/**
* 是否是用户匹配公司
*/
private boolean userCompanyStatus = false;
/**
* 车牌
*/
private String vehicalNumberPlat; private String vehicalNumberPlat;
private String qrcodeStr; private String qrcodeStr;
...@@ -35,8 +42,13 @@ public class OrderPageVO extends BaseOrder { ...@@ -35,8 +42,13 @@ public class OrderPageVO extends BaseOrder {
*/ */
private BigDecimal illegalReserve; private BigDecimal illegalReserve;
/**
* 出交车记录
*/
private OrderVehicleCrosstownDto orderVehicleCrosstownDto; private OrderVehicleCrosstownDto orderVehicleCrosstownDto;
private List<OrderItem> items;
public void setQrcodeStr(String prefix) { public void setQrcodeStr(String prefix) {
this.qrcodeStr = prefix+ "?"+ TYPE+ getType()+ "&"+ NO+ getNo(); this.qrcodeStr = prefix+ "?"+ TYPE+ getType()+ "&"+ NO+ getNo();
} }
......
package com.xxfc.platform.order.pojo.order; package com.xxfc.platform.order.pojo.order;
import com.xxfc.platform.order.entity.DepositRefundRecord;
import com.xxfc.platform.order.entity.OrderVehicleCrosstown; import com.xxfc.platform.order.entity.OrderVehicleCrosstown;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class OrderVehicleCrosstownDto extends OrderVehicleCrosstown { public class OrderVehicleCrosstownDto extends OrderVehicleCrosstown {
String userLicenses; String userLicenses;
...@@ -30,5 +33,5 @@ public class OrderVehicleCrosstownDto extends OrderVehicleCrosstown { ...@@ -30,5 +33,5 @@ public class OrderVehicleCrosstownDto extends OrderVehicleCrosstown {
private String username; private String username;
List<DepositRefundRecord> depositRefundRecord;
} }
...@@ -6,6 +6,7 @@ import com.xxfc.platform.order.entity.BaseOrder; ...@@ -6,6 +6,7 @@ import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderItem; import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.entity.inter.OrderDetail; import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail; import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.pojo.OrderAccompanyDTO;
import com.xxfc.platform.vehicle.entity.VehicleModel; import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.pojo.BookVehicleVO; import com.xxfc.platform.vehicle.pojo.BookVehicleVO;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -38,4 +39,7 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail ...@@ -38,4 +39,7 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail
* 订单子项 * 订单子项
*/ */
List<OrderItem> items; List<OrderItem> items;
@ApiModelProperty(value = "随车物品", hidden = true)
private List<OrderAccompanyDTO> accompanyItems;
} }
package com.xxfc.platform.order.biz;
import com.alibaba.fastjson.JSON;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.order.entity.DailyVehicleOrderStatistics;
import com.xxfc.platform.order.mapper.DailyVehicleOrderStatisticsMapper;
import com.xxfc.platform.order.pojo.DedDetailDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderStatisticsMapper, DailyVehicleOrderStatistics> {
private final Integer TYPE_DEFERRED = 1;
private final Integer TYPE_DAMAGE = 2;
@Transactional(rollbackFor = Exception.class)
public boolean getTotalOrder() {
try {
HashMap<String, Object> resultMap = new HashMap<>();
// 获取每日租车订单成交金和押金总额
Map<String, BigDecimal> gmvAndMarginTotal = mapper.getGmvAndMarginTotal();
resultMap.putAll(gmvAndMarginTotal);
// 获取车辆
BigDecimal penalSum = mapper.getPenalSum();
resultMap.put("penalSum", penalSum);
// 获取订单退还押金总额
BigDecimal refundSecurityDeposit = mapper.getRefundSecurityDeposit();
resultMap.put("refundSecurityDeposit", refundSecurityDeposit);
// 获取违章查询总和
BigDecimal violationMoney = mapper.getViolationMoney();
resultMap.put("violationMoney", violationMoney);
// 获取赔偿和延期JSON字符串
List<String> compensationAndPostpone = mapper.getCompensationAndPostpone();
// 获取赔偿和延期JSON字符串转换为map
Map<String, BigDecimal> cpMap = getCompensationAndPostponeMap(compensationAndPostpone);
resultMap.putAll(cpMap);
DailyVehicleOrderStatistics orderStatistics = new DailyVehicleOrderStatistics();
BeanUtils.copyProperties(orderStatistics, resultMap);
super.insertSelective(orderStatistics);
return true;
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
}
}
/**
* 获取赔偿总额和延期总额
*/
private Map<String, BigDecimal> getCompensationAndPostponeMap(List<String> compensationAndPostpone) {
if (CollectionUtils.isNotEmpty(compensationAndPostpone)) {
List<DedDetailDTO> sumDedDetailDTOs = new ArrayList<>();
for (String value : compensationAndPostpone) {
List<DedDetailDTO> dedDetailDTOS = JSON.parseArray(value, DedDetailDTO.class);
sumDedDetailDTOs.addAll(dedDetailDTOS);
}
// 获取赔偿金额总和
BigDecimal compensation = get(sumDedDetailDTOs, TYPE_DAMAGE);
// 获取延期金额总和
BigDecimal postpone = get(sumDedDetailDTOs, TYPE_DEFERRED);
Map<String, BigDecimal> resultMap = new HashMap<>();
resultMap.put("compensation", compensation);
resultMap.put("postpone", postpone);
return resultMap;
}
return new HashMap<String, BigDecimal>();
}
/**
* 根据type获取对应的金额总和
*
* @param sumDedDetailDTOs
* @param TYPE_DAMAGE
* @return
*/
private BigDecimal get(List<DedDetailDTO> sumDedDetailDTOs, Integer TYPE_DAMAGE) {
if (CollectionUtils.isNotEmpty(sumDedDetailDTOs)) {
BigDecimal aggregateAmount = sumDedDetailDTOs.stream()
.filter(d -> TYPE_DAMAGE.equals(d.getType()))
.map(DedDetailDTO::getCost)
.reduce(BigDecimal.ZERO, BigDecimal::add);
return aggregateAmount;
}
return null;
}
// @Scheduled(cron = "0 0 2 * * ? ")
// private void countDailyOrdersRegularly(){
// DailyOrderStatistics dailyOrderStatistics= mapper.getTotalOrder();
// }
}
package com.xxfc.platform.order.biz; package com.xxfc.platform.order.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.biz.BaseBiz;
import com.xxfc.platform.order.contant.enumerate.CrosstownTypeEnum;
import com.xxfc.platform.order.contant.enumerate.DepositRefundStatus; import com.xxfc.platform.order.contant.enumerate.DepositRefundStatus;
import com.xxfc.platform.order.entity.DepositRefundRecord; import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.mapper.DepositRefundRecordMapper; import com.xxfc.platform.order.mapper.DepositRefundRecordMapper;
import com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto;
import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.entity.Dictionary;
import com.xxfc.platform.universal.feign.ThirdFeign;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
@Service @Service
@Transactional @Slf4j
public class OrderDepositRefundRecordBiz extends BaseBiz<DepositRefundRecordMapper, DepositRefundRecord> { public class OrderDepositRefundRecordBiz extends BaseBiz<DepositRefundRecordMapper, DepositRefundRecord> {
@Autowired
ThirdFeign thirdFeign;
@Autowired
BaseOrderBiz baseOrderBiz;
@Autowired
OrderRentVehicleBiz orderRentVehicleBiz;
@Autowired
OrderVehicleCrosstownBiz orderVehicleCrosstownBiz;
@Autowired
OrderViolationBiz orderViolationBiz;
/** /**
* 添加正常记录 * 添加正常记录
*/ */
@Transactional
public void saveNormalRecord(DepositRefundRecord depositRefundRecord) { public void saveNormalRecord(DepositRefundRecord depositRefundRecord) {
depositRefundRecord.setStatus(DepositRefundStatus.INITIATEREFUND.getCode()); depositRefundRecord.setStatus(DepositRefundStatus.INITIATEREFUND.getCode());
depositRefundRecord.setIscomplete(true); depositRefundRecord.setIscomplete(true);
...@@ -25,6 +50,7 @@ public class OrderDepositRefundRecordBiz extends BaseBiz<DepositRefundRecordMapp ...@@ -25,6 +50,7 @@ public class OrderDepositRefundRecordBiz extends BaseBiz<DepositRefundRecordMapp
depositRefundRecord.setIscomplete(false); depositRefundRecord.setIscomplete(false);
insertSelectiveRe(depositRefundRecord); insertSelectiveRe(depositRefundRecord);
depositRefundRecord.setStatus(DepositRefundStatus.VIOLATIONARRIVAL.getCode()); depositRefundRecord.setStatus(DepositRefundStatus.VIOLATIONARRIVAL.getCode());
depositRefundRecord.setRestAmount(getAmount());
insertSelectiveRe(depositRefundRecord); insertSelectiveRe(depositRefundRecord);
} }
...@@ -32,6 +58,7 @@ public class OrderDepositRefundRecordBiz extends BaseBiz<DepositRefundRecordMapp ...@@ -32,6 +58,7 @@ public class OrderDepositRefundRecordBiz extends BaseBiz<DepositRefundRecordMapp
* 添加定损记录 * 添加定损记录
* @param depositRefundRecord * @param depositRefundRecord
*/ */
@Transactional
public void saveFixLossRecord(DepositRefundRecord depositRefundRecord) { public void saveFixLossRecord(DepositRefundRecord depositRefundRecord) {
depositRefundRecord.setStatus(DepositRefundStatus.FIXLOSS.getCode()); depositRefundRecord.setStatus(DepositRefundStatus.FIXLOSS.getCode());
depositRefundRecord.setIscomplete(true); depositRefundRecord.setIscomplete(true);
...@@ -42,6 +69,7 @@ public class OrderDepositRefundRecordBiz extends BaseBiz<DepositRefundRecordMapp ...@@ -42,6 +69,7 @@ public class OrderDepositRefundRecordBiz extends BaseBiz<DepositRefundRecordMapp
depositRefundRecord.setStatus(DepositRefundStatus.FIXLOSSREFUNDARRIVAL.getCode()); depositRefundRecord.setStatus(DepositRefundStatus.FIXLOSSREFUNDARRIVAL.getCode());
insertSelectiveRe(depositRefundRecord); insertSelectiveRe(depositRefundRecord);
depositRefundRecord.setStatus(DepositRefundStatus.VIOLATIONARRIVAL.getCode()); depositRefundRecord.setStatus(DepositRefundStatus.VIOLATIONARRIVAL.getCode());
depositRefundRecord.setRestAmount(getAmount());
insertSelectiveRe(depositRefundRecord); insertSelectiveRe(depositRefundRecord);
} }
...@@ -52,4 +80,74 @@ public class OrderDepositRefundRecordBiz extends BaseBiz<DepositRefundRecordMapp ...@@ -52,4 +80,74 @@ public class OrderDepositRefundRecordBiz extends BaseBiz<DepositRefundRecordMapp
return mapper.findByCrossIdAndStatus(map); return mapper.findByCrossIdAndStatus(map);
} }
public List<DepositRefundRecord> selectByCrossId(Integer cross) {
List<DepositRefundRecord> list = mapper.selectByCrossId(cross);
for(DepositRefundRecord depositRefundRecord : list) {
if(depositRefundRecord.getIscomplete() == true && depositRefundRecord.getStatus() == DepositRefundStatus.VIOLATIONARRIVAL.getCode()) {//查询违章记录
OrderVehicleCrosstown orderVehicleCrosstown = orderVehicleCrosstownBiz.selectById(depositRefundRecord.getCrosstownId());
if(orderVehicleCrosstown != null) {
BaseOrder baseOrder = baseOrderBiz.selectById(orderVehicleCrosstown.getOrderId());
if(baseOrder != null) {
OrderViolation orderViolation = orderViolationBiz.getOneByDetailId(baseOrder.getDetailId());
depositRefundRecord.setOrderViolation(orderViolation);
}
}
}
if(depositRefundRecord.getStatus() == DepositRefundStatus.VIOLATIONARRIVAL.getCode()) {
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
Integer rentDepositAutoRefundTime = new Integer(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.RENT_DEPOSIT_AUTO_REFUND_TIME).getDetail());
depositRefundRecord.setRentDepositAutoRefundTime(depositRefundRecord.getCrtTime() + (rentDepositAutoRefundTime == null?0:rentDepositAutoRefundTime*60*60*1000));
}
}
return list;
}
public void saveViolationDeposit(OrderViolation orderViolation) {
log.info("添加违章押金记录:orderViolation = {}", orderViolation.toString());
String logInfo = "";
OrderRentVehicleDetail orderRentVehicleDetail = orderRentVehicleBiz.selectById(orderViolation.getDetailId());
if(orderRentVehicleDetail != null) {
OrderVehicleCrosstownDto orderVehicleCrosstown = new OrderVehicleCrosstownDto();
orderVehicleCrosstown.setOrderId(orderRentVehicleDetail.getOrderId());
orderVehicleCrosstown.setType(CrosstownTypeEnum.ARRIVE.getCode());
OrderVehicleCrosstownDto orderVehicleCrosstownDto = orderVehicleCrosstownBiz.getByOrderId(orderVehicleCrosstown);
if(orderVehicleCrosstownDto != null) {
insertDeposit(orderVehicleCrosstownDto, orderViolation, logInfo);
} else {
orderVehicleCrosstown.setType(CrosstownTypeEnum.FIXED_LOSS.getCode());
OrderVehicleCrosstownDto depositCross = orderVehicleCrosstownBiz.getByOrderId(orderVehicleCrosstown);
insertDeposit(depositCross, orderViolation, logInfo);
logInfo = "还车记录不存在";
}
} else {
logInfo = "订单详情不存在";
}
log.info("添加违章押金记录失败:" + logInfo);
}
public BigDecimal getAmount() {
//设置保留金
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
BigDecimal illegalReserve = new BigDecimal(dictionaryMap.get(APP_ORDER + "_" + DictionaryKey.ILLEGAL_RESERVE).getDetail());
return illegalReserve;
}
public void insertDeposit(OrderVehicleCrosstownDto orderVehicleCrosstownDto, OrderViolation orderViolation, String logInfo) {
DepositRefundRecord depositRefundRecord = findByCrossIdAndStatus(orderVehicleCrosstownDto.getId(), DepositRefundStatus.VIOLATIONARRIVAL.getCode());
if(depositRefundRecord != null) {
DepositRefundRecord newValue = new DepositRefundRecord();
BeanUtil.copyProperties(depositRefundRecord, newValue, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
newValue.setAmount(orderViolation.getPrice());
newValue.setRestAmount(depositRefundRecord.getTotalAmount().subtract(orderViolation.getPrice()));//减去违章金之后的押金
newValue.setIscomplete(true);
newValue.setId(null);
insertSelectiveRe(newValue);
depositRefundRecord.setIsshow(false);
updateSelectiveByIdRe(depositRefundRecord);
} else {
logInfo = "押金记录不存在";
}
}
} }
package com.xxfc.platform.order.biz; package com.xxfc.platform.order.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.common.util.IntervalUtil; import com.github.wxiaoqi.security.common.util.IntervalUtil;
...@@ -196,10 +197,9 @@ public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> { ...@@ -196,10 +197,9 @@ public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> {
String refundTradeNo = null; String refundTradeNo = null;
//0 小于 退款金额 //0 小于 退款金额
if(BigDecimal.ZERO.compareTo(refundAmount) < 0) { if(BigDecimal.ZERO.compareTo(refundAmount) < 0) {
OrderRefundVo orv = new OrderRefundVo(){{ OrderRefundVo orv = new OrderRefundVo();
setAmount(baseOrder.getRealAmount().multiply(new BigDecimal("100")).intValue()); orv.setAmount(baseOrder.getRealAmount().multiply(new BigDecimal("100")).intValue());
setOrderNo(baseOrder.getNo()); orv.setOrderNo(baseOrder.getNo());
}};
orv.setRefundDesc(refundDesc+ refundAmount.toString()); orv.setRefundDesc(refundDesc+ refundAmount.toString());
orv.setRefundAmount(refundAmount.multiply(new BigDecimal("100")).intValue()); orv.setRefundAmount(refundAmount.multiply(new BigDecimal("100")).intValue());
refundTradeNo = thirdFeign.refund(orv).getData(); refundTradeNo = thirdFeign.refund(orv).getData();
...@@ -209,13 +209,13 @@ public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> { ...@@ -209,13 +209,13 @@ public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> {
Integer flag = addOrderRefund(baseOrder.getId(), refundDesc, originalRefundAmount, refundAmount, refundTradeNo, refundType); Integer flag = addOrderRefund(baseOrder.getId(), refundDesc, originalRefundAmount, refundAmount, refundTradeNo, refundType);
//更新订单的退款状态和退款时间 //更新订单的退款状态和退款时间
BaseOrder updateBaseOrder = new BaseOrder();
updateBaseOrder.setId(baseOrder.getId());
updateBaseOrder.setRefundStatus(refundStatus);
updateBaseOrder.setRefundTime(System.currentTimeMillis());
updateBaseOrder.setVersion(baseOrder.getVersion());
if(SYS_TRUE.equals(flag) && null != refundStatus) { if(SYS_TRUE.equals(flag) && null != refundStatus) {
baseOrderBiz.updateSelectiveByIdReT(new BaseOrder(){{ BeanUtil.copyProperties(baseOrderBiz.updateSelectiveByIdReT(updateBaseOrder), baseOrder);
setId(baseOrder.getId());
setRefundStatus(refundStatus);
setRefundTime(System.currentTimeMillis());
setVersion(baseOrder.getVersion());
}});
} }
} }
......
...@@ -28,11 +28,11 @@ public class OrderUserLicenseBiz extends BaseBiz<OrderUserLicenseMapper, OrderUs ...@@ -28,11 +28,11 @@ public class OrderUserLicenseBiz extends BaseBiz<OrderUserLicenseMapper, OrderUs
} }
OrderUserLicense oldValue = mapper.selectByLicenseIdCard(orderUserLicense.getLicenseIdCard()); OrderUserLicense oldValue = mapper.selectByLicenseIdCard(orderUserLicense.getLicenseIdCard());
if(oldValue == null) { if(oldValue == null) {
mapper.insertSelective(orderUserLicense); insertSelective(orderUserLicense);
return ObjectRestResponse.succ(mapper.selectByLicenseIdCard(orderUserLicense.getLicenseIdCard())); return ObjectRestResponse.succ(mapper.selectByLicenseIdCard(orderUserLicense.getLicenseIdCard()));
} }
BeanUtil.copyProperties(orderUserLicense, oldValue, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true)); BeanUtil.copyProperties(orderUserLicense, oldValue, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
mapper.updateByPrimaryKeySelective(oldValue); updateSelectiveByIdRe(oldValue);
return ObjectRestResponse.succ(mapper.selectByLicenseIdCard(oldValue.getLicenseIdCard())); return ObjectRestResponse.succ(mapper.selectByLicenseIdCard(oldValue.getLicenseIdCard()));
} }
......
...@@ -7,7 +7,6 @@ import com.xxfc.platform.order.entity.OrderRentVehicleDetail; ...@@ -7,7 +7,6 @@ import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.entity.OrderViolation; import com.xxfc.platform.order.entity.OrderViolation;
import com.xxfc.platform.order.mapper.OrderRentVehicleDetailMapper; import com.xxfc.platform.order.mapper.OrderRentVehicleDetailMapper;
import com.xxfc.platform.order.mapper.OrderViolationMapper; import com.xxfc.platform.order.mapper.OrderViolationMapper;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.RedisKey; import com.xxfc.platform.vehicle.constant.RedisKey;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
...@@ -24,14 +23,15 @@ import org.springframework.http.ResponseEntity; ...@@ -24,14 +23,15 @@ import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import tk.mybatis.mapper.common.Mapper;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/**订单违章记录biz /**
* 订单违章记录biz
*
* @author Administrator * @author Administrator
*/ */
@Service @Service
...@@ -41,14 +41,16 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat ...@@ -41,14 +41,16 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat
private OrderRentVehicleDetailMapper detailMapper; private OrderRentVehicleDetailMapper detailMapper;
@Value("order.violation.upload") @Value("order.violation.upload")
private String ovUpload; private String ovUpload;
public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd"); public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd");
@Autowired @Autowired
private RedisTemplate redisTemplate; private RedisTemplate redisTemplate;
/** /**
* 保存违章记录 * 保存违章记录
*
* @param orderViolation * @param orderViolation
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -59,10 +61,10 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat ...@@ -59,10 +61,10 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat
Map<String, Object> status = mapper.getOrderAndVehicleStatus(orderViolation.getDetailId()); Map<String, Object> status = mapper.getOrderAndVehicleStatus(orderViolation.getDetailId());
Integer orderStatus = (Integer) status.get("status"); Integer orderStatus = (Integer) status.get("status");
Integer refundStatus = (Integer) status.get("refundStatus"); Integer refundStatus = (Integer) status.get("refundStatus");
if (orderStatus>=6||(refundStatus<=2&&refundStatus!=1)) { if (orderStatus >= 6 || (refundStatus <= 2 && refundStatus != 1)) {
mapper.insertSelective(orderViolation); insertSelective(orderViolation);
detailMapper.updateByPrimaryKeySelective(orderRentVehicleDetail); detailMapper.updateByPrimaryKeySelective(orderRentVehicleDetail);
}else { } else {
throw new BaseException("The operation cannot be changed at this time"); throw new BaseException("The operation cannot be changed at this time");
} }
...@@ -70,6 +72,7 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat ...@@ -70,6 +72,7 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat
/** /**
* 修改违章记录 * 修改违章记录
*
* @param orderViolation * @param orderViolation
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -77,9 +80,9 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat ...@@ -77,9 +80,9 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat
Map<String, Object> status = mapper.getOrderAndVehicleStatus(orderViolation.getDetailId()); Map<String, Object> status = mapper.getOrderAndVehicleStatus(orderViolation.getDetailId());
Integer orderStatus = (Integer) status.get("status"); Integer orderStatus = (Integer) status.get("status");
Integer refundStatus = (Integer) status.get("refundStatus"); Integer refundStatus = (Integer) status.get("refundStatus");
if (orderStatus>=6||(refundStatus<=2&&refundStatus!=1)) { if (orderStatus >= 6 || (refundStatus <= 2 && refundStatus != 1)) {
mapper.updateByPrimaryKeySelective(orderViolation); updateSelectiveByIdRe(orderViolation);
}else { } else {
throw new BaseException("The operation cannot be changed at this time"); throw new BaseException("The operation cannot be changed at this time");
} }
...@@ -87,14 +90,14 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat ...@@ -87,14 +90,14 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat
public ObjectRestResponse uploadViolation(MultipartFile file) throws IOException { public ObjectRestResponse uploadViolation(MultipartFile file) throws IOException {
DateTime now = DateTime.now(); DateTime now = DateTime.now();
String dirPathToday = File.separator + now.toString(DEFAULT_DATE_TIME_FORMATTER); String dirPathToday = File.separator + now.toString(DEFAULT_DATE_TIME_FORMATTER);
String redisNoKey = RedisKey.UPLOAD_FILE_NO_PREFIX + now.toString(DEFAULT_DATE_TIME_FORMATTER); String redisNoKey = RedisKey.UPLOAD_FILE_NO_PREFIX + now.toString(DEFAULT_DATE_TIME_FORMATTER);
Long no = redisTemplate.opsForValue().increment(redisNoKey); Long no = redisTemplate.opsForValue().increment(redisNoKey);
if(no.equals(1L)){ if (no.equals(1L)) {
redisTemplate.expire(redisNoKey,1, TimeUnit.DAYS); redisTemplate.expire(redisNoKey, 1, TimeUnit.DAYS);
} }
String fileName = file.getOriginalFilename(); String fileName = file.getOriginalFilename();
String realFileRelPath = dirPathToday + File.separator+no+fileName.substring(fileName.lastIndexOf(".")); String realFileRelPath = dirPathToday + File.separator + no + fileName.substring(fileName.lastIndexOf("."));
String filePath = ovUpload + realFileRelPath; String filePath = ovUpload + realFileRelPath;
...@@ -105,18 +108,26 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat ...@@ -105,18 +108,26 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat
/** /**
* 下载行驶证图片 * 下载行驶证图片
*
* @param realFileRelPath * @param realFileRelPath
* @return * @return
* @throws Exception * @throws Exception
*/ */
public ResponseEntity<byte[]> downloadViolation(String realFileRelPath) throws Exception{ public ResponseEntity<byte[]> downloadViolation(String realFileRelPath) throws Exception {
String filePath = ovUpload + realFileRelPath; String filePath = ovUpload + realFileRelPath;
File file = new File(filePath);//新建一个文件 File file = new File(filePath);//新建一个文件
HttpHeaders headers = new HttpHeaders();//http头信息 HttpHeaders headers = new HttpHeaders();//http头信息
String downloadFileName = new String(file.getName());//设置编码 String downloadFileName = new String(file.getName());//设置编码
headers.setContentDispositionFormData("attachment", downloadFileName); headers.setContentDispositionFormData("attachment", downloadFileName);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED); return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
} }
/**
* 根据订单详情查询违章记录
*/
public OrderViolation getOneByDetailId(Integer detailId) {
return mapper.getOneByDetailId(detailId);
}
} }
...@@ -44,7 +44,7 @@ public class FeignHeadConfiguration { ...@@ -44,7 +44,7 @@ public class FeignHeadConfiguration {
log.debug("添加自定义请求头key:" + name + ",value:" + value); log.debug("添加自定义请求头key:" + name + ",value:" + value);
requestTemplate.header(name, value); requestTemplate.header(name, value);
} else { } else {
log.debug("FeignHeadConfiguration", "非自定义请求头key:" + name + ",value:" + value + "不需要添加!"); //log.debug("FeignHeadConfiguration", "非自定义请求头key:" + name + ",value:" + value + "不需要添加!");
} }
} }
} else { } else {
......
...@@ -57,7 +57,8 @@ public class WebConfiguration implements WebMvcConfigurer { ...@@ -57,7 +57,8 @@ public class WebConfiguration implements WebMvcConfigurer {
"/baseOrder/**", "/baseOrder/**",
"/orderTour/**", "/orderTour/**",
"/orderMember/**", "/orderMember/**",
"/orderRefund/**" "/orderRefund/**",
"/orderVehicle/**"
}; };
Collections.addAll(list, urls); Collections.addAll(list, urls);
return list; return list;
......
package com.xxfc.platform.order.jobhandler; package com.xxfc.platform.order.jobhandler;
import com.xxfc.platform.order.biz.BaseOrderBiz; import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.entity.DailyOrderStatistics; import com.xxfc.platform.order.biz.DailyVehicleOrderStatisticsBiz;
import com.xxfc.platform.order.mapper.BaseOrderMapper;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler; import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler; import com.xxl.job.core.handler.annotation.JobHandler;
...@@ -14,22 +13,23 @@ import org.springframework.stereotype.Component; ...@@ -14,22 +13,23 @@ import org.springframework.stereotype.Component;
/** /**
* 每天2定时统计前一天的数据 * 每天2定时统计前一天的数据
*/ */
@JobHandler(value = "baseOrderStatistics") @JobHandler(value = "baseOrderStatisticsHandler")
@Component @Component
@Slf4j @Slf4j
public class BaseOrderStatisticsJobHandler extends IJobHandler { public class BaseOrderStatisticsJobHandler extends IJobHandler {
@Autowired @Autowired
private BaseOrderBiz baseOrderBiz; private DailyVehicleOrderStatisticsBiz statisticsBiz;
@Override @Override
public ReturnT<String> execute(String s) throws Exception { public ReturnT<String> execute(String s) throws Exception {
try { try {
baseOrderBiz.getTotalOrder();
XxlJobLogger.log("-----定时器进入---baseOrderStatisticsHandler---");
ReturnT returnT = new ReturnT(){{ // log.info("-----定时器进入---baseOrderStatisticsHandler---");
setCode(100); statisticsBiz.getTotalOrder();
setMsg("成功"); ReturnT returnT = new ReturnT();
}}; returnT.setCode(100);
returnT.setMsg("成功");
return returnT; return returnT;
} catch (Exception e) { } catch (Exception e) {
XxlJobLogger.log(e); XxlJobLogger.log(e);
......
package com.xxfc.platform.order.mapper; package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.DailyOrderStatistics;
import com.xxfc.platform.order.pojo.order.OrderListVo; import com.xxfc.platform.order.pojo.order.OrderListVo;
import com.xxfc.platform.order.pojo.order.OrderPageVO; import com.xxfc.platform.order.pojo.order.OrderPageVO;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -28,5 +28,4 @@ public interface BaseOrderMapper extends Mapper<BaseOrder> { ...@@ -28,5 +28,4 @@ public interface BaseOrderMapper extends Mapper<BaseOrder> {
public OrderPageVO getOrderDetail(String no); public OrderPageVO getOrderDetail(String no);
DailyOrderStatistics getTotalOrder();
} }
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.DailyVehicleOrderStatistics;
import tk.mybatis.mapper.common.Mapper;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
* 每日统计数据
* @author Administrator
*/
public interface DailyVehicleOrderStatisticsMapper extends Mapper<DailyVehicleOrderStatistics> {
Map<String, BigDecimal> getGmvAndMarginTotal();
List<String> getCompensationAndPostpone();
BigDecimal getPenalSum();
BigDecimal getRefundSecurityDeposit();
BigDecimal getViolationMoney();
}
...@@ -3,8 +3,10 @@ package com.xxfc.platform.order.mapper; ...@@ -3,8 +3,10 @@ package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.DepositRefundRecord; import com.xxfc.platform.order.entity.DepositRefundRecord;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List;
import java.util.Map; import java.util.Map;
public interface DepositRefundRecordMapper extends Mapper<DepositRefundRecord> { public interface DepositRefundRecordMapper extends Mapper<DepositRefundRecord> {
DepositRefundRecord findByCrossIdAndStatus(Map<String, Object> map); DepositRefundRecord findByCrossIdAndStatus(Map<String, Object> map);
List<DepositRefundRecord> selectByCrossId(Integer crossId);
} }
\ No newline at end of file
...@@ -5,9 +5,10 @@ import com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto; ...@@ -5,9 +5,10 @@ import com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto;
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 OrderVehicaleCrosstownMapper extends Mapper<OrderVehicleCrosstown> { public interface OrderVehicaleCrosstownMapper extends Mapper<OrderVehicleCrosstown> {
List<OrderVehicleCrosstownDto> selectByOrderId(OrderVehicleCrosstownDto orderVehicleCrosstownDto); List<OrderVehicleCrosstownDto> selectByOrderId(OrderVehicleCrosstownDto orderVehicleCrosstownDto);
OrderVehicleCrosstownDto selectByOrderNo(Map<String, Object> map);
} }
\ No newline at end of file
...@@ -12,4 +12,6 @@ import java.util.Map; ...@@ -12,4 +12,6 @@ import java.util.Map;
public interface OrderViolationMapper extends Mapper<OrderViolation> { public interface OrderViolationMapper extends Mapper<OrderViolation> {
Map<String,Object> getOrderAndVehicleStatus(@Param("vId") Integer detailId); Map<String,Object> getOrderAndVehicleStatus(@Param("vId") Integer detailId);
OrderViolation getOneByDetailId(Integer detailId);
} }
...@@ -61,6 +61,7 @@ public class OrderRentVehicleController extends CommonBaseController { ...@@ -61,6 +61,7 @@ public class OrderRentVehicleController extends CommonBaseController {
bo.setAppUserDTO(userFeign.userDetailByToken(BaseContextHandler.getToken()).getData()); bo.setAppUserDTO(userFeign.userDetailByToken(BaseContextHandler.getToken()).getData());
bo.setTickerNo(StrUtil.isNotBlank(vo.getTickerNos())? bo.setTickerNo(StrUtil.isNotBlank(vo.getTickerNos())?
StrUtil.splitTrim(vo.getTickerNos(), ","):null); StrUtil.splitTrim(vo.getTickerNos(), ","):null);
bo.setAccompanyItems(vo.getAccompanyItems());
orderRentVehicleService.createOrder(bo); orderRentVehicleService.createOrder(bo);
return ObjectRestResponse.succ(bo.getOrder()); return ObjectRestResponse.succ(bo.getOrder());
} }
......
...@@ -10,7 +10,6 @@ import io.swagger.annotations.Api; ...@@ -10,7 +10,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
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.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
...@@ -32,7 +31,6 @@ public class OrderVehicleCrosstownController { ...@@ -32,7 +31,6 @@ public class OrderVehicleCrosstownController {
@PostMapping(value = "/add") @PostMapping(value = "/add")
@ApiOperation(value = "添加交还车记录") @ApiOperation(value = "添加交还车记录")
@Transactional
public ObjectRestResponse<OrderVehicleCrosstownDto> add(@RequestBody OrderVehicleCrosstownDto orderVehicleCrosstownDto) { public ObjectRestResponse<OrderVehicleCrosstownDto> add(@RequestBody OrderVehicleCrosstownDto orderVehicleCrosstownDto) {
return orderVehicleCrosstownBiz.add(orderVehicleCrosstownDto); return orderVehicleCrosstownBiz.add(orderVehicleCrosstownDto);
...@@ -52,4 +50,13 @@ public class OrderVehicleCrosstownController { ...@@ -52,4 +50,13 @@ public class OrderVehicleCrosstownController {
} }
return ObjectRestResponse.succ(orderVehicleCrosstownBiz.selectByOrderId(orderVehicleCrosstownDto)); return ObjectRestResponse.succ(orderVehicleCrosstownBiz.selectByOrderId(orderVehicleCrosstownDto));
} }
@GetMapping(value = "/getByOrderNo")
@ApiOperation(value = "根据订单号返回交车和押金记录")
public ObjectRestResponse getByOrderNo(String no) {
if (no == null) {
return ObjectRestResponse.createFailedResult(500, "参数orderId为空");
}
return ObjectRestResponse.succ(orderVehicleCrosstownBiz.selectByOrderNo(no));
}
} }
...@@ -3,12 +3,15 @@ package com.xxfc.platform.order.rest; ...@@ -3,12 +3,15 @@ package com.xxfc.platform.order.rest;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO; import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController; import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.biz.OrderDepositRefundRecordBiz;
import com.xxfc.platform.order.biz.OrderViolationBiz; import com.xxfc.platform.order.biz.OrderViolationBiz;
import com.xxfc.platform.order.entity.OrderViolation; import com.xxfc.platform.order.entity.OrderViolation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.util.Assert; import org.springframework.util.Assert;
...@@ -19,7 +22,6 @@ import tk.mybatis.mapper.weekend.WeekendSqls; ...@@ -19,7 +22,6 @@ import tk.mybatis.mapper.weekend.WeekendSqls;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigInteger; import java.math.BigInteger;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -29,25 +31,21 @@ import java.util.List; ...@@ -29,25 +31,21 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("orderViolation") @RequestMapping("orderViolation")
public class OrderViolationController extends BaseController<OrderViolationBiz, OrderViolation> { @Slf4j
public class OrderViolationController extends BaseController<OrderViolationBiz, OrderViolation> implements UserRestInterface {
@Autowired @Autowired
private UserFeign userFeign; private UserFeign userFeign;
@Autowired
OrderDepositRefundRecordBiz orderDepositRefundRecordBiz;
@Override
public UserFeign getUserFeign() {
return userFeign;
}
private Long MAX_DRIVING_LICENSE_SIZE = 1024 * 1024 * 50L; private Long MAX_DRIVING_LICENSE_SIZE = 1024 * 1024 * 50L;
private final String FILE_TYPE="JPG"; private final String FILE_TYPE="JPG";
/**
* 获取操作用户信息
*/
private UserDTO getUserDTO() {
ObjectRestResponse<UserDTO> orrUserDTO = userFeign.userinfoByToken(request.getHeader("Authorization"));
if (orrUserDTO == null || orrUserDTO.getData() == null || orrUserDTO.getData().getId() == null) {
throw new BaseException("This user does not exist");
}
UserDTO userDTOD = orrUserDTO.getData();
return userDTOD;
}
/** /**
* 保存违章记录 * 保存违章记录
...@@ -58,9 +56,8 @@ public class OrderViolationController extends BaseController<OrderViolationBiz, ...@@ -58,9 +56,8 @@ public class OrderViolationController extends BaseController<OrderViolationBiz,
*/ */
@PostMapping("/saveOrderViolation") @PostMapping("/saveOrderViolation")
public ObjectRestResponse saveOrderViolation(@RequestBody OrderViolation orderViolation, HttpServletRequest request) { public ObjectRestResponse saveOrderViolation(@RequestBody OrderViolation orderViolation, HttpServletRequest request) {
log.info("保存违章记录:orderViolation = {}", orderViolation.toString());
UserDTO userDTOD = getAdminUserInfo();
UserDTO userDTOD = getUserDTO();
if (orderViolation.getId()==null) { if (orderViolation.getId()==null) {
orderViolation.setIsDel(0); orderViolation.setIsDel(0);
orderViolation.setCrtHost(request.getRemoteHost()); orderViolation.setCrtHost(request.getRemoteHost());
......
...@@ -3,6 +3,7 @@ package com.xxfc.platform.order.service; ...@@ -3,6 +3,7 @@ package com.xxfc.platform.order.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Dict; import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.admin.constant.enumerate.MemberEnum; import com.github.wxiaoqi.security.admin.constant.enumerate.MemberEnum;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
...@@ -23,16 +24,19 @@ import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum; ...@@ -23,16 +24,19 @@ import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum; import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.OrderItem; import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.entity.OrderTemplate; import com.xxfc.platform.order.entity.OrderTemplate;
import com.xxfc.platform.order.pojo.OrderAccompanyDTO;
import com.xxfc.platform.order.pojo.order.RentVehicleBO; import com.xxfc.platform.order.pojo.order.RentVehicleBO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO; import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import com.xxfc.platform.universal.constant.DictionaryKey; import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.feign.ThirdFeign; import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.vehicle.entity.AccompanyingItem;
import com.xxfc.platform.vehicle.entity.BranchCompany; import com.xxfc.platform.vehicle.entity.BranchCompany;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord; import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import com.xxfc.platform.vehicle.entity.VehicleModel; import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.feign.VehicleFeign; import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.CompanyDetail; import com.xxfc.platform.vehicle.pojo.CompanyDetail;
import com.xxfc.platform.vehicle.pojo.RentVehicleBookDTO; import com.xxfc.platform.vehicle.pojo.RentVehicleBookDTO;
import com.xxfc.platform.vehicle.pojo.vo.AccompanyingItemVo;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -40,15 +44,13 @@ import org.springframework.stereotype.Service; ...@@ -40,15 +44,13 @@ import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.admin.constant.enumerate.MemberEnum.*; import static com.github.wxiaoqi.security.admin.constant.enumerate.MemberEnum.*;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE; import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE; import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.order.contant.enumerate.ItemTypeEnum.*;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER; import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
@Service @Service
...@@ -154,9 +156,30 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -154,9 +156,30 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
activityFeign.use(bo.getAppUserDTO().getUserid(), bo.getTickerNo(), bo.getOrder().getNo(), channel, amount, ActivityFeign.TYPE_USE); activityFeign.use(bo.getAppUserDTO().getUserid(), bo.getTickerNo(), bo.getOrder().getNo(), channel, amount, ActivityFeign.TYPE_USE);
} }
//插入随声物品item
Map<String, AccompanyingItemVo> accompanyingItemMap = vehicleFeign.listAccompanyingItem().getData()
.parallelStream().collect(Collectors.toMap(en -> en.getId().toString(), en -> en));
if(null == bo.getAccompanyItems()) {
bo.setAccompanyItems(new ArrayList<OrderAccompanyDTO>());
}
for(OrderAccompanyDTO oad : bo.getAccompanyItems()) {
AccompanyingItemVo aiv = accompanyingItemMap.get(oad.getId());
oad.setName(aiv.getName());
oad.setUnit(aiv.getUnit());
oad.setUnitPrice(aiv.getPrice());
oad.setNum(aiv.getNumber());
oad.setTotalAmount(oad.getUnitPrice().multiply(new BigDecimal(oad.getNum().toString())));
}
//获取可用车辆 //获取可用车辆
acquireVehicle(bo); acquireVehicle(bo);
OrderItem accompanyItem = orderItemBiz.initOrderItem(BigDecimal.ZERO, 1, "随车物品", null, ACCOMPANY);
accompanyItem.setRealAmount(BigDecimal.ZERO);
accompanyItem.setDetail(JSONUtil.toJsonStr(bo.getAccompanyItems()));
accompanyItem.setOrderId(bo.getOrder().getId());
orderItemBiz.insertSelective(accompanyItem);
super.handleDetail(bo); super.handleDetail(bo);
//发送定时取消订单(数据字典设置--5分钟) //发送定时取消订单(数据字典设置--5分钟)
...@@ -178,7 +201,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -178,7 +201,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
BigDecimal vehicleAmount = BigDecimal.ZERO; BigDecimal vehicleAmount = BigDecimal.ZERO;
BigDecimal driverAmount = BigDecimal.ZERO; BigDecimal driverAmount = BigDecimal.ZERO;
BigDecimal damageSafeAmount = BigDecimal.ZERO; BigDecimal damageSafeAmount = BigDecimal.ZERO;
BigDecimal modelAmount = BigDecimal.ZERO; // BigDecimal modelAmount = BigDecimal.ZERO;
BigDecimal couponAmount = BigDecimal.ZERO; BigDecimal couponAmount = BigDecimal.ZERO;
Integer vehicleDayNum = 0; Integer vehicleDayNum = 0;
Integer freeDayNum = 0; Integer freeDayNum = 0;
...@@ -243,8 +266,6 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -243,8 +266,6 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
} }
detail.setRebate(handleDiscountDTO.getRebate()); detail.setRebate(handleDiscountDTO.getRebate());
vehicleOrderItem.setUnitPrice(handleDiscountDTO.getModelAmount()); vehicleOrderItem.setUnitPrice(handleDiscountDTO.getModelAmount());
}else {
modelAmount = vehicleModel.getPrice();
} }
//如果有使用会员权益或者优惠券,则设置订单已优惠 //如果有使用会员权益或者优惠券,则设置订单已优惠
...@@ -300,7 +321,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -300,7 +321,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rvp.setDriverAmount(driverAmount); rvp.setDriverAmount(driverAmount);
rvp.setVehicleAmount(vehicleAmount); rvp.setVehicleAmount(vehicleAmount);
rvp.setDamageSafeAmount(damageSafeAmount); rvp.setDamageSafeAmount(damageSafeAmount);
rvp.setModelAmount(modelAmount); rvp.setModelAmount(vehicleOrderItem.getUnitPrice());
rvp.setVehicleDayNum(vehicleDayNum); rvp.setVehicleDayNum(vehicleDayNum);
//设置收费明细 //设置收费明细
...@@ -382,6 +403,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -382,6 +403,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rentVehicleBookDTO.setUserName(BaseContextHandler.getName()); rentVehicleBookDTO.setUserName(BaseContextHandler.getName());
rentVehicleBookDTO.setLiftCompany(detail.getStartCompanyId()); rentVehicleBookDTO.setLiftCompany(detail.getStartCompanyId());
rentVehicleBookDTO.setLiftAddr(detail.getStartAddr()); rentVehicleBookDTO.setLiftAddr(detail.getStartAddr());
if(null != detail.getAccompanyItems()) {
rentVehicleBookDTO.setSelectedAccItem(detail.getAccompanyItems().parallelStream().collect(Collectors.toMap(OrderAccompanyDTO::getId, OrderAccompanyDTO::getNum)));
}
ObjectRestResponse<VehicleBookRecord> orr = vehicleFeign.rentApplyVehicle(rentVehicleBookDTO); ObjectRestResponse<VehicleBookRecord> orr = vehicleFeign.rentApplyVehicle(rentVehicleBookDTO);
if(!CommonConstants.SYS_JSON_TRUE.equals(orr.getStatus())) { if(!CommonConstants.SYS_JSON_TRUE.equals(orr.getStatus())) {
throw new BaseException(orr.getMessage(), orr.getStatus()); throw new BaseException(orr.getMessage(), orr.getStatus());
......
...@@ -172,7 +172,11 @@ ...@@ -172,7 +172,11 @@
<if test="userId != null"> <if test="userId != null">
and b.user_id = #{userId} and b.user_id = #{userId}
</if> </if>
<if test="status != null"> <if test="status != null and status == -1">
AND b.status in (6,-1)
and b.refund_status in (0,2)
</if>
<if test="status != null and status != -1">
and b.status = #{status} and b.status = #{status}
</if> </if>
<if test="no != null"> <if test="no != null">
...@@ -181,13 +185,19 @@ ...@@ -181,13 +185,19 @@
<if test="startTime != null and status == 4"> <if test="startTime != null and status == 4">
and r.start_time between #{startTime} and #{endTime} and r.start_time between #{startTime} and #{endTime}
</if> </if>
<if test="startTime != null and status == 5"> <if test="startTime != null and (status == 5 || status == 6 || status == -1)">
and r.start_time between #{startTime} and #{endTime} and r.end_time between #{startTime} and #{endTime}
</if> </if>
<if test="startCompanyId != null"> <if test="startCompanyId != null">
and r.start_company_id = #{startCompanyId} and r.start_company_id = #{startCompanyId}
</if> </if>
order by b.crt_time desc <if test="status == 4">
order by r.start_time
</if>
<if test="status == 5 || status == -1">
order by r.end_time
</if>
</select> </select>
<select id="getTourList" parameterType="Map" resultMap="orderPageMap"> <select id="getTourList" parameterType="Map" resultMap="orderPageMap">
...@@ -219,33 +229,5 @@ ...@@ -219,33 +229,5 @@
where no = #{no} where no = #{no}
</select> </select>
<select id="getTotalOrder" resultType="com.xxfc.platform.order.entity.DailyOrderStatistics">
select
date_format(pay_time,'%Y-%c-%d') as oneDay,
sum(1) as totalOrders,
sum(pay_time)as actualTotalIncome
from
base_order
where
date(pay_time)=date(now())-1
group by
date_format(pay_time,'%d')
</select>
<!-- <select id="getTotalOrder" resultType="com.xxfc.platform.order.entity.DailyOrderStatistics">-->
<!-- select-->
<!-- date_format(refund_time,'%Y-%c-%d') as oneDay,-->
<!-- sum(1) as totalOrders,-->
<!-- sum(refund_time)as actualTotalIncome-->
<!-- from-->
<!-- base_order-->
<!-- where-->
<!-- date(refund_time)=date(now())-1-->
<!-- group by-->
<!-- date_format(refund_time,'%d')-->
<!-- </select>-->
</mapper> </mapper>
\ No newline at end of file
<?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.order.mapper.DailyVehicleOrderStatisticsMapper">
<!-- 获取每日租车订单成交金和押金总额-->
<select id="getGmvAndMarginTotal" resultType="HashMap">
select
COALESCE(date_format(FROM_UNIXTIME(b.pay_time/1000),'%Y-%c-%d'),date(DATE_SUB(now(),interval 1 day))) as oneDay,
IFNULL(SUM(b.real_amount-v.deposit),0) as gmv,
IFNULL(SUM(v.deposit),0) as marginTotal
from
base_order b
left join
order_rent_vehicle_detail v
on
b.id=v.order_id
where
b.type=1
AND
date(FROM_UNIXTIME(b.pay_time/1000))=date(DATE_SUB(now(),interval 1 day))
</select>
<!-- 退还押金总额-->
<select id="getRefundSecurityDeposit" resultType="BigDecimal">
SELECT
IFNULL(SUM(r.refund_amount),0) as refundSecurityDeposit
FROM
base_order o
left join
order_refund r
on
o.id=r.order_id
WHERE
o.type=1
and
r.refund_status=1
and
r.refund_type >1
and
date(FROM_UNIXTIME(r.refund_time/1000))=date(DATE_SUB(now(),interval 1 day))
</select>
<!-- 取消订单扣除款项总和-->
<select id="getPenalSum" resultType="BigDecimal">
SELECT
IFNULL(SUM(r.deduct_amount),0) as penalSum
FROM
base_order o
left join
order_refund r
on
o.id=r.order_id
WHERE
o.type=1
and
r.refund_status=1
and
r.refund_type =1
and
date(FROM_UNIXTIME(r.refund_time/1000))=date(DATE_SUB(now(),interval 1 day))
</select>
<!-- 获取赔偿和延期JSON字符串-->
<select id="getCompensationAndPostpone" resultType="List">
SELECT
ded_detail
FROM
order_refund r
LEFT JOIN
order_vehicle_crosstown c
on
r.order_id = c.order_id
WHERE
r.refund_status=1
and
r.refund_type = 3
and
c.type=2
and
date(FROM_UNIXTIME(refund_time/1000))=date(DATE_SUB(now(),interval 1 day))
</select>
<select id="getViolationMoney" resultType="BigDecimal">
SELECT
v.price
FROM
order_refund r
left JOIN
base_order o
on
o.id=r.order_id
LEFT JOIN
order_rent_vehicle_detail d
on
o.id = d.order_id
left join
order_violation v
on
d.id = v.detail_id
WHERE
r.refund_status=1
and
r.refund_type = 4
and
date(FROM_UNIXTIME(r.refund_time/1000))=date(DATE_SUB(now(),interval 1 day))
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?> <?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" > <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.xxfc.platform.order.mapper.DepositRefundRecordMapper" > <mapper namespace="com.xxfc.platform.order.mapper.DepositRefundRecordMapper">
<select id="findByCrossIdAndStatus" resultType="com.xxfc.platform.order.entity.DepositRefundRecord" parameterType="java.util.Map"> <select id="findByCrossIdAndStatus" resultType="com.xxfc.platform.order.entity.DepositRefundRecord"
parameterType="java.util.Map">
select * from deposit_refund_record select * from deposit_refund_record
where status = #{status} and crosstown_id = #{crossId} and isshow = 1 where status = #{status} and crosstown_id = #{crossId} and isshow = 1
</select> </select>
<select id="selectByCrossId" resultType="com.xxfc.platform.order.entity.DepositRefundRecord"
parameterType="java.lang.Integer">
select * from deposit_refund_record
where crosstown_id = #{crossId} and isshow = 1
order by status
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -27,7 +27,12 @@ ...@@ -27,7 +27,12 @@
<result column="rest_deposit" jdbcType="INTEGER" property="restDeposit"/> <result column="rest_deposit" jdbcType="INTEGER" property="restDeposit"/>
<result column="user_license_id" jdbcType="VARCHAR" property="userLicenseId"/> <result column="user_license_id" jdbcType="VARCHAR" property="userLicenseId"/>
</resultMap> </resultMap>
<resultMap id="orderMap" type="com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto">
<result column="id" javaType="java.lang.Integer" property="id"/>
<association column="id" property="depositRefundRecord"
select="com.xxfc.platform.order.mapper.DepositRefundRecordMapper.selectByCrossId"
javaType="com.xxfc.platform.order.entity.DepositRefundRecord"/>
</resultMap>
<select id="selectByOrderId" parameterType="com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto" resultType="com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto"> <select id="selectByOrderId" parameterType="com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto" resultType="com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto">
select * select *
from order_vehicle_crosstown from order_vehicle_crosstown
...@@ -46,4 +51,10 @@ ...@@ -46,4 +51,10 @@
</if> </if>
</where> </where>
</select> </select>
<select id="selectByOrderNo" parameterType="java.util.Map" resultType="com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto">
select *
from order_vehicle_crosstown
where order_no = #{no} and type = #{type}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -14,4 +14,9 @@ ...@@ -14,4 +14,9 @@
where where
v.id=#{vId} v.id=#{vId}
</select> </select>
<select id="getOneByDetailId" resultType="com.xxfc.platform.order.entity.OrderViolation" parameterType="java.lang.Integer">
select * from order_violation
where detail_id = #{detailId}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -192,7 +192,6 @@ public class TourGoodBiz extends BaseBiz<TourGoodMapper, TourGood> { ...@@ -192,7 +192,6 @@ public class TourGoodBiz extends BaseBiz<TourGoodMapper, TourGood> {
List<GoodSpePriceDTO> priceDTOList=dto.getPriceDTOS(); List<GoodSpePriceDTO> priceDTOList=dto.getPriceDTOS();
List<Integer> prices=new ArrayList<>(); List<Integer> prices=new ArrayList<>();
if(siteDTOList.size()>0){ if(siteDTOList.size()>0){
List<Integer> priceIds=new ArrayList<>();
for (GoodSpePriceDTO priceDTO:priceDTOList){ for (GoodSpePriceDTO priceDTO:priceDTOList){
Integer priceId=priceDTO.getId(); Integer priceId=priceDTO.getId();
TourGoodSpePrice spePrice=new TourGoodSpePrice(); TourGoodSpePrice spePrice=new TourGoodSpePrice();
...@@ -228,12 +227,11 @@ public class TourGoodBiz extends BaseBiz<TourGoodMapper, TourGood> { ...@@ -228,12 +227,11 @@ public class TourGoodBiz extends BaseBiz<TourGoodMapper, TourGood> {
priceId=spePrice.getId(); priceId=spePrice.getId();
}else { }else {
speBiz.updateSelectiveById(spePrice); speBiz.updateSelectiveById(spePrice);
priceIds.add(priceId);
} }
prices.add(priceId); prices.add(priceId);
} }
if(priceIds.size()>0){ if(prices.size()>0){
speBiz.delGoodSpe(goodId,priceIds); speBiz.delGoodSpe(goodId,prices);
} }
} }
if(sites.size()>0){ if(sites.size()>0){
......
...@@ -32,6 +32,39 @@ public class SmsTemplateDTO { ...@@ -32,6 +32,39 @@ public class SmsTemplateDTO {
//取消订单 //取消订单
public static final int CANCEL = 8; public static final int CANCEL = 8;
//租车(通用)
public static final int PAY_A = 10;
//租车(使用会员权益)
public static final int PAY_B = 11;
//租车内部通知(客服)
public static final int PAY_C = 12;
//租车内部通知(出车人)
public static final int PAY_D = 13;
//租车内部通知(收车人)
public static final int PAY_E = 14;
//旅游(通用)
public static final int PAY_F = 15;
//会员购买(通用)
public static final int PAY_G = 16;
//取消租车(通用)
public static final int CANCEL_A = 17;
//取消租车(使用会员权益)
public static final int CANCEL_B = 18;
//取消租车(通用扣违约金)
public static final int CANCEL_C = 19;
//取消租车(会员权益&扣违)
public static final int CANCEL_D = 20;
//取消租车(出车人)
public static final int CANCEL_E = 21;
//租车押金退还
public static final int FINISH_A = 22;
//违章押金退还
public static final int FINISH_B = 23;
//类型:1-租车订单通知(普通用户),2-租车订单短信(会员权益),3-旅游订单短信,4-加入会员通知 //类型:1-租车订单通知(普通用户),2-租车订单短信(会员权益),3-旅游订单短信,4-加入会员通知
private Integer type; private Integer type;
//手机号码(多个短信逗号隔开) //手机号码(多个短信逗号隔开)
......
...@@ -23,10 +23,45 @@ public class CCPRestSmsBiz{ ...@@ -23,10 +23,45 @@ public class CCPRestSmsBiz{
public static final String TEMPLATE_ID_DIFFERENT_TAAKE_CAR = "458621"; public static final String TEMPLATE_ID_DIFFERENT_TAAKE_CAR = "458621";
// 租/还车公司不同(发给还车公司负责人,订单出车后发))(相同不发)7 // 租/还车公司不同(发给还车公司负责人,订单出车后发))(相同不发)7
public static final String TEMPLATE_ID_ALSO_CAR = "458620"; public static final String TEMPLATE_ID_ALSO_CAR = "458620";
//取消订单8 //取消订单9
public static final String TEMPLATE_ID_CANCEL = "458627"; public static final String TEMPLATE_ID_CANCEL = "458627";
//租车(通用)10
public static final String TEMPLATE_ID_PAY_A = "460759";
//租车(使用会员权益)11
public static final String TEMPLATE_ID_PAY_B = "460760";
//租车内部通知(客服)12
public static final String TEMPLATE_ID_PAY_C = "460763";
//租车内部通知(出车人)13
public static final String TEMPLATE_ID_PAY_D = "460762";
//租车内部通知(收车人)14
public static final String TEMPLATE_ID_PAY_E = "460764";
//旅游(通用)15
public static final String TEMPLATE_ID_PAY_F = "460765";
//会员购买(通用)16
public static final String TEMPLATE_ID_PAY_G = "460766";
//取消租车(通用)17
public static final String TEMPLATE_ID_CANCEL_A= "460767";
//取消租车(使用会员权益)18
public static final String TEMPLATE_ID_CANCEL_B = "460768";
//取消租车(通用扣违约金)19
public static final String TEMPLATE_ID_CANCEL_C = "460769";
//取消租车(会员权益&扣违 20
public static final String TEMPLATE_ID_CANCEL_D = "460770";
//取消租车(出车人)21
public static final String TEMPLATE_ID_CANCEL_E = "460771";
//租车押金退还 22
public static final String TEMPLATE_ID_FINISH_A = "460772";
//违章押金退还 23
public static final String TEMPLATE_ID_FINISH_B = "460773";
//发送模板消息 //发送模板消息
public void sendTemplateSMS(Integer type,String phoneNumbers,String[]params){ public void sendTemplateSMS(Integer type,String phoneNumbers,String[]params){
switch (type){ switch (type){
...@@ -54,6 +89,49 @@ public class CCPRestSmsBiz{ ...@@ -54,6 +89,49 @@ public class CCPRestSmsBiz{
case 8 : case 8 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_CANCEL); CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_CANCEL);
break; break;
case 10 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_PAY_A);
break;
case 11:
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_PAY_B);
break;
case 12 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_PAY_C);
break;
case 13 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_PAY_D);
break;
case 14 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_PAY_E);
break;
case 15 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_PAY_F);
break;
case 16 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_PAY_G);
break;
case 17 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_CANCEL_A);
break;
case 18 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_CANCEL_B);
break;
case 19 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_CANCEL_C);
break;
case 20 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_CANCEL_D);
break;
case 21 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_CANCEL_E);
break;
case 22 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_FINISH_A);
break;
case 23 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_FINISH_B);
break;
} }
} }
......
...@@ -16,15 +16,13 @@ import org.apache.http.HttpResponse; ...@@ -16,15 +16,13 @@ import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
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.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
...@@ -208,8 +206,8 @@ public class TrafficViolationsService { ...@@ -208,8 +206,8 @@ public class TrafficViolationsService {
* 定时修改车牌类型 * 定时修改车牌类型
* @throws SQLException * @throws SQLException
*/ */
@Scheduled(cron = "0 0 0 0/7 * ?") // @Scheduled(cron = "0 0 0 0/7 * ?")
public void updateLicensePlateType() throws SQLException { private void updateLicensePlateType() throws SQLException {
List<LicensePlateType> licensePlateTypes = licensePlateTypeBiz.selectListAll(); List<LicensePlateType> licensePlateTypes = licensePlateTypeBiz.selectListAll();
licensePlateTypeBiz.updateLicensePlateType(licensePlateTypes); licensePlateTypeBiz.updateLicensePlateType(licensePlateTypes);
} }
......
...@@ -85,6 +85,8 @@ public class RedisKey { ...@@ -85,6 +85,8 @@ public class RedisKey {
// 随车物品相关key // 随车物品相关key
public static final String ACCOMPANYING_ITEM_CACHE_ALL ="cache:accompanyItem:all"; public static final String ACCOMPANYING_ITEM_CACHE_ALL ="cache:accompanyItem:all";
public static final String ACCOMPANYING_ITEM_CACHE_ALL_APP =ACCOMPANYING_ITEM_CACHE_ALL+ ":app";
/** /**
* 服务器上传文件序号 * 服务器上传文件序号
......
...@@ -5,6 +5,7 @@ import com.github.wxiaoqi.security.common.vo.GoodDataVO; ...@@ -5,6 +5,7 @@ import com.github.wxiaoqi.security.common.vo.GoodDataVO;
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.*;
import com.xxfc.platform.vehicle.pojo.vo.AccompanyingItemVo;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -20,7 +21,7 @@ public interface VehicleFeign { ...@@ -20,7 +21,7 @@ public interface VehicleFeign {
@GetMapping(value = "/vehicleModel/{id}") @GetMapping(value = "/vehicleModel/{id}")
public ObjectRestResponse<VehicleModel> get(@PathVariable(value = "id") int id); public ObjectRestResponse<VehicleModel> get(@PathVariable(value = "id") int id);
@GetMapping(value = "/vehicleInfo/{id}") @GetMapping(value = "/vehicleInfo/app/unauth/{id}")
public ObjectRestResponse<Vehicle> get(@PathVariable(value = "id") String id); public ObjectRestResponse<Vehicle> get(@PathVariable(value = "id") String id);
@RequestMapping(value = "/vehicleInfo/findById", method = RequestMethod.GET) @RequestMapping(value = "/vehicleInfo/findById", method = RequestMethod.GET)
...@@ -98,7 +99,7 @@ public interface VehicleFeign { ...@@ -98,7 +99,7 @@ public interface VehicleFeign {
* @return * @return
*/ */
@PostMapping("/sysRegion/getSysRegion") @PostMapping("/sysRegion/getSysRegion")
ObjectRestResponse<List<SysRegion>> getSysRegion(Set<Integer> idSet); ObjectRestResponse<List<SysRegion>> getSysRegion(@RequestBody Set<Integer> idSet);
/** /**
* 获取公司所在的城市 * 获取公司所在的城市
...@@ -109,4 +110,8 @@ public interface VehicleFeign { ...@@ -109,4 +110,8 @@ public interface VehicleFeign {
@GetMapping("/city/corporationCity") @GetMapping("/city/corporationCity")
ObjectRestResponse<Set<Integer>> corporationCity( @RequestParam(value = "zoneList") String zoneList, ObjectRestResponse<Set<Integer>> corporationCity( @RequestParam(value = "zoneList") String zoneList,
@RequestParam(value = "companyList") String companyList); @RequestParam(value = "companyList") String companyList);
@GetMapping("/accompanyingItem/app/unauth/items")
public RestResponse<List<AccompanyingItemVo>> listAccompanyingItem();
} }
...@@ -67,7 +67,7 @@ public class BookVehicleVO { ...@@ -67,7 +67,7 @@ public class BookVehicleVO {
* 随车物品id以及数量 List<Map<id,数量>> * 随车物品id以及数量 List<Map<id,数量>>
*/ */
@ApiModelProperty("随车物品id以及数量 List<Map<id,数量>>") @ApiModelProperty("随车物品id以及数量 List<Map<id,数量>>")
Map<Integer,Integer> selectedAccItem; Map<Integer,Integer> selectedAccItem;
/** /**
* 提车阶段里程数 * 提车阶段里程数
......
...@@ -4,6 +4,9 @@ import com.github.wxiaoqi.security.common.vo.PageParam; ...@@ -4,6 +4,9 @@ import com.github.wxiaoqi.security.common.vo.PageParam;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List;
import java.util.Map;
@Data @Data
public class RentVehicleBookDTO extends PageParam { public class RentVehicleBookDTO extends PageParam {
//根据车型、时间、距离,门店,预定车辆 //根据车型、时间、距离,门店,预定车辆
...@@ -47,4 +50,10 @@ public class RentVehicleBookDTO extends PageParam { ...@@ -47,4 +50,10 @@ public class RentVehicleBookDTO extends PageParam {
@ApiModelProperty("订单号") @ApiModelProperty("订单号")
private String orderNo; private String orderNo;
/**
* 随车物品id以及数量 List<Map<id,数量>>
*/
@ApiModelProperty("随车物品id以及数量 List<Map<id,数量>>")
Map<Integer,Integer> selectedAccItem;
} }
\ No newline at end of file
package com.xxfc.platform.vehicle.pojo; package com.xxfc.platform.vehicle.pojo;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.xxfc.platform.vehicle.entity.VehicleDepartureLog;
import lombok.Data; import lombok.Data;
@Data @Data
...@@ -40,4 +43,10 @@ public class VehicleDepartureLogVo { ...@@ -40,4 +43,10 @@ public class VehicleDepartureLogVo {
String arrivalRemark; String arrivalRemark;
public VehicleDepartureLog getVehicleDeparture(VehicleDepartureLogVo vehicleDepartureLogVo) {
VehicleDepartureLog departureLog = new VehicleDepartureLog();
BeanUtil.copyProperties(vehicleDepartureLogVo, departureLog, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
return departureLog;
}
} }
...@@ -2,23 +2,30 @@ package com.xxfc.platform.vehicle.biz; ...@@ -2,23 +2,30 @@ package com.xxfc.platform.vehicle.biz;
import com.ace.cache.annotation.Cache; import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear; import com.ace.cache.annotation.CacheClear;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.common.RestResponse; import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.RedisKey; import com.xxfc.platform.vehicle.constant.RedisKey;
import com.xxfc.platform.vehicle.entity.AccompanyingItem; import com.xxfc.platform.vehicle.entity.AccompanyingItem;
import com.xxfc.platform.vehicle.mapper.AccompanyingItemMapper; import com.xxfc.platform.vehicle.mapper.AccompanyingItemMapper;
import com.xxfc.platform.vehicle.pojo.AddOrUpdateAccompanyingItem; import com.xxfc.platform.vehicle.pojo.AddOrUpdateAccompanyingItem;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.pojo.QueryAccompanyItemVo; import com.xxfc.platform.vehicle.pojo.QueryAccompanyItemVo;
import com.xxfc.platform.vehicle.pojo.vo.AccompanyingItemVo; import com.xxfc.platform.vehicle.pojo.vo.AccompanyingItemVo;
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.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
...@@ -29,7 +36,13 @@ import java.util.stream.Collectors; ...@@ -29,7 +36,13 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class AccompanyingItemBiz extends BaseBiz<AccompanyingItemMapper, AccompanyingItem> { public class AccompanyingItemBiz extends BaseBiz<AccompanyingItemMapper, AccompanyingItem> {
@Autowired
private RedisTemplate redisTemplate;
@Resource(name = "redisTemplate")
HashOperations itemHashOperations;
private static final String ACCOMPANY_ITEM="accompany:item";
@Cache(key = RedisKey.ACCOMPANYING_ITEM_CACHE_ALL) @Cache(key = RedisKey.ACCOMPANYING_ITEM_CACHE_ALL)
public List<AccompanyingItem> getAll(){ public List<AccompanyingItem> getAll(){
...@@ -75,6 +88,7 @@ public class AccompanyingItemBiz extends BaseBiz<AccompanyingItemMapper, Accompa ...@@ -75,6 +88,7 @@ public class AccompanyingItemBiz extends BaseBiz<AccompanyingItemMapper, Accompa
accompanyingItem.setId(null); accompanyingItem.setId(null);
BeanUtils.copyProperties(accompanyingItem,addOrUpdateAccompanyingItem); BeanUtils.copyProperties(accompanyingItem,addOrUpdateAccompanyingItem);
Integer effected = mapper.insertSelective(accompanyingItem); Integer effected = mapper.insertSelective(accompanyingItem);
redisTemplate.delete(ACCOMPANY_ITEM);
return RestResponse.suc(); return RestResponse.suc();
} }
...@@ -83,21 +97,40 @@ public class AccompanyingItemBiz extends BaseBiz<AccompanyingItemMapper, Accompa ...@@ -83,21 +97,40 @@ public class AccompanyingItemBiz extends BaseBiz<AccompanyingItemMapper, Accompa
AccompanyingItem accompanyingItem = new AccompanyingItem(); AccompanyingItem accompanyingItem = new AccompanyingItem();
BeanUtils.copyProperties(accompanyingItem,addOrUpdateAccompanyingItem); BeanUtils.copyProperties(accompanyingItem,addOrUpdateAccompanyingItem);
Integer effected = mapper.updateByPrimaryKeySelective(accompanyingItem); Integer effected = mapper.updateByPrimaryKeySelective(accompanyingItem);
redisTemplate.delete(ACCOMPANY_ITEM);
return RestResponse.suc(); return RestResponse.suc();
} }
@CacheClear(key= RedisKey.ACCOMPANYING_ITEM_CACHE_ALL) @CacheClear(key= RedisKey.ACCOMPANYING_ITEM_CACHE_ALL)
public RestResponse<Integer> del(Integer id){ public RestResponse<Integer> del(Integer id){
Integer effected = mapper.deleteByPrimaryKey(id); Integer effected = mapper.deleteByPrimaryKey(id);
redisTemplate.delete(ACCOMPANY_ITEM);
return RestResponse.suc(); return RestResponse.suc();
} }
public List<AccompanyingItemVo> listAllItem(List<Integer> types){
public List<AccompanyingItemVo> listAllItem(){ String typeKey = null;
if (CollectionUtils.isNotEmpty(types)){
typeKey = types.stream().sorted(Integer::compareTo).map(String::valueOf).reduce("",(x, y)-> x+":"+y);
String itemJson = (String) itemHashOperations.get(ACCOMPANY_ITEM,typeKey);
if (!StringUtils.isEmpty(itemJson)){
return JSON.parseObject(itemJson,new TypeReference<List<AccompanyingItemVo>>(){});
}
}
if (CollectionUtils.isEmpty(types)){
typeKey= "all";
String itemJson = (String) itemHashOperations.get(ACCOMPANY_ITEM, typeKey);
if (!StringUtils.isEmpty(itemJson)){
return JSON.parseObject(itemJson,new TypeReference<List<AccompanyingItemVo>>(){});
}
}
List<AccompanyingItemVo> accompanyingItemVos = new ArrayList<>(); List<AccompanyingItemVo> accompanyingItemVos = new ArrayList<>();
Example example = new Example(AccompanyingItem.class); Example example = new Example(AccompanyingItem.class);
Example.Criteria criteria = example.createCriteria(); Example.Criteria criteria = example.createCriteria();
if (CollectionUtils.isNotEmpty(types)){
criteria.andIn("type",types);
}
criteria.andEqualTo("isDel",0); criteria.andEqualTo("isDel",0);
List<AccompanyingItem> accompanyingItems = mapper.selectByExample(example); List<AccompanyingItem> accompanyingItems = mapper.selectByExample(example);
if (CollectionUtils.isEmpty(accompanyingItems)){ if (CollectionUtils.isEmpty(accompanyingItems)){
...@@ -109,7 +142,7 @@ public class AccompanyingItemBiz extends BaseBiz<AccompanyingItemMapper, Accompa ...@@ -109,7 +142,7 @@ public class AccompanyingItemBiz extends BaseBiz<AccompanyingItemMapper, Accompa
org.springframework.beans.BeanUtils.copyProperties(item, accompanyingItemVo); org.springframework.beans.BeanUtils.copyProperties(item, accompanyingItemVo);
return accompanyingItemVo; return accompanyingItemVo;
}).sorted(Comparator.comparing(AccompanyingItemVo::getType).thenComparing(AccompanyingItemVo::getRank)).collect(Collectors.toList()); }).sorted(Comparator.comparing(AccompanyingItemVo::getType).thenComparing(AccompanyingItemVo::getRank)).collect(Collectors.toList());
itemHashOperations.put(ACCOMPANY_ITEM,typeKey,JSON.toJSONString(accompanyingItemVoList));
return accompanyingItemVoList; return accompanyingItemVoList;
} }
......
package com.xxfc.platform.vehicle.biz; 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.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.xxfc.platform.vehicle.constant.ResCode.ResCode; import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import com.xxfc.platform.vehicle.constant.VehicleActiveType; import com.xxfc.platform.vehicle.constant.VehicleActiveType;
...@@ -8,10 +10,7 @@ import com.xxfc.platform.vehicle.constant.VehicleDepartureState; ...@@ -8,10 +10,7 @@ import com.xxfc.platform.vehicle.constant.VehicleDepartureState;
import com.xxfc.platform.vehicle.constant.VehicleStatus; import com.xxfc.platform.vehicle.constant.VehicleStatus;
import com.xxfc.platform.vehicle.entity.*; import com.xxfc.platform.vehicle.entity.*;
import com.xxfc.platform.vehicle.mapper.*; import com.xxfc.platform.vehicle.mapper.*;
import com.xxfc.platform.vehicle.pojo.VehicleArrivalVo; import com.xxfc.platform.vehicle.pojo.*;
import com.xxfc.platform.vehicle.pojo.VehicleDepartureVo;
import com.xxfc.platform.vehicle.pojo.VehicleUpkeepEndVo;
import com.xxfc.platform.vehicle.pojo.VehicleUpkeepVo;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -85,17 +84,28 @@ public class VehicleActiveService { ...@@ -85,17 +84,28 @@ public class VehicleActiveService {
if(departureVo.getBookRecordId() != null) { if(departureVo.getBookRecordId() != null) {
updateBookRecordStatus(departureVo.getBookRecordId()); updateBookRecordStatus(departureVo.getBookRecordId());
} }
VehicleDepartureLogVo vehicleDepartureLogVo = vehicleDepartureLogMapper.selectByBookRecordId(departureVo.getBookRecordId());
if(vehicleDepartureLogVo != null) {
BeanUtil.copyProperties(departureVo, vehicleDepartureLogVo, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
VehicleDepartureLog departureLog = vehicleDepartureLogVo.getVehicleDeparture(vehicleDepartureLogVo);
departureLog.setDepartureTime(new Date());
departureLog.setUpdateTime(new Date());
departureLog.setState(VehicleDepartureState.DEPARTURE.getCode());
departureLog.setDepartureRemark(departureVo.getRemark());
vehicleDepartureLogMapper.updateByPrimaryKeySelective(departureLog);
} else {
// 出车记录
VehicleDepartureLog departureLog = new VehicleDepartureLog();
BeanUtils.copyProperties(departureVo, departureLog);
departureLog.setDepartureTime(new Date());
departureLog.setCreateTime(new Date());
departureLog.setMileageStart(departureVo.getMileage());
departureLog.setState(VehicleDepartureState.DEPARTURE.getCode());
departureLog.setBookRecordId(departureVo.getBookRecordId());
departureLog.setDepartureRemark(departureVo.getRemark());
vehicleDepartureLogMapper.insert(departureLog);
}
// 出车记录
VehicleDepartureLog departureLog = new VehicleDepartureLog();
BeanUtils.copyProperties(departureVo, departureLog);
departureLog.setDepartureTime(new Date());
departureLog.setCreateTime(new Date());
departureLog.setMileageStart(departureVo.getMileage());
departureLog.setState(VehicleDepartureState.DEPARTURE.getCode());
departureLog.setBookRecordId(departureVo.getBookRecordId());
departureLog.setDepartureRemark(departureLog.getDepartureRemark());
vehicleDepartureLogMapper.insert(departureLog);
// 车辆活动日志 // 车辆活动日志
VehicleActiveLog activeLog = new VehicleActiveLog(); VehicleActiveLog activeLog = new VehicleActiveLog();
...@@ -108,10 +118,6 @@ public class VehicleActiveService { ...@@ -108,10 +118,6 @@ public class VehicleActiveService {
throw new BaseException(ResCode.VEHICLE_BOOKED_RECORD_MILEAGE_CHANGED.getDesc(), throw new BaseException(ResCode.VEHICLE_BOOKED_RECORD_MILEAGE_CHANGED.getDesc(),
ResCode.VEHICLE_BOOKED_RECORD_MILEAGE_CHANGED.getCode()); ResCode.VEHICLE_BOOKED_RECORD_MILEAGE_CHANGED.getCode());
} }
} }
@Transactional @Transactional
...@@ -158,19 +164,18 @@ public class VehicleActiveService { ...@@ -158,19 +164,18 @@ public class VehicleActiveService {
throw new BaseException(ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getDesc(), throw new BaseException(ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getDesc(),
ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getCode()); ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getCode());
} }
departureLog.setMileageEnd(arrivalVo.getMileage()); departureLog.setMileageEnd(arrivalVo.getMileage());
departureLog.setRecycleMan(arrivalVo.getRecycleMan()); departureLog.setRecycleMan(arrivalVo.getRecycleMan());
departureLog.setRecycleManTel(arrivalVo.getRecycleManTel()); departureLog.setRecycleManTel(arrivalVo.getRecycleManTel());
departureLog.setArrivalBranchCompanyId(arrivalVo.getArrivalBranchCompanyId()); departureLog.setArrivalBranchCompanyId(arrivalVo.getArrivalBranchCompanyId());
departureLog.setUpdateTime(new Date()); departureLog.setUpdateTime(new Date());
departureLog.setArrivalTime(new Date()); departureLog.setArrivalTime(new Date());
departureLog.setState(VehicleDepartureState.END.getCode()); departureLog.setState(VehicleDepartureState.END.getCode());
departureLog.setIllegalPic(arrivalVo.getIllegalPic()); departureLog.setIllegalPic(arrivalVo.getIllegalPic());
departureLog.setIllegalAmount(arrivalVo.getIllegalAmount()); departureLog.setIllegalAmount(arrivalVo.getIllegalAmount());
departureLog.setArrivalPic(arrivalVo.getArrivalPic()); departureLog.setArrivalPic(arrivalVo.getArrivalPic());
departureLog.setArrivalRemark(arrivalVo.getRemark()); departureLog.setArrivalRemark(arrivalVo.getRemark());
vehicleDepartureLogMapper.updateByPrimaryKeySelective(departureLog); vehicleDepartureLogMapper.updateByPrimaryKeySelective(departureLog);
// 车辆活动日志 // 车辆活动日志
VehicleActiveLog activeLog = vehicleActiveLogMapper.selectLastByVehicleId(arrivalVo.getVehicleId()); VehicleActiveLog activeLog = vehicleActiveLogMapper.selectLastByVehicleId(arrivalVo.getVehicleId());
if (activeLog == null) { if (activeLog == null) {
......
...@@ -16,6 +16,7 @@ import com.xxfc.platform.vehicle.pojo.vo.AccompanyingItemVo; ...@@ -16,6 +16,7 @@ import com.xxfc.platform.vehicle.pojo.vo.AccompanyingItemVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Collections;
import java.util.List; import java.util.List;
/** /**
...@@ -75,7 +76,13 @@ public class AccompanyingItemController extends BaseController<AccompanyingItemB ...@@ -75,7 +76,13 @@ public class AccompanyingItemController extends BaseController<AccompanyingItemB
@GetMapping("/app/unauth/items") @GetMapping("/app/unauth/items")
public RestResponse<List<AccompanyingItemVo>> listAccompanyingItemVo(){ public RestResponse<List<AccompanyingItemVo>> listAccompanyingItemVo(){
List<AccompanyingItemVo> accompanyingItemVos = baseBiz.listAllItem(); List<AccompanyingItemVo> accompanyingItemVos = baseBiz.listAllItem(Collections.EMPTY_LIST);
return RestResponse.codeAndData(RestResponse.SUC_CODE,accompanyingItemVos);
}
@GetMapping("/app/unauth/type_items")
public RestResponse<List<AccompanyingItemVo>> listAccompanyingItemVoByTypes(@RequestParam(value = "type",required = false) List<Integer> type){
List<AccompanyingItemVo> accompanyingItemVos = baseBiz.listAllItem(type);
return RestResponse.codeAndData(RestResponse.SUC_CODE,accompanyingItemVos); return RestResponse.codeAndData(RestResponse.SUC_CODE,accompanyingItemVos);
} }
} }
...@@ -79,7 +79,7 @@ public class VehicleController extends BaseController<VehicleBiz> { ...@@ -79,7 +79,7 @@ public class VehicleController extends BaseController<VehicleBiz> {
public static final DateTimeFormatter DEFAULT_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"); public static final DateTimeFormatter DEFAULT_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
@RequestMapping(value = "/{id}", method = RequestMethod.GET) @RequestMapping(value = "/app/unauth/{id}", method = RequestMethod.GET)
public RestResponse<Vehicle> get(@PathVariable String id) { public RestResponse<Vehicle> get(@PathVariable String id) {
return RestResponse.data(baseBiz.get(id)); return RestResponse.data(baseBiz.get(id));
} }
......
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