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