Commit 913107af authored by libin's avatar libin

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

parents 3cab8ab9 8020fd61
......@@ -134,4 +134,6 @@ public class OrderVehicleCrosstown {
//操作人ID
private Integer orperaterId;
private String userLicenseImg;
}
\ No newline at end of file
......@@ -352,8 +352,14 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
//剩余押金 = 押金 - 违章保证金 - 定损金额
oad.setDepositAmount(oad.getDepositAmount().subtract(illegalReserve).subtract(crosstown.getDeductionCost()));
handleCrosstownDetail(crosstown, oad);
BigDecimal refundAmont = crosstown.getRestDeposit().subtract(illegalReserve);
BigDecimal originalRefundAmount = crosstown.getRestDeposit().add(crosstown.getDeductionCost()).subtract(illegalReserve);
//退款
BigDecimal refundAmont = oad.getDepositAmount().add(oad.getOrderAmount());
//crosstown.getRestDeposit().subtract(illegalReserve);
//原退款的钱
BigDecimal originalRefundAmount = oad.getOriginDepositAmount().add(oad.getOriginOrderAmount());
//crosstown.getRestDeposit().add(crosstown.getDeductionCost()).subtract(illegalReserve);
String refundDesc = "退还押金:"+ refundAmont.toString()+ "(已扣除 违章预备金:"+ illegalReserve.toString();
refundDesc = handleDed(crosstown, refundDesc);
refundDesc += ")";
......
......@@ -173,11 +173,11 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
if (!flag) {
return ObjectRestResponse.createFailedResult(3502, "今日不是交车日期");
}
if (userDTO.getCompanyId() != orderRentVehicleDetail.getStartCompanyId()) {
if (null == userDTO.getCompanyId() || !userDTO.getCompanyId().equals(orderRentVehicleDetail.getStartCompanyId())) {
return ObjectRestResponse.createFailedResult(3501, "无交车权限");
}
} else {
if (userDTO.getCompanyId() != orderRentVehicleDetail.getEndCompanyId()) {
if (null == userDTO.getCompanyId() || !userDTO.getCompanyId().equals(orderRentVehicleDetail.getEndCompanyId())) {
return ObjectRestResponse.createFailedResult(3503, "无收车权限");
}
}
......@@ -218,7 +218,7 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
}
vehicleDepartureVo.setUse("用户租车");
vehicleDepartureVo.setBookRecordId(orderRentVehicleDetail.getBookRecordId());
vehicleDepartureVo.setCheckMan(orderVehicleCrosstownDto.getLicenseName());
vehicleDepartureVo.setCheckMan(userDTO.getName());
vehicleDepartureVo.setCheckManTel(orderVehicleCrosstownDto.getLicensePhone());
try {
RestResponse restResponse = vehicleFeign.departureBySmall(vehicleDepartureVo);
......@@ -277,9 +277,11 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
}
}
orderVehicleCrosstownDto.getViolateDetail();
orderVehicleCrosstownDto.setUserLicenseImg(orderVehicleCrosstownDto.getLicenseImg());
BigDecimal amount = new BigDecimal(cost.toString()).divide(new BigDecimal("1"), 2, BigDecimal.ROUND_UP);
//出车成功后修改订单状态
List<OrderVehicleCrosstownDto> oldValue = orderVehicleCrosstownBiz.selectByOrderId(orderVehicleCrosstownDto);
orderVehicleCrosstownDto.setUserLicenseImg(orderVehicleCrosstownDto.getLicenseImg());
if (oldValue.size() == 1) {
orderVehicleCrosstownDto.setDeductionCost(oldValue.get(0).getDeductionCost().add(amount));
//扣除费用
......@@ -374,6 +376,7 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
baseOrder.setStatus(OrderStatusEnum.ORDER_FINISH.getCode());
baseOrderBiz.updateSelectiveByIdReT(baseOrder);
orderRentVehicleDetail.setFixedLossStatus(1);
baseOrderBiz.sendOrderMq(orderRentVehicleDetail, null, null, baseOrder, OrderMQDTO.ORDER_FINISH);
orderRentVehicleBiz.updateSelectiveByIdRe(orderRentVehicleDetail);
}
} else if (baseOrder.getStatus() == OrderStatusEnum.ORDER_FIXED_LOSS.getCode()) {//定损后还车
......
......@@ -78,51 +78,52 @@ public class OrderCalculateBiz {
Integer residueDays = orderItem.getTotalNum() - useDays;
//过了出发时间取消订单 ,优先使用免费天数
if(backFreeDays <= 0) {
//使用天数 小于 总天数
if(useDays < orderItem.getTotalNum()) {
//需要扣除订单费用
//判断是否达到优惠券条件 不符合则返还优惠券
//消费天数
Integer consumeDays = useDays - freeDays;
//如果使用天数 大于 总天数
if(useDays > orderItem.getTotalNum()) {
//消费天数
Integer consumeDays = 0 - backFreeDays;
//计算使用天数的费用
consumeAmount = orderItem.getUnitPrice().multiply(new BigDecimal(consumeDays+""));
if(StrUtil.isNotBlank(baseOrder.getCouponTickerNos())) {
List<BigDecimal> couponAmounts = Lists.newArrayList();
for(String tickerNo : baseOrder.getCouponTickerNos().split(",")) {
BigDecimal couponAmount = activityFeign.use(baseOrder.getUserId(), Lists.newArrayList(tickerNo), baseOrder.getNo(), Coupon.CHANNEL_RENT, consumeAmount, ActivityFeign.TYPE_CHECK);
if(couponAmount.compareTo(BigDecimal.ZERO) > 0) {
//能够使用优惠券,则不返还
couponAmounts.add(couponAmount);
} else {
backCouponNos.add(tickerNo);
}
}
consumeDays = orderItem.getTotalNum() - freeDays;
}
for(BigDecimal couponAmount : couponAmounts) {
consumeAmount = consumeAmount.subtract(couponAmount);
//需要扣除订单费用
//判断是否达到优惠券条件 不符合则返还优惠券
//计算使用天数的费用
consumeAmount = orderItem.getUnitPrice().multiply(new BigDecimal(consumeDays+""));
if(StrUtil.isNotBlank(baseOrder.getCouponTickerNos())) {
List<BigDecimal> couponAmounts = Lists.newArrayList();
for(String tickerNo : baseOrder.getCouponTickerNos().split(",")) {
BigDecimal couponAmount = activityFeign.use(baseOrder.getUserId(), Lists.newArrayList(tickerNo), baseOrder.getNo(), Coupon.CHANNEL_RENT, consumeAmount, ActivityFeign.TYPE_CHECK);
if(couponAmount.compareTo(BigDecimal.ZERO) > 0) {
//能够使用优惠券,则不返还
couponAmounts.add(couponAmount);
} else {
backCouponNos.add(tickerNo);
}
}
//设置消费金额
consumeAmount = consumeAmount.add(otherItemRealAmount);
inProgressVO.setConsumeAmount(consumeAmount);
if(consumeAmount.compareTo(BigDecimal.ZERO) > 0) {
//消费金额 大于0 增加额外费用
OrderAccountDeduction extraDeduction = orderAccountBiz.initDeduction(consumeAmount, "消费金额", DeductionTypeEnum.CONSUME, OrderAccountDeduction.ORIGIN_ORDER_DEPOSIT);
oad.getDeductions().add(extraDeduction);
for(BigDecimal couponAmount : couponAmounts) {
consumeAmount = consumeAmount.subtract(couponAmount);
}
}
//消费金额 小于商品的金额 返回钱
if(consumeAmount.compareTo(baseOrder.getGoodsAmount()) <= 0) {
//设置返回钱
refundAmount = refundAmount.add(baseOrder.getGoodsAmount().subtract(consumeAmount));
}else {
//设置额外扣减(押金里面扣)
inProgressVO.setExtraAmount(consumeAmount.subtract(baseOrder.getGoodsAmount()));
}
} else {
//设置消费金额
consumeAmount = consumeAmount.add(otherItemRealAmount);
inProgressVO.setConsumeAmount(consumeAmount);
if(consumeAmount.compareTo(BigDecimal.ZERO) > 0) {
//消费金额 大于0 增加额外费用
OrderAccountDeduction extraDeduction = orderAccountBiz.initDeduction(consumeAmount, "消费金额", DeductionTypeEnum.CONSUME, OrderAccountDeduction.ORIGIN_ORDER_DEPOSIT);
oad.getDeductions().add(extraDeduction);
}
//消费金额 小于商品的金额 返回钱
if(consumeAmount.compareTo(baseOrder.getGoodsAmount()) <= 0) {
//设置返回钱
refundAmount = refundAmount.add(baseOrder.getGoodsAmount().subtract(consumeAmount));
}else {
//设置额外扣减(押金里面扣)
inProgressVO.setExtraAmount(consumeAmount.subtract(baseOrder.getGoodsAmount()));
}
}else {
//返回剩余免费天数,返回优惠券,订单款
......
......@@ -10,6 +10,7 @@ import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.entity.OrderVehicleCrosstown;
import com.xxfc.platform.order.entity.OrderViolation;
import com.xxfc.platform.order.pojo.account.OrderAccountDeduction;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.entity.Dictionary;
......@@ -113,9 +114,16 @@ public class RentDepositJobHandler extends IJobHandler {
setIsDel(SYS_FALSE);
}});
OrderAccountDetail oad = new OrderAccountDetail();
String refundDesc = "退还押金:";
BigDecimal refundAmont;
if(null != orderViolation) {
//设置扣款项
oad.getDeductions().add(
orderAccountBiz.initDeduction(orderViolation.getPrice(), DeductionTypeEnum.VIOLATE_TRAFFIC_DEDUCT.getDesc(), DeductionTypeEnum.VIOLATE_TRAFFIC_DEDUCT, OrderAccountDeduction.ORIGIN_DEPOSIT)
);
//还车扣除款 剩余的 钱,再减去违章预备金
refundAmont = orvd.getReturnPayResidue().subtract(orderViolation.getPrice());
refundDesc += refundAmont.toString()+ "(已扣除 违章扣款:"+ refundAmont.toString();
......@@ -124,7 +132,8 @@ public class RentDepositJobHandler extends IJobHandler {
refundAmont = orvd.getReturnPayResidue();
refundDesc += refundAmont.toString();
}
OrderAccountDetail oad = new OrderAccountDetail();
oad.setOriginDepositAmount(orvd.getReturnPayResidue());
oad.setDepositAmount(refundAmont);
orderAccountBiz.refundTrigger(baseOrder, orvd, BigDecimal.ZERO, orvd.getReturnPayResidue(), refundAmont, refundDesc, RefundStatusEnum.REFUND_DEPOSIT.getCode(), AccountTypeEnum.OUT_RESIDUE_DEPOSIT, oad);
orderDepositRefundRecordBiz.completeRecordStatus(crosstown.getId(), DepositRefundStatus.VIOLATIONARRIVAL);
orderMsgBiz.handelMsgDeposit(orvd, baseOrder, userFeign.userDetailById(baseOrder.getUserId()).getData());
......
......@@ -27,6 +27,7 @@
<result column="rest_deposit" jdbcType="INTEGER" property="restDeposit"/>
<result column="user_license_id" jdbcType="VARCHAR" property="userLicenseId"/>
<result column="violate_amount_detail" jdbcType="VARCHAR" property="violateDetail"/>
<result column="user_license_img" jdbcType="VARCHAR" property="userLicenseImg"/>
</resultMap>
<resultMap id="orderMap" type="com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto">
<result column="id" javaType="java.lang.Integer" property="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