Commit d3eb9951 authored by jiaorz's avatar jiaorz

新增订单延长还车费用明细

parent 728cf4e0
...@@ -8,6 +8,7 @@ public enum OrderViolateEnum { ...@@ -8,6 +8,7 @@ public enum OrderViolateEnum {
BEFORE(1, "提前"), BEFORE(1, "提前"),
AFTER(2, "延期"), AFTER(2, "延期"),
CHANGE(3, "更换还车公司"), CHANGE(3, "更换还车公司"),
DELAY_VEHICLE(4, "延长还车不计免赔")
; ;
/** /**
* 编码 * 编码
......
...@@ -112,6 +112,12 @@ public class OrderVehicleCrosstown { ...@@ -112,6 +112,12 @@ public class OrderVehicleCrosstown {
@Column(name = "violate_amount_detail") @Column(name = "violate_amount_detail")
private String violateDetail; private String violateDetail;
/**
* 延期还车,不计免赔额计算
*/
@Column(name = "delay_vehicle_detail")
private String delayVehicleDetail;
/** /**
* 1、交车, 2、还车, 3、定损还车 * 1、交车, 2、还车, 3、定损还车
*/ */
......
...@@ -33,6 +33,7 @@ public class DedDetailDTO { ...@@ -33,6 +33,7 @@ public class DedDetailDTO {
//作为:DedDetail :2、车辆损坏 3、其他 //作为:DedDetail :2、车辆损坏 3、其他
//作为:violate_amount_detail 1--提前还车 2--延期还车 3--更换还车公司费用 //作为:violate_amount_detail 1--提前还车 2--延期还车 3--更换还车公司费用
//作为:delay_vehicle_detail
Integer type; Integer type;
//小雨都不知道什么东西 //小雨都不知道什么东西
......
...@@ -40,6 +40,8 @@ public class OrderPageVO extends BaseOrder { ...@@ -40,6 +40,8 @@ public class OrderPageVO extends BaseOrder {
private String positionName; private String positionName;
//订单违约金 //订单违约金
private String dedDetailDTO; private String dedDetailDTO;
//订单延长还车,不计免赔额
private String delayVehicleDetail;
/** /**
* 車輛編碼 * 車輛編碼
*/ */
......
...@@ -80,172 +80,173 @@ import static com.xxfc.platform.universal.constant.DictionaryKey.ILLEGAL_TYPE; ...@@ -80,172 +80,173 @@ import static com.xxfc.platform.universal.constant.DictionaryKey.ILLEGAL_TYPE;
@Slf4j @Slf4j
public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements UserRestInterface { public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements UserRestInterface {
@Autowired @Autowired
OrderMemberDetailBiz orderMemberDetailBiz; OrderMemberDetailBiz orderMemberDetailBiz;
@Autowired @Autowired
OrderTourDetailBiz orderTourDetailBiz; OrderTourDetailBiz orderTourDetailBiz;
@Autowired @Autowired
OrderRentVehicleBiz orderRentVehicleBiz; OrderRentVehicleBiz orderRentVehicleBiz;
@Autowired @Autowired
OrderVehicleCrosstownBiz orderVehicleCrosstownBiz; OrderVehicleCrosstownBiz orderVehicleCrosstownBiz;
@Autowired @Autowired
OrderUserLicenseBiz orderUserLicenseBiz; OrderUserLicenseBiz orderUserLicenseBiz;
@Autowired @Autowired
OrderItemBiz orderItemBiz; OrderItemBiz orderItemBiz;
@Autowired @Autowired
OrderAccountBiz orderAccountBiz; OrderAccountBiz orderAccountBiz;
@Autowired @Autowired
VehicleFeign vehicleFeign; VehicleFeign vehicleFeign;
@Autowired @Autowired
ThirdFeign thirdFeign; ThirdFeign thirdFeign;
@Autowired @Autowired
TourFeign tourFeign; TourFeign tourFeign;
@Autowired @Autowired
UserFeign userFeign; UserFeign userFeign;
@Autowired @Autowired
MQSenderFeign mqSenderFeign; MQSenderFeign mqSenderFeign;
@Autowired @Autowired
OrderMsgBiz orderMsgBiz; OrderMsgBiz orderMsgBiz;
@Autowired @Autowired
ActivityFeign activityFeign; ActivityFeign activityFeign;
@Autowired @Autowired
OrderCalculateBiz orderCalculateBiz; OrderCalculateBiz orderCalculateBiz;
public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"); public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
public List<OrderPageVO> pageByParm(Map<String, Object> paramMap) { public List<OrderPageVO> pageByParm(Map<String, Object> paramMap) {
return mapper.pageByParm(paramMap); return mapper.pageByParm(paramMap);
} }
public List<OrderListVo> listOrder(Map<String, Object> paramMap) { public List<OrderListVo> listOrder(Map<String, Object> paramMap) {
List<OrderListVo> orderListVos = mapper.listOrder(paramMap); List<OrderListVo> orderListVos = mapper.listOrder(paramMap);
return orderListVos; return orderListVos;
} }
public List<OrderPageVO> getRentVehicle(Map<String, Object> paramMap) { public List<OrderPageVO> getRentVehicle(Map<String, Object> paramMap) {
return mapper.getRentVehicle(paramMap); return mapper.getRentVehicle(paramMap);
} }
public List<OrderPageVO> getTourList(Map<String, Object> paramMap) { public List<OrderPageVO> getTourList(Map<String, Object> paramMap) {
return mapper.getTourList(paramMap); return mapper.getTourList(paramMap);
} }
public PageDataVO<MemberOrderBo> findMemberOrderPage(MemberOrderFindDTO memberOrderFindDTO){ public PageDataVO<MemberOrderBo> findMemberOrderPage(MemberOrderFindDTO memberOrderFindDTO) {
return PageDataVO.pageInfo(memberOrderFindDTO.getPage(),memberOrderFindDTO.getLimit(),()->mapper.findMemberOrders(memberOrderFindDTO)); return PageDataVO.pageInfo(memberOrderFindDTO.getPage(), memberOrderFindDTO.getLimit(), () -> mapper.findMemberOrders(memberOrderFindDTO));
} }
public List<MemberOrderBo> findMemberOrders(MemberOrderFindDTO memberOrderFindDTO) { public List<MemberOrderBo> findMemberOrders(MemberOrderFindDTO memberOrderFindDTO) {
return mapper.findMemberOrders(memberOrderFindDTO); return mapper.findMemberOrders(memberOrderFindDTO);
} }
// public List<MemberOrderBo> // public List<MemberOrderBo>
/** /**
* 获取订单详情 * 获取订单详情
* *
* @param no * @param no
* @return * @return
*/ */
public ObjectRestResponse<OrderPageVO> getOrderDetail(String no, UserDTO userDTO) { public ObjectRestResponse<OrderPageVO> getOrderDetail(String no, UserDTO userDTO) {
OrderPageVO orderPageVo = mapper.getOrderDetail(no); OrderPageVO orderPageVo = mapper.getOrderDetail(no);
if (orderPageVo == null) { if (orderPageVo == null) {
return ObjectRestResponse.createFailedResult(ResCode.ORDER_IS_NOT_EXIST.getCode(), ResCode.ORDER_IS_NOT_EXIST.getDesc()); return ObjectRestResponse.createFailedResult(ResCode.ORDER_IS_NOT_EXIST.getCode(), ResCode.ORDER_IS_NOT_EXIST.getDesc());
} }
if(orderPageVo.getStatus() <= 3 && orderPageVo.getStatus() != 2 && orderPageVo.getStatus() != -1) { if (orderPageVo.getStatus() <= 3 && orderPageVo.getStatus() != 2 && orderPageVo.getStatus() != -1) {
return ObjectRestResponse.createFailedResult(ResCode.ORDER_DETAIL_IS_NOT_EXIST.getCode(), ResCode.ORDER_DETAIL_IS_NOT_EXIST.getDesc()); return ObjectRestResponse.createFailedResult(ResCode.ORDER_DETAIL_IS_NOT_EXIST.getCode(), ResCode.ORDER_DETAIL_IS_NOT_EXIST.getDesc());
} }
AppUserDTO appUserVo = userFeign.userDetailById(orderPageVo.getUserId()).getData(); AppUserDTO appUserVo = userFeign.userDetailById(orderPageVo.getUserId()).getData();
if(appUserVo != null) { if (appUserVo != null) {
orderPageVo.setTelephone(appUserVo.getUsername()); orderPageVo.setTelephone(appUserVo.getUsername());
orderPageVo.setUsername(appUserVo.getRealname()); orderPageVo.setUsername(appUserVo.getRealname());
} }
List<BranchCompany> branchCompanies = vehicleFeign.companyAll(userDTO.getDataAll(), userDTO.getDataCompany(), userDTO.getDataZone()); List<BranchCompany> branchCompanies = vehicleFeign.companyAll(userDTO.getDataAll(), userDTO.getDataCompany(), userDTO.getDataZone());
List<Integer> companyIds = branchCompanies.stream().map(BranchCompany::getId).collect(Collectors.toList()); List<Integer> companyIds = branchCompanies.stream().map(BranchCompany::getId).collect(Collectors.toList());
if (orderPageVo.getOrderRentVehicleDetail() != null) { if (orderPageVo.getOrderRentVehicleDetail() != null) {
if (!companyIds.contains(orderPageVo.getOrderRentVehicleDetail().getStartCompanyId()) && !companyIds.contains(orderPageVo.getOrderRentVehicleDetail().getEndCompanyId())) { if (!companyIds.contains(orderPageVo.getOrderRentVehicleDetail().getStartCompanyId()) && !companyIds.contains(orderPageVo.getOrderRentVehicleDetail().getEndCompanyId())) {
return ObjectRestResponse.createFailedResult(ResCode.YOU_AUTH_FAIL.getCode(), ResCode.YOU_AUTH_FAIL.getDesc()); return ObjectRestResponse.createFailedResult(ResCode.YOU_AUTH_FAIL.getCode(), ResCode.YOU_AUTH_FAIL.getDesc());
} }
if(userDTO.getCompanyId() == orderPageVo.getOrderRentVehicleDetail().getEndCompanyId()) { if (userDTO.getCompanyId() == orderPageVo.getOrderRentVehicleDetail().getEndCompanyId()) {
orderPageVo.setUserCompanyStatus(true); orderPageVo.setUserCompanyStatus(true);
} }
if (orderPageVo.getStatus() == 4) { //未交车 if (orderPageVo.getStatus() == 4) { //未交车
// boolean flag = getTodayTime(orderPageVo.getOrderRentVehicleDetail().getStartTime()); // boolean flag = getTodayTime(orderPageVo.getOrderRentVehicleDetail().getStartTime());
// if (!flag) { // if (!flag) {
// return ObjectRestResponse.createFailedResult(3501, "今日不是交车日期"); // return ObjectRestResponse.createFailedResult(3501, "今日不是交车日期");
// } // }
getDriverInfo(orderPageVo); getDriverInfo(orderPageVo);
} else if (orderPageVo.getStatus() >= 5 || orderPageVo.getStatus() == -1) {//出行中 已交车 } else if (orderPageVo.getStatus() >= 5 || orderPageVo.getStatus() == -1) {//出行中 已交车
//设置违约金金额 //设置违约金金额
getDriverInfo(orderPageVo); getDriverInfo(orderPageVo);
getUserLicense(orderPageVo); getUserLicense(orderPageVo);
} }
ObjectRestResponse<CompanyDetail> startResponse = vehicleFeign.getCompanyDetail(orderPageVo.getOrderRentVehicleDetail().getStartCompanyId()); ObjectRestResponse<CompanyDetail> startResponse = vehicleFeign.getCompanyDetail(orderPageVo.getOrderRentVehicleDetail().getStartCompanyId());
if (startResponse.getData() != null) { if (startResponse.getData() != null) {
orderPageVo.setStartCompanyName(startResponse.getData().getName()); orderPageVo.setStartCompanyName(startResponse.getData().getName());
} }
ObjectRestResponse<CompanyDetail> restResponse = vehicleFeign.getCompanyDetail(orderPageVo.getOrderRentVehicleDetail().getEndCompanyId());
if (restResponse.getData() != null) {
orderPageVo.setEndCompanyName(restResponse.getData().getName());
}
RestResponse<Vehicle> response = vehicleFeign.findById(orderPageVo.getOrderRentVehicleDetail().getVehicleId());
if (response.getData() != null) {
orderPageVo.setVehicalNumberPlat(response.getData().getNumberPlate());
orderPageVo.setCode(response.getData().getCode());
}
} else if (orderPageVo.getOrderTourDetail() != null) {
if(StringUtils.isNotBlank(orderPageVo.getOrderTourDetail().getTourUserIds())) {
List<TourUser> list = tourFeign.getTourUsers(orderPageVo.getOrderTourDetail().getTourUserIds()).getData();
orderPageVo.getOrderTourDetail().setUserVoList(list == null || list.size() <= 0 ? new ArrayList<>() : list);
}
}
//设置保留金 ObjectRestResponse<CompanyDetail> restResponse = vehicleFeign.getCompanyDetail(orderPageVo.getOrderRentVehicleDetail().getEndCompanyId());
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData(); if (restResponse.getData() != null) {
BigDecimal illegalReserve = new BigDecimal(dictionaryMap.get(APP_ORDER + "_" + DictionaryKey.ILLEGAL_RESERVE).getDetail()); orderPageVo.setEndCompanyName(restResponse.getData().getName());
orderPageVo.setIllegalReserve(illegalReserve); }
orderPageVo.setItems(orderItemBiz.selectList(new OrderItem(){{ RestResponse<Vehicle> response = vehicleFeign.findById(orderPageVo.getOrderRentVehicleDetail().getVehicleId());
setOrderId(orderPageVo.getId()); if (response.getData() != null) {
}})); orderPageVo.setVehicalNumberPlat(response.getData().getNumberPlate());
return ObjectRestResponse.succ(orderPageVo); orderPageVo.setCode(response.getData().getCode());
} }
} else if (orderPageVo.getOrderTourDetail() != null) {
/** if (StringUtils.isNotBlank(orderPageVo.getOrderTourDetail().getTourUserIds())) {
* 后台获取订单详情 List<TourUser> list = tourFeign.getTourUsers(orderPageVo.getOrderTourDetail().getTourUserIds()).getData();
* @param no orderPageVo.getOrderTourDetail().setUserVoList(list == null || list.size() <= 0 ? new ArrayList<>() : list);
* @param userDTO }
* @return }
*/
//设置保留金
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
BigDecimal illegalReserve = new BigDecimal(dictionaryMap.get(APP_ORDER + "_" + DictionaryKey.ILLEGAL_RESERVE).getDetail());
orderPageVo.setIllegalReserve(illegalReserve);
orderPageVo.setItems(orderItemBiz.selectList(new OrderItem() {{
setOrderId(orderPageVo.getId());
}}));
return ObjectRestResponse.succ(orderPageVo);
}
/**
* 后台获取订单详情
*
* @param no
* @param userDTO
* @return
*/
public ObjectRestResponse<OrderPageVO> orderDetail(String no, UserDTO userDTO) { public ObjectRestResponse<OrderPageVO> orderDetail(String no, UserDTO userDTO) {
OrderPageVO orderPageVo = mapper.getOrderDetail(no); OrderPageVO orderPageVo = mapper.getOrderDetail(no);
if (orderPageVo == null) { if (orderPageVo == null) {
return ObjectRestResponse.createFailedResult(ResCode.ORDER_IS_NOT_EXIST.getCode(), ResCode.ORDER_IS_NOT_EXIST.getDesc()); return ObjectRestResponse.createFailedResult(ResCode.ORDER_IS_NOT_EXIST.getCode(), ResCode.ORDER_IS_NOT_EXIST.getDesc());
} }
AppUserDTO appUserVo = userFeign.userDetailById(orderPageVo.getUserId()).getData(); AppUserDTO appUserVo = userFeign.userDetailById(orderPageVo.getUserId()).getData();
if(appUserVo != null) { if (appUserVo != null) {
orderPageVo.setTelephone(appUserVo.getUsername()); orderPageVo.setTelephone(appUserVo.getUsername());
orderPageVo.setUsername(appUserVo.getRealname()); orderPageVo.setUsername(appUserVo.getRealname());
orderPageVo.setPositionName(appUserVo.getPositionName()); orderPageVo.setPositionName(appUserVo.getPositionName());
} }
List<BranchCompany> branchCompanies = vehicleFeign.companyAll(userDTO.getDataAll(), userDTO.getDataCompany(), userDTO.getDataZone()); List<BranchCompany> branchCompanies = vehicleFeign.companyAll(userDTO.getDataAll(), userDTO.getDataCompany(), userDTO.getDataZone());
List<Integer> companyIds = branchCompanies.stream().map(BranchCompany::getId).collect(Collectors.toList()); List<Integer> companyIds = branchCompanies.stream().map(BranchCompany::getId).collect(Collectors.toList());
...@@ -255,7 +256,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -255,7 +256,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
if (!companyIds.contains(orderPageVo.getOrderRentVehicleDetail().getStartCompanyId()) && !companyIds.contains(orderPageVo.getOrderRentVehicleDetail().getEndCompanyId())) { if (!companyIds.contains(orderPageVo.getOrderRentVehicleDetail().getStartCompanyId()) && !companyIds.contains(orderPageVo.getOrderRentVehicleDetail().getEndCompanyId())) {
return ObjectRestResponse.createFailedResult(ResCode.YOU_AUTH_FAIL.getCode(), ResCode.YOU_AUTH_FAIL.getDesc()); return ObjectRestResponse.createFailedResult(ResCode.YOU_AUTH_FAIL.getCode(), ResCode.YOU_AUTH_FAIL.getDesc());
} }
if(userDTO.getCompanyId() == orderPageVo.getOrderRentVehicleDetail().getEndCompanyId()) { if (userDTO.getCompanyId() == orderPageVo.getOrderRentVehicleDetail().getEndCompanyId()) {
orderPageVo.setUserCompanyStatus(true); orderPageVo.setUserCompanyStatus(true);
} }
if (orderPageVo.getStatus() == 4) { //未交车 if (orderPageVo.getStatus() == 4) { //未交车
...@@ -285,7 +286,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -285,7 +286,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
} }
} else if (orderPageVo.getOrderTourDetail() != null) { } else if (orderPageVo.getOrderTourDetail() != null) {
if(StringUtils.isNotBlank(orderPageVo.getOrderTourDetail().getTourUserIds())) { if (StringUtils.isNotBlank(orderPageVo.getOrderTourDetail().getTourUserIds())) {
List<TourUser> list = tourFeign.getTourUsers(orderPageVo.getOrderTourDetail().getTourUserIds()).getData(); List<TourUser> list = tourFeign.getTourUsers(orderPageVo.getOrderTourDetail().getTourUserIds()).getData();
orderPageVo.getOrderTourDetail().setUserVoList(list == null || list.size() <= 0 ? new ArrayList<>() : list); orderPageVo.getOrderTourDetail().setUserVoList(list == null || list.size() <= 0 ? new ArrayList<>() : list);
} }
...@@ -295,30 +296,30 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -295,30 +296,30 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData(); Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
BigDecimal illegalReserve = new BigDecimal(dictionaryMap.get(APP_ORDER + "_" + DictionaryKey.ILLEGAL_RESERVE).getDetail()); BigDecimal illegalReserve = new BigDecimal(dictionaryMap.get(APP_ORDER + "_" + DictionaryKey.ILLEGAL_RESERVE).getDetail());
orderPageVo.setIllegalReserve(illegalReserve); orderPageVo.setIllegalReserve(illegalReserve);
orderPageVo.setItems(orderItemBiz.selectList(new OrderItem(){{ orderPageVo.setItems(orderItemBiz.selectList(new OrderItem() {{
setOrderId(orderPageVo.getId()); setOrderId(orderPageVo.getId());
}})); }}));
return ObjectRestResponse.succ(orderPageVo); return ObjectRestResponse.succ(orderPageVo);
} }
//获取两个日期之间的天数(不包含头尾) //获取两个日期之间的天数(不包含头尾)
public int getDaysBetweenDateTime(DateTime startDay, DateTime endDay) { public int getDaysBetweenDateTime(DateTime startDay, DateTime endDay) {
int a = 0; int a = 0;
for (DateTime curDate = startDay.plusDays(1); curDate.compareTo(endDay) < 0; curDate = curDate.plusDays(1)) { for (DateTime curDate = startDay.plusDays(1); curDate.compareTo(endDay) < 0; curDate = curDate.plusDays(1)) {
a++; a++;
} }
return a; return a;
} }
//获取两个日期之间的天数(包含头尾) //获取两个日期之间的天数(包含头尾)
public int getDaysBetweenDateTimeHasStartEnd(DateTime startDay, DateTime endDay) { public int getDaysBetweenDateTimeHasStartEnd(DateTime startDay, DateTime endDay) {
int a = 0; int a = 0;
for (DateTime curDate = startDay; curDate.compareTo(endDay) <= 0; curDate = curDate.plusHours(1)) { for (DateTime curDate = startDay; curDate.compareTo(endDay) <= 0; curDate = curDate.plusHours(1)) {
a++; a++;
} }
return a; return a;
} }
// public static void main(String[] args) { // public static void main(String[] args) {
// DateTime dateTime = DateTime.parse("2019-09-20 12:00:00", DEFAULT_DATE_TIME_FORMATTER); // DateTime dateTime = DateTime.parse("2019-09-20 12:00:00", DEFAULT_DATE_TIME_FORMATTER);
...@@ -329,489 +330,491 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -329,489 +330,491 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
// System.out.println(a); // System.out.println(a);
// } // }
public void updateCrossRefund(OrderPageVO orderPageVO) { public void updateCrossRefund(OrderPageVO orderPageVO) {
//计算延期费用 //计算延期费用
DedDetailDTO dedDetailDTO = new DedDetailDTO(); DedDetailDTO dedDetailDTO = new DedDetailDTO();
//提前还车,结束时间大于当前时间 //提前还车,结束时间大于当前时间
Long nowTime = System.currentTimeMillis(); Long nowTime = System.currentTimeMillis();
Long endTime = orderPageVO.getOrderRentVehicleDetail().getEndTime(); Long endTime = orderPageVO.getOrderRentVehicleDetail().getEndTime();
Long startTime = orderPageVO.getOrderRentVehicleDetail().getStartTime(); Long startTime = orderPageVO.getOrderRentVehicleDetail().getStartTime();
//设置使用天数 //设置使用天数
int userUsedDay = orderCalculateBiz.getIncludeDays(startTime, nowTime); int userUsedDay = orderCalculateBiz.getIncludeDays(startTime, nowTime);
orderPageVO.getOrderRentVehicleDetail().setUsedDay(userUsedDay); orderPageVO.getOrderRentVehicleDetail().setUsedDay(userUsedDay);
orderRentVehicleBiz.updateSelectiveById(orderPageVO.getOrderRentVehicleDetail()); orderRentVehicleBiz.updateSelectiveById(orderPageVO.getOrderRentVehicleDetail());
//实际预定的天数 //实际预定的天数
int actualDay = orderCalculateBiz.getIncludeDays(startTime, endTime); int actualDay = orderCalculateBiz.getIncludeDays(startTime, endTime);
Integer orderId = orderPageVO.getId(); InProgressVO inProgressVO = orderCalculateBiz.inProgressCalculate(orderPageVO, userUsedDay);
List<OrderItem> items = orderItemBiz.selectList(new OrderItem() {{
setOrderId(orderId);
}});
//租车车辆单价
BigDecimal amount = new BigDecimal(0);
if (items != null && items.size() > 0) {
for (OrderItem orderItem : items) {
if (orderItem.getType() == ItemTypeEnum.VEHICLE_MODEL.getCode()) {
amount = orderItem.getUnitPrice();
break;
}
}
}
/**
* 提前还车
*/
if (userUsedDay - actualDay < 0) {
StringBuilder stringBuilder = new StringBuilder();
//提前的天数, 当天就算使用一天
int noUsedDay = actualDay - userUsedDay;
//退还未使用的天数,或者金额,扣除违约金,实际未使用天数的金额,最多3000元
InProgressVO inProgressVO = orderCalculateBiz.inProgressCalculate(orderPageVO, userUsedDay);
if (inProgressVO != null) {
//消费超额金
if(inProgressVO.getExtraAmount() != null) {
dedDetailDTO.setExcessCost(inProgressVO.getExtraAmount());
}
stringBuilder.append("违约金( ");
stringBuilder.append(noUsedDay);
stringBuilder.append("天) = ");
stringBuilder.append(inProgressVO.getViolateAmount());
initDedDetail(dedDetailDTO, OrderViolateEnum.BEFORE.getCode(), inProgressVO.getViolateAmount(), stringBuilder);
}
/**
* 延期还车
*/
} else if (userUsedDay - actualDay > 0) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("违约金( ");
//延期的天数, 延期违约金是延期天数*200%
InProgressVO inProgressVO = orderCalculateBiz.inProgressCalculate(orderPageVO, userUsedDay);
if (inProgressVO != null) {
int extraUsedDay = userUsedDay - actualDay;
if(extraUsedDay > 0) {
stringBuilder.append(extraUsedDay);
stringBuilder.append("(天)");
stringBuilder.append(" x 2)");
stringBuilder.append(" = ");
stringBuilder.append(inProgressVO.getViolateAmount());
stringBuilder.append("元");
initDedDetail(dedDetailDTO, OrderViolateEnum.AFTER.getCode(), inProgressVO.getViolateAmount(), stringBuilder);
}
}
}
JSONArray jsonArray = new JSONArray(); JSONArray jsonArray = new JSONArray();
if ((dedDetailDTO.getCost() != null && dedDetailDTO.getCost().doubleValue() != 0) || (dedDetailDTO.getExcessCost()!=null && dedDetailDTO.getExcessCost().doubleValue() != 0)) { if (inProgressVO != null) {
jsonArray.add(dedDetailDTO); //新增延长还车,不计免赔额,金额大于0才显示
} if (inProgressVO.getDelayDamageSafeAmount() != null && inProgressVO.getDelayDamageSafeAmount().doubleValue() > 0) {
DedDetailDTO dedDetailDTO1 = new DedDetailDTO(); StringBuilder stringBuilder = new StringBuilder();
//添加更改还车公司计算费用 stringBuilder.append("延长用车");
if (orderPageVO.getOrderRentVehicleDetail() != null && orderPageVO.getOrderRentVehicleDetail().getBookRecordId() != null) { stringBuilder.append(inProgressVO.getDelayAddDays());
//查询是否有更换还车记录 stringBuilder.append("天, 补扣不计免赔费用");
List<BookRecordUpdateLog> bookRecordUpdateLogs = vehicleFeign.get(orderPageVO.getOrderRentVehicleDetail().getBookRecordId()).getData(); stringBuilder.append(inProgressVO.getDelayDamageSafeAmount());
if(bookRecordUpdateLogs != null && bookRecordUpdateLogs.size() > 0) { stringBuilder.append("元");
orderPageVO.setBookRecordUpdateLogs(bookRecordUpdateLogs); initDedDetail(dedDetailDTO, OrderViolateEnum.DELAY_VEHICLE.getCode(), inProgressVO.getDelayDamageSafeAmount(), stringBuilder);
//有更换记录,则需要计算更换费用 jsonArray.add(dedDetailDTO);
//原始公司经纬度,列表中最后一个 bookRecordUpdateLogs.get(bookRecordUpdateLogs.size -1 ) 最后还车公司是列表中的第一条中的getNewRetCompanyId orderPageVO.setDelayVehicleDetail(jsonArray.toJSONString());
BookRecordUpdateLog oldCompany = bookRecordUpdateLogs.get(bookRecordUpdateLogs.size() -1); jsonArray.clear();
BookRecordUpdateLog newCompany = bookRecordUpdateLogs.get(0); }
if (oldCompany != null && newCompany != null) { /**
CompanyDetail oldCompanyDetail = vehicleFeign.getCompanyDetail(oldCompany.getOldRetCompanyId()).getData(); * 提前还车
CompanyDetail newCompanyDetail = vehicleFeign.getCompanyDetail(newCompany.getNewRetCompanyId()).getData(); */
if (oldCompanyDetail.getLatitude() != null && oldCompanyDetail.getLongitude() != null && newCompanyDetail.getLongitude() != null && newCompanyDetail.getLatitude() != null) { if (userUsedDay - actualDay < 0) {
//根据经纬度获取两个公司的距离 StringBuilder stringBuilder = new StringBuilder();
double distance = DistanceUtil.getDistance(oldCompanyDetail.getLongitude().doubleValue(), oldCompanyDetail.getLatitude().doubleValue(), newCompanyDetail.getLongitude().doubleValue(), newCompanyDetail.getLatitude().doubleValue()); //提前的天数, 当天就算使用一天
log.info("两个公司的距离为(米): {}", distance); int noUsedDay = actualDay - userUsedDay;
BigDecimal distanceNum = new BigDecimal(distance + "").divide(new BigDecimal("1000"), 0, BigDecimal.ROUND_UP); //退还未使用的天数,或者金额,扣除违约金,实际未使用天数的金额,最多3000元
//取出费用计算的单价 //消费超额金
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData(); if (inProgressVO.getExtraAmount() != null) {
BigDecimal illegalReserve = new BigDecimal(dictionaryMap.get(ILLEGAL_TYPE + "_" + DictionaryKey.ILLEGAL_FEE_PRICE).getDetail()); dedDetailDTO.setExcessCost(inProgressVO.getExtraAmount());
BigDecimal totalCost = distanceNum.multiply(illegalReserve); }
log.info("更换两个公司的总费用为: {}", totalCost); stringBuilder.append("违约金( ");
StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(noUsedDay);
stringBuilder.append(illegalReserve); stringBuilder.append("天) = ");
stringBuilder.append(" x "); stringBuilder.append(inProgressVO.getViolateAmount());
stringBuilder.append(distanceNum); initDedDetail(dedDetailDTO, OrderViolateEnum.BEFORE.getCode(), inProgressVO.getViolateAmount(), stringBuilder);
stringBuilder.append("(KM)"); /**
stringBuilder.append(" = "); * 延期还车
stringBuilder.append(totalCost); */
stringBuilder.append("元"); } else if (userUsedDay - actualDay > 0) {
dedDetailDTO1.setCost(totalCost); StringBuilder stringBuilder = new StringBuilder();
initDedDetail(dedDetailDTO1, OrderViolateEnum.CHANGE.getCode(), totalCost, stringBuilder); stringBuilder.append("违约金( ");
} //延期的天数, 延期违约金是延期天数*200%
} int extraUsedDay = userUsedDay - actualDay;
} if (extraUsedDay > 0) {
} stringBuilder.append(extraUsedDay);
if (dedDetailDTO1.getCost() != null && dedDetailDTO1.getCost().doubleValue() != 0) { stringBuilder.append("(天)");
jsonArray.add(dedDetailDTO1); stringBuilder.append(" x 2)");
} stringBuilder.append(" = ");
orderPageVO.setDedDetailDTO(jsonArray.toJSONString()); stringBuilder.append(inProgressVO.getViolateAmount());
} stringBuilder.append("元");
initDedDetail(dedDetailDTO, OrderViolateEnum.AFTER.getCode(), inProgressVO.getViolateAmount(), stringBuilder);
}
/** }
* 初始化违约金实体 }
* @param dedDetailDTO if ((dedDetailDTO.getCost() != null && dedDetailDTO.getCost().doubleValue() != 0) || (dedDetailDTO.getExcessCost() != null && dedDetailDTO.getExcessCost().doubleValue() != 0)) {
* @param type jsonArray.add(dedDetailDTO);
* @param cost }
* @param stringBuilder DedDetailDTO dedDetailDTO1 = new DedDetailDTO();
*/ //添加更改还车公司计算费用
public void initDedDetail(DedDetailDTO dedDetailDTO, Integer type, BigDecimal cost, StringBuilder stringBuilder) { if (orderPageVO.getOrderRentVehicleDetail() != null && orderPageVO.getOrderRentVehicleDetail().getBookRecordId() != null) {
String detailName = null; //查询是否有更换还车记录
if (type == OrderViolateEnum.BEFORE.getCode()) { List<BookRecordUpdateLog> bookRecordUpdateLogs = vehicleFeign.get(orderPageVO.getOrderRentVehicleDetail().getBookRecordId()).getData();
dedDetailDTO.setType(OrderViolateEnum.BEFORE.getCode()); if (bookRecordUpdateLogs != null && bookRecordUpdateLogs.size() > 0) {
detailName = "提前还车违约金"; orderPageVO.setBookRecordUpdateLogs(bookRecordUpdateLogs);
} else if (type == OrderViolateEnum.AFTER.getCode()) { //有更换记录,则需要计算更换费用
dedDetailDTO.setType(OrderViolateEnum.AFTER.getCode()); //原始公司经纬度,列表中最后一个 bookRecordUpdateLogs.get(bookRecordUpdateLogs.size -1 ) 最后还车公司是列表中的第一条中的getNewRetCompanyId
detailName = "延期还车违约金"; BookRecordUpdateLog oldCompany = bookRecordUpdateLogs.get(bookRecordUpdateLogs.size() - 1);
} else if (type == OrderViolateEnum.CHANGE.getCode()) { BookRecordUpdateLog newCompany = bookRecordUpdateLogs.get(0);
dedDetailDTO.setType(OrderViolateEnum.CHANGE.getCode()); if (oldCompany != null && newCompany != null) {
detailName = "更换还车公司"; CompanyDetail oldCompanyDetail = vehicleFeign.getCompanyDetail(oldCompany.getOldRetCompanyId()).getData();
} CompanyDetail newCompanyDetail = vehicleFeign.getCompanyDetail(newCompany.getNewRetCompanyId()).getData();
//900元+违约金(¥900x2天=)1800元 if (oldCompanyDetail.getLatitude() != null && oldCompanyDetail.getLongitude() != null && newCompanyDetail.getLongitude() != null && newCompanyDetail.getLatitude() != null) {
dedDetailDTO.setDeductions(stringBuilder.toString()); //根据经纬度获取两个公司的距离
dedDetailDTO.setCost(cost); double distance = DistanceUtil.getDistance(oldCompanyDetail.getLongitude().doubleValue(), oldCompanyDetail.getLatitude().doubleValue(), newCompanyDetail.getLongitude().doubleValue(), newCompanyDetail.getLatitude().doubleValue());
dedDetailDTO.setId(1); log.info("两个公司的距离为(米): {}", distance);
dedDetailDTO.setStatusIndex(1); BigDecimal distanceNum = new BigDecimal(distance + "").divide(new BigDecimal("1000"), 0, BigDecimal.ROUND_UP);
dedDetailDTO.setStatusName(detailName); //取出费用计算的单价
} Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
BigDecimal illegalReserve = new BigDecimal(dictionaryMap.get(ILLEGAL_TYPE + "_" + DictionaryKey.ILLEGAL_FEE_PRICE).getDetail());
/** BigDecimal totalCost = distanceNum.multiply(illegalReserve);
* 获取驾驶人驾照 log.info("更换两个公司的总费用为: {}", totalCost);
* @param orderPageVo StringBuilder stringBuilder = new StringBuilder();
*/ stringBuilder.append(illegalReserve);
public void getUserLicense(OrderPageVO orderPageVo) { stringBuilder.append(" x ");
OrderVehicleCrosstownDto orderVehicleCrosstownDto = new OrderVehicleCrosstownDto(); stringBuilder.append(distanceNum);
orderVehicleCrosstownDto.setOrderId(orderPageVo.getId()); stringBuilder.append("(KM)");
orderVehicleCrosstownDto.setOrderNo(orderPageVo.getNo()); stringBuilder.append(" = ");
List<OrderVehicleCrosstownDto> orderVehicleCrosstown = orderVehicleCrosstownBiz.selectByOrderId(orderVehicleCrosstownDto); stringBuilder.append(totalCost);
if (orderVehicleCrosstown != null && orderVehicleCrosstown.size() > 0) { stringBuilder.append("元");
List<OrderUserLicense> orderUserLicenses = orderUserLicenseBiz.selectByIds(orderVehicleCrosstown.get(0).getUserLicenseId()).getData(); dedDetailDTO1.setCost(totalCost);
if (orderUserLicenses != null && orderUserLicenses.size() > 0) { initDedDetail(dedDetailDTO1, OrderViolateEnum.CHANGE.getCode(), totalCost, stringBuilder);
orderVehicleCrosstownDto.setLicenseIdCard(orderUserLicenses.get(0).getLicenseIdCard()); }
orderVehicleCrosstownDto.setLicenseImg(orderUserLicenses.get(0).getLicenseImg()); }
orderVehicleCrosstownDto.setLicenseName(orderUserLicenses.get(0).getLicenseName()); }
orderVehicleCrosstownDto.setLicensePhone(orderUserLicenses.get(0).getLicensePhone()); }
} if (dedDetailDTO1.getCost() != null && dedDetailDTO1.getCost().doubleValue() != 0) {
//设置违约明细 jsonArray.add(dedDetailDTO1);
for (OrderVehicleCrosstownDto a : orderVehicleCrosstown) { }
if(a.getType() != CrosstownTypeEnum.DEPARTURE.getCode()) { orderPageVO.setDedDetailDTO(jsonArray.toJSONString());
if(StringUtils.isNotBlank(a.getViolateDetail())) { }
orderPageVo.setDedDetailDTO(a.getViolateDetail());
}
}
}
}
if (StringUtils.isBlank(orderPageVo.getDedDetailDTO())) {
updateCrossRefund(orderPageVo);
}
orderPageVo.setOrderVehicleCrosstownDto(orderVehicleCrosstownDto);
}
//后台获取用户驾驶信息
public void getUserLicense1(OrderPageVO orderPageVo) {
OrderVehicleCrosstownDto orderVehicleCrosstownDto = new OrderVehicleCrosstownDto();
orderVehicleCrosstownDto.setOrderId(orderPageVo.getId());
orderVehicleCrosstownDto.setOrderNo(orderPageVo.getNo());
List<OrderVehicleCrosstownDto> orderVehicleCrosstown = orderVehicleCrosstownBiz.selectByOrderId(orderVehicleCrosstownDto);
if (orderVehicleCrosstown != null && orderVehicleCrosstown.size() > 0) {
List<OrderUserLicense> orderUserLicenses = orderUserLicenseBiz.selectByIds(orderVehicleCrosstown.get(0).getUserLicenseId()).getData();
if (orderUserLicenses != null && orderUserLicenses.size() > 0) {
orderVehicleCrosstownDto.setLicenseIdCard(orderUserLicenses.get(0).getLicenseIdCard());
orderVehicleCrosstownDto.setLicenseImg(orderUserLicenses.get(0).getLicenseImg());
orderVehicleCrosstownDto.setLicenseName(orderUserLicenses.get(0).getLicenseName());
orderVehicleCrosstownDto.setLicensePhone(orderUserLicenses.get(0).getLicensePhone());
}
//设置违约明细
for (OrderVehicleCrosstownDto a : orderVehicleCrosstown) {
if(a.getType() != CrosstownTypeEnum.DEPARTURE.getCode()) {
if(StringUtils.isNotBlank(a.getViolateDetail())) {
orderPageVo.setDedDetailDTO(a.getViolateDetail());
}
}
}
}
orderPageVo.setOrderVehicleCrosstownDto(orderVehicleCrosstownDto);
}
/**
* 获取驾驶人信息
* @param orderPageVo
*/
public void getDriverInfo(OrderPageVO orderPageVo) {
List<VehicleUserLicense> vehicleUserLicenses = Lists.newArrayList();
String myDriverIds = orderPageVo.getOrderRentVehicleDetail().getMyDriverIds();
if (StringUtils.isNotBlank(myDriverIds)) {
if (myDriverIds.contains(",")) {
String[] ids = myDriverIds.split(",");
try {
//目前暂定一个驾驶人,后期需要更改再此更改
RestResponse<VehicleUserLicense> restResponse = vehicleFeign.getOne(Integer.parseInt(ids[0]));
log.info(restResponse.getMessage());
if (restResponse.getData() != null) {
vehicleUserLicenses.add(restResponse.getData());
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
} else {
try {
vehicleUserLicenses.add(vehicleFeign.getOne(Integer.parseInt(myDriverIds.trim())).getData());
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}
orderPageVo.setVehicleUserLicenses(vehicleUserLicenses);
}
/**
* 修改订单还车公司
* @param orderRentVehicleDetail
* @return
*/
public ObjectRestResponse save(OrderRentVehicleDetail orderRentVehicleDetail) {
if (orderRentVehicleDetail == null || orderRentVehicleDetail.getId() == null) {
return ObjectRestResponse.paramIsEmpty();
}
log.info("更新订单还车地点》》》 orderRentVehicleDetail = {}", orderRentVehicleDetail.toString());
UserDTO userDTO = getAdminUserInfo();
if (userDTO == null) {
return ObjectRestResponse.createFailedResult(ResultCode.RSTOKEN_EXPIRED_CODE, ResultCode.getMsg(ResultCode.RSTOKEN_EXPIRED_CODE));
}
StringBuilder stringBuilder = new StringBuilder();
OrderRentVehicleDetail oldValue = orderRentVehicleBiz.selectById(orderRentVehicleDetail.getId()); /**
if(oldValue == null) { * 初始化违约金实体
return ObjectRestResponse.createFailedResult(ResCode.ORDER_IS_NOT_EXIST.getCode(), ResCode.ORDER_IS_NOT_EXIST.getDesc()); *
} * @param dedDetailDTO
stringBuilder.append("修改订单和预定记录还车公司成功, 订单ID:"); * @param type
stringBuilder.append( oldValue.getOrderId()); * @param cost
stringBuilder.append("; 原还车公司ID: "); * @param stringBuilder
stringBuilder.append(oldValue.getEndCompanyId()); */
stringBuilder.append("; 更新后还车公司ID: "); public void initDedDetail(DedDetailDTO dedDetailDTO, Integer type, BigDecimal cost, StringBuilder stringBuilder) {
stringBuilder.append(orderRentVehicleDetail.getEndCompanyId()); String detailName = null;
stringBuilder.append("; 操作人ID:"); if (type == OrderViolateEnum.BEFORE.getCode()) {
stringBuilder.append(userDTO.getId()); dedDetailDTO.setType(OrderViolateEnum.BEFORE.getCode());
stringBuilder.append("; 操作人账号:"); detailName = "提前还车违约金";
stringBuilder.append(userDTO.getUsername()); } else if (type == OrderViolateEnum.AFTER.getCode()) {
//添加修改记录实体 dedDetailDTO.setType(OrderViolateEnum.AFTER.getCode());
BookRecordUpdateLog bookRecordUpdateLog = new BookRecordUpdateLog(); detailName = "延期还车违约金";
bookRecordUpdateLog.setBookRecordId(oldValue.getBookRecordId()); } else if (type == OrderViolateEnum.CHANGE.getCode()) {
bookRecordUpdateLog.setOldRetCompanyId(oldValue.getEndCompanyId()); dedDetailDTO.setType(OrderViolateEnum.CHANGE.getCode());
bookRecordUpdateLog.setNewRetCompanyId(orderRentVehicleDetail.getEndCompanyId()); detailName = "更换还车公司";
bookRecordUpdateLog.setOperaterId(userDTO.getId()); } else if (type == OrderViolateEnum.DELAY_VEHICLE.getCode()) {
bookRecordUpdateLog.setOperaterName(userDTO.getName()); dedDetailDTO.setType(1);
bookRecordUpdateLog.setOrderId(oldValue.getOrderId()); detailName = "延长还车";
bookRecordUpdateLog.setCreateTime(new Date());
BeanUtil.copyProperties(orderRentVehicleDetail, oldValue, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
CompanyDetail companyDetail = vehicleFeign.getCompanyDetail(orderRentVehicleDetail.getEndCompanyId()).getData();
if(companyDetail != null) {
oldValue.setEndCity(companyDetail.getAddrCity());
oldValue.setEndAddr(companyDetail.detailAddr());
}
oldValue.setEndCompanyId(orderRentVehicleDetail.getEndCompanyId());
orderRentVehicleBiz.updateSelectiveByIdRe(oldValue);
ObjectRestResponse objectRestResponse = vehicleFeign.update(bookRecordUpdateLog);
if (objectRestResponse!= null && objectRestResponse.getRel()) {
log.info(stringBuilder.toString());
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createFailedResult(1355, "修改失败!");
}
/**
* 获取订单详情,包含驾驶人信息,违约金等信息
* @param no
* @return
*/
public ObjectRestResponse<OrderPageVO> getOrderDetail(String no) {
OrderPageVO orderPageVo = mapper.getOrderDetail(no);
if (orderPageVo == null) {
return ObjectRestResponse.createFailedResult(ResCode.ORDER_IS_NOT_EXIST.getCode(), ResCode.ORDER_IS_NOT_EXIST.getDesc());
} }
if (orderPageVo.getOrderRentVehicleDetail() != null) { //900元+违约金(¥900x2天=)1800元
if (orderPageVo.getStatus() == 4) { //未交车 dedDetailDTO.setDeductions(stringBuilder.toString());
dedDetailDTO.setCost(cost);
dedDetailDTO.setId(1);
dedDetailDTO.setStatusIndex(1);
dedDetailDTO.setStatusName(detailName);
}
/**
* 获取驾驶人驾照
*
* @param orderPageVo
*/
public void getUserLicense(OrderPageVO orderPageVo) {
OrderVehicleCrosstownDto orderVehicleCrosstownDto = new OrderVehicleCrosstownDto();
orderVehicleCrosstownDto.setOrderId(orderPageVo.getId());
orderVehicleCrosstownDto.setOrderNo(orderPageVo.getNo());
List<OrderVehicleCrosstownDto> orderVehicleCrosstown = orderVehicleCrosstownBiz.selectByOrderId(orderVehicleCrosstownDto);
if (orderVehicleCrosstown != null && orderVehicleCrosstown.size() > 0) {
List<OrderUserLicense> orderUserLicenses = orderUserLicenseBiz.selectByIds(orderVehicleCrosstown.get(0).getUserLicenseId()).getData();
if (orderUserLicenses != null && orderUserLicenses.size() > 0) {
orderVehicleCrosstownDto.setLicenseIdCard(orderUserLicenses.get(0).getLicenseIdCard());
orderVehicleCrosstownDto.setLicenseImg(orderUserLicenses.get(0).getLicenseImg());
orderVehicleCrosstownDto.setLicenseName(orderUserLicenses.get(0).getLicenseName());
orderVehicleCrosstownDto.setLicensePhone(orderUserLicenses.get(0).getLicensePhone());
}
//设置违约明细
for (OrderVehicleCrosstownDto a : orderVehicleCrosstown) {
if (a.getType() != CrosstownTypeEnum.DEPARTURE.getCode()) {
if (StringUtils.isNotBlank(a.getViolateDetail())) {
orderPageVo.setDedDetailDTO(a.getViolateDetail());
}
}
}
}
if (StringUtils.isBlank(orderPageVo.getDedDetailDTO())) {
updateCrossRefund(orderPageVo);
}
orderPageVo.setOrderVehicleCrosstownDto(orderVehicleCrosstownDto);
}
//后台获取用户驾驶信息
public void getUserLicense1(OrderPageVO orderPageVo) {
OrderVehicleCrosstownDto orderVehicleCrosstownDto = new OrderVehicleCrosstownDto();
orderVehicleCrosstownDto.setOrderId(orderPageVo.getId());
orderVehicleCrosstownDto.setOrderNo(orderPageVo.getNo());
List<OrderVehicleCrosstownDto> orderVehicleCrosstown = orderVehicleCrosstownBiz.selectByOrderId(orderVehicleCrosstownDto);
if (orderVehicleCrosstown != null && orderVehicleCrosstown.size() > 0) {
List<OrderUserLicense> orderUserLicenses = orderUserLicenseBiz.selectByIds(orderVehicleCrosstown.get(0).getUserLicenseId()).getData();
if (orderUserLicenses != null && orderUserLicenses.size() > 0) {
orderVehicleCrosstownDto.setLicenseIdCard(orderUserLicenses.get(0).getLicenseIdCard());
orderVehicleCrosstownDto.setLicenseImg(orderUserLicenses.get(0).getLicenseImg());
orderVehicleCrosstownDto.setLicenseName(orderUserLicenses.get(0).getLicenseName());
orderVehicleCrosstownDto.setLicensePhone(orderUserLicenses.get(0).getLicensePhone());
}
//设置违约明细
for (OrderVehicleCrosstownDto a : orderVehicleCrosstown) {
if (a.getType() != CrosstownTypeEnum.DEPARTURE.getCode()) {
if (StringUtils.isNotBlank(a.getViolateDetail())) {
orderPageVo.setDedDetailDTO(a.getViolateDetail());
}
}
}
}
orderPageVo.setOrderVehicleCrosstownDto(orderVehicleCrosstownDto);
}
/**
* 获取驾驶人信息
*
* @param orderPageVo
*/
public void getDriverInfo(OrderPageVO orderPageVo) {
List<VehicleUserLicense> vehicleUserLicenses = Lists.newArrayList();
String myDriverIds = orderPageVo.getOrderRentVehicleDetail().getMyDriverIds();
if (StringUtils.isNotBlank(myDriverIds)) {
if (myDriverIds.contains(",")) {
String[] ids = myDriverIds.split(",");
try {
//目前暂定一个驾驶人,后期需要更改再此更改
RestResponse<VehicleUserLicense> restResponse = vehicleFeign.getOne(Integer.parseInt(ids[0]));
log.info(restResponse.getMessage());
if (restResponse.getData() != null) {
vehicleUserLicenses.add(restResponse.getData());
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
} else {
try {
vehicleUserLicenses.add(vehicleFeign.getOne(Integer.parseInt(myDriverIds.trim())).getData());
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}
orderPageVo.setVehicleUserLicenses(vehicleUserLicenses);
}
/**
* 修改订单还车公司
*
* @param orderRentVehicleDetail
* @return
*/
public ObjectRestResponse save(OrderRentVehicleDetail orderRentVehicleDetail) {
if (orderRentVehicleDetail == null || orderRentVehicleDetail.getId() == null) {
return ObjectRestResponse.paramIsEmpty();
}
log.info("更新订单还车地点》》》 orderRentVehicleDetail = {}", orderRentVehicleDetail.toString());
UserDTO userDTO = getAdminUserInfo();
if (userDTO == null) {
return ObjectRestResponse.createFailedResult(ResultCode.RSTOKEN_EXPIRED_CODE, ResultCode.getMsg(ResultCode.RSTOKEN_EXPIRED_CODE));
}
StringBuilder stringBuilder = new StringBuilder();
OrderRentVehicleDetail oldValue = orderRentVehicleBiz.selectById(orderRentVehicleDetail.getId());
if (oldValue == null) {
return ObjectRestResponse.createFailedResult(ResCode.ORDER_IS_NOT_EXIST.getCode(), ResCode.ORDER_IS_NOT_EXIST.getDesc());
}
stringBuilder.append("修改订单和预定记录还车公司成功, 订单ID:");
stringBuilder.append(oldValue.getOrderId());
stringBuilder.append("; 原还车公司ID: ");
stringBuilder.append(oldValue.getEndCompanyId());
stringBuilder.append("; 更新后还车公司ID: ");
stringBuilder.append(orderRentVehicleDetail.getEndCompanyId());
stringBuilder.append("; 操作人ID:");
stringBuilder.append(userDTO.getId());
stringBuilder.append("; 操作人账号:");
stringBuilder.append(userDTO.getUsername());
//添加修改记录实体
BookRecordUpdateLog bookRecordUpdateLog = new BookRecordUpdateLog();
bookRecordUpdateLog.setBookRecordId(oldValue.getBookRecordId());
bookRecordUpdateLog.setOldRetCompanyId(oldValue.getEndCompanyId());
bookRecordUpdateLog.setNewRetCompanyId(orderRentVehicleDetail.getEndCompanyId());
bookRecordUpdateLog.setOperaterId(userDTO.getId());
bookRecordUpdateLog.setOperaterName(userDTO.getName());
bookRecordUpdateLog.setOrderId(oldValue.getOrderId());
bookRecordUpdateLog.setCreateTime(new Date());
BeanUtil.copyProperties(orderRentVehicleDetail, oldValue, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
CompanyDetail companyDetail = vehicleFeign.getCompanyDetail(orderRentVehicleDetail.getEndCompanyId()).getData();
if (companyDetail != null) {
oldValue.setEndCity(companyDetail.getAddrCity());
oldValue.setEndAddr(companyDetail.detailAddr());
}
oldValue.setEndCompanyId(orderRentVehicleDetail.getEndCompanyId());
orderRentVehicleBiz.updateSelectiveByIdRe(oldValue);
ObjectRestResponse objectRestResponse = vehicleFeign.update(bookRecordUpdateLog);
if (objectRestResponse != null && objectRestResponse.getRel()) {
log.info(stringBuilder.toString());
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createFailedResult(1355, "修改失败!");
}
/**
* 获取订单详情,包含驾驶人信息,违约金等信息
*
* @param no
* @return
*/
public ObjectRestResponse<OrderPageVO> getOrderDetail(String no) {
OrderPageVO orderPageVo = mapper.getOrderDetail(no);
if (orderPageVo == null) {
return ObjectRestResponse.createFailedResult(ResCode.ORDER_IS_NOT_EXIST.getCode(), ResCode.ORDER_IS_NOT_EXIST.getDesc());
}
if (orderPageVo.getOrderRentVehicleDetail() != null) {
if (orderPageVo.getStatus() == 4) { //未交车
// boolean flag = getTodayTime(orderPageVo.getOrderRentVehicleDetail().getStartTime()); // boolean flag = getTodayTime(orderPageVo.getOrderRentVehicleDetail().getStartTime());
// if (!flag) { // if (!flag) {
// return ObjectRestResponse.createFailedResult(3501, "今日不是交车日期"); // return ObjectRestResponse.createFailedResult(3501, "今日不是交车日期");
// } // }
getDriverInfo(orderPageVo); getDriverInfo(orderPageVo);
} else if (orderPageVo.getStatus() >= 5 || orderPageVo.getStatus() == -1) {//出行中 已交车 } else if (orderPageVo.getStatus() >= 5 || orderPageVo.getStatus() == -1) {//出行中 已交车
getDriverInfo(orderPageVo); getDriverInfo(orderPageVo);
getUserLicense(orderPageVo); getUserLicense(orderPageVo);
} }
RestResponse<Vehicle> restResponse = vehicleFeign.findById(orderPageVo.getOrderRentVehicleDetail().getVehicleId()); RestResponse<Vehicle> restResponse = vehicleFeign.findById(orderPageVo.getOrderRentVehicleDetail().getVehicleId());
if (restResponse.getData() != null) { if (restResponse.getData() != null) {
orderPageVo.setVehicalNumberPlat(restResponse.getData().getNumberPlate()); orderPageVo.setVehicalNumberPlat(restResponse.getData().getNumberPlate());
} }
} else if (orderPageVo.getOrderTourDetail() != null) { } else if (orderPageVo.getOrderTourDetail() != null) {
if(StringUtils.isNotBlank(orderPageVo.getOrderTourDetail().getTourUserIds())) { if (StringUtils.isNotBlank(orderPageVo.getOrderTourDetail().getTourUserIds())) {
List<TourUser> list = tourFeign.getTourUsers(orderPageVo.getOrderTourDetail().getTourUserIds()).getData(); List<TourUser> list = tourFeign.getTourUsers(orderPageVo.getOrderTourDetail().getTourUserIds()).getData();
orderPageVo.getOrderTourDetail().setUserVoList(list == null || list.size() <= 0 ? new ArrayList<>() : list); orderPageVo.getOrderTourDetail().setUserVoList(list == null || list.size() <= 0 ? new ArrayList<>() : list);
} }
} }
//设置保留金 //设置保留金
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData(); Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
BigDecimal illegalReserve = new BigDecimal(dictionaryMap.get(APP_ORDER + "_" + DictionaryKey.ILLEGAL_RESERVE).getDetail()); BigDecimal illegalReserve = new BigDecimal(dictionaryMap.get(APP_ORDER + "_" + DictionaryKey.ILLEGAL_RESERVE).getDetail());
orderPageVo.setIllegalReserve(illegalReserve); orderPageVo.setIllegalReserve(illegalReserve);
orderPageVo.setItems(orderItemBiz.selectList(new OrderItem(){{ orderPageVo.setItems(orderItemBiz.selectList(new OrderItem() {{
setOrderId(orderPageVo.getId()); setOrderId(orderPageVo.getId());
}})); }}));
return ObjectRestResponse.succ(orderPageVo); return ObjectRestResponse.succ(orderPageVo);
} }
/** /**
* 支付回调处理 * 支付回调处理
* *
* @param orderNo * @param orderNo
* @param tradeNo * @param tradeNo
*/ */
@Transactional @Transactional
public void payNotifyHandle(String orderNo, String tradeNo, Integer type, Integer payWay) { public void payNotifyHandle(String orderNo, String tradeNo, Integer type, Integer payWay) {
OrderRentVehicleDetail orvd = new OrderRentVehicleDetail(); OrderRentVehicleDetail orvd = new OrderRentVehicleDetail();
OrderTourDetail otd = new OrderTourDetail(); OrderTourDetail otd = new OrderTourDetail();
OrderMemberDetail omd = new OrderMemberDetail(); OrderMemberDetail omd = new OrderMemberDetail();
BaseOrder baseOrder = this.selectOne(new BaseOrder() {{ BaseOrder baseOrder = this.selectOne(new BaseOrder() {{
setNo(orderNo); setNo(orderNo);
}}); }});
if (OrderStatusEnum.ORDER_UNPAY.getCode().equals(baseOrder.getStatus()) && baseOrder.getHasPay().equals(SYS_FALSE)) { if (OrderStatusEnum.ORDER_UNPAY.getCode().equals(baseOrder.getStatus()) && baseOrder.getHasPay().equals(SYS_FALSE)) {
BaseOrder updateOrder = new BaseOrder() {{ BaseOrder updateOrder = new BaseOrder() {{
setId(baseOrder.getId()); setId(baseOrder.getId());
setOutTradeNo(tradeNo); setOutTradeNo(tradeNo);
setHasPay(SYS_TRUE); setHasPay(SYS_TRUE);
setPayTime(System.currentTimeMillis()); setPayTime(System.currentTimeMillis());
setPayOrigin(type); setPayOrigin(type);
setPayWay(payWay); setPayWay(payWay);
setVersion(baseOrder.getVersion()); setVersion(baseOrder.getVersion());
}}; }};
//订单账款类 //订单账款类
OrderAccountDetail oad = new OrderAccountDetail(); OrderAccountDetail oad = new OrderAccountDetail();
oad.setOriginOrderAmount(baseOrder.getGoodsAmount().subtract(baseOrder.getCouponAmount())); oad.setOriginOrderAmount(baseOrder.getGoodsAmount().subtract(baseOrder.getCouponAmount()));
//账单的的orderAmount 对应 的是商品金额 //账单的的orderAmount 对应 的是商品金额
oad.setOrderAmount(baseOrder.getGoodsAmount().subtract(baseOrder.getCouponAmount())); oad.setOrderAmount(baseOrder.getGoodsAmount().subtract(baseOrder.getCouponAmount()));
//如果是会员订单,则触发会员效益 //如果是会员订单,则触发会员效益
if (OrderTypeEnum.MEMBER.getCode().equals(baseOrder.getType())) { if (OrderTypeEnum.MEMBER.getCode().equals(baseOrder.getType())) {
//直接设置订单完成 //直接设置订单完成
updateOrder.setStatus(OrderStatusEnum.ORDER_FINISH.getCode()); updateOrder.setStatus(OrderStatusEnum.ORDER_FINISH.getCode());
omd = orderMemberDetailBiz.selectOne(new OrderMemberDetail() {{ omd = orderMemberDetailBiz.selectOne(new OrderMemberDetail() {{
setOrderId(baseOrder.getId()); setOrderId(baseOrder.getId());
}}); }});
//触发会员效益 //触发会员效益
UserMemberDTO userMemberDTO = new UserMemberDTO() {{ UserMemberDTO userMemberDTO = new UserMemberDTO() {{
setUserId(baseOrder.getUserId()); setUserId(baseOrder.getUserId());
setIsBind(ISBIND_BIND); setIsBind(ISBIND_BIND);
}}; }};
userMemberDTO.setMemberLevel(omd.getMemberLevel()); userMemberDTO.setMemberLevel(omd.getMemberLevel());
userMemberDTO.setRentFreeDays(omd.getRentFreeNum()); userMemberDTO.setRentFreeDays(omd.getRentFreeNum());
userMemberDTO.setTotalNumber(omd.getRentFreeNum()); userMemberDTO.setTotalNumber(omd.getRentFreeNum());
userMemberDTO.setDiscount(omd.getRebate()); userMemberDTO.setDiscount(omd.getRebate());
ObjectRestResponse orr = userFeign.buyMember(userMemberDTO); ObjectRestResponse orr = userFeign.buyMember(userMemberDTO);
log.info("orr.getStatus() : " + orr.getStatus()); log.info("orr.getStatus() : " + orr.getStatus());
} else if (OrderTypeEnum.RENT_VEHICLE.getCode().equals(baseOrder.getType())) { } else if (OrderTypeEnum.RENT_VEHICLE.getCode().equals(baseOrder.getType())) {
updateOrder.setStatus(OrderStatusEnum.ORDER_TOSTART.getCode()); updateOrder.setStatus(OrderStatusEnum.ORDER_TOSTART.getCode());
orvd = orderRentVehicleBiz.selectOne(new OrderRentVehicleDetail() {{ orvd = orderRentVehicleBiz.selectOne(new OrderRentVehicleDetail() {{
setOrderId(baseOrder.getId()); setOrderId(baseOrder.getId());
}}); }});
//账款设置押金 //账款设置押金
oad.setOriginDepositAmount(orvd.getDeposit()); oad.setOriginDepositAmount(orvd.getDeposit());
oad.setDepositAmount(orvd.getDeposit()); oad.setDepositAmount(orvd.getDeposit());
//车辆预定审核通过 //车辆预定审核通过
RestResponse<Integer> result = vehicleFeign.rentProveVehicleBooking(orvd.getBookRecordId()); RestResponse<Integer> result = vehicleFeign.rentProveVehicleBooking(orvd.getBookRecordId());
//确认免费天数 //确认免费天数
if (orvd.getFreeDays() > 0) { if (orvd.getFreeDays() > 0) {
userFeign.memberDays(baseOrder.getUserId(), orvd.getFreeDays(), UserFeign.MEMBER_DAYS_CONFIRM); userFeign.memberDays(baseOrder.getUserId(), orvd.getFreeDays(), UserFeign.MEMBER_DAYS_CONFIRM);
} }
} else if (OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) { } else if (OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
updateOrder.setStatus(OrderStatusEnum.ORDER_TOSTART.getCode()); updateOrder.setStatus(OrderStatusEnum.ORDER_TOSTART.getCode());
otd = orderTourDetailBiz.selectOne(new OrderTourDetail() {{ otd = orderTourDetailBiz.selectOne(new OrderTourDetail() {{
setOrderId(baseOrder.getId()); setOrderId(baseOrder.getId());
}}); }});
//站点总人数添加 //站点总人数添加
tourFeign.updateTourGoodPersonNum(otd.getVerificationId(), TourFeign.TOTAL_PERSON, otd.getTotalNumber()); tourFeign.updateTourGoodPersonNum(otd.getVerificationId(), TourFeign.TOTAL_PERSON, otd.getTotalNumber());
} }
try { try {
this.updateSelectiveByIdRe(updateOrder); this.updateSelectiveByIdRe(updateOrder);
//记录订单账款记录 //记录订单账款记录
Integer flag = orderAccountBiz.addOrderAccount(baseOrder.getId(), "订单支付", oad.getOriginOrderAmount().add(oad.getOriginDepositAmount()), oad.getOrderAmount().add(oad.getDepositAmount()), tradeNo, AccountTypeEnum.IN_ORDER_PAY.getCode(), JSONUtil.toJsonStr(oad)); Integer flag = orderAccountBiz.addOrderAccount(baseOrder.getId(), "订单支付", oad.getOriginOrderAmount().add(oad.getOriginDepositAmount()), oad.getOrderAmount().add(oad.getDepositAmount()), tradeNo, AccountTypeEnum.IN_ORDER_PAY.getCode(), JSONUtil.toJsonStr(oad));
} finally { } finally {
AppUserDTO appUserDTO = userFeign.userDetailById(baseOrder.getUserId()).getData(); AppUserDTO appUserDTO = userFeign.userDetailById(baseOrder.getUserId()).getData();
//处理App用户提醒短信的发送 //处理App用户提醒短信的发送
// orderMsgBiz.handelAppUserMsg(orvd, omd, baseOrder, appUserDTO); // orderMsgBiz.handelAppUserMsg(orvd, omd, baseOrder, appUserDTO);
orderMsgBiz.handelMsgPayNew(orvd, otd, omd, baseOrder, appUserDTO); orderMsgBiz.handelMsgPayNew(orvd, otd, omd, baseOrder, appUserDTO);
//处理后台用户提醒短信的发送 //处理后台用户提醒短信的发送
// orderMsgBiz.handelBgUserMsg4Pay(orvd, baseOrder, appUserDTO, OrderMsgBiz.RENT_PAY); // orderMsgBiz.handelBgUserMsg4Pay(orvd, baseOrder, appUserDTO, OrderMsgBiz.RENT_PAY);
sendOrderMq(orvd, otd, omd, baseOrder, OrderMQDTO.ORDER_PAY); sendOrderMq(orvd, otd, omd, baseOrder, OrderMQDTO.ORDER_PAY);
if(OrderTypeEnum.MEMBER.getCode().equals(baseOrder.getType())) { if (OrderTypeEnum.MEMBER.getCode().equals(baseOrder.getType())) {
sendOrderMq(orvd, otd, omd, baseOrder, OrderMQDTO.ORDER_FINISH); sendOrderMq(orvd, otd, omd, baseOrder, OrderMQDTO.ORDER_FINISH);
} }
} }
} else { } else {
log.error(" order has payed , orderNo:{}, tradeNo:{} ", orderNo, tradeNo); log.error(" order has payed , orderNo:{}, tradeNo:{} ", orderNo, tradeNo);
} }
} }
public void sendOrderMq(OrderRentVehicleDetail orvd, OrderTourDetail otd, OrderMemberDetail omd, BaseOrder baseOrder, Integer sign) { public void sendOrderMq(OrderRentVehicleDetail orvd, OrderTourDetail otd, OrderMemberDetail omd, BaseOrder baseOrder, Integer sign) {
//发送队列消息 //发送队列消息
OrderMQDTO orderMQDTO = BeanUtil.toBean(baseOrder, OrderMQDTO.class); OrderMQDTO orderMQDTO = BeanUtil.toBean(baseOrder, OrderMQDTO.class);
orderMQDTO.setOrderRentVehicleDetail(orvd); orderMQDTO.setOrderRentVehicleDetail(orvd);
orderMQDTO.setOrderTourDetail(otd); orderMQDTO.setOrderTourDetail(otd);
orderMQDTO.setOrderMemberDetail(omd); orderMQDTO.setOrderMemberDetail(omd);
//获取item //获取item
orderMQDTO.setItems(orderItemBiz.selectList(new OrderItem() {{ orderMQDTO.setItems(orderItemBiz.selectList(new OrderItem() {{
setOrderId(baseOrder.getId()); setOrderId(baseOrder.getId());
}})); }}));
sendQueue(orderMQDTO, sign);
}
@Override
public void updateSelectiveById(BaseOrder entity) {
super.updateSelectiveById(entity);
}
/**
* 更新(不成功抛异常)
*
* @param baseOrder
* @return
*/
public BaseOrder updateSelectiveByIdReT(BaseOrder baseOrder) {
return updateSelectiveByIdReT(baseOrder, false);
}
/**
* 更新(不成功抛异常)
*
* @param baseOrder
* @return
*/
public BaseOrder updateSelectiveByIdReT(BaseOrder baseOrder, boolean needVersion) {
if (needVersion) {
baseOrder.setVersion(selectById(baseOrder.getId()).getVersion());
}
if (updateSelectiveByIdRe(baseOrder) > 0) {
return selectById(baseOrder.getId());
} else {
log.error(StrUtil.format("数据更新失败:baseOrder: {}", JSONUtil.toJsonStr(baseOrder)));
throw new BaseException(ResultCode.DB_OPERATION_FAIL_CODE);
}
}
sendQueue(orderMQDTO, sign);
}
@Override
public void updateSelectiveById(BaseOrder entity) {
super.updateSelectiveById(entity);
}
/**
* 更新(不成功抛异常)
*
* @param baseOrder
* @return
*/
public BaseOrder updateSelectiveByIdReT(BaseOrder baseOrder) {
return updateSelectiveByIdReT(baseOrder, false);
}
/**
* 更新(不成功抛异常)
*
* @param baseOrder
* @return
*/
public BaseOrder updateSelectiveByIdReT(BaseOrder baseOrder, boolean needVersion) {
if (needVersion) {
baseOrder.setVersion(selectById(baseOrder.getId()).getVersion());
}
if (updateSelectiveByIdRe(baseOrder) > 0) {
return selectById(baseOrder.getId());
} else {
log.error(StrUtil.format("数据更新失败:baseOrder: {}", JSONUtil.toJsonStr(baseOrder)));
throw new BaseException(ResultCode.DB_OPERATION_FAIL_CODE);
}
}
// /** // /**
...@@ -827,85 +830,86 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -827,85 +830,86 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
// } // }
// } // }
public boolean getTodayTime(Long time) { public boolean getTodayTime(Long time) {
Long startTime = getDayStart(); Long startTime = getDayStart();
if (time >= startTime && time <= startTime + 24 * 60 * 60 * 1000 - 1) { if (time >= startTime && time <= startTime + 24 * 60 * 60 * 1000 - 1) {
return true; return true;
} }
return false; return false;
} }
public static Long getDayStart() { public static Long getDayStart() {
long current = System.currentTimeMillis(); long current = System.currentTimeMillis();
long zero = current / (1000 * 3600 * 24) * (1000 * 3600 * 24) - TimeZone.getDefault().getRawOffset(); long zero = current / (1000 * 3600 * 24) * (1000 * 3600 * 24) - TimeZone.getDefault().getRawOffset();
return zero; return zero;
} }
private void sendQueue(OrderMQDTO orderMQDTO, Integer sign) { private void sendQueue(OrderMQDTO orderMQDTO, Integer sign) {
try { try {
orderMQDTO.setSign(sign); orderMQDTO.setSign(sign);
SendMsgDTO sendMsgDTO = new SendMsgDTO(){{ SendMsgDTO sendMsgDTO = new SendMsgDTO() {{
setExchange(ORDER_TOPIC); setExchange(ORDER_TOPIC);
}}; }};
sendMsgDTO.setJson(JSONUtil.toJsonStr(orderMQDTO)); sendMsgDTO.setJson(JSONUtil.toJsonStr(orderMQDTO));
switch (sign) { switch (sign) {
case 2: case 2:
sendMsgDTO.setRoutKey(KEY_ORDER_CANCEL); sendMsgDTO.setRoutKey(KEY_ORDER_CANCEL);
break; break;
case 4: case 4:
sendMsgDTO.setRoutKey(KEY_ORDER_PAY); sendMsgDTO.setRoutKey(KEY_ORDER_PAY);
break; break;
case 6: case 6:
sendMsgDTO.setRoutKey(KEY_ORDER_FINLISH); sendMsgDTO.setRoutKey(KEY_ORDER_FINLISH);
break; break;
case 101: case 101:
sendMsgDTO.setRoutKey(KEY_ORDER_PART_DEPOSIT); sendMsgDTO.setRoutKey(KEY_ORDER_PART_DEPOSIT);
break; break;
default: default:
break; break;
} }
mqSenderFeign.postSendMessage(sendMsgDTO); mqSenderFeign.postSendMessage(sendMsgDTO);
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
} }
} }
public Query initQuery(String no) { public Query initQuery(String no) {
QueryOrderDetailDTO qodd = new QueryOrderDetailDTO(); QueryOrderDetailDTO qodd = new QueryOrderDetailDTO();
//qodd.setCrtUser(Integer.valueOf(BaseContextHandler.getUserID())); //qodd.setCrtUser(Integer.valueOf(BaseContextHandler.getUserID()));
qodd.setUserId(Integer.valueOf(BaseContextHandler.getUserID())); qodd.setUserId(Integer.valueOf(BaseContextHandler.getUserID()));
qodd.setNo(no); qodd.setNo(no);
qodd.setLimit(1); qodd.setLimit(1);
qodd.setPage(1); qodd.setPage(1);
Query query = new Query(qodd); Query query = new Query(qodd);
return query; return query;
} }
@Override @Override
public UserFeign getUserFeign() { public UserFeign getUserFeign() {
return userFeign; return userFeign;
} }
/** /**
* 订单查询类 * 订单查询类
*/ */
@Data @Data
public static class QueryOrderDetailDTO extends QueryOrderDTO { public static class QueryOrderDetailDTO extends QueryOrderDTO {
private String no; private String no;
} }
/** /**
* 获取退还优惠卷 * 获取退还优惠卷
* @param orderId *
*/ * @param orderId
public List<Coupon> getReturnCouponByOrderId(Integer orderId) { */
BaseOrder baseOrder = mapper.selectByPrimaryKey(orderId); public List<Coupon> getReturnCouponByOrderId(Integer orderId) {
String backCoupon = baseOrder.getBackCoupon(); BaseOrder baseOrder = mapper.selectByPrimaryKey(orderId);
if (StringUtils.isNotBlank(backCoupon)) { String backCoupon = baseOrder.getBackCoupon();
String[] couponArray = backCoupon.split(","); if (StringUtils.isNotBlank(backCoupon)) {
return activityFeign.couponsByTickerNoList(Lists.newArrayList(couponArray)); String[] couponArray = backCoupon.split(",");
} return activityFeign.couponsByTickerNoList(Lists.newArrayList(couponArray));
return Lists.newArrayList(); }
} return Lists.newArrayList();
}
} }
\ No newline at end of file
...@@ -348,6 +348,18 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp ...@@ -348,6 +348,18 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
} }
} }
} }
//延期扣除费用
if (StringUtils.isNotBlank(orderVehicleCrosstownDto.getDelayVehicleDetail())) {
JSONArray jsonArray = JSONArray.parseArray(orderVehicleCrosstownDto.getDelayVehicleDetail());
if (jsonArray != null && jsonArray.size() > 0) {
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = JSONObject.parseObject(jsonArray.get(i).toString());
if (jsonObject.getString("cost") != null) {
cost += Double.parseDouble(jsonObject.getString("cost"));
}
}
}
}
orderVehicleCrosstownDto.setUserLicenseImg(orderVehicleCrosstownDto.getLicenseImg()); 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);
......
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