huliguo
2 天以前 8115295a64e0809246897fefb8c45de06dce0799
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java
@@ -37,6 +37,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@@ -118,12 +119,17 @@
      }
      SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
      String code = Double.valueOf(Math.random() * 1000).intValue() + sdf.format(new Date());
      //获取开票类型
      TInvoiceType invoiceType = invoiceTypeClient.getInvoiceType(addOrderInvoice.getInvoiceTypeId()).getData();
      addOrderInvoice.setInvoicingCompany(invoiceType.getInvoicingCompany());
      addOrderInvoice.setInvoiceType(invoiceType.getName());
      addOrderInvoice.setInvoiceMaterial(2);
      addOrderInvoice.setInvoicingMethod(invoiceType.getInvoicingMethod());
      addOrderInvoice.setAppUserId(userId);
      addOrderInvoice.setCode(code);
      addOrderInvoice.setStatus(1);
      addOrderInvoice.setCreateTime(LocalDateTime.now());
      this.save(addOrderInvoice);
      //获取开票类型
      TInvoiceType invoiceType = invoiceTypeClient.getInvoiceType(addOrderInvoice.getInvoiceTypeId()).getData();
      for (Long orderId : orderIds) {
         List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>()
               .eq(TChargingOrderAccountingStrategy::getChargingOrderId, orderId));
@@ -140,7 +146,8 @@
         orderInvoiceDetail.setAddedServiceTariff(invoiceType.getAddedServiceTariff());
         orderInvoiceDetail.setElectrovalence(electrovalence);
         orderInvoiceDetail.setServiceCharge(serviceCharge);
         orderInvoiceDetail.setAddedService(serviceCharge.multiply(invoiceType.getAddedServiceTariff().divide(new BigDecimal(100))));
         orderInvoiceDetail.setAddedService(serviceCharge.multiply(null == invoiceType.getAddedServiceTariff()
               ? new BigDecimal(1) : invoiceType.getAddedServiceTariff().divide(new BigDecimal(100))));
         orderInvoiceDetailService.save(orderInvoiceDetail);
      }
      return AjaxResult.success();
