From c4664502dfdaffff555b532e65b51a57ac8b29c2 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期三, 16 十月 2024 17:51:32 +0800 Subject: [PATCH] 合并代码 --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java | 151 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 138 insertions(+), 13 deletions(-) diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java index ac22a39..38cd013 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java @@ -4,23 +4,25 @@ import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.model.TAppUser; +import com.ruoyi.account.api.model.TAppUserCar; import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; -import com.ruoyi.order.api.model.TChargingOrder; -import com.ruoyi.order.api.model.TOrderInvoice; -import com.ruoyi.order.api.model.TOrderInvoiceDetail; -import com.ruoyi.order.api.model.TShoppingOrder; +import com.ruoyi.order.api.model.*; +import com.ruoyi.order.api.query.TOrderInvoiceQuery; +import com.ruoyi.order.api.vo.TOrderEvaluateVO; +import com.ruoyi.order.api.vo.TOrderInvoiceVO; import com.ruoyi.order.dto.*; import com.ruoyi.order.mapper.TOrderInvoiceMapper; -import com.ruoyi.order.service.TChargingOrderService; -import com.ruoyi.order.service.TOrderInvoiceDetailService; -import com.ruoyi.order.service.TOrderInvoiceService; -import com.ruoyi.order.service.TShoppingOrderService; +import com.ruoyi.order.service.*; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TGoods; import com.ruoyi.other.api.domain.TInvoiceType; @@ -30,10 +32,12 @@ import io.seata.spring.annotation.GlobalTransactional; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; 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; @@ -75,7 +79,12 @@ @Resource private CouponClient couponClient; + @Resource + private AppUserClient appUserClient; + @Resource + private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService; + @@ -90,7 +99,7 @@ public AjaxResult addOrderInvoice(AddOrderInvoice addOrderInvoice) { Long userId = tokenService.getLoginUserApplet().getUserId(); String orders = addOrderInvoice.getOrders(); - if(StringUtils.isNotEmpty(orders)){ + if(StringUtils.isEmpty(orders)){ return AjaxResult.error("请选择有效的订单"); } JSONArray parse = JSONArray.parse(orders); @@ -109,14 +118,24 @@ return AjaxResult.error("不能重复申请开票,请刷新数据后重试"); } SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); - String code = Math.random() * 1000 + sdf.format(new Date()); + 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)); + BigDecimal electrovalence = list.stream().map(TChargingOrderAccountingStrategy::getElectrovalence).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal serviceCharge = list.stream().map(TChargingOrderAccountingStrategy::getServiceCharge).reduce(BigDecimal.ZERO, BigDecimal::add); + TOrderInvoiceDetail orderInvoiceDetail = new TOrderInvoiceDetail(); orderInvoiceDetail.setOrderInvoiceId(addOrderInvoice.getId()); orderInvoiceDetail.setInvoiceAmount(map.get(orderId)); @@ -125,6 +144,9 @@ orderInvoiceDetail.setElectricityTariff(invoiceType.getElectricityTariff()); orderInvoiceDetail.setServiceTariff(invoiceType.getServiceTariff()); orderInvoiceDetail.setAddedServiceTariff(invoiceType.getAddedServiceTariff()); + orderInvoiceDetail.setElectrovalence(electrovalence); + orderInvoiceDetail.setServiceCharge(serviceCharge); + orderInvoiceDetail.setAddedService(serviceCharge.multiply(invoiceType.getAddedServiceTariff().divide(new BigDecimal(100)))); orderInvoiceDetailService.save(orderInvoiceDetail); } return AjaxResult.success(); @@ -139,9 +161,10 @@ @Override 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 " + query.getPageCurr() + ", " + query.getPageSize())); + .last(" limit " + pageCurr + ", " + query.getPageSize())); List<OrderInvoiceList> pageList = new ArrayList<>(); for (TOrderInvoice tOrderInvoice : list) { OrderInvoiceList orderInvoiceList = new OrderInvoiceList(); @@ -228,4 +251,106 @@ } return myOrderInvoiceInfo; } + + @Override + public PageInfo<TOrderInvoiceVO> pageList(TOrderInvoiceQuery query) { + List<TAppUser> tAppUsers = new ArrayList<>(); + // 查询申请用户 + if (org.springframework.util.StringUtils.hasLength(query.getUserPhone())){ + tAppUsers = appUserClient.selectByPhoneLike(query.getUserPhone()).getData(); + if(CollectionUtils.isEmpty(tAppUsers)){ + 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) { + 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())); + } + // 查询这个开票的订单ids + + 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<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.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(t->t.getId()!=null).filter(m->m.getId().equals(Long.parseLong(e.getBillingUserId().toString()))).findFirst().get().getPhone()); + } + }); + } + + + pageInfo.setRecords(list); + return pageInfo; + } + + @Override + public Map<String, Integer> statusCount(TOrderInvoiceQuery query) { + Map<String, Integer> map = new HashMap<>(); + 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(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<>(); + // 查询申请用户 + if (org.springframework.util.StringUtils.hasLength(query.getUserPhone())){ + tAppUsers = appUserClient.selectByPhoneLike(query.getUserPhone()).getData(); + if(CollectionUtils.isEmpty(tAppUsers)){ + return new ArrayList<TOrderInvoiceVO>(); + } + } + 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().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; + } } -- Gitblit v1.7.1