From 7a4f9541331bef779a506b38a27ed5c3373c0bec Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 15 五月 2025 13:53:22 +0800
Subject: [PATCH] 开发二级等保功能及心跳消息队列修改

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java |  108 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 70 insertions(+), 38 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 82a63c0..16a0f3b 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
@@ -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;
 	}

--
Gitblit v1.7.1