@@ -156,9 +163,11 @@
   public List<OrderInvoiceList> getMyOrderInvoiceList(GetOrderInvoiceList query) {
      Long userId = tokenService.getLoginUserApplet().getUserId();
      Integer pageCurr = (query.getPageCurr() - 1) * query.getPageSize();
      List<TOrderInvoice> list = this.list(new LambdaQueryWrapper<TOrderInvoice>().eq(TOrderInvoice::getAppUserId, userId)
            .eq(TOrderInvoice::getStatus, query.getStatus()).orderByDesc(TOrderInvoice::getCreateTime)
            .last(" limit " + pageCurr + ", " + query.getPageSize()));
      LambdaQueryWrapper<TOrderInvoice> wrapper = new LambdaQueryWrapper<TOrderInvoice>().eq(TOrderInvoice::getAppUserId, userId);
      if(query.getStatus() != 1){
         wrapper.eq(TOrderInvoice::getStatus, query.getStatus());
      }
      List<TOrderInvoice> list = this.list(wrapper.orderByDesc(TOrderInvoice::getCreateTime).last(" limit " + pageCurr + ", " + query.getPageSize()));
      List<OrderInvoiceList> pageList = new ArrayList<>();
      for (TOrderInvoice tOrderInvoice : list) {
         OrderInvoiceList orderInvoiceList = new OrderInvoiceList();
@@ -209,7 +218,9 @@
            myChargingOrderList.setEndMode(tChargingOrder.getEndMode());
            BigDecimal payMoney = tChargingOrder.getStatus() < 4 ? tChargingOrder.getRechargeAmount() : tChargingOrder.getPaymentAmount();
            myChargingOrderList.setPayMoney(payMoney);
            myChargingOrderList.setCreateTime(tChargingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            myChargingOrderList.setCreateTime(tChargingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss")));
            myChargingOrderList.setElectricCharge(tChargingOrder.getElectrovalence());
            myChargingOrderList.setServiceCharge(tChargingOrder.getServiceCharge());
            chargingOrder.add(myChargingOrderList);
         }
         myOrderInvoiceInfo.setChargingOrder(chargingOrder);
@@ -239,6 +250,7 @@
            myShoppingOrderList.setUnitPrice(unitPrice);
            myShoppingOrderList.setNumber(tShoppingOrder.getPurchaseQuantity());
            myShoppingOrderList.setPaymentAmount(tShoppingOrder.getPaymentAmount());
            myShoppingOrderList.setCreateTime(tShoppingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss")));
            shoppingOrder.add(myShoppingOrderList);
         }
         myOrderInvoiceInfo.setShoppingOrder(shoppingOrder);
@@ -256,34 +268,43 @@
            return new PageInfo<>();
         }
      }
      query.setUserIds(tAppUsers.stream().map(TAppUser::getId).collect(Collectors.toList()));
      PageInfo<TOrderInvoiceVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
      List<TOrderInvoiceVO> list = this.baseMapper.pageList(query,pageInfo);
      for (TOrderInvoiceVO tOrderInvoiceVO : list) {
         List<Long> collect = orderInvoiceDetailService.lambdaQuery().eq(TOrderInvoiceDetail::getOrderInvoiceId, tOrderInvoiceVO.getId())
               .eq(TOrderInvoiceDetail::getOrderType, 1).list().stream()
         tOrderInvoiceVO.setUid(tOrderInvoiceVO.getId().toString());
         List<Long> collect = orderInvoiceDetailService.lambdaQuery().eq(TOrderInvoiceDetail::getOrderInvoiceId, tOrderInvoiceVO.getId()).list().stream()
               .map(TOrderInvoiceDetail::getOrderId).collect(Collectors.toList());
         // 将其全部转化为String
         tOrderInvoiceVO.setIds(collect.stream().map(String::valueOf).collect(Collectors.toList()));
         TAppUser appUser = appUserClient.getUserById(tOrderInvoiceVO.getAppUserId()).getData();
         if (appUser!=null){
            tOrderInvoiceVO.setUserPhone(appUser.getPhone());
         }
      }
      // 查询这个开票的订单ids
      List<Long> ids = list.stream().map(TOrderInvoiceVO::getId).collect(Collectors.toList());
      if (!list.isEmpty()){
         List<Long> ids = list.stream().map(TOrderInvoiceVO::getId).collect(Collectors.toList());
      List<TOrderInvoiceDetail> orderInvoiceDetailList = orderInvoiceDetailService.list(new LambdaQueryWrapper<TOrderInvoiceDetail>()
            .in(TOrderInvoiceDetail::getOrderInvoiceId, ids));
         List<TOrderInvoiceDetail> orderInvoiceDetailList = orderInvoiceDetailService.list(new LambdaQueryWrapper<TOrderInvoiceDetail>()
               .in(TOrderInvoiceDetail::getOrderInvoiceId, ids));
      List<TAppUser> finalTAppUsers = tAppUsers;
      list.forEach(e->{
         e.setServiceTariff(orderInvoiceDetailList.get(0).getServiceTariff());
         e.setElectricityTariff(orderInvoiceDetailList.get(0).getElectricityTariff());
         e.setAddedServiceTariff(orderInvoiceDetailList.get(0).getAddedServiceTariff());
         e.setAddedService(orderInvoiceDetailList.stream().map(TOrderInvoiceDetail::getAddedService).reduce(BigDecimal::add).get());
         e.setElectrovalence(orderInvoiceDetailList.stream().map(TOrderInvoiceDetail::getElectrovalence).reduce(BigDecimal::add).get());
         e.setServiceCharge(orderInvoiceDetailList.stream().map(TOrderInvoiceDetail::getServiceCharge).reduce(BigDecimal::add).get());
         e.setUserPhone(finalTAppUsers.stream().filter(m->m.getId().equals(Long.parseLong(e.getBillingUserId().toString()))).findFirst().get().getPhone());
      });
         List<TAppUser> finalTAppUsers = tAppUsers;
         list.forEach(e->{
            if (e.getOrderType()!=null&&e.getOrderType()==1){
               e.setServiceTariff(orderInvoiceDetailList.get(0).getServiceTariff());
            }else{
               e.setServiceTariff(new BigDecimal("0"));
            }
            e.setElectricityTariff(orderInvoiceDetailList.get(0).getElectricityTariff());
            e.setAddedServiceTariff(orderInvoiceDetailList.get(0).getAddedServiceTariff());
            e.setAddedService(orderInvoiceDetailList.stream().filter(t->t.getOrderInvoiceId().equals(e.getId()) &&t.getAddedService()!=null).map(TOrderInvoiceDetail::getAddedService).reduce(BigDecimal::add).get());
            e.setElectrovalence(orderInvoiceDetailList.stream().filter(t->t.getOrderInvoiceId().equals(e.getId()) &&t.getElectrovalence()!=null).map(TOrderInvoiceDetail::getElectrovalence).reduce(BigDecimal::add).get());
            e.setServiceCharge(orderInvoiceDetailList.stream().filter(t->t.getOrderInvoiceId().equals(e.getId()) && t.getServiceCharge()!=null).map(TOrderInvoiceDetail::getServiceCharge).reduce(BigDecimal::add).get());
         });
      }
      pageInfo.setRecords(list);
      return pageInfo;
@@ -292,39 +313,50 @@
   @Override
   public Map<String, Integer> statusCount(TOrderInvoiceQuery query) {
      Map<String, Integer> map = new HashMap<>();
      List<TAppUser> userList = appUserClient.selectByPhoneLike(query.getUserPhone()).getData();
      if(CollectionUtils.isEmpty(userList)){
         map.put("notAccepted",0);
         map.put("processing",0);
         map.put("finished",0);
         return map;
      List<TAppUser> tAppUsers = new ArrayList<>();
      if (org.springframework.util.StringUtils.hasLength(query.getUserPhone())){
   tAppUsers = appUserClient.selectByPhoneLike(query.getUserPhone()).getData();
         if(CollectionUtils.isEmpty(tAppUsers)){
            map.put("notAccepted",0);
            map.put("processing",0);
            map.put("finished",0);
            return map;
         }
      }
      query.setUserIds(userList.stream().map(TAppUser::getId).collect(Collectors.toList()));
      query.setUserIds(tAppUsers.stream().map(TAppUser::getId).collect(Collectors.toList()));
      map = this.baseMapper.statusCount(query);
      return map;
   }
   @Override
   public List<TOrderInvoiceVO> export(TOrderInvoiceQuery query) {
      List<TAppUser> tAppUsers = new ArrayList<>();
      // 查询申请用户
      List<TAppUser> userList = appUserClient.selectByPhoneLike(query.getUserPhone()).getData();
      if(CollectionUtils.isEmpty(userList)){
         return new ArrayList<>();
      if (org.springframework.util.StringUtils.hasLength(query.getUserPhone())){
         tAppUsers = appUserClient.selectByPhoneLike(query.getUserPhone()).getData();
         if(CollectionUtils.isEmpty(tAppUsers)){
            return new ArrayList<TOrderInvoiceVO>();
         }
      }
      query.setUserIds(userList.stream().map(TAppUser::getId).collect(Collectors.toList()));
      query.setUserIds(tAppUsers.stream().map(TAppUser::getId).collect(Collectors.toList()));
      PageInfo<TOrderInvoiceVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
      List<TOrderInvoiceVO> list = this.baseMapper.export(query);
      List<Long> ids = list.stream().map(TOrderInvoiceVO::getId).collect(Collectors.toList());
      List<TOrderInvoiceDetail> orderInvoiceDetailList = orderInvoiceDetailService.list(new LambdaQueryWrapper<TOrderInvoiceDetail>()
            .in(TOrderInvoiceDetail::getOrderInvoiceId, ids));
      List<TAppUser> finalTAppUsers = tAppUsers;
      list.forEach(e->{
         e.setServiceTariff(orderInvoiceDetailList.get(0).getServiceTariff());
         e.setElectricityTariff(orderInvoiceDetailList.get(0).getElectricityTariff());
         e.setAddedServiceTariff(orderInvoiceDetailList.get(0).getAddedServiceTariff());
         e.setAddedService(orderInvoiceDetailList.stream().map(TOrderInvoiceDetail::getAddedService).reduce(BigDecimal::add).get());
         e.setElectrovalence(orderInvoiceDetailList.stream().map(TOrderInvoiceDetail::getElectrovalence).reduce(BigDecimal::add).get());
         e.setServiceCharge(orderInvoiceDetailList.stream().map(TOrderInvoiceDetail::getServiceCharge).reduce(BigDecimal::add).get());
         e.setUserPhone(userList.stream().filter(m->m.getId().equals(Long.parseLong(e.getBillingUserId().toString()))).findFirst().get().getPhone());
         e.setAddedService(orderInvoiceDetailList.stream().filter(t->t.getAddedService()!=null).map(TOrderInvoiceDetail::getAddedService).reduce(BigDecimal::add).get());
         e.setElectrovalence(orderInvoiceDetailList.stream().filter(t->t.getElectrovalence()!=null).map(TOrderInvoiceDetail::getElectrovalence).reduce(BigDecimal::add).get());
         e.setServiceCharge(orderInvoiceDetailList.stream().filter(t->t.getServiceCharge()!=null).map(TOrderInvoiceDetail::getServiceCharge).reduce(BigDecimal::add).get());
         if (e.getBillingUserId()!=null){
            e.setUserPhone(finalTAppUsers.stream().filter(m->m.getId().equals(Long.parseLong(e.getBillingUserId().toString()))).findFirst().get().getPhone());
         }
      });
      return list;
   }