diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/comprehensive/controller/ComprehensiveController.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/comprehensive/controller/ComprehensiveController.java index 4059af1..7a589ab 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/comprehensive/controller/ComprehensiveController.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/comprehensive/controller/ComprehensiveController.java @@ -6,6 +6,7 @@ import com.bonus.material.comprehensive.entity.RentDetailDto; import com.bonus.material.device.domain.DevInfo; import com.bonus.material.device.domain.vo.DevInfoVo; import com.bonus.material.device.service.DevInfoService; +import com.bonus.material.order.domain.OrderInfoDto; import com.bonus.material.order.service.OrderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -44,4 +45,11 @@ public class ComprehensiveController extends BaseController { List list = orderService.getRentDetails(devInfo); return AjaxResult.success(getDataTable(list)); } + @ApiOperation(value = "综合查询-订单信息查询") + @GetMapping("/orderDetails") + public AjaxResult getOrderDetails(OrderInfoDto orderInfoDto) { + startPage(); + List list = orderService.getOrderInfos(orderInfoDto); + return AjaxResult.success(getDataTable(list)); + } } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java index 353bd34..c58c9c4 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java @@ -26,4 +26,6 @@ public interface OrderService { OrderInfoDto getAgreementByOrderId(String orderId); List getRentDetails(DevInfoVo devInfo); + + List getOrderInfos(OrderInfoDto orderInfoDto); } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java index 68b7bcd..36ee2d0 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java @@ -234,4 +234,83 @@ public class OrderServiceImpl implements OrderService { public List getRentDetails(DevInfoVo devInfo) { return orderMapper.getRentDetails(devInfo); } + + @Override + public List getOrderInfos(OrderInfoDto devInfo) { + List orderInfoDtos = orderMapper.getOrderDetails(devInfo); + for (OrderInfoDto dto : orderInfoDtos) { + dto.setPhoneNumber(Sm4Utils.decrypt(dto.getPhoneNumber())); + List list = new ArrayList(); + String ids = dto.getIds(); + for (String id : ids.split(",")) { + OrderDetailDto orderDetailDto = orderMapper.selectOrderDetailsById(id); + list.add(orderDetailDto); + } + BigDecimal totalRentalPrice = BigDecimal.ZERO; + BigDecimal totalReliefPrice = BigDecimal.ZERO; + for (OrderDetailDto detailDto : list) { + if (Objects.nonNull(detailDto) && String.valueOf(OrderStatusEnum.ORDER_FINISHED.getStatus()).equals(detailDto.getOrderStatus())) { + detailDto.setDays(detailDto.getDateDays() == null ? detailDto.getDays() : String.valueOf(detailDto.getDateDays())); + if (detailDto.getChangeCost() != null) { + totalRentalPrice = totalRentalPrice.add(detailDto.getChangeCost()); + } else { + if (detailDto.getDateDays() != null && detailDto.getDateDays() > 0 + && detailDto.getDayLeasePrice() != null) { + BigDecimal newTotalPrice = detailDto.getDayLeasePrice().multiply(new BigDecimal(detailDto.getDateDays())) + .setScale(2, RoundingMode.HALF_UP); + totalRentalPrice = totalRentalPrice.add(newTotalPrice); + detailDto.setCosts(newTotalPrice); + } + } + if (detailDto.getReliefChangeCost() != null) { + totalReliefPrice.add(detailDto.getReliefChangeCost()); + } else if (detailDto.getReliefCost() != null) { + totalReliefPrice.add(detailDto.getReliefCost()); + } + } + } + dto.setTotalRentalPrice(totalRentalPrice); + dto.setDetailsList(list); + Optional minOrderStatus = list.stream() + .min((p1, p2) -> Integer.compare(Integer.parseInt(p1.getOrderStatus()), Integer.parseInt(p2.getOrderStatus()))); + if (minOrderStatus.isPresent()) { + dto.setOrderStatus(minOrderStatus.get().getOrderStatus()); + } + //根据订单id去lease_repair_record表中查询是否已填写退租检修信息 + int count = leaseRepairRecordMapper.selectLeaseContent(String.valueOf(dto.getOrderId())); + if (count > 0) { + dto.setIsLeaseContent(1); + } else { + dto.setIsLeaseContent(0); + } + dto.setPartBacked(list.stream().anyMatch(o -> OrderStatusEnum.ORDER_UNDER_LEASE.getStatus().toString().equals(o.getOrderStatus()))); + //TODO计算总费用 + LeaseRepair leaseRepair = new LeaseRepair(); + leaseRepair.setOrderId(String.valueOf(dto.getOrderId())); + List leaseRepairRecords = leaseRepairRecordMapper.getLeaseRepairRecordList(leaseRepair); + BigDecimal totalRepairScrapLossPrice = BigDecimal.ZERO; + if (!CollectionUtils.isEmpty(leaseRepairRecords)) { + for (LeaseRepairRecord leaseRepairRecord : leaseRepairRecords) { + if (leaseRepairRecord.getRepairChangePrice() != null) { + totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getRepairChangePrice()); + } else if (leaseRepairRecord.getRepairPrice() != null) { + totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getRepairPrice()); + } + if (leaseRepairRecord.getScrapChangePrice() != null) { + totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getScrapChangePrice()); + } else if (leaseRepairRecord.getScrapPrice() != null) { + totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getScrapPrice()); + } + if (leaseRepairRecord.getLossChangePrice() != null) { + totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getLossChangePrice()); + } else if (leaseRepairRecord.getLossPrice() != null) { + totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getLossPrice()); + } + } + dto.setTotalRepairScrapLossPrice(totalRepairScrapLossPrice); + } + dto.setTotalRealPrice(BigDecimal.ZERO.add(totalRentalPrice).add(totalRepairScrapLossPrice).subtract(totalReliefPrice)); + } + return orderInfoDtos; + } }