From 4b486f955cd3d36fa09e372c484b7a66711d7ec7 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 18 九月 2024 16:47:38 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |  211 +++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 165 insertions(+), 46 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index 4ca77f9..3d0b7e4 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -417,7 +417,7 @@
 		//构建新的待支付订单
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
 		TChargingOrder chargingOrder = new TChargingOrder();
-		String code = "CD" + Math.random() * 1000 + sdf.format(new Date());
+		String code = "CD" + Double.valueOf(Math.random() * 1000).intValue() + sdf.format(new Date());
 		chargingOrder.setCode(code);
 		chargingOrder.setOrderType(1);
 		chargingOrder.setOrderClassification(1);
@@ -450,8 +450,14 @@
 		this.save(chargingOrder);
 
 		//添加订单的计费策略
-		TAccountingStrategy accountingStrategy = accountingStrategyClient.getAccountingStrategyById(tChargingGun.getAccountingStrategyId()).getData();
-		List<TAccountingStrategyDetail> strategyDetailList = accountingStrategyDetailClient.getListByAccountingStrategyId(tChargingGun.getAccountingStrategyId()).getData();
+		Integer accountingStrategyId = tChargingGun.getAccountingStrategyId();
+		if(null == accountingStrategyId){
+			//查询站点上面的计费策略
+			Site site = siteClient.getSiteByIds(Arrays.asList(tChargingGun.getSiteId())).getData().get(0);
+			accountingStrategyId = site.getAccountingStrategyId();
+		}
+		TAccountingStrategy accountingStrategy = accountingStrategyClient.getAccountingStrategyById(accountingStrategyId).getData();
+		List<TAccountingStrategyDetail> strategyDetailList = accountingStrategyDetailClient.getListByAccountingStrategyId(accountingStrategyId).getData();
 		AccountingStrategyOrder accountingStrategyOrder = new AccountingStrategyOrder();
 		BeanUtils.copyProperties(accountingStrategy, accountingStrategyOrder);
 		accountingStrategyOrder.setChargingOrderId(chargingOrder.getId());
@@ -627,7 +633,7 @@
 			TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
 			chargingOrderRefund.setChargingOrderId(chargingOrder.getId());
 			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
-			chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + (Math.random() * 1000));
+			chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + Double.valueOf(Math.random() * 1000).intValue());
 			chargingOrderRefund.setRefundAmount(rechargeAmount);
 			chargingOrderRefund.setRefundStatus(1);
 			chargingOrderRefund.setPayType(rechargePaymentType);
@@ -838,7 +844,7 @@
 			}
 			TAppUser appUser1 = appUserClient.getUserById(appUser.getInviteUserId()).getData();
 			TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange();
-			String code = Math.random() * 1000 + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
+			String code = Double.valueOf(Math.random() * 1000).intValue() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
 			appUserIntegralChange.setCode(code);
 			appUserIntegralChange.setAppUserId(appUser.getInviteUserId());
 			appUserIntegralChange.setChangeType(5);
@@ -937,7 +943,7 @@
 			TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
 			chargingOrderRefund.setChargingOrderId(chargingOrder.getId());
 			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
-			chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + (Math.random() * 1000));
+			chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
 			chargingOrderRefund.setRefundAmount(refundAmount);
 			chargingOrderRefund.setRefundStatus(1);
 			chargingOrderRefund.setPayType(rechargePaymentType);
@@ -1384,6 +1390,22 @@
 		TChargingOrder chargingOrder= this.getById(uid);
 
 		ChargingOrderListInfoVO chargingOrderListInfoVO = new ChargingOrderListInfoVO();
+		chargingOrderListInfoVO.setElectrovalence(chargingOrder.getElectrovalence());
+		chargingOrderListInfoVO.setServiceCharge(chargingOrder.getServiceCharge());
+		if (chargingOrder.getElectrovalence()!=null && chargingOrder.getServiceCharge()!=null){
+			chargingOrderListInfoVO.setTotal(chargingOrder.getElectrovalence().add(chargingOrder.getServiceCharge()));
+		}else{
+			chargingOrderListInfoVO.setTotal(new BigDecimal("0"));
+		}
+		if (chargingOrderListInfoVO.getTotal().compareTo(new BigDecimal("0"))>0){
+			if (chargingOrder.getCouponDiscountAmount()!=null&& chargingOrder.getVipDiscountAmount()!=null&& chargingOrder.getSharingAmount()!=null&& chargingOrder.getCommissionAmount()!=null){
+				chargingOrderListInfoVO.setRealTotal(chargingOrderListInfoVO.getTotal().subtract(chargingOrder.getCouponDiscountAmount()).subtract(chargingOrder.getVipDiscountAmount()).subtract(chargingOrder.getSharingAmount()).subtract(chargingOrder.getCommissionAmount()));
+			}else{
+				chargingOrderListInfoVO.setRealTotal(chargingOrderListInfoVO.getTotal());
+			}
+		}else{
+			chargingOrderListInfoVO.setRealTotal(new BigDecimal("0"));
+		}
 		chargingOrderListInfoVO.setCode(chargingOrder.getCode());
 		List<Site> data = siteClient.getSiteByIds(Arrays.asList(chargingOrder.getSiteId())).getData();
 		if (!data.isEmpty()){
@@ -1589,7 +1611,7 @@
 			}
 			TAppUser appUser1 = appUserClient.getUserById(appUser.getInviteUserId()).getData();
 			TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange();
