Commit 0287d6b1 authored by hanfeng's avatar hanfeng

Merge remote-tracking branch 'origin/dev' into dev

parents 6cddc5ec cf7d929e
......@@ -136,4 +136,6 @@ public class OrderVehicleCrosstown {
private Integer orperaterId;
private String userLicenseImg;
private String checkUserInfo;
}
\ No newline at end of file
package com.xxfc.platform.order.pojo.order;
import lombok.Data;
@Data
public class CheckUserInfoDto {
private Integer id;
private String username;
private String telephone;
}
......@@ -45,9 +45,7 @@ public class OrderVehicleCrosstownDto extends OrderVehicleCrosstown {
List<DepositRefundRecord> depositRefundRecord;
private String checkUser;
private String checkTel;
/**
* 操作人
......
......@@ -284,7 +284,6 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
}
}
}
//getDaysBetweenDateTimeHasStartEnd(endTime, nowTime) == 1--同一天;>1-- 延后;<1--提前;
/**
* 提前还车
*/
......@@ -293,19 +292,13 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
//提前的天数, 当天就算使用一天
int noUsedDay = actualDay - userUsedDay;
//退还未使用的天数,或者金额,扣除违约金,实际未使用天数的金额,最多3000元
// InProgressVO inProgressVO = new InProgressVO();
// inProgressVO.setViolateAmount(new BigDecimal(200));
// inProgressVO.setExtraAmount(new BigDecimal(200));
InProgressVO inProgressVO = orderCalculateBiz.inProgressCalculate(orderPageVO, userUsedDay);
if (inProgressVO != null) {
//消费超额金
if(inProgressVO.getExtraAmount() != null) {
dedDetailDTO.setExcessCost(inProgressVO.getExtraAmount());
}
// stringBuilder.append("违约金( ¥");
stringBuilder.append("违约金( ");
// stringBuilder.append(amount);
// stringBuilder.append(" x ");
stringBuilder.append(noUsedDay);
stringBuilder.append("天) = ");
stringBuilder.append(inProgressVO.getViolateAmount());
......@@ -316,21 +309,21 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
*/
} else if (userUsedDay - actualDay > 0) {
StringBuilder stringBuilder = new StringBuilder();
// stringBuilder.append("违约金( ¥");
stringBuilder.append("违约金( ");
//延期的天数, 延期违约金是延期天数*200%
InProgressVO inProgressVO = orderCalculateBiz.inProgressCalculate(orderPageVO, userUsedDay);
if (inProgressVO != null) {
int extraUsedDay = userUsedDay - actualDay;
if(extraUsedDay > 0) {
// stringBuilder.append(amount);
// stringBuilder.append(" x ");
stringBuilder.append(extraUsedDay);
stringBuilder.append("(天)");
stringBuilder.append(" x 2)");
BigDecimal cost = amount.multiply(new BigDecimal(extraUsedDay+ "")).multiply(new BigDecimal(2+ ""));
stringBuilder.append(" = ");
stringBuilder.append(cost);
stringBuilder.append(inProgressVO.getViolateAmount());
stringBuilder.append("元");
initDedDetail(dedDetailDTO, OrderViolateEnum.AFTER.getCode(), cost, stringBuilder);
initDedDetail(dedDetailDTO, OrderViolateEnum.AFTER.getCode(), inProgressVO.getViolateAmount(), stringBuilder);
}
}
}
JSONArray jsonArray = new JSONArray();
......
......@@ -388,7 +388,20 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
}}), VehicleItemDTO.class);
if(null == crosstown) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE, Sets.newSet(StrUtil.format("退款第一部分押金失败,获取不了还车/定损记录,订单号:{}, crosstownTypeEnum: {}", orderMQDTO.getId(), crosstownTypeEnum)));
//设置等待时间 5秒
try {
Thread.sleep(5000L);
crosstown = crosstownBiz.selectOne(new OrderVehicleCrosstown(){{
setOrderId(orderMQDTO.getId());
setType(crosstownTypeEnum);
}});
if(null == crosstown) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE, Sets.newSet(StrUtil.format("退款第一部分押金失败,获取不了还车/定损记录,订单号:{}, crosstownTypeEnum: {}", orderMQDTO.getId(), crosstownTypeEnum)));
}
} catch (InterruptedException e) {
e.printStackTrace();
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE, Sets.newSet(StrUtil.format("退款第一部分押金失败,获取不了还车/定损记录,订单号:{}, crosstownTypeEnum: {}", orderMQDTO.getId(), crosstownTypeEnum)));
}
}
if(null == crosstown.getRestDeposit()
......@@ -498,7 +511,7 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
orderItemBiz.updateSelectiveByIdRe(vehicleItemDTO);
//发送押金退还完成队列消息
baseOrderBiz.sendOrderMq(orderMQDTO.getOrderRentVehicleDetail(), null, null, orderMQDTO, OrderMQDTO.ORDER_CANCEL);
baseOrderBiz.sendOrderMq(orderMQDTO.getOrderRentVehicleDetail(), null, null, orderMQDTO, OrderMQDTO.ORDER_PART_DEPOSIT);
//捕捉异常
try {
......
......@@ -24,6 +24,7 @@ import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.mapper.OrderVehicaleCrosstownMapper;
import com.xxfc.platform.order.pojo.DedDetailDTO;
import com.xxfc.platform.order.pojo.mq.OrderMQDTO;
import com.xxfc.platform.order.pojo.order.CheckUserInfoDto;
import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto;
import com.xxfc.platform.universal.constant.DictionaryKey;
......@@ -249,6 +250,15 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
}
}
//添加验车人信息
JSONArray list = new JSONArray();
CheckUserInfoDto checkUserInfoDto = null;
if (StringUtils.isNotBlank(orderVehicleCrosstownDto.getCheckUserInfo())) {
checkUserInfoDto = JSONObject.parseObject(orderVehicleCrosstownDto.getCheckUserInfo(), CheckUserInfoDto.class);
if (checkUserInfoDto != null) {
list.add(checkUserInfoDto);
}
}
AppUserDTO appUserDTO = userFeign.userDetailById(baseOrder.getUserId()).getData();
//调用车辆管理的出车还车
//出车
......@@ -258,17 +268,12 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
vehicleDepartureVo.setDepartureBranchCompanyId(orderRentVehicleDetail.getStartCompanyId());
vehicleDepartureVo.setExpectArrivalBranchCompanyId(orderRentVehicleDetail.getEndCompanyId());
vehicleDepartureVo.setMileage(orderVehicleCrosstownDto.getMileage());
if (appUserDTO != null) {
vehicleDepartureVo.setUser(appUserDTO.getNickname());
vehicleDepartureVo.setUserTel(appUserDTO.getUsername());
} else {
vehicleDepartureVo.setUser("APP用戶");
vehicleDepartureVo.setUserTel("13656235623");
}
vehicleDepartureVo.setUse("用户租车");
vehicleDepartureVo.setBookRecordId(orderRentVehicleDetail.getBookRecordId());
vehicleDepartureVo.setCheckMan(orderVehicleCrosstownDto.getCheckUser());
vehicleDepartureVo.setCheckManTel(orderVehicleCrosstownDto.getCheckTel());
if (checkUserInfoDto != null) {
vehicleDepartureVo.setCheckMan(checkUserInfoDto.getUsername());
vehicleDepartureVo.setCheckManTel(checkUserInfoDto.getTelephone());
}
try {
RestResponse restResponse = vehicleFeign.departureBySmall(vehicleDepartureVo);
log.error("返回信息: " + restResponse.toString());
......@@ -280,8 +285,10 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
vehicleArrivalVo.setVehicleId(orderRentVehicleDetail.getVehicleId());
vehicleArrivalVo.setArrivalBranchCompanyId(userDTO.getCompanyId());
vehicleArrivalVo.setMileage(orderVehicleCrosstownDto.getMileage());
vehicleArrivalVo.setRecycleMan(orderVehicleCrosstownDto.getCheckUser());
vehicleArrivalVo.setRecycleManTel(orderVehicleCrosstownDto.getCheckTel());
if (checkUserInfoDto != null) {
vehicleArrivalVo.setRecycleMan(checkUserInfoDto.getUsername());
vehicleArrivalVo.setRecycleManTel(checkUserInfoDto.getTelephone());
}
vehicleArrivalVo.setBookRecordId(orderRentVehicleDetail.getBookRecordId());
try {
RestResponse restResponse = vehicleFeign.arrivalBySmall(vehicleArrivalVo);
......@@ -332,6 +339,11 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
if (orderVehicleCrosstownDto.getRestDeposit().compareTo(getAmount()) == -1) { //剩余金额小于保证金
return ObjectRestResponse.createFailedResult(500, "押金不足,不能交车,请联系客服!");
}
JSONArray jsonArray = JSONArray.parseArray(oldValue.get(0).getCheckUserInfo());
if (jsonArray != null && checkUserInfoDto != null) {
jsonArray.add(checkUserInfoDto);
orderVehicleCrosstownDto.setCheckUserInfo(jsonArray.toJSONString());
}
BeanUtil.copyProperties(orderVehicleCrosstownDto, oldValue.get(0), CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
getOrderLicense(orderVehicleCrosstownDto);
handleOrderStatus(baseOrder, orderRentVehicleDetail, oldValue.get(0), appUserDTO);
......@@ -349,6 +361,7 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
if (orderVehicleCrosstownDto.getRestDeposit().compareTo(getAmount()) == -1) { //剩余金额小于保证金
return ObjectRestResponse.createFailedResult(500, "押金不足,不能交车,请联系客服!");
}
orderVehicleCrosstownDto.setCheckUserInfo(list.toJSONString());
getOrderLicense(orderVehicleCrosstownDto);
orderVehicleCrosstownBiz.insertSelective(orderVehicleCrosstownDto);
OrderVehicleCrosstown orderVehicleCrosstown = orderVehicleCrosstownBiz.selectOne(orderVehicleCrosstownDto);
......
......@@ -364,8 +364,8 @@ public class OrderCalculateBiz {
, refundDescBuilder);
topAmount = vehicleItemDTO.getTopAmount(0);
totalDeductAmount = deductionAmount;
totalRefundAmount = orderPageVO.getRealAmount().subtract(deductionAmount);
totalDeductAmount = (topAmount.compareTo(deductionAmount) < 0) ? topAmount: deductionAmount;
totalRefundAmount = orderPageVO.getRealAmount().subtract(totalDeductAmount);
refundDesc = refundDescBuilder.toString();
}
......
......@@ -76,10 +76,10 @@ public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRe
OrderRefundPriceVO orpv = orderCalculateBiz.getPriceCalculate(no, orderPageVO);
if(orderPageVO.getStatus().equals(OrderStatusEnum.ORDER_UNPAY.getCode())
|| orderPageVO.getStatus().equals(OrderStatusEnum.ORDER_CRT.getCode())
|| orpv.getRefundAmount().compareTo(BigDecimal.ZERO) <= 0) {
|| orpv.getCutAmount().compareTo(BigDecimal.ZERO) <= 0) {
orpv.setRefundDesc("是否确定取消订单");
}else {
orpv.setRefundDesc(StrUtil.format("本次取消操作需要扣除{}元违约金,实际退款金额为{}元,您确定要取消订单吗?", orpv.getRealAmount(), orpv.getRefundAmount()));
orpv.setRefundDesc(StrUtil.format("本次取消操作需要扣除{}元违约金,实际退款金额为{}元,您确定要取消订单吗?", orpv.getCutAmount(), orpv.getRefundAmount()));
}
return ObjectRestResponse.succ(orpv);
}
......
......@@ -11,7 +11,6 @@ import com.github.wxiaoqi.security.admin.constant.enumerate.MemberEnum;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.constant.CommonConstants;
import com.github.wxiaoqi.security.common.context.BaseContextHandler;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
......@@ -48,13 +47,16 @@ import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.math.BigDecimal;
import java.util.*;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
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_TRUE;
import static com.xxfc.platform.order.contant.enumerate.ItemTypeEnum.*;
import static com.xxfc.platform.order.contant.enumerate.ItemTypeEnum.ACCOMPANY;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
@Service
......@@ -499,7 +501,6 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//根据车型、时间、距离,门店,预定车辆
RentVehicleBookDTO rentVehicleBookDTO = BeanUtil.toBean(detail.getBookVehicleVO(), RentVehicleBookDTO.class);
rentVehicleBookDTO.setModelId(detail.getModelId());
rentVehicleBookDTO.setUserName(BaseContextHandler.getName());
rentVehicleBookDTO.setLiftCompany(detail.getStartCompanyId());
rentVehicleBookDTO.setLiftAddr(detail.getStartAddr());
rentVehicleBookDTO.setRetCompany(detail.getEndCompanyId());
......@@ -509,6 +510,10 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rentVehicleBookDTO.setNumberPlate(numberPlate);
rentVehicleBookDTO.setStatus(status);
rentVehicleBookDTO.setUseType(detail.getUseType());
if (detail.getAppUserDTO() != null) {
rentVehicleBookDTO.setVehicleUserPhone(detail.getAppUserDTO().getUsername());
rentVehicleBookDTO.setVehicleUsername(detail.getAppUserDTO().getRealname());
}
if(null != detail.getAccompanyItems()) {
rentVehicleBookDTO.setSelectedAccItem(detail.getAccompanyItems().parallelStream().collect(Collectors.toMap(OrderAccompanyDTO::getId, OrderAccompanyDTO::getNum)));
......
......@@ -4,14 +4,9 @@ import com.github.wxiaoqi.security.common.vo.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.List;
import java.util.Map;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.DATE_TIME_LINE_FORMATTER;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.YMR_SLASH_FORMATTER;
@Data
......@@ -74,6 +69,11 @@ public class RentVehicleBookDTO extends PageParam {
@ApiModelProperty("用户名")
private String userName;
//使用人姓名
private String vehicleUsername;
//使用人电话
private String vehicleUserPhone;
@ApiModelProperty("订单号")
private String orderNo;
......
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