-			String code = Math.random() * 1000 + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
+			String code = Double.valueOf(Math.random() * 1000).intValue() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
 			appUserIntegralChange.setCode(code);
 			appUserIntegralChange.setAppUserId(appUser.getInviteUserId());
 			appUserIntegralChange.setChangeType(5);
@@ -1695,7 +1717,7 @@
 				chargingOrderRefund.setRefundTime(LocalDateTime.now());
 				chargingOrderRefund.setCode(tChargingOrder.getCode());
 				SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
-				chargingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Math.random() * 1000));
+				chargingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
 				chargingOrderRefund.setRefundTitle("后台退款");
 				chargingOrderRefund.setRefundContent("后台退款");
 				chargingOrderRefund.setRefundReason("后台退款");
@@ -1782,18 +1804,25 @@
 		String startTime = dto.getStartTime();
 		String endTime = dto.getEndTime();
 		// 将这两个时间转化为localDateTime
-		tSettlementConfirm.setStartTime(LocalDateTime.parse(startTime));
-		tSettlementConfirm.setEndTime(LocalDateTime.parse(endTime));
+		// 创建 DateTimeFormatter 对象,指定格式
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
+
+		// 将字符串解析为 LocalDateTime 对象
+		LocalDateTime localDateTime = LocalDateTime.parse(startTime, formatter);
+		LocalDateTime localDateTime1 = LocalDateTime.parse(endTime, formatter);
+		tSettlementConfirm.setEndTime(localDateTime1);
+		tSettlementConfirm.setStartTime(localDateTime);
+
 		// 根据站点id和开始时间和结束时间和归属日期 查询充电订单列表
 		QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
 				.eq("site_id", dto.getSiteId())
 				.eq("recharge_payment_status",2);
 		switch (dto.getType()){
 			case 1:
-				eq.between("start_time", startTime, endTime);
+				eq.between("start_time", localDateTime, localDateTime1);
 				break;
 			case 2:
-				eq.between("end_time", startTime, endTime);
+				eq.between("end_time", localDateTime, localDateTime1);
 				break;
 		}
 		List<TChargingOrder> tChargingOrders = this.baseMapper.selectList(eq);
@@ -1817,13 +1846,23 @@
 		BigDecimal paymentAmount = new BigDecimal("0");
 		for (TChargingOrder tChargingOrder : tChargingOrders) {
 			// 累加充电总度数
-			chargingElectronic = chargingElectronic.add(tChargingOrder.getChargingCapacity());
+			if (tChargingOrder.getChargingCapacity()!=null){
+				chargingElectronic = chargingElectronic.add(tChargingOrder.getChargingCapacity());
+
+			}
 			// 累加分佣
-			sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount());
+			if (tChargingOrder.getSharingAmount()!=null) {
+				sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount());
+			}
 			// 累加电费
+			if (tChargingOrder.getElectrovalence()!=null) {
 			electrovalence = electrovalence.add(tChargingOrder.getElectrovalence());
+			}
 			// 累加服务费
-			serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
+			if (tChargingOrder.getServiceCharge()!=null){
+				serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
+
+			}
 			// 累加会员折扣
 			if (tChargingOrder.getVipDiscountAmount()!=null){
 				vipDiscount = vipDiscount.add(tChargingOrder.getVipDiscountAmount());
@@ -1832,11 +1871,13 @@
 			if (tChargingOrder.getCouponDiscountAmount()!=null){
 				couponDiscount = couponDiscount.add(tChargingOrder.getCouponDiscountAmount());
 			}
-			if (tChargingOrder.getRefundStatus() == 2){
+			if (tChargingOrder.getRefundStatus()!=null &&tChargingOrder.getRefundStatus() == 2){
 				// 如果成功退款 那么减去退款金额
 				paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount().subtract(tChargingOrder.getRefundAmount()));
 			}else{
-				paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
+				if (tChargingOrder.getPaymentAmount()!=null){
+					paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
+				}
 			}
 		}
 		// 三方交易手续费 三方收费*0.6%
@@ -1852,34 +1893,36 @@
 		tSettlementConfirm.setVipDiscount(vipDiscount);
 		tSettlementConfirm.setCouponDiscount(couponDiscount);
 		tSettlementConfirm.setSiteId(dto.getSiteId());
-		tSettlementConfirm.setMeteringElectronic(dto.getData().getMeteringElectronic());
 		tSettlementConfirm.setChargingElectronic(chargingElectronic);
-		tSettlementConfirm.setLossElectronic(dto.getData().getLossElectronic());
 		tSettlementConfirm.setIncome(chargingElectronic.add(serviceCharge));
-		tSettlementConfirm.setVenue(dto.getData().getVenue());
-		tSettlementConfirm.setMetering(dto.getData().getMetering());
-		tSettlementConfirm.setClean(dto.getData().getClean());
-		tSettlementConfirm.setMaintain(dto.getData().getMaintain());
-		tSettlementConfirm.setCost(dto.getData().getVenue().add(dto.getData().getClean()).add(dto.getData().getMaintain()));
 		tSettlementConfirm.setProfitMoney(new BigDecimal("0"));
 		tSettlementConfirm.setNewMoney(new BigDecimal("0"));
 		tSettlementConfirm.setNewSettlement(new BigDecimal("0"));
 		tSettlementConfirm.setVipDiscount(vipDiscount);
 		tSettlementConfirm.setCouponDiscount(couponDiscount);
-		tSettlementConfirm.setSupplyElectronic(dto.getData().getSupplyElectronic());
 		tSettlementConfirm.setType(dto.getType());
-		tSettlementConfirm.setProportionPartner(dto.getData().getProportionPartner());
-		tSettlementConfirm.setProportionMoney(dto.getData().getProportionMoney());
-		tSettlementConfirm.setTotalElectronic(dto.getData().getTotalElectronic());
-		tSettlementConfirm.setTotalService(dto.getData().getTotalService());
-		tSettlementConfirm.setRemark(dto.getData().getRemark());
-		tSettlementConfirm.setServicePartner(dto.getData().getServicePartner());
-		tSettlementConfirm.setServiceMoney(dto.getData().getServiceMoney());
-		tSettlementConfirm.setTotalService(dto.getData().getTotalService());
-		tSettlementConfirm.setServiceRemark(dto.getData().getServiceRemark());
-		tSettlementConfirm.setDistribution(dto.getData().getDistribution());
-		tSettlementConfirm.setIncome(dto.getData().getElectrovalence().add(dto.getData().getServiceCharge()));
+
 		if (dto.getState() == 2){
+			tSettlementConfirm.setSupplyElectronic(dto.getSupplyElectronic());
+			tSettlementConfirm.setVenue(dto.getVenue());
+			tSettlementConfirm.setMetering(dto.getMetering());
+			tSettlementConfirm.setClean(dto.getClean());
+			tSettlementConfirm.setLossElectronic(dto.getMeteringElectronic().subtract(dto.getChargingElectronic()));
+			tSettlementConfirm.setMaintain(dto.getMaintain());
+
+			tSettlementConfirm.setMeteringElectronic(dto.getMeteringElectronic());
+			tSettlementConfirm.setProportionPartner(dto.getProportionPartner());
+			tSettlementConfirm.setProportionMoney(dto.getProportionMoney());
+			tSettlementConfirm.setTotalElectronic(dto.getTotalElectronic());
+			tSettlementConfirm.setTotalService(dto.getTotalService());
+			tSettlementConfirm.setRemark(dto.getRemark());
+			tSettlementConfirm.setServicePartner(dto.getServicePartner());
+			tSettlementConfirm.setServiceMoney(dto.getServiceMoney());
+			tSettlementConfirm.setTotalService(dto.getTotalService());
+			tSettlementConfirm.setServiceRemark(dto.getServiceRemark());
+			tSettlementConfirm.setDistribution(dto.getDistribution());
+			tSettlementConfirm.setIncome(dto.getElectrovalence().add(dto.getServiceCharge()));
+			tSettlementConfirm.setCost(dto.getVenue().add(dto.getClean()).add(dto.getMaintain()));
 			tSettlementConfirmMapper.insert(tSettlementConfirm);
 		}
 		return tSettlementConfirm;
@@ -1891,14 +1934,15 @@
 		List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo,dto);
 		for (TSettlementConfirm tSettlementConfirm : list) {
 			tSettlementConfirm.setUid(tSettlementConfirm.getId().toString());
-			Partner data = siteClient.getPartnerR(tSettlementConfirm.getPartnerId()).getData();
 			List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(tSettlementConfirm.getSiteId())).getData();
 			if (!data1.isEmpty()){
 				tSettlementConfirm.setSiteName(data1.get(0).getName());
+				Partner data = siteClient.getPartnerR(data1.get(0).getPartnerId()).getData();
+				if (data!=null){
+					tSettlementConfirm.setPartnerName(data.getName());
+				}
 			}
-			if (data!=null){
-				tSettlementConfirm.setPartnerName(data.getName());
-			}
+
 			String format = tSettlementConfirm.getStartTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
 			String format1 = tSettlementConfirm.getEndTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
 			tSettlementConfirm.setTime(format+"至"+format1);
@@ -1906,7 +1950,7 @@
 
 		}
 		pageInfo.setRecords(list);
-		return null;
+		return pageInfo;
 	}
 
 	@Override
@@ -2015,7 +2059,7 @@
 			for (TChargingPile datum : data) {
 				bigDecimal = bigDecimal.add(datum.getRatedPower());
 			}
-			BigDecimal bigDecimal1 = bigDecimal.divide(new BigDecimal(data.size())).setScale(2, RoundingMode.HALF_DOWN);
+
 
 			tSettlementConfirm.setIncome(tSettlementConfirm.getElectrovalence().add(tSettlementConfirm.getServiceCharge()));
 			// todo 计算利用率 该电站充电桩本月利用率:
@@ -2066,13 +2110,23 @@
 		tSettlementConfirm.setVipDiscount(vipDiscount);
 		tSettlementConfirm.setCouponDiscount(couponDiscount);
 		// 本月
-		BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
-		tSettlementConfirm.setIncomePercentage(subtract+"%");
+		if (beforeIncome.compareTo(new BigDecimal("0")) == 0){
+			tSettlementConfirm.setIncomePercentage(0+"%");
+			tSettlementConfirm.setIncomePercentage(0+"%");
+		}else{
+			BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
+			tSettlementConfirm.setIncomePercentage(subtract+"%");
+			tSettlementConfirm.setIncomePercentage(subtract+"%");
+
+		}
 		// 比较总利润 收入合计-成本合计
 		BigDecimal subtract1 = income.subtract(cost);
 		BigDecimal subtract2 = beforeIncome.subtract(beforeCost);
-		tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"))+"%");
-		tSettlementConfirm.setIncomePercentage(subtract+"%");
+		if (subtract2.compareTo(new BigDecimal("0")) == 0){
+			tSettlementConfirm.setTotalPercentage(0+"%");
+		}else{
+			tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"))+"%");
+		}
 		tSettlementConfirm.setElectronicRefund(0);
 		// 查询上次汇报数据 进行比对涨幅跌幅
 		total.add(tSettlementConfirm);
@@ -2081,6 +2135,71 @@
 		return res;
 	}
 
+	@Override
+	public List<Map<String, Object>> countBySource(List<Integer> siteIds) {
+		return this.baseMapper.countBySource(siteIds);
+	}
+
+	@Override
+	public List<Map<String, Object>> equipmentUserType1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
+		return this.baseMapper.equipmentUserType1(siteIds,statisticsQueryDto);
+	}
+
+	@Override
+	public List<Map<String, Object>> equipmentUserType2(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
+		return this.baseMapper.equipmentUserType2(siteIds,statisticsQueryDto);
+	}
+
+	@Override
+	public List<Map<String, Object>> equipmentMapbroke1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
+		return this.baseMapper.equipmentMapbroke1(siteIds,statisticsQueryDto);
+	}
+
+	@Override
+	public List<Map<String, Object>> equipmentMapbroke2(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
+		return this.baseMapper.equipmentMapbroke2(siteIds,statisticsQueryDto);
+	}
+
+	@Override
+	public List<Map<String, Object>> equipmentMapOut1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
+		return this.baseMapper.equipmentMapOut1(siteIds,statisticsQueryDto);
+	}
+
+	@Override
+	public List<Map<String, Object>> equipmentMapOut2(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
+		return this.baseMapper.equipmentMapOut2(siteIds,statisticsQueryDto);
+	}
+
+	@Override
+	public List<Map<String, Object>> needElec(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
+		return this.baseMapper.needElec(siteIds,statisticsQueryDto);
+	}
+
+	@Override
+	public List<Map<String, Object>> getHourType(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto) {
+		return this.baseMapper.getHourType(siteIds,statisticsQueryDto);
+	}
+
+	@Override
+	public List<Map<String, Object>> getDateType(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto) {
+		return this.baseMapper.getDateType(siteIds,statisticsQueryDto);
+	}
+
+	@Override
+	public List<Map<String, Object>> getMonthType(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto) {
+		return this.baseMapper.getMonthType(siteIds,statisticsQueryDto);
+	}
+
+	@Override
+	public List<Map<String, Object>> getchargingCapacity(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto) {
+		return this.baseMapper.getchargingCapacity(siteIds,statisticsQueryDto);
+	}
+
+	@Override
+	public List<Map<String, Object>> countAllUserData() {
+		return this.baseMapper.countAllUserData();
+	}
+
 	public static void main(String[] args) {
 //		String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
 //		String format1 = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));

--
Gitblit v1.7